Pertanyaan Bagaimana cara membuat ISO EFI-bootable dari versi Ubuntu yang dikustomisasi?


Saya telah membuat distribusi Ubuntu sendiri yang saya ingin boot (dari USB) pada MAC saya.

Saat menggunakan standar 64bit-Ubuntu-iso dari situs web Ubuntu, boot. Namun, ketika melakukan hal yang sama persis dengan file iso yang berisi distribusi saya sendiri tidak berfungsi, dan tampaknya hanya mendukung boot legacy. Namun, OS memiliki folder / sys / firmware / efi, jadi saya tahu ini mendukung EFI. Saya membuat iso menggunakan Relinux.

Saya telah melihat perbedaan antara dua file ISO, dan telah melihat bahwa ubuntu standar memiliki folder EFI / BOOT yang berisi grubx64.efi dan BOOTx64.EFI, dan juga memiliki folder boot yang tidak ada di folder lain. Saya telah mencoba menyalin dua direktori ini, EFI dan folder boot ke USB saya yang lain, tetapi tidak berfungsi.

Pertanyaanku adalah:

  • Bagaimana saya bisa mendapatkan dua folder ini ke dalam file iso saya saat ini?
  • Dan bagaimana saya bisa membuat iso distribusi saya sehingga mendukung boot EFI?

15
2018-04-29 07:58


asal




Jawaban:


Anda perlu membuat ISO katalog dual boot sehingga akan mem-boot EFI dan MBR. File ISO standar ISO 14.04 x64 bekerja dengan cara ini tetapi tidak ada instruksi yang tersedia untuk membuat ISO bootable 14.04 baru untuk sistem EFI. Saya bisa mengumpulkan langkah-langkah yang tepat untuk membuat ISO seperti ini.

Instruksi ini akan memungkinkan Anda membuat Ubuntu ISO 14.04 Server kustom yang dapat mem-boot EFI dan MBR. Ketika EFI boot pada sistem dengan disk kosong yang tidak diinisialisasi (misalnya pada VM Generasi 2 baru di Hyper-V), pengaturan akan dimulai secara otomatis, kemudian secara otomatis menghapus disk dan menginstal paket ubuntu-server dasar dan OpenSSH. Ini dirancang untuk secara otomatis menyediakan sistem baru dengan Ubuntu 14.04 menggunakan LVM dan partisi otomatis. Jika Anda menggunakan ISO ini pada sistem Linux yang ada, maka penginstal akan berhenti ketika mendeteksi disk yang ada dan menunggu masukan. Jika Anda menggunakan ISO ini pada sistem non-EFI (misalnya Generasi 1 Hyper-V VM) maka itu akan menunggu di layar startup penginstal grafis dan memerlukan masukan sebelum melanjutkan ke pemasang otomatis.

Hasilnya adalah basis instalasi Ubuntu Server dengan ubuntu-server dan openssh-server saja.

Berikut adalah langkah-langkah untuk membuat ISO EFI-bootable:

Dapatkan ISO 14.04:

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

Pasang dan ekstrak isinya ke folder baru:

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

Ubah ke direktori tempat kami akan melakukan pekerjaan kami:

cd ~/ubuntu

Setel bahasa ke bahasa Inggris:

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

Buat file preseed yang akan menggunakan LVM untuk mem-partisi disk secara otomatis menggunakan semua ruang yang tersedia:

sudo nano ~/ubuntu/ks.preseed

Ganti konten file dengan ini:

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

Buat file kickstart yang akan mengonfigurasi Ubuntu selama penginstalan: (pastikan Anda mengubah bagian nama pengguna, dan Anda harus menggunakan kata sandi terenkripsi)

sudo nano ~/ubuntu/ks.cfg

Ganti konten file dengan ini:

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

Edit file konfigurasi grub sehingga ketika ISO melakukan booting EFI, bootloader menggunakan opsi yang tepat untuk menggunakan file pralain dan konfigurasi kami:

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

Ganti konten file dengan ini:

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
}

Edit menu booting isolinux untuk booting non-EFI (MBR booting) untuk menggunakan konfigurasi kustom dan preseed kebiasaan:

sudo nano ~/ubuntu/isolinux/txt.cfg

Ganti konten file dengan ini:

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

Buat ISO:

Perintah ini adalah versi modifikasi dari perintah yang ditunjukkan pada http://petersmithphotog.no-ip.biz/wiki/index.php/Unattended_Install. Instruksi tersebut tidak berfungsi untuk Ubuntu 14.04 karena mereka menunjuk ke lokasi yang salah untuk file efi.img. (harus di ./boot/grub/ pada ISO)

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 .

Verifikasi ISO memiliki katalog boot gaya yang benar:

ISO asli yang Anda unduh dari Ubuntu:

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

Keluaran:

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)

ISO baru yang Anda buat:

dumpet -i ~/Custom1404.iso 

Keluaran:

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)

Anda dapat membandingkan output ini dengan output yang Anda dapatkan dari ISO yang dibangun menggunakan petunjuk di Bagaimana cara membuat instalasi Ubuntu tanpa pengawasan?: (mereka membuat ISO hanya MBR, bukan ISO booting ganda ISO)

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 .

Dapatkan info ISO:

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

Keluaran:

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)

17
2017-07-30 21:58



Itu melakukan lebih dari membuat ISO bootable EFI. Dengan menghapus opsi kickstart dan preseed dari petunjuk ini Anda dapat membuat ISO 14.04 standar ISO. Perubahan spesifik telah dicatat dalam jawaban. - anothermh
Kemudian saya meminta Anda untuk hanya menyimpan bagian yang relevan di sini, karena Anda sudah memiliki jawaban tentang pertanyaan pemasangan tanpa pengawasan dengan yang lainnya. - muru
IYA NIH! Saya telah mencari jauh dan luas untuk cara membuat ISO bootable EFI dari folder yang disesuaikan .. senang Anda menempatkan semuanya di sini di satu tempat! - Alex R
Ini berfungsi dengan baik di mesin virtual tetapi saya tidak dapat mem-boot ini ketika disalin ke drive USB seperti halnya dengan gambar vanilla Ubuntu. - HarlemSquirrel
@HarlemSquirrel, Untuk menginstal dari stik USB, Anda hanya perlu satu langkah lagi untuk mengonversi ISO ke format bootable USB drive: # isohybrid path/to/image.iso - jjnebeker


Bagi saya, cara terbaik adalah:

1) membuat iso hidup systemback

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

2) tambahkan partisi uefi ke iso dengan cara ini:

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) salin iso ke media (dalam hal ini flashdisk saya di / dev / sdb

pv /tmp/live.iso | dd of=/dev/sdb conv=notrunc,noerror

0
2017-11-29 14:57





UEFI mengaktifkan USB Drive

Jika Anda menginginkan Instalasi dari Media USB, Anda tidak perlu membuat ISO yang disesuaikan terlebih dahulu.

Membuat booting media langsung USB UEFI saja cukup lurus ke depan. Cukup salin file ke Anda FAT32-diformat USB drive. Itu dia! Ini akan terdeteksi sebagai Media Boot UEFI yang valid.

Kemudian Anda dapat memodifikasi file langsung di Drive USB.

Sumber dan Detail: Bagaimana cara membuat media live USB yang dapat di-boot UEFI-only?


0
2017-08-29 16:15