Что 'выполняется-init' на самом деле?

Существует init сценарий в начальном электронном диске во время процесса bootint. При последней операции это говорит что:

# Chain to real filesystem
exec run-init ${rootmnt} ${init} "$@" ${recovery:+--startup-event=recovery} <${rootmnt}/dev/console >${rootmnt}/dev/console 2>&1
panic "Could not execute run-init."

Я ищу все сценарии в содержании электронного диска и не могу найти имя файла или имя функции как этот. Что run-init на самом деле?

3
задан 10 March 2016 в 06:51

3 ответа

run-init двоичный исполняемый файл, он живет в/usr/lib/klibc/bin/run-init и в Вашем initramfs и обеспечивается klibc-utils пакет в Ubuntu. Это не сценарий, таким образом, Вы не можете смотреть внутри непосредственно, можно проверить его исходный код через выполнение apt source klibc-utils или просмотр восходящего репозитория в https://git.kernel.org/cgit/libs/klibc/klibc.git.

, Таким образом, основная функция находится в выполнена-init.c , но это - просто обертка для run_init функция, которая живет здесь в , runinitlib.c

run_init делает большую работу:

  1. Это вскакивает в новую корневую файловую систему
  2. Проверки, что это - новая корневая файловая система
  3. Проверки, если это на initramfs
  4. Чистит весь каталог (почему отходы RAM?)
  5. Монтирует новую корневую файловую систему
  6. и выполняет init в новой корневой файловой системе

, я верю, это было бы очень сложно, чтобы сделать всю эту работу сценарием из-за зависимостей, но двоичный исполняемый файл может сделать это очень простота.

6
ответ дан 1 December 2019 в 13:24

Согласно dpkg-query это - часть klibc-utils пакет. Некоторое закапывание исходного кода показывает вызов execv для запуска процесса init в реальной файловой системе. Если это перестанет работать, [то 113] возвратится, таким образом инициировав panic на последней строке.

1
ответ дан 1 December 2019 в 13:24

Ubuntu 14.04LTS В пустой папке создает файл [добираются-it.sh]

#!/bin/sh

cp /boot/initrd* initrd.cpio.gz
mkdir initrd
cd initrd
zcat ../initrd.cpio.gz | cpio -di
find | grep run-init
cd ..

и выполняют его: удар добирается-it.sh

, выполненный-init файл будет в./bin/run-init

, Также можно получить initrd от установочного CD

0
ответ дан 1 December 2019 в 13:24

Другие вопросы по тегам:

Похожие вопросы: