Kexec в новое ядро, но я не могу получить доступ к командной строке initramfs!

Si es GNU sed, prueba esto

$ sed -z 's/\n/ /g' file2
this is   not is   is is   this biz
$

trhace un trabajo igualmente bueno.

$ tr '\n' ' ' <file2
this is   not is   is is   this biz
$
2
30.06.2019, 18:25
2 ответа

Решено:

Аргумент ядра:

earlyshell

на самом деле не запустил оболочку??? Но запуск ядра с аргументом:

break=premount

дал мне оболочку initramfs.

Этот ресурс оказался очень полезным:https://wiki.debian.org/InitramfsDebug

1
27.01.2020, 22:17

Вы дали kexec правильный --initrd=?

Я только что установил и попробовал kexec. Это работает, если я пойду

kexec -l /boot/vmlinuz --initrd=/boot/initrd.img --append=root=/dev/sda3 

А затем kexec -e. (у меня нет расшифровки...)

Сначала я попытался следовать подсказке «использовать /proc/cmdline», но это не сработало. Мне кажется, что вы должны указать опцию --initrd=дополнительно.

Вам нужна «подсказка initramfs», чтобы указать пароль (, чтобы вы могли смонтировать зашифрованное устройство )?

Обычно мой /proc/cmdlineвыглядит так

vmlinuz initrd=initrd.cpio.gz root=/dev/sda3

После вышеуказанного kexec (и перезагрузки)/proc/cmdlineвыглядит так

root=/dev/sda3

Имя ядра и initrd исчезли! Остается только часть--append . Это даже не слишком меня смущает :просто добавляет новую грань к вопросу :образ ядра и образ initrd параметры ядра ? Являются ли они частью командной строки (ядра)?

Для загрузки я использую оболочку uefi. Я знаю, насколько важен этот "initrd=". С загрузчиком (grub )должно работать так же. Это просто другой способ (непрямой )выбор ядра, initrd (, если необходимо/желательно ), рут, инициализация и все обычные «параметры ядра»

Стандартный initrd делает это:

  • загружать модули для доступа к root (мой корпус :sata, ahci для моего SIMPLE SSD диска)

  • смонтировать это устройство (, заданное root=/dev/xxx)

  • "переключить _корень" на него (включает запуск /sbin/init)

В вашем случае вам нужен запрос пароля (? ), а не модуль sata -. Но результат тот же :root не может быть смонтирован.

Узнайте, как успешно загружается ваш загрузчик, а затем попробуйте имитировать это с помощью kexec.


добавлено:

имена initrd (не имеют значения...)запускается по умолчанию со сценарием /init(проверьте параметр загрузки rdinit=). Это «раннее пользовательское пространство», соответствующее Earlyshell. Похоже, с этим initramfs-toolу вас достаточно точек останова для управления /init и вызываемыми скриптами.

В противном случае можно извлечь этот initrd (с помощью gzipи cpio), изменить /init (или добавить /init _new и go rdinit=/init _new в качестве параметра загрузки )и снова заархивируйте папки. Эту команду cpio я никогда раньше не использовал, но на самом деле она проще, чем tar. Просто немного другой.

mkinitcpioявляется инструментом для этого. В самом начале упоминается как раннее пользовательское пространство, так и шифрование. Я только что прочитал, что это Archlinux, а также есть поздние и ранние «зацепки». Думаю, та же функция, что и у инструментов initramfs -.

0
27.01.2020, 22:17

Теги

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