Я не уверен, что разберусь (из описания каталогов в руководстве по Buildroot):
Buildroot, инструмент для создания ядра и корневой файловой системы, запускается в вашей хост-системе как обычный пользователь без необходимости привилегий суперпользователя.
Почему buildroot должен быть root для создания /dev
Buildroot не использует привилегии суперпользователя.
что я знаю, так это то, что buildroot использует target для создания изображений/rootfs.tar; это простое сжатие с тарором...?
.tar — это обычный архив без сжатия.
Вы можете настроить/указать сжатие (и/или выбрать образы файловой системы) с помощью процедуры make menuconfig
.
не могли бы вы помочь мне найти цель make, которая генерирует images/rootfs.tar?
Вы не указываете это в команде оболочки make.
Вы можете настроить/указать архивы tar и/или cpio с дополнительным сжатием (и/или выбрать образы файловой системы) с помощью процедуры make menuconfig
.
В случае использования NFS, почему мы не можем напрямую использовать целевую папку как rootfs?
Потому что он не подходит в качестве крыши.
Неправильные владельцы и группы файлов (это может быть неактуально для использования NFS).
Права доступа к файлам могут быть неправильными (например, setuid для busybox). binary).
В каталоге /dev нет минимального количества узлов устройств, которое требуется целевому ядру.
Вместо обязательных узлов минимального устройства (например, console
) в целевом каталоге есть обычные файлы в dev:
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
$
Целевое ядро не может использовать эти файлы, когда оно ожидает узлы устройств. Вместо операций ввода-вывода, выполняемых через узлы устройств, с этими файлами будет предпринята попытка обычной передачи файлов.
Фактический каталог 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
что отличает «распаковку» images/rootfs.tar от target
Buildroot может умело создавать записи для узлов устройств и назначать надлежащего владельца и группу для каждого имени файла при создании архива (или образа файловой системы).
Это просто генерирует двоичные данные в соответствующем формате, которые вставляются с фактическими записями архива. (или в образ fs), записанный в файл.
Только когда он не заархивирован (или смонтирован образ файловой системы), «данные» правильно интерпретируются как для узлов устройств.
person
sawdust
schedule
13.02.2017
make menuconfig
. Вы не указываете это в команде оболочкиmake
. - person sawdust   schedule 12.02.2017target
в качестве rootfs в руководстве по buildroot, сказано, что это потому, что он не содержитdev
, потому что Buildroot не запускается от имени пользователя root, поэтому для его создания требуются привилегии root - person Mouin   schedule 12.02.2017