Понимание простого файла конфигурации для 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.

  • Как монтировать / usr во время загрузки без initramf?
  • Использование qemu для загрузки OpenSUSE (или любой другой ОС) с настраиваемым ядром
  • Инициирование и блокировка устройств
  • Правильное расположение файла initramfs.cpio при компиляции ядра
  • Как сделать запись Slackware в grub2
  • Как создать Linux-систему только для чтения, которая только записывает в ОЗУ?
  • Восстановить образ файловой системы из vmlinux.bin (встроенные initramfs) без перестройки?
  • dracut и отдельный / usr?
  • update-initramfs не удалось после обновления, чтобы растянуться с jessie
  • Отключить KMS на Debian Sid
  • Распаковка initramfs очень медленная
  • Interesting Posts

    Механизм символа BELL '\ a'?

    Что такое эквивалент apt-файла в portage, если таковой имеется?

    Восстановление файлов с поврежденного DVD

    Могу ли я сделать текст в xterm и выглядеть как gnome-terminal?

    vim не показан в термоблоке

    Как изменить разрешение записи на текущий буфер в emacs?

    Общий DNS для виртуальных машин – с iptables / netfilter

    У меня установлена ​​последняя версия hping3, но Bash говорит, что «команда не найдена»

    Поиск файлов в алфавитном порядке перед заданной строкой

    Установка псевдонима, когда двойные кавычки и одинарные кавычки оба терпят неудачу

    zsh, модульность, несколько файлов .zsh и oh-my-zsh

    bash: передача нескольких пробелов, содержащих имена файлов

    Как я могу выделить больше места для файловой системы, установленной на /?

    Как я могу автоматически убить процесс с максимальной загрузкой процессора?

    Управление памятью – как работает memblock_reserve

    Linux и Unix - лучшая ОС в мире.