#! /bin/sh - # $Id: MAKEDEV 1577 2005-10-19 00:07:16Z vapier $ #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# # Customisation: # The devices fall into various classes. This section contains the mapping # from a class name into a group name and permission. # You will almost certainly need to edit the group name to match your # system, and you may change the permissions to suit your preference. These # lines _must_ be of the format "user group perm". public=" root root 0666" private=" root root 0600" system=" root root 0660" kmem=" root kmem 0640" tty=" root tty 0666" cons=" root tty 0600" dialout=" root dialout 0660" dip=" root dip 0660" mouse=" root root 0660" printer=" root lp 0660" floppy=" root floppy 0660" disk=" root disk 0660" scsi=" root root 0600" cdrom=" root cdrom 0660" tape=" root tape 0660" audio=" root audio 0660" video=" root video 0660" ibcs2=" root root 0666" scanner=" root root 0666" coda=" root root 0600" ipsec=" root root 0200" readable=" root root 0444" MAXVT=63 # defaults for $major_* major_ide0=3 major_ide1=22 major_sd=8 major_lp=6 # Remark: OSS/Linux becomes major_OSSLinux #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# # try to do the right things if udev is running if [ "$WRITE_ON_UDEV" ]; then : elif [ -d /dev/.static/dev/ ] && [ "`pwd`" = /dev ] && [ -e /proc/mounts ] \ && grep -qE '^[^ ]+ /dev/\.static/dev' /proc/mounts; then cd /dev/.static/dev/ elif [ -d /.dev/ ] && [ "`pwd`" = /dev ] && [ -e /proc/mounts ] \ && grep -qE '^[^ ]+ /\.dev' /proc/mounts; then cd /.dev/ elif [ -d .udevdb/ ] && [ "`pwd`" = /dev ]; then echo ".udevdb presence implies active udev. Aborting MAKEDEV invocation." # use exit 0, not 1, so postinst scripts don't fail on this exit 0 fi #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# # don't stomp on devfs users if [ -c .devfsd ] then echo ".devfsd presence implies active DevFS. Aborting MAKEDEV invocation." # use exit 0, not 1, so postinst scripts don't fail on this exit 0 fi #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# # don't stomp on non-Linux users if [ "$(uname -s)" != "Linux" ] then echo "Results undefined on non-Linux systems, aborting MAKEDEV invocation." # use exit 0, not 1, so postinst scripts don't fail on this exit 0 fi #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# procfs=/proc opt_v= opt_d= opt_n= while [ $# -ge 1 ] do case $1 in --) shift; break ;; -v) shift; opt_v=1 ;; -d) shift; opt_d=1 ;; -n) shift; opt_n=1; opt_v=1 ;; -V) shift; opt_V=1 ;; -*) echo "$0: unknown flag \"$1\"" >&2; exit 1 ;; *) break ;; esac done if [ "$opt_V" ] then echo "This is MAKEDEV based on Debian's makedev_2.3.1-78." echo "See the MAKEDEV(8) manpage for more information." exit 0 fi opts="${opt_n:+-n} ${opt_v:+-v} ${opt_d:+-d}" #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# devicename () { # translate device names to something safe echo "$*" | sed -e 's/[^A-Za-z0-9_]/_/g' } makedev () { # usage: makedev name [bcu] major minor owner group mode if [ "$opt_v" ] then if [ "$opt_d" ] then echo "delete $1" else echo "create $1 $2 $3 $4 $5:$6 $7" fi fi # missing parameters are a bug - bail - should we do an exit 1 here? case :$1:$2:$3:$4:$5:$6:$7: in *::*) echo "Warning: MAKEDEV $@ is missing parameter(s)." >&2;; esac if [ ! "$opt_n" ] then if [ "$opt_d" ] then rm -f $1 else rm -f $1- if mknod $1- $2 $3 $4 && chown $5:$6 $1- && chmod $7 $1- && mv $1- $1 then : # it worked else # Didn't work, clean up any mess... echo "makedev $@: failed" rm -f $1- fi fi fi } symlink () { # usage: symlink name target if [ "$opt_v" ] then if [ "$opt_d" ] then echo "delete $1" else echo "create $1 -> $2" fi fi [ ! "$opt_n" ] && rm -f $1 && [ ! "$opt_d" ] && ln -s $2 $1 } #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# # Debian allows us to assume /bin/sh is a POSIX compliant shell, so go for it! math () { eval echo "\$(($*))" } index () { # index string c eval "I=\${1%$2*}" eval echo "\${#I}" } suffix () { eval echo "\${1#$2}" } strip () { eval echo "\${1% $2 *} \${1#* $2 }" } first () { echo "${1%%?}" } second () { echo "${1##?}" } substr () { echo $1 | dd bs=1 count=1 skip=$(( $2 - 1 )) 2> /dev/null } #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---# devices= if [ ! -f $procfs/devices ] then echo "$0: warning: can't read $procfs/devices" >&2 else exec 3<$procfs/devices while read major device extra <&3 do device=`echo $device | sed 's#/.*##'` case "$major" in Character|Block|'') ;; *) safedevname=`devicename $device` eval "major_$safedevname=$major" devices="$devices $device" ;; esac done exec 3<&- fi Major () { device=$2 devname=`devicename $1` if [ "$opt_d" ] then echo -1 # don't care else eval echo \${major_$devname:-\${device:?\"unknown major number for $1\"}} fi } cvt () { while [ $# -ne 0 ] do case "$1" in mem|tty|ttyp|cua|cub|cui) ;; hd) (for d in a b c d e f g h ; do echo -n hd$d " " done) ; echo ;; ide0) echo hda hdb ;; ide1) echo hdc hdd ;; ide2) echo hde hdf ;; ide3) echo hdg hdh ;; ide4) echo hdi hdj ;; ide5) echo hdk hdl ;; ide6) echo hdm hdn ;; ide7) echo hdo hdp ;; ide8) echo hdq hdr ;; ide9) echo hds hdt ;; sd) echo sda sdb sdc sdd ;; dasd) (for d in a b c d e f g h i j k l m \ n o p q r s t u v w x y z ; do echo -n dasd$d " " done) ; echo ;; raw) echo raw ;; sg) echo sg ;; sr) echo scd ;; st) echo st0 ;; xd) echo xda xdb ;; ad) echo ada adb ;; fd) echo fd0 fd1 ;; lp) echo lp ;; mt) echo ftape ;; qft) echo ftape ;; loop) echo loop ;; md) echo md ;; ibcs2) echo ibcs2 ;; tpqic02) echo qic ;; sound) echo audio ;; logiscan) echo logiscan ;; ac4096) echo ac4096 ;; hw) echo helloworld ;; sbpcd | sbpcd[123]) echo $1 ;; joystick) echo js ;; input) echo input ;; apm_bios) echo apm ;; dcf) echo dcf ;; aztcd) echo aztcd ;; cm206cd) echo cm206cd ;; gscd) echo gscd ;; pcmcia) ;; # taken care of by its own driver ttyC) echo cyclades ;; isdn) echo isdnmodem isdnbri dcbri ;; vcs) ;; pty) echo pty ;; misc) echo misc ;; 3dfx) echo 3dfx ;; agpgart) echo agpgart ;; microcode) echo microcode ;; ipmi|ipmikcs) echo ipmi ;; fb) echo fb ;; nb|drbd) echo nb0 nb1 nb2 nb3 nb4 nb5 nb6 nb7;; netlink) echo netlink ;; tap) echo netlink ;; hamradio) echo hamradio ;; snd) ;; ptm) ;; pts) ;; ttyB) (for l in 0 1 2 3 4 5 6 7 ; do echo -n ttyB$l " " done) ; echo ;; ttyS) echo ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ;; ttyI) echo ttyI0 ttyI1 ttyI2 ttyI3 ;; ircomm|irlpt) irda ;; ppp) echo ppp ;; usb) echo usb ;; dpt_i2o) echo dpti ;; bluetooth) echo bluetooth ;; lvm) ;; # taken care of by LVM userspace tools ramdisk) echo ram ;; *) echo "$0: don't know what \"$1\" is" >&2 ;; esac shift done } get_arch() { case `uname -m` in arm*) echo arm;; i?86) echo i386;; ppc*) echo powerpc;; s390*) echo s390;; sh*) echo sh;; x86_64) echo i386;; # alpha|hppa|ia64|m68k|mips|sparc *) echo $a;; esac } for arg in $* do # case `cvt $arg` in case $arg in generic) $0 $opts generic-`get_arch` ;; generic-alpha) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb hdc hdd $0 $opts xda xdb $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts busmice $0 $opts lp $0 $opts par $0 $opts audio $0 $opts fb $0 $opts dac960 ;; generic-arm) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb hdc hdd $0 $opts xda xdb $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts busmice makedev sunmouse c 10 6 $mouse $0 $opts lp $0 $opts par $0 $opts audio $0 $opts fb ;; generic-hppa) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb hdc hdd $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts ttyB0 ttyB1 ttyB2 ttyB3 ttyB4 ttyB5 ttyB6 ttyB7 $0 $opts busmice $0 $opts lp $0 $opts par $0 $opts audio $0 $opts fb $0 $opts rtc ;; generic-i386) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb hdc hdd $0 $opts xda xdb $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts busmice $0 $opts input $0 $opts lp $0 $opts par $0 $opts audio $0 $opts fb $0 $opts isdn-io eda edb sonycd mcd mcdx cdu535 $0 $opts optcd sjcd cm206cd gscd $0 $opts lmscd sbpcd aztcd bpcd dac960 dpti ida ataraid cciss $0 $opts i2o.hda i2o.hdb i2o.hdc i2o.hdd ;; generic-ia64) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb hdc hdd $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ttyS5 $0 $opts busmice $0 $opts input $0 $opts lp $0 $opts par $0 $opts audio $0 $opts fb $0 $opts efirtc ;; generic-m68k) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb hdc hdd $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts sg $0 $opts ada adb adc add ade adf $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ttyS5 $0 $opts m68k-mice $0 $opts lp $0 $opts par $0 $opts nvram $0 $opts audio $0 $opts fb ;; generic-mips) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts lp $0 $opts par $0 $opts audio $0 $opts fb $0 $opts busmice ;; generic-mipsel) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts lp $0 $opts par $0 $opts audio $0 $opts fb $0 $opts rtc ;; generic-powerpc) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb hdc hdd $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts busmice $0 $opts m68k-mice $0 $opts input $0 $opts lp $0 $opts par $0 $opts nvram $0 $opts audio $0 $opts adb $0 $opts fb $0 $opts rtc $0 $opts isdn-io ;; generic-s390) $0 $opts std $0 $opts fd $0 $opts dasda dasdb dasdc dasdd dasde dasdf dasdg dasdh \ dasdi dasdj dasdk dasdl dasdm dasdn dasdo dasdp \ dasdq dasdr dasds dasdt dasdu dasdv dasdw dasdx \ dasdy dasdz $0 $opts pty $0 $opts consoleonly $0 $opts rtc ;; generic-sh) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts ttySC0 ttySC1 ttySC2 ttySC3 $0 $opts lp $0 $opts par $0 $opts audio $0 $opts fb $0 $opts rtc ;; generic-sparc) $0 $opts std $0 $opts fd $0 $opts fd0 fd1 $0 $opts hda hdb hdc hdd $0 $opts sda sdb sdc sdd $0 $opts scd0 scd1 $0 $opts st0 st1 $0 $opts sg $0 $opts pty $0 $opts console $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 $0 $opts busmice $0 $opts fb $0 $opts rtc makedev kbd c 11 0 $cons makedev sunmouse c 10 6 $mouse symlink mouse sunmouse makedev openprom c 10 139 root root 0664 ;; generic-*) echo "$0: no support for generic on this arch" >&2 exit 1 ;; local) $0.local $opts ;; std) makedev mem c 1 1 $kmem makedev kmem c 1 2 $kmem makedev null c 1 3 $public makedev port c 1 4 $kmem makedev zero c 1 5 $public symlink core $procfs/kcore makedev full c 1 7 $public makedev random c 1 8 $public makedev urandom c 1 9 $readable makedev tty c 5 0 $tty $0 $opts ram $0 $opts loop ;; hamradio) $0 $opts scc $0 $opts bc ;; scc) for unit in 0 1 2 3 4 5 6 7 do makedev scc$unit c 34 $unit $system done ;; bc) for unit in 0 1 2 3 do makedev bc$unit c 51 $unit $system done ;; random) makedev random c 1 8 $public ;; urandom) makedev urandom c 1 9 $readable ;; ram) for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do makedev ram$i b 1 $i $disk done symlink ram ram1 ;; ram[0-9]|ram1[0-6]) unit=`suffix $arg ram` makedev ram$unit b 1 $unit $disk ;; initrd) makedev initrd b 1 250 $disk ;; raw) makedev rawctl c 162 0 $disk mkdir -p raw for i in 1 2 3 4 5 6 7 8; do makedev raw/raw$i c 162 $i $disk done ;; consoleonly) makedev tty0 c 4 0 $cons # new kernels need a device, old ones a symlink... sigh kern_rev1=`uname -r | sed -e 's@^\([^.]*\)\..*@\1@'` kern_rev2=`uname -r | sed -e 's@^[^.]*\.\([^.]*\)\..*@\1@'` if [ $kern_rev1 -gt 2 ] then makedev console c 5 1 $cons else if [ $kern_rev1 -eq 2 ] && [ $kern_rev2 -ge 1 ] then makedev console c 5 1 $cons else symlink console tty0 fi fi ;; console) $0 $opts consoleonly major=`Major vcs 7` # not fatal [ "$major" ] && makedev vcs0 c $major 0 $cons symlink vcs vcs0 [ "$major" ] && makedev vcsa0 c $major 128 $cons symlink vcsa vcsa0 # individual vts line=1 while [ $line -le $MAXVT ] && [ $line -le 63 ] do makedev tty$line c 4 $line $cons [ "$major" ] && makedev vcs$line c $major $line $cons [ "$major" ] && makedev vcsa$line c $major `math $line + 128` $cons line=`math $line + 1` done ;; adb) case `get_arch` in powerpc) # ADB bus devices (char) makedev adb c 56 0 $mouse makedev adbmouse c 10 10 $mouse ;; m68k) # ACSI disk 2, whole device (block) makedev adb b 28 16 $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do minor=$(( 16 + $part )) makedev adb$part b 28 $minor $disk done ;; *) echo "no support for adb on this arch" >&2 exit 1 ;; esac ;; raw1394) makedev raw1394 c 171 0 $disk ;; video1394) rm -f video1394 mkdir -p video1394 for i in `seq 0 15` do makedev video1394/$i c 171 `math 16 + $i` $video done ;; nvram) makedev nvram c 10 144 $mouse ;; tty[1-9]|tty[1-5][0-9]|tty[6][0-3]) line=`suffix $arg tty` makedev tty$line c 4 $line $cons ;; ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3]) line=`suffix $arg ttyS` minor=`math 64 + $line` makedev ttyS$line c 4 $minor $dialout ;; ttySC[0-3]) line=`suffix $arg ttySC` minor=`math 8 + $line` makedev ttySC$line c 204 $minor $dialout ;; ttyB[0-7]) minor=`suffix $arg ttyB` makedev ttyB$minor c 11 $minor $dialout ;; pty[a-ep-z]) bank=`suffix $arg pty` base=`index pqrstuvwxyzabcde $bank` base=`math $base \* 16` for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f do j=`index 0123456789abcdef $i` makedev pty$bank$i c 2 `math $base + $j` $tty makedev tty$bank$i c 3 `math $base + $j` $tty done ;; pty) ptysufs="" for i in p q r s t u v w x y z a b c d e do ptysufs="$ptysufs pty$i" done $0 $opts $ptysufs ptmx ;; ptmx) # master pty multiplexer for 2.1 kernels makedev ptmx c 5 2 $tty ;; cyclades|ttyC) major1=`Major ttyC 19` || continue #major2=`Major cub 20` || continue for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 do makedev ttyC$i c $major1 $i $dialout #makedev cub$i c $major2 $i $dialout done ;; stallion|ttyE) major1=`Major ttyE 24` || continue #major2=`Major cue 25` || continue majorc=28 minor=0 until [ $minor -gt 256 ] do makedev ttyE$minor c $major1 $minor $dialout #makedev cue$minor c $major2 $minor $dialout minor=`math $minor + 1` done for i in 0 1 2 3 do makedev staliomem$i c $majorc $i $private done ;; chase|ttyH) major1=`Major ttyH 17` || continue #major2=`Major cuh 18` || continue minor=0 until [ $minor -gt 16 ] # tell me if 16 is wrong do makedev ttyH$minor c $major1 $minor $dialout #makedev cuh$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; rocketport|ttyR) major1=`Major ttyR 46` || continue #major2=`Major cur 47` || continue minor=0 until [ $minor -gt 64 ] # tell me if 64 is wrong do makedev ttyR$minor c $major1 $minor $dialout #makedev cur$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; ttyV) major1=`Major ttyV 105` || continue #major2=`Major cuv 106` || continue minor=0 until [ $minor -gt 16 ] # tell me if 16 is wrong do makedev ttyV$minor c $major1 $minor $dialout #makedev cuv$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; digi|ttyD) major1=`Major ttyD 22` || continue #major2=`Major cud 23` || continue minor=0 until [ $minor -gt 16 ] # tell me if 16 is wrong do makedev ttyD$minor c $major1 $minor $dialout #makedev cud$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; specialix|ttyX) major1=`Major ttyX 32` || continue #major2=`Major cux 33` || continue minor=0 until [ $minor -gt 16 ] # tell me if 16 is wrong do makedev ttyX$minor c $major1 $minor $dialout #makedev cux$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; specialixIO8|ttyW) major1=`Major ttyW 75` || continue #major2=`Major cuw 76` || continue minor=0 until [ $minor -gt 16 ] # tell me if 16 is wrong do makedev ttyW$minor c $major1 $minor $dialout #makedev cuw$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; PAM|ttyM) major1=`Major ttyM 79` || continue #major2=`Major cum 80` || continue minor=0 until [ $minor -gt 16 ] # tell me if 16 is wrong do makedev ttyM$minor c $major1 $minor $dialout #makedev cum$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; riscom|ttyL) major=`Major ttyL 48` || continue minor=0 until [ $minor -gt 16 ] # tell me if 16 is wrong do makedev ttyL$minor c $major $minor $dialout minor=`math $minor + 1` done ;; computone|ttyF) major=`Major ttyF 71` || continue #major2=`Major cuf 72` || continue minor=0 until [ $minor -gt 255 ] do makedev ttyF$minor c $major $minor $dialout #makedev cuf$minor c $major2 $minor $dialout minor=`math $minor + 1` done major=73 for i in 0 4 8 12 do makedev ip2ipl$i c $major $i $private makedev ip2stat$i c $major `math $i + 1` $private done ;; ESP|ttyP) major=`Major ttyP 57` || continue #major2=`Major cup 58` || continue minor=0 until [ $minor -gt 4 ] # tell me if 4 is wrong do makedev ttyP$minor c $major $minor $dialout #makedev cup$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; COMX|comx) major=`Major comx 88` || continue minor=0 until [ $minor -gt 4 ] # tell me if 4 is wrong do makedev comx$minor c $major $minor $private minor=`math $minor + 1` done ;; isdnmodem|ttyI) major1=`Major ttyI 43` || continue #major2=`Major cui 44` || continue minor=0 until [ $minor -gt 63 ] do makedev ttyI$minor c $major1 $minor $dialout #makedev cui$minor c $major2 $minor $dialout minor=`math $minor + 1` done ;; isdnbri) major=45 minor=0 until [ $minor -gt 63 ] do makedev isdn$minor c $major $minor $dialout makedev isdnctrl$minor c $major `math $minor + 64` $dialout makedev ippp$minor c $major `math $minor + 128` $dialout minor=`math $minor + 1` done makedev isdninfo c $major 255 $private ;; dcbri) major=52 for i in 0 1 2 3 do makedev dcbri$i c $major $i $dialout done ;; capi) major=68 makedev capi20 c $major 0 $dialout for i in 0 1 2 3 4 5 6 7 8 9 do makedev capi20.0$i c $major `math $i + 1` $dialout done for i in 10 11 12 13 14 15 16 17 18 19 do makedev capi20.$i c $major `math $i + 1` $dialout done ;; ubd) major=98 for devicenum in 0 1 2 3 4 5 6 7 do device=ubd`substr abcdefgh $(($devicenum + 1))` baseminor=`math $devicenum \* 16` makedev $device b $major $baseminor $disk for partition in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do minor=`math $baseminor + $partition` makedev $device$partition b $major $minor $disk done done ;; fb) for i in 0 1 2 3 4 5 6 7 do makedev fb$i c 29 $i $video done ;; fb[0-7]) dev=`suffix $arg fb` makedev fb$dev c 29 $dev $video ;; netlink|tap|tap[0-9]|tap1[0-5]) makedev route c 36 0 $coda makedev skip c 36 1 $coda makedev fwmonitor c 36 3 $coda for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev tap$i c 36 `math $i + 16` $coda done ;; tun) mkdir -p net makedev net/tun c 10 200 $system ;; lp) major=`Major lp 6` || continue makedev ${arg}0 c $major 0 $printer makedev ${arg}1 c $major 1 $printer makedev ${arg}2 c $major 2 $printer ;; par) major=`Major lp 6` || continue makedev ${arg}0 c $major 0 $printer makedev ${arg}1 c $major 1 $printer makedev ${arg}2 c $major 2 $printer ;; parport) major=`Major parport 99` || continue makedev ${arg}0 c $major 0 $printer makedev ${arg}1 c $major 1 $printer makedev ${arg}2 c $major 2 $printer ;; slm) major=`Major slm 28` || continue for i in 0 1 2 3 do makedev slm c $major $i $printer done ;; input) major=`Major pcsp 13` || continue mkdir -p input for i in 0 1 2 3 do makedev input/js$i c $major $i $mouse makedev input/mouse$i c $major `math $i + 32` $mouse makedev input/event$i c $major `math $i + 64` $mouse done makedev input/mice c $major 63 $mouse ;; busmice) major=`Major mouse 10` || continue makedev logibm c $major 0 $mouse makedev psaux c $major 1 $mouse makedev inportbm c $major 2 $mouse makedev atibm c $major 3 $mouse makedev jbm c $major 4 $mouse ;; m68k-mice) major=`Major mouse 10` || continue makedev amigamouse c $major 4 $mouse makedev atarimouse c $major 5 $mouse makedev amigamouse1 c $major 7 $mouse makedev adbmouse c $major 10 $mouse ;; 3dfx) major=`Major $arg 107` || continue makedev $arg c $major 0 $video ;; agpgart) major=`Major $arg 10` || continue makedev $arg c $major 175 $video ;; hwrng) major=`Major $arg 10` || continue makedev $arg c $major 183 $private ;; cpu|microcode) mkdir -p cpu makedev cpu/microcode c 10 184 $private for i in 0 1 2 3 do mkdir -p cpu/$i makedev cpu/$i/msr c 202 $i $private makedev cpu/$i/cpuid c 203 $i $private done ;; ipmi|ipmikcs) major=`Major ipmikcs 10` || continue makedev ipmikcs c $major 173 $private ;; irda) for i in 0 1 do makedev ircomm$i c 161 $i $dialout makedev irlpt$i c 161 `math $i + 16` $printer done ;; irnet) makedev irnet c 10 187 $system ;; misc) major=`Major mouse 10` || continue makedev logibm c $major 0 $mouse makedev psaux c $major 1 $mouse makedev inportbm c $major 2 $mouse makedev atibm c $major 3 $mouse makedev jbm c $major 4 $mouse makedev amigamouse c $major 4 $mouse makedev atarimouse c $major 5 $mouse makedev sunmouse c $major 6 $mouse makedev amigamouse1 c $major 7 $mouse makedev smouse c $major 8 $mouse makedev pc110pad c $major 9 $mouse makedev adbmouse c $major 10 $mouse makedev beep c $major 128 $mouse makedev modreq c $major 129 $mouse makedev watchdog c $major 130 $mouse makedev temperature c $major 131 $mouse makedev hwtrap c $major 132 $mouse makedev exttrp c $major 133 $mouse makedev apm_bios c $major 134 $mouse makedev rtc c $major 135 $mouse makedev openprom c $major 139 root root 0664 makedev relay8 c $major 140 $mouse makedev relay16 c $major 141 $mouse makedev msr c $major 142 $mouse makedev pciconf c $major 143 $mouse makedev nvram c $major 144 $mouse makedev hfmodem c $major 145 $mouse makedev led c $major 151 $mouse makedev mergemem c $major 153 $mouse makedev pmu c $major 154 $mouse ;; pmu) major=`Major mouse 10` || continue makedev pmu c $major 154 $mouse ;; thinkpad) major=`Major mouse 10` || continue mkdir -p thinkpad makedev thinkpad/thinkpad c $major 170 $mouse ;; rtc) major=`Major mouse 10` || continue makedev rtc c $major 135 $mouse ;; efirtc) major=`Major mouse 10` || continue makedev efirtc c $major 136 $mouse ;; mwave) makedev mwave c 10 219 $mouse ;; systrace) makedev systrace c 10 226 $private ;; uinput) makedev input/uinput c 10 223 $mouse ;; js) major=`Major Joystick 13` || continue for unit in 0 1 2 3 do makedev js$unit c $major $unit $readable makedev djs$unit c $major `math $unit + 128` $readable done ;; fd[0-7]) major=`Major fd 2` || continue base=`suffix $arg fd` if [ $base -ge 4 ] then base=`math $base + 124` fi makedev ${arg} b $major $base $floppy makedev ${arg}d360 b $major `math $base + 4` $floppy makedev ${arg}h1200 b $major `math $base + 8` $floppy makedev ${arg}u360 b $major `math $base + 12` $floppy makedev ${arg}u720 b $major `math $base + 16` $floppy makedev ${arg}h360 b $major `math $base + 20` $floppy makedev ${arg}h720 b $major `math $base + 24` $floppy makedev ${arg}u1440 b $major `math $base + 28` $floppy makedev ${arg}u2880 b $major `math $base + 32` $floppy makedev ${arg}CompaQ b $major `math $base + 36` $floppy makedev ${arg}h1440 b $major `math $base + 40` $floppy makedev ${arg}u1680 b $major `math $base + 44` $floppy makedev ${arg}h410 b $major `math $base + 48` $floppy makedev ${arg}u820 b $major `math $base + 52` $floppy makedev ${arg}h1476 b $major `math $base + 56` $floppy makedev ${arg}u1722 b $major `math $base + 60` $floppy makedev ${arg}h420 b $major `math $base + 64` $floppy makedev ${arg}u830 b $major `math $base + 68` $floppy makedev ${arg}h1494 b $major `math $base + 72` $floppy makedev ${arg}u1743 b $major `math $base + 76` $floppy makedev ${arg}h880 b $major `math $base + 80` $floppy makedev ${arg}u1040 b $major `math $base + 84` $floppy makedev ${arg}u1120 b $major `math $base + 88` $floppy makedev ${arg}h1600 b $major `math $base + 92` $floppy makedev ${arg}u1760 b $major `math $base + 96` $floppy makedev ${arg}u1920 b $major `math $base + 100` $floppy makedev ${arg}u3200 b $major `math $base + 104` $floppy makedev ${arg}u3520 b $major `math $base + 108` $floppy makedev ${arg}u3840 b $major `math $base + 112` $floppy makedev ${arg}u1840 b $major `math $base + 116` $floppy makedev ${arg}u800 b $major `math $base + 120` $floppy makedev ${arg}u1600 b $major `math $base + 124` $floppy ;; ed[a-b]) major=`Major ed 36` || continue unit=`suffix $arg ed` base=`index ab $unit` base=`math $base \* 64` makedev ed$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20 do makedev ed$unit$part b $major `math $base + $part` $disk done ;; hd[a-b]) major=`Major ide0` || major=`Major hd 3` || continue unit=`suffix $arg hd` base=`index ab $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major `math $base + $part` $disk done ;; hd[c-d]) major=`Major ide1 22` || continue unit=`suffix $arg hd` base=`index cd $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; hd[e-f]) major=`Major ide2 33` || continue unit=`suffix $arg hd` base=`index ef $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; hd[g-h]) major=`Major ide3 34` || continue unit=`suffix $arg hd` base=`index gh $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; hd[i-j]) major=`Major ide4 56` || continue unit=`suffix $arg hd` base=`index ij $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; hd[k-l]) major=`Major ide5 57` || continue unit=`suffix $arg hd` base=`index kl $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; hd[m-n]) major=`Major ide6 88` || continue unit=`suffix $arg hd` base=`index mn $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; hd[o-p]) major=`Major ide7 89` || continue unit=`suffix $arg hd` base=`index op $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; hd[q-r]) major=`Major ide8 90` || continue unit=`suffix $arg hd` base=`index qr $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; hd[s-t]) major=`Major ide9 91` || continue unit=`suffix $arg hd` base=`index st $unit` base=`math $base \* 64` makedev hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do makedev hd$unit$part b $major $(( $base + $part )) $disk done ;; ub|uba) major=180 makedev uba b $major 0 $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev uba$part b $major $part $disk done ;; ht0) major=`Major ht0 37` || continue # Only one IDE tape drive is currently supported; ht0. makedev ht0 c $major 0 $tape makedev nht0 c $major 128 $tape ;; pt) major=`Major pt 96` || continue for i in 0 1 2 3 do makedev pt$i c $major $i $tape makedev npt$i c $major `math $i + 128` $tape done ;; xd[a-d]) major=`Major xd 13` || continue unit=`suffix $arg xd` base=`index abcd $unit` base=`math $base \* 64` makedev xd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20 do makedev xd$unit$part b $major $(( $base + $part )) $disk done ;; sd[a-z]) major=`Major sd 8` || continue unit=`suffix $arg sd` base=`index abcdefghijklmnopqrstuvwxyz $unit` base=$(( $base * 16 )) if [ $base -lt 256 ]; then major=8 else major=65 base=$(( $base - 256 )) fi makedev sd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do minor=$(( $base + $part )) makedev sd$unit$part b $major $minor $disk done ;; sd[a-d][a-z]) unit=`suffix $arg sd` unitmaj=`first $unit` unitmin=`second $unit` basemaj=`index Xabcd $unitmaj` basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin` basemaj=`math $basemaj \* 416` basemin=`math $basemin \* 16` base=`math $basemaj + $basemin` basemaj=`math $base / 256` base=`math $base % 256` major=`math basemaj \+ 64` if [ $major -gt 71 ]; then echo "$0: don't know how to make device \"$arg\"" >&2 exit 0 fi makedev sd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do minor=$(( $base + $part )) makedev sd$unit$part b $major $minor $disk done ;; i2o.hd[a-z]) [ -d i2o ] || { mkdir i2o chown root:root i2o chmod 755 i2o [ -e i2o/ctl ] || makedev i2o/ctl c 10 166 $disk } unit=`suffix $arg i2o.hd` base=`index abcdefghijklmnopqrstuvwxyz $unit` base=$(( $base * 16 )) if [ $base -lt 256 ]; then major=80 else major=81 base=$(( $base - 256 )) fi makedev i2o/hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do minor=$(( $base + $part )) makedev i2o/hd$unit$part b $major $minor $disk done ;; i2o.hd[a-d][a-z]) [ -d i2o ] || { mkdir i2o chown root:root i2o chmod 755 i2o [ -e i2o/ctl ] || makedev i2o/ctl c 10 166 $disk } unit=`suffix $arg i2o.hd` unitmaj=`first $unit` unitmin=`second $unit` basemaj=`index Xabcd $unitmaj` basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin` basemaj=`math $basemaj \* 416` basemin=`math $basemin \* 16` base=`math $basemaj + $basemin` basemaj=`math $base / 256` base=`math $base % 256` major=`math basemaj \+ 80` if [ $major -gt 87 ]; then echo "$0: don't know how to make device \"$arg\"" >&2 exit 0 fi makedev i2o/hd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do minor=$(( $base + $part )) makedev i2o/hd$unit$part b $major $minor $disk done ;; dasd[a-z]) major=`Major dasd 94` || continue unit=`suffix $arg dasd` base=`index abcdefghijklmnopqrstuvwxyz $unit` base=$(( $base * 4 )) if [ $base -lt 256 ]; then major=94 else major=65 base=$(( $base - 256 )) fi makedev dasd$unit b $major $base $disk for part in 1 2 3 do minor=$(( $base + $part )) makedev dasd$unit$part b $major $minor $disk done ;; ad[a-p]) major=`Major ad 28` || continue unit=`suffix $arg ad` base=`index abcdefghijklmnop $unit` base=`math $base \* 16` makedev ad$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do minor=$(( $base + $part )) makedev ad$unit$part b $major $minor $disk done ;; dac960) for ctr in 0 1 2 3 4 5 6 7 do $0 $opts dac960.$ctr done makedev dac960_gam c 10 252 $disk ;; dac960.[0-7]) [ -d rd ] || { mkdir rd chown root:root rd chmod 755 rd } unit=`suffix $arg dac960.` major=`math 48 + $unit` minor=0 for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \ 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 do makedev rd/c${unit}d${ld} b $major $minor $disk minor=`math $minor + 1` for part in 1 2 3 4 5 6 7 do makedev rd/c${unit}d${ld}p$part b $major $minor $disk minor=`math $minor + 1` done done ;; dpti) major=151 for ld in 1 2 3 4 5 6 7 do minor=`math $ld -1` makedev dpti${ld} c $major $minor $disk done ;; ataraid) for ctr in 0 1 2 # 3 4 5 6 7 do $0 $opts ataraid.$ctr done ;; ataraid.[0-7]) [ -d ataraid ] || { mkdir ataraid chown root:root ataraid chmod 755 ataraid } unit=`suffix $arg ataraid.` major=114 minor=`math $unit \* 16` makedev ataraid/d${unit} b $major $minor $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do minor=`math $minor + 1` makedev ataraid/d${unit}p$part b $major $minor $disk done ;; ida) for ctr in 0 1 2 # 3 4 5 6 7 do $0 $opts ida.$ctr done ;; ida.[0-7]) [ -d ida ] || { mkdir ida chown root:root ida chmod 755 ida } unit=`suffix $arg ida.` major=`math 72 + $unit` minor=0 for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev ida/c${unit}d${ld} b $major $minor $disk minor=`math $minor + 1` for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev ida/c${unit}d${ld}p$part b $major $minor $disk minor=`math $minor + 1` done done ;; cciss) for ctr in 0 1 2 # 3 4 5 6 7 do $0 $opts cciss.$ctr done ;; cciss.[0-7]) [ -d cciss ] || { mkdir cciss chown root:root cciss chmod 755 cciss } unit=`suffix $arg cciss.` major=`math 104 + $unit` minor=0 for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev cciss/c${unit}d${ld} b $major $minor $disk minor=`math $minor + 1` for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev cciss/c${unit}d${ld}p$part b $major $minor $disk minor=`math $minor + 1` done done ;; rom) major=`Major rom 31` for i in 0 1 2 3 4 5 6 7 do makedev rom$i b $major $i $disk makedev rrom$i b $major `math $i +8` $disk makedev flash$i b $major `math $i +16` $disk makedev rflash$i b $major `math $i +24` $disk done ;; nb[0-7]) major=`Major nbd 43` || continue minor=`suffix $arg nb` makedev nb$minor b $major $minor $disk ;; loop) for part in 0 1 2 3 4 5 6 7 do makedev loop$part b 7 $part $disk done ;; loop[0-9]|loop[1-9][0-9]|loop1[0-9][0-9]|loop2[0-4][0-9]|loop25[0-5]) minor=`suffix $arg loop` makedev loop$minor b 7 $minor $disk ;; md) major=`Major md 9` || continue for part in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev md$part b $major $part $disk done ;; st[0-7]) major=`Major st 9` unit=`suffix $arg st` makedev st${unit} c $major $unit $tape makedev nst${unit} c $major `math 128 + $unit` $tape makedev st${unit}l c $major `math 32 + $unit` $tape makedev nst${unit}l c $major `math 160 + $unit` $tape makedev st${unit}m c $major `math 64 + $unit` $tape makedev nst${unit}m c $major `math 192 + $unit` $tape makedev st${unit}a c $major `math 96 + $unit` $tape makedev nst${unit}a c $major `math 224 + $unit` $tape ;; qic) major=`Major tpqic02 12` makedev ntpqic11 c $major 2 $tape makedev tpqic11 c $major 3 $tape makedev ntpqic24 c $major 4 $tape makedev tpqic24 c $major 5 $tape makedev ntpqic120 c $major 6 $tape makedev tpqic120 c $major 7 $tape makedev ntpqic150 c $major 8 $tape makedev tpqic150 c $major 9 $tape makedev rmt8 c $major 6 $tape makedev rmt16 c $major 8 $tape makedev tape-d c $major 136 $tape makedev tape-reset c $major 255 $tape $0 $opts qft ;; ftape) major=`Major qft 27` || continue for unit in 0 1 2 3 do makedev qft$unit c $major $unit $tape makedev nqft$unit c $major `math $unit + 4` $tape makedev zqft$unit c $major `math $unit + 16` $tape makedev nzqft$unit c $major `math $unit + 20` $tape makedev rawqft$unit c $major `math $unit + 32` $tape makedev nrawqft$unit c $major `math $unit + 36` $tape done symlink ftape qft0 symlink nftape nqft0 ;; sr|scd|scd-all) major=`Major sr 11` || continue for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 do makedev scd$unit b $major $unit $cdrom symlink sr$unit scd$unit done ;; pktcdvd) major=97 for unit in 0 1 2 3 do makedev pktcdvd$unit b $major $unit $cdrom done ;; cfs0) makedev cfs0 c 67 0 $coda ;; scd[0-9]|scd[0-1][0-9]) major=`Major sr 11` || continue unit=`suffix $arg scd` makedev scd$unit b $major $unit $cdrom symlink sr$unit scd$unit ;; ttyI[0-9]|ttyI[1-5][0-9]|ttyI[6][0-3]) major=43 unit=`suffix $arg ttyI` makedev ttyI$unit c $major $unit $dialout ;; ppp) major=108 makedev ppp c $major 0 $dip ;; ippp[0-9]|ippp[1-5][0-9]|ippp[6][0-3]) major=45 unit=`suffix $arg ippp` minor=`math $unit + 128` makedev ippp$unit c $major $minor $dialout ;; isdn[0-9]|isdn[1-5][0-9]|isdn[6][0-3]) major=45 unit=`suffix $arg isdn` minor=`math $unit + 0` makedev isdn$unit c $major $minor $dialout ;; isdnctrl[0-9]|isdnctrl[1-5][0-9]|isdnctrl[6][0-3]) major=45 unit=`suffix $arg isdnctrl` minor=`math $unit + 64` makedev isdnctrl$unit c $major $minor $dialout ;; isdninfo) makedev isdninfo c 45 255 $private ;; isdn-tty) major=43 for unit in 0 1 2 3 4 5 6 7 do makedev ttyI$unit c $major $unit $dialout done ;; isdn-ippp) major=45 for unit in 0 1 2 3 4 5 6 7 do makedev ippp$unit c $major `math $unit + 128` $dialout done ;; isdn-io) for unit in 0 1 2 3 4 5 6 7 do makedev isdn$unit c 45 $unit $dialout makedev isdnctrl$unit c 45 `math $unit + 64` $dialout makedev ippp$unit c 45 `math $unit + 128` $dialout done makedev isdninfo c 45 255 $dialout ;; sonycd) major=`Major sonycd 15` || continue makedev $arg b $major 0 $cdrom ;; mcd) major=`Major mcd 23` || continue makedev $arg b $major 0 $cdrom ;; mcdx|mcdx[0-4]) major=`Major $arg 20` || continue for unit in 0 1 2 3 4 do makedev mcdx$unit b $major $unit $cdrom done test -r mcdx || symlink mcdx mcdx0 ;; cdu535) makedev $arg b 24 0 $cdrom ;; lmscd) makedev $arg b 24 0 $cdrom ;; sbpcd|sbpcd[123]) major=`Major $arg 25` || continue base=`suffix ${arg}0 sbpcd` for minor in 0 1 2 3 do # XXX unit=$(substr 0123456789abcdef $(( $base * 4 + $minor + 1 )) ) makedev sbpcd$unit b $major $minor $cdrom done [ $arg = sbpcd ] && symlink $arg ${arg}0 ;; aztcd) major=`Major $arg 29` || continue makedev ${arg}0 b $major 0 $cdrom ;; cm206cd) major=`Major $arg 30` || continue makedev ${arg}0 b $major 0 $cdrom ;; gscd) major=`Major $arg 16` || continue makedev ${arg}0 b $major 0 $cdrom ;; pcd) for unit in 0 1 2 3 do makedev pcd$unit b 46 $unit $cdrom done ;; bpcd) makedev $arg b 41 0 $cdrom ;; optcd) makedev $arg b 17 0 $cdrom ;; sjcd) makedev $arg b 18 0 $cdrom ;; cfs|coda) makedev cfs0 c 67 0 $private ;; xfs|nnpfs|arla) makedev xfs0 c 103 0 $private makedev nnpfs0 c 103 0 $private ;; logiscan) major=`Major logiscan` || continue makedev $arg c $major 0 $scanner ;; toshiba) major=`Major $arg 10` || continue makedev $arg c $major 181 root root 0666 ;; m105scan) major=`Major m105` || continue makedev $arg c $major 0 $scanner ;; ac4096) major=`Major ac4096` || continue makedev $arg c $major 0 $scanner ;; audio) major=`Major sound 14` makedev mixer c $major 0 $audio makedev mixer1 c $major 16 $audio makedev mixer2 c $major 32 $audio makedev mixer3 c $major 48 $audio makedev sequencer c $major 1 $audio makedev midi00 c $major 2 $audio makedev midi01 c $major 18 $audio makedev midi02 c $major 34 $audio makedev midi03 c $major 50 $audio makedev dsp c $major 3 $audio makedev dsp1 c $major 19 $audio makedev dsp2 c $major 35 $audio makedev dsp3 c $major 51 $audio makedev audio c $major 4 $audio makedev audio1 c $major 20 $audio makedev audio2 c $major 36 $audio makedev audio3 c $major 52 $audio makedev sndstat c $major 6 $audio makedev audioctl c $major 7 $audio major=31 makedev mpu401data c $major 0 $audio makedev mpu401stat c $major 1 $audio major=35 for i in 0 1 2 3 do makedev midi$i c $major $i $audio makedev rmidi$i c $major `math $i + 64` $audio makedev smpte$i c $major `math $i + 128` $audio done ;; pcaudio) major=`Major pcsp 13` || continue makedev pcmixer c $major 0 $audio makedev pcsp c $major 3 $audio makedev pcaudio c $major 4 $audio ;; video|video4linux|v4l|radio) # video4linux api includes radio, teletext, etc. major=`Major video 81` || continue minor=0 until [ $minor -gt 63 ] do makedev video$minor c $major $minor $video makedev radio$minor c $major `math $minor + 64` $video minor=`math $minor + 1` done symlink radio radio0 minor=0 until [ $minor -gt 31 ] do makedev vtx$minor c $major `math $minor + 192` $video makedev vbi$minor c $major `math $minor + 224` $video minor=`math $minor + 1` done symlink video video0 symlink vbi vbi0 major=82 minor=0 until [ $minor -gt 1 ] do makedev winradio$minor c $major $minor $video minor=`math $minor + 1` done major=83 makedev vtx c $major 0 $video makedev vttuner c $major 16 $video ;; i2c) # making it possible to create an arbitrary number of i2c # devices might be good, but 8 should suffice for now major=`Major i2c 89` || continue minor=0 until [ $minor -gt 7 ] do makedev i2c-$minor c $major $minor $private minor=`math $minor + 1` done ;; tlk) major=102 minor=0 until [ $minor -gt 3 ] # tell me if 3 is wrong... do makedev tlk$minor c $major $minor $video minor=`math $minor + 1` done ;; srnd) makedev srnd0 c 110 0 $video makedev srnd1 c 110 1 $video ;; fgrab) makedev mmetfgrab c 40 0 $video makedev wvisfgrab c 26 0 $video for i in 0 1 # more? do makedev iscc$i c 93 $i $video makedev isccctl$i c 93 `math $i + 128` $video done for i in 0 1 # more? do makedev dcxx$i c 94 $i $video done ;; sg|sg-all) major=`Major sg 21` for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 do makedev sg$unit c $major $unit $scsi done ;; pg) major=`Major pg 97` for unit in 0 1 2 3 do makedev pg$unit c $major $unit $scsi done ;; fd) # not really devices, we use the /proc filesystem symlink fd $procfs/self/fd symlink stdin fd/0 symlink stdout fd/1 symlink stderr fd/2 ;; ibcs2) major=`Major ibcs2 30` || continue makedev socksys c $major 0 $ibcs2 symlink nfsd socksys makedev spx c $major 1 $ibcs2 symlink X0R null ;; netlink) major=36 makedev route c $major 0 $private makedev skip c $major 1 $private ;; enskip) major=64 makedev enskip c $major 0 $private ;; ipfilt*) major=95 makedev ipl c $major 0 $private makedev ipnat c $major 1 $private makedev ipstate c $major 2 $private makedev ipauth c $major 3 $private ;; qng) makedev qng c 77 0 $private ;; apm) major=`Major mouse 10` || continue makedev apm_bios c $major 134 $mouse ;; dcf) major=`Major dcf` || continue makedev $arg c $major 0 $system ;; helloworld) major=`Major hw` || continue makedev helloworld c $major 0 $public ;; ipsec) # For the Free S/WAN (http://www.xs4all.nl/~freeswan/) # implementation of IPSEC makedev ipsec c 36 10 $ipsec ;; comedi) major=98 for minor in 0 1 2 3 do makedev comedi$minor c $major $minor $public done ;; tilp) for i in `seq 0 7` do makedev tipar$i c 115 $i $printer makedev tiser$i c 115 `math 8 + $i` $dialout done for i in `seq 0 31` do makedev tiusb$i c 115 `math 16 + $i` $dialout done ;; dvb) # check if kernel-version is >= 2.6.8, if yes, create dvb-devices with # major-number 212, in the other case 250 kern_rev1=`uname -r | sed -e 's@^\([^.]*\)\..*@\1@'` kern_rev2=`uname -r | sed -e 's@^[^.]*\.\([^.]*\)\..*@\1@'` kern_rev3=`uname -r | sed -e 's@^[^.]*\.[^.]*\.\([^.][0-9]*\).*@\1@'` dvb_major=250 if [ $kern_rev1 -gt 2 ] || ([ $kern_rev1 -eq 2 ] && [ $kern_rev2 -gt 6 ]) \ || ([ $kern_rev1 -eq 2 ] && [ $kern_rev2 -eq 6 ] && [ $kern_rev3 -ge 8 ]) then dvb_major=212 fi mkdir -p dvb for i in 0 1 2 3 do mkdir -p dvb/adapter$i makedev dvb/adapter$i/video0 c $dvb_major `math 64 \* $i + 0` $video makedev dvb/adapter$i/audio0 c $dvb_major `math 64 \* $i + 1` $video makedev dvb/adapter$i/frontend0 c $dvb_major `math 64 \* $i + 3` $video makedev dvb/adapter$i/demux0 c $dvb_major `math 64 \* $i + 4` $video makedev dvb/adapter$i/dvr0 c $dvb_major `math 64 \* $i + 5` $video makedev dvb/adapter$i/ca0 c $dvb_major `math 64 \* $i + 6` $video makedev dvb/adapter$i/net0 c $dvb_major `math 64 \* $i + 7` $video makedev dvb/adapter$i/osd0 c $dvb_major `math 64 \* $i + 8` $video done ;; usb) mkdir -p usb major=180 for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev usb/lp$i c $major $i $printer makedev usb/mouse$i c $major `math $i + 16` $mouse makedev usb/ez$i c $major `math $i + 32` $system makedev usb/scanner$i c $major `math $i + 48` $scanner makedev usb/hiddev$i c $major `math $i + 96` $system makedev ttyACM$i c 166 $i $dialout makedev ttyUSB$i c 188 $i $dialout done makedev usb/rio500 c $major 64 $audio makedev usb/usblcd c $major 65 $audio makedev usb/cpad0 c $major 66 $audio ;; bluetooth) major=216 for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 do makedev rfcomm$i c $major $i $dialout done makedev vhci c 10 250 $dialout for i in 0 1 2 3; do makedev ttyUB$i c 216 $i $dialout makedev ccub$i c 217 $i $dialout done ;; paride) major=45 for unit in a b c d do base=`index abcd $unit` base=`math $base \* 16` makedev pd$unit b $major $base $disk for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 do makedev pd$unit$part b $major $(( $base + $part )) $disk done done for i in 0 1 2 3 do makedev pcd$i b 46 $i $cdrom makedev pf$i b 47 $i $floppy done ;; update) devices= if [ ! -f $procfs/devices ] then echo "$0: warning: can't read $procfs/devices" >&2 else exec 3<$procfs/devices while read major device extra <&3 do device=`echo $device | sed 's#/.*##'` case "$major" in Character|Block|'') ;; *) eval "major_$device=$major" devices="$devices $device" ;; esac done exec 3<&- fi if [ ! "$devices" ] then echo "$0: don't appear to have any devices" >&2 continue fi if [ "$opt_d" ] then echo "$0: can't delete an update" >&2 continue fi create= delete= devs="$devices" if [ -f DEVICES ] then exec 3 DEVICES ;; *) echo "$0: don't know how to make device \"$arg\"" >&2 exit 1 ;; esac done exit 0