Существует 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
на самом деле?
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
делает большую работу:
, я верю, это было бы очень сложно, чтобы сделать всю эту работу сценарием из-за зависимостей, но двоичный исполняемый файл может сделать это очень простота.
Согласно dpkg-query
это - часть klibc-utils
пакет. Некоторое закапывание исходного кода показывает вызов execv
для запуска процесса init в реальной файловой системе. Если это перестанет работать, [то 113] возвратится, таким образом инициировав panic
на последней строке.
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