Вве­де­ние

Так слу­чи­лось, что мой ноут­бук не имеет воз­мож­но­сти выпол­нять загрузку с USB-устройств – нет у него соот­вет­ству­ю­щих опций в «BIOS». Это досад­ное недо­ра­зу­ме­ние я попы­та­юсь испра­вить с помо­шью «PLoP Boot Manager».

Сей­час для загрузки системы я исполь­зую «GRUB». В сле­ду­ю­щей вер­сии «GRUB2» появи­лась воз­мож­ность загрузки с USB-устройств, но мне не уда­лось это сделать.

Загру­зив­шись в «GRUB2» и перейдя в кон­соль, при команде «insmod ehci» ком­пью­тер про­сто уми­рал. Я нашел реше­ние, как загру­зить модуль «ehci» сов­местно с моду­лем «usbms», отве­ча­ю­щим за доступ к USB-устройствам в «GRUB2», но все равно, после этого я не смог уви­деть раз­делы на USB-устройстве. А при исполь­зо­ва­нии модуля «ohci» вме­сто «ehci», ком­пью­тер так же уми­рал при попытке выпол­нить команду «ls -l».

Так что при­шлось при­бег­нуть к помощи внеш­него загруз­чика «PLoP Boot Manager», что пол­но­стью решило проблему.

Уста­новка «PLoP Boot Manager»

Загру­жаем послед­нюю доступ­ную вер­сию с сайта «PLoP Boot Manager» во вре­мен­ную дирек­то­рию и рас­па­ко­вы­ваем.
# mkdir /tmp/plop
# cd /tmp/plop
# wget http://download.plop.at/files/bootmngr/plpbt-5.0.10.zip
# unzip plpbt-5.0.10.zip
# rm -f plpbt-5.0.10.zip

Потре­бу­ется кон­фи­гу­ра­тор бинар­ного загруз­чика, его тоже загру­жаем с сайта «PLoP Boot Manager».
# wget http://download.plop.at/files/bootmngr/plpcfgbt-0.8.zip
# unzip plpcfgbt-0.8.zip
# rm -f plpcfgbt-0.8.zip

При­ят­ным допол­не­ние будет воз­мож­ность загрузки с CD-ROM непо­сред­ственно из загруз­чика «GRUB».

Кон­фи­гу­ри­руем бинар­ный загруз­чик.
# cp ./plpbt-5.0.10/plpbt.bin ./plpbt.bin.usb
# cp ./plpbt-5.0.10/plpbt.bin ./plpbt.bin.cdrom
# ./plpcfgbt-0.8/plpcfgbt stm=hidden cnt=on cntval=1 dbt=usb ./plpbt.bin.usb
# ./plpcfgbt-0.8/plpcfgbt stm=hidden cnt=on cntval=1 dbt=cdrom ./plpbt.bin.cdrom

Мон­ти­руем «/boot», если этого еще не сде­лано.
# mount /boot

Создаем дирек­то­рию «/boot/plop» и копи­руем в нее полу­чив­ши­еся файлы:
# mkdir /boot/plop
# cp ./plpbt.bin.* /boot/plop

Оста­лось изме­нить кон­фи­гу­ра­цию загрузчика.

Настройка «GRUB»

Для «GRUB» это файл «/boot/grub/menu.lst».
/boot/grub/menu.lst# USB
title=Boot from USB
kernel /plop/plpbt.bin.usb

# CDROM
title=Boot from CDROM
kernel /plop/plpbt.bin.cdrom

Настройка «GRUB2»

Для «GRUB2» это файл «/boot/grub/grub.cfg».
/boot/grub/grub.cfg# USB
menuentry "Boot from USB" {
    rmmod vbe
    set vbe_mode=0xF00
    insmod vbe
    terminal_output console
    set root=(hd0,1)
    linux16 /plop/plpbt.bin.usb
}

# CDROM
menuentry "Boot from CDROM" {
    set root=(hd0,1)
    linux16 /plop/plpbt.bin.cdrom
}

Загрузка

Все готово для выпол­не­ния загрузки с USB-устройств из теку­щего загрузчика.

Встав­ляйте USB-устройства в порт только после загрузки «GRUB» и подо­ждите несколько секунд, иначе загрузка с USB-устройств выпол­няться не будет!

Дей­ствия при отсут­ствии уста­нов­лен­ного «GRUB»

Но что, если нет уста­нов­лен­ного загруз­чика «GRUB» на диске? В таком слу­чае можно создать загру­зоч­ный ISO-образ, запи­сать его на диск и выпол­нить загрузку пер­вич­ного загруз­чика с него.

Созда­дим допол­ни­тель­ные дирек­то­рии.
# mkdir -p /tmp/plop/iso/boot/{grub,plop}

Нам потре­бу­ется файл «stage2_eltorito» из состава пакета «sys-boot/grub» в слу­чае с «Gentoo GNU/Linux» или из пакета «grub-legacy» в слу­чае «Debian GNU/Linux».

Самое про­стое реше­ние - это загру­зить deb-пакет «grub-legacy» и извлечь необ­хо­ди­мый файл из него.
# wget http://ftp.ru.debian.org/debian/pool/main/g/grub/grub-legacy_0.97-61_i386.deb
# ar x grub-legacy_0.97-61_i386.deb data.tar.gz
# tar -xf data.tar.gz
# cp -f ./usr/lib/grub/i386-pc/stage2_eltorito /tmp/plop/iso/boot/grub

Ско­пи­руем бинар­ный файл загруз­чика.
# cp -f /tmp/plop/plpbt.bin.usb /tmp/plop/iso/boot/plop

Созда­дим файл «menu.lst».
# nano /tmp/plop/iso/boot/grub/menu.lst

/tmp/plop/iso/boot/grub/menu.lsttimeout 15
default 0

# USB
title=Boot from USB
kernel /boot/plop/plpbt.bin.usb

# Reboot
title Reboot
reboot

# Shutdown
title Shutdown
halt

И выпол­ним сле­ду­ю­щую команду для созда­ния ISO-образа.
# mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o grub.iso iso

Полу­чив­шийся файл «grub.iso» можно запи­сать на пустой компакт-диск и выпол­нять с него загрузку.

После копи­ро­ва­ния полу­чив­ше­гося файла «grub.iso» в нуж­ное место, можно уда­лить вре­мен­ную дирек­то­рию.
# rm -rf /tmp/plop

Таким обра­зом уда­лось решить все про­блемы, воз­ник­шие при невоз­мож­но­сти выбора загрузки из «BIOS» с USB-устройств.