#!/bin/sh

test "$1" = force || exit 1

 public="  root root   666"
 system="  root root   600"
   kmem="  root kmem   640"
    tty="  root tty    660"
   cons="  root tty    620"
    vcs="  root root   600"
dialout="  root uucp   660"
  mouse="  root root   600"
printer="  root lp     660"
 floppy="  root root   666"
   disk="  root disk   660"
   scsi="  root disk   660"
  cdrom="  root disk   660"
   tape="  root disk   660"
  audio="  root root   666"
  ibcs2="  root root   666"
scanner="  root root   666"

# usage: makedev name [bcu] minor owner group mode
makedev () {
	mknod -m $6 $1 $2 $major $3
	chown $4:$5 $1
}

major=1
makedev mem  c 1 $kmem
makedev kmem c 2 $kmem
makedev null c 3 $public
makedev port c 4 $kmem
makedev zero c 5 $public
ln -sf /proc/kcore core
makedev full c 7 $public
makedev random c 8 $public
makedev urandom c 9 $public
makedev ramdisk b 1 $disk	# was also ram
for i in 0 1 2 3; do # 4 5 6 7
	makedev ram$i b $i $disk
done
makedev initrd b 250 $disk

major=2
minor=0
for i in p q r s t u v w x y z a b c d e ; do
	for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f ; do
		makedev pty$i$j c $minor $public
		minor=`expr $minor + 1`
	done
done
for i in 0 1; do	# 2 3
	makedev fd$i        b $i              $floppy
	makedev fd${i}d360  b `expr $i +   4` $floppy
	makedev fd${i}h360  b `expr $i +  20` $floppy
#	makedev fd${i}h410  b `expr $i +  48` $floppy
#	makedev fd${i}h420  b `expr $i +  64` $floppy
	makedev fd${i}h720  b `expr $i +  24` $floppy
#	makedev fd${i}h880  b `expr $i +  80` $floppy
	makedev fd${i}h1200 b `expr $i +   8` $floppy
#	makedev fd${i}h1440 b `expr $i +  40` $floppy
#	makedev fd${i}h1476 b `expr $i +  56` $floppy
#	makedev fd${i}h1494 b `expr $i +  72` $floppy
#	makedev fd${i}h1600 b `expr $i +  92` $floppy
	makedev fd${i}u360  b `expr $i +  12` $floppy
	makedev fd${i}u720  b `expr $i +  16` $floppy
#	makedev fd${i}u800  b `expr $i + 120` $floppy
#	makedev fd${i}u820  b `expr $i +  52` $floppy
#	makedev fd${i}u830  b `expr $i +  68` $floppy
#	makedev fd${i}u1040 b `expr $i +  84` $floppy
#	makedev fd${i}u1120 b `expr $i +  88` $floppy
	makedev fd${i}u1440 b `expr $i +  28` $floppy
#	makedev fd${i}u1600 b `expr $i + 124` $floppy
#	makedev fd${i}u1680 b `expr $i +  44` $floppy
#	makedev fd${i}u1722 b `expr $i +  60` $floppy
#	makedev fd${i}u1743 b `expr $i +  76` $floppy
#	makedev fd${i}u1760 b `expr $i +  96` $floppy
#	makedev fd${i}u1840 b `expr $i + 116` $floppy
#	makedev fd${i}u1920 b `expr $i + 100` $floppy
	makedev fd${i}u2880 b `expr $i +  32` $floppy
#	makedev fd${i}u3200 b `expr $i + 104` $floppy
#	makedev fd${i}u3520 b `expr $i + 108` $floppy
#	makedev fd${i}u3840 b `expr $i + 112` $floppy
	makedev fd${i}CompaQ b `expr $i + 36` $floppy
done

major=3
minor=0
for i in p q r s t u v w x y z a b c d e ; do
	for j in 0 1 2 3 4 5 6 7 8 9 a b c d e f ; do
		makedev tty$i$j c $minor $tty
		minor=`expr $minor + 1`
	done
done
makedev hda b 0  $disk
makedev hdb b 64 $disk
minor=1
while test $minor -le 32 ; do	# -le 63
	makedev hda$minor b $minor $disk
	makedev hdb$minor b `expr $minor + 64` $disk
	minor=`expr $minor + 1`
done

major=4
makedev console c 0 $cons # XXX only up to linux 2.0
makedev tty0 c 0 $cons
ln -sf console systty # XXX
minor=1
while test $minor -le 24 ; do	# -le 63
	makedev tty$minor c $minor $tty
	minor=`expr $minor + 1`
done
minor=0
while test $minor -le 31 ; do	# -le 63
	makedev ttyS$minor c `expr $minor + 64` $dialout
	minor=`expr $minor + 1`
done

major=5
makedev tty c 0 $public
#makedev console c 1 $cons # XXX not for linux 2.0
makedev ptmx c 2 $public
minor=0
while test $minor -le 15 ; do	# -le 63
	makedev cua$minor c `expr $minor + 64` $dialout
	minor=`expr $minor + 1`
done

major=6
makedev lp0 c 0 $printer
makedev lp1 c 1 $printer
makedev lp2 c 2 $printer

major=7
makedev vcs  c 0   $vcs
makedev vcsa c 128 $vcs
minor=1
while test $minor -le 24 ; do	# -le 63
	makedev vcs$minor c $minor $vcs
	makedev vcsa$minor c `expr $minor + 128` $vcs
	minor=`expr $minor + 1`
done
minor=0
while test $minor -le 7 ; do
	makedev loop$minor b $minor $disk
	minor=`expr $minor + 1`
done

major=8
minor=0
for i in a b c d e f g h i j ; do	# k l m n o p
	makedev sd$i b $minor $disk
	minor=`expr $minor + 1`
	for j in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
		makedev sd${i}${j} b $minor $disk
		minor=`expr $minor + 1`
	done
done

major=9
for i in 0 1 2 3; do # 4 .. 31
	makedev st$i c $i $disk
	makedev st${i}l  c `expr $i +  32` $disk
	makedev st${i}m  c `expr $i +  64` $disk
	makedev st${i}a  c `expr $i +  96` $disk
	makedev nst${i}  c `expr $i + 128` $disk
	makedev nst${i}l c `expr $i + 160` $disk
	makedev nst${i}m c `expr $i + 192` $disk
	makedev nst${i}a c `expr $i + 224` $disk
done
minor=0
while test $minor -le 7 ; do
	makedev md$minor b $minor $disk
	minor=`expr $minor + 1`
done

major=10
makedev logibm      c 0 $mouse	# was logimouse
makedev psaux       c 1 $mouse	# was psmouse
makedev inportbm    c 2 $mouse	# was msmouse
makedev atibm       c 3 $mouse
makedev jbm         c 4 $mouse	# was jmouse
# XXX some missing
makedev smouse      c 8 $mouse
makedev pc110pad    c 9 $mouse

makedev beep        c 128 $system
makedev modreq      c 129 $system
makedev watchdog    c 130 $system
makedev temperature c 131 $system
makedev hwtrap      c 132 $system
makedev exttrp      c 133 $system
makedev apm_bios    c 134 $system
makedev rtc         c 135 $system
makedev qcam0       c 136 $system	# XXX unofficial???
makedev qcam1       c 137 $system
makedev qcam2       c 138 $system
makedev msr         c 142 $system
makedev pciconf     c 143 $system
makedev nvram       c 144 $system
makedev led         c 151 $system
makedev mergemem    c 153 $system

major=11
for i in 0 1 2 3; do
	makedev sr$i  b $i $disk
	makedev scd$i b $i $disk
done

major=12
makedev ntpqic11  c 2 $disk
makedev tpqic11   c 3 $disk
makedev ntpqic24  c 4 $disk
makedev tpqic24   c 5 $disk
makedev ntpqic120 c 6 $disk
makedev tpqic120  c 7 $disk
makedev ntpqic150 c 8 $disk
makedev tpqic150  c 9 $disk
makedev dos_cd0 b 0 $disk
makedev dos_cd1 b 1 $disk
makedev dos_cd2 b 2 $disk
makedev dos_cd3 b 3 $disk

major=13
makedev pcmixer c 0 $audio
makedev pcsp    c 1 $audio
makedev pcaudio c 4 $audio
makedev pcsp16  c 5 $audio

major=14
makedev mixer      c 0  $audio
makedev sequencer  c 1  $audio
makedev midi00     c 2  $audio
makedev dsp        c 3  $audio
makedev audio      c 4  $audio
makedev sndstat    c 6  $audio
makedev sequencer2 c 8  $audio
makedev mixer1     c 16 $audio
makedev patmgr0    c 17 $audio
makedev midi01     c 18 $audio
makedev dsp1       c 19 $audio
makedev audio1     c 20 $audio
makedev patmgr1    c 33 $audio
makedev midi02     c 34 $audio
makedev midi03     c 50 $audio

major=15
makedev js0 c 0 $mouse
makedev js1 c 1 $mouse
makedev djs0 c 128 $mouse
makedev djs1 c 129 $mouse
makedev sonycd b 0 $disk

major=16
makedev gs4500 c 0 $scanner
makedev gscd   b 0 $disk

major=17
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
	makedev ttyH$i c $i $dialout
done
makedev optcd b 0 $disk

major=18
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
	makedev cuh$i c $i $dialout
done
makedev sjcd b 0 $disk

major=19
minor=0
while test $minor -le 31 ; do
	makedev ttyC$minor c $minor $dialout
	minor=`expr $minor + 1`
done

major=20
minor=0
while test $minor -le 31 ; do
	makedev cub$minor c $minor $dialout
	minor=`expr $minor + 1`
done
makedev hitcd b 0 $disk

major=21
minor=0
while test $minor -le 15 ; do
	makedev sg$minor c $minor $disk
	minor=`expr $minor + 1`
done

major=22
minor=0
while test $minor -le 31 ; do
	makedev ttyD$minor c $minor $dialout
	minor=`expr $minor + 1`
done
makedev hdc b 0  $disk
makedev hdd b 64 $disk
minor=1
while test $minor -le 16 ; do	# -le 63
	makedev hdc$minor b $minor $disk
	makedev hdd$minor b `expr $minor + 64` $disk
	minor=`expr $minor + 1`
done

major=23
minor=0
while test $minor -le 31 ; do
	makedev cud$minor c $minor $dialout
	minor=`expr $minor + 1`
done
makedev mcd b 0 $disk

major=24
minor=0
while test $minor -le 31 ; do		# 63
	makedev ttyE$minor c $minor $dialout
	minor=`expr $minor + 1`
done
minor=64
while test $minor -le 95 ; do		# 63
	makedev ttyE$minor c $minor $dialout
	minor=`expr $minor + 1`
done
makedev cdu535 b 0 $disk

major=25
minor=0
while test $minor -le 31 ; do		# 63
	makedev cue$minor c $minor $dialout
	minor=`expr $minor + 1`
done
minor=64
while test $minor -le 95 ; do		# 63
	makedev cue$minor c $minor $dialout
	minor=`expr $minor + 1`
done
makedev sbpcd0 b 0 $disk
makedev sbpcd1 b 1 $disk
makedev sbpcd2 b 2 $disk
makedev sbpcd3 b 3 $disk

major=26
makedev sbpcd4 b 0 $disk
makedev sbpcd5 b 1 $disk
makedev sbpcd6 b 2 $disk
makedev sbpcd7 b 3 $disk

major=27
makedev rft0 c 0 $disk
ln -sf rft0 ftape
makedev rft1 c 1 $disk
#makedev rft2 c 2 $disk
#makedev rft3 c 3 $disk
makedev nrft0 c 4 $disk
makedev nrft1 c 5 $disk
#makedev nrft2 c 6 $disk
#makedev nrft3 c 7 $disk

major=28
makedev staliomem0 c 0 $dialout
makedev staliomem1 c 1 $dialout
makedev staliomem2 c 2 $dialout
makedev staliomem3 c 3 $dialout

major=29
makedev aztcd b 0 $disk

major=30
makedev socksys c 0 $ibcs2
makedev spx c 1 $ibcs2
mkdir -p inet
makedev inet/arp c 2 $ibcs2
makedev inet/icmp c 2 $ibcs2
makedev inet/ip c 2 $ibcs2
makedev inet/udp c 2 $ibcs2
makedev inet/tcp c 2 $ibcs2
ln -sf socksys nfsd
ln -sf null X0R
makedev cm205cd b 0 $disk

major=32
makedev cm206cd b 0 $disk

major=36
makedev route c 0 $system
makedev skip  c 1 $system

major=41
makedev yamm c 0 $system

major=43
minor=0
while test $minor -le 31 ; do		# 63
	makedev ttyI$minor c $minor $dialout
	minor=`expr $minor + 1`
done

major=44
minor=0
while test $minor -le 31 ; do		# 63
	makedev cui$minor c $minor $dialout
	minor=`expr $minor + 1`
done

major=45
minor=0
while test $minor -le 31 ; do		# 63
	makedev isdn$minor c $minor $system
	minor=`expr $minor + 1`
done
makedev isdnctrl c 64 $system
minor=0
while test $minor -le 31 ; do		# 63
	makedev isdnctrl$minor c `expr $minor + 64` $system
	minor=`expr $minor + 1`
done
minor=0
while test $minor -le 31 ; do		# 63
	makedev ippp$minor c `expr $minor + 128` $system
	minor=`expr $minor + 1`
done
makedev isdninfo c 255 $system

major=45
makedev firewall c 0 $system

major=108
makedev ppp c 0 $system

ln -sf /proc/self/fd fd
ln -sf fd/0 stdin
ln -sf fd/1 stdout
ln -sf fd/2 stderr

mkdir pts

exit 0
