我有两个问题:
target /其中包含几乎完整的目标根文件系统:除了/ dev /中的设备文件外,所有需要的东西都存在(Buildroot不以root身份运行,不想以root身份运行)
为什么buildroot需要root才能创建/ dev
target
来生成images/rootfs.tar
;它是tar
或......的简单压缩吗?你能帮我找到生成images/rootfs.tar
的制作目标吗?
如果使用NFS,为什么我们不能直接使用target
文件夹作为rootfs使“解除”images/rootfs.tar
与target
参考:http://free-electrons.com/~thomas/buildroot/manual/html/ch03.html
答案 0 :(得分:0)
我不确定undrestand(来自Buildroot手册中的目录说明):
Buildroot是一个用于生成内核和根文件系统的工具,它作为普通用户在主机系统上执行,无需超级用户权限。
为什么buildroot需要root才能创建/ dev
Buildroot不使用超级用户权限。
我所知道的是buildroot使用target来生成images / rootfs.tar;这是一个简单的压缩与taror ...?
.tar是一个没有压缩的普通档案
您可以使用make menuconfig
过程配置/指定压缩(和/或选择文件系统映像)。
你能帮我找到生成images / rootfs.tar的make目标吗?
您未在 make shell命令中指定此内容
您可以使用make menuconfig
过程使用可选压缩(和/或选择文件系统映像)配置/指定tar和/或cpio存档。
如果使用NFS,为什么我们不能直接使用目标文件夹作为rootfs
因为它不适合作为屋顶 文件所有者&组不正确(这可能与NFS使用无关) 文件权限可能不正确(例如 busybox 二进制文件的setuid) / dev目录没有目标内核所需的最小设备节点。
目标目录在 dev 中包含普通的文件,而不是所需的最小设备节点(例如console
):
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
$
目标内核在需要设备节点时无法使用这些文件。不是通过设备节点执行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
是什么让“解开”图像/ rootfs.tar与目标
不同
Buildroot可以巧妙地为设备节点创建条目,并在创建存档(或文件系统映像)时为每个文件名分配正确的所有者和组。
这只是以适当的格式生成二进制数据,该格式插入了写入文件的实际存档条目(或fs图像)。
只有在未归档(或安装文件系统映像)时,“数据”才能正确解释为设备节点。