Вопрос или проблема
Я хочу иметь с собой загрузочную USB с Fedora Live UEFI для экстренных случаев, но не хочу носить с собой два USB-устройства. Поэтому я хочу USB накопитель с двумя разделами, один для загрузки Fedora Live, а другой для моих данных. У меня всегда был с собой такой флеш-накопитель с Fedora Live 26, и теперь я хочу один для Fedora 38 (или около того).
Проблемы:
mediawriter
, стандартный способ записи Live USB в Fedora, пишет только на устройство USB, а не на раздел.
livecd-iso-to-disk
мог бы работать, но у него долгое время была ошибка и он не работает.
unetbootin
работает только для устаревшей загрузки, а не для UEFI. И новые компьютеры Dell загружаются только в режиме UEFI. Запрос на это открыт с 2015 года…
dd
: Я пытался несколько раз с dd
, но потерпел неудачу.
Есть ли какие-то идеи? Должен быть простой способ сделать это с помощью dd
!!!
############ РЕДАКТИРОВАТЬ #############
Следуя некоторым ссылкам, опубликованным @oldfred, я смог загрузиться в UEFI с раздела флеш-накопителя по следующему рецепту:
Fedora USB LIVE на раздел флешки (скажем, /dev/sda1
):
-
С помощью gparted или подобной программы убедитесь, что первый раздел флеш-накопителя имеет формат gpt и метку
<YOURLABEL>
(это можно изменить без разрушения); -
Добавьте флаг загрузки к разделу с помощью:
parted /dev/sda set 1 boot on
-
Смонтируйте
/dev/sda1
в<MountPoint>
и извлеките все содержимое ISO в него с помощью, например, 7z:7z x <PATH/TO/ISOFILE.iso> -o<MountPoint>
-
Измените
<MountPoint>/efi/boot/grub.cfg
и<MountPoint>/boot/grub2/grub.cfg
, чтобы отразить правильное устройство:menuentry 'Fedora-KDE-Live 38 EFI' --class fedora --class gnu-linux --class gnu --class os { linuxefi /images/pxeboot/vmlinuz root=live:LABEL=<YOURLABEL> rd.live.image quiet rhgb initrdefi /images/pxeboot/initrd.img }
Ремарка. Соответствующую запись в меню grub компьютера можно добавить, добавив в файл /etc/grub.d/40_custom
:
menuentry 'Fedora-KDE-Live 38 EFI' --class fedora --class gnu-linux --class gnu --class os {
search --no-floppy --label <YOURLABEL> --set=root
linuxefi /images/pxeboot/vmlinuz root=live:LABEL=<YOURLABEL> rd.live.image quiet rhgb
initrdefi /images/pxeboot/initrd.img
}
Ремарка 2. К сожалению, я не смог загрузиться непосредственно с ISO, когда оно находится на флеш-накопителе. Согласно этой публикации есть ошибка, препятствующая этому с Fedora 33.
Есть два способа. Я только что использовал loopmount GRUB 2, чтобы загрузить Fedora.
Мне нравится иметь много ISO-образов, несколько Ubuntu, GParted, Boot-Repair и другие в папке, /ISO, в разделе на моих системах. Я добавляю ссылку на текстовый файл в файл 40_custom, так как я никогда не помню обновлять меню GRUB, но текстовый файл просто работает.
Другой альтернативой является создание достаточно большого FAT32-раздела, перемещение флагов boot,esp на него и извлечение ISO-образа в него. Это загрузится с /EFI/Boot/bootx64.efi. Затем переместите флаги esp,boot обратно на ваш стандартный ESP. Затем ваш стандартный установка GRUB сможет сделать конфигурационный файл в этом FAT32-разделе. GRUB не будет заботиться о том, что это больше не ESP, но вы сможете загрузиться напрямую из UEFI только с флагом esp.
menuentry 'Live Fedora 38 Beta Cinnamon No Secure' {
set isoname="Fedora-WS-Live-38-1-6"
set iso="/ISO/Fedora-Workstation-Live-x86_64-38-1.6.iso"
loopback loop (hd2,5)$iso
linux (loop)/images/pxeboot/vmlinuz rd.live.image verbose root=live:LABEL=${isoname} iso-scan/filename=$iso
initrd (loop)/images/pxeboot/initrd.img
}
Обычно самой большой проблемой является правильное установление пути и параметров.
Мой путь /ISO в разделе (hd2,5), как видно, когда разделы не смонтированы.
Это показывает мою типичную запись GRUB в виде configfile к текстовому файлу в моей папке /ISO.
Я считаю, что поскольку я использую запись configfile в текстовом файле, который GRUB запомнил, это и позволяет вышеупомянутой записи работать. Мой текстовый файл /ISO/livecdimage.cfg содержит указанный выше блок кода для загрузки Fedora 38 на моем NVMe диске, с которого я загружаюсь и который видится как hd2.
menuentry 'Live ISOs in nvme_data drive' {
search --set=root --label nvme_data
configfile /ISO/livecdimage.cfg
}
.
Ответ или решение
Создание загрузочной флешки Fedora с разделом для ваших данных является полезным решением, позволяющим иметь под рукой операционную систему для аварийного восстановления и персональные файлы на одном устройстве. Однако реализация этого решения может быть вызовом, учитывая ограничения стандартных инструментов, таких как mediawriter
, livecd-iso-to-disk
, unetbootin
и dd
. Рассмотрим, как можно обойти эти ограничения и создать такую флешку, следуя предложенным методам.
Теория
Задача сделать загрузочную флешку с Fedora, которая будет иметь раздел для собственных данных, предполагает установку Fedora Live на один из разделов с поддержкой UEFI. Однако стандартные средства для создания загрузочных USB накопителей могут иметь ограничения при работе с разделами. К примеру, mediawriter
нацелен на запись данных на устройство целиком, а не на отдельный раздел. unetbootin
поддерживает только старый метод загрузки. Использование команды dd
безуспешно, вероятно из-за трудностей в корректной разметке диска и конфигурации загрузчика GRUB.
Пример
Из найденного решения следует, что можно использовать метод извлечения файлов ISO на раздел флешки и дальнейшую настройку GRUB для загрузки Fedora. Процесс можно изложить следующим образом:
-
Подготовка USB накопителя:
- Используйте
gparted
для создания GPT-схемы разделов на флешке и, например, создайте первую партицию с файловой системой FAT32. Задайте метку разделу, например,<YOURLABEL>
. - Установите флаг загрузки (boot) для этого раздела командой:
parted /dev/sda set 1 boot on
- Используйте
-
Извлечение ISO-образа:
- Смонтируйте раздел флешки (например,
/dev/sda1
) в директорию, например,/mnt/usb
. - Используйте
7z
для извлечения содержимого ISO-образа Fedora на смонтированный раздел:7z x <PATH/TO/ISOFILE.iso> -o/mnt/usb
- Смонтируйте раздел флешки (например,
-
Настройка GRUB:
- Внесите изменения в файлы
/mnt/usb/efi/boot/grub.cfg
и/mnt/usb/boot/grub2/grub.cfg
, чтобы они указывали на правильный корневой раздел:menuentry 'Fedora-KDE-Live 38 EFI' --class fedora --class gnu-linux --class gnu --class os { linuxefi /images/pxeboot/vmlinuz root=live:LABEL=<YOURLABEL> rd.live.image quiet rhgb initrdefi /images/pxeboot/initrd.img }
- Внесите изменения в файлы
-
Интеграция с существующей системой:
- Можно добавить запись в меню GRUB вашей основной системы, изменив файл
/etc/grub.d/40_custom
:menuentry 'Fedora-KDE-Live 38 EFI' --class fedora --class gnu-linux --class gnu --class os { search --no-floppy --label <YOURLABEL> --set=root linuxefi /images/pxeboot/vmlinuz root=live:LABEL=<YOURLABEL> rd.live.image quiet rhgb initrdefi /images/pxeboot/initrd.img }
- Можно добавить запись в меню GRUB вашей основной системы, изменив файл
Применение
Результат заключается в создании USB накопителя, на котором Fedora может загружаться в режиме UEFI и который имеет дополнительный раздел для пользовательских данных. Это решение позволяет избежать необходимости наличия отдельного устройства для ваших файлов и операционной системы. Важно актуализировать конфигурацию GRUB при каждом обновлении или изменении системы, так как неверные параметры могут привести к неработоспособному состоянию загрузочного накопителя. Распределение прав доступа и установка актуальных обновлений также важны для поддержания безопасности устройства.