Могу ли я загрузить и смонтировать второй initramfs от имени root, чтобы заменить оригинал при загрузке CentOS 7 LiveCD?

321
Locane

Пожалуйста, дайте мне знать, если этот вопрос нужно перефразировать; Я читал о самых низких уровнях загрузки для Linux и Systemd.

В настоящее время я имею дело с ограничением в grubx64.efi - он не может выделить начальный оперативный диск объемом 1,2 гигабайта, размером с LiveCD моей компании.

Я думаю, что решение - это сначала загрузить меньший RAM-диск LiveCD, пользовательский initrd ~ 300 мегабайт или около того, и внутри этого пользовательского initrd настроить его на загрузку «реального» LiveCD объемом 1.2 гига, смонтировать IT как корневой файл системы, а затем удалите старую.

Я изучал, как работает Systemd и процесс загрузки Linux, пытаясь выяснить, как именно я мог бы выполнить этот переход в CentOS 7, но точные команды для вызова и места для внесения изменений не очевидны для меня ,

Это можно сделать вручную?

1
Вы используете термины * "initramfs" * и * "initrd" * (или * "ramdisk" *) взаимозаменяемо, что неверно. RAM-диск должен быть выделен и имеет фиксированный размер. Однако ramfs (или tmpfs) ограничен только доступной памятью. См. Https://superuser.com/questions/211071/what-is-the-difference-between-ramdisk-and-ramfs и https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs .текст sawdust 6 лет назад 0
Спасибо за комментарий @sawdust. Насколько я понимаю, современные initrd, особенно для LiveCD, на самом деле являются просто начальными файловыми системами ram, помеченными как "initrd.img". Initrd.img CentOS LiveCD - это настоящий виртуальный диск? Вот почему я ссылаюсь на «пользовательский initrd». Locane 6 лет назад 0

1 ответ на вопрос

0
Locane

Поработав в списке рассылки Grub, я обнаружил, что вы можете смонтировать образ squashfs с удаленного сервера, используя параметры ядра.

Я установил legacy и EFI PXE для использования ядра и initrd в каталоге PXEBOOT ISO CentOS 7.4 (ядро 3.10.0-693). В совокупности они похожи на 60 мег или что-то.

Затем я поместил файл squashfs.img из корневой файловой системы, которую я на самом деле хотел использовать, в доступный по http каталог на том же сервере.

Затем я использовал 2 параметра ядра (показанные мне в списке рассылки), чтобы ядро ​​CentOS смонтировало образ squashfs в качестве корневой файловой системы; ядро достаточно умен, чтобы знать, что live:означает и создает временную (и очень хрупкую - еще не разобрался с этой частью; 1 гигабайт записи приводит к тому, что файловая система в оперативной памяти только для чтения), с которой можно выполнять базовые операции чтения / чтения. пишу. Я добавил эти параметры в пункт меню PXE:

rootfstype=auto root=live:http://path/to/squashfs.img 

Это было это. Это было волшебство, которого мне не хватало.

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