Magellan Linux

Contents of /trunk/mkinitrd-magellan/livecd/MAKEDEV.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (show annotations) (download) (as text)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 33114 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 #!/bin/bash
2
3 MAKEDEV_VERSION=1.7
4
5 # This script is originally taken from Slackware 7.1 and modified for
6 # the Linux From Scratch Project (http://www.linuxfromscratch.org/) by
7 # Marc Heerdink <marc_heerdink@softhome.net>
8 #
9 # Versions 1.1 onwards modified for LFS by Mark Hymers
10 # <markh@linuxfromscratch.org>
11
12 #
13 # Changelog
14 #
15
16 # Version 1.1
17 # -- Modified script so sg devices were created properly. They were
18 # being created as block devices instead of the proper character
19 # ones.
20
21 # Version 1.2
22 # -- Added new generic-nopty option for those using /dev/pts to
23 # avoid creating pty[p-za-e][0-9a-f] and tty[p-za-e][0-9a-f]
24 # -- Changed generic option to create hda-hdh instead of just
25 # hda-hdd
26 # -- Changed MAXVT to only create 32 VTs by default instead of 63
27
28 # Version 1.3
29 # -- Changed creation of framebuffer devices (fb0-fb7) to 29,[0-7]
30 # instead of the old 0,32,etc. sequence. Support for the old
31 # sequence will be removed in the 2.5 series.
32 # -- Fixed typo in smpte* device creation (they were being created
33 # as smtpe instead of smpte...)
34
35 # Version 1.4
36 # -- Applied Matthias Benkmann's new patch to allow MAKEDEV to be used
37 # even when glibc isn't installed by manually resolving
38 # user and group names to ids if chown name.group doesn't work.
39
40 # Version 1.5
41 # -- Changed the symlink /dev/ram --> /dev/ram1 to /dev/ram --> /dev/ram0
42
43 # Version 1.6
44 # -- Removed the "update" target as we don't use it and it means
45 # that MAKEDEV doesn't need proc mounted to work.
46 # -- Make the -V option work properly
47 # -- Add long (GNU-style) options and add the -h|--help option.
48 # -- When we fallback to parsing /etc/{passwd,group}, make sure the
49 # files actually exist first!
50 # -- Change !#/bin/sh to #!/bin/bash as it doesn't run on all shells which
51 # may be installed as /bin/sh
52
53 # Version 1.7
54 # -- Give vcs a fallback major number (7) as the /proc processing code
55 # has been removed.
56
57
58 # Kernel version 2.4.9 (2.4.x series)
59
60 # These are the device classes. Each device falls in it's own class. The
61 # parameters to the chmod and chown commands for a specific class are
62 # defined here. The permissions will be changed immediately after the
63 # device is created.
64
65 public="root root 0666"
66 private="root root 0600"
67 system="root sys 0660"
68 kmem="root kmem 0640"
69 tty="root tty 0666"
70 cons="root tty 0622"
71 vcs="root root 0600"
72 dialout="root dialout 0660"
73 mouse="root root 0660"
74 printer="root lp 0660"
75 floppy="root floppy 0660"
76 disk="root disk 0660"
77 scsi="root disk 0660"
78 cdrom="root disk 0660"
79 tape="root tape 0660"
80 audio="root audio 0660"
81 video="root root 0660"
82 ibcs2="root root 0666"
83 scanner="root root 0666"
84 coda="root root 0600"
85 ipsec="root root 0200"
86 readable="root root 0444"
87
88 # Maximum number of Virtual Terminals to create.
89 MAXVT=32
90
91 # Default major numbers.
92 major_ide0=3
93 major_ide1=22
94 major_ide2=33
95 major_ide3=34
96
97 major_sd=8
98 major_sr=11
99 major_sg=21
100
101 major_lp=6
102 major_loop=7
103
104 procfs=/proc
105
106 opt_v=
107 opt_d=
108 opt_n=
109 opt_H=
110 opt_V=
111
112 while [ "$#" -ge "1" ]; do
113 case $1 in
114 --) shift; break ;;
115 -v|--verbose) shift; opt_v=1 ;;
116 -d|--delete) shift; opt_d=1 ;;
117 -n|--null) shift; opt_n=1; opt_v=1 ;;
118 -V|--version) shift; opt_V=1 ;;
119 -h|--help) shift; opt_h=1 ;;
120 -*) echo "$0: unknown flag \"$1\"" >&2; exit 1 ;;
121 *) break ;;
122 esac
123 done
124
125 if [ "$opt_V" ]; then
126 echo "MAKEDEV-$MAKEDEV_VERSION"
127 echo
128 echo "Based on the MAKEDEV script from Slackware 7.1"
129 echo "Originally modified for the LinuxFromScratch Project"
130 echo "(http://www.linuxfromscratch.org/)"
131 echo "by Marc Heerdink <marc_heerdink@softhome.net>"
132 echo
133 echo "Maintained for LinuxFromScratch from Version 1.1 onwards"
134 echo "by Mark Hymers <markh@linuxfromscratch.org>"
135 echo
136 echo "Please report all problems to the maintainer"
137 exit 0
138 fi
139
140 if [ "$opt_h" ]; then
141 echo "Usage: MAKEDEV [OPTION] DEVICE|DEVICE-GROUP"
142 echo "Create device files for use in Linux"
143 echo
144
145 echo "-d, --delete delete specified devices"
146 echo "-h, --help display this help and exit"
147 echo "-n, --null don't perform the action, just print what would be done"
148 echo "-V, --version display version information and exit"
149 echo "-v, --verbose be more verbose in the output "
150 echo
151
152 echo "Devices can be specified individually or as a group. Examples:"
153 echo "generic creates most generally required devices"
154 echo "generic-nopty as generic but no pty's created (for use with devpts"
155 echo
156 echo "Please report bugs to the maintainer (see --version option)"
157 exit 0
158 fi
159
160 opts="${opt_n:+-n} ${opt_v:+-v} ${opt_d:+-d}"
161
162 #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
163
164 # Test if groups and users are resolved automatically and install functions to
165 # resolve manually if not - By Matthias Benkmann
166
167 if [ "`id -gn root 2>/dev/null`" != "root" ]; then
168 echo 1>&2 'NOTICE: Resolving user/group names manually using /etc/group and /etc/passwd'
169
170 if [ -f /etc/passwd ]; then
171 getuser()
172 {
173 line=`grep ^$1: /etc/passwd` || { echo $1 ; return 1 ;}
174 echo "$line" | cut -f 3 -d :
175 }
176 else
177 echo "/etc/passwd does not exist - please create it!"
178 exit 1
179 fi
180
181 if [ -f /etc/group ]; then
182 getgid()
183 {
184 line=`grep ^$1: /etc/group` || { echo $1 ; return 1 ;}
185 echo "$line" | cut -f 3 -d :
186 }
187 else
188 echo "/etc/group does not exist - please create it!"
189 exit 1
190 fi
191 else
192 getuser() { echo $1 ;}
193 getgid() { echo $1 ;}
194 fi
195
196 makedev () {
197 if [ "$opt_v" ]; then
198 if [ "$opt_d" ]; then
199 echo "delete $1"
200 else
201 echo "create $1 $2 $3 $4 $5:$6 $7"
202 fi
203 fi
204 if [ ! "$opt_n" ]; then
205 if [ "$opt_d" ]; then
206 rm -f $1
207 else
208 rm -f $1-
209 mknod $1- $2 $3 $4 &&
210 chown `getuser $5`:`getgid $6` $1- &&
211 chmod $7 $1- &&
212 mv $1- $1
213 fi
214 fi
215 }
216
217 symlink () {
218 if [ "$opt_v" ]; then
219 if [ "$opt_d" ]; then
220 echo "delete $1"
221 else
222 echo "create $1 -> $2"
223 fi
224 fi
225 [ ! "$opt_n" ] && rm -f $1 &&
226 [ ! "$opt_d" ] && ln -s $2 $1
227 }
228
229 math () {
230 eval echo "\$(($*))"
231 }
232
233 index () {
234 eval "I=\${1%$2*}"
235 eval echo "\${#I}"
236 }
237
238 suffix () {
239 eval echo "\${1#$2}"
240 }
241
242 strip () {
243 eval echo "\${1% $2 *} \${1#* $2 }"
244 }
245
246 first () {
247 eval echo "\${1:0:1}"
248 }
249
250 second () {
251 eval echo "\${1:1:1}"
252 }
253
254 #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
255
256 Major () {
257 device=$2
258 if [ "$opt_d" ]; then
259 echo -1
260 else
261 eval echo \${major_$1:-\${device:?\"unknown major number for $1\"}}
262 fi
263 }
264
265 cvt () {
266 while [ "$#" -ne "0" ]; do
267 case "$1" in
268 mem|tty|ttyp|cua|cub) ;;
269 hd) (for d in a b c d e f g h ; do
270 echo -n hd$d " "
271 done) ; echo
272 ;;
273 ide0) echo hda hdb ;;
274 ide1) echo hdc hdd ;;
275 ide2) echo hde hdf ;;
276 ide3) echo hdg hdh ;;
277 sd) echo sda sdb sdc sdd ;;
278 sg) echo sg ;;
279 sr) echo scd0 ;;
280 st) echo st0 ;;
281 xd) echo xda xdb ;;
282 ad) echo ada adb ;;
283 fd) echo fd0 fd1 ;;
284 lp) echo lp ;;
285 mt) echo ftape ;;
286 loop) echo loop ;;
287 md) echo md ;;
288 ibcs2) echo ibcs2 ;;
289 tpqic02) echo qic ;;
290 sound) echo audio ;;
291 logiscan) echo logiscan ;;
292 ac4096) echo ac4096 ;;
293 hw) echo helloworld ;;
294 sbpcd | sbpcd[123]) echo $1 ;;
295 joystick) echo js ;;
296 apm_bios) echo apm ;;
297 dcf) echo dcf ;;
298 aztcd) echo aztcd ;;
299 pcmcia) ;; # taken care of by its own driver
300 ttyC) echo cyclades ;;
301 isdn) echo isdnmodem isdnbri dcbri ;;
302 vcs) ;;
303 pty) echo pty ;;
304 misc) echo misc ;;
305 fb) echo fb ;;
306 netlink) echo netlink ;;
307 hamradio) echo hamradio ;;
308 snd) ;;
309 ptm) ;;
310 pts) ;;
311 ttyS) echo ttyS0 ttyS1 ttyS2 ttyS3 ;;
312 *) echo "$0: don't know what \"$1\" is" >&2 ;;
313 esac
314 shift
315 done
316 }
317
318 for arg; do
319 case $arg in
320 generic|generic-nopty)
321 $0 $opts std
322 $0 $opts fd
323 if [ $arg = "generic" ]; then $0 $opts pty; fi;
324 if [ $arg = "generic-nopty" ]; then $0 $opts ptmx; fi;
325 $0 $opts console
326 $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
327 $0 $opts lp
328 $0 $opts parport
329 $0 $opts busmice
330 $0 $opts fb
331 $0 $opts ram
332 $0 $opts loop
333 $0 $opts fd0 fd1
334 $0 $opts hda hdb hdc hdd hde hdf hdg hdh
335 $0 $opts sda sdb sdc sdd
336 $0 $opts sg0 sg1 sg2 sg3
337 $0 $opts scd0 scd1 scd2 scd3
338 $0 $opts audio
339 $0 $opts rtc
340 $0 $opts ppp
341 ;;
342 std)
343 makedev mem c 1 1 $kmem
344 makedev kmem c 1 2 $kmem
345 makedev null c 1 3 $public
346 makedev port c 1 4 $kmem
347 makedev zero c 1 5 $public
348 symlink core $procfs/kcore
349 makedev full c 1 7 $public
350 makedev random c 1 8 $readable
351 makedev urandom c 1 9 $readable
352 makedev aio c 1 10 $readable
353 makedev tty c 5 0 $tty
354 ;;
355 ram)
356 for i in 0 1 2 3; do
357 makedev ram$i b 1 $i $disk
358 done
359 ln -sf ram0 ram
360 ;;
361 console)
362 major=`Major vcs 7`
363 makedev tty0 c 4 0 $cons
364 makedev console c 5 1 $cons
365 [ "$major" ] && makedev vcs0 c $major 0 $vcs
366 [ "$major" ] && makedev vcsa c $major 128 $vcs
367
368 line=1
369 while [ $line -le $MAXVT -a $line -le 63 ]; do
370 makedev tty$line c 4 $line $tty
371 [ "$major" ] && makedev vcs$line c $major $line $vcs
372 [ "$major" ] && makedev vcsa$line c $major `math $line + 128` $vcs
373 line=`math $line + 1`
374 done
375 ;;
376 fd)
377 symlink fd $procfs/self/fd
378 symlink stdin fd/0
379 symlink stdout fd/1
380 symlink stderr fd/2
381 ;;
382 fd[0-7])
383 major=`Major fd 2` || continue
384 base=`suffix $arg fd`
385 if [ $base -ge 4 ]
386 then
387 base=`math $base + 124`
388 fi
389 makedev ${arg} b $major $base $floppy
390 makedev ${arg}d360 b $major `math $base + 4` $floppy
391 makedev ${arg}h1200 b $major `math $base + 8` $floppy
392 makedev ${arg}u360 b $major `math $base + 12` $floppy
393 makedev ${arg}u720 b $major `math $base + 16` $floppy
394 makedev ${arg}h360 b $major `math $base + 20` $floppy
395 makedev ${arg}h720 b $major `math $base + 24` $floppy
396 makedev ${arg}u1440 b $major `math $base + 28` $floppy
397 makedev ${arg}u2880 b $major `math $base + 32` $floppy
398 makedev ${arg}CompaQ b $major `math $base + 36` $floppy
399 makedev ${arg}h1440 b $major `math $base + 40` $floppy
400 makedev ${arg}u1680 b $major `math $base + 44` $floppy
401 makedev ${arg}h410 b $major `math $base + 48` $floppy
402 makedev ${arg}u820 b $major `math $base + 52` $floppy
403 makedev ${arg}h1476 b $major `math $base + 56` $floppy
404 makedev ${arg}u1722 b $major `math $base + 60` $floppy
405 makedev ${arg}h420 b $major `math $base + 64` $floppy
406 makedev ${arg}u830 b $major `math $base + 68` $floppy
407 makedev ${arg}h1494 b $major `math $base + 72` $floppy
408 makedev ${arg}u1743 b $major `math $base + 76` $floppy
409 makedev ${arg}h880 b $major `math $base + 80` $floppy
410 makedev ${arg}u1040 b $major `math $base + 84` $floppy
411 makedev ${arg}u1120 b $major `math $base + 88` $floppy
412 makedev ${arg}h1600 b $major `math $base + 92` $floppy
413 makedev ${arg}u1760 b $major `math $base + 96` $floppy
414 makedev ${arg}u1920 b $major `math $base + 100` $floppy
415 makedev ${arg}u3200 b $major `math $base + 104` $floppy
416 makedev ${arg}u3520 b $major `math $base + 108` $floppy
417 makedev ${arg}u3840 b $major `math $base + 112` $floppy
418 makedev ${arg}u1840 b $major `math $base + 116` $floppy
419 makedev ${arg}u800 b $major `math $base + 120` $floppy
420 makedev ${arg}u1600 b $major `math $base + 124` $floppy
421 ;;
422 hamradio)
423 $0 scc
424 $0 bc
425 ;;
426 scc)
427 for unit in 0 1 2 3 4 5 6 7
428 do
429 makedev scc$unit c 34 $unit $system
430 done
431 ;;
432 bc)
433 for unit in 0 1 2 3
434 do
435 makedev bc$unit c 51 $unit $system
436 done
437 ;;
438 nvram)
439 makedev nvram c 10 144 $kmem
440 ;;
441 tty[1-9]|tty[1-5][0-9]|tty[6][0-3])
442 line=`suffix $arg tty`
443 makedev tty$line c 4 $line $tty
444 ;;
445 ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3])
446 line=`suffix $arg ttyS`
447 minor=`math 64 + $line`
448 makedev ttyS$line c 4 $minor $dialout
449 ;;
450 pty[a-ep-z])
451 bank=`suffix $arg pty`
452 base=`index pqrstuvwxyzabcde $bank`
453 base=`math $base \* 16`
454 for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f
455 do
456 j=`index 0123456789abcdef $i`
457 makedev pty$bank$i c 2 `math $base + $j` $tty
458 makedev tty$bank$i c 3 `math $base + $j` $tty
459 done
460 ;;
461 pty)
462 ptysufs=""
463 for i in p q r s t u v w x y z a b c d e
464 do
465 ptysufs="$ptysufs pty$i"
466 done
467 $0 $opts $ptysufs ptmx
468 ;;
469 ptmx)
470 # master pty multiplexer for 2.1 kernels
471 makedev ptmx c 5 2 $tty
472 ;;
473 cyclades|ttyC)
474 major1=`Major ttyC 19` || continue
475 #major2=`Major cub 20` || continue
476 for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
477 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
478 do
479 makedev ttyC$i c $major1 $i $tty
480 #makedev cub$i c $major2 $i $dialout
481 done
482 ;;
483 stallion|ttyE)
484 major1=`Major ttyE 24` || continue
485 #major2=`Major cue 25` || continue
486 majorc=28
487 minor=0
488 until [ $minor -gt 256 ]
489 do
490 makedev ttyE$minor c $major1 $minor $dialout
491 #makedev cue$minor c $major2 $minor $dialout
492 minor=`math minor + 1`
493 done
494 for i in 0 1 2 3
495 do
496 makedev staliomem$i c $majorc $i $private
497 done
498 ;;
499 chase|ttyH)
500 major1=`Major ttyH 17` || continue
501 #major2=`Major cuh 18` || continue
502 minor=0
503 until [ $minor -gt 16 ] # tell me if 16 is wrong
504 do
505 makedev ttyH$minor c $major1 $minor $dialout
506 #makedev cuh$minor c $major2 $minor $dialout
507 minor=`math minor + 1`
508 done
509 ;;
510 rocketport|ttyR)
511 major1=`Major ttyR 46` || continue
512 #major2=`Major cur 47` || continue
513 minor=0
514 until [ $minor -gt 64 ] # tell me if 64 is wrong
515 do
516 makedev ttyR$minor c $major1 $minor $dialout
517 #makedev cur$minor c $major2 $minor $dialout
518 minor=`math minor + 1`
519 done
520 ;;
521 ttyV)
522 major1=`Major ttyV 105` || continue
523 #major2=`Major cuv 106` || continue
524 minor=0
525 until [ $minor -gt 16 ] # tell me if 16 is wrong
526 do
527 makedev ttyV$minor c $major1 $minor $dialout
528 #makedev cuv$minor c $major2 $minor $dialout
529 minor=`math minor + 1`
530 done
531 ;;
532 digi|ttyD)
533 major1=`Major ttyD 22` || continue
534 #major2=`Major cud 23` || continue
535 minor=0
536 until [ $minor -gt 16 ] # tell me if 16 is wrong
537 do
538 makedev ttyD$minor c $major1 $minor $dialout
539 #makedev cud$minor c $major2 $minor $dialout
540 minor=`math minor + 1`
541 done
542 ;;
543 specialix|ttyX)
544 major1=`Major ttyX 32` || continue
545 #major2=`Major cux 33` || continue
546 minor=0
547 until [ $minor -gt 16 ] # tell me if 16 is wrong
548 do
549 makedev ttyX$minor c $major1 $minor $dialout
550 #makedev cux$minor c $major2 $minor $dialout
551 minor=`math minor + 1`
552 done
553 ;;
554 specialixIO8|ttyW)
555 major1=`Major ttyW 75` || continue
556 #major2=`Major cuw 76` || continue
557 minor=0
558 until [ $minor -gt 16 ] # tell me if 16 is wrong
559 do
560 makedev ttyW$minor c $major1 $minor $dialout
561 #makedev cuw$minor c $major2 $minor $dialout
562 minor=`math minor + 1`
563 done
564 ;;
565 PAM|ttyM)
566 major1=`Major ttyM 79` || continue
567 #major2=`Major cum 80` || continue
568 minor=0
569 until [ $minor -gt 16 ] # tell me if 16 is wrong
570 do
571 makedev ttyM$minor c $major1 $minor $dialout
572 #makedev cum$minor c $major2 $minor $dialout
573 minor=`math minor + 1`
574 done
575 ;;
576 riscom|ttyL)
577 major=`Major ttyL 48` || continue
578 minor=0
579 until [ $minor -gt 16 ] # tell me if 16 is wrong
580 do
581 makedev ttyL$minor c $major $minor $dialout
582 minor=`math minor + 1`
583 done
584 ;;
585 computone|ttyF)
586 major=`Major ttyF 71` || continue
587 #major2=`Major cuf 72` || continue
588 minor=0
589 until [ $minor -gt 255 ]
590 do
591 makedev ttyF$minor c $major $minor $dialout
592 #makedev cuf$minor c $major2 $minor $dialout
593 minor=`math minor + 1`
594 done
595 major=73
596 for i in 0 4 8 12
597 do
598 makedev ip2ipl$i c $major $i $private
599 makedev ip2stat$i c $major `math $i + 1` $private
600 done
601 ;;
602 ESP|ttyP)
603 major=`Major ttyP 57` || continue
604 #major2=`Major cup 58` || continue
605 minor=0
606 until [ $minor -gt 4 ] # tell me if 4 is wrong
607 do
608 makedev ttyP$minor c $major $minor $dialout
609 #makedev cup$minor c $major2 $minor $dialout
610 minor=`math minor + 1`
611 done
612 ;;
613 COMX|comx)
614 major=`Major comx 88` || continue
615 minor=0
616 until [ $minor -gt 4 ] # tell me if 4 is wrong
617 do
618 makedev comx$minor c $major $minor $private
619 minor=`math minor + 1`
620 done
621 ;;
622 isdnmodem|ttyI)
623 major1=`Major ttyI 43` || continue
624 #major2=`Major cui 44` || continue
625 minor=0
626 until [ $minor -gt 63 ]
627 do
628 makedev ttyI$minor c $major1 $minor $dialout
629 #makedev cui$minor c $major2 $minor $dialout
630 minor=`math minor + 1`
631 done
632 ;;
633 isdnbri)
634 major=45
635 minor=0
636 until [ $minor -gt 63 ]
637 do
638 makedev isdn$minor c $major $minor $private
639 makedev isdnctrl$minor c $major `math $minor + 64` $private
640 makedev ippp$minor c $major `math $minor + 128` $private
641 minor=`math minor + 1`
642 done
643 makedev isdninfo c $major 255 $private
644 ;;
645 dcbri)
646 major=52
647 for i in 0 1 2 3
648 do
649 makedev dcbri$i c $major $i $private
650 done
651 ;;
652 capi)
653 major=68
654 makedev capi20 c $major 0 $private
655 for i in 0 1 2 3 4 5 6 7 8 9
656 do
657 makedev capi20.0$i c $major `math $i + 1` $private
658 done
659 for i in 10 11 12 13 14 15 16 17 18 19
660 do
661 makedev capi20.$i c $major `math $i + 1` $private
662 done
663 ;;
664 fb)
665 for i in 0 1 2 3 4 5 6 7
666 do
667 makedev fb$i c 29 $i $cons
668 done
669 ;;
670 netlink)
671 makedev route c 36 0 $coda
672 makedev skip c 36 1 $coda
673 makedev fwmonitor c 36 3 $coda
674 ;;
675 lp|par)
676 major=`Major lp 6` || continue
677 makedev lp0 c $major 0 $printer
678 makedev lp1 c $major 1 $printer
679 makedev lp2 c $major 2 $printer
680 makedev lp3 c $major 3 $printer
681 ;;
682 parport)
683 major=`Major parport 99` || continue
684 makedev ${arg}0 c $major 0 $printer
685 makedev ${arg}1 c $major 1 $printer
686 makedev ${arg}2 c $major 2 $printer
687 makedev ${arg}3 c $major 3 $printer
688 ;;
689 slm)
690 major=`Major slm 28` || continue
691 for i in 0 1 2 3
692 do
693 makedev slm c $major $i $printer
694 done
695 ;;
696 busmice)
697 major=`Major mouse 10` || continue
698 makedev logibm c $major 0 $mouse
699 makedev psaux c $major 1 $mouse
700 makedev inportbm c $major 2 $mouse
701 makedev atibm c $major 3 $mouse
702 makedev jbm c $major 4 $mouse
703 ;;
704 misc)
705 major=`Major mouse 10` || continue
706 makedev logibm c $major 0 $mouse
707 makedev psaux c $major 1 $mouse
708 makedev inportbm c $major 2 $mouse
709 makedev atibm c $major 3 $mouse
710 makedev jbm c $major 4 $mouse
711 makedev amigamouse c $major 4 $mouse
712 makedev atarimouse c $major 5 $mouse
713 makedev sunmouse c $major 6 $mouse
714 makedev amigamouse1 c $major 7 $mouse
715 makedev smouse c $major 8 $mouse
716 makedev pc110pad c $major 9 $mouse
717 makedev adbmouse c $major 10 $mouse
718 makedev beep c $major 128 $mouse
719 makedev modreq c $major 129 $mouse
720 makedev watchdog c $major 130 $mouse
721 makedev temperature c $major 131 $mouse
722 makedev hwtrap c $major 132 $mouse
723 makedev exttrp c $major 133 $mouse
724 makedev apm_bios c $major 134 $mouse
725 makedev rtc c $major 135 $mouse
726 makedev openprom c $major 139 $mouse
727 makedev relay8 c $major 140 $mouse
728 makedev relay16 c $major 141 $mouse
729 makedev msr c $major 142 $mouse
730 makedev pciconf c $major 143 $mouse
731 makedev nvram c $major 144 $mouse
732 makedev hfmodem c $major 145 $mouse
733 makedev led c $major 151 $mouse
734 makedev mergemem c $major 153 $mouse
735 makedev pmu c $major 154 $mouse
736 ;;
737 rtc)
738 major=`Major mouse 10` || continue
739 makedev rtc c $major 135 $mouse
740 ;;
741 joystick)
742 major=`Major Joystick` || continue
743 makedev js0 c 15 0 $mouse
744 makedev js1 c 15 1 $mouse
745 makedev djs0 c 15 128 $mouse
746 makedev djs1 c 15 129 $mouse
747 ;;
748 ed[a-b])
749 major=`Major ed 36` || continue
750 unit=`suffix $arg ed`
751 base=`index ab $unit`
752 base=`math $base \* 64`
753 makedev ed$unit b $major $base $disk
754 for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
755 do
756 makedev ed$unit$part b $major `math $base + $part` $disk
757 done
758 ;;
759 hd[a-b])
760 major=`Major ide0 3`
761 unit=`suffix $arg hd`
762 base=`index ab $unit`
763 base=`math $base \* 64`
764 makedev hd$unit b $major $base $disk
765 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
766 do
767 makedev hd$unit$part b $major `math $base + $part` $disk
768 done
769 ;;
770 hd[c-d])
771 major=`Major ide1 22` || continue
772 unit=`suffix $arg hd`
773 base=`index cd $unit`
774 base=`math $base \* 64`
775 makedev hd$unit b $major $base $disk
776 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
777 do
778 makedev hd$unit$part b $major `expr $base + $part` $disk
779 done
780 ;;
781 hd[e-f])
782 major=`Major ide2 33` || continue
783 unit=`suffix $arg hd`
784 base=`index ef $unit`
785 base=`math $base \* 64`
786 makedev hd$unit b $major $base $disk
787 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
788 do
789 makedev hd$unit$part b $major `expr $base + $part` $disk
790 done
791 ;;
792 hd[g-h])
793 major=`Major ide3 34` || continue
794 unit=`suffix $arg hd`
795 base=`index gh $unit`
796 base=`math $base \* 64`
797 makedev hd$unit b $major $base $disk
798 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
799 do
800 makedev hd$unit$part b $major `expr $base + $part` $disk
801 done
802 ;;
803 hd[i-j])
804 major=`Major ide4 56` || continue
805 unit=`suffix $arg hd`
806 base=`index gh $unit`
807 base=`math $base \* 64`
808 makedev hd$unit b $major $base $disk
809 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
810 do
811 makedev hd$unit$part b $major `expr $base + $part` $disk
812 done
813 ;;
814 hd[k-l])
815 major=`Major ide4 57` || continue
816 unit=`suffix $arg hd`
817 base=`index gh $unit`
818 base=`math $base \* 64`
819 makedev hd$unit b $major $base $disk
820 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
821 do
822 makedev hd$unit$part b $major `expr $base + $part` $disk
823 done
824 ;;
825 ht)
826 major=`Major ht0 37` || continue
827 makedev ht0 c $major 0 $tape
828 makedev ht1 c $major 1 $tape
829 makedev nht0 c $major 128 $tape
830 makedev nht1 c $major 129 $tape
831 ;;
832 pt)
833 major=`Major pt 96` || continue
834 for i in 0 1 2 3
835 do
836 makedev pt$i c $major $i $tape
837 makedev npt$i c $major `math $i + 128` $tape
838 done
839 ;;
840 xd[a-d])
841 major=`Major xd 13` || continue
842 unit=`suffix $arg xd`
843 base=`index abcd $unit`
844 base=`math $base \* 64`
845 makedev xd$unit b $major $base $disk
846 for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
847 do
848 makedev xd$unit$part b $major `expr $base + $part` $disk
849 done
850 ;;
851 sd[a-z])
852 major=`Major sd 8` || continue
853 unit=`suffix $arg sd`
854 base=`index abcdefghijklmnopqrstuvwxyz $unit`
855 base=`math $base \* 16`
856 if [ $base -lt 256 ]; then
857 major=8
858 else
859 major=65
860 base=`math $base \- 256`
861 fi
862 makedev sd$unit b $major $base $disk
863 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
864 do
865 minor=`expr $base + $part`
866 makedev sd$unit$part b $major $minor $disk
867 done
868 ;;
869 sd[a-d][a-z])
870 unit=`suffix $arg sd`
871 unitmaj=`first $unit`
872 unitmin=`second $unit`
873 basemaj=`index Xabcd $unitmaj`
874 basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin`
875 basemaj=`math $basemaj \* 416`
876 basemin=`math $basemin \* 16`
877 base=`math $basemaj + $basemin`
878 basemaj=`math $base / 256`
879 base=`math $base % 256`
880 major=`math basemaj \+ 64`
881 if [ $major -gt 71 ]; then
882 echo "$0: don't know how to make device \"$arg\"" >&2
883 exit 0
884 fi
885 makedev sd$unit b $major $base $disk
886 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
887 do
888 minor=`expr $base + $part`
889 makedev sd$unit$part b $major $minor $disk
890 done
891 ;;
892 ad[a-p])
893 major=`Major ad 28` || continue
894 unit=`suffix $arg ad`
895 base=`index abcdefghijklmnop $unit`
896 base=`math $base \* 16`
897 makedev ad$unit b $major $base $disk
898 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
899 do
900 minor=`expr $base + $part`
901 makedev ad$unit$part b $major $minor $disk
902 done
903 ;;
904 dac960)
905 [ -d rd ] || {
906 mkdir rd
907 chown root.root rd
908 chmod 755 rd
909 }
910 for ctr in 0 1 2 3 4 5 6 7
911 do
912 major=`math 48 + $ctr`
913 minor=0
914 for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \
915 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
916 do
917 makedev rd/c${ctr}d${ld} b $major $minor $disk
918 minor=`math minor + 1`
919 for part in 1 2 3 4 5 6 7
920 do
921 makedev rd/c${ctr}d${ld}p$part b $major $minor $disk
922 minor=`math minor + 1`
923 done
924 done
925 done
926 ;;
927 ida)
928 [ -d ida ] || {
929 mkdir ida
930 chown root.root ida
931 chmod 755 ida
932 }
933 for ctr in 0 1 2 # 3 4 5 6 7
934 do
935 major=`math 72 + $ctr`
936 minor=0
937 for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
938 do
939 makedev ida/c${ctr}d${ld} b $major $minor $disk
940 minor=`math minor + 1`
941 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
942 do
943 makedev ida/c${ctr}d${ld}p$part b $major $minor $disk
944 minor=`math minor + 1`
945 done
946 done
947 done
948 ;;
949 rom)
950 major=`Major rom 31`
951 for i in 0 1 2 3 4 5 6 7
952 do
953 makedev rom$i b $major $i $disk
954 makedev rrom$i b $major `math $i +8` $disk
955 makedev flash$i b $major `math $i +16` $disk
956 makedev rflash$i b $major `math $i +24` $disk
957 done
958 ;;
959 nb)
960 major=`Major nbd 43` || continue
961 minor=0
962 while [ $minor -lt 128 ] ; do
963 makedev nb$minor b $major $minor $disk
964 minor=`math $minor + 1`
965 done
966 ;;
967 loop)
968 major=`Major loop` || continue
969 for part in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
970 do
971 makedev loop$part b $major $part $disk
972 done
973 ;;
974 md)
975 major=`Major md` || continue
976 for part in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
977 do
978 makedev md$part b $major $part $disk
979 done
980 ;;
981 st[0-7])
982 major=`Major st 9`
983 unit=`suffix $arg st`
984 makedev st${unit} c $major $unit $tape
985 makedev nst${unit} c $major `math 128 + $unit` $tape
986
987 makedev st${unit}l c $major `math 32 + $unit` $tape
988 makedev nst${unit}l c $major `math 160 + $unit` $tape
989
990 makedev st${unit}m c $major `math 64 + $unit` $tape
991 makedev nst${unit}m c $major `math 192 + $unit` $tape
992
993 makedev st${unit}a c $major `math 96 + $unit` $tape
994 makedev nst${unit}a c $major `math 224 + $unit` $tape
995 ;;
996 qic)
997 major=`Major tpqic02 12`
998 makedev ntpqic11 c $major 2 $tape
999 makedev tpqic11 c $major 3 $tape
1000 makedev ntpqic24 c $major 4 $tape
1001 makedev tpqic24 c $major 5 $tape
1002 makedev ntpqic120 c $major 6 $tape
1003 makedev tpqic120 c $major 7 $tape
1004 makedev ntpqic150 c $major 8 $tape
1005 makedev tpqic150 c $major 9 $tape
1006 makedev rmt8 c $major 6 $tape
1007 makedev rmt16 c $major 8 $tape
1008 makedev tape-d c $major 136 $tape
1009 makedev tape-reset c $major 255 $tape
1010 major=`Major qft 27`
1011 for i in 0 1 2 3
1012 do
1013 makedev qft$i c $major $i $tape
1014 makedev nqft$i c $major `math $i + 4` $tape
1015 makedev zqft$i c $major `math $i + 16` $tape
1016 makedev nzqft$i c $major `math $i + 20` $tape
1017 makedev rawqft$i c $major `math $i + 32` $tape
1018 makedev nrawqft$i c $major `math $i + 36` $tape
1019 done
1020 ;;
1021 ftape)
1022 major=`Major mt 27` || continue
1023 for unit in 0 1 2 3
1024 do
1025 makedev rft$unit c $major $unit $tape
1026 makedev nrft$unit c $major `math $unit + 4` $tape
1027 done
1028 symlink ftape rft0
1029 symlink nftape nrft0
1030 ;;
1031 scd|scd-all)
1032 major=`Major sr 11` || continue
1033 for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1034 do
1035 makedev scd$unit b $major $unit $cdrom
1036 done
1037 ;;
1038 cfs0)
1039 makedev cfs0 c 67 0 $coda
1040 ;;
1041 scd[0-9]|scd[0-1][0-9])
1042 major=`Major sr 11` || continue
1043 unit=`suffix $arg scd`
1044 makedev scd$unit b $major $unit $cdrom
1045 ;;
1046 ttyI[0-9]|ttyI[1-5][0-9]|ttyI[6][0-3])
1047 major=43
1048 unit=`suffix $arg ttyI`
1049 makedev ttyI$unit c $major $unit $dialout
1050 ;;
1051 ippp[0-9]|ippp[1-5][0-9]|ippp[6][0-3])
1052 major=45
1053 unit=`suffix $arg ippp`
1054 minor=`math $unit + 128`
1055 makedev ippp$unit c $major $minor $dialout
1056 ;;
1057 isdn[0-9]|isdn[1-5][0-9]|isdn[6][0-3])
1058 major=45
1059 unit=`suffix $arg isdn`
1060 minor=`math $unit + 0`
1061 makedev isdn$unit c $major $minor $dialout
1062 ;;
1063 isdnctrl[0-9]|isdnctrl[1-5][0-9]|isdnctrl[6][0-3])
1064 major=45
1065 unit=`suffix $arg isdnctrl`
1066 minor=`math $unit + 64`
1067 makedev isdnctrl$unit c $major $minor $dialout
1068 ;;
1069 isdninfo)
1070 makedev isdninfo c 45 255 $dialout
1071 ;;
1072 isdn-tty)
1073 major=43
1074 for unit in 0 1 2 3 4 5 6 7
1075 do
1076 makedev ttyI$unit c $major $unit $dialout
1077 done
1078 ;;
1079 isdn-ippp)
1080 major=45
1081 for unit in 0 1 2 3 4 5 6 7
1082 do
1083 makedev ippp$unit c $major `math $unit + 128` $dialout
1084 done
1085 ;;
1086 isdn-io)
1087 for unit in 0 1 2 3 4 5 6 7
1088 do
1089 makedev isdn$unit c 45 $unit $dialout
1090 makedev isdnctrl$unit c 45 `math $unit + 64` $dialout
1091 makedev ippp$unit c 45 `math $unit + 128` $dialout
1092 done
1093 makedev isdninfo c 45 255 $dialout
1094 ;;
1095 sonycd)
1096 major=`Major cdu31a` || continue
1097 makedev $arg b $major 0 $cdrom
1098 ;;
1099 mcd)
1100 major=`Major mcd 23` || continue
1101 makedev $arg b $major 0 $cdrom
1102 ;;
1103 mcdx)
1104 major=`Major mcdx 20` || continue
1105 makedev $arg b $major 0 $cdrom
1106 ;;
1107 cdu535)
1108 makedev $arg b 24 0 $cdrom
1109 ;;
1110 lmscd)
1111 makedev $arg b 24 0 $cdrom
1112 ;;
1113 sbpcd|sbpcd[123])
1114 major=`Major $arg` || continue
1115 base=`suffix ${arg}0 sbpcd`
1116 # base=`expr ${arg}0 : "sbpcd\(.\)"`
1117 for minor in 0 1 2 3
1118 do
1119 # XXX
1120 unit=`expr substr 0123456789abcdef \( $base \* 4 + $minor + 1 \) 1`
1121 makedev sbpcd$unit b $major $minor $cdrom
1122 done
1123 [ $arg = sbpcd ] && symlink $arg ${arg}0
1124 ;;
1125 aztcd)
1126 major=`Major $arg` || continue
1127 makedev ${arg}0 b $major 0 $cdrom
1128 ;;
1129 bpcd)
1130 makedev $arg b 41 0 $cdrom
1131 ;;
1132 optcd)
1133 makedev $arg b 17 0 $cdrom
1134 ;;
1135 sjcd)
1136 makedev $arg b 18 0 $cdrom
1137 ;;
1138 cfs|coda)
1139 makedev cfs0 c 67 0 $private
1140 ;;
1141 xfs|arla)
1142 makedev xfs0 c 103 0 $private
1143 ;;
1144 logiscan)
1145 major=`Major logiscan` || continue
1146 makedev $arg c $major 0 $scanner
1147 ;;
1148 m105scan)
1149 major=`Major m105` || continue
1150 makedev $arg c $major 0 $scanner
1151 ;;
1152 ac4096)
1153 major=`Major ac4096` || continue
1154 makedev $arg c $major 0 $scanner
1155 ;;
1156 audio)
1157 major=`Major sound 14`
1158 makedev mixer c $major 0 $audio
1159 makedev sequencer c $major 1 $audio
1160 makedev midi00 c $major 2 $audio
1161 makedev dsp c $major 3 $audio
1162 makedev audio c $major 4 $audio
1163 makedev sndstat c $major 6 $audio
1164 makedev sequencer2 c $major 8 $audio
1165 makedev mixer1 c $major 16 $audio
1166 makedev patmgr0 c $major 17 $audio
1167 makedev midi01 c $major 18 $audio
1168 makedev dsp1 c $major 19 $audio
1169 makedev audio1 c $major 20 $audio
1170 makedev patmgr1 c $major 33 $audio
1171 makedev midi02 c $major 34 $audio
1172 makedev midi03 c $major 50 $audio
1173 major=31
1174 makedev mpu401data c $major 0 $audio
1175 makedev mpu401stat c $major 1 $audio
1176 major=35
1177 for i in 0 1 2 3
1178 do
1179 makedev midi$i c $major $i $audio
1180 makedev rmidi$i c $major `math $i + 64` $audio
1181 makedev smpte$i c $major `math $i + 128` $audio
1182 done
1183 ;;
1184 pcaudio)
1185 major=`Major pcsp` || continue
1186 makedev pcmixer c $major 0 $audio
1187 makedev pcsp c $major 3 $audio
1188 makedev pcaudio c $major 4 $audio
1189 ;;
1190 video|video4linux|v4l|radio)
1191 # video4linux api includes radio, teletext, etc.
1192 major=`Major video 81` || continue
1193 minor=0
1194 until [ $minor -gt 63 ]
1195 do
1196 makedev video$minor c $major $minor $video
1197 makedev radio$minor c $major `math $minor + 64` $video
1198 minor=`math $minor + 1`
1199 done
1200 minor=0
1201 until [ $minor -gt 31 ]
1202 do
1203 makedev vtx$minor c $major `math $minor + 192` $video
1204 makedev vbi$minor c $major `math $minor + 224` $video
1205 minor=`math $minor + 1`
1206 done
1207 symlink video video0
1208 major=82
1209 minor=0
1210 until [ $minor -gt 1 ]
1211 do
1212 makedev winradio$minor c $major $minor $video
1213 minor=`math $minor + 1`
1214 done
1215 major=83
1216 makedev vtx c $major 0 $video
1217 makedev vttuner c $major 16 $video
1218 ;;
1219 i2c)
1220 major=`Major i2c 89` || continue
1221 minor=0
1222 until [ $minor -gt 1 ]; do
1223 makedev i2c-$minor c $major $minor $private
1224 minor=`math $minor + 1`
1225 done
1226 ;;
1227 tlk)
1228 major=102
1229 minor=0
1230 until [ $minor -gt 3 ] # tell me if 3 is wrong...
1231 do
1232 makedev tlk$minor c $major $minor $video
1233 minor=`math $minor + 1`
1234 done
1235 ;;
1236 srnd)
1237 makedev srnd0 c 110 0 $video
1238 makedev srnd1 c 110 1 $video
1239 ;;
1240 fgrab)
1241 makedev mmetfgrab c 40 0 $video
1242 makedev wvisfgrab c 26 0 $video
1243 for i in 0 1 # more?
1244 do
1245 makedev iscc$i c 93 $i $video
1246 makedev isccctl$i c 93 `math $i + 128` $video
1247 done
1248 for i in 0 1 # more?
1249 do
1250 makedev dcxx$i c 94 $i $video
1251 done
1252 ;;
1253 sg|sg-all)
1254 major=`Major sg 21`
1255 for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1256 do
1257 makedev sg$unit c $major $unit $scsi
1258 done
1259 ;;
1260 sg[0-9]|sg[0-1][0-9])
1261 major=`Major sg 11` || continue
1262 unit=`suffix $arg sg`
1263 makedev sg$unit c $major $unit $cdrom
1264 ;;
1265 pg)
1266 major=`Major pg 97`
1267 for unit in 0 1 2 3
1268 do
1269 makedev pg$unit c $major $unit $scsi
1270 done
1271 ;;
1272 ibcs2)
1273 major=`Major ibcs2` || continue
1274 makedev socksys c $major 0 $ibcs2
1275 symlink nfsd socksys
1276 makedev spx c $major 1 $ibcs2
1277 symlink X0R null
1278 ;;
1279 enskip)
1280 major=64
1281 makedev enskip c $major 0 $private
1282 ;;
1283 ipfilt*)
1284 major=95
1285 makedev ipl c $major 0 $private
1286 makedev ipnat c $major 1 $private
1287 makedev ipstate c $major 2 $private
1288 makedev ipauth c $major 3 $private
1289 ;;
1290 qng)
1291 makedev qng c 77 0 $private
1292 ;;
1293 apm)
1294 makedev apm_bios c 10 134 $system
1295 ;;
1296 dcf)
1297 major=`Major dcf` || continue
1298 makedev $arg c $major 0 $system
1299 ;;
1300 helloworld)
1301 major=`Major hw` || continue
1302 makedev helloworld c $major 0 $public
1303 ;;
1304 ipsec)
1305 # For the Free S/WAN (http://www.xs4all.nl/~freeswan/)
1306 # implementation of IPSEC
1307 makedev ipsec c 36 10 $ipsec
1308 ;;
1309 ppp)
1310 makedev ppp c 108 0 $dialout
1311 ;;
1312 *)
1313 echo "$0: don't know how to make device \"$arg\"" >&2
1314 exit 1
1315 ;;
1316 esac
1317 done
1318
1319 exit 0