Grub 2.04'te bir hata var, bu yüzden önceki veya sonraki bir sürüme sahip olduğunuzdan emin olun.
Grub'a bir ISO dosyası eklemenin temelleri bir UEFI için bir BIOS makinesiyle aynıdır: dosyanın altına /etc/grub.d/40_custom
bir menuentry
öğe düzenleyin ve ekleyin (bu örnekte GParted kullanılır):
menuentry "GParted Live ISO" {
}
Şimdi ISO'yu sakladığımız dizini içeren bir değişken ekleyeceğiz (şimdiye kadar çok iyi: BIOS makineleriyle fark yok):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}
Bunları /opt
saklamak için kullanıyorum , çünkü makinemin kök dizininde dizin oluşturmayı sevmiyorum ve isteğe bağlı yazılımın bulunması gereken Linux Dosya Sistemi Hiyerarşisine göre.
Biz eklemeden önce loopback
değişkeni, bir yapmak yüzden, dosyanın depolandığı sabit hangi diskte bulmak gerekir: df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1
ve benim makinede çıktısı: /dev/sdb2
.
Ancak kullanımlarını (grub hdX,Y
) gösterimi ve bu UEFI ve BIOS makineleri arasındaki fark devreye giriyor! Yani şimdi, makinenizi yeniden grub menüsüne giderek ve basın C: Bu istemi grub komutu getirecektir alışık farklı komutlar ama ihtiyacınız sadece bir tanesidir: ls
.
Makinemde çıktı:
(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...
Ha? 4 sürücü? Sadece 3 tane var! Ve (hd1,4)
bir BIOS üzerinde değil (hd1,gpt3)
, UEFI'de ve (hd0)
hiç bölümü yok!
Görünüşe göre NVRAM'in bir kısmı depolama olarak kullanıldığında ve (hd0)
sürücülerinizi 1'de numaralandırmaya ihtiyaç duyduğunuzda göründüğünde ! ISO dosyalarını önyüklerken bulduğunuz tüm bilgiler 0'dan numaralandırmaya başlamak zorunda olduğunuzu söylese de (BIOS makinelerinde bu her zaman doğrudur , bu bazı UEFI makinelerinde durum böyle olmayabilir !)
Değeri Yani loopback
olur (hd2,gpt2)$GPartedISOFile
benim makinede ISO dosyası olarak yapıldı /dev/sdb2
(ikinci sürücü hd2
, ikinci bölümü gpt2
):
menuentry "GParted Live ISO" {
set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
loopback loop (hd2,gpt2)$GPartedISOFile
}
Diğer bir fark olduğunu linux
ve initrd
BIOS makinelerde denir linuxefi
ve linuxefi
bize nihai sonucu verir UEFI makinelerde:
#!/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
}
Şimdi bu dosyayı kaydedin ve grub ile aşağıdakileri güncelleyin:
update-grub
Yukarıdakilerin hepsinden sonra, yeniden başlatın , grub menüsüne gidin , seçin GParted Live ISO
ve artık bir USB çubuğu aramak zorunda kalmadan ISO'nuzu kolayca önyükleyebilirsiniz!
:-)
CloneZilla Live örneği ( bu soru için )
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
}