Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/docs/mdev.txt
- Timestamp:
- Feb 25, 2011, 9:26:54 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.9/mindi-busybox/docs/mdev.txt
r1765 r2725 16 16 17 17 Here's a typical code snippet from the init script: 18 [0] mount -t proc proc /proc 18 19 [1] mount -t sysfs sysfs /sys 19 [2] echo / bin/mdev > /proc/sys/kernel/hotplug20 [2] echo /sbin/mdev > /proc/sys/kernel/hotplug 20 21 [3] mdev -s 22 23 Alternatively, without procfs the above becomes: 24 [1] mount -t sysfs sysfs /sys 25 [2] sysctl -w kernel.hotplug=/sbin/mdev 26 [3] mdev -s 27 21 28 22 29 Of course, a more "full" setup would entail executing this before the previous 23 30 code snippet: 24 [4] mount -t tmpfs mdev/dev31 [4] mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev 25 32 [5] mkdir /dev/pts 26 33 [6] mount -t devpts devpts /dev/pts 27 34 28 35 The simple explanation here is that [1] you need to have /sys mounted before 29 executing mdev. Then you [2] instruct the kernel to execute / bin/mdev whenever36 executing mdev. Then you [2] instruct the kernel to execute /sbin/mdev whenever 30 37 a device is added or removed so that the device node can be created or 31 38 destroyed. Then you [3] seed /dev with all the device nodes that were created … … 45 52 46 53 The file has the format: 47 <device regex> <uid>:<gid> <octal permissions> 54 <device regex> <uid>:<gid> <permissions> 55 or @<maj[,min1[-min2]]> <uid>:<gid> <permissions> 56 48 57 For example: 49 58 hd[a-z][0-9]* 0:3 660 50 59 51 60 The config file parsing stops at the first matching line. If no line is … … 54 63 .* 1:1 777 55 64 65 You can rename/move device nodes by using the next optional field. 66 <device regex> <uid>:<gid> <permissions> [=path] 67 So if you want to place the device node into a subdirectory, make sure the path 68 has a trailing /. If you want to rename the device node, just place the name. 69 hda 0:3 660 =drives/ 70 This will move "hda" into the drives/ subdirectory. 71 hdb 0:3 660 =cdrom 72 This will rename "hdb" to "cdrom". 73 74 Similarly, ">path" renames/moves the device but it also creates 75 a direct symlink /dev/DEVNAME to the renamed/moved device. 76 77 You can also prevent creation of device nodes with the 4th field as "!": 78 tty[a-z]. 0:0 660 ! 79 pty[a-z]. 0:0 660 ! 80 56 81 If you also enable support for executing your own commands, then the file has 57 82 the format: 58 <device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>] 83 <device regex> <uid>:<gid> <permissions> [=path] [@|$|*<command>] 84 or 85 <device regex> <uid>:<gid> <permissions> [>path] [@|$|*<command>] 86 or 87 <device regex> <uid>:<gid> <permissions> [!] [@|$|*<command>] 88 89 For example: 90 ---8<--- 91 # block devices 92 ([hs]d[a-z]) root:disk 660 >disk/%1/0 93 ([hs]d[a-z])([0-9]+) root:disk 660 >disk/%1/%2 94 mmcblk([0-9]+) root:disk 660 >disk/mmc/%1/0 95 mmcblk([0-9]+)p([0-9]+) root:disk 660 >disk/mmc/%1/%2 96 # network devices 97 (tun|tap) root:network 660 >net/%1 98 ---8<--- 99 59 100 The special characters have the meaning: 60 101 @ Run after creating the device. … … 63 104 64 105 The command is executed via the system() function (which means you're giving a 65 command to the shell), so make sure you have a shell installed at /bin/sh. 106 command to the shell), so make sure you have a shell installed at /bin/sh. You 107 should also keep in mind that the kernel executes hotplug helpers with stdin, 108 stdout, and stderr connected to /dev/null. 66 109 67 110 For your convenience, the shell env var $MDEV is set to the device name. So if 68 the device 'hdc'was matched, MDEV would be set to "hdc".111 the device "hdc" was matched, MDEV would be set to "hdc". 69 112 70 113 ---------- … … 77 120 filename of the firmware which mdev will load out of /lib/firmware/ and into 78 121 the kernel via the sysfs interface. The exact filename is hardcoded in the 79 kernel, so look there if you need to want to know what to name the file in 80 userspace. 122 kernel, so look there if you need to know how to name the file in userspace. 123 124 ------------ 125 SEQUENCING 126 ------------ 127 128 Kernel does not serialize hotplug events. It increments SEQNUM environmental 129 variable for each successive hotplug invocation. Normally, mdev doesn't care. 130 This may reorder hotplug and hot-unplug events, with typical symptoms of 131 device nodes sometimes not created as expected. 132 133 However, if /dev/mdev.seq file is found, mdev will compare its 134 contents with SEQNUM. It will retry up to two seconds, waiting for them 135 to match. If they match exactly (not even trailing '\n' is allowed), 136 or if two seconds pass, mdev runs as usual, then it rewrites /dev/mdev.seq 137 with SEQNUM+1. 138 139 IOW: this will serialize concurrent mdev invocations. 140 141 If you want to activate this feature, execute "echo >/dev/mdev.seq" prior to 142 setting mdev to be the hotplug handler. This writes single '\n' to the file. 143 NB: mdev recognizes /dev/mdev.seq consisting of single '\n' character 144 as a special case. IOW: this will not make your first hotplug event 145 to stall for two seconds.
Note:
See TracChangeset
for help on using the changeset viewer.