Ubuntu'nun özelleştirilmiş bir sürümünün EFI önyüklenebilir ISO'sunu nasıl oluştururum?


16

MAC'imde (USB'den) önyüklemek istediğim kendi Ubuntu dağıtımını oluşturdum.

Ubuntu web sitesinden standart 64bit-Ubuntu-iso kullanılırken önyükleme yapar. Ancak, kendi dağıtımımı içeren iso dosyası ile aynı şeyi yaparken işe yaramaz ve sadece eski önyüklemeyi destekliyor gibi görünür. Ancak, işletim sistemi / sys / firmware / efi klasörüne sahiptir, bu yüzden EFI'yi desteklediğini biliyorum. Relinux kullanarak iso'yu yaptım.

İki ISO dosyası arasındaki farklara baktım ve standart ubuntu'nun grubx64.efi ve BOOTx64.EFI içeren bir EFI / BOOT klasörüne sahip olduğunu ve diğerinde bulunmayan bir önyükleme klasörüne sahip olduğunu gördüm. Bu iki dizini, EFI ve önyükleme klasörünü diğer USB'ime kopyalamaya çalıştım, ancak çalışmıyor.

Sorum şu:

  • Bu iki klasörü mevcut iso dosyama nasıl alabilirim?
  • Ve EFI önyüklemesini desteklemesi için dağıtımımın bir iso'yu nasıl yapabilirim?

Yanıtlar:


18

EFI ve MBR'yi önyükleyebilmek için bir çift önyükleme kataloğu ISO yapmanız gerekir. Standart Ubuntu 14.04 x64 ISO dosyası bu şekilde çalışır, ancak EFI sistemleri için yeni bir 14.04 önyüklenebilir ISO yapmak için herhangi bir talimat yoktur. Böyle bir ISO oluşturmak için doğru adımları bir araya getirebildim.

Bu talimatlar, EFI ve MBR'yi önyükleyebilen özel bir Ubuntu 14.04 Sunucu ISO'su oluşturmanıza olanak tanır. EFI boş, başlatılmamış bir diske sahip bir sistemde önyükleme yaparken (örneğin Hyper-V'de yeni bir 2. Nesil VM'de) kurulum otomatik olarak başlar, ardından diski otomatik olarak siler ve temel ubuntu-sunucu paketlerini ve OpenSSH'yi kurar. Bu, LVM ve otomatik bölümleme kullanarak Ubuntu 14.04 ile yeni sistemlerin otomatik olarak sağlanması için tasarlanmıştır. Bu ISO'yu mevcut bir Linux sisteminde kullanırsanız, yükleyici mevcut diskleri algıladığında durur ve giriş bekler. Bu ISO'yu EFI olmayan bir sistemde (örneğin 1. Nesil Hyper-V VM) kullanırsanız, grafik yükleyicinin başlangıç ​​ekranında bekleyecek ve otomatik yükleyiciye devam etmeden önce giriş yapılması gerekecektir.

Sonuç, ubuntu sunucusu ve yalnızca shsh sunucusu ile temel bir Ubuntu Sunucusu kurulumudur.

EFI önyüklenebilir bir ISO oluşturma adımları şunlardır:

14.04 ISO'yu edinin:

wget http://releases.ubuntu.com/14.04/ubuntu-14.04-server-amd64.iso

Bağlayın ve içeriğini yeni bir klasöre çıkarın:

sudo mkdir -p ~/iso
sudo mount -o loop ubuntu-14.04-server-amd64.iso.iso ~/iso
sudo mkdir ~/ubuntu
sudo cp -rT ~/iso ~/ubuntu

İşimizi yapacağımız dizine geçin:

cd ~/ubuntu

Dili İngilizce olarak ayarlayın:

sudo -i
echo en >/home/user/ubuntu/isolinux/lang
exit

Kullanılabilir tüm alanı kullanarak diski otomatik olarak bölümlemek için LVM'yi kullanan bir önayar dosyası oluşturun:

sudo nano ~/ubuntu/ks.preseed

Dosya içeriğini bununla değiştir:

d-i partman-auto/method string lvm
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/choose_recipe select atomic
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/confirm_write_new_label     boolean true
d-i partman/choose_partition            select  finish
d-i partman/confirm_nooverwrite         boolean true
d-i partman/confirm                     boolean true
d-i partman-auto/purge_lvm_from_device  boolean true
d-i partman-lvm/device_remove_lvm       boolean true
d-i partman-lvm/confirm                 boolean true
d-i partman-lvm/confirm_nooverwrite     boolean true
d-i partman-auto/init_automatically_partition       select      Guided - use entire disk and set up LVM
d-i partman/choose_partition                select      Finish partitioning and write changes to disk
d-i partman-auto-lvm/no_boot            boolean true
d-i partman-md/device_remove_md         boolean true
d-i partman-md/confirm                  boolean true
d-i partman-md/confirm_nooverwrite      boolean true

Yükleme sırasında Ubuntu'yu yapılandıracak bir kickstart dosyası oluşturun: (kullanıcı adı bölümünü değiştirdiğinizden ve şifrelenmiş parolalar kullandığınızdan emin olun)

sudo nano ~/ubuntu/ks.cfg

Dosya içeriğini bununla değiştir:

lang en_US
langsupport en_US
keyboard us
mouse
timezone America/Los_Angeles
rootpw --disabled
user USERNAME --fullname "USERNAME" --password "PASSWORD"
reboot
text
install
cdrom
auth  --useshadow  --enablemd5 
network --bootproto=dhcp --device=eth0
firewall --disabled 
skipx
%packages
@ ubuntu-server
openssh-server

Grub yapılandırma dosyasını, ISO bir EFI önyüklemesi gerçekleştirdiğinde önyükleyici önayar ve yapılandırma dosyalarımızı kullanmak için doğru seçenekleri kullanır:

sudo nano ~/ubuntu/boot/grub/grub.cfg

Dosya içeriğini bununla değiştir:

if loadfont /boot/grub/font.pf2 ; then
    set gfxmode=auto
    insmod efi_gop
    insmod efi_uga
    insmod gfxterm
    terminal_output gfxterm
fi

set menu_color_normal=white/light-blue
set menu_color_highlight=light-blue/light-gray
set timeout=10
set default=0

menuentry "Automatically Install Ubuntu Server with Custom Config" {
    set gfxpayload=keep
    linux   /install/vmlinuz  file=/cdrom/preseed/ubuntu-server.seed quiet ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
    initrd  /install/initrd.gz
}
menuentry "OEM install (for manufacturers)" {
    set gfxpayload=keep
    linux   /install/vmlinuz  file=/cdrom/preseed/ubuntu-server.seed quiet oem-config/enable=true --
    initrd  /install/initrd.gz
}
menuentry "Multiple server install with MAAS" {
    set gfxpayload=keep
    linux   /install/vmlinuz  modules=maas-enlist-udeb vga=788 initrd=/install/initrd.gz quiet --
    initrd  /install/initrd.gz
}
menuentry "Check disc for defects" {
    set gfxpayload=keep
    linux   /install/vmlinuz  MENU=/bin/cdrom-checker-menu quiet --
    initrd  /install/initrd.gz
}
menuentry "Rescue a broken system" {
    set gfxpayload=keep
    linux   /install/vmlinuz  rescue/enable=true --
    initrd  /install/initrd.gz
}

Özel yapılandırmayı ve özel hazır ayarı kullanmak için EFI olmayan önyükleme (MBR önyükleme) için isolinux önyükleme menüsünü düzenleyin:

sudo nano ~/ubuntu/isolinux/txt.cfg

Dosya içeriğini bununla değiştir:

default install
label install
  menu label ^Install Ubuntu Server with Custom Config
  kernel /install/vmlinuz
  append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
label cloud
  menu label ^Multiple server install with MAAS
  kernel /install/vmlinuz
  append   modules=maas-enlist-udeb vga=788 initrd=/install/initrd.gz quiet --
label check
  menu label ^Check disc for defects
  kernel /install/vmlinuz
  append   MENU=/bin/cdrom-checker-menu vga=788 initrd=/install/initrd.gz quiet --
label memtest
  menu label Test ^memory
  kernel /install/mt86plus
label hd
  menu label ^Boot from first hard disk
  localboot 0x80

ISO'yu oluşturun:

Bu komut, http://petersmithphotog.no-ip.biz/wiki/index.php/Unattended_Install adresinde gösterilen komutun değiştirilmiş bir sürümüdür . Bu talimatlar Ubuntu 14.04 için çalışmaz, çünkü efi.img dosyası için yanlış konumlara işaret ederler. (ISO'da ./boot/grub/ içinde olmalıdır)

sudo mkisofs -U -A "Custom1404" -V "Custom1404" -volset "Custom1404" -J -joliet-long -r -v -T -o ../Custom1404.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot .

ISO'nun doğru stil önyükleme kataloglarına sahip olduğunu doğrulayın:

Ubuntu'dan indirdiğiniz orijinal ISO:

dumpet -i ~/ubuntu-14.04-server-amd64.iso 

Çıktı:

Validation Entry:
    Header Indicator: 0x01 (Validation Entry)
    PlatformId: 0x00 (80x86)
    ID: ""
    Checksum: 0x55aa
    Key bytes: 0x55aa
Boot Catalog Default Entry:
    Entry is bootable
    Boot Media emulation type: no emulation
    Media load segment: 0x0 (0000:7c00)
    System type: 0 (0x00)
    Load Sectors: 4 (0x0004)
    Load LBA: 8446 (0x000020fe)
Section Header Entry:
    Header Indicator: 0x91 (Final Section Header Entry)
    PlatformId: 0xef (EFI)
    Section Entries: 1
    ID: ""
Boot Catalog Section Entry:
    Entry is bootable
    Boot Media emulation type: no emulation
    Media load address: 0 (0x0000)
    System type: 0 (0x00)
    Load Sectors: 4672 (0x1240)
    Load LBA: 24754 (0x000060b2)

Oluşturduğunuz yeni ISO:

dumpet -i ~/Custom1404.iso 

Çıktı:

Validation Entry:
    Header Indicator: 0x01 (Validation Entry)
    PlatformId: 0x00 (80x86)
    ID: ""
    Checksum: 0x55aa
    Key bytes: 0x55aa
Boot Catalog Default Entry:
    Entry is bootable
    Boot Media emulation type: no emulation
    Media load segment: 0x0 (0000:7c00)
    System type: 0 (0x00)
    Load Sectors: 4 (0x0004)
    Load LBA: 3100 (0x00000c1c)
Section Header Entry:
    Header Indicator: 0x91 (Final Section Header Entry)
    PlatformId: 0xef (EFI)
    Section Entries: 1
    ID: ""
Boot Catalog Section Entry:
    Entry is bootable
    Boot Media emulation type: no emulation
    Media load address: 0 (0x0000)
    System type: 0 (0x00)
    Load Sectors: 4672 (0x1240)
    Load LBA: 1932 (0x0000078c)

Bu çıkışı , Ubuntu'nun tamamen katılımsız bir kurulumunu nasıl oluştururum? Bölümündeki talimatları kullanarak oluşturulmuş bir ISO'dan aldığınız çıktı ile karşılaştırabilirsiniz. : (çift önyükleme kataloğu ISO değil, yalnızca MBR ISO oluştururlar)

sudo mkisofs -D -r -V "non-efi-ubuntu" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../non-efi-ubuntu.iso .

ISO bilgisi alın:

dumpet -i ~/non-efi-ubuntu.iso 

Çıktı:

Validation Entry:
    Header Indicator: 0x01 (Validation Entry)
    PlatformId: 0x00 (80x86)
    ID: ""
    Checksum: 0x55aa
    Key bytes: 0x55aa
Boot Catalog Default Entry:
    Entry is bootable
    Boot Media emulation type: no emulation
    Media load segment: 0x0 (0000:7c00)
    System type: 0 (0x00)
    Load Sectors: 4 (0x0004)
    Load LBA: 1925 (0x00000785)

2
EFI önyüklenebilir bir ISO oluşturmaktan daha fazlasını yapar. Kickstart ve preseed seçeneklerini bu talimatlardan kaldırarak standart bir Ubuntu 14.04 ISO oluşturabilirsiniz. Yanıtta spesifik değişiklikler kaydedildi.
anothermh

1
Daha sonra, yalnızca ilgili bölümleri saklamanızı rica ediyorum, çünkü diğer her şeyle birlikte katılımsız yükleme sorusuna zaten bir cevabınız var.
muru

2
EVET! Özel klasörden bir EFI önyüklenebilir ISO oluşturmanın bir yolunu aradım. Burada her şeyi tek bir yere koyduğunuza sevindim!
Alex R

1
Bu sanal bir makinede harika çalışıyor ancak vanilya Ubuntu görüntüsü gibi bir USB sürücüsüne kopyalandığında bunu önyükleyemiyorum.
HarlemSquirrel

2
@HarlemSquirrel, Bir USB çubuğundan takmak için, ISO'yu bir USB sürücü önyüklenebilir formatına dönüştürmek için sadece bir adım daha yeterlidir:# isohybrid path/to/image.iso
jjnebeker

1

UEFI özellikli USB Sürücü

USB Ortamından Kurulum istiyorsanız, önce özelleştirilmiş bir ISO oluşturmanız gerekmez.

Yalnızca UEFI ile önyükleme yapan USB canlı medya oluşturmak oldukça basittir. Dosyaları FAT32 biçimli USB sürücünüze kopyalamanız yeterlidir . Bu kadar! Geçerli bir UEFI Önyükleme Ortamı olarak algılanacaktır.

Ardından dosyaları doğrudan USB Sürücüsünden değiştirebilirsiniz.

Kaynak ve Ayrıntılar: Yalnızca UEFI ile önyüklenebilir USB canlı medya nasıl oluşturulur?


0

Benim için en iyi yol:

1) systemback canlı iso oluşturmak

sudo apt-get install systemback
sudo apt-get install live-boot
sudo apt-get autoremove --purge casper

2) iso'ya şu şekilde bir uefi bölümü ekleyin:

cd /home
cat `ls -1 -t syst*.iso|head -1` efi.img >/tmp/live.iso
echo -e "n\np\n2\n\n\nt\n2\nef\nw\n"|fdisk /tmp/live.iso

3) ISO'yu ortama kopyalayın (bu durumda / dev / sdb'deki pendrive'ım

pv /tmp/live.iso | dd of=/dev/sdb conv=notrunc,noerror
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.