PDA

Показать полную графическую версию : [решено] Пересобрать "initrd"


Ciber SLasH
01-03-2024, 10:07
Приветствую всех!
Хотел переупаковать "initrd" (нужна была правка скрипта "init") в Mods 455 (https://t.me/vss_flood/37920) (вроде сделан на tiny linux, ядро от gentoo), но в итоге, при загрузке получаю Failed to execute /init (error -2).
Распаковывал "/tiny/initrd" так (перед этим скопировав его в /tmp/initrdnew/initrd.xz):

[root /tmp/initrdnew]# xz -d ./initrd.xz && cat ./initrd | cpio -i -d -H newc
[root /tmp/initrdnew]# rm ./initrd.xz

Дальше заменил "init" в этой папке на такой же, но в котором вставлены 2 строки после 64 строки файла (после done):

echo "SQUASHFS_BIN_1: ${SQUASHFS_BIN}"
echo "SQUASHFS_BIN_2: ${SQUASHFS_BIN:1:$}"

И переупаковал:

find . -print | cpio -H newc -o | xz -z -F xz -C crc32 --x86 --lzma2=dict=8MiB > ../initrd.cpio.xz
cp -f ../initrd.cpio.xz /mnt/d/tiny/initrd

Но после подмены родного "initrd" на новый - получаем незагрузку.
Удаление "/tmp/initrdnew/bin/busybox" (как советовали тут (https://www.linux.org.ru/forum/admin/17389106?cid=17390315)) из распакованного "initrd" не помогает. При загрузке всё равно ошибка:

Failed to execute /init (error -2)
Kernel panic - not syncing: No working init found.

Ciber SLasH
08-03-2024, 17:08
Разобрался.
Ошибка была в строке: echo "SQUASHFS_BIN_2: ${SQUASHFS_BIN:1:$}"
которая вызывала сбой выполнения скрипта.
Экспериментировал в загрузочном скрипте: нужно было удалить 1 символ из переменной SQUASHFS_BIN.
Правильная строка: echo "SQUASHFS_BIN_2: ${SQUASHFS_BIN:1:${#SQUASHFS_BIN}}"




© OSzone.net 2001-2012