Установка загрузчика на флешку может понадобиться по нескольким причинам, например, вы хотите установить дистрибутив Linux на внешний носитель или же вам нужен еще один способ загрузить компьютер, когда основной загрузчик был затерт и система не загружается. Одним словом, может быть множество причин.
Мы уже рассматривали как установить Grub на флешку в статье про создание мультизагрузочной флешки из нескольких систем, а теперь поговорим об этом более детально.
Установка Grub на флешку
Если вы устанавливаете на фшелку дистрибутив, то у вас не возникнет никаких проблем с установкой загрузчика. Он устанавливается так же, как и при установке на жесткий диск. Вам достаточно перейти в chroot окружение новой системы, подключить все ее разделы, а затем просто установить загрузчик командой:
И создать конфигурационный файл:
grub-mkconfig -o /boot/grub/grub.cfg
Но если вам нужен загрузчик без операционной системы, то дело немного усложняется. Вы не можете использовать просто grub-install, а конфигурация вообще не будет создана, так как утилита не понимает где находятся файлы загрузчика и файлы конфигурации для него. Но есть решение.
Важно заметить, что при любом способе установки загрузчика, желательно, чтобы на флешке использовалась таблица разделов MBR. Конечно, я не встречал флешек с GPT, но вы сами можете ее создать при желании, а тогда с установкой загрузчика возникнут проблемы. Второе, что важно заметить, фшелку желательно отформатировать в файловую систему fat32. Это важно, чтобы там можно было разместить файлы Grub. Потому что если флешка будет форматирована в NTFS, то ничего не выйдет, а в ext4 – то вы не сможете подключить ее в Windows и использовать для обмена файлами.
Далее подключите флешку в какую-нибудь папку, например, mnt:
sudo mount /dev/sdc1 /mnt/
Имя устройства /dev/sdb1 – это адрес первого раздела на вашей флешке. Обычно там есть только один раздел, так и должно быть. Если больше, то берите первый. А имя флешки может отличаться – sdb, sdc, sdd или другие. Смотрите как флешка называется у вас с помощью fdisk:
Когда устройство подключено мы можем перейти к установке загрузчика:
sudo grub-install –root-directory=/mnt/ /dev/sdc
Здесь мы указываем параметр –root-directory, это та папка, которая будет считаться корнем системы, и откуда будут браться файлы загрузчика при старте. Установщик автоматически скопирует их туда. Устройство /dev/sdb – ваша флешка. После того, как установка будет завершена, можно перейти к настройке пунктов меню. Забегая наперед, если эта команда не работает, используйте опцию –boot-directory вместо –root-directory, разные версии Grub работают по разному:
sudo grub-install –boot-directory=/mnt/boot –root-directory=/mnt/ /dev/sdc
Теперь нужно создать конфигурационный файл. Если вы используете grub-mkconfig, то получите такое же меню, как в вашей основной системе. Меня это вполне устраивает, только укажите правильное расположение файла, в папке /mnt:
sudo grub-mkconfig -o /mnt/boot/grub/grub.cfg
Теперь нам осталось протестировать как все работает. Для этого лучше использовать qemu:
qemu-system-x86 -hda /dev/sdc
Если возникли ошибки вы можете их быстро исправить не перезагружая компьютер. В дальнейшем, когда вам понадобятся новые пункты меню, вы можете добавить их вручную. Этот конфигурационный файл не будет стерт при обновлении системы, поскольку он на флешке.
Выводы
В этой статье мы рассмотрели как выполняется установка загрузчика grub на флешку. Несмотря на то, что это может вызвать некоторые сложности, процесс довольно понятен и не требует особых навыков. Зато, с такой флешкой вы можете быть уверены, что сможете загрузить компьютер, даже когда случайно повредили загрузчик. Если у вас остались вопросы, спрашивайте в комментариях!
Недавно оказался в такой вот ситуации. У меня есть Linux на машине и понадобилось переустановить/или установить другой дистрибутив. Отлично, это же легко! Загрузили дистрибутив с USB диска и вперед! Однако некоторые (особенно старые) машины не умеют загружаться с USB. Это было неприятно (особенно если учесть что я больше не записываю CD/DVD ни для каких нужд). Однако, если у вас есть GRUB1 установленный на машину, вы можете использовать его для загрузки с USB диска и даже переписать что-либо на жестком диске. Это вам конечно не поможет, если у вас компьютер без операционной системы или если у вас какой-нибудь Windows -> тогда, возможно, вам стоит посмотреть в сторону загрузки PXE. Я до сих пор не смог заставить так же работать GRUB2, некоторые вещи там делаются сложнее однако для старых машин этого может вполне хватить.
- Сначала определитесь с дистрибутивом (какой хотите загрузить/установить). Я использовал Linux Mint Debian записанный на USB через Unetbootin.
Они (как и другие дистрибутивы) хранят это в syslinux.cfg, посмотрите пункт default и затем измените подчеркнутые места.
[code]label unetbootindefault
menu label Default
kernel /ubnkern
Добавить
initrd=/ubninit boot=live config live-media-path=/casper quiet splash [/code]
- Загрузите целевую машину со вставленным USB приводом. После загрузки GRUB нажмите Escape и затем C для входа в командную строку GRUB.
- Если у вас всего два привода (включая тот что USB) на машине то внутренний будет обозначаться (hd0,0) и внешний (hd1,0), ну или что-то похожее.
Я набрал следующее, измените у себя так как я показывал выше, нажимая Enter после каждой команды.
[code]root (hd1,0)
kernel /ubnkern
initrd /ubninit boot=live config live-media-path=/casper quiet splash[/code] - Готовы? Наберите boot и нажмите enter.
Так же в GRUB замечательно работает автодополнение по кнопке Tab. Вы можете набрать root (hd нажать Tab и получить список доступных приводов, root (hd0, и получите доступные на приводе разделы и типы файловых систем, и наконец список целевых ядер и initrd образов.
Есть задача: требуется загрузить ось с флешки. Компьютер не умеет сам по себе стартовать с pendrive и/или отсутствует boot-flag на разделе с системой. На компьютере установлен grub2
1. Убедится, что требуемый раздел виден
Сначала нужно проверить, что флешка отображается в списке (ls). Например, нужен раздел (usb0, msdos6).
grub> ls
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd0,msdos2) (hd1,msdos1) (fd0)
В моём флешки нет. Чтоб grub увидел флешку нужно загрузить ряд модулей:
grub> insmod uhci
grub> insmod fat
После этого снова попробовать, флешка должна появиться
grub> ls
(usb0) (usb0,msdos7) (usb0,msdos6) (usb0,msdos5) (usb0,msdos1) (hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd0,msdos2) (hd1,msdos1) (fd0)