LINUX.ORG.RU

можно ли изменить initrd?

 , ,


0

2

Всем привет. Такой вопрос. Собираю установочный диск с дебиан, мне нужно чтоб загружался инсталлятор, а потом продолжадась установка из исошника, который лежит на этом же диске (типа мультизагрузочного диска). Скачал initrd.gz с hd-media (там есть пункт iso-scan, в котором ищется iso-образ и запускается дальнейшая установка из него). Но в нем не хватает некоторых нужных программ (пока столкнулся с отсутствием cryptsetup). Как можно добавить нужные программы в этот initrd? Пробовал скачать initrd из каталога gtk, там побольше установленных пакетов, но с ним не получается загрузиться, ругается на ошибку Xorg… Может как-то можно отключить загруску Xorg в нем и продолжить установку в текстовом режиме, но с использованием этой initramfs?


Ответ на: комментарий от Infra_HDC

Так искал вроде бы… Действительно много описано методов работы с образом initrd… Но либо я чего-то не понимаю, либо… Мне надо конкретный образ initrd пересобрать, а везде вроде бы указаны способы работы с initramfs, установленной в системе. Проблема в том, что в начале установки системы, в initramfs во время отработки iso-scan (поиска iso-образов существующих) я пытаюсь примонтировать диск (mount -t udf /dev/sr0 /t), а мне выдает ошибку: /dev/sr0 no such device… Вот не могу понять в чем дело…

Lyutik
() автор топика
Ответ на: комментарий от Lyutik

а мне выдает ошибку: /dev/sr0 no such device… Вот не могу понять в чем дело…

Не загружен модуль ядра cdrom ? Не создано устройство /dev/sr0 (в зависимости от того как сделан initrd там может быть udev/mdev или вообще статические ноды для устройств).

Pinkbyte ★★★★★
()

У Debian есть экспертный режим установки, там выводится список дополнительных модулей, которые обычно не загружаются, но которые могут быть подгружены установщиком.

Vsevolod-linuxoid ★★★★★
()

Ищи hdd-install образ ядра и initramfs. С них надо просто загрузиться и скрипты в initramfs будут искать установочный iso на носителе откуда произошла загрузка.

Уже есть все готовое.

Неправильно написал, называется hdd-media

https://www.debian.org/releases/stable/i386/ch04s04.en.html

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

hd-media, его же и загрузил. У меня iso-образ в зашифрованном файле, вот мне и надо прежде чем начнется поиск, расшифровать этот файл. А для этого надо диск весь примонтировать куданить и произвести расшифровку файла.

Lyutik
() автор топика
Ответ на: комментарий от Lyutik

но ведь оно же загрузилось с cdrom и до этого момента отработало…

С cdrom загрузилось ядро и initrd ЗАГРУЗЧИКОМ.

Я тебе могу собрать ядро без драйверов USB и CD-ROM, которое прекрасно будет грузиться с USB/CD-ROM, но вот обнаружить корневую ФС(расположенную на этих носителях) уже не сможет.

Еще вариант: у тебя загрузка нужных модулей ядра происходит ПОСЛЕ тех команд которые ты выполняешь - будет именно такая проблема.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

у тебя загрузка нужных модулей ядра происходит ПОСЛЕ тех команд которые ты выполняешь

Действительно, спасибо большое!! Причем они не просто после загружались, а вообще не загружались…

Но остается другой вопрос, как мне конкретно в этот образ initrd.gz добавить cryptsetup? Я так понимаю, если я просто скопирую его в /sbin оно не сработает, наверняка ж еще какие-то библиотеки ему нужны будут….

Lyutik
() автор топика
Ответ на: комментарий от Lyutik

Но остается другой вопрос, как мне конкретно в этот образ initrd.gz добавить cryptsetup?

Для распространенных случаев(а использование LVM или LUKS - вполне себе такой случай) такое лучше не руками делать, а специальной утилитой - mkinitrd, genkernel, dracut - в зависимости от того что у тебя там в дистрибутиве для сборки initrd используется.

В используемой утилите должен быть ключ для добавления нужных тебе бинарников с библиотеками в образ.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

специальной утилитой - mkinitrd, genkernel, dracut

Но я же правильно понимаю, что эти утилиты модифицируют initrd, установленное в системе(лежащее в папке /boot)? А как мне изменить конкретный образ initrd, который у меня есть, отличающийся от того, что установлен в загруженной системе?

Lyutik
() автор топика
Ответ на: комментарий от Lyutik

initramfs это cpio архив, возможно сжатый (gzip, xz). Его можно распаковать, поправить файлы/добавить файлы, потом запаковать. Гуглится много примеров, допустим https://access.redhat.com/solutions/24029 .

Стандартные утилиты не модифицируют существующий initrd, а создают его заново, так проще.

mky ★★★★★
()
Ответ на: комментарий от mky

Его можно распаковать, поправить файлы/добавить файлы, потом запаковать

спасибо, это я знаю. Мне конкретно нужно добавить модуль cryptsetup туда. Но вряд ли он заработает, если просто его скопировать в /sbin.

наверняка ж еще какие-то библиотеки ему нужны будут….

Lyutik
() автор топика
Ответ на: комментарий от Lyutik

Твоя задача на самом деле - собрать initrd с помощью утилиты твоего дистрибутива, включив туда cryptsetup(через опцию утилиты) и, возможно, другие изменения нужные тебе - в том же genkernel для этого есть ЕМНИП опция initramfs-overlay - позволяет указать директорию, содержимое которой будет скопировано внутрь initrd перед окончательной сборкой.

В использовании утилиты нет ничего сверхсложного - более того, она скорее всего сама запускается каждый раз при обновлении ядра(если не рассматривать такие дистрибутивы как Gentoo, где это надо делать вручную), тебе нужно только поправить ее конфиг.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)