Установка загрузчика на флешку может понадобиться по нескольким причинам, например, вы хотите установить дистрибутив Linux на внешний носитель или же вам нужен еще один способ загрузить компьютер, когда основной загрузчик был затерт и система не загружается. Одним словом, может быть множество причин.
Мы уже рассматривали как установить Grub на флешку в статье про создание мультизагрузочной флешки из нескольких систем, а теперь поговорим об этом более детально.
Установка Grub на флешку
Если вы устанавливаете на флешку дистрибутив, то у вас не возникнет никаких проблем с установкой загрузчика. Он устанавливается так же, как и при установке на жесткий диск. Вам достаточно перейти в chroot окружение новой системы, подключить все ее разделы, а затем просто установить загрузчик командой:
grub-install /dev/sda
И создать конфигурационный файл:
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 fdisk -l
Когда устройство подключено мы можем перейти к установке загрузчика:
sudo grub-install --root-directory=/mnt/ /dev/sdc
Здесь мы указываем параметр --root-directory, это та папка, которая будет считаться корнем системы, и откуда будут браться файлы загрузчика при старте. Установщик автоматически скопирует их туда. Устройство /dev/sdc - ваша флешка. После того, как установка будет завершена, можно перейти к настройке пунктов меню. Забегая наперед, если эта команда не работает, используйте опцию --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 на флешку. Несмотря на то, что это может вызвать некоторые сложности, процесс довольно понятен и не требует особых навыков. Зато, с такой флешкой вы можете быть уверены, что сможете загрузить компьютер, даже когда случайно повредили загрузчик. Если у вас остались вопросы, спрашивайте в комментариях!
Возник вопрос, будет ли работать GRUB, созданный на флэшке после переустановки Windows и создании нового раздела boot/efi большего размера? За статью в любом случае спасибо, опробовал рекомендации, всё работает, как надо, GRUB c флэшки запускает систему.
Написано сумбурно, видать писал какой-то копирайтер или околокомпьютерный гений.
Например, тут ни слова о /dev/sdc:
$ sudo grub-install --root-directory=/mnt/ /dev/sdc
Зато есть вот что: "Устройство /dev/sdb - ваша флешка"
WTF?
Поддерживаю. Автор видимо даже не удосужился перечитать свой же текст.
"используйте опцию --boot-directory ВМЕСТО --root-directory, разные версии Grub работают по разному:
sudo grub-install --boot-directory=/mnt/boot --root-directory=/mnt/ /dev/sdc
Это как понимать люди должны?
у меня нет папки casper а там initrd и vmlinux
что делать?
Автор, большое спасибо, всё работает! Просто замечательно!! Новая Ubuntu у меня при переустановке некорректно ставит загрузчик GRUB. Приходится восстанавливать MBR диска, а теперь с вашей флешкой ничего не надо. Выбрал в UEFI компьютера флешку и всё, Ubuntu загружается в любом случае.
(Мои данные: AMD® Ryzen 5 3600, DDR=32 GB, GeForce RTX 2080 Ti, SSD=120GB--Windows10, HDD=1.0 Tb--Ubuntu 20.04.2 LTS. Флешка /sde=8GB получилась при таких командах: 1) sudo mount /dev/sde1 /mnt/ 2) sudo grub-install --root-directory=/mnt/ /dev/sde).