Как загрузить ядро Linux с USB-накопителя?

Вопрос или проблема

Я пытаюсь загрузить версию ядра Linux 3.2.0 с флеш-накопителя USB.

Я отформатировал флеш-накопитель USB с разделом ext4. Я установил GRUB на него и скопировал два файла, vmlinuz-3.2.0-29-generic и initrd.img-3.2.0-29-generic, из папки /boot моего ноутбука в папку boot на флеш-накопителе.

Затем я смонтировал флеш-накопитель USB в /mnt и запустил grub-mkconfig -o /mnt/boot/grub/grub.cfg, чтобы создать файл grub.cfg в нем.

Затем я попытался добавить детали моего ядра в файл grub.cfg следующим образом:

menuentry "my kernel" --class gnu-linux --class gnu --class os
recordfail
    insmod gzio
    insmod part_msdos
    insmod ext4
set root="(hd0)"
echo "Загрузка моего ядра"
linux    /boot/vmlinuz-3.2.0-29-generic root=UUID=db2687dc-8c42-485e-a152-ef821590b113 ro  quiet splash
    echo    'Загрузка начального ramdisk ...'
    initrd  /boot/initrd.img-3.2.0-29-generic

Однако в списке GRUB не отображается мое ядро, а только перечисляются те же списки ОС, когда я загружаю GRUB с жесткого диска моего ноутбука. Является ли ядро действительно на (hd0)? Как добавить запись ядра в меню GRUB флеш-накопителя USB?

Также, правильно ли это делать, чтобы загрузить ядро с флеш-накопителя USB? Является ли файл initrd.img, который находится в моей папке /boot, все еще действительным, когда я скопировал ядро на флеш-накопитель? Если нет, как сгенерировать новый файл initrd.img для ядра на USB?

Однажды у меня была проблема с этим.

Это было связано с тем, что загрузка с моего жесткого диска и добавление флеш-накопителя USB позже, а не загрузка с флеш-накопителя USB, привело к тому, что устройства нумеровались по-разному.

Я исправил это, вручную назначив порядок загрузки устройства в BIOS.

Я думаю, что:

set root="(hd0)"

Не обязательно — (“set root” ссылается на диск, на котором находится grub — я думаю, что grub предполагает это по умолчанию) и может запутать grub при загрузке.

Попробуйте без этого.

Ответ или решение

Чтобы загрузить ядро Linux версии 3.2.0 с USB-накопителя, необходимо выполнить несколько шагов, начиная с правильного форматирования устройства и заканчивая настройкой конфигурационного файла GRUB. Давайте шаг за шагом разберем весь процесс.

1. Форматирование USB-накопителя

Первоначально USB-накопитель должен быть отформатирован в файловую систему, которая поддерживает Linux, в вашем случае это ext4. Чтобы сделать это, выполните следующую команду в терминале:

sudo mkfs.ext4 /dev/sdX1

Замените /dev/sdX1 на правильный путь к вашему USB-накопителю.

2. Установка GRUB на USB-накопителе

После форматирования необходимо установить загрузчик GRUB на USB. Для этого выполните следующие команды:

sudo mount /dev/sdX1 /mnt
sudo grub-install --boot-directory=/mnt/boot /dev/sdX

Необходимо использовать /dev/sdX, а не /dev/sdX1, чтобы установить GRUB на весь диск, а не только на раздел.

3. Копирование файлов ядра и initrd

Скопируйте ваши файлы ядра и initrd в правильный каталог на USB:

sudo cp /boot/vmlinuz-3.2.0-29-generic /mnt/boot/
sudo cp /boot/initrd.img-3.2.0-29-generic /mnt/boot/

4. Генерация конфигурационного файла GRUB

Теперь, когда у вас есть Grub и необходимые файлы на USB, создайте конфигурационный файл GRUB:

sudo grub-mkconfig -o /mnt/boot/grub/grub.cfg

5. Редактирование файла grub.cfg

Чтобы добавить ваше ядро в меню загрузки, вам нужно будет вручную отредактировать файл grub.cfg. Как вы указали, запись может выглядеть следующим образом:

menuentry "Мое ядро" --class gnu-linux --class gnu --class os {
    insmod gzio
    insmod part_msdos
    insmod ext4
    echo "Загрузка моего ядра..."
    linux /boot/vmlinuz-3.2.0-29-generic root=/dev/sdX1 ro quiet splash
    echo "Загрузка начального образа ramdisk..."
    initrd /boot/initrd.img-3.2.0-29-generic
}

Обратите внимание, что set root может не понадобиться и стоит использовать root=/dev/sdX1 вместо UUID, чтобы избежать путаницы с идентификаторами.

6. Проверка порядкового номера загрузочных устройств

Проблемы с отображением вашего ядра могут возникнуть из-за того, что устройства могут перечисляться иначе. Убедитесь, что BIOS или UEFI вашего компьютера настроены так, чтобы загрузка из USB-накопителя была в приоритете. Часто помогает установить порядок загрузки устройств именно в BIOS.

7. Обновление initrd

Если вы хотите быть уверенными, что ваш initrd.img актуален, вы можете сгенерировать новый образ initrd следующим образом:

  1. Загрузитесь в вашу текущую систему (на жестком диске).
  2. Обновите initrd:
sudo update-initramfs -u -k 3.2.0-29-generic
  1. Затем скопируйте новый initrd.img обратно на USB.

Заключение

Следуя вышеописанным шагам, вы сможете успешно загрузить ядро Linux с USB-накопителя. Убедитесь, что у вас корректно настроены пути и идентификаторы устройств. Если у вас возникнут проблемы, возможно, стоит перепроверить настройки вашей системы и порядок загрузки в BIOS.

Оцените материал
Добавить комментарий

Капча загружается...