Buildroot不以root身份运行,也不希望以root身份运行

时间:2017-02-11 11:35:12

标签: linux buildroot rootfs

我有两个问题:

  • 我不确定undrestand(来自Buildroot手册中的目录说明):
      

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

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

  • 我所知道的是,buildroot使用target来生成images/rootfs.tar;它是tar或......的简单压缩吗?你能帮我找到生成images/rootfs.tar的制作目标吗? 如果使用NFS,为什么我们不能直接使用target文件夹作为rootfs使“解除”images/rootfs.tartarget
  • 不同的原因

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

1 个答案:

答案 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图像)。 只有在未归档(或安装文件系统映像)时,“数据”才能正确解释为设备节点。