mirror of
https://github.com/sheumann/hush.git
synced 2024-12-26 10:32:02 +00:00
create a document for mdev so people dont have to rtfs
This commit is contained in:
parent
b5368bf437
commit
ae30210d90
68
docs/mdev.txt
Normal file
68
docs/mdev.txt
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
-------------
|
||||||
|
MDEV Primer
|
||||||
|
-------------
|
||||||
|
|
||||||
|
For those of us who know how to use mdev, a primer might seem lame. For
|
||||||
|
everyone else, mdev is a weird black box that they hear is awesome, but can't
|
||||||
|
seem to get their head around how it works. Thus, a primer.
|
||||||
|
|
||||||
|
-----------
|
||||||
|
Basic Use
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Mdev has two primary uses: initial population and dynamic updates. Both
|
||||||
|
require sysfs support in the kernel and have it mounted at /sys. For dynamic
|
||||||
|
updates, you also need to have hotplugging enabled in your kernel.
|
||||||
|
|
||||||
|
Here's a typical code snippet from the init script:
|
||||||
|
[1] mount -t sysfs sysfs /sys
|
||||||
|
[2] echo /bin/mdev > /proc/sys/kernel/hotplug
|
||||||
|
[3] mdev -s
|
||||||
|
|
||||||
|
Of course, a more "full" setup would entail executing this before the previous
|
||||||
|
code snippet:
|
||||||
|
[4] mount -t tmpfs mdev /dev
|
||||||
|
[5] mkdir /dev/pts
|
||||||
|
[6] mount -t devpts devpts /dev/pts
|
||||||
|
|
||||||
|
The simple explanation here is that [1] you need to have /sys mounted before
|
||||||
|
executing mdev. Then you [2] instruct the kernel to execute /bin/mdev whenever
|
||||||
|
a device is added or removed so that the device node can be created or
|
||||||
|
destroyed. Then you [3] seed /dev with all the device nodes that were created
|
||||||
|
while the system was booting.
|
||||||
|
|
||||||
|
For the "full" setup, you want to [4] make sure /dev is a tmpfs filesystem
|
||||||
|
(assuming you're running out of flash). Then you want to [5] create the
|
||||||
|
/dev/pts mount point and finally [6] mount the devpts filesystem on it.
|
||||||
|
|
||||||
|
-------------
|
||||||
|
MDEV Config (/etc/mdev.conf)
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Mdev has an optional config file for controlling ownership/permissions of
|
||||||
|
device nodes if your system needs something more than the default root/root
|
||||||
|
660 permissions.
|
||||||
|
|
||||||
|
The file has the format:
|
||||||
|
<device regex> <uid>:<gid> <octal permissions>
|
||||||
|
For example:
|
||||||
|
hd[a-z][0-9]* 0:3 660
|
||||||
|
|
||||||
|
The config file parsing stops at the first matching line. If no line is
|
||||||
|
matched, then the default of 0:0 660 is used. To set your own default, simply
|
||||||
|
create your own total match like so:
|
||||||
|
.* 1:1 777
|
||||||
|
|
||||||
|
If you also enable support for executing your own commands, then the file has
|
||||||
|
the format:
|
||||||
|
<device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]
|
||||||
|
The special characters have the meaning:
|
||||||
|
@ Run after creating the device.
|
||||||
|
$ Run before removing the device.
|
||||||
|
* Run both after creating and before removing the device.
|
||||||
|
|
||||||
|
The command is executed via the system() function (which means you're giving a
|
||||||
|
command to the shell), so make sure you have a shell installed at /bin/sh.
|
||||||
|
|
||||||
|
For your convenience, the shell env var $MDEV is set to the device name. So if
|
||||||
|
the device 'hdc' was matched, MDEV would be set to "hdc".
|
@ -269,46 +269,30 @@ config MDEV
|
|||||||
bool "mdev"
|
bool "mdev"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
mdev is a mini-udev implementation: call it with -s to populate
|
mdev is a mini-udev implementation for dynamically creating device
|
||||||
/dev from /sys, then "echo /sbin/mdev > /proc/sys/kernel/hotplug" to
|
nodes in the /dev directory.
|
||||||
have it handle hotplug events afterwards. Device names are taken
|
|
||||||
from sysfs.
|
For more information, please see docs/mdev.txt
|
||||||
|
|
||||||
config FEATURE_MDEV_CONF
|
config FEATURE_MDEV_CONF
|
||||||
bool "Support /etc/mdev.conf"
|
bool "Support /etc/mdev.conf"
|
||||||
default n
|
default n
|
||||||
depends on MDEV
|
depends on MDEV
|
||||||
help
|
help
|
||||||
The mdev config file contains lines that look like:
|
Add support for the mdev config file to control ownership and
|
||||||
|
permissions of the device nodes.
|
||||||
|
|
||||||
hd[a-z][0-9]* 0:3 660
|
For more information, please see docs/mdev.txt
|
||||||
|
|
||||||
That's device name (with regex match), uid:gid, and permissions.
|
|
||||||
|
|
||||||
Config file parsing stops on the first matching line. If no config
|
|
||||||
entry is matched, devices are created with default 0:0 660. (Make
|
|
||||||
the last line match .* to override this.)
|
|
||||||
|
|
||||||
config FEATURE_MDEV_EXEC
|
config FEATURE_MDEV_EXEC
|
||||||
bool "Support command execution at device addition/removal"
|
bool "Support command execution at device addition/removal"
|
||||||
default n
|
default n
|
||||||
depends on FEATURE_MDEV_CONF
|
depends on FEATURE_MDEV_CONF
|
||||||
help
|
help
|
||||||
This adds support for an optional field to /etc/mdev.conf, consisting
|
This adds support for an optional field to /etc/mdev.conf for
|
||||||
of a special character and a command line to run after creating the
|
executing commands when devices are created/removed.
|
||||||
corresponding device(s) and before removing, ala:
|
|
||||||
|
|
||||||
hdc root:cdrom 660 *ln -s $MDEV cdrom
|
For more information, please see docs/mdev.txt
|
||||||
|
|
||||||
The $MDEV environment variable is set to the name of the device.
|
|
||||||
|
|
||||||
The special characters and their meanings are:
|
|
||||||
@ Run after creating the device.
|
|
||||||
$ Run before removing the device.
|
|
||||||
* Run both after creating and before removing the device.
|
|
||||||
|
|
||||||
Commands are executed via system() so you need /bin/sh, meaning you
|
|
||||||
probably want to select a default shell in the Shells menu.
|
|
||||||
|
|
||||||
config MKSWAP
|
config MKSWAP
|
||||||
bool "mkswap"
|
bool "mkswap"
|
||||||
|
Loading…
Reference in New Issue
Block a user