dc1ba281a5
Because of a limitation in how makedevs resolves names [0], usernames and groupnames would be resolved with UIDs and GIDs from the host, not the target. Fixing makedevs would involve us rewriting a /etc/passwd and /etc/group parser (not too complex, still not trivial). Document that the user and group fields should only be numbers, not names. Also, the manual is currently misleading, as an example indeed uses names for the user and group fields. Fix that and expand the explanations. The mode field should also be numbers, not a rwx combo. Slight typographical eye-candy about major/minor fields. [0] it uses getpwnma(3) and getgrnam(3) to resolve names to IDs, and those only resolve names on the host (i.e. there is no way to specify a chroot-like feature) Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
70 lines
2.1 KiB
Plaintext
70 lines
2.1 KiB
Plaintext
// -*- 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
|
|
* d: a directory
|
|
* r: a directory recursively
|
|
* c: a character device file
|
|
* b: a block device file
|
|
* p: a named pipe
|
|
- +mode+, +uid+ and +gid+ are the usual permissions settings (only
|
|
numerical values are allowed)
|
|
- +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 permissions of a given file; using
|
|
this syntax, you will need to put:
|
|
|
|
----
|
|
/usr/bin/foobar f 644 0 0 - - - - -
|
|
----
|
|
|
|
Alternatively, if you want to change owner/permission of a directory
|
|
recursively, you can put (to set UID to 123, GID to 456 and access
|
|
rights to rwxr-x--- for the directory /usr/share/myapp and all files
|
|
and directories below it):
|
|
|
|
----
|
|
/usr/share/myapp r 750 123 456 - - - - -
|
|
----
|
|
|
|
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 0 0 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 0 0 3 1 1 1 15
|
|
----
|
|
|