Используйте GRUB2 под Windows, чтобы сделать мультизагрузочный диск WINPE, LINUX, MAXDOS U, поддерживающий BIOS и UEFI

Теги: U диск загрузочный диск Multi-загрузка BIOS UEFI

Предисловие:

Поскольку я ничего не знал об этом, я сделал много обходных путей. Перепробовал множество программ, в том числе GRUB4DOS, XORBOOT, syslinux и др. Это программное обеспечение имеет свои особенности, и я не смог понять его подробно. Я наконец-то решил использовать grub2, потому что я чувствую, что поддержка BIOS и UEFI очень хорошая, и недостатки также очевидны. Загрузите syslinux memdisk для загрузки iso, но memdisk не поддерживает uefi, и правила файла конфигурации действительно ненормальные, я чувствую, что пишу код переднего плана.

Позиционирование:

Эта статья фокусируется на практической работе.В основном вы можете сделать диск U со следующими функциями шаг за шагом, и не обсуждать конкретные теоретические аспекты в глубине.
Особенности:
BIOS: winpe, Ubuntu18.04_x64 live, запуск MAXDOS.
UEFI: winpe, Ubuntu 18.04_x64, прямой запуск.

Во-первых, разница между процессом загрузки BIOS и UEFI

1. BIOS считывает MBR в CPU для выполнения и выполняет MBR для выполнения желаемых действий.
2. UEFI должен найти файл \ efi \ boot \ bootx64.efi на диске, запустить исполняемую программу и позволить программе делать то, что он хочет.
Более конкретные различия В Интернете много информации, и это только ключевые моменты, связанные с операцией.

2. Подготовка материала.

1. У диска.
2、 grub-2.02-for-windows
3、 syslinux 6.03
4、maxdos
5、winpe
6、 ubuntu-18.04-desktop-amd64
7. Инструмент создания разделов (рекомендуется DiskGenius)

Три, U раздел диска

1. Очистите диск U, самое главное, чтобы очистить MBR. Исходная MBR диска U не очищается, что может привести к сбою установки grub2. Если grub2 в процессе установки выдает «grub-install: warning: Попытка установить GRUB на диск с несколькими метками разделов. Это пока не поддерживается», это обычно происходит потому, что исходная MBR диска U не была очищена. Пустой метод:
(1) Комбинация клавиш win + R запускает diskpart.
(2) Введите список дисков, чтобы получить все текущие диски.
(3) Введите диск выбора 2, чтобы найти диск U.
(4) Введите команду clean, clear all, (MBR, раздел и данные).

2. Разбейте U-образный диск. Мой - это 32-гигабайтный диск U, разделенный на 3 ГБ пространства для создания загрузочного диска, формат FAT32, потому что он совместим с UEFI, поэтому я не выбирал меры защиты, такие как скрытие и удаление раздела.

# В-четвертых, разверните WINPE под UEFI

Вот причина, по которой развертывание winpe ставится перед этим. Поскольку программа запуска winpe использует абсолютный путь для поиска файла, а не относительный путь, поэтому структура каталогов загруженного изображения winpe должна поддерживать абсолютный путь без изменений, чтобы программа могла запускаться плавно. Вот шаги:
1. Смонтируйте или распакуйте образ winpe.
2. Выберите все, скопируйте и вставьте в только что разделенную область диска U.

# Пять, установите grub2

## 1. Распакуйте grub-2.02-for-windows в папку C: \

## 2. Определите номер диска

## 3. Откройте cmd как администратор (очень важно)

## 4. Введите cd / d C: \ grub-2.02-for-windows

## 5. установка i386

    grub-install.exe --boot-directory=G:\ --target=i386-pc //./PHYSICALDRIVE2

    ·         1

Запишите букву диска ниже и замените ее на свою. «2» в PHYSICALDRIVE2 - номер диска, найденный на втором шаге.

## 6, UEFI 64 установлен (обратите внимание на букву диска ниже, измените его на свой)

    grub-install.exe --boot-directory=G:\ --efi-directory=G: --removable --target=x86_64-efi

    ·         1

## 7, установка uefi32 (установка i386)

    grub-install.exe --boot-directory=G:\ --efi-directory=G: --removable --target=i386-efi

    ·         1

Также обратите внимание на букву диска и измените ее на свою.

## 8. Показать результат после успешной установки

C:\grub-2.02-for-windows>grub-install.exe –boot-directory=G:\ –target=i386-pc //./PHYSICALDRIVE2
Installing for i386-pc platform.
Installation finished. No error reported.

C:\grub-2.02-for-windows>grub-install.exe –boot-directory=G:\ –efi-directory=G: –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=G:\ –efi-directory=G: –removable –target=i386-efi
Installing for i386-efi platform.
Installation finished. No error reported.
u корневой каталог диска сгенерирует соответствующий файл.

# Шесть, напишите файл конфигурации grub2

## 1. Создайте новый файл grub.cfg в каталоге / grub.

## 2. Содержание grub.cfg

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by grub2-mkconfig using templates

# from /etc/grub.d and settings from /etc/default/grub

#

### BEGIN /etc/grub.d/00_header ###

if [ -s $prefix/grubenv ]; then

load_env

fi

if [ "${next_entry}" ] ; then

set default="${next_entry}"

set next_entry=

save_env next_entry

set boot_once=true

else

set default="0"

fi

if [ x"${feature_menuentry_id}" = xy ]; then

menuentry_id_option="--id"

else

menuentry_id_option=""

fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then

set saved_entry="${prev_saved_entry}"

save_env saved_entry

set prev_saved_entry=

save_env prev_saved_entry

set boot_once=true

fi

function savedefault {

if [ -z "${boot_once}" ]; then

saved_entry="${chosen}"

save_env saved_entry

fi

}

function load_video {

if [ x$feature_all_video_module = xy ]; then

insmod all_video

else

insmod efi_gop

insmod efi_uga

insmod ieee1275_fb

insmod vbe

insmod vga

insmod video_bochs

insmod video_cirrus

fi

}

if [ x$feature_default_font_path = xy ] ; then

font=unicode

else

font="${prefix}/fonts/unicode.pf2"

fi

if loadfont $font ; then

#set gfxmode=1024x768x32,1024x768x24,1024x768x16,1024x768,auto

#set gfxpayload=keep

loadfont /grub/fonts/dejavu-bold-16.pf2

loadfont /gurb/fonts/dejavu-bold-14.pf2

set gfxmode=auto

load_video

insmod gfxterm

insmod png

terminal_output gfxterm

#set color_normal=light-gray/black

#set color_highlight=white/black

#background_image -m stretch $prefix/themes/splash.png

fi

if [ x$feature_timeout_style = xy ] ; then

set timeout_style=menu

set timeout=15

# Fallback normal timeout code in case the timeout_style feature is

# unavailable.

else

set timeout=15

fi

set color_normal=light-gray/black

set color_highlight=white/black

if [ -e /grub/themes/starfield/starfield.png ]; then

# binary_syslinux modifies the theme file to point to the correct

# background picture

set theme=/grub/themes/starfield/theme.txt

else

set menu_color_normal=cyan/blue

set menu_color_highlight=white/blue

fi

### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###

### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###

# This file provides an easy way to add custom menu entries. Simply type the

# menu entries you want to add after this comment. Be careful not to change

# the 'exec tail' line above.

### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###

if [ -f ${config_directory}/custom.cfg ]; then

source ${config_directory}/custom.cfg

elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then

source $prefix/custom.cfg;

fi

### END /etc/grub.d/41_custom ###

menuentry "Запустить снова" {

reboot

}

menuentry "Выключить" {

halt

}

Вы можете проверить, может ли grub запускаться под BIOS и UEFI.

# Семь, извлеките образ MAXDOS

1. Сначала установите MaxDOS8.
2. Откройте «Мой компьютер» → щелкните диск C и откройте → нажмите «Инструменты» в строке меню папки → параметры папки → отменить «скрыть расширение известных типов файлов» Отметьте галочкой → сохранить подтверждение
3. Введите C: \ MaxDOS \
Найдите Maxs.sys и переименуйте его в Maxs.rar, затем разархивируйте, чтобы получить файл MaxDOS.exe, и переименуйте его в MaxDOS.img.
4. Скопируйте MaxDOS.img в / maxdos.
Если вы открываете диск C и не можете найти папку MaxDOS, если установка подтверждает, что MaxDOS установлен, введите «C: \ MaxDOS \» в адресную строку, чтобы увидеть ее.

# 8. Разверните winpe, Ubuntu и maxdos.

## 1、winpe

(1) Создайте новый каталог winpe и скопируйте в него изображение winpe. Этот образ для запуска BIOS.
(2) Смонтируйте или разархивируйте образ winpe снова (не перемещайте образ winpe, скопированный на предыдущем шаге), скопируйте все файлы в каталоге / efi / boot в / winpe. Это используется UEFI для загрузки winpe.

## 2、Ubuntu

Скопируйте ubuntu-18.04-desktop-amd64.iso в корневой каталог.

## 3、MAXDOS

Создайте новый каталог maxdos и скопируйте в него извлеченный выше файл maxdos.img.

# Девять, напиши grub2 загрузочное меню

Откройте файл grub.cfg и добавьте следующие пункты меню

menuentry 'win10PE_X64(BIOS)'{

set root='(hd0,msdos1)'

echo 'Loading Memdisk...'

#insmod memdisk

linux16 /grub/syslinux/MEMDISK iso raw

echo 'Loading ISO... may take several minutes'

initrd16 /winpe/Win10PE_17134x64.iso

}

# Запустите файл EFI:

menuentry "win10PE_X64(UEFI)" {

echo «Начиная EFI SHELL, пожалуйста, подождите ...»

set root='(hd0,msdos1)'

#search --file /winpe/bootx64.efi --set=root

chainloader /winpe/bootx64.efi

}

menuentry 'ubuntu-18.04' {

insmod fat

insmod loopback

insmod iso9660

loopback loop (hd0,1)/ubuntu-18.04-desktop-amd64.iso

set root=(loop)

linux /casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-18.04-desktop-amd64.iso noprompt noeject

initrd /casper/initrd.lz

}

menuentry "Maxdos(BIOS)"{

set root='(hd0,msdos1)'

linux16 /grub/syslinux/MEMDISK

initrd16 /maxdos/maxdos.img

}

После сохранения вы можете попробовать начать.

# 10. Вопросы.

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

## 1. Как запустить DOS под UEFI?

## 2. grub2 не поддерживает iso, поэтому вы можете использовать MEMDISK syslinux только для загрузки iso и других образов, но MEMDISK используется только в BIOS. Интересно, есть ли в UEFI способ напрямую загрузить образ?

## 3. Я попытался использовать образ DiskGenius, чтобы создать хороший загрузочный раздел, но после записи образа в другой раздел я все же нашел его непригодным для использования. Первоначально считалось, что образ не содержит MBR. Я не знаю ни одного хорошего способа сделать копию.