Buildroot 没有 运行 作为 root 并且不想 运行 作为 root

Buildroot doesn’t run as root and doesn’t want to run as root

我有两个问题:

为什么 buildroot 需要成为 root 才能创建 /dev

参考:http://free-electrons.com/~thomas/buildroot/manual/html/ch03.html

I am not sure to undrestand(from the directories description in Buildroot manual):

Buildroot 是一种用于生成内核和根文件系统的工具,它作为普通用户在您的主机系统上执行,无需超级用户权限。


Why buildroot need to be root to create the /dev

Buildroot 不使用超级用户权限。


what i know is that buildroot uses target to generate images/rootfs.tar; is it a simple compression with taror ...?

.tar是没有压缩的普通压缩包。
您可以使用 make menuconfig 过程 configure/specify 压缩(and/or select 文件系统映像)。


could you please help me find the make target that generate images/rootfs.tar?

您没有在 make shell 命令中指定它。
您可以使用 make menuconfig 过程 configure/specify tar and/or 带有可选压缩的 cpio 存档(and/or select 文件系统映像)。


In case of using NFS why can't we use directly the target folder as rootfs

因为不适合做屋顶
文件所有者和组不正确(这可能与 NFS 使用无关)。
文件权限可能不正确(例如 busybox 二进制文件的 setuid)。
/dev 目录没有 target 内核所需的最小设备节点。

取而代之的是所需的最小设备节点(例如console),target目录在dev[中有普通的文件 =56=]:

buildroot-2015.05/output/target$ ls -l dev
total 4
-rw--w--w- 1 me swdev    0 Sep 15 16:34 console
lrwxrwxrwx 1 me swdev   10 Aug 14  2015 log -> ../tmp/log
drwxrwxr-x 2 me swdev 4096 May 31  2015 pts
$

target 内核在需要设备节点时无法使用这些文件。将尝试使用这些文件进行普通文件传输,而不是通过设备节点执行 I/O。

实际的 dev 目录应该是:

crw--w--w- 1 root root 5, 1 Sep 15 16:34 console
lrwxrwxrwx 1 root root   10 Aug 14  2015 log -> ../tmp/log
drwxr-xr-x 2 root root 4096 May 31  2015 pts

what makes "untaring" images/rootfs.tar different than target

Buildroot 可以巧妙地为设备节点创建条目,并在创建存档(或文件系统映像)时为每个文件名分配适当的所有者和组。
这只是以适当的格式生成二进制数据,这些数据与写入文件的实际存档条目(或 fs 图像)一起插入。
只有当它是 un-archived(或文件系统映像已挂载)时,"data" 才被正确解释为设备节点。