2016-05-10 2 views
0

Я пытаюсь использовать initramfs в качестве моей файловой системы для загрузки ядра Linux. Я хочу, чтобы моя файловая система была минимальной, поэтому я использую initramf без rootfs. Теперь, когда ядро ​​загружается, он выполняет/init из initramfs, я попытался установить proc и sysfs в init, как показано ниже.Использование Bare initramfs без rootfs

#!/bin/busybox sh 
echo "Mounting Proc and Sysfs" 
# Mount the /proc and /sys filesystems. 
mount -t proc none /proc 
mount -t sysfs none /sys 

Что мне нужно добавить, чтобы получить командную строку с initramfs. я получил ниже ошибки, когда я выполняю команду init.

New FileSystem 
Mounting Proc and Sysfs 
This script just 
[ 4.524724] sh (116) used greatest stack depth: 13832 bytes left mounts and boots the rootfs, nothing else! 
[ 4.537448] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000 
[ 4.537448] 
[  4.537453] CPU: 0 PID: 1 Comm: init Not tainted 4.1.17-ltsi-rt18 #4 
+0

Исправьте свое форматирование –

ответ

0

Ваша проблема заключается в том, что ваш сценарий оболочки (так называемый «init») завершается. Ядро не пройдет мимо точки, в которой выйдет PID 1. Регулярные последовательности инициализации решают эту проблему, перебрасывая PID 1 вокруг, используя exceve (например, init в initramfs вызывает exceve для переключения на init в вашей корневой файловой системе и т. Д.).

Я предлагаю либо добавить вызов/bin/sh (bash, zsh, что угодно) в конце вашей инициализации, а затем вызвать завершение работы (так что, если оболочка завершается, система останавливается). Это даст вам несколько полезную оболочку для игры.

Кроме того, поскольку вы, кажется, уже используете busybox, он имеет вполне применимую реализацию init. Вы можете использовать это, чтобы начать фактическую последовательность init, с фактическими оболочками с фактическим контролем TTY.

Смежные вопросы