Комментарии — Краткие руководства

Материал из Rosalab Wiki
Перейти к: навигация, поиск

ISO+EFI на флешку Роса

Полигон: description: Notebook product: HP ProBook 450 G2 Linux 4.9.76-nrj-desktop-1rosa-i586 i686 GNU/Linux memory size: 4GiB загрузка в биос возможна mbr, смешанный и EFI Установлена система без EFI ROSA Desktop Fresh R10 MATE 2016.1 Desktop x32 Проведем простой опыт: форматируем любыми способами флешку в таблица разделов msdos, тип FAT32. кидаем туда папку EFI из ROSA Desktop Fresh x86-64 меняем /EFI/BOOT/grub.cfg на свой из папки /boot/grub2/grub.cfg перезагружаемся, и ставим в биос чистый режим EFI матюкается что нет файла grubenv, и спокойно загружается. Вывод: • для загрузки с флешки в EFI, не требуется таблица разделов gpt и флаги boot,esp. нужен только тип FAT32 • так можно загрузить систему без предустановленного EFI • стартовые bootia32.efi и grubia32.efi у меня не работают а работают только с bootx64.efi и grubx64.efi • на форуме не могли загрузится с bootia32.efi и grubia32.efi, вот вам и ответ почему (это уже вопрос к разработчикам Росы). Едем дальше: Исследования показали что bootx64.efi и grubx64.efi другим bootx64.efi и grubx64.efi рознь. Объясню почему. Собирается это штука с разными модулями, имеют сертификаты или не имеют, по разному. Стандартное расположение у многих /EFI/BOOT/ c конфигом там же. Конфиг для multibootusb наптпример, / multibootusb/grub/grub.cfg, это уже не стандартно. Цель же сделать универсальную флешку с загрузкой ISO, с загрузкой в EFI в том числе. Выяснилось что основным модулем для монтирования ISO служит loopback из пакета grub2, и этот модуль не включен в сборку от Росы. Было опробовано куча bootx64.efi и grubx64.efi, просто набил их в разные папки на флешке с конфигом, закинул образы ISO. В каждой папке уже выбирал и запускал bootx64.efi и grubx64.efi в меню EFI. В результате нарвался на интересную парочку от Ubuntu mate 18.04 x86-64, модуль lookback работает и конфиг работает. Ладушки, загрузчики для EFI определены готовим флешку. Флешка отформатирована в таблице разделов msdos, тип FAT32 метка WORK у меня. Кидаем в корень папку EFI взятую из корня системы Ubuntu mate 18.04 x86-64. В /EFI/BOOT/ лежит наша парочка bootx64.efi grubx64.efi, там же создаем папку grub2 получится так: /EFI/BOOT/ и /EFI/BOOT/grub2/ это те папки в которые будем класть свой grub.cfg. Разберем конфиг grub.cfg: нас интересуют всего 3 места menuentry 'Start ROSA.FRESH.MATE.start.iso' { set root='hd0,msdos1' set iso=/ROSA.FRESH.MATE.start.iso loopback loop ${iso} linux (loop)/isolinux/vmlinuz0 isoboot=${iso} boot=isolinux iso-scan/filename=${iso} root=live:[color=LABEL=ROSA.FRESH.MATE. ro rd.live.image quiet rootflags=rw,noatime rd.luks=0 rd.md=0 rd.dm=0 rhgb splash=silent logo.nologo initrd (loop)/isolinux/initrd0.img } Расмотрим; Start ROSA.FRESH.MATE.start.iso # это пункт который отобразится при загрузке set root='hd0,msdos1' # это корневая директория

set iso=/ROSA.FRESH.MATE.start.iso # это переменная чтоб каждый раз не писать название вашего iso

loopback loop ${iso} # эта команда монтирует ваш iso

linux (loop)/isolinux/vmlinuz0 isoboot=${iso} boot=isolinux iso-scan/filename=${iso} # это место запускает vmlinuz0 в /isolinux/ смонтированного iso

root=live:LABEL=ROSA.FRESH.MATE. # это лейба вашего iso узнается командой file, а смотрим между одинарных кавычек `ROSA.FRESH.MATE.`

ro rd.live.image quiet rootflags=rw,noatime rd.luks=0 rd.md=0 rd.dm=0 rhgb splash=silent logo.nologo # это режимы запуска ядра.

initrd (loop)/isolinux/initrd0.img # это запускает initrd0.img в /isolinux/ смотированного iso

Вот пример конфига grub.cfg на запуск в режиме livecd и install для моего дистрибутива:

menuentry 'Start ROSA.FRESH.MATE.i586.iso' { set root='hd0,msdos1' set iso=/ROSA.FRESH.MATE.i586.iso loopback loop ${iso} linux (loop)/isolinux/vmlinuz0 isoboot=${iso} boot=isolinux iso-scan/filename=${iso} root=live:LABEL=ROSA.FRESH.MATE. ro rd.live.image quiet rootflags=rw,noatime rd.luks=0 rd.md=0 rd.dm=0 rhgb splash=silent logo.nologo initrd (loop)/isolinux/initrd0.img } menuentry 'Install ROSA.FRESH.MATE.i586.iso' { set root='hd0,msdos1' set iso=/ROSA.FRESH.MATE.i586.iso loopback loop ${iso} linux (loop)/isolinux/vmlinuz0 isoboot=${iso} boot=isolinux iso-scan/filename=${iso} isoboot=${iso} boot=isolinux iso-scan/filename=${iso} root=live:LABEL=ROSA.FRESH.MATE. ro rd.live.image quiet rootflags=rw,noatime rd.luks=0 rd.md=0 rd.dm=0 install rhgb splash=silent logo.nologo initrd (loop)/isolinux/initrd0.img }

Eсли все файлы и конфиги лежат по своим местам (конфиги одинаковые) то подаем команду на установку grub2. НЕ забываем поменять /dev/sdb на свою флешку, пользователя iteco на своего, и WORK если метка диска у вас отличается.

sudo grub2-install --boot-directory=/media/iteco/WORK/EFI/BOOT/ --root-directory=media/iteco/WORK/ /dev/sdb [sudo] пароль для iteco: Установка завершена. Ошибок нет.

grub2 я засунул в папку /EFI/BOOT/, можно прямо в корень, iso можно в любую папку а не в корень. например set iso=/iso/ROSA.FRESH.MATE.i586.iso

Вот ссылка на EFI https://yadi.sk/d/fyaZTlGL3TkZMh (там уже лежат bootx64.efi и grubx64.efi, создана папка grub2 и лежат конфиги). А это сборки mate кому надо https://yadi.sk/d/tbCNtwUn3TkZXw Все можно тестировать.

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.