| When building a target filesystem, it is desirable to not have to |
| become root and then run 'mknod' a thousand times. Using a device |
| table you can create device nodes and directories "on the fly". |
| |
| You can do all sorts of interesting things with a device table file. |
| For example, if you want to adjust the permissions on a particular |
| file you can just add an entry like: |
| |
| /sbin/foobar f 2755 0 0 - - - - - |
| |
| and (assuming the file /sbin/foobar exists) it will be made setuid |
| root (regardless of what its permissions are on the host filesystem. |
| |
| Furthermore, you can use a single table entry to create a many device |
| minors. For example, if I wanted to create /dev/hda and |
| /dev/hda[0-15] I could just use the following two table entries: |
| |
| /dev/hda b 640 0 0 3 0 0 0 - |
| /dev/hda b 640 0 0 3 1 1 1 15 |
| |
| Device table entries take the form of: |
| |
| <name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> |
| |
| where name is the file name, type can be one of: |
| |
| f: A regular file |
| d: Directory |
| c: Character special device file |
| b: Block special device file |
| p: Fifo (named pipe) |
| |
| uid is the user id for the target file, gid is the group id for the |
| target file. The rest of the entries (major, minor, etc) apply only |
| to device special files. |