Установка загрузчика на флешку может понадобиться по нескольким причинам, например, вы хотите установить дистрибутив 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 на флешку. Несмотря на то, что это может вызвать некоторые сложности, процесс довольно понятен и не требует особых навыков. Зато, с такой флешкой вы можете быть уверены, что сможете загрузить компьютер, даже когда случайно повредили загрузчик. Если у вас остались вопросы, спрашивайте в комментариях!
Создание загрузочных дисков и прочие полезные мелочи
Страницы
2016-07-25
Делаем флешку мультизагрузочной, настройка GRUB2 EFI
Часть 2, настройка GRUB2.
И так, после того как мы сконфигурировали загрузчик Grub4Dos, в первой части данного материала, перейдем к загрузчику GRUB2.
Первое что необходимо сказать о данном загрузчике, EFI версия GRUB2 отличается от BIOS версии. GRUB2 EFI построен на 64/32 битной архитектуре, и загрузка некоторых элементов в нем невозможна. То есть, запустить Grub4Dos из GRUB2 EFI не удастся, так же, как и не удастся использовать MEMDISK из загрузчика SYSLINUX. Кроме того, EFI версия загрузчика не поддерживает загрузку MBR дисков. Хотя, в BIOS версии GRUB2 это все сделать можно.
О поддержке ISO файлов в GRUB2. Подключать их можно только монтированием, для просмотра и последующей загрузки его содержимого. Нет возможности загрузить ISO образ целиком в память, или загрузить его с первого сектора, как, к примеру, это умеет делать Grub4Dos.
Напомню, содержимое флешки представленное в первой части статьи:
В виду указанных выше особенностей загрузчика GRUB2 в EFI исполнении, не удалось загрузить следующие LiveCD:
Hiren’s BootCD — не удалось запустить вообще. В GRUB2 EFI отсутствует команда ntldr.
Dr.Web LiveDisk — Запуск данного диска возможен при распаковке содержимого образа диска, в корень раздела флешки, но только для файловой системы FAT32. Мы используем NTFS, поэтому запуск данного LiveCD не удался.
Ultimate Boot CD — из набора программ данного диска, удалось запустить только PartedMagic. Остальные приложения отказались грузиться, так как представляли собой образы дисков.
Перейдем к конфигурационному файлу загрузчика GRUB2. Открываем файл grub.cfg в любимом текстовом редакторе (рекомендую Notepad++), так же удаляем его содержимое и вставляем следующий код.
grub.cfg (кликните на кнопку "Copy" для копирования)
В меню добавлен MemTest86 от PassMark. Для работоспособности соответствующего пункта, скачайте файл memtest.efi и скопируйте его в папку ISO.
Проверим полученный результат в виртуальной машине. Для этого воспользуемся VirtualBox’ом. О том, как загрузиться c флешки в VirtualBox читаем здесь.
четверг, 21 мая 2015 г.
Мультизагрзочная флешка с GRUB2 + UEFI
8260-A46C2 /dev/sdb
конечно, параметры нужно указать от своей системы. Все что после media. Важно правильно задать путь до флешки. без сокращений * и туда, куда она впервые примонтирована. А то GRUB2 выдаст ошибку.
собрать EFI образ:
grub-mkimage —compress=xz -O x86_64-efi -d /usr/lib/grub/x86_64-efi
-o /home/user/bootx64.efi -p "/boot/grub" part_gpt part_msdos
ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux
multiboot efi_gop efi_uga font gfxterm
файл будет в /home/user.
опция -p "/boot/grub" говорит о том откуда будет читаться config файл и дополнительные модули, дальше перечисление встроенных модулей.
чтобы собрать efi файл, в который встроена и конфигурация и модули делаем так:
mkdir -p /tmp/grub.temp/boot/grub
создаем /tmp/grub.temp/boot/grub/grub.cfg
cd /tmp/grub.temp/
grub-mkstandalone —directory="/usr/lib/grub/x86_64-efi/" —format="x86_64-efi" —compress=xz —output=/home/user/bootx64.efi boot/grub/grub.cfg
почему то важен относительный путь boot/grub/grub.cfg
и потом нужно для архитектуры x86_64 скопировать /usr/lib/grub/x86_64-efi в /boot/grub/
20 комментариев:
Простите, я являюсь виндопользователем (качать образ бубна и дебиан неохота) и я хочу грузить ISO-файлы. для этого (как я понял), мне необходимы файлы vmlinuz и initrd.lz (это, как я понял, ядра системы. ). Главный вопрос — не поделитесь этими файлами? Или где мне их скачать?
Добрый день, те файлы, которые вы перечислили — это система инициализации linux. Если вы хотите грузить из образа именно линукс систему, то вам нужны файлы инициализации именно того образа, который вы собрались подгружать.
Благодарю! Очень полезная статья с примерами. Помогла мне разобраться что и как делать. Раньше делал флешки на grub4dos, теперь он старал неактуален из-за этого uefi. Одно непонятно. Хотел обновить refind_x64.efi до последней версии, но он отказывается стартовать из Grub2. Вероятно автор знает какую-то хитрую команду, чтобы его самому собрать для этой цели, как это делает grub-mkimage? 🙂 Архив для тестирования использовал grub2sep.zip
Спасибо. А зачем refind запускать из grub? не легче его установить напрямую?
у меня archlinux и там довольно приличная wiki. Вот статья по refind https://wiki.archlinux.org/index.php/rEFInd
Сам я им не занимался, если честно.
Так а может проблема в GRUB2? и нужно просто собрать свежий?