| // -*- mode:doc; -*- |
| // vim: set syntax=asciidoc: |
| |
| [[makedev-syntax]] |
| == Makedev syntax documentation |
| |
| The makedev syntax is used in several places in Buildroot to |
| define changes to be made for permissions, or which device files to |
| create and how to create them, in order to avoid calls to mknod. |
| |
| This syntax is derived from the makedev utility, and more complete |
| documentation can be found in the +package/makedevs/README+ file. |
| |
| It takes the form of a space separated list of fields, one file per |
| line; the fields are: |
| |
| |=========================================================== |
| |name |type |mode |uid |gid |major |minor |start |inc |count |
| |=========================================================== |
| |
| There are a few non-trivial blocks: |
| |
| - +name+ is the path to the file you want to create/modify |
| - +type+ is the type of the file, being one of: |
| * `f`: a regular file, which must already exist |
| * `F`: a regular file, which is ignored and not created if missing |
| * `d`: a directory, which is created, as well as its parents, if missing |
| * `r`: a directory recursively, which must already exist |
| * `c`: a character device file, which parent directory must exist |
| * `b`: a block device file, which parent directory must exist |
| * `p`: a named pipe, which parent directory must exist |
| - +mode+ are the usual permissions settings (only numerical values |
| are allowed); |
| for type `d`, the mode of existing parents is not changed, but the mode |
| of created parents is set; |
| for types `f`, `F`, and `r`, +mode+ can also be set to +-1+ to not |
| change the mode (and only change uid and gid) |
| - +uid+ and +gid+ are the UID and GID to set on this file; can be |
| either numerical values or actual names |
| - +major+ and +minor+ are here for device files, set to +-+ for other |
| files |
| - +start+, +inc+ and +count+ are for when you want to create a batch |
| of files, and can be reduced to a loop, beginning at +start+, |
| incrementing its counter by +inc+ until it reaches +count+ |
| |
| Let's say you want to change the ownership and permissions of a given |
| file; using this syntax, you will need to write: |
| |
| ---- |
| /usr/bin/foo f 755 0 0 - - - - - |
| /usr/bin/bar f 755 root root - - - - - |
| /data/buz f 644 buz-user buz-group - - - - - |
| /data/baz f -1 baz-user baz-group - - - - - |
| ---- |
| |
| Alternatively, if you want to change owner of a directory recursively, |
| you can write (to set UID to `foo` and GID to `bar` for the directory |
| `/usr/share/myapp` and all files and directories below it): |
| |
| ---- |
| /usr/share/myapp r -1 foo bar - - - - - |
| ---- |
| |
| On the other hand, if you want to create the device file +/dev/hda+ |
| and the corresponding 15 files for the partitions, you will need for |
| +/dev/hda+: |
| |
| ---- |
| /dev/hda b 640 root root 3 0 0 0 - |
| ---- |
| |
| and then for device files corresponding to the partitions of |
| +/dev/hda+, +/dev/hdaX+, +X+ ranging from 1 to 15: |
| |
| ---- |
| /dev/hda b 640 root root 3 1 1 1 15 |
| ---- |
| |
| Extended attributes are supported if |
| +BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES+ is enabled. |
| This is done by adding a line starting with +|xattr+ after |
| the line describing the file. Right now, only capability |
| is supported as extended attribute. |
| |
| |===================== |
| | \|xattr | capability |
| |===================== |
| |
| - +|xattr+ is a "flag" that indicate an extended attribute |
| - +capability+ is a capability to add to the previous file |
| |
| If you want to add the capability cap_sys_admin to the binary foo, |
| you will write : |
| |
| ---- |
| /usr/bin/foo f 755 root root - - - - - |
| |xattr cap_sys_admin+eip |
| ---- |
| |
| You can add several capabilities to a file by using several +|xattr+ lines. |
| If you want to add the capability cap_sys_admin and cap_net_admin to the |
| binary foo, you will write : |
| |
| ---- |
| /usr/bin/foo f 755 root root - - - - - |
| |xattr cap_sys_admin+eip |
| |xattr cap_net_admin+eip |
| ---- |