Загрузочный носитель на основе grub2 for windows

Журнал «Системный администратор», читать, скачать, купить
Рубрика:

Администрирование / 
Инструменты

  | Дополнительные материалы

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

Игорь Орещенков ИГОРЬ ОРЕЩЕНКОВ, инженер-программист, iharsw@tut.by

Загрузочный носитель
на основе GRUB2 for Windows

В статье рассматривается подготовка мультизагрузочного носителя для BIOS/EFI компьютеров на основе загрузчика GRUB2 в среде операционной системы Windows. Он может быть пригоден для первичной инициализации компьютера или восстановления работоспособности операционной системы компьютера

Технические требования к загрузочному носителю

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

С учетом высказанных предпосылок в качестве загрузочного носителя удобно выбрать SD-карту. Оптические диски практически вышли из широкого обращения, а USB-флешки с аппаратной защитой от записи не везде можно встретить в продаже, и цена на них не всегда оправдана. В то же время любая SD-карта имеет переключатель защиты от записи, что в комплекте с кардридером превращает ее в недорогой, но функциональный носитель (см. рис. 1).

Рисунок 1. Из SD-карты и кардридера можно собрать функциональный носитель с аппаратной защитой от записи

Рисунок 1. Из SD-карты и кардридера можно собрать функциональный носитель с аппаратной защитой от записи

Чтобы носитель можно было использовать как на компьютерах с загрузчиком BIOS, так и на платформах со схемой загрузки EFI, создадим на носителе три раздела MBR:

  • Раздел FAT32 – для загрузчика GRUB2, ISO-образов специализированных дистрибутивов для восстановления работоспособности системы и Windows-утилит.
  • Раздел с ISO-образом дистрибутива Mageia-6.1-Live-DVD-Xfce-i586-DVD.iso, который, будучи не требовательным к ресурсам компьютера, предоставляет полноценный рабочий стол с офисным пакетом и веб-браузером.
  • Раздел с инсталляционным ISO-образом дистрибутива Mageia-6-i586-DVD.iso, который содержит в себе набор программного обеспечения, достаточный для организации как автоматизированного рабочего места офисного работника, так и для построения сервера организации.

Разметка носителя

Для хранения перечисленных выше данных будет достаточно накопителя емкостью 8 Гб. Его разметку можно выполнить под Windows с помощью штатной утилиты diskpart. Сначала нужно с помощью команды list disk вывести таблицу подключенных к компьютеру накопителей, чтобы определить, над каким выполнять операции.

C:> diskpart
DISKPART> list disk

По значению в колонке «Размер», которое должно равняться 7580 Мбайт, определяем номер носителя для дальнейшей работы. Допустим, что в колонке «Диск ###» интересующему носителю соответствует номер 9. Очистим его содержимое.

DISKPART> select disk 9
Выбран диск 9
DISKPART> detail disk

В соответствии с принципом осмотрительности администраторов баз данных «Семь раз SELECT – один UPDATE» убедимся в правильности нашего выбора нужного сменного носителя.

В выводе команды detail disk должна содержаться следующая надпись:

USB Mass Storage Device USB Device, Тип: USB

и информация о единственном пока что разделе:

FAT32 Сменный 7576 Мб Исправен

Если сомнений больше не осталось, выполняем очистку носителя:

DISKPART> clean

После успешного выполнения команды должно появиться сообщение:

DiskPart: очистка диска выполнена успешно

Если же появилось сообщение об ошибке, например:

Программа DiskPart обнаружила ошибку: Не удается найти указанный файл

то команду нужно повторить.

Снова выводим таблицу со списком носителей:

DISKPART> list disk

Для инициализированного носителя «Диск 9» будет выведено:

Размер: 7580 Мб, Свободно 7579 Мб

Свободное пространство нужно разметить на три раздела:

  • Один раздел – для ISO-образа Mageia-6-i586-DVD.iso размером 3,921,674,240 байт или 3740 Мб (если дважды разделить количество байтов на 1024).
  • Второй раздел – для ISO-образа Mageia-6.1-LiveDVD-Xfce-i586-DVD.iso размером 2,028,994,560 байт или 1935 Мб.
  • Третий раздел, который займет оставшееся свободным пространство, будет предназначен для загрузчика, Windows-утилит и вспомогательных загрузочных образов. Его размер составит 7579 – (3740 + 1935) = 1904 Мб.

Разделы лучше располагать на носителе в порядке, обратном перечисленному, – сначала загрузочный раздел, а после него – с ISO-образами дисков. Поэтому создадим сначала раздел размером 1904 Мб. Поскольку загрузочный носитель планируется максимально универсальным, попытаемся сделать этот раздел загрузочным по спецификации EFI:

DISKPART> create partition efi size=1904

Эта команда завершится с ошибкой и сообщением о том, что EFI-разделы поддерживаются только для GPT-дисков. К сожалению, один накопитель может быть размечен либо по схеме MBR, которую поддерживают загрузчики BIOS, либо по схеме GPT, которую поддерживают загрузчики EFI, и совместить эти схемы в пределах одного накопителя согласно разделу 5 спецификации UEFI 2.7 [8] никак не возможно.

Тем не менее практика показывает, что в большинстве случаев реальные реализации загрузчиков EFI без особых проблем распознают в качестве загрузочных разделы FAT32 с шестнадцатеричным кодом файловой системы EF, размещенные на дисках MBR. Воспользуемся этим фактом и создадим первичный MBR-раздел, после чего отформатируем его с присвоением метки BOOTDISK:

DISKPART> create partition primary size=1904
DISKPART> format FS=FAT32 LABEL="BOOTDISK" QUICK
DISKPART> set id=EF

Если между командами create partition и format по каким-то причинам пришлось завершить утилиту diskpart, то восстановить контекст после ее запуска можно командами:

DISKPART> select disk 9
DISKPART> select partition 1

При выполнении же команд в непрерывной последовательности вновь созданный раздел становится текущим автоматически, поэтому выполнять команду select partition для переключения фокуса нет необходимости.

Теперь можно создать остальные разделы. В качестве идентификатора файловой системы им нужно назначить шестнадцатеричное значение 17 (ISO 9660).

DISKPART> create partition primary size=1935
DISKPART> set id=17
DISKPART> create partition primary size=3740
DISKPART> set id=17

Каждая команда create partition должна завершаться сообщением:

Diskpart: указанный раздел успешно создан

а команда set сообщением:

Программа Diskpart успешно задала идентификатор раздела

Результат работы можно просмотреть с помощью команды list partition. А с помощью команды list disk можно убедиться, что на носителе не осталось неиспользованного пространства:

Свободно 0 байт

После этого можно завершить работу с программой diskpart:

DISKPART> exit

Запись ISO-образов в разделы накопителя

К сожалению, в операционной системе Windows нет средства, позволяющего с такой же легкостью, как утилита dd в мире UNIX, записывать файлы на устройства и обратно. Вероятно, по этой причине появился Windows-клон этой программы, которым мы воспользуемся для записи ISO-образов на разделы загрузочного накопителя.

Может возникнуть вопрос: «Зачем записывать образы ISO-дисков как «сырые данные» логических разделов и почему не записать их в виде файлов на обычный раздел, например FAT32?»

Дело в том, что образы Mageia [6] не поддерживают «петлевой» запуск из файла, как это уже давно умеют делать другие дистрибутивы, например Ubuntu и Fedora. Но поскольку они все же являются «гибридными» (то есть позволяют записывать себя как на DVD-матрицу, так и на USB-флешку), то есть шанс заставить их работать с раздела создаваемого носителя.

Для дальнейшей работы потребуется загрузить дистрибутивный архив dd-0.6beta3.zip [1] и извлечь из него программу dd.exe. Предполагается, что файлы с ISO-образами уже лежат в текущей папке.

Выясним способ адресации разделов создаваемого загрузочного носителя программой dd:

C:> dd.exe --list
NT Block Device Objects
...
Ошибка! Недопустимый объект гиперссылки.
  link to Ошибка! Недопустимый объект гиперссылки.
  Removable media other than floppy. Block size = 512
  size is 7948206080 bytes
Ошибка! Недопустимый объект гиперссылки.
  link to Ошибка! Недопустимый объект гиперссылки.
  Removable media other than floppy. Block size = 512
  size is 1996488704 bytes
Ошибка! Недопустимый объект гиперссылки.
  link to Ошибка! Недопустимый объект гиперссылки.
  Removable media other than floppy. Block size = 512
  size is 2028994560 bytes
Ошибка! Недопустимый объект гиперссылки.
  link to Ошибка! Недопустимый объект гиперссылки.
  Removable media other than floppy. Block size = 512
  size is 3921674240 bytes

В секции NT Block Device Objects нужно отыскать группу строк, сопровождаемых текстом Removable media other than floppy («Сменный носитель, отличный от гибкого диска»). Сведения о размерах найденных разделов подтверждают предположение о том, что записи «Ошибка! Недопустимый объект гиперссылки.» относятся к недавно созданным разделам на накопителе «Ошибка! Недопустимый объект гиперссылки.».

Теперь можно выполнять команды записи ISO-образов:

C:> dd.exe if=Mageia-6-i586-DVD.iso of=Ошибка! Недопустимый объект гиперссылки. bs=1M --progress
C:> dd.exe if=Mageia-6.1-LiveDVD-Xfce-i586-DVD.iso of=Ошибка! Недопустимый объект гиперссылки. bs=1M --progress

С помощью параметра if= программе передается имя записываемого файла ISO-образа, через параметр of= указывается раздел накопителя, в который будет произведена запись, параметр bs= задает размер единовременно копируемого блока, а параметр —progress позволяет интерактивно наблюдать в консоли количество записанных данных (из-за большого размера файлов процесс занимает продолжительное время, которое зависит от класса SD-карты и версии интерфейса кардридера).

Успешная запись должна завершиться следующими сообщениями:

3,740M 3740+0 records in 3740+0 records out
1935M 1935+0 records in 1935+0 records out

для первого и второго образа соответственно, которые говорят о равенстве количества прочитанных и записанных данных.

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

Для установки на носитель загрузчика GRUB2 нужно загрузить дистрибутивный пакет grub-2.02-for-windows.zip [2], извлечь из него папку grub-2.02-for-windows и сделать ее текущей. Для продолжения работы нужно выяснить, под какой буквой подключен в операционной системе раздел FAT32 настраиваемого носителя. Это можно сделать в программе diskpart с помощью команды list volume. Строка таблицы с нужным разделом будет содержать:

Тип: Сменный, Размер: 1904 Мб, Состояние: Непригоден

Допустим, что искомому разделу соответствует буква «R». Установка загрузчика может быть произведена командой:

C:> grub-install.exe --boot-directory=R: --target=i386-PC //./PHYSICALDRIVE9

Параметр —boot-directory задает путь, где будет создана папка grub с файлами загрузчика, параметр —target указывает тип загрузки (в рассматриваемом случае это BIOS), а последний параметр задает накопитель, загрузочный сектор которого будет модифицирован. Об успешной установке должны сообщить надписи:

Installing for i386-pc platform. Installation finished. No error reported

Поскольку было принято решение о создании универсального загрузочного носителя, можно установить загрузчики для 32- и 64-битных EFI:

C:> grub-install.exe --boot-directory=R: --efi-directory=R: --removable --target=i386-efi
C:> grub-install.exe --boot-directory=R: --efi-directory=R: --removable --target=x86_64-efi

Параметр —efi-directory указывает, где будет создана папка EFI с модулями, необходимыми для загрузки в режиме EFI, а параметр —removable информирует инсталлятор о том, что установка производится на сменный носитель.

На этом установка загрузчика завершена. Можно проверить созданный носитель на реальных компьютерах или с помощью специализированного эмулятора QemuBootTester. Последний позволяет выбрать носитель, с которого будет произведена загрузка виртуальной машины, и полный спектр режимов загрузки: BIOSEFI-IA32 и EFI-x64 (см. рис. 2).

Рисунок 2. Эмулятор QemuBootTester позволяет выбрать загрузочный носитель (1) и режим загрузки (2). Для тестирования загрузчика достаточно 128 Мб (3) виртуальной памяти, а виртуальный жесткий диск можно отключить. Запуск осуществляется кнопкой Run QEMU (4)

Рисунок 2. Эмулятор QemuBootTester позволяет выбрать загрузочный носитель (1) и режим загрузки (2). Для тестирования загрузчика достаточно 128 Мб (3) виртуальной памяти, а виртуальный жесткий диск можно отключить. Запуск осуществляется кнопкой Run QEMU (4)

Отметим, что при подключении носителя к компьютеру под управлением Windows система отображает диалоговые окна с предложением отформатировать нераспознанные разделы, на которые записаны образы дистрибутивов Linux. Естественно, делать этого не нужно.

При выборе носителя в качестве загрузочного управление системой возьмет на себя GRUB2. Его работа должна управляться с конфигурационным файлом, который пока что отсутствует. Поэтому на экране отобразится приглашение командного режима (см. рис. 3). В нем можно сразу опробовать команды:

  • grub> help – отображение списка команд;
  • grub> help команда – отображение подсказки по использованию команды.

Рисунок 3. В командном режиме загрузчика GRUB2 можно проанализировать конфигурацию компьютера и выполнить загрузку операционной системы в аварийном режиме

Рисунок 3. В командном режиме загрузчика GRUB2 можно проанализировать конфигурацию компьютера и выполнить загрузку операционной системы в аварийном режиме

Зачастую выводится больше информации, чем может уместиться на экране. Чтобы вывод на экран приостанавливался перед прокруткой и выдачей очередной порции сведений, нужно включить режим постраничного вывода:

grub> set pager=1

Очистить экран можно командой clear. Для завершения работы GRUB2 предусмотрены команды:

  • grub> reboot – перезагрузка;
  • grub> halt – выключение компьютера.

В компьютерах на основе Phoenix BIOS может возникнуть трудность, связанная с выбором загрузочного носителя. В предлагаемых вариантах присутствуют USB-FDDUSB-ZIP, USB-CDROM – и не ясно, какой является правильным. На самом деле – ни один из перечисленных.

Нужно через пункт меню Advanced BIOS Features → Boot Seq&Floppy Setup установить в качестве первичного устройства загрузки First Boot Device значение Hard Disk (вероятно, оно и так установлено), а в пункте меню Advanced BIOS Features → Hard Disk Boot Priority на первое место переместить значение USB-HDD0: USB Mass Storage Device. Если такой вариант для выбора отсутствует, нужно убедиться, что загрузочный носитель подключен, после чего выполнить «теплую» перезагрузку по <Ctrl> + <Alt> + <Del> и повторить процедуру.

Настройка загрузчика

Как уже было отмечено, в своей работе загрузчик GRUB2 руководствуется командами, записанными в конфигурационном файле /grub/grub.cfg на загрузочном носителе.

Язык конфигурирования очень напоминает язык командного интерпретатора bash, однако для включения поддержки некоторых конструкций нужно явным образом подключить соответствующие модули. Например, для проверки условий требуется модуль test, а для использования регулярных выражений – модуль regexp. Скомпилированные модули в файлах с расширением .mod на этапе установки GRUB2 уже были записаны в подкаталоги i386-pci386-efi и x86_64-efi, соответствующие режимам загрузки.

Загрузчик GRUB2 можно русифицировать. Для этого необходимо:

  • записать из дистрибутива файл с русифицированными сообщениями grub-2.02-for-windowslocalerugrub.mo на загрузочный носитель под именем grublocaleru.gmo;
  • записать из дистрибутива файл со шрифтом UNICODE grub-2.02-for-windowsunicode.pf2 на загрузочный носитель в подкаталог grubfonts;
  • подключить модули поддержки локализации, установки графических режимов и графической консоли для отображения символов кириллицы:
    grub> insmod gettext
    grub> insmod all_video
    grub> insmod gfxterm
  • загрузить шрифт UNICODE, установить русский язык, задать графический режим и активировать графическую консоль:
    grub> loadfont "unicode"
    grub> set lang=ru
    grub> set gfxmode=auto
    grub> terminal_output gfxterm

После выполнения приведенных настроек GRUB2 «заговорит» по-русски. Помимо этого открывается возможность использования файлов с заранее подготовленными подсказками на русском языке, которые можно записать на носитель в кодировке UTF-8, а в нужный момент вывести на экран с помощью команды cat:

grub> cat --dos /grub/help.txt

Ключ —dos предписывает трактовать двухбайтовые последовательности DA как символы перевода строки.

При запуске GRUB2 инициализирует некоторые переменные среды окружения, полный список которых можно вывести на экран командой set.

Так, переменная $prefix содержит путь к папке с файлами GRUB2, а переменная $grub_platform содержит идентификатор способа загрузки:

  • efi – если загрузка выполнена в режиме EFI-IA32 или EFI-x64;
  • pc – если загрузка выполнена в режиме BIOS.

Этот факт можно использовать для условной загрузки блоков конфигурации из файлов /grub/efi.cfg или /grub/pc.cfg для учета специфики режима или подключения пунктов меню:

insmod test
set pcfg="$prefix/$grub_platform.cfg"
if [ -e $pcfg ]; then
	source $pcfg
fi

Система меню и загрузка операционных систем

В конфигурационном файле grub.cfg можно описать меню с вариантами выбора, которые будут отображаться после загрузки вместо режима командной строки:

submenu "НазваниеРазделаМеню" {
	menuentry "НазваниеПунктаМеню" {
		... последовательность команд ...
	}
}

При этом сохраняется возможность выхода в командную строку с помощью клавиши <c>.

Для работы с файлами, находящимися на ISO-образах, удобно использовать файловый менеджер 7ZipFM [3] с подключенным в его настройках (через пункт меню «Сервис → Настройки → Редактор») текстовым редактором AkelPad [4] (см. рис. 4).

Рисунок 4. Файловый менеджер из пакета 7Zip позволяет исследовать содержимое ISO-образов и извлекать из них необходимые файлы, а текстовый редактор AkelPad дает возможность «на месте» просматривать содержимое текстовых файлов

Рисунок 4. Файловый менеджер из пакета 7Zip позволяет исследовать содержимое ISO-образов и извлекать из них необходимые файлы, а текстовый редактор AkelPad дает возможность «на месте» просматривать содержимое текстовых файлов

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

Например, в случае Ubuntu это будет ubuntu-18.10-desktop-amd64.isobootgrubloopback.cfg (еще потребуется указать путь к файлу с ISO-образом на загрузочном носителе в переменной окружения $iso_path).

Для дистрибутива Fedora можно воспользоваться блоком меню из файла Fedora-Workstation-Live-x86_64-29-1.2.isoEFIBOOTgrub.cfg в качестве основы, но к параметрам ядра нужно дописать указание пути к файлу образа в виде «iso-scan/filename=…».

Множество примеров пунктов меню для «петлевого» запуска различных дистрибутивов Linux можно найти в файле grub-2.02docsautoiso.cfg дистрибутивного пакета grub-2.02.tar.gz.

Описанным способом были сформированы пункты меню для запуска модулей дистрибутива System Resque CD [7], ISO-образ которого размещен в файле /ISO/systemrescuecd-x86-5.3.2.iso загрузочного носителя.

Стоит отметить метод подключения корневой файловой системы модуля NTPASSWD, предназначенного для сброса пароля администратора Windows. Она состоит из двух блоков: основного initrd.cgz и вспомогательного scsi.cgz с драйверами устройств SCSI. Их совместное использование реализовано командой:

initrd16 (loop0)/ntpasswd/initrd.cgz (loop0)/ntpasswd/scsi.cgz

Дистрибутивы Mageia не поддерживают «петлевую» загрузку, из-за чего их ISO-образы были записаны в разделы загрузочного носителя.

К сожалению, попытка выполнить запуск путем установки фокуса на содержащий дистрибутив раздел и передачи управления загрузчику командой chainloader +1 не увенчалась успехом. Это не удивительно, потому что загрузчик рассчитан на размещение в MBR, а не в загрузочный сектор раздела.

На помощь пришла команда GRUB2 syslinux_configfile, обнаруженная в эталонном конфигурационном файле grub-2.02docsosdetect.cfg, который входит в состав дистрибутивного пакета grub-2.02.tar.gz. Она позволяет подключить к текущему меню GRUB2 блок, записанный в формате загрузчика isolinux. Так это выглядит для дистрибутивов Mageia:

menuentry "Mageia 6.1 Live DVD" {
	search --set=root --fs-uuid 2018-10-01-18-55-31-00
	syslinux_configfile -i /isolinux/isolinux.cfg
}
menuentry "Mageia 6 Installation DVD" {
	search --set=root --fs-uuid 2017-07-15-07-08-52-00
	syslinux_configfile -i /isolinux/isolinux.cfg
}

Команды search в приведенных примерах осуществляют поиск на доступных носителях разделов с указанными в параметрах —fs-uuid уникальными идентификаторами и делают их текущими.

Узнать значения идентификаторов разделов можно с помощью команды ls -l, введенной в командном режиме GRUB2:

grub> ls -l
...
Раздел hd0,msdos3: Тип файловой системы iso9660 – Метка "Mageia-6-i586" – Время последнего изменения 2017-07-15 07:08:52 Суббота, 
	UUID 2017-07-15-07-08-52-00 – Раздел начинается с 3932160КиБ – Общий размер 3829760КиБ
Раздел hd0,msdos2: Тип файловой системы iso9660 – Метка "Mageia-6.1-Xfce-LiveDVD" – Время последнего изменения 2018-10-01 18:55:31 Понедельник, 
	UUID 2018-10-01-18-55-31-00 – Раздел начинается с 1950720КиБ – Общий размер 1981440КиБ
...

Команды syslinux_configfile подключают блоки меню из файлов isolinux.cfg на найденных разделах. Эстетический недостаток этого способа состоит в том, что вместо описаний пунктов меню на экране будут отображаться их метки. Но зато сохраняется функциональность.

Образ LiveDVD работает без замечаний – так, как будто был использован обычный загрузочный носитель. А для образа инсталляционного диска придется указать местонахождение установочных файлов. Для этого:

  • в окне с сообщением I can’t access a Mageia Installation disc in your CDROM drive нажать кнопку No;
  • в окне запроса носителя с установочными файлами (Please select the disk containing the copy of the Mageia Distribution install source) выбрать устройство USB Mass Storage Device;
  • в окне запроса раздела (Please select the partition containing the copy of the Mageia Distribution install source) выбрать третий раздел размером 3740 Мбайт;
  • в окне ввода пути к установочным файлам поле Please select directory оставить пустым – просто нажать <Enter>.

Установочные файлы будут найдены, запустится инсталлятор, и установка продолжится в штатном режиме.

Заключение

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

В статье рассмотрен способ подключения блоков загрузочного меню из конфигурационных файлов загрузчиков SysLinux/IsoLinux с помощью команды syslinux_configfile.

На сайте журнала http://samag.ru приведен рабочий вариант конфигурационного файла GRUB2 для загрузочного носителя BIOS/EFI с возможностью запуска модулей SystemResqueCD, получения рабочей среды на базе GNU/Linux Mageia 6 и установки этой операционной системы, который содержит.

  • grub.cfg – основной конфигурационный файл GRUB2;
  • pc.cfg – блок меню, специфичный для загрузки в режиме BIOS;
  • efi.cfg – блок меню, специфичный для загрузки в режиме EFI;
  • help.txt – файл с подсказкой о процедуре загрузки Windows;
  • helpefi.txt – файл с описанием особенностей использования SystemRescueCD в режиме EFI.

При изучении возможностей GRUB2, помимо интернет-источников [5], целесообразно использовать справочную информацию, имеющуюся в папке grub-2.02docs дистрибутивного пакета grub-2.02.tar.gz:

  • grub.info – документация на английском языке, которая может быть просмотрена в любом текстовом редакторе;
  • grub.cfg – конфигурационный файл, содержащий основные примеры загрузки операционных систем;
  • autoiso.cfg – конфигурационный файл, содержащий примеры загрузки операционных систем в «петлевом» режиме из файлов ISO-образов;
  • osdetect.cfg – конфигурационный файл, содержащий сценарии поиска загрузочных разделов для множества операционных систем с последующей их загрузкой.

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

  1. Утилита DD для Windows – http://www.chrysocome.net/dd.
  2. Загрузчик GRUB2 – ftp://ftp.gnu.org/gnu/grub/.
  3. Архиватор и файловый менеджер 7Zip – https://www.7-zip.org.
  4. Текстовый редактор AkelPad – http://akelpad.sourceforge.net/.
  5. Cтатьи о загрузочных носителях – https://www.bootdev.ru.
  6. Mageia GNU/Linux – http://www.mageia.org/ru/.
  7. System Rescue CD – http://www.system-rescue-cd.org.
  8. Спецификация UEFI 2.7 – http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_7_A%20Sept%206.pdf.

Ключевые слова: Linux, rescue.

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

  1. Главная
  2. Форум
  3. Загрузчики.
  4. GRUB 2



[Цитировать]

  • 20037
  • Стаж: 4 года
  • Сообщений: 7
  • Репутация:2[+] [-]


Всех приветствую, небольшой гайд по установке Grub-2.02 UEFI+Grub4dos-0.4.6a из под Windows.
Данной статьей хочу описать несложный способ создания флешки с базовым функционалом загрузчиков.
Для начала что нам потребуется :
1) флешка (для примера подойдет и на 1 гб) а дальше по вашим нуждам;
2) Программа HPUSBDisk скачать можно тут;
3) Программа BOOTICE скачать можно тут;
4) Программа Grub4DosUSB (авторство zxen) ранее выкладывали на этом форуме;
5) Программа QemuBootTester для тестирования ранее выкладывали на этом форуме;
Начнем:
1.1) Для предотвращения ошибок программой HPUSBDisk форматируем флешку (метка тома и файловая структура не имеют значения)
1.2) Открываем Bootice и идем в Parts Manage;
1.3) Открываем Re-Partitioning;
1.4) Выбераем USB-HDD mode (Multi-Partitions);
1.5) Выставляем нужные значения размера разделов (по умолчанию 2, лично я создал Legacy и UEFI (Важно раздел под uefi Grub обязательно должен быть в формате FAT32!, второй рекомендую выставить в NTFS для возможности работы и загрузки образов выше 4gb);
1.6) Возвращаемся в Bootice и идем в Parts Manage, там переназначаем букву следующему разделу (выделив его и нажав на Assign Drive Letter или пользуемся менеджером жестких дисков windows)
1.7) По факту получаем два раздела на флеш накопителе (можно использовать и внешние hddssd)
Установка Grub-2.02 UEFI
2) Скачиваем Grub-2.02 UEFI скачать разные версии и обновления можно по первой ссылке,нас интересует файл grub-2.02-for-windows.zip
Скачиваем его и распаковываем его содержимое в коневой каталог диска C:/ (диск С рекомендация, можно использовать и любое другое место, но не желательно)
Далее открываем командную строку От имени Администратора и вводим
cd /d C:grub-2.02-for-windows
grub-install.exe —boot-directory=F: —target=i386-pc //./PHYSICALDRIVE4 (Где F- имя диска в FAT32 который вы создали ранее ,именно это имя вы и впишете в других командах (где я пометил), PHYSICALDRIVE4 номер этого диска (флешки) можно посмотреть в менеджере жестких дисков)
grub-install.exe —boot-directory=F: —efi-directory=F: —removable —target=x86_64-efi
grub-install.exe —boot-directory=F: —efi-directory=F: —removable —target=i386-efi
по итогу имеем
C:grub-2.02-for-windows>grub-install.exe —boot-directory=F: —target=i386-pc //./PHYSICALDRIVE4
Installing for i386-pc platform.
Installation finished. No error reported.
C:grub-2.02-for-windows>grub-install.exe —boot-directory=F: —efi-directory=F: —removable —target=x86_64-efi
Installing for x86_64-efi platform.
Installation finished. No error reported.
C:grub-2.02-for-windows>grub-install.exe —boot-directory=F: —efi-directory=F: —removable —target=i386-efi
Installing for i386-efi platform.
Installation finished. No error reported.
Проверяем содержимое флешки, если данные файлы появились в папке grub кидаем файл grub;
2.1) Проверяем результат с помощью QemuBootTester выбирая загрузку EFI-64
Если все загрузилось, приступаем к части установки Grub4dos-0.4.6a.
Установка Grub4dos-0.4.6a.
3) Запускаем скачанную ранее программу Grub4DosUSB
Не трогая пункт ФОРМАТИРОВАТЬ выбираем второй раздел созданный ранее на флешке (в моем варианте это Legacy) и нажимаем установить.
3.1) Проверяем появление файлов на этом разделе и если они появились двигаемся дальше
3.2) Далее качаем новую версию Grub4dos-0.4.6a от сюда
3.3) И все содержимое данного архива помешаем в наш раздел (с заменой файлов).
Все, грузимся в программе QemuBootTester в режиме Legacy BIOS и проверяем работу.
Итоги:
На этом все.По итогу имеем базовый вариант с загрузчиками под uefi и legacy, дальнейшее наполнение и доработка полностью зависит от вас и ваших требований.
Заранее скажу — Я новичок — вспомните себя, а критикуя предлагайте aa

Последний раз редактировалось: Ttron27 (2019-01-09 16:40), всего редактировалось 2 раз(а)


[Цитировать]

Отправлено: 08-Янв-2019 09:18
(спустя 37 минут)

    vovan1982

  • 214
  • Стаж: 8 лет
  • Сообщений: 1021
  • Репутация:70[+] [-]
  • Откуда: Ростов-на-Дону


Ttron27, непонятно зачем весь это Копенгаген, все это уже давно есть на форуме, Conty9 уже года 2 назад выкладывал готовый вариант, 3-й спойлер сверху Два раздела на флешке — зачем это нужно и реализация такой возможности с помощью UTmake.
PS: делать на флэшке (не на USB-HDD) раздел с NTFS нерационально и не правильно, потому как она (файловая система) протоколируемая, а это значит, что запись идет даже при чтении из файла (пишется дата и время обращения к файлу). Это просто быстрее «уложит» Вашу флэшку.


[Цитировать]

Отправлено: 08-Янв-2019 09:32
(спустя 13 минут)

    Ttron27

  • 20037
  • Стаж: 4 года
  • Сообщений: 7
  • Репутация:2[+] [-]


60768

Ttron27, непонятно зачем весь это Копенгаген, все это уже давно есть на форуме, Conty9 уже года 2 назад выкладывал готовый вариант, 3-й спойлер сверху Два раздела на флешке — зачем это нужно и реализация такой возможности с помощью UTmake

Приму к сведению, про китайскую доработку не знал. Про разделы не совсем понял , пока не наблюдаю ухода от разделения дисков. Но тему по ссылке покурю aa


[Цитировать]

Отправлено: 08-Янв-2019 10:38
(спустя 1 час 6 минут)

    Ander_73

  • 15549
  • Стаж: 6 лет
  • Сообщений: 3140
  • Репутация:127[+] [-]


Ttron27,
лично я рекомендую версии G4D брать из первого абзаца этого мануала
а версии GRUB2 брать «родные» отсюда (а не виндовс-сборку)


[Цитировать]

Отправлено: 08-Янв-2019 11:17
(спустя 38 минут)

    stea.61

  • 2490
  • Стаж: 7 лет
  • Сообщений: 656
  • Репутация:65[+] [-]
  • Откуда: 61 RUS


60768

это уже давно есть на форуме

vovan1982, Ander_73, Ttron27, aa
И даже название темы от puhpol созвучно: GRUB 2 установка под Windows.
vovan1982, мож есть смысл как-то слить темы воедино?

Последний раз редактировалось: stea.61 (2019-01-08 11:25), всего редактировалось 1 раз


[Цитировать]

Отправлено: 08-Янв-2019 11:25
(спустя 8 минут)

    Joker-2013

  • 1039
  • Стаж: 7 лет 7 месяцев
  • Сообщений: 2053
  • Репутация:118[+] [-]
  • Откуда: из прошлого


stea.61, aa
Нет такой возможности на форуме…
Тема пусть будет. Человек не успел зарегистрироваться и уже создал полезную тему. Похвально.


[Цитировать]

Отправлено: 08-Янв-2019 11:33
(спустя 8 минут)

    Ttron27

  • 20037
  • Стаж: 4 года
  • Сообщений: 7
  • Репутация:2[+] [-]


60774

stea.61, aa
Нет такой возможности на форуме…
Тема пусть будет. Человек не успел зарегистрироваться и уже создал полезную тему. Похвально.

ah Спасибо, действительно еще зеленый и судя по тому что скинули выше есть куда расти еще ого го.
Но нашел очень много действительно полезного ,а главное понимающих людей az, но согласен с stea.61 не хватает общей проработанной инструкции, все делают очень по разному. Интересна была бы тема обобщенная с какими то фишками и пояснениями.


[Цитировать]

Отправлено: 08-Янв-2019 15:03
(спустя 3 часа)

    BalAngel

  • 647
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 248
  • Репутация:14[+] [-]


нас интересует файл grub-2.02-for-windows.zip …. на флешке … Приму к сведению, про китайскую доработку не знал… И даже название темы от puhpol созвучно: GRUB 2 установка под Windows. …

IMHO
grub-2.02-for-windows.zip — это подходит для Legacy, тут можно использовать и grub-mkimage.exe, но автор загрузочным делает второй раздел NTFS используя Grub4DOS. Я бы загрузочный делал на первом разделе — EFI. Пишут, что grub-2.02-for-windows не поддерживает UEFI enabled Secure Boot, чего я не знал 2 года назад. Но я до сих про не знаю, что это означает: signature at http://ftp.gnu.org/gnu/grub/grub-2.02-for-windows.zip.sig. Касательно Debian, было бы интересно узнать, как его установить в среде Windows, просто извлекаю из дистрибутива Ubuntu.
Флешка. Тут уже ответили. Все сборки разместить на FAT32, на раздел NTFS — только сборки с VHD и большие файлы.
Лично я флешки использую только для экспериментов. Теперь внешние диски негромоздкие (футлярчик в портмоне) и не требуют «питания»
UTmake — не китайская доработка (или у китайцев другое название?). Не отнимайте авторства у conty9
GRUB 2 установка под Windows — Там (2. стр.) stea.61 пахожее изложил. Шапка по прежнему — практически пуста
Есть еще тема MultiBoot USB grub4dos+GRUB2_UEFI, но там тоже нет обобщения.
Пусть Ttron27 тренируется, если долго мучиться, что-нибудь получится. Дальше будет видно.
Ttron27, правильно сделали, колышки вбили, можете дерзать. Вам повезло

Последний раз редактировалось: BalAngel (2019-01-09 09:45), всего редактировалось 1 раз


[Цитировать]

Отправлено: 08-Янв-2019 15:35
(спустя 31 минута)

    Ttron27

  • 20037
  • Стаж: 4 года
  • Сообщений: 7
  • Репутация:2[+] [-]


Касательно Debian, было бы интересно узнать, как его установить в среде Windows

Если я не ошибся, в windows 10 с этим может помочь PowerShell(по крайней мере эмуляция linx у меня отрабатывала отлично, а эмуляцией ubuntu ставлю прошивки Padavan ) ну или виртуалка с пробросом порта с usb устройства.

Пишут, что grub-2.02-for-windows не поддерживает UEFI enabled Secure Boot

Если я не ошибся тут на форуме был такой метод

UTmake — не китайская доработка (или у китайцев другое название?)

Нет, я не знал про 0 сектора, про программу пока ничего не скажу .

Флешка. Тут уже ответили. Все сборки разместить на FAT32, на раздел NTFS — только сборки с VHD и большие файлы.
Лично я флешки использую только для экспериментов. Теперь внешние диски негромоздкие (футлярчик в портмоне) и «не требуют питания»

aa Полностью согласен, но моя специфика работы не дает носить такой( а по факту их надо штуки 3 мне, да и с питанием у некоторых проблемы еше на usb2 не говоря про то где я юзаю ag да и не у всех есть деньгипотребности. А флешки сейчас то же разные . Но я вас понял. буду ковырять дальше


[Цитировать]

Отправлено: 09-Янв-2019 10:14
(спустя 18 часов)

    BalAngel

  • 647
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 248
  • Репутация:14[+] [-]


эмуляция linx у меня отрабатывала отлично …. Если я не ошибся тут на форуме был такой метод … моя специфика работы не дает носить такой( а по факту их надо штуки 3 мне, да и с питанием у некоторых проблемы еше на usb2 не говоря про то где я юзаю ag да и не у всех есть деньгипотребности …

linx — посмотрю когда-нибудь
Grub2 & Secure Boot — там про Grub2 for Windowsдаже не заикается
их надо штуки 3 — поправил свое сообщение выше «питанием» (кирпич с 2 штепселями). Не знаю зачем столько, вам виднее
Интересует ответ на то, что значит — сигнатура на http://ftp.gnu.org/gnu/grub/grub-2.02-for-windows.zip.sig — что архив безопсный, цифровой подписью?
Другие вопросы по размещению файлов согласно вашей инструкции, когда прочту все нормально, а не бегло. Это не главный вопрос


[Цитировать]

Отправлено: 09-Янв-2019 16:56
(спустя 6 часов)

    BalAngel

  • 647
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 248
  • Репутация:14[+] [-]


Установка Grub-2.02 UEFI+Grub4dos-0.4.6a из под Windows
Пропустим пока
Для начала что нам потребуется :
Начнем:
1.6) … нажав на Assign Drive Letter (у меняSetAccessible) …. У меня в итоге получился видимый раздел NTFS, а это нехорошо. Надо написать, что нужно проверить, что видимым был раздел FAT32 и, если надо нажать …

Установка Grub-2.02 UEFIа здесь надо остановиться. Никто не возразил против того, что EFI Grub2forWindows не поддержмивает возможность Secure Boot. Надо брать подписанные линуксовые, самый распространенный был Ubuntu (IMHO), сейчас стал использоваться Kaspersky Reskue Disk (krd). Который из них надежнее, даже примерной статистики не видел. Если пишут krd, пусть будет krd. Последние 2 команды grub-install.exe … EFI не подходят. Надо описать откуда брать папки EFI и boot (krd), файл krd_version.txt, поместить их в корневой каталог раздела FAT32. И только сейчас перейти к скачать можно по первой ссылке, нас интересует файл grub-2.02-for-windows.zip разархивировать и выполнить команду grub-install.exe—boot-directory=F: —target=i386-pc (насчет папки загрузки надо подумать, теперь голова не работает), посмотрите, что пишет stea.61 в стр. №2 его ссылки. IMHO, grub.cfg надо дополнить кое-чем более, как перезагрузка и выключение, было бы нагляднее, да он и не нужен, есть в комплекте krd, но придется перед выкладыванием его обработать.
На сегодня всё. Может не прав, примите как моё мнение
+++++
Установка Grub4dos-0.4.6a.
Почему на раздел NTFS, почему не установить на FAT32 и не установить на один раздел все загрузчики сразу? Возможно делаете из-за своих соображений и ваших потребностей, поэтому и такие вопросы
В итоге я вижу описание ваших действий по созданию загрузочной флешки — скачать это и то, запустить то и это. Моим мнением, следовало собрать все, добавить варианты *.cfg, *.lst и описание подробное, и запаковать. Да и хорошо бы батник состряпать. Обнародовать. А ещё лучше усвоить UTmake от conty9 и далее как писалось в прошлом предложении …. Всё идет к простому очередному шаблону, которых есть предостаточно.
У меня тоже есть, по мотивам китайского, хорошо, что не опибликовал, мне сообщили, что loopback с включенным secure boot поддерживается, что значит — можно убрать примечание «(disabled Secure Boot)» в загрузочной записи про запуск линуксовых исо.
А если тему изменить, например «Шаблоны мультизагрузки Grub2 UEFI/Legacy + Grub4DOS + syslinux + etc.» и собрать в шапку проверенные из разных ветвей, конечно, с указанием источника, автора?
Не знаю, кто читает, что я написал — впечатление, сам себе пишу


[Цитировать]

Отправлено: 10-Янв-2019 15:13
(спустя 22 часа)

    Ttron27

  • 20037
  • Стаж: 4 года
  • Сообщений: 7
  • Репутация:2[+] [-]


60825

Установка Grub-2.02 UEFI+Grub4dos-0.4.6a из под Windows
Пропустим пока
Для начала что нам потребуется :
Начнем:
1.6) … нажав на Assign Drive Letter (у меняSetAccessible) …. У меня в итоге получился видимый раздел NTFS, а это нехорошо. Надо написать, что нужно проверить, что видимым был раздел FAT32 и, если надо нажать …
Установка Grub-2.02 UEFIа здесь надо остановиться. Никто не возразил против того, что EFI Grub2forWindows не поддержмивает возможность Secure Boot. Надо брать подписанные линуксовые, самый распространенный был Ubuntu (IMHO), сейчас стал использоваться Kaspersky Reskue Disk (krd). Который из них надежнее, даже примерной статистики не видел. Если пишут krd, пусть будет krd. Последние 2 команды grub-install.exe … EFI не подходят. Надо описать откуда брать папки EFI и boot (krd), файл krd_version.txt, поместить их в корневой каталог раздела FAT32. И только сейчас перейти к скачать можно по первой ссылке, нас интересует файл grub-2.02-for-windows.zip разархивировать и выполнить команду grub-install.exe—boot-directory=F: —target=i386-pc (насчет папки загрузки надо подумать, теперь голова не работает), посмотрите, что пишет stea.61 в стр. №2 его ссылки. IMHO, grub.cfg надо дополнить кое-чем более, как перезагрузка и выключение, было бы нагляднее, да он и не нужен, есть в комплекте krd, но придется перед выкладыванием его обработать.
На сегодня всё. Может не прав, примите как моё мнение
+++++
Установка Grub4dos-0.4.6a.
Почему на раздел NTFS, почему не установить на FAT32 и не установить на один раздел все загрузчики сразу? Возможно делаете из-за своих соображений и ваших потребностей, поэтому и такие вопросы
В итоге я вижу описание ваших действий по созданию загрузочной флешки — скачать это и то, запустить то и это. Моим мнением, следовало собрать все, добавить варианты *.cfg, *.lst и описание подробное, и запаковать. Да и хорошо бы батник состряпать. Обнародовать. А ещё лучше усвоить UTmake от conty9 и далее как писалось в прошлом предложении …. Всё идет к простому очередному шаблону, которых есть предостаточно.
У меня тоже есть, по мотивам китайского, хорошо, что не опибликовал, мне сообщили, что loopback с включенным secure boot поддерживается, что значит — можно убрать примечание «(disabled Secure Boot)» в загрузочной записи про запуск линуксовых исо.
А если тему изменить, например «Шаблоны мультизагрузки Grub2 UEFI/Legacy + Grub4DOS + syslinux + etc.» и собрать в шапку проверенные из разных ветвей, конечно, с указанием источника, автора?
Не знаю, кто читает, что я написал — впечатление, сам себе пишу

Читаю все и внимательно read, сейчас вы озадачили вопросом Secure Boot, насколько знаю , не отключаемый Secure Boot есть только на планшетах на ARM с предустановленной Windows, а в остальном его можно отключить и это вроде как не беда. Возможно данное инфо окажется полезным , в любом случае поковыряю в свободное время unix системы и если что то есть интересное попробую реализовать.


[Цитировать]

Отправлено: 10-Янв-2019 16:40
(спустя 1 час 26 минут)

    vovan1982

  • 214
  • Стаж: 8 лет
  • Сообщений: 1021
  • Репутация:70[+] [-]
  • Откуда: Ростов-на-Дону


Ttron27, ну да конечно. Вы видать с ноутбучными биосами мало знакомы.


[Цитировать]

Отправлено: 10-Янв-2019 17:27
(спустя 47 минут)

    KottoSOFT

  • 206
  • Стаж: 8 лет
  • Сообщений: 562
  • Репутация:64[+] [-]


Приветствую, друзья я наверно задам самый глупый вопрос в этой теме, но тем не менее меня это интересует.
Вот если взять GRUB4DOS можно его открыть в BOOTICE или в утилитке от JOKER2013
Не принципиально удалить всё, что написано внутри и прописать, что то своё пример

configfile /KSFT/BOOT/GRLDR/menu.lst

Сделать основным загрузчиком bootmgr а уже в BCD прописать путь для запуска GRUB4DOS
Так вот можно ли проделать то же самое с GRUB2?
Чтобы в корне флешки не было кучи папок, и стартовала по старинке с bootmgr


[Цитировать]

Отправлено: 10-Янв-2019 17:50
(спустя 23 минуты)

    Ander_73

  • 15549
  • Стаж: 6 лет
  • Сообщений: 3140
  • Репутация:127[+] [-]


KottoSOFT,
— GRUB2 для BIOS-а (Legacy) можно пересобрать самостоятельно с нужными опциями
— GRUB2 для EFI без ЦП можно пересобрать самостоятельно с нужными опциями
— GRUB2 для EFI с валидной ЦП пересобрать, разумеется, нельзя

Страница 1 из 5

Текущее время: 06-Фев 02:42

Часовой пояс: UTC + 3

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы

August 4 2014, 23:49

Промучившись вечер с 8-ми гиговой флэшкой для создания следующего:
— установочная загрущку убунты вместе с файлом сохранения документов
— возможность грузануть уже установленную на диск убунту (на случай слёта груба с диска)
— возможность грузиться с любого другого ИСО файла
— загрузка установки Windows 7 (а именно http://xtreme.ws/xtreme-os/1398658-microsoft-windows-7-ultimate-sp1-x64-xtremews-v30-noyabr-2013-g.html)

получился вот такой рецепт:
делаем так:

1) при помощи утилиты

Создание загрузочного диска

(sudo apt-get install usb-сreator-gtk) или universal usb installer из-под windows создаем загрузочную флэшку с файлом сохранениея настроек и документов (Persistant file for storing documents and settings)

2) устанавливаем на флэшку GRUB2
sudo grub-install —no-floppy —root-directory=/media/user/8gb-flashka/ /dev/sdb
где /media/user/8gb-flashka/ — путь к корню флэшки (user — имя пользователя, 8gb-flashka — метка раздела флэшки)
mkdir /media/user/8gb-flashka/boot
mkdir
/media/user/8gb-flashka/boot/grub

sudo grub-mkconfig -o /media/user/8gb-flashka/boot/grub/grub.cfg
где grub-mkconfig — это фактически тот же самый update-grub, только это и есть та сама команда, которую с некоторыми параметрами запускает алиайс update-grub
открываем сгенерированный конфиг
sudo gedit /media/user/8gb-flashka/boot/grub/grub.cfg
и добавляем в него следующие записи меню прямо сразу после строчки export linux_gfx_mode:

[Вставляем эти пункты меню в дополнение к имеющимся]menuentry ‘Windows 7 SP1 x64 Setup and Recovery Environment’ —class windows —class os {
    insmod part_msdos
    insmod fat
    insmod ntldr
    set root=’hd0,msdos1′
    ntldr ($root)/bootmgr
}

menuentry ‘Ubuntu ISO’ —class ubuntu —class gnu-linux —class gnu —class os {
    loopback loop /ubuntu-14.04.1-desktop-i386.iso
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-14.04.1-desktop-i386.iso noeject noprompt —
    initrd (loop)/casper/initrd.lz
}

menuentry ‘Try Ubuntu 14.04 on this flash drive without installing’ —class ubuntu —class gnu-linux —class gnu —class os {
    linux    /casper/vmlinuz  file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=${iso_path} quiet splash —
    initrd    /casper/initrd.lz
}

menuentry ‘Install Ubuntu 14.04 from this flash drive’ —class ubuntu —class gnu-linux —class gnu —class os {
    linux    /casper/vmlinuz  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity iso-scan/filename=${iso_path} quiet splash —
    initrd    /casper/initrd.lz
}
menuentry ‘Check Ubuntu 14.04 files on this flash drive for defects’ —class ubuntu —class gnu-linux —class gnu —class os {
    linux    /casper/vmlinuz  boot=casper integrity-check iso-scan/filename=${iso_path} quiet splash —
    initrd    /casper/initrd.lz
}


Не забудьте заменить fat на ntfs, если флэшка отформатирован в ntfs!
Подправляем выделенное жирным на нужный вам файл iso линухи.

3) и сливаем нужные вам исошники и все-все файлы из исошника винды (не бойтесь совместить каталог boot линухи и винды). Файлы из исошника можно выташить при помощи того же Winrar’а.

4) проверяем загружаемость флэшки из-под линукса не отходя от кассы
— ставим KVM
sudo apt-get install kvm
— пробуем грузануться виртуально с нашей флэшки
sudo kvm -boot c -drive file=/dev/sdb,cache=none -m 1024
где:
/dev/sdb — путь к флэшке;
cache=none — отключает кэширование (нужно, иначе изменения, внесённые в конфиги и т.п. не будут действовать, пока не перемонтируешь флэшку — можно удалить, когда уже всё заработает, для проверки загрузки той же винды или исошника линухи, так как отсутствие кэша сильно замедляет быстродействие;
-m 1024 — объем оперативки для виртулизации, в принципе хватит и 256, но тогда нельзя будет проверить запускаемость винды (она упадёт с ошибкой 0x00000017).

За основу взята вот эта статья и вот эта.

  • Печать

Страницы: [1] 2   Вниз

Тема: Загрузочная Super USB flash на GRUB2  (Прочитано 8189 раз)

0 Пользователей и 1 Гость просматривают эту тему.

В интернете масса вариантов по созданию универсальных загрузочных флешек, но практически все они используют Grub4dos для загрузки mbr и Grub2 (или подобное) в качестве загрузчика EFI.

Я купил себе новую флешку и решил сделать ее с поддержкой гибридной загрузки mbr + EFI, загрузку установок операционных систем (попроще) и прочего полезного софта. Постараюсь изложить по порядку процедуру создания флешки, по возможности приведу команды которыми выполняются нужные действия. В интернете я подобного варианта организации мультизагрузки не встречал, есть только описания отдельных приемов, которые я и использовал в комплексе. Основным достоинством использования только grub2 является наличие единого файла конфигурации для EFI и MBR загрузки, минимум файлов самих загрузчиков, поддержка русского языка и унификация настройки.

1. Подготовка раздела. Так как флешка гибридная, то требуется создать таблицу разделов msdos и первичный раздел fat32 размером таким, чтобы на него поместились нужные операционные системы. Можно использовать Gparted или fdisk для создания разделов. Выставляем для раздела флаг Boot и через fdisk желательно задать тип раздела EF (указываем что это EFI раздел).
2. Размещение загрузчика EFI. Этот этап достаточно прост, создаем каталог EFI/BOOT и размещаем в нем файлы grub2:

bootx64.efi - загрузчик grub2
grub.cfg - настройки и меню grub2 он будет использоваться и для grub-mbr
ter-u18n.pf2 - файл шрифта меню grub2, может быть заменен любым другим шрифтом формата pf2. Если не требуется руссификация, то файл можно не добавлять
ru.mo - руссификация grub2. Если не требуется руссификация, то файл можно не добавлять.

2.1 Создание bootx64.efi.  Этот файл я сделал самостоятельно используя grub-mkimage, пример моей команды:

grub-mkimage --directory=/usr/lib/grub/x86_64-efi --compression=auto 
--config=/usr/share/grub/grub.cfg --verbose --prefix=/EFI/BOOT
--output=grubx64.efi --format=x86_64-efi
part_gpt part_msdos disk memdisk fat exfat lvm ext2 ntfs iso9660 normal gzio xzio test search configfile linux linux16 chain loopback echo efi_gop efi_uga file halt reboot ls true gfxterm gettext font

В таком виде результатом работы команды будет файл grubx64.efi который потом перименовывается в bootx64.efi.
/usr/share/grub/grub.cfg файл настроек который зашивается внутрь grubx64.efi, у меня сделано такое содержание:

if [ -e /EFI/BOOT/grub.cfg ]; then
    set prefix=($root)/EFI/BOOT
    configfile ($root)/EFI/BOOT/grub.cfg
else
    search.file /grub.cfg root
    set prefix=($root)
    configfile ($root)/grub.cfg
fi

т.е. файл с настройками можно разместить или в EFI/BOOT или в корне.

« Последнее редактирование: 25 Октябрь 2019, 04:31:20 от Pro »


Записан


3. Размещение загрузчика MBR. В интернете очень мало толковой информации по размещению grub2 на флешке, много инструкций для размещения на жестких дисках, но либо на отдельном разделе, либо на ext2 разделе причем эти инструкции содержат команды типа grub-install и т.п. Я использовал более простой метод установки grub2. На моей флешке загрузчик grub2 размещается до начала первого раздела т.е. его не видно, повредить сложно и т.п. Такая возможность в grub2 предусмотрена и делается командой:

grub-bios-setup -d. -b ./boot.img -c ./core.img /dev/sdb

где /dev/sdb флешка которую делаем загрузочной
3.1 файл boot.img — стандартный файл из комплекта grub2, это содержимое нулевого сектора диска. Есть еще файл boot_hybrid.img, но я не нашел описание в чем отличия между ними.
3.2 файл core.img — в интернете с трудом нашлась информация о том, что представляет из себя этот файл, оказалось что этот файл делается grub-mkimage только выходной формат файла выставляется другой. Я использовал команду:

grub-mkimage --directory=/usr/lib/grub/i386-pc --compression=none 
--verbose --prefix=(hd0,msdos1)/EFI/BOOT
--output=core.img --format=i386-pc
part_gpt part_msdos biosdisk disk memdisk fat lvm ntldr exfat ext2 ntfs iso9660 gzio xzio test vbe vga normal search configfile linux linux16 chain loopback echo file halt reboot ls true gfxterm gettext font

Относительно команды создания загрузчика EFI, тут выставляется —format=i386-pc, добавляется возможность загружать ntldr и поддержка biosdisk. —prefix=(hd0,msdos1)/EFI/BOOT показывает где искать файлы конфигурации, локализации, шрифты и т.п. так как они у меня уже есть, все будет подхвачено. Но параметр —config тут не применим.

Также вместо grub-bios-setup можно использовать dd:

dd if=/usr/lib/grub/i386-pc/boot.img of=/dev/sdb bs=446 count=1
dd if=./core.img of=/dev/sdb bs=512 seek=1

« Последнее редактирование: 14 Февраль 2020, 04:45:23 от Pro »


Записан


Данные три пункта при наличии уже созданных загрузчиков выполняются достаточно просто. Где разместить готовые файлы я пока не решил.

Дальнейшей моей задачей было сделать возможность запуска инсталяторов и livecd.
4. Примеры запуска различных систем:
4.1 Примеров запуска livecd c linux в интернете много. 
4.2 HBCD (Hiren boot cd) запускается только в режиме mbr т.к. EFI загрузчик не имеет поддержки ntldr.
Чтобы пункт меню показывался только в MBR загрузчике использовал пункт меню такого типа:

if [ "${grub_platform}" = 'pc' ]; then
menuentry "Windows XP Hiren Boot CD" {
ntldr /hbcd/xp/xp.bin
}
fi

содержимое iso распаковано в каталог /hbcd.
4.3 В составе HBCD есть образ с комплектом DOS программ, его запуск я сделал используя memdisk из syslinux. Memdisk из EFI не срабатывает :(

if [ "${grub_platform}" = 'pc' ]; then
menuentry "HBCD Dos utils" {
linux16 /EFI/BOOT/memdisk floppy raw
initrd16 /hbcd/Dos/hiren.ima
}
fi

4.4 Memtest есть возможность загружать и из EFI и из MBR режима, сделал пункт запуска такого вида:

if [ "${grub_platform}" = 'efi' ]; then
    menuentry "Memtest86 EFI" {
chainloader /EFI/memtest86/BOOTX64.efi
    }
else
    menuentry "Memtest86 BIOS" {
linux16 /EFI/memtest86/memtest.gz
    }
fi

т.е. при EFI пункт будет одного вида, при MBR загрузке — другого вида.

« Последнее редактирование: 03 Октябрь 2019, 07:22:48 от Pro »


Записан


Кто дочитал до этого места, тот молодец. Самое интересное это запуск установщиков windows.
Если кратко, то winxp и win7 запускаются с проблемами т.к. их установщики не видят флешку. В интернете масса вариантов с использованием firadisk или интеграции драйверов в iso и wim файлы. Я первым делом сделал запуск установщика windows 10, т.к. проблем с драйверами для usb в нем нет, но т.к. я хотел чтобы вся windows 10 лежала в каталоге /wn10 (имя каталога 4 знака всего задается, если более длинное то процесс усложняется) без лишних каталогов в корне диска.
5. Установщик Windows 10
5.1 Создаем каталог из 4-х символов (например /wn10) и копируем в него содержимое iso.
5.1.1 Для запуска при загрузке из MBR потребуется исправить файлы bootmgr и BCD. Я использовал ZX_WBF_Changer в котором подменил пути по которым находятся файлы.
5.1.2 Для запуска при загрузке из EFI нужно воспользоваться рекомендациями из интернета и получить bootmgfw.efi поместить его в нужный каталог. Теперь надо создать еще один BCD используя ZX_WBF_Changer либо изменить существующий используя bcdedit.exe (он есть в составе ZX_WBF_Changer). В BCD меняем device и osdevice чтобы был наш исправленные путь [boot]/wn10/……..
5.2 Пункт меню в загрузчике будет таким:

if [ "${grub_platform}" = 'efi' ]; then
    menuentry "Установка Windows 10 EFI" {
chainloader /wn10/efi/microsoft/boot/bootmgfw.efi
    }
else
    menuentry "Установка Windows 10 BIOS" {
ntldr /wn10/bootmgr
    }
fi

5.3 Установка Windows 7 и Windows XP. Из iso c windows в отдельный каталог поместил файл install.wim (или install.esd). Я решил не заниматься всякими внедрениями драйверов, запускаю установщик windows 10 (winre тоже самое), перехожу в нем в Восстановлением системы — Командная строка и запускаю c:wn10WinNTsetupWinNTsetup.exe (у меня флешка это диск C:). WinNTsetup умеет ставить как win7 так и win xp. Содержимое iso Windows XP распаковал в отдельный каталог.
Для отдельной установки загрузчика или исправления загрузки, можно запустить bootice.exe.

На этом все цели достигнуты, перепечатка, копирование и дополнение разрешается.
модуль с минимальным набором Grub2, в /usr/lib/grub находятся готовые загрузчики упоминающиеся в тексте.
https://cloud.mail.ru/public/4zPi/3R3F2WZdK

« Последнее редактирование: 21 Октябрь 2019, 03:03:58 от Pro »


Записан


Отличный мануал, все сделано из под линукса, круто! Я себе жизнь упрощаю и загрузочную флешку чаще всего делаю из-под винды с помощью BOOTICE.
Может стоит статейку на вики запилить? Чтоб не потерялась


Записан


Lenovo B590 (i3-3110M, 8 Гб, GeForce 720M)
PRA 16.12 JWM, Runtu 20.04 x64 XFCE


Серьезный мануал+. Не лучше ли будет перенести в вики?
По итогу — для наших исо что-то из описанного не  будет ли лучше, чем то, что используется с подачи Ильфата?


Записан


все сделано из под линукса, круто!

нет редактирование BCD и bootmgr из linux не сделать.

Если иметь готовые файлы загрузчика, то можно и под windows сделать флешку, но нужен какой-то аналог dd или редактор который считает 446 байт из boot.img и поместит их нулевой сектор флешки и тоже самое для core.img но начинать с первого сектора. (в bootice вроде бы есть такая функция, или не в нем, я забыл уже)


Записан


По итогу — для наших исо что-то из описанного не  будет ли лучше, чем то, что используется с подачи Ильфата?

для iso я сделал все похоже, но не так, это надо видеть, а показать пока не готовы.


Записан


файл boot_hybrid.img, но я не нашел описание в чем отличия между ними.

Используется при создании iso командой grub-mkrescue. На выходе, наверно, так называемый гибридный iso, который можно писать на флешку с dd.


Записан


Спасибо, это мне и надо в принципе. Завтра проверю.


Записан


я одно не пойму. если используется grub4dos для загрузки grub2, а не наоборот, значит он должен держать uefi. не рви мне шаблон, Саша.


Записан

Компьютер имеет то преимущество перед мозгом, что им пользуются.


я одно не пойму. если используется grub4dos для загрузки grub2, а не наоборот, значит он должен держать uefi. не рви мне шаблон, Саша.

В моем методе не используется grub4dos. И не держит он uefi. Шаблон восстановлен.


Записан


ter-u18n.pf2 — файл шрифта меню grub2, может быть заменен любым другим шрифтом формата pf2. Если не требуется руссификация, то файл можно не добавлять

Если цель не каллиграфия, родной unicode.pf2 справляется нормально с  руссификацией.


Записан


Видимо неочень справляется, в арче например заменяют на другой, название забыл.


Записан


если используется grub4dos для загрузки grub2, а не наоборот, значит он должен держать uefi

Из grub4dos можно загрузить grub2 только при Legacy
grub4dos никак не загрузится в EFI

Из grub2 теоретически можно загрузить grub4dos. Чтобы одно меню было. При Legacy , вроде, не находит meni.lst — пока командой не загрузишь. В EFI не пробовал


Записан


  • Печать

Страницы: [1] 2   Вверх

Понравилась статья? Поделить с друзьями:
  • Загрузочный диск с утилитами windows 7 на флешку
  • Загрузочный диск на основе windows pe
  • Загрузочный диск для смены пароля windows
  • Загрузочный диск для сброса пароля windows xp
  • Загрузочный диск для запуска windows xp