Tạo USB có khả năng khởi động (UEFI GRUB) cho Cài đặt Ubuntu & Windows 7


12

Tôi muốn tạo USB EFI có khả năng khởi động để cài đặt Ubuntu & Windows 7 (có thể với các tiện ích như PartedMagic ). Tôi đã làm điều đó bằng cách sử dụng MultiSystem trước đây. Tuy nhiên, tôi đang sử dụng cài đặt GPT và Windows cần được khởi chạy ở chế độ EFI để cài đặt trên hệ thống GPT. Tôi cho rằng tôi phải sử dụng GRUB EFI thay thế? Nếu không có ứng dụng nào như MultiSystem tạo USB khả năng khởi động GRUB EFI, làm cách nào tôi có thể tự tạo một ứng dụng?

Tôi cho rằng tôi sẽ định dạng USB của mình là GPT và cài đặt GRUB EFI trên đó (bằng cách nào?). Sau đó, tôi cần cấu hình GRUB EFI để tải cài đặt Ubuntu & Windows 7 trong EFI? Làm thế nào tôi có thể làm những điều này?

CẬP NHẬT

Đây là những gì tôi đã thử

  • Tạo 2 phân vùng trên USB của tôi (GPT, 100 + MB FAT32 (/ dev / sdc1, đặt cờ khởi động), phần còn lại FAT32, / dev / sdc2, để cài đặt)
  • Trích xuất Windows 7 & Ubuntu 11.10 vào phân vùng Installer, 2 thư mục khác nhau
  • Đã thử sử dụng 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.

Không sudo modprobe efivarscó đầu ra nhưng gặp lỗi tương tự, tôi nghĩ đó là do tôi không được khởi động vào EFI Ubuntu?

Tiếp theo, tôi sẽ thử sử dụng USB Startup Disk Creator để khởi động vào hệ thống trực tiếp ở chế độ EFI để thử lại

CẬP NHẬT

Tôi rất lạc lõng, Windows cài đặt có phải là lỗi không? Tôi đã định dạng và tạo một USB có thể khởi động cho Ubuntu Alternate bằng UNetBootIn và nó cũng thất bại với cùng một lỗi không có kernel. Nếu tôi tạo Ubuntu Desktop, tôi sẽ không thể định cấu hình nguồn apt

Syslog cho máy tính để bàn Ubuntu cài đặt http://pastebin.com/CdbUPXax

Tôi cảm thấy tốt hơn là không lãng phí thời gian và sớm quay trở lại MBR ... điều đó có nghĩa là tôi phải sao lưu tất cả dữ liệu của mình trước tiên ... đó là lý do tại sao tôi trì hoãn nó đến giải pháp cuối cùng ... có ý tưởng nào không?

CẬP NHẬT

Tôi đã thử khởi động Ubuntu 11.10 Alternate ở chế độ BIOS (Non-EFI), được cài đặt tốt trừ khi tôi không thể cài đặt bộ tải khởi động. Nó nói lỗi nghiêm trọng. Sau đó tôi đã cài đặt GRUB bằng cách khởi động USB ở chế độ recovery. Hoạt động nhưng nó không khởi động. Cung cấp một màn hình trống khi khởi động. Nếu tôi cố gắng vào chế độ phục hồi (trên ổ cứng, nơi cài đặt ubfox), bàn phím dường như không thành công, chuột vẫn có đèn.


Bạn đã xem xét điều này? unetbootin.sourceforge.net
Dustin L.

Easy2Boot có thể là những gì bạn muốn.
SteveSi

Câu trả lời là tốt nhất khi chúng không chỉ là một liên kết hoặc tham chiếu đến một số giải pháp tiềm năng. Câu trả lời cho thấy cách làm một cái gì đó hoặc ít nhất là mô tả cách tiếp cận chung là những gì chúng ta sau đây.
slm

Câu trả lời:


8

Tôi đang làm việc trên một bản cập nhật cho câu hỏi / câu trả lời này.
Điều này không hoạt động mà không có lỗi, nhưng khi tôi làm việc với @jiewmeng, tôi đã phát hiện ra rằng mục tiêu là sử dụng USB để cài đặt cả Windows và Ubuntu vào một ổ cứng, UEFI.
Phải mất một thời gian và tôi đã tìm thấy giải pháp nhưng chúng tôi cần làm sạch câu hỏi và câu trả lời.
Có thể câu hỏi ban đầu cũng có thể được trả lời nhưng vì mục tiêu nhiều hơn ở phía cài đặt, nên USB UEFI khởi động đơn có vẻ ít quan trọng hơn.
Tôi hiện đang sử dụng hai thanh USB một cho Windows, một cho Ubuntu.
Đây là một WIP được cập nhật càng sớm càng tốt

Tôi đã làm việc này trong vài ngày, giờ rảnh rỗi ở đây và cuối cùng có một USB duy nhất, sẽ khởi động và cung cấp cài đặt windows 7 và ubfox.
Cấu hình của tôi là 64 bit cụ thể, bạn có thể thử và thay đổi để chứa một intall 32 bit nhưng có nhiều sự khác biệt trong tên tệp. Vui lòng theo dõi nếu bạn cần 32 bit. Mà nói...

Bạn không thể cài đặt Windows 7 từ USB được định dạng GPT.
Bạn có thể sử dụng gdisk hoặc chia tay và tạo USB GPT, sẽ khởi động thông qua UEFI.
Bạn sẽ có thể định cấu hình trình quản lý khởi động UEFI để tải trình cài đặt Windows từ USB nhưng trình cài đặt sẽ tìm kiếm các tệp và dữ liệu cần thiết để thực hiện cài đặt và nó sẽ không nhận ra USB GPT, trong khi nó sẽ tìm thấy USB MBR .

Tuy nhiên, điều này ít có hậu quả vì UEFI nhìn vào phân vùng MBR / GPT và EFI, xem mục Wikipedia trên Khởi động UEFI

Mặc dù sử dụng MBR tiêu chuẩn cho USB, người ta có thể cài đặt qua UEFI vào đĩa GPT.

Sau đây hoạt động bằng cách sử dụng cài đặt 64 bit, trên Asus Sabertooth 64 bit của UEFI.
Phần sụn trên mỗi bo mạch chủ rất cụ thể và mỗi phần sụn UEFI tìm kiếm phần khởi động UEFI khác nhau. Bạn có thể gặp vấn đề với bo mạch chủ của mình khi tìm dữ liệu khởi động, nhưng những điều sau đây hoạt động trên ASUS của tôi.

Dưới đây là cách tôi tạo USB có thể khởi động với bản sao có thể cài đặt của DVD Windows 7 64 bit và Ubuntu ISO (trong ví dụ này, iso máy tính để bàn 11.10 64 bit).

Sử dụng USB 16G, đó là tất cả những gì tôi có trong tay ...
USB của tôi được cài đặt là / dev / sdc, thay đổi các tham chiếu có liên quan đến thiết bị phù hợp cho USB của bạn.
Hãy chắc chắn rằng bạn đã cài đặt 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  
}

Và Voila! Một thanh USB hoạt động sử dụng grub làm trình quản lý khởi động, cho phép cài đặt vào các đĩa GPT với cài đặt UEFI.

Nếu bạn có lỗi, đừng ngần ngại nhắn tin cho tôi và tôi sẽ xem xét.


Tôi khởi động thành công trình cài đặt windows vào thời điểm " Tại thời điểm này, tôi đã khởi động USB và cài đặt Windows 7 ". Tuy nhiên, khi thử grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi 4983-DA78tôi nhận được "Không biết thêm đối số` 4983-DA78 '. "
Jiew Meng

Chạy grub-thăm dò cung cấp uuid được sử dụng. Sau đó, nó sẽ được thay thế trong văn bản sau đây.
bsd

lệnh chỉ là grub-probe --target=fs_uuid /media/INSTALLS_/efi/microsoft/boot/bootmgfw.efi không có args. Giá trị '4983-DA78' là UUID của bạn được trả về bởi grub-thăm dò, để bạn sử dụng trong văn bản sau dưới dạng YOU_UUID
bsd

Đã cài đặt windows tốt nhưng khi tôi dùng thử Ubuntu thì nó không có kernel, có ý tưởng nào không?
Jiew Meng

Bạn đã cài đặt Ubuntu lên máy đã cài đặt Windows 7 qua thẻ USB UEFI chưa?
bsd

3

Tôi sẽ làm hết sức mình để trả lời câu hỏi, hy vọng tôi sẽ giúp bạn đi đúng hướng.

Như bạn đã biết, cài đặt Win7 x64 từ GPT chỉ có thể có từ EFI. Thậm chí tệ hơn là bạn không thể sử dụng bất kỳ kết hợp nào, vì Win7 x64 coi bất kỳ đĩa lai nào là MBR kế thừa. Vì vậy, bạn phải dán lại / phân vùng lại USB của bạn dưới dạng GPT. Kiểu thiết lập này không thích hợp cho USB, xem xét các mối quan tâm về tính di động. Tôi không nói là không tạo ra một cái, tôi chỉ không mong đợi bất kỳ công cụ tự động nào tồn tại. Tôi thực sự tin rằng bạn có thể sử dụng nhiều hệ thống, sau khi bạn định dạng ổ đĩa của mình. Nếu Grub2 được cài đặt tự động thiếu hỗ trợ EFI / GPT, hãy ghi đè lên nó bằng phiên bản chính xác của Grub2.

Vì vậy, tôi cho rằng bạn có thể phải thực hiện một số cài đặt bằng tay, trong toàn bộ, nằm ngoài phạm vi của câu trả lời này. Mặc dù tôi sẽ có thể giúp bạn bắt đầu ....

Sử dụng bản phát hành hiện tại parted, hãy đặt lại ổ đĩa của bạn bằng GPT. Giả sử đĩa được đặt tại / dev / sdc,

 parted -s /dev/sdc mklabel gpt

Bây giờ bạn phải phân vùng ổ đĩa, tốt nhất là USB nên là một chính. Tôi luôn luôn đi với FAT32, cho USB có thể khởi động của tôi.

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

parted mkpartkhông tạo ra FS, như mkpartfsmuốn. Các partedDOC khuyến cáo sử dụng đúng đắn mkfs, như trái ngược với parted's xây dựng trong hỗ trợ.

mkfs.vfat /dev/sdc1

Ổ đĩa của bạn đã sẵn sàng để xử lý dữ liệu. Tại thời điểm này, tôi hy vọng bạn có thể sử dụng hệ thống đa hệ thống để thiết lập ổ đĩa của mình.

Khi bạn đã hoàn thành tất cả những điều đó ... Chúng tôi cần thiết lập Grub2, rõ ràng chúng tôi có ý định giữ cấu hình. Đa hệ thống có thể có khả năng khởi động từ EFI, nhưng bạn sẽ phải gặp rắc rối với cấu hình mô-đun bất kể.

Cấu hình Grub2 được đặt tại , boot/grub/grub.cfg. Bạn sẽ thấy một số mô-đun nhận xét. Tôi đã thấy một liên quan đến GPT, nhưng không chắc chắn về EFI. Tôi sẽ xem xét và làm một số thử nghiệm, Cân nhắc đọc một số tài liệu Grub2.

Nếu bạn vẫn có bất kỳ vấn đề, hãy bình luận lại với các câu hỏi tiếp theo.


2

Bắt đầu với câu trả lời của bdowning ở trên, sau đó tiếp tục ở đây để thêm Parted Magic.

Có một số cách để giải quyết vấn đề này, nhưng đơn giản nhất là sao chép thư mục pmagic từ Parted Magic ISO vào thư mục gốc của đĩa usb của bạn, sau đó thêm một mục trình đơn cho nó:

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

(Bạn có thể cần đọc hướng dẫn grub2 để nó hoàn toàn hoạt động; Tôi đã sử dụng grub1 khi tôi làm điều này vào ngày khác và các tệp cấu hình khác nhau.)

Nhược điểm ở đây là bạn đang trộn các tệp cho Windows, Ubuntu và giờ là Parted Magic vào một hệ thống tệp duy nhất. Tệ hơn, chúng tôi đã đặt chúng trực tiếp vào phân vùng hệ thống EFI. Nó hoạt động, nhưng tất nhiên nó có thể không hoạt động cho mọi sự kết hợp của các hệ điều hành, vì vậy điều chúng ta thực sự nên làm là tạo một phân vùng riêng trên ổ đĩa cho mỗi HĐH. Làm điều đó đòi hỏi phải biết grub để tìm kiếm hệ thống tập tin phù hợp, điều này có thể làm theo hướng dẫn. Mỗi hệ thống tập tin có một hướng dẫn duy nhất khi nó được tạo, vì vậy bạn sẽ phải sử dụng grub-thăm dò (hoặc các công cụ tương tự) để tìm hướng dẫn đó. Sau đó, bạn dán nó vào một lệnh tìm kiếm trong cấu hình grub của bạn:

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
}

Hi vọng điêu nay co ich.


Multiboot sẽ hoạt động, nhưng trong câu trả lời của bdowning, khi tôi thử cài đặt Ubuntu, tôi nhận được Kernel không khả dụng (thay thế) hoặc không thể định cấu hình lỗi apt (máy tính để bàn) (xem bài đăng và nhận xét của bdowning), có ý tưởng nào có thể khắc phục được không? Chúng tôi cũng trò chuyện @ chat.stackexchange.com/rooms/info/2240/ từ
Jiew Meng

2

Trong các máy không phải UEFI, chúng ta có thể sử dụng GRUB2 để làm cho thanh USB có khả năng khởi động. Sau đó, chúng ta có thể sử dụng lệnh 'ntldr' trong GRUB2 để khởi động Windows từ USB.

menuentry 'Install Windows 8' {
 ntldr /bootmgr
}

Xem câu trả lời đầy đủ tại blog của tôi Tạo một cửa sổ có thể khởi động USB từ Linux


1
Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm một mô tả chi tiết hơn về câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên gần như vô dụng nếu liên kết của bạn không hoạt động.
G-Man nói 'Phục hồi Monica'

1

Tại sao phải bận tâm với GRUB2? Nó chỉ làm phức tạp mọi thứ. Chỉ cần sử dụng phương pháp EFI STUB để khởi động nhân Linux từ ESP bằng cách thêm UEFI Shell vào ESP.


Rất vui được biết. Trong trường hợp cụ thể của tôi (macbook pro cũ), nó không hoạt động, bởi vì Apple đã đổi tên crap độc quyền này thành "EFI" và nói rằng bộ tải khởi động của anh ta là EFI. Nhưng trên thực tế, nó là một bộ tải khởi động tùy chỉnh không có giấy tờ, lỗi, có khả năng chỉ khởi động osx và windows. Vì vậy, tôi đã cài đặt LILO vào một trong các phân vùng và nói dối với bộ tải khởi động này rằng nó là một cửa sổ. Vì vậy, nó hoạt động. Vì vậy, "EFI" khởi động LILO ở chế độ mô phỏng BIOS và LILO khởi động kernel.
peterh - Phục hồi Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.