Utwórz bootowalny (UEFI GRUB) USB dla instalacji Ubuntu i Windows 7


12

Chcę utworzyć bootowalny EFI USB, aby zainstalować Ubuntu i Windows 7 (być może z narzędziami takimi jak PartedMagic ). Zrobiłem to wcześniej przy użyciu MultiSystem . Jednak używam GPT i instalacja systemu Windows musi zostać uruchomiona w trybie EFI, aby zainstalować na systemie GPT. Przypuszczam, że muszę zamiast tego użyć GRUB EFI? Jeśli nie ma takiej aplikacji, jak MultiSystem, która tworzy bootowalny dysk GRUB EFI, to jak mogę ją utworzyć samodzielnie?

Przypuszczam, że sformatuję USB jako GPT i zainstaluję na nim GRUB EFI (jak?). Czy muszę skonfigurować GRUB EFI, aby ładował instalację Ubuntu i Windows 7 w EFI? Jak mogę to zrobić?

AKTUALIZACJA

Oto, co próbowałem

  • Utwórz 2 partycje na moim USB (GPT, 100 + MB FAT32 (/ dev / sdc1, ustaw flagę rozruchową), reszta FAT32, / dev / sdc2, dla instalacji)
  • Wyodrębnij ISO systemu Windows 7 i Ubuntu 11.10 na partycję instalatora, 2 różne foldery
  • Próbowałem użyć 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.

Nie sudo modprobe efivarsotrzymałem danych wyjściowych, ale otrzymałem ten sam błąd, myślę, że to dlatego, że nie jestem wprowadzony do EFI Ubuntu?

Następnie spróbuję użyć narzędzia USB Startup Disk Creator do uruchomienia systemu na żywo w trybie EFI, aby spróbować ponownie

AKTUALIZACJA

Jestem tak zagubiony, czy system Windows jest zainstalowany jako pierwszy? Sformatowałem i wykonałem bootowalny USB dla Ubuntu Alternate z UNetBootIn, i to też nie powiodło się z tym samym błędem braku dostępnego jądra. Jeśli zrobię Ubuntu Desktop, nie mogę skonfigurować apt źródeł

Syslog dla Ubuntu Desktop Install http://pastebin.com/CdbUPXax

Wydaje mi się, że lepiej nie marnować czasu i wkrótce powrócę do MBR ... to znaczy, że muszę jakoś wykonać kopię zapasową wszystkich moich danych 1. ... dlatego opóźniam to do ostateczności ... jakieś pomysły?

AKTUALIZACJA

Próbowałem uruchomić Ubuntu 11.10 Alternate w trybie BIOS (bez EFI), zainstalowałem dobrze, ale nie mogę zainstalować programu ładującego. Mówi o fatalnym błędzie. Następnie zainstalowałem GRUB, uruchamiając USB w trybie odzyskiwania. Działa, ale nie uruchamia się. Daje pusty ekran przy starcie. Jeśli spróbuję przejść do trybu odzyskiwania (na dysku twardym, na którym jest zainstalowany Ubuntu), klawiatura wydaje się nie działać, mysz zaś świeci.



Easy2Boot może być tym, czego chcesz.
SteveSi

Odpowiedzi są najlepsze, gdy są czymś więcej niż tylko linkiem lub odniesieniem do jakiegoś potencjalnego rozwiązania. Poszukujemy odpowiedzi, które pokazują, jak coś zrobić lub przynajmniej opisują ogólne podejście.
slm

Odpowiedzi:


8

Pracuję nad aktualizacją tego pytania / odpowiedzi.
Nie działa to bez błędów, ale podczas pracy z @jiewmeng odkryłem, że celem było użycie USB do zainstalowania systemu Windows i Ubuntu na jednym dysku twardym, UEFI.
Minęło trochę czasu i znalazłem rozwiązanie, ale musimy oczyścić pytanie i odpowiedź.
Być może można również odpowiedzieć na oryginalne pytanie, ale ponieważ celem było więcej po stronie instalacji, UEFI USB z jednym uruchomieniem wydawało się mniej ważne.
Obecnie używam dwóch pamięci USB, jednej dla Windows, jednej dla Ubuntu.
Jest to PWT, który należy zaktualizować jak najszybciej

Pracowałem nad tym przez kilka dni, wolną godzinę tu i tam i wreszcie mam jedno USB, które uruchomi się i zaoferuje instalację systemu Windows 7 i Ubuntu.
Moja konfiguracja jest 64-bitowa, możesz spróbować zmienić 32-bitową instalację, ale istnieje wiele różnic w nazwach plików. Jeśli potrzebujesz wersji 32-bitowej, skontaktuj się z nami. To mówi...

Nie można zainstalować systemu Windows 7 z USB sformatowanego w technologii GPT.
Można użyć GDisk lub rozchylone i utworzyć USB GPT, który będzie rozruchu poprzez UEFI.
Będziesz mógł skonfigurować menedżera rozruchu UEFI, aby ładował instalator Windows z USB, ale instalator wyszuka pliki i dane potrzebne do przeprowadzenia instalacji i nie rozpozna USB GPT, podczas gdy znajdzie MBR USB .

Nie ma to jednak większego znaczenia, ponieważ UEFI patrzy na MBR / GPT i partycję EFI, patrz wpis w Wikipedii na temat uruchamiania UEFI

Pomimo użycia standardowego MBR dla USB, można zainstalować za pomocą UEFI na dysku GPT.

Poniższe działały przy użyciu instalacji 64-bitowych na 64-bitowym UEFI Asus Sabertooth.
Oprogramowanie układowe na każdej płycie głównej jest bardzo specyficzne, a oprogramowanie układowe UEFI każdej płyty głównej szuka UEFI w inny sposób. Możesz mieć problemy ze znalezieniem danych rozruchowych na płycie głównej, ale poniższe działania działają na moim ASUS.

Oto, jak zrobiłem bootowalny USB z instalowalną kopią 64-bitowej płyty DVD z systemem Windows 7 i systemem Ubuntu ISO (w tym przykładzie, wersja ISO 11.10 na komputery 64-bitowe).

Używając 16G USB, czyli wszystkiego, co miałem pod ręką ...
mój USB zainstalowany jako / dev / sdc, zmień odpowiednie odniesienia do odpowiedniego urządzenia dla twojego USB.
Upewnij się, że masz zainstalowany 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  
}

I voila! Działająca pamięć USB, która używa grub jako menedżera rozruchu, umożliwiając instalację na dyskach GPT z instalacją UEFI.

Jeśli masz błędy, nie wahaj się ze mną skontaktować, a ja się tym zajmę.


Z powodzeniem uruchamiam się do instalatora Windows w punkcie „ W tym momencie uruchomiłem USB i zainstalowałem Windows 7 ”. Jednak podczas próby grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi 4983-DA78otrzymuję komunikat „Nieznany dodatkowy argument„ 4983-DA78 ”.”
Jiew Meng 12.01.12

Uruchomienie grub-sondy zapewnia identyfikator UUID do użycia. Następnie należy go zastąpić następującym tekstem.
bsd

polecenie to tylko grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi Bez argumentów. Wartość „4983-DA78” to identyfikator UUID zwracany przez grub-probe, którego można użyć w następującym tekście jako TWÓJ_UUID
bsd

zainstalowałem Windows w porządku, ale kiedy wypróbowałem Ubuntu, napisano, że nie ma jądra, jakieś pomysły?
Jiew Meng

Czy zainstalowałeś Ubuntu na komputerze, na którym już był zainstalowany system Windows 7 za pomocą pamięci USB UEFI?
bsd

3

Zrobię co w mojej mocy, aby odpowiedzieć na pytanie, mam nadzieję, że poprowadzę cię we właściwym kierunku.

Jak już wiesz, instalacja Win7 x64 z GPT jest możliwa tylko z EFI. Co gorsza, nie można użyć żadnej hybrydy, ponieważ Win7 x64 traktuje każdy dysk hybrydowy jak starszą MBR. Musisz więc ponownie przypisać / ponownie podzielić swój dysk USB na GPT. Ten typ konfiguracji nie jest preferowany w przypadku USB, biorąc pod uwagę kwestie związane z przenośnością. Nie mówię, nie rób takiego, po prostu nie spodziewałbym się, że istnieje zautomatyzowane narzędzie. Uważam, że po sformatowaniu dysku możesz korzystać z wielu systemów. Jeśli w automatycznie zainstalowanym Grub2 brakuje wsparcia EFI / GPT, zastąp go poprawną wersją Grub2.

Zakładam więc, że być może będziesz musiał wykonać część instalacji ręcznie, co w całości wykracza poza zakres tej odpowiedzi. Chociaż powinienem być w stanie zacząć ...

Korzystając z aktualnej wersji parted, ponownie oznacz swój dysk za pomocą GPT. Zakładając, że dysk znajduje się w / dev / sdc,

 parted -s /dev/sdc mklabel gpt

Teraz musisz podzielić dysk na partycje, najlepiej USB powinien być pojedynczym urządzeniem głównym. Zawsze używam FAT32 dla moich bootowalnych USB.

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

parted mkpartnie tworzy FS, tak jak mkpartfsby to zrobił. partedDOC zaleca stosowanie właściwego mkfs, w przeciwieństwie do parted„s wbudowane wsparcie.

mkfs.vfat /dev/sdc1

Twój dysk jest teraz gotowy do obsługi danych. W tym momencie mam nadzieję, że możesz użyć multisystemu, aby skonfigurować dysk.

Kiedy skończysz z tym wszystkim ... Musimy skonfigurować Grub2, oczywiście zamierzamy zachować konfigurację. Multisystem może mieć możliwość rozruchu z EFI, ale będziesz musiał zadzierać z konfiguracją modułu niezależnie.

Grub2 konfiguracja znajduje się w, boot/grub/grub.cfg. Powinieneś zobaczyć niektóre moduły skomentowane. Widziałem jeden związany z GPT, ale nie jestem pewien co do EFI. Chciałbym spojrzeć i przeprowadzić testy, Zastanów się nad przeczytaniem niektórych dokumentów Grub2.

Jeśli nadal masz jakiekolwiek problemy, skomentuj je z następującymi pytaniami.


2

Zacznij od powyższej odpowiedzi bdowning, a następnie kontynuuj tutaj, aby dodać Parted Magic.

Jest na to kilka sposobów, ale najprostszym jest skopiowanie katalogu pmagic z ISO Parted Magic do katalogu głównego dysku USB, a następnie dodanie do niego pozycji menu:

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

(Może być konieczne przeczytanie instrukcji grub2, aby całkowicie działać; użyłem grub1, kiedy zrobiłem to innego dnia, a pliki konfiguracyjne są inne.)

Minusem jest to, że miksujesz pliki dla Windows, Ubuntu, a teraz Parted Magic w jednym systemie plików. Co gorsza, umieściliśmy je bezpośrednio na partycji systemowej EFI. Działa, ale oczywiście może nie działać dla każdej kombinacji systemów operacyjnych, więc tak naprawdę powinniśmy zrobić osobną partycję na dysku dla każdego systemu operacyjnego. Aby to zrobić, musisz powiedzieć Grub'owi, aby szukał odpowiedniego systemu plików, co może zrobić za pomocą GUID. Każdy system plików otrzymuje unikalny przewodnik po jego utworzeniu, więc będziesz musiał użyć grub-probe (lub podobnych narzędzi), aby znaleźć tego przewodnika. Następnie umieścisz go w poleceniu wyszukiwania w konfiguracji 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
}

Mam nadzieję że to pomoże.


Multiboot będzie działał, ale w odpowiedzi na bdowning, gdy próbuję zainstalować Ubuntu, otrzymuję Kernel niedostępny (alternatywny) lub nie mogę skonfigurować błędów apt (desktop) (zobacz post i komentarze bdowning), jakieś pomysły, jak to naprawić? Rozmawiamy również na czacie @ chat.stackexchange.com/rooms/info/2240/…
Jiew Meng

2

W maszynach spoza UEFI możemy użyć GRUB2 do uruchomienia pamięci USB. Następnie możemy użyć polecenia „ntldr” w GRUB2, aby uruchomić system Windows z USB.

menuentry 'Install Windows 8' {
 ntldr /bootmgr
}

Zobacz pełną odpowiedź na moim blogu Tworzenie bootowalnego systemu Windows USB z Linuksa


1
Chociaż ten link może odpowiedzieć na pytanie, lepiej jest dołączyć bardziej szczegółowy opis odpowiedzi tutaj i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się niemal bezużyteczne, jeśli link się zepsuje.
G-Man mówi „Przywróć Monikę”

1

Po co zawracać sobie głowę GRUB2? To tylko komplikuje sprawy. Wystarczy użyć metody EFI STUB do uruchamiania jądra Linuksa z ESP poprzez dodanie powłoki UEFI do ESP.


Dobrze wiedzieć. W moim konkretnym przypadku (stary Macbook pro) to nie działa, ponieważ Apple zmienił nazwę tego zastrzeżonego bzdura na „EFI” i mówi, że jego bootloader to EFI. Ale w rzeczywistości jest to nieudokumentowany, błędny, niestandardowy program ładujący, zdolny do uruchamiania tylko systemu OSX i Windows. Dlatego zainstalowałem LILO na jednej z partycji i okłamuję ten bootloader, że jest to Windows. Więc to działa. Zatem „EFI” uruchamia LILO w trybie emulacji BIOS, a LILO uruchamia jądro.
peterh - Przywróć Monikę
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.