Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   [решено] Пересобрать "initrd" (http://forum.oszone.net/showthread.php?t=355001)

Ciber SLasH 01-03-2024 10:07 3024846

Пересобрать "initrd"
 
Приветствую всех!
Хотел переупаковать "initrd" (нужна была правка скрипта "init") в Mods 455 (вроде сделан на 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" (как советовали тут) из распакованного "initrd" не помогает. При загрузке всё равно ошибка:
Цитата:

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

Ciber SLasH 08-03-2024 17:08 3025198

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


Время: 16:56.

Время: 16:56.
© OSzone.net 2001-