Понимание простого файла конфигурации для initramfs

Я новичок в файловой системе. Может ли кто-нибудь объяснить мне, что происходит в следующем?

# This is a very simple, default initramfs dir /dev 0755 0 0 nod /dev/console 0600 0 0 c 5 1 nod /dev/tty 0666 0 0 c 5 0 nod /dev/null 0600 0 0 c 1 3 nod /dev/mem 0600 0 0 c 1 1 nod /dev/kmem 0600 0 0 c 1 2 nod /dev/zero 0600 0 0 c 1 5 nod /dev/random 0600 0 0 c 1 8 nod /dev/urandom 0600 0 0 c 1 9 dir /dev/pts 0755 0 0 nod /dev/ptmx 0666 0 0 c 5 2 nod /dev/ttyS0 0666 0 0 c 4 64 nod /dev/ttyS1 0666 0 0 c 4 65 nod /dev/ttyS2 0666 0 0 c 4 66 dir /bin 755 0 0 dir /proc 755 0 0 file /bin/hello ${INSTALL_ROOT}/projects/${SAMPLE}/hello/hello 755 0 0 slink /bin/init hello 777 0 0 

Чего мы на самом деле пытаемся достичь здесь?

Это похоже на это

Как правило, мне ясно, что мы пытаемся запустить (привет) из init (последняя строка в коде). Но мне нужно немного больше объяснений.

2 Solutions collect form web for “Понимание простого файла конфигурации для initramfs”

Этот файл является входным файлом для программы gen_init_cpio в исходном дереве ядра.

Он создает архив cpio, который подходит для initramfs с файлами / dirs / devices (= nodes) / …, указанными во входном файле.

Синтаксис

 file <name> <location> <mode> <uid> <gid> [<hard links>] dir <name> <mode> <uid> <gid>\n nod <name> <mode> <uid> <gid> <dev_type> <maj> <min> slink <name> <target> <mode> <uid> <gid> 

и т.п.

Какие программы фактически запускаются при загрузке, зависит от программы init в initramfs. Здесь программа init является символьной ссылкой на hello .

@jofel уже ответил на то, что вопрос с замечательной точностью – однако, что он должен достичь, это передача из ядра в пространство пользователей. Когда ядро ​​загружается, все системы работают, тогда он ищет init. Без init загрузка вашей системы никогда не сойдет с земли – вы никогда не сможете взаимодействовать с машиной.

Несколько лет назад разработчики ядра решили, что устали от поддержки 1001 и различных возможных конфигураций для корневых устройств – это просто стало слишком сложным для обработки загрузки компьютера из-за большого количества возможных корневых файловых систем и комбинаций типов корневых устройств. Поэтому они перестали пытаться.

Initramfs встроен в каждое ядро ​​Linux начиная с версии 2.6. В каждом случае с этого момента начинается пользовательское пространство – ядро ​​передает управление компьютерной системой init , сидит обратно, чтобы посмотреть фейерверк и моет руки всему делу.

Дерево каталогов, описанное в файле в вашем вопросе, представляет собой корневой каталог Linux, который скомпилирован в самом ядре. Это единственное корневое устройство, которое ядро ​​будет искать; все остальное зависит от init.

  • Восстановить образ файловой системы из vmlinux.bin (встроенные initramfs) без перестройки?
  • Как запустить ADB в initramfs?
  • update-initramfs выбирает неправильное ядро
  • Разница между initramfs.cpio и rootfs.cpio
  • Разница в выполнении init со встроенными или внешними initramfs?
  • Kali GNU / Linux Rolling 64-bit - проблема с установкой беспроводной сети CryptSetup Dropbear
  • Initrd: Можно ли найти код для real-root-dev
  • Недопустимый формат модуля
  • Модуль scsi_wait_scan не найден в CentOS kernel-ml вызывает панику ядра при загрузке
  • initrd или ramfs для SLES как /
  • Как ядро ​​Linux может обращаться к назначенному initramfs / initrd?
  • Linux и Unix - лучшая ОС в мире.