Установить grub флешку linux

Установка загрузчика grub4dos на флешку из linux-консоли

Описанное мной ниже крайне просто и очевидно, но, я надеюсь, это хоть кому-то поможет сэкономить пару часов времени.

На просторах интернета можно найти много статей по созданию мультизагрузочных флешек. Все они сводятся, в основном, к использованию grub4dos и syslinux. Что может быть проще: скачать, например, grub4dos, распаковать, запустить и нажать пару кнопок? Это работает, только работает под Windows.

А что если у меня linux? Здесь возникает ситуация, когда вопросов на форумах о том, как из linux установить загрузчик в MBR чуть больше, чем ответов. Я, признаюсь, и сам мучился до сегодняшней ночи.

Всё оказалось просто
  • Скачать и распаковать архив grub4dos;
  • На флешке создать первичный раздел и пометить его, как «загрузочный»;
  • «Залить» загрузчик при помощи утилиты dd в загрузочную запись;
  • Скопировать файл grldr из архива на раздел флешки.
Теория
Практика

Но не всё так просто. Именно в этом была вся проблема. Недостаточно просто скопировать 446 байт. После этого мы просто видим ошибку:

В чём же дело?
На ответ натолкнуло то, что файл grldr.mbr имеет размер 9 килобайт. Всё решилось копированием его остальной части туда же — в начало диска (флешки). Только таблицу разделов и сигнатуру нужно оставить; просто пропускаем 512 байт:

dd if=grldr.mbr of=/dev/sdb bs=446 count=1 dd if=grldr.mbr of=/dev/sdb seek=512 skip=512 bs=1 

Вот и всё. Теперь копируем на флешку нужные файлы, ISO-образы, правим menu.lst. Благо, по этой части в интернете есть громаднейшее количество информации.

Заключение

Эту статью меня побудило написать то, что на каком-то сайте я видел способ с использованием dd, но он не работал по причине совершенно непонятного использования параметров этой утилиты.

Надеюсь, кому-то будет полезно.

Источник

Установка Grub на флешку

Установка загрузчика на флешку может понадобиться по нескольким причинам, например, вы хотите установить дистрибутив Linux на внешний носитель или же вам нужен еще один способ загрузить компьютер, когда основной загрузчик был затерт и система не загружается. Одним словом, может быть множество причин.

Мы уже рассматривали как установить Grub на флешку в статье про создание мультизагрузочной флешки из нескольких систем, а теперь поговорим об этом более детально.

Установка Grub на флешку

Если вы устанавливаете на фшелку дистрибутив, то у вас не возникнет никаких проблем с установкой загрузчика. Он устанавливается так же, как и при установке на жесткий диск. Вам достаточно перейти в chroot окружение новой системы, подключить все ее разделы, а затем просто установить загрузчик командой:

И создать конфигурационный файл:

grub-mkconfig -o /boot/grub/grub.cfg

Но если вам нужен загрузчик без операционной системы, то дело немного усложняется. Вы не можете использовать просто grub-install, а конфигурация вообще не будет создана, так как утилита не понимает где находятся файлы загрузчика и файлы конфигурации для него. Но есть решение.

Важно заметить, что при любом способе установки загрузчика, желательно, чтобы на флешке использовалась таблица разделов MBR. Конечно, я не встречал флешек с GPT, но вы сами можете ее создать при желании, а тогда с установкой загрузчика возникнут проблемы. Второе, что важно заметить, фшелку желательно отформатировать в файловую систему fat32. Это важно, чтобы там можно было разместить файлы Grub. Потому что если флешка будет форматирована в NTFS, то ничего не выйдет, а в ext4 — то вы не сможете подключить ее в Windows и использовать для обмена файлами.

Читайте также:  Astra linux mint repository

Далее подключите флешку в какую-нибудь папку, например, mnt:

Имя устройства /dev/sdb1 — это адрес первого раздела на вашей флешке. Обычно там есть только один раздел, так и должно быть. Если больше, то берите первый. А имя флешки может отличаться — sdb, sdc, sdd или другие. Смотрите как флешка называется у вас с помощью fdisk:

Когда устройство подключено мы можем перейти к установке загрузчика:

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:

Если возникли ошибки вы можете их быстро исправить не перезагружая компьютер. В дальнейшем, когда вам понадобятся новые пункты меню, вы можете добавить их вручную. Этот конфигурационный файл не будет стерт при обновлении системы, поскольку он на флешке.

Выводы

В этой статье мы рассмотрели как выполняется установка загрузчика grub на флешку. Несмотря на то, что это может вызвать некоторые сложности, процесс довольно понятен и не требует особых навыков. Зато, с такой флешкой вы можете быть уверены, что сможете загрузить компьютер, даже когда случайно повредили загрузчик. Если у вас остались вопросы, спрашивайте в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Мультизагрузочная Linux-флешка

Тут описана процедура создания флешки для загрузки множества iso-образов на компьютерах с BIOS. На компьютерах с UEFI она не работает. Для компов с UEFI я делал Универсальную загрузочную флешку для BIOS/UEFI.
Хорошо иметь под рукой флешку, с которой можно загрузиться для восстановления или установки системы. Также хорошо бы чтобы на ней помещались несколько разных образов ISO, доступных из меню. Создать такую флешку можно с помощью специализированных программных средств как под Linux ( Multisystem) так и под Windows (XBOOT), и даже мультиплатформенных (Yumi). Но можно пойти true linux way™ и использовать GRUB.

Создание и форматирование раздела

Сначала нужно создать на флешке раздел и сделать его загрузочным. Запускаем fdisk и натравливаем его на нашу флешку. Нижеприведенные команды делаем с правами root. Список дисков смотрим командой:

Запускаем fdisk (указав свою флешку):

Если на диске есть разделы, то ликвидируем их. Для этого жмем d
После удаления разделов жмем n и создаем новый.
В процессе создания указваем что раздел p (primary).
После создания жмем a, чтобы сделать раздел активным.
Затем жмем t, чтобы задать тип раздела и вводим тип c (FAT32).
Жмем w и записываем изменения на флешку.

Теперь надо отформатировать созданный раздел в FAT32:

umount /dev/sdx1 mkfs.vfat -F 32 -n MULTIBOOT /dev/sdx1

Установка загрузчика GRUB

Дальше ставим GRUB2 на флешку.
Создаем точку монтирования и монтируем флешку (не забываем sdx менять на актуальные буквы, соотвествующие флешке):

sudo mkdir /mnt/USB && sudo mount /dev/sdx1 /mnt/USB

Устанавливаем GRUB (выполняем с правами root):

sudo grub-install --force --no-floppy --boot-directory=/mnt/USB/boot /dev/sdx

Старые версии GRUB вместо –boot-directory используют -root-directory. Если что-то не так, то установщик GRUB скажет что “Installation is impossible. Aborting”.

Читайте также:  Laserjet pro m428fdn драйвер линукс

Создаем на флешку файлик grub.cfg

nano /mnt/USB/boot/grub/grub.cfg

И заполняем его примерно так:

set timeout=10 set default=0 menuentry "KNOPPIX_V7.2.0CD-2013-06-16-EN LiveCD" < loopback loop /KNOPPIX_V7.2.iso #linux (loop)/boot/isolinux/linux bootfrom=/KNOPPIX_V7.2.iso acpi=off keyboard=us language-us linux (loop)/boot/isolinux/linux bootfrom=/KNOPPIX_V7.2.iso keyboard=us language-us initrd (loop)/boot/isolinux/minirt.gz >menuentry "SystemRescueCd 4.6.1 Live (64bit, cache all files in memory and startX)" < loopback loop /systemrescuecd.4.6.1.iso linux (loop)/isolinux/rescue64 isoloop=/systemrescuecd.4.6.1.iso setkmap=us docache dostartx initrd (loop)/isolinux/initram.igz >menuentry "SystemRescueCd 4.6.1 Live (64bit, default boot options)" < loopback loop /systemrescuecd.4.6.1.iso linux (loop)/isolinux/rescue64 isoloop=/systemrescuecd.4.6.1.iso setkmap=us initrd (loop)/isolinux/initram.igz >menuentry "SystemRescueCd 4.6.1 Live (32bit, default boot options)" < loopback loop /systemrescuecd.4.6.1.iso linux (loop)/isolinux/rescue32 isoloop=/systemrescuecd.4.6.1.iso setkmap=us initrd (loop)/isolinux/initram.igz >menuentry "Ubuntu 14.04.3 x64 Desktop with GNOME. Live and Install" < loopback loop /ubuntu-14.04.3-desktop-amd64.iso linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04.3-desktop-amd64.iso quiet splash initrd (loop)/casper/initrd.lz >menuentry "Kubuntu 14.04.3 x64 Desktop with KDE. Live and Install" < loopback loop /kubuntu-14.04.3-desktop-amd64.iso linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/kubuntu-14.04.3-desktop-amd64.iso quiet splash initrd (loop)/casper/initrd.lz >menuentry "Xubuntu 14.04.3 x64 Desktop with LXDE. Live and Install" < loopback loop /xubuntu-14.04.3-desktop-amd64.iso linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/xubuntu-14.04.3-desktop-amd64.iso quiet splash -- initrd (loop)/casper/initrd.lz >menuentry "Ubuntu 14.04.3 x64 Server" < loopback loop /ubuntu-14.04.3-server-amd64.iso linux (loop)/install/vmlinuz iso-scan/filename=/ubuntu-14.04.3-server-amd64.iso quiet -- initrd (loop)/install/initrd.gz >menuentry "CentOS 7 03.15 x64 Install" < loopback loop /CentOS-7-x86_64-Minimal-1503-01.iso linux (loop)/isolinux/vmlinuz noeject inst.stage2=hd:LABEL=MIKEBOOT:/CentOS-7-x86_64-Minimal-1503-01.iso initrd (loop)/isolinux/initrd.img >menuentry "SystemRescueCd 4.8.1 Live (64bit, default boot options)" < loopback loop /systemrescuecd-x86-4.8.1.iso linux (loop)/isolinux/rescue64 isoloop=/systemrescuecd-x86-4.8.1.iso setkmap=us initrd (loop)/isolinux/initram.igz >menuentry "Try Xubuntu x64 16.04.1 without installing" < loopback loop /xubuntu-16.04.1-desktop-amd64.iso set gfxpayload=keep linux (loop)/casper/vmlinuz.efi iso-scan/filename=/xubuntu-16.04.1-desktop-amd64.iso file=(loop)/preseed/xubuntu.seed boot=casper quiet splash --- initrd (loop)/casper/initrd.lz >menuentry "Install Xubuntu 16.04.1 x64" < loopback loop /xubuntu-16.04.1-desktop-amd64.iso set gfxpayload=keep linux (loop)/casper/vmlinuz.efi iso-scan/filename=/xubuntu-16.04.1-desktop-amd64.iso file=(loop)/preseed/xubuntu.seed boot=casper only-ubiquity quiet splash --- initrd (loop)/casper/initrd.lz >menuentry "Install Xubuntu 16.04.1 i386" < loopback loop /xubuntu-16.04.1-desktop-i386.iso set gfxpayload=keep linux (loop)/casper/vmlinuz iso-scan/filename=/xubuntu-16.04.1-desktop-i386.iso file=(loop)/preseed/xubuntu.seed boot=casper only-ubiquity quiet splash --- initrd (loop)/casper/initrd.lz >menuentry "Install Ubuntu Server 16.04.2 < loopback loop /ubuntu-16.04.2-server-amd64.iso set gfxpayload=keep linux (loop)/install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed quiet --- initrd (loop)/install/initrd.gz >menuentry "Fedora-Workstation-Live 25" < loopback loop /Fedora-Workstation-Live-x86_64-25-1.3.iso linux (loop)/isolinux/vmlinuz iso-scan/filename=/Fedora-Workstation-Live-x86_64-25-1.3.iso root=live:CDLABEL=Fedora-WS-Live-25-1-3 rd.live.image quiet rootfstype=auto ro rhgb rd.luks=0 rd.md=0 rd.dm=0 initrd (loop)/isolinux/initrd.img >menuentry "Fedora-KDE-Live 25" < loopback loop /Fedora-KDE-Live-x86_64-25-1.3.iso linux (loop)/isolinux/vmlinuz iso-scan/filename=/Fedora-KDE-Live-x86_64-25-1.3.iso root=live:CDLABEL=Fedora-KDE-Live-25-1-3 rd.live.image quiet rootfstype=auto ro rhgb rd.luks=0 rd.md=0 rd.dm=0 initrd (loop)/isolinux/initrd.img >menuentry "Install Kubnuntu 16.04.2 Desktop" < loopback loop /kubuntu-16.04.2-desktop-amd64.iso set gfxpayload=keep linux (loop)/casper/vmlinuz.efi iso-scan/filename=/kubuntu-16.04.2-desktop-amd64.iso file=(loop)/preseed/kubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true --- initrd (loop)/casper/initrd.lz >

Этот содержит конфигурацию для загрузки с флешки KNOPPIX 7.2, SystemRescueCd 4.6.1, различных вариантов Ubuntu и CentOS 7. А дальше осталось просто положить указанные в grub.cfg образы ISO в корневую директорию флешки и переименовать их как указано в файле.

Еще немного примеров

menuentry "Linux Mint ISO" < loopback loop /linuxmint.iso linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper initrd=/casper/initrd.l iso-scan/filename=/linuxmint.iso noeject noprompt splash -- initrd (loop)/casper/initrd.lz >menuentry "DBAN ISO" < loopback loop /dban.iso linux (loop)/DBAN.BZI nuke="dwipe" iso-scan/filename=/dban.iso silent -- >menuentry "Tinycore ISO" < loopback loop /tinycore.iso linux (loop)/boot/bzImage -- initrd (loop)/boot/tinycore.gz >menuentry "Memtest 86+" < linux16 /memtest86+.bin >menuentry "Debian 9.5 i386 Install" < set background_color=black loopback loop /debian-9.5.0-i386-netinst.iso linux (loop)/install.386/vmlinuz vga=788 --- quiet initrd (loop)/install.386/initrd.gz >menuentry "Install Kubnuntu 19.04 Desktop" < loopback loop /kubuntu-19.04-desktop-amd64.iso set gfxpayload=keep linux (loop)/casper/vmlinuz iso-scan/filename=/kubuntu-19.04-desktop-amd64.iso file=(loop)/preseed/kubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true --- initrd (loop)/casper/initrd >menuentry "Install Ubnuntu 20.04 Server" < insmod part_gpt insmod ext2 insmod search_fs_uuid rmmod tpm search --no-floppy --set=root --fs-uuid 36c1a912-77c7-4cec-8120-c2088e1e131c set isofile="/ubuntu-20.04-live-server-amd64.iso" set gfxpayload=keep loopback loop ($root)$isofile linux (loop)/casper/vmlinuz iso-scan/filename=$quiet --- initrd (loop)/casper/initrd > menuentry "Install Ubnuntu 21.10 Server" < set gfxpayload=keep set isofile="/ubuntu-21.10-live-server-amd64.iso" loopback loop ($root)$isofile linux (loop)/casper/vmlinuz iso-scan/filename=$quiet --- initrd (loop)/casper/initrd > menuentry "Install Ubuntu Server 16.04 i386" < loopback loop /ubuntu-16.04.6-server-i386.iso set gfxpayload=keep linux (loop)/install/vmlinuz isoloop=/ubuntu-16.04.6-server-i386.iso file=/cdrom/preseed/ubuntu-server.seed quiet splash --- initrd (loop)/install/initrd.gz >menuentry 'Debian 10 i386 Install' < set background_color=black loopback loop /debian-edu-10.0.0-i386-netinst.iso linux (loop)/install.386/gtk/vmlinuz findiso=/debian-edu-10.0.0-i386-netinst.iso modules=debian-edu-install-udeb desktop=xfce vga=788 --- quiet initrd (loop)/install.386/gtk/initrd.gz >

Добавление других образов ISO

Для добавления других образов ISO нужно в файлик /boot/grub/grub.cfg прописывать параметры, которые обычно можно найти в файлах grub.cfg, syslinux.cfg и других, входящих в состав образа ISO.
То есть создаем новый раздел меню в /boot/grub/grub.cfg (копируя уже существующий), затем указываем файл ISO в строке loopback, а в строку linux указываем путь к ядру (то что append из syslinux.cfg). В строке initrd указываем путь к файлу initrd.

Читайте также:  Linux terminal online emulator

Скорее всего, в строке linux после пути к файлу ядра придется указать параметры загрузки ядра, которые позволят ядру работать с loop-устройством, на которое монтируется файл ISO. Для систем со схожим ядром, параметры, как правило, одинаковые. Например, для загрузки Fedora подойдут параметры от CentOS.

Много обновляемой информации о загрузке ISO образов с помощью GRUB можно тут: https://wiki.archlinux.org/index.php/Multiboot_USB_drive

Загрузка установочных образов Windows 7 и Windows 10 c помощью GRUB

Монтируем iso-образ Windows 7 или Windows 10, копируем с него все файлы на флешку с помощью cp или rsync и дописываем в grub.cfg такое:

set timeout=10 set default=0 menuentry "Windows 7 or Windows 10 installer" --class windows --class os < insmod part_msdos insmod ntfs insmod ntldr search --no-floppy --label MULTIBOOT --set=root ntldr /bootmgr >

Тут grub будет загружать модули с помощью insmod, потом search — искать раздел с меткой MULTIBOOT и когда найдет — с помощью –set укажет, что root находится на этом разделе, а затем передаст управление /bootmgr

В принципе, для красоты и удобства, было бы неплохо создать отдельный раздел на флешке (так я поступил при создании нового варианта флешки — Универсальная загрузочная флешка для BIOS/UEFI), отформатировать его с меткой Win7, распаковать файлы из iso-образа туда и указывать –label Win7. Просто в дистрибутиве windows также есть директоррия boot и если понадобится очистить флешку от инсталлятора windows, не затрагивая остальные ОС, то из этой директории файлы придется удалять вручную.

Discussion

Здравствуйте, не подскажите, как узнать необходимые параметры ядра, для grub.cfg, чтобы запустить ливобраз с usb накопителя? Что я только не пробовал, никак не выходит. Перекопал кучу сайтов и везде однотипно и не работает. Только благодаря вашему блогу удалось с минимальными корректироваками запустить минт. Такой настройки ни у кого не было: file=/preseed/linuxmint.seed boot=casper initrd=/casper/initrd.lz кстати z в расширении вы недопечатали и /cdrom/preseed в последней сборке просто /preseed. В общем у меня работает так: linux (loop)/live/vmlinuz boot=live initrd=/live/initrd.lz iso-scan/filename=/iso/lmde-4-cinnamon-64bit.iso noeject noprompt splash –

А вот LMDE и дебиан никак не сдаются. Хоть и использую их грубы. Не хочу импользовать программы так как они стирают все разделы на диске, а мне они нужны. Поэтому хочу ручками.

День добрый, Александр! Ну я же написал, что

Для добавления других образов ISO нужно в файлик /boot/grub/grub.cfg прописывать параметры, которые обычно можно найти в файлах grub.cfg, syslinux.cfg и других, входящих в состав образа ISO.

Универсальных рецептов тут нет, поскольку разные дистры собираются разными людьми/программами. Даже в пределах одного семества (например — Ubuntu) от версии к версии и от варианта к варианту (Gnome, KDE) — параметры запуска в grub могут быть разными, как и структура файлов в ISO.

Какой конкретно ISO Debian вы пытаетесь запустить с USB?

Источник

Оцените статью
Adblock
detector