Synopsis: Problem with SVR4_MAKEDEV on i386 platforms.
NetBSD versions: 1.3 and 1.3.1, 1.3.2, 1.3.3, -current to 19990419
Thanks to: Klaus Klein
Reported in NetBSD Advisory: NetBSD-SA1999-009
Notes: cd to /usr/src and run `patch -p < thisfile' to apply.
Index: share/examples/emul/svr4/etc/SVR4_MAKEDEV
===================================================================
RCS file: /cvsroot/src/share/examples/emul/svr4/etc/SVR4_MAKEDEV,v
retrieving revision 1.1.2.1
diff -c -r1.1.2.1 SVR4_MAKEDEV
*** SVR4_MAKEDEV 1998/11/10 05:47:54 1.1.2.1
--- SVR4_MAKEDEV 1999/04/19 15:16:59
***************
*** 1,5 ****
#!/bin/sh -
! # $NetBSD: SVR4_MAKEDEV,v 1.1.2.1 1998/11/10 05:47:54 cgd Exp $
#
# Copyright (c) 1995 Christos Zoulas
# Copyright (c) 1997 Todd Vierling
--- 1,5 ----
#!/bin/sh -
! # $NetBSD: SVR4_MAKEDEV,v 1.5 1999/04/19 14:46:27 kleink Exp $
#
# Copyright (c) 1995 Christos Zoulas
# Copyright (c) 1997 Todd Vierling
***************
*** 43,50 ****
--- 43,60 ----
# wabi Windows emulation; /dev/null for now
#
PATH=/sbin:/bin/:/usr/bin:/usr/sbin:/usr/etc
+ MACHINE=${MACHINE:-`/usr/bin/uname -m`}
umask 77
+ case $MACHINE in
+ i386) major=43;;
+ sparc) major=43;;
+ *)
+ echo $MACHINE: unsupported machine >&2
+ exit 1
+ ;;
+ esac
+
for i
do
***************
*** 60,66 ****
ptmx)
rm -f $i
! mknod $i c 43 10
chown bin.bin $i
chmod 666 $i
;;
--- 70,76 ----
ptmx)
rm -f $i
! mknod $i c $major 10
chown bin.bin $i
chmod 666 $i
;;
***************
*** 89,95 ****
tcp)
rm -f $i
! mknod $i c 43 35
chown bin.bin $i
chmod 666 $i
;;
--- 99,105 ----
tcp)
rm -f $i
! mknod $i c $major 35
chown bin.bin $i
chmod 666 $i
;;
***************
*** 97,131 ****
udp)
rm -f $i
! mknod $i c 43 36
chown bin.bin $i
chmod 666 $i
;;
rawip)
rm -f $i
! mknod $i c 43 37
chown bin.bin $i
chmod 666 $i
;;
ticlts)
rm -f $i
! mknod $i c 43 38
chown bin.bin $i
chmod 666 $i
;;
ticotsord)
rm -f $i
! mknod $i c 43 39
chown bin.bin $i
chmod 666 $i
;;
ticots)
rm -f $i
! mknod $i c 43 40
chown bin.bin $i
chmod 666 $i
;;
--- 107,141 ----
udp)
rm -f $i
! mknod $i c $major 36
chown bin.bin $i
chmod 666 $i
;;
rawip)
rm -f $i
! mknod $i c $major 37
chown bin.bin $i
chmod 666 $i
;;
ticlts)
rm -f $i
! mknod $i c $major 38
chown bin.bin $i
chmod 666 $i
;;
ticotsord)
rm -f $i
! mknod $i c $major 39
chown bin.bin $i
chmod 666 $i
;;
ticots)
rm -f $i
! mknod $i c $major 40
chown bin.bin $i
chmod 666 $i
;;
***************
*** 133,145 ****
wabi)
rm -f $i
! mknod $i c 3 2 # /dev/null
chown bin.bin $i
chmod 666 $i
;;
*)
! echo $i: unknown device
;;
esac
done
--- 143,161 ----
wabi)
rm -f $i
! case $MACHINE in
! sparc)
! mknod $i c 3 2;; # /dev/null
! i386)
! mknod $i c 2 2;; # /dev/null
! esac
chown bin.bin $i
chmod 666 $i
;;
*)
! echo $i: unknown device 2>&1
! exit 1
;;
esac
done
Index: share/man/man8/compat_svr4.8
===================================================================
RCS file: /cvsroot/src/share/man/man8/compat_svr4.8,v
retrieving revision 1.6.2.2
diff -c -r1.6.2.2 compat_svr4.8
*** compat_svr4.8 1998/11/10 05:50:00 1.6.2.2
--- compat_svr4.8 1999/04/19 15:17:00
***************
*** 1,4 ****
! .\" $NetBSD: compat_svr4.8,v 1.6.2.2 1998/11/10 05:50:00 cgd Exp $
.\"
.\" Copyright (c) 1996 Christos Zoulas
.\" All rights reserved.
--- 1,4 ----
! .\" $NetBSD: compat_svr4.8,v 1.14 1999/04/19 14:46:27 kleink Exp $
.\"
.\" Copyright (c) 1996 Christos Zoulas
.\" All rights reserved.
***************
*** 31,37 ****
.\"
.\" Stolen from compat_linux.8,v 1.2 1995/10/16 20:17:59 fvdl
.\"
! .Dd July 6, 1996
.Dt COMPAT_SVR4 8
.Os NetBSD
.Sh NAME
--- 31,37 ----
.\"
.\" Stolen from compat_linux.8,v 1.2 1995/10/16 20:17:59 fvdl
.\"
! .Dd April 19, 1999
.Dt COMPAT_SVR4 8
.Os NetBSD
.Sh NAME
***************
*** 138,143 ****
--- 138,152 ----
.br
.It (me@netbsd) cd /emul/svr4/dev; sh SVR4_MAKEDEV all
.El
+ .Pp
+ As the major number allocated for emulation of SVR4 devices may vary between
+ .Nx
+ platforms, the SVR4_MAKEDEV script utilizes the
+ .Xr uname 1
+ command to determine the architecture the devices nodes are being created for;
+ this can be overridden by setting the
+ .Ev MACHINE
+ environment variable accordingly.
.El
.Pp
An alternative method is to mount a whole SVR4 partition in /emul/svr4