- Purely cosmetic type fiddling
[oweals/busybox.git] / docs / mdev.txt
1 -------------
2  MDEV Primer
3 -------------
4
5 For those of us who know how to use mdev, a primer might seem lame.  For
6 everyone else, mdev is a weird black box that they hear is awesome, but can't
7 seem to get their head around how it works.  Thus, a primer.
8
9 -----------
10  Basic Use
11 -----------
12
13 Mdev has two primary uses: initial population and dynamic updates.  Both
14 require sysfs support in the kernel and have it mounted at /sys.  For dynamic
15 updates, you also need to have hotplugging enabled in your kernel.
16
17 Here's a typical code snippet from the init script:
18 [1] mount -t sysfs sysfs /sys
19 [2] echo /bin/mdev > /proc/sys/kernel/hotplug
20 [3] mdev -s
21
22 Of course, a more "full" setup would entail executing this before the previous
23 code snippet:
24 [4] mount -t tmpfs mdev /dev
25 [5] mkdir /dev/pts
26 [6] mount -t devpts devpts /dev/pts
27
28 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 whenever
30 a device is added or removed so that the device node can be created or
31 destroyed.  Then you [3] seed /dev with all the device nodes that were created
32 while the system was booting.
33
34 For the "full" setup, you want to [4] make sure /dev is a tmpfs filesystem
35 (assuming you're running out of flash).  Then you want to [5] create the
36 /dev/pts mount point and finally [6] mount the devpts filesystem on it.
37
38 -------------
39  MDEV Config   (/etc/mdev.conf)
40 -------------
41
42 Mdev has an optional config file for controlling ownership/permissions of
43 device nodes if your system needs something more than the default root/root
44 660 permissions.
45
46 The file has the format:
47         <device regex> <uid>:<gid> <octal permissions>
48 For example:
49         hd[a-z][0-9]* 0:3 660
50
51 The config file parsing stops at the first matching line.  If no line is
52 matched, then the default of 0:0 660 is used.  To set your own default, simply
53 create your own total match like so:
54         .* 1:1 777
55
56 If you also enable support for executing your own commands, then the file has
57 the format:
58         <device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]
59 The special characters have the meaning:
60         @ Run after creating the device.
61         $ Run before removing the device.
62         * Run both after creating and before removing the device.
63
64 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.
66
67 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".