Chapter 11. Appendix

11.1. 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 line for each file, with the following layout:

name

type

mode

uid

gid

major

minor

start

inc

count

There are a few non-trivial blocks here:

  • 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
    • c: a character device file
    • b: a block device file
    • p: a named pipe
  • mode, uid and gid are the usual permissions settings
  • 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       -       -       -       -       -

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

11.2. Makeuser syntax documentation

The syntax to create users is inspired by the makedev syntax, above, but is specific to Buildroot.

The syntax for adding a user is a space-separated list of fields, one user per line; the fields are:

username

uid

group

gid

password

home

shell

groups

comment

Where:

  • username is the desired user name (aka login name) for the user. It can not be root, and must be unique.
  • uid is the desired UID for the user. It must be unique, and not 0. If set to -1, then a unique UID will be computed by Buildroot in the range [1000…1999]
  • group is the desired name for the user’s main group. It can not be root. If the group does not exist, it will be created.
  • gid is the desired GID for the user’s main group. It must be unique, and not 0. If set to -1, and the group does not already exist, then a unique GID will be computed by Buildroot in the range [1000..1999]
  • password is the crypt(3)-encoded password. If prefixed with !, then login is disabled. If prefixed with =, then it is interpreted as clear-text, and will be crypt-encoded (using MD5). If prefixed with !=, then the password will be crypt-encoded (using MD5) and login will be disabled. If set to *, then login is not allowed.
  • home is the desired home directory for the user. If set to -, no home directory will be created, and the user’s home will be /. Explicitly setting home to / is not allowed.
  • shell is the desired shell for the user. If set to -, then /bin/false is set as the user’s shell.
  • groups is the comma-separated list of additional groups the user should be part of. If set to -, then the user will be a member of no additional group. Missing groups will be created with an arbitrary gid.
  • comment (aka GECOS field) is an almost-free-form text.

There are a few restrictions on the content of each field:

  • except for comment, all fields are mandatory.
  • except for comment, fields may not contain spaces.
  • no field may contain a colon (:).

If home is not -, then the home directory, and all files below, will belong to the user and its main group.

Examples:

foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user

This will create this user:

  • username (aka login name) is: foo
  • uid is computed by Buildroot
  • main group is: bar
  • main group gid is computed by Buildroot
  • clear-text password is: blabla, will be crypt(3)-encoded, and login is disabled.
  • home is: /home/foo
  • shell is: /bin/sh
  • foo is also a member of groups: alpha and bravo
  • comment is: Foo user
test 8000 wheel -1 = - /bin/sh - Test user

This will create this user:

  • username (aka login name) is: test
  • uid is : 8000
  • main group is: wheel
  • main group gid is computed by Buildroot, and will use the value defined in the rootfs skeleton
  • password is empty (aka no password).
  • home is / but will not belong to test
  • shell is: /bin/sh
  • test is not a member of any additional groups
  • comment is: Test user

11.3. Package Selection for the target

11.4. Host utilities

The following packages are all available in the menu Host utilities.

11.5. Deprecated features

The following features are marked as deprecated in Buildroot due to their status either too old or unmaintained.