Загрузка CentOS 6 с флэшки: прямые руки

в 10:10, , рубрики: CentOS, usb flash drive, Песочница, метки: ,

Каждый раз, когда читаешь рекомендации по созданию загрузочных флэх (в частности для Linux live USB flash), автор предлагает начисто отформатировать съемное устройство, а при наличии извращенной фантазии — отформатировать под ext2/3/4, а при особо извращенной — он создает 2 раздела, а то и вовсе лезет в прошивку контроллера флэшки, дабы создать там эмуляцию cdrom. Или в рекомендации используется софт, который делает то же самое — но автоматически.

Извольте, но у меня уже есть загрузочная, боевая флэшка, с которой загружает с помощью Grub4dos и пары прямых рук целый арсенал софта — от windows XP PE до установки гипервизора VMWare ESXi… Итак, я захотел портировать туда еще и Live CD для новой Cent OS 6.

Что мне понадобится:
1) собственно, флэшка c ФС FAT16/32 с установленным и работающим загрузчиком grub4dos (при желании его можно установить, ничего не форматируя), размером как минимум 1 Гб
2) скачанный iso с CentOS 6 Live

Задачи, которую мы себе ставим: получить совместимый с grub4dos способ загрузки, сохранив при этом меню вариантов загрузки, доступное на оригинальном Live CD.

Итак, поехали.

1. Создаем папку CentOS в корне флэшки. Копируем туда из ISO папки LiveOS и isolinux (в последней нужны только initrd0.img, memtest, vmlinuz0)

2. Проверяем, чтобы у флэшки как диска был лейбл, если его еще нет — называем, пусть для примера лейбл будет ZVER.

3. Вытаскиваем isolinux.cfg из isolinux уровнем выше в CentOS. Переименовываем его в centos.lst. Теперь потребуется переделать его из формата isolinux в формат grub4dos. Начинаем его править.
С начала и до строки label linux0 всё — удаляется. Все строки, начинающиеся с label комментируются знаком #. Словосочетание Menu label — превратить в title. Теперь самое сложное — параметры kernel и initrd для grub4dos. Смотрите сами и «найдите 10 отличий»:
было:
label linux0
menu label Boot
kernel vmlinuz0
append initrd=initrd0.img root=live:CDLABEL=CentOS-6.2-i386-LiveCD rootfstype=auto ro liveimg quiet nodiskmount nolvmmount rhgb vga=791 rd.luks=0 rd.md=0 rd.dm=0
стало:
#label linux0
title Boot
kernel /CentOS/isolinux/vmlinuz0 root=live:LABEL=ZVER live_dir=/CentOS/LiveOS rootfstype=auto ro liveimg quiet nodiskmount nolvmmount rhgb vga=791 rd.luks=0 rd.md=0 rd.dm=0
initrd /CentOS/isolinux/initrd0.img
а в конце файла должно быть так:
#label memtest
title Memory Test
kernel /CentOS/isolinux/memtest
#label local
title Boot from local drive
root (hd0,0)
chainloader (hd0,0)+1

4. В корневом menu.lst добавляем:
title CentOS 6 LIVE
find --set-root --ignore-cd /usbdrive.tag
configfile /CentOS/centos.lst
В корневом каталоге должен быть пустой файл usbdrive.tag, можно приспособить и какой-то другой уникальный по названию файл

Всё, можно опробовать нашу флэшку на загружаемость! Но прежде чем перезагружаться — советую посмотреть в сторону решений на основе эмулятора QEMU, например, такого — здорово экономит время при отладке.

Автор: noldo32

* - обязательные к заполнению поля