1

Я работаю над проектом, который требует, чтобы я PXEboot очень большой initrd (1.3G) для клиента, однако при использовании grub2 через uefi я сталкиваюсь с ошибкой:

Can't allocate initrd

Похоже, что grub пытается получить доступ за пределы своего адреса. ... что странно, потому что ограничение памяти должно быть намного выше на 64-битной машине с 32 ГБ ОЗУ.

PXE - уменьшенное изображение не подходит, так как NFSmounts ненадежны в моем месте. Я не женат на Grub2, но не смог загрузить syslinux.efi после компиляции из исходного кода.

Есть ли способ заставить grub получить большой initrd?

2 ответа2

1

PXE, передающий initrd 1.3 ГБ, - просто плохой дизайн.

Вам не нужно ретранслировать по NFS. Типичный подход - initrd 20/40 МБ с поддержкой сети, способной отображать общие ресурсы SMB или просто получать компоненты по HTTP (wget/curl). Этот метод используется при установке дистрибутивов отдельных компонентов, таких как Ubuntu Server или Live дистрибутивов, таких как Ubuntu Desktop Live. В вашем случае, если у вас есть все в вашем initrd, вы должны разделить его и преобразовать в отдельный файл squashfs.

К сожалению, syslinux.efi 6.03 все еще не на 100% надежен, а grub2 не очень дружелюбен.

Посмотрите, как Serva PXE загружает множество дистрибутивов Linux, что, несомненно, поможет вам загрузить ваши. (Я связан с развитием сервы)

1

Я смог решить эту проблему, создав образ Dracut со встроенными модулями livenet/network, и использовал корень squashfs.

Просто обратите внимание, что Dracut ожидает, что SquashFS будет отформатирован определенным образом:/LiveOS/rootfs.img Где rootfs.img - это отформатированная файловая система ext4, содержащая действительную файловую систему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .