2010
Загрузка с USB-устройств
Введение
Так случилось, что мой ноутбук не имеет возможности выполнять загрузку с 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-устройств.