[Buildroot] Device files and Buildroot

Aleksander Dutkowski adutkowski at gmail.com
Mon Dec 5 10:54:25 UTC 2011


I've read your message, and I now know, what was the problem in my
case - I'am using kernel 2.6.30 with udev and it doesn't have
devtmpfs, so it is not creating dev/null and /dev/console. Thanks!

Best Regards,
Aleksander

On Sat, Dec 3, 2011 at 9:25 AM, Thomas Petazzoni
<thomas.petazzoni at free-electrons.com> wrote:
> Le Sat, 3 Dec 2011 01:25:41 +0100,
> Aleksander Dutkowski <adutkowski at gmail.com> a écrit :
>
>> "System configuration --> Custom script to run before creating
>> filesystem image" input is for specify a PATH to bash script.
>> You you must simply create script, fill with mknod commands (remember
>> - mknod can be ran only by root! so do 'sudo mknod')
>
> No, no, no and no ! I'm sorry but this is totally horrible and is
> definitely not the way of doing things with Buildroot.
>
> With Buildroot, you have four ways of managing the device files
> in /dev. The mechanism used to manage device files is configured from
> System configuration -> /dev management. The four ways are :
>
>  * Static using device table. In this case the "System configuration ->
>   Path to the device tables" option gives a space-separated list of
>   files, each of which containing a list of devices to create at build
>   time in the root filesystem. By default, this list is defined to
>   just the target/generic/device_table_dev.txt, which creates some
>   basic device files. Those device files are created at *build* time
>   and are statically present in the root filesystem image generated by
>   Buildroot. All basic devices such as /dev/console, /dev/null and al.
>   are already present in the default device table. If you are in this
>   mode and want to add more device files, then you should add them to
>   target/generic/device_table_dev.txt, or better, create your own
>   additional device table in
>   board/<yourcompany>/<yourproject>/device_table.txt, and add it to
>   the space-separated list in "System configuration -> Path to the
>   device tables".
>
>  * Dynamic using devtmpfs only. Devtmpfs is a virtual filesystem
>   implemented in the Linux kernel that can be mounted in /dev. The
>   kernel will automatically create/remove device files from this
>   filesystem as devices appear/disappear from the system. devtmpfs
>   exists in the Linux kernel since 2.6.32. When this option is
>   selected *and* Buildroot is responsible for building the kernel,
>   then Buildroot ensures that the kernel is built with the appropriate
>   options to make devtmpfs work. When Buildroot is *not* responsible
>   for building the kernel (the user does it on its own), then the user
>   is responsible for making sure that CONFIG_DEVTMPFS and
>   CONFIG_DEVTMPFS_MOUNT are both enabled in the kernel configuration.
>   When this mode is used, no static device files are created in the
>   root filesystem: the device files are automatically created at boot
>   time by the kernel.
>
>  * Dynamic using mdev. This is exactly like with 'devtmpfs' (i.e,
>   devtmpfs is required for this mode to work), but Buildroot adds the
>   mdev utility into the mix. mdev is an utility bundled with Busybox
>   which gets executed when the kernel notifies that a device has been
>   added or removed from the system. Compared to a pure 'devtmpfs'
>   solution, it allows to execute arbitrary applications or shell
>   scripts when devices appear/disappear. mdev behaviour can be
>   configured from /etc/mdev.conf, refer to the Busybox documentation
>   for more details. Since this case relies on devtmpfs, there are no
>   static device files created in the root filesystem, and no device
>   table is used.
>
>  * Dynamic using udev. This is also exactly like with 'devtmpfs' (i.e,
>   devtmpfs is required for this mode to work), but Buildroot adds the
>   udev daemon into the mix. udev is the "device event manager" used in
>   all Linux desktop and server systems and can be seen as a
>   "full-featured" mdev. It is more configurable, provides a library
>   called libudev to allow applications to query for which devices are
>   available, etc.
>
> So, no, do *NOT* ever use the post-build script to create device files.
> Just understand how those device files work and the different mode
> Buildroot provides to handle them.
>
> If you need precisions or have questions on this topic, don't hesitate
> to ask. We have many people on the list ready to answer your questions.
>
> Best regards,
>
> Thomas
> --
> Thomas Petazzoni, Free Electrons
> Kernel, drivers, real-time and embedded Linux
> development, consulting, training and support.
> http://free-electrons.com
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot



More information about the buildroot mailing list