0

我有两个问题:

  • 我不确定是否理解(来自 Buildroot 手册中的目录描述):

    target/ 几乎包含目标的完整根文件系统:除了 /dev/ 中的设备文件外,所需的一切都存在(Buildroot 不以 root 身份运行,也不想以 root 身份运行)

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

  • 我所知道的是 buildroot 用于target生成images/rootfs.tar;是用taror ... 进行简单压缩吗?你能帮我找到生成的make目标images/rootfs.tar吗?在使用 NFS 的情况下,为什么我们不能直接将target文件夹用作 rootfs 是什么使“去皮”images/rootfs.tar不同于target

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

4

1 回答 1

0

我不确定是否理解(来自 Buildroot 手册中的目录描述):

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


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

Buildroot 不使用超级用户权限。


我所知道的是 buildroot 使用 target 来生成图像/rootfs.tar;是用 taror 进行简单的压缩吗...?

.tar 是没有压缩的普通存档。
您可以使用该过程配置/指定压缩(和/或选择文件系统映像)make menuconfig


你能帮我找到生成图像/rootfs.tar的make目标吗?

您没有在make shell 命令中指定它。
您可以使用该过程配置/指定带有可选压缩(和/或选择文件系统映像)的 tar 和/或 cpio 存档make menuconfig


如果使用 NFS 为什么我们不能直接使用目标文件夹作为 rootfs

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

目标目录不是所需的最小设备节点(例如),而是在devconsole中包含普通文件

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。

实际的开发目录应该是:

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

是什么让“untaring”图像/rootfs.tar 与目标不同

Buildroot 可以巧妙地为设备节点创建条目,并在创建存档(或文件系统映像)时为每个文件名分配适当的所有者和组。
这只是以适当的格式生成二进制数据,并插入写入文件的实际存档条目(或 fs 映像)。
仅当未归档(或安装文件系统映像)时,“数据”才被正确解释为设备节点。

于 2017-02-13T03:12:07.430 回答