Создайте загрузочный (UEFI GRUB) USB для Ubuntu и Windows 7 Install


12

Я хочу создать загрузочный EFI USB для установки Ubuntu и Windows 7 (возможно, с такими утилитами, как PartedMagic ). Я сделал это с помощью MultiSystem ранее. Однако я использую GPT, и установка Windows должна быть запущена в режиме EFI для установки в системе GPT. Я полагаю, что я должен использовать GRUB EFI вместо этого? Если нет такого приложения, как MultiSystem, которое создает загрузочный USB-накопитель GRUB EFI, как я могу создать его самостоятельно?

Полагаю, я отформатирую свой USB как GPT и установлю на него GRUB EFI (как?). Затем мне нужно настроить GRUB EFI для загрузки Ubuntu и Windows 7, установленной в EFI? Как я могу это сделать?

ОБНОВИТЬ

Вот что я пробовал

  • Создайте 2 раздела на моем USB (GPT, 100 + МБ FAT32 (/ dev / sdc1, установить флаг загрузки), остальные FAT32, / dev / sdc2, для установки)
  • Извлеките Windows 7 & Ubuntu 11.10 iso в раздел Installer, 2 разные папки
  • Пробовал с помощью sudo elilo -b /dev/sdc1--autoconf --efiboot -v`

jiewmeng@JM:~$ sudo elilo -b /dev/sdc1 --autoconf --efiboot -v
elilo: backing up existing /etc/elilo.conf as /etc/elilo.conf-
Loaded efivars kernel module to enable use of efibootmgr
elilo: Checking filesystem on /dev/sdc1...
elilo: Mounting /dev/sdc1...
e    lilo: 44298KB needed, 78781KB free, 42192KB to reuse
elilo: Installing primary bootstrap /usr/lib/elilo/elilo.efi onto /dev/sdc1...
elilo: Installing /tmp/elilo.k8NWXX on /dev/sdc1...
elilo: Installing /vmlinuz on /dev/sdc1...
elilo: Installing /vmlinuz.old on /dev/sdc1...
elilo: Installing /initrd.img on /dev/sdc1...
elilo: Installing /initrd.img.old on /dev/sdc1...
elilo: Updating EFI boot-device variable...
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: An error occured while updating boot menu, we'll ignore it
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.
elilo: Installation complete.

Не sudo modprobe efivarsполучил вывод, но получил ту же ошибку, я думаю, потому что я не загружен в EFI Ubuntu?

Далее я попробую использовать USB Startup Disk Creator для загрузки работающей системы в режиме EFI, чтобы повторить попытку.

ОБНОВИТЬ

Я так растерялся, виндоус установлен 1й по вине? Я отформатировал и сделал загрузочный USB для Ubuntu Alternate с UNetBootIn, и он тоже потерпел неудачу с той же ошибкой отсутствия доступного ядра. Если я сделал Ubuntu Desktop, я получу не могу настроить исходники apt

Системный журнал для настольной установки Ubuntu http://pastebin.com/CdbUPXax

Я чувствую, что мне лучше не тратить время и вернуться обратно к MBR в ближайшее время ... это будет означать, что я должен как-то сделать резервную копию всех своих данных 1-й ... именно поэтому я откладываю это в крайнем случае ... какие-нибудь идеи?

ОБНОВИТЬ

Я попытался загрузить Ubuntu 11.10 Alternate в режиме BIOS (не-EFI), установлен нормально, но я не могу установить загрузчик. Это говорит о фатальной ошибке. Затем я установил GRUB, загрузив USB в режиме восстановления. Работает, но не загружается. Дает пустой экран при загрузке. Если я пытаюсь войти в режим восстановления (на жестком диске, на котором установлена ​​Ubuntu), клавиатура, похоже, выходит из строя, но мышь светится.


Вы смотрели на это? unetbootin.sourceforge.net
Дастин Л.

Easy2Boot может быть тем, что вы хотите.
SteveSi

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

Ответы:


8

Я работаю над обновлением этого вопроса / ответа.
Это не работает без ошибок, но, работая с @jiewmeng, я обнаружил, что целью было использовать USB для установки Windows и Ubuntu на один жесткий диск, UEFI.
Прошло какое-то время, и я нашел решение, но мы должны очистить вопрос и ответить.
Возможно, на оригинальный вопрос можно ответить также, но, поскольку цель была в большей степени на стороне установки, USB UEFI с одной загрузкой казался менее важным.
В настоящее время я использую две USB-флешки, одну для Windows, другую для Ubuntu.
Это WIP будет обновляться как можно скорее

Я работал над этим в течение нескольких дней, проводя свободное время здесь и там, и, наконец, у меня есть один USB, который будет загружаться и предлагать установку Windows 7 и Ubuntu.
Моя конфигурация специфична для 64-битной системы, вы можете попробовать изменить ее на 32-битную, но есть много различий в именах файлов. Пожалуйста, следите, если вам нужно 32 бита. Это сказал ...

Вы не можете установить Windows 7 с USB-устройства в формате GPT.
Вы можете использовать gdisk или parted и создать GPT USB, который будет загружаться через UEFI.
Вы сможете настроить менеджер загрузки UEFI для загрузки установщика Windows с USB, но установщик будет искать файлы и данные, необходимые для установки, и не будет распознавать GPT USB, в то время как он найдет MBR USB ,

Однако это не имеет большого значения, поскольку UEFI рассматривает MBR / GPT и раздел EFI, см. Статью в Википедии по загрузке UEFI.

Несмотря на использование стандартного MBR для USB, можно установить UEFI на диск GPT.

Следующее работало с использованием 64-битных установок на 64-битном UEFI Asus Sabertooth.
Микропрограмма для каждой материнской платы очень специфична, и каждая микропрограмма UEFI для материнской платы ищет загрузку UEFI по-своему. У вас могут быть проблемы с вашей материнской платой при поиске загрузочных данных, но на моем ASUS работает следующее.

Вот как я сделал загрузочный USB-диск с устанавливаемой копией 64-битного DVD-диска Windows 7 и Ubuntu ISO (в этом примере - 64-битный десктоп 11.10 для настольного компьютера).

Используя 16G USB, это все, что у меня было под рукой ...
мой USB, установленный как / dev / sdc, измените соответствующие ссылки на соответствующее устройство для вашего USB.
Убедитесь, что у вас установлен 7zip.

fdisk /dev/sdc
create new MBR, 'o' command
create new partition, part 1, size 8G, type ef, set bootable, write
mkfs.vfat -F32 /dev/sdc1
mkdir /mnt/USB
mount /dev/sdc1 /mnt/USB
insert Windows 7 x64 DVD, again, mine appeared as /media/UDF\ Volume, you need to change references below
# Extract/Copy the entire Windows DVD to the USB
cp -r /media/UDF\ Volume/* /mnt/USB
# I don't know what effect the following rename has, I copied blindly from another webpage.
mv /mnt/USB/sources/ei.cfg /mnt/USB/sources/ei.cfg_
cd /mnt/USB/efi/microsoft/boot/
7z e /mnt/USB/sources/install.wim 1/Windows/Boot/EFI/bootmgfw.efi
cp -r /mnt/USB/efi/microsoft/boot /mnt/USB/efi/
mv /mnt/USB/efi/boot/bootmgfw.efi /mnt/USB/efi/boot/bootx64.efi
# At this point I booted the USB, and installed Windows 7 to a GPT SSD
# Upon reboot I noticed the Windows Boot loader in my UEFI boot list (actually it made itself 1st).
# so, here we have a standalone Windows7 UEFI installer that will function correctly (64bit ASUS, at least).
# Now, on to adding Ubuntu
cd /mnt/USB
7z x /path2iso/ubuntu-11.10-desktop-amd64.iso
# If 7z finds prexisting files with the same name, just allow always overwrite
# (Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit? A

# At this point I booted the USB, and installed Ubuntu x64 to a GPT SSD
# we have a standalone Ubuntu 64bit installer that install Ubuntu 64

# Now, on to add a boot manager that will allow us to select between Windows 7 and Ubuntu

# Get the target UUID of the USB partition, using either blkid or the following command
grub-probe --target=fs_uuid /mnt/USB/efi/Microsoft/Boot/bootmgfw.efi  
will print YOUR_UUID # Substitute into the following references to YOUR_UUID

# Append the following menuentry to /mnt/USB/boot/grub/x86_64-efi/grub.cfg

menuentry "Microsoft Windows x86_64 UEFI-GPT Setup" {
    insmod usbms  
    insmod part_gpt  
    insmod part_msdos  
    insmod fat  
    insmod search_fs_uuid  
    insmod chain  
    search --fs-uuid --no-floppy --set=root YOUR_UUID # <- CHANGE THIS TO YOUR UUID
    chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi  
}

И вуаля! Работающая флешка, которая использует grub в качестве менеджера загрузки, что позволяет устанавливать на GPT-диски с установкой UEFI.

Если у вас есть ошибки, не стесняйтесь, сообщите мне, и я посмотрю на них.


Я успешно загрузился в установщик Windows в точке « В этот момент я загрузил USB и установил Windows 7 ». Однако при попытке grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi 4983-DA78получить «Неизвестный дополнительный аргумент` 4983-DA78 '».
Jiew Meng

Запуск grub-probe обеспечивает использование uuid. Затем его следует заменить в следующем тексте.
BSD

команда только grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi без аргументов. Значение «4983-DA78» - это ваш UUID, возвращаемый grub-probe, для использования в следующем тексте как YOUR_UUID
bsd

Установил Windows нормально, но когда я попробовал Ubuntu, он говорит, что нет ядра, какие-нибудь идеи?
Jiew Meng

Вы установили Ubuntu на компьютер, на котором уже установлена ​​Windows 7 через USB-накопитель UEFI?
BSD

3

Я сделаю все возможное, чтобы ответить на вопрос, надеюсь, я направлю вас в правильном направлении.

Как вы уже знаете, установка Win7 x64 из GPT возможна только из EFI. Еще хуже то, что вы не можете использовать любой гибрид, поскольку Win7 x64 рассматривает любой гибридный диск как устаревшую MBR. Таким образом, вы должны поменять / переразметить ваш USB как GPT. Этот тип настройки не является предпочтительным для USB, учитывая проблемы переносимости. Я не говорю, что не делайте, я просто не ожидал бы, что какой-либо автоматизированный инструмент будет существовать. Я действительно считаю, что вы можете использовать мультисистему после форматирования диска. Если в автоматически установленном Grub2 отсутствует поддержка EFI / GPT, перезапишите его правильной версией Grub2.

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

Используя текущую версию parted, переназначьте ваш диск с GPT. Предполагая, что диск находится в / dev / sdc,

 parted -s /dev/sdc mklabel gpt

Теперь необходимо разбить диск, желательно, чтобы USB был одним основным. Я всегда хожу с FAT32, для моих загрузочных USB.

parted -s /dev/sdc mkpart primary fat32 0 -1

parted mkpartне создает ФС, вроде mkpartfsбы. partedDOC рекомендует использовать правильный mkfs, в отличие от parted«s встроенной поддержки.

mkfs.vfat /dev/sdc1

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

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

Конфигурация Grub2 находится по адресу boot/grub/grub.cfg. Вы должны увидеть, что некоторые модули закомментированы. Я видел один, связанный с GPT, но не уверен насчет EFI. Я посмотрю и проведу некоторое тестирование. Подумайте о том, чтобы прочитать некоторые документы по Grub2

Если у вас все еще есть какие-либо проблемы, прокомментируйте последующие вопросы.


2

Начните с ответа bdowning выше, затем продолжайте здесь, чтобы добавить Parted Magic.

Есть несколько способов сделать это, но самый простой - скопировать каталог pmagic из Parted Magic ISO в корень вашего usb-диска, а затем добавить для него пункт меню:

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
  linux /pmagic/bzImage
  initrd /pmagic/initrd.img
}

(Вам может понадобиться прочитать руководство по grub2, чтобы оно полностью заработало; я использовал grub1, когда делал это на днях, и файлы конфигурации были другими.)

Недостатком является то, что вы смешиваете файлы для Windows, Ubuntu и теперь Parted Magic в единую файловую систему. Хуже того, мы поместили их прямо в системный раздел EFI. Это работает, но, конечно, это может не работать для каждой комбинации операционных систем, поэтому нам действительно нужно создать отдельный раздел на диске для каждой ОС. Для этого нужно сказать grub искать нужную файловую систему, что он может сделать с помощью guid. Каждая файловая система получает уникальный guid при ее создании, поэтому вам придется использовать grub-probe (или аналогичные инструменты), чтобы найти этот guid. Затем вы вставляете это в команду поиска в вашей конфигурации grub:

menuentry "Parted Magic" --class gnu-linux --class gnu --class os {
    search --no-floppy --fs-uuid --set 8d2acb74-5216-4696-90a8-c76f92d5e4ee
    linux /pmagic/bzImage
    initrd /pmagic/initrd.img
}

Надеюсь это поможет.


Мультизагрузка будет работать, но в ответе bdowning, когда я пытаюсь установить Ubuntu, я получаю ядро ​​недоступным (альтернативным) или не могу настроить ошибки apt (desktop) (см. Пост и комментарии bdowning), есть идеи, как это можно исправить? Мы также общаемся в
Jiew Meng

2

В машинах, не поддерживающих UEFI, мы можем использовать GRUB2 для загрузки USB-накопителя. Затем мы можем использовать команду ntldr в GRUB2 для загрузки Windows с USB.

menuentry 'Install Windows 8' {
 ntldr /bootmgr
}

Смотрите полный ответ в моем блоге Создание загрузочного Windows USB из Linux


1
Хотя эта ссылка может ответить на вопрос, лучше включить сюда более подробное описание ответа и предоставить ссылку для справки. Ответы только на ссылку могут стать почти бесполезными, если ваша ссылка не работает.
G-Man говорит: «Восстановите Монику»

1

Зачем беспокоиться о GRUB2? Это просто усложняет вещи. Просто используйте метод EFI STUB для загрузки ядра Linux из ESP, добавив оболочку UEFI в ESP.


Приятно знать. В моем конкретном случае (старый MacBook Pro) это не работает, потому что Apple переименовала эту запатентованную ерунду в «EFI» и говорит, что его загрузчик - EFI. Но на самом деле, это недокументированный, глючный пользовательский загрузчик, способный загружать только osx и windows. Таким образом, я установил LILO в один из разделов и вру этому загрузчику, что это windows. Так что это работает. Итак, «EFI» загружает LILO в режиме эмуляции BIOS, а LILO загружает ядро.
Петер - Восстановить Монику
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.