UEFI makinelerinde grub2 kullanarak sürücümden bir ISO dosyasını nasıl önyükleyebilirim?


12

GParted , CloneZilla , Boot-Repair , Ubuntu 14.04 32 bit , ... gibi bir sürü canlı ISO dosyam/opt var ... eski BIOS makineme indirildi ve eski BIOS makineme indirdim , sadece grub menüsüne ekleyip önyükleyebilirim . :-)

Artık bir UEFI makinem var ve bulabildiğim tüm bilgiler BIOS makineleri için.

Bu ISO dosyalarını grub'tan önyükleme adımları nelerdir?

Sadece her zaman bir USB çubuğuna "yakmaktan" bıktım ve asla ihtiyacım olan çubuğu bulamıyorum, burada etrafımdaki toplam kaosta kaybedecek çok daha zor ise bilgisayarımın kendisi ... ) :-(


1
Bir süre önce bu şekilde gittim ve harika.
Organik Mermer

1
Başka bir sürücüye veya flash sürücülere tam sürücü yüklemesini kolaylaştırmak için her sürücüde bir tane olmak üzere ayrı bir bölüm kullanmayı seviyorum. help.ubuntu.com/community/Grub2/ISOBoot Örnekler: help.ubuntu.com/community/Grub2/ISOBoot/Examples bölümleri monte edilmiştir ve alma konusunda iki önemli konular olarak önyükleme parametrelerini ayrıntılı almadan önce olduğu gibi ben yolunun doğru almak bulmak çalışmak için. Flash sürücü takılıysa yol bile değişebilir. Önyükleme stanza ve yolunu görmek için ISO'ya bakmak ayrıntıları belirlemenize yardımcı olabilir.
oldfred

1
Daha önce bu 'grub-n-iso' yöntemini çok kullandım ve iyi çalışıyor :-) ama şimdi iso dosyalarını test için ayrı bir bilgisayarda test ediyorum ve iso dosyalarından hızlı USB3 pendrives'e klonlamak veya kalıcı canlı oluşturmak için klon ediyorum Mkusb ile USB pendrives . (USB pendrives'imi küçük bir plastik kutuda
saklıyorum

VBox, ISO dosyalarını çalıştırır Tamam, çıkarken makine durumunu kaydet seçeneğini kullanır, MultiBootUSB, ISO önyükleme için sürükle bırak seçeneğine sahiptir ve Sanal Makine yöneticisi ile QEMU hızlı bir şekilde iso çalıştırır.
CSCameron

1
Şimdilik ISO'yu döngü montajı için sadece grub2 2.02 kullanın. Grub2 2.04 bellek yetersiz hatası veriyor. bugs.launchpad.net/ubuntu/+source/grub2/+bug/1851311 Ubuntu 18.04 hala grub 2.02'ye sahip.
oldfred

Yanıtlar:


14

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_custombir 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ı /optsaklamak 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 loopbackdeğ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 -1ve 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 loopbackolur (hd2,gpt2)$GPartedISOFilebenim 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 linuxve initrdBIOS makinelerde denir linuxefive linuxefibize 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 ISOve 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
}

Henüz Clonezilla'yı kurdunuz mu? Biraz farklı, henüz çözemediyseniz gönderebilirim.
Organik Mermer

1
Yarın ekleyeceğim herkes için başka bir cevap göndereceğim "gimme the codez" tür insanlar için ... @OrganicMarble
Fabby

1 ama onun muhtemelen güvenli düşmesi 2gelen update-grub2bu günlerde.
WinEunuuchs2Unix

@ WinEunuuchs2Unix Benim geçmişimde ... Sadece yazıp upd↑kopyalayıp yapıştırıyorum. Hatırlatma için teşekkürler Güncellendi!
Fabby

6

Alternatif olarak 40_custom öğesine şu şekilde bir configfile eklemektir:

menuentry 'Live ISOs on SSD' {
configfile (hd0,3)/ISO/livecdimage.cfg
} 

menuentry 'Live ISOs on HDD (boot on SSD)' {
configfile (hd1,3)/ISO/livecdimage.cfg
} 

Bunu bir ISO'yu güncellediğimde yapıyorum, her zaman çalışmayı unutuyorum sudo update-grub. Yukarıdaki girişler hiçbir zaman değişmek zorunda değildir ve sadece herhangi bir 40_custom ile aynı biçime sahip, ancak başlık satırları olmadan ve ISO bölümümdeki / ISO klasörümde bulunan livecdimage.cfg dosyasını düzenleyebilirim.

Başka bir önyükleme parametresi olarak toram ve Nvidia ile nomodeset boot parametresi ekleyin. Ama yine de / isodevice'yi sökmek zorunda.

İsodevice ISO bağlantısını kesemiyor https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1155216

sudo umount -l -r -f /isodevice

Ve bu benim livecdimage.cfg dosyamın bir parçası

# livecdimage.cfg
# Add this to 40_custom to load this file:
# menuentry 'Live ISOs' {
# configfile (hd1,3)/iso/livecdimage.cfg
#} 
# Add iso names to livecdimage.cfg
#for i in `ls *.iso`;do echo "# "$i>>livecdimage.cfg; done;

menuentry "Ubuntu 16.04.4 xenial amd64" {
    set isofile="/ISO/ubuntu-16.04.4-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

menuentry "Ubuntu 18.04 Bionic amd64" {
    set isofile="/ISO/bionic-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

# spacer line
menuentry " " {
set root= 
}

menuentry "Reboot" {
    reboot
}

menuentry "Halt" {
    halt
}

Yeniden başlatmayı ve durdurmayı seviyorum! :-) +1 Neden ekliyorsunuz insmod? Ayrıca sohbet içinde bana ping
Fabby

inmod muhtemelen gerekli değildir. Grub2 ile bazı özellikler inşa edildi ve bazıları addin (insmod). Muhtemelen başlangıçta 2010 yılında ya da pc UEFI ve grub2 yeni ve sadece BIOS / MBR için gpt kullanmaya rağmen BIOS ile gpt önyükleme önce insmod gpt gerekli.
oldfred

Cevap için teşekkür ederim. O zaman cevaplardan bu satırları kaldırmak daha iyi olmaz mıydı?
Fabby

1
Kendi stanzamı düzenleyeyim ve 18.04 bot olup olmadığını göreyim. Beklerim. Ayrıca şimdi çok eski, bu yüzden biraz geri olacak gparted ISO önyükleme girdimi güncellemek istedim.
oldfred

1
Önyükleme tamam. 18.04 flash sürücümü taktığımı unuttum ve sistemimde hd0 oluyor, bu yüzden önyükleme yaparken doğru sürücüye sahip olmak için bir hdX girişini manuel olarak düzenlemeniz gerekiyor. Sıkıştırılmış .25 önyüklemim sadece .30 olarak değiştirilerek çalışmadı. ISO içine bakmak ve grub.cfg görmek ve bu parametreleri & grub döngü komutlarını kullanmak zorunda kaldı ve sonra çalıştı.
oldfred

5

mkusb ÇOK AMAÇLI HACK

Mkusb, hem BIOS hem de UEFI yetenekleri nedeniyle özel önyükleme sürücüsü projeleri için mükemmel bir temel oluşturur.

Bu kesmek, Windows yükleyicisi de dahil olmak üzere birden fazla ISO dosyasını önyükler ve grub2 menüsüne sahiptir.

Çoğu işletim sistemi için Grub2 menü girişleri Google Arama kullanılarak kullanılabilir ve bu cevabın kapsamı dışındadır.

mkusb varsayılanları

Kalıcı USB sürücüsü oluştururken mkusb varsayılanlarını kullanın.

mkusb tekrar varsayılanları kullanır

Şüpheniz varsa, mkusb süreklilik varsayılanlarını kullanın, bölüm boyutu daha sonra ayarlanabilir, ancak zaman alır.

DUS Konsolu

Kurulumdan sonra DUS Konsolu.

GP önce

G Bölümleme değişikliğinden önce işaretlendi.

Sonra tutuldu

Değişiklikten sonra hazırlanır - Kalıcılık dosyaları için FAT32 bölümü olan sdb4, ISO9660 OS bölümünün ve ext2 casper-rw bölümü olan sdb5'in üzerine yazın.

Kalıcılık bölümü

Kalıcılık bölümü - Her işletim sistemi için benzersiz bir ad klasörü oluşturun (kalıcılık gerektirir)

Kalıcılık klasörü

Kalıcılık klasörü - Her kalıcılık klasörüne bir casper-rw dosyası ve isteğe bağlı home-rw dosyası ekleyin. Bir home-rw dosyası, casper-rw dosyası yeniden adlandırılarak yapılabilir. Bir home-rw dosyası, Tam kurulumda ayrı bir ev bölümü gibidir, sürüm yükseltmelerinden sonra tekrar kullanılabilir.

ISO klasörü

NTFS usb veri bölümündeki ISO dosyaları için bir klasör oluşturun.

ISO klasörü içeriği

ISO klasörüne biraz ISO ekleyin.

GRUB konumu

grub.cfg konumu

grub.cfg

ISO dosyalarını döngüye bağlamak için grub.cfg dosyasını düzenleyin. Şunlardır: persistent persistent-path=/<persistent-folder-name>/kalıcılık istiyorsanız.

DÜZENLEME 18.04+ Grub içinde vmlinuz değil vmlinuz.efi ve initrd değil initrd değil initid.lz belirtin

sudo-parted -ls / dev / sdb

sudo-parted -ls / dev / sdb

sudo lsblk -f / dev / sdb

sudo lsblk -f / dev / sdb

Bir Windows yükleyici gerekiyorsa, mkusb "Windows yükleyici ayıklanıyor" işleviyle başlamak en kolay yoldur, (Windows ISO'yu TAR'ye manuel olarak çıkarmak zorunda kaldım),

mkusb Windows Installer

Kurulumdan sonra ISO'lar için bir klasör ve gerekirse kalıcılık klasörleri oluşturun (yukarıdaki prosedüre benzer).

mkusb Windows grub

Herhangi bir ISO'yu döngüye sokmak ve kalıcılık klasörlerini belirtmek için /boot/grub/grub.cfg dosyasını düzenleyin.

(bir Windows ISO dosyasını döngüye sokmanın bir yolunu bulamadınız).

Yukarıdakiler USB bellek olarak kullanılıyorsa, sadece Windows yüklü bir bilgisayarda depolanan ISO'ları başlatmak için kullanılabilir. Dahili sürücüde Grub gerekmez.


Ve bunları HDD / SDD'ye nasıl geri alırsınız ??? Soru şu anda bir USB çubuğunda istemek mi, yoksa bir şey mi kaçırdım?
Fabby

1
@Fabby, Bu sadece USB bellekler için değil. Yeni bir SATA sürücünüz varsa, bu yanıtta açıklandığı gibi başlayabilir ve mkusb'nin hem UEFI hem de BIOS modunda çalışan sağlam önyükleme sistemini yüklemesine izin verebilirsiniz . Bu SATA sürücü dahili olarak kurulabilir veya harici olarak USB veya eSATA ile bağlanabilir. 'Grub-n-iso' ile önyüklenecek hem 'geleneksel olarak kurulmuş sistemler' hem de yeni iso dosyaları eklemek mümkündür.
sudodus

Tamam, hala anlamıyorum: Bu ISO'ları istiyorum /opt/. Bunu nasıl yaparım? (Bu arada çaba için +1 olsa da ...)
Fabby

1
@Fabby: Sanırım yukarıda gösterildiği gibi ISO'lar için yeni bir klasör yapmak yerine, ISO'nun / opt /, grub.cfg'deki konumuna işaret edin, bir pendrive'daki grub sabit diskte ISO önyükleyebilir. Bunu bir deneyeceğim.
CSCameron

@Kabby: ISO'lar dahili sürücüde / opt / konumundaysa, dahili sürücüde kullandığınız menü girişi harici sürücüde çalışır. Bir USB çubuğundaki önyükleme grubunun, aşırı kalabalık veya dahili grub menüsünün bozulmaması gibi avantajları olabilir.
CSCameron

3

Üç kolay adım

grub menüsüne ISO eklemek ve buradan önyükleme yapmak için.

İlk olarak, yükleyin grml-rescueboot

Bir terminal açın ve şunu girin:

sudo apt install grml-rescueboot

İkinci olarak, iso dosyalarını /boot/grml/

Aynı terminalde şunu girin:

sudo mv ~/Downloads/<filename.iso> /boot/grml/

Üçüncü olarak, güncelleme grubu

Aynı terminalde şunu girin:

sudo update-grub

Gerektiğinde ikinci ve üçüncü adımları tekrarlayın

Eski ISO dosyalarını silmeyi unutmayın /boot/grml.

Referans: Grub2 ISO önyüklemesinde Ubuntu yardımı

Bu yardımcı olur umarım


/bootonları koymak için en kötü yer. Üzgünüm, grml içine baktı, bundan bahsetmeliydim. Çaba için +1
Fabby

+1 için @Fabby'e teşekkürler! Bunu yapmanın en iyi yolu olmayabilir, ama bu en kolay IMHO gibi görünüyor.
user68186

1
Bu yüzden +1: teknik olmayan kullanıcılar için iyi cevap.
Fabby

2

MultiBootUSB - QEMU

ISO dosyalarını en az güçlükle önyüklemek istiyorsanız ve kalıcılığa ihtiyacınız yoksa, MultiBootUSB bir QEMU seçeneği içerir:

  • MultiBootUSB'yi başlatın ve Boot ISO / USB sekmesini seçin.

  • ISO Seç görüntü alanına sürükleyip bırakın.

  • RAM boyutunu seçin ve Boot ISO düğmesine basın.

Grub.cfg dosyasını düzenlemenize, hatta oturumu kapatmanıza gerek yoktur.

Multiboot-QEMU


Şık! Bunu daha sonra deneyeceğim!
Fabby

@Fabby: MBUSB'nin bir Windows sürümü ve bir Linux sürümü var. Windows sürümünü ISO'ları önyükleyemedim, sadece USB'ler. Linux sürüm 9.2.0 benim için harika çalışıyor.
CSCameron

2

BASİT mkusb ISO multibooter

Çoklu kalıcılığa ihtiyacınız yoksa, bir mkusb flash sürücüde işletim sistemi ISO'larını çoklu önyüklemek kolaydır.

İstediğiniz varsayılan bir işletim sistemini kullanarak Kalıcı bir USB sürücü yapmak için mkusb kullanın, https://help.ubuntu.com/community/mkusb

Usb veri bölümü sdx1'de ISO adlı bir klasör oluşturun.

Önyüklenecek ISO'ları bu klasöre ekleyin.

ISO'ları döngüye sokmak için /sdx3/boot/grub/grub.cfg dosyasına menü girişleri ekleyin.

Örnekler:

menuentry "Ubuntu-18.04 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/ubuntu-18.04-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile splash --
        initrd (loop)/casper/initrd.lz
}

menuentry "GParted 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/gparted-live-0.31.0-1-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components noswap noeject toram=filesystem.squashfs ip='' nosplash findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}

menuentry "Clonezilla 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/clonezilla-live-2.5.5-38-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live live-config nolocales edd=on nomodeset ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\"   ocs_live_keymap=\"\" ocs_live_batch=\"no\" ocs_lang=\"\" vga=788   ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.