Có một lỗi trong grub 2.04 vì vậy hãy đảm bảo bạn có phiên bản trước hoặc sau.
Chà, những điều cơ bản để thêm tệp ISO vào grub cũng giống với UEFI như đối với máy BIOS: chỉnh sửa /etc/grub.d/40_custom
và thêm một menuentry
mục (GParted được sử dụng trong ví dụ này) vào dưới cùng của tệp:
menuentry "GParted Live ISO" {
}
Bây giờ chúng tôi sẽ thêm một biến chứa thư mục nơi chúng tôi lưu trữ ISO (cho đến nay, rất tốt: không có sự khác biệt với các máy BIOS):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}
Tôi đang sử dụng /opt
để lưu trữ những thứ này vì tôi không thích tạo thư mục trong thư mục gốc của máy và theo Phân cấp hệ thống tệp của Linux , nơi mà phần mềm tùy chọn sẽ cư trú.
Trước khi thêm loopback
biến, chúng ta cần tìm ra tệp lưu trữ trên đĩa cứng nào, vì vậy chúng tôi thực hiện: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
và đầu ra trên máy của tôi là:/dev/sdb2
.
Tuy nhiên, grub sử dụng hdX,Y
ký hiệu ( ) và đây là điểm khác biệt giữa các máy UEFI và BIOS! Vì vậy, bây giờ hãy khởi động lại máy của bạn, vào menu grub và nhấn C: Thao tác này sẽ đưa bạn đến dấu nhắc lệnh grub với các lệnh khác với những lệnh bạn đã sử dụng nhưng lệnh duy nhất bạn cần là:ls
.
Trên máy của tôi, đầu ra là:
(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...
Huh? 4 ổ đĩa? Tôi chỉ có 3! Và nó không phải là (hd1,4)
dòng trên BIOS mà là (hd1,gpt3)
trong UEFI và(hd0)
không có phân vùng nào cả!
Chà, rõ ràng khi một phần của NVRAM được sử dụng làm bộ lưu trữ và hiển thị khi (hd0)
bạn cần bắt đầu đánh số ổ đĩa của mình ở mức 1! Trong khi tất cả thông tin bạn tìm thấy khi khởi động các tệp ISO nói rằng bạn phải bắt đầu đánh số từ 0 (trên các máy BIOS thì điều này luôn đúng , điều này không nhất thiết phải xảy ra trên một số máy UEFI !)
Vì vậy, giá trị loopback
trở thành (hd2,gpt2)$GPartedISOFile
tệp ISO trên máy của tôi là /dev/sdb2
(ổ đĩa hd2
thứ hai, phân vùng thứ hai gpt2
):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
}
Một điểm khác biệt nữa là linux
và initrd
trên các máy BIOS được gọi linuxefi
và linuxefi
trên các máy UEFI, điều này cho chúng ta kết quả cuối cùng:
#!/bin/sh
exec tail -n +3 $0
# 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.
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
linuxefi (loop)/live/vmlinuz boot=live components config findiso=$GPartedISOFile ip=frommedia toram=filesystem.squashfs union=overlay username=user
initrdefi (loop)/live/initrd.img
}
Vì vậy, bây giờ hãy lưu tệp đó và cập nhật grub với:
update-grub
Sau tất cả những điều trên, khởi động lại, vào menu grub , chọnGParted Live ISO
và bây giờ bạn có thể dễ dàng khởi động ISO của mình mà không phải tìm kiếm thanh USB nữa!
:-)
Ví dụ CloneZilla Live (cho câu hỏi này )
menuentry "CloneZilla ISO" {
set ISOFile="/opt/Live-ISOs/clonezilla-live-20170905-zesty-amd64.iso"
loopback loop (hd2,gpt2)$ISOFile
linuxefi (loop)/live/vmlinuz boot=live components config findiso=$ISOFile ip=frommedia toram=filesystem.squashfs union=overlay
initrdefi (loop)/live/initrd.img
}