grub: khởi động từ ISO


41

Làm cách nào tôi có thể khởi động vào tệp ISO trong GRUB? Tệp ISO nằm trên phân vùng reiserfs và GRUB có thể truy cập nó (đã được kiểm tra).


Phiên bản nào của grub?
quack quixote

1
Câu hỏi tương tự đã trả lời ở đây .
dma_k


Câu trả lời:


55

Vấn đề lớn nhất khi khởi động tệp ISO là các ISO được thiết kế để khởi động hầu như luôn được thiết kế để khởi động từ đĩa CD . Như đã giải thích trên blog của Marco về Grub 2 (nhấn mạnh của tôi):

GRUB có thể đọc các hình ảnh ISO9660 (nghẹt iso). Ví dụ, nó có thể tải một vài cung đầu tiên và khởi động nó. Nhưng hầu hết mọi người không nhận ra là gì vậy thì sao? Hệ điều hành được tải sẽ làm gì? Nó rất có thể sẽ tìm kiếm một CDROM mà nó sẽ không tìm thấy và thất bại.

Vì vậy, cách đơn giản để khởi động từ một số tệp ISO ngẫu nhiên là tải nó vào một máy ảo (VirtualBox, VMware hoặc Virtual PC) dưới dạng CD ảo và khởi động nó ở đó. Điều đó hầu như luôn luôn hoạt động, bởi vì với VM, đó không phải là tệp ISO - đó là CD thực sự trên phần cứng CD thực.

Khởi động từ một tệp ISO trên kim loại trần khó hơn nhiều. Cách bạn thực hiện việc này tùy thuộc vào phiên bản Grub nào bạn đang sử dụng và kết quả có thể khác nhau tùy thuộc vào ISO bạn đang sử dụng và cách cấu hình để khởi động. Đây là lý do tại sao hầu hết các công cụ boot-ISO-from-USB (Unetbootin, WinToFlash, v.v.) thường trích xuất nội dung ISO vào ổ đĩa - bởi vì cách đó có thể được truy cập trực tiếp, mà không gây nhầm lẫn cho hệ điều hành được khởi động.


Grub 1

... không chắc. Nếu có thể, các mục trong menu có thể sẽ trông rất giống Grub4DOS, mặc dù tôi nghĩ lệnh "map --hook" là một cải tiến Grub4DOS. Về mặt tích cực, Grub có hỗ trợ hệ thống tập tin rộng hơn Grub4DOS.

Một ghi chú trên Grub với reiserfs (chưa được xác nhận) cho biết bạn "phải gắn kết phân vùng của mình notailđể nó hoạt động".

Memdisk là một tùy chọn; xem bên dưới.


Grub4DOS

Grub4DOS cung cấp một số "mô phỏng CD" thử nghiệm hoạt động với một số ISO. Thật không may, Grub4DOS chỉ đọc các hệ thống tập tin FAT32 / NTFS. Tải xuống Grub4DOS.

Đây là một mục mẫu ( nguồn ):

title fdfullcd.iso (0xFF)
  find --set-root /fdfullcd.iso
  map /fdfullcd.iso (0xFF)
  map --hook
  root (0xFF)
  kernel /isolinux/data/memdisk
  initrd /isolinux/data/fdboot.img

Giả sử Win7 ISO có thể được khởi động với mục này :

title Windows 7
  map (hd0,0)/win7.iso (hd32)
  map --hook
  chainloader (hd32)

Các ISO khác có thể được khởi động bằng Memdisk :

title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
  kernel /memdisk iso
  initrd /hdt.iso

Bạn cũng có thể sử dụng trình cấu hình trình đơn như MultiBootISOs.exe từ PenDriveLinux . Đặt ISO trên ổ đĩa flash và chạy tiện ích để cài đặt bộ tải khởi động và định cấu hình menu khởi động.

Đây là tập Hak5 khi cài đặt Grub4DOS.


Grub 2

Đây là một vài ví dụ về các mục Grub2. chainloader hiện không hoạt động để khởi động ISO, vì vậy các mục này phải (1) sử dụng loopback để "gắn kết" ISO và (2) thêm một cái gì đó như iso-scan hoặc findiso vào dòng linux chỉ định tệp ISO.

Thật không may, không có cách chung để làm điều này. Mỗi mục khởi động khác nhau phải được tùy chỉnh theo nội dung của ISO mục tiêu. Hầu hết các Linux LiveCD sử dụng ISOLINUX làm bộ tải khởi động; tìm isolinux.cfg và kiểm tra mục khởi động đó để xem những gì nó thường khởi động.

Các mục ví dụ ( nguồn ):

menuentry "Ubuntu Live 9.10 32bit" {
 loopback loop /boot/iso/ubuntu-9.10-desktop-i386.iso
 linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-9.10-desktop-i386.iso noeject noprompt --
 initrd (loop)/casper/initrd.lz
}

menuentry "Grml small 2009.10" {
  loopback loop /boot/iso/grml-small_2009.10.iso
  linux (loop)/boot/grmlsmall/linux26 findiso=/boot/iso/grml-small_2009.10.iso apm=power-off lang=us vga=791 boot=live nomce noeject noprompt --
  initrd (loop)/boot/grmlsmall/initrd.gz
}

Nếu bạn đang cố khởi động LiveCD không phải Linux, bạn có thể không gặp may. Một lần nữa, Memdisk có thể giúp :

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}

@albert: Tôi đang sử dụng Grub2 trên ổ đĩa flash và bị thất vọng bởi những điều tương tự, vì vậy không khó để kết hợp với nhau. Tôi đang xem xét câu hỏi khác của bạn, nhưng tôi chưa bao giờ thử "đốt" ISO lên một phân vùng trước đây, vì vậy nó có thể ... thú vị.
quack quixote

Tôi có thể khởi động nó bên trong VMware (và tôi cũng đã làm như vậy) nhưng điều đó không giúp tôi nhiều vì đó là Windows và khi tôi cài đặt nó qua VMware trên đĩa của mình, nó sẽ không khởi động sau (Windows ngu ngốc ...).
Albert

Bạn có thể cho tôi một gợi ý về tùy chọn nào tôi nên thử trước, ví dụ Grub1, Grub2 hoặc Grub4DOS không? Tôi chỉ có thể cài đặt bất cứ thứ gì cần thiết, điều đó sẽ không thực sự là vấn đề.
Albert

@albert: bạn đang hỏi tham khảo câu hỏi trước đó của bạn? tôi tin rằng đặt cược tốt nhất của bạn là sử dụng phương pháp trích xuất; trình cài đặt Windows là một trong những ISO có vấn đề khi chúng không được khởi động từ phần cứng. bạn có thể thử memtest, nhưng tôi không biết nhiều về nó. bạn có thể muốn có một ổ đĩa flash và sử dụng nó; xem superuser.com/questions/66948/ Mạnh hoặc superuser.com/questions/62193/install-win7-from-usb
quack quixote

1
@quackquixote, Liên quan đến những từ in đậm của bạn "Hệ điều hành được tải sẽ làm gì? Rất có thể nó sẽ tìm CDROM mà nó không tìm thấy và thất bại" , Tại sao HĐH cần tìm CDROM? Nó đã là một tệp iso hoàn hảo và mọi thứ cần thiết để tải HĐH đều đã có trong tệp iso, vậy tại sao nó không thể bỏ qua việc tìm kiếm CDROM?
Pacerier

1

Bạn có thể sử dụng dd từ thiết bị đầu cuối để ghi tệp iso vào phân vùng. Chỉ cần cẩn thận, nếu bạn sử dụng dd sai, bạn có thể xóa sạch mọi thứ. Nó sẽ trông giống như thế này: dd if = Desktop / LinuxCDFile.iso of = / Path / To / Partition


Nhưng phân vùng cần phải là Chính để có thể khởi động bởi Windows Loader.
Firelord

Điều này chỉ hoạt động đôi khi, nói chung kết quả không thể khởi động.
David Tonhofer

1
@Firelord: Chà, đừng sử dụng Windows Loader. Sử dụng Grub. Vâng, nó cũng khởi động Windows, nếu bạn thực sự cần.
Evi1M4chine
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.