คุณต้องสร้าง ISO boot dual catalog เพื่อที่จะทำการบูต EFI และ MBR ไฟล์มาตรฐาน ISO 14.04 x64 ของ Ubuntu ทำงานด้วยวิธีนี้ แต่ไม่มีคำแนะนำให้สร้าง ISO ที่สามารถบูตได้ 14.04 ใหม่สำหรับระบบ EFI ฉันสามารถผสมผสานขั้นตอนที่ถูกต้องเพื่อสร้าง ISO เช่นนี้
คำแนะนำเหล่านี้จะช่วยให้คุณสร้าง Ubuntu ISO 14.04 เซิร์ฟเวอร์ ISO ที่สามารถบูต EFI และ MBR ได้ เมื่อบูต EFI บนระบบที่มีดิสก์เปล่าที่ไม่มีการกำหนดค่าเริ่มต้น (ตัวอย่างเช่น Generation 2 VM ใหม่ใน Hyper-V) การติดตั้งจะเริ่มขึ้นโดยอัตโนมัติจากนั้นทำการล้างดิสก์โดยอัตโนมัติ สิ่งนี้ถูกออกแบบมาสำหรับการจัดเตรียมระบบใหม่โดยอัตโนมัติด้วย Ubuntu 14.04 โดยใช้ LVM และการแบ่งพาร์ติชันอัตโนมัติ หากคุณใช้ ISO นี้กับระบบ Linux ที่มีอยู่ตัวติดตั้งจะหยุดทำงานเมื่อตรวจพบดิสก์ที่มีอยู่และรออินพุต หากคุณใช้ ISO นี้ในระบบที่ไม่ใช่ EFI (เช่น VM 1 รุ่น Hyper-V) มันจะรอที่หน้าจอเริ่มต้นการติดตั้งแบบกราฟิกและต้องการอินพุตก่อนที่จะดำเนินการติดตั้งแบบอัตโนมัติต่อไป
ผลลัพธ์คือการติดตั้ง Ubuntu Server พื้นฐานด้วย ubuntu-server และ openssh-server เท่านั้น
นี่คือขั้นตอนในการสร้าง ISO ที่บูตได้ด้วย EFI
รับ ISO 14.04:
wget http://releases.ubuntu.com/14.04/ubuntu-14.04-server-amd64.iso
ติดตั้งและแยกเนื้อหาไปยังโฟลเดอร์ใหม่:
sudo mkdir -p ~/iso
sudo mount -o loop ubuntu-14.04-server-amd64.iso.iso ~/iso
sudo mkdir ~/ubuntu
sudo cp -rT ~/iso ~/ubuntu
เปลี่ยนเป็นไดเรกทอรีที่เราจะทำงานของเรา:
cd ~/ubuntu
ตั้งค่าภาษาเป็นภาษาอังกฤษ:
sudo -i
echo en >/home/user/ubuntu/isolinux/lang
exit
สร้างไฟล์ preseed ที่จะใช้ LVM เพื่อแบ่งพาร์ติชันดิสก์โดยอัตโนมัติโดยใช้พื้นที่ที่มีอยู่ทั้งหมด:
sudo nano ~/ubuntu/ks.preseed
แทนที่เนื้อหาไฟล์ด้วยสิ่งนี้:
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
สร้างไฟล์ kickstart ที่จะกำหนดค่า Ubuntu ระหว่างการติดตั้ง: (ให้แน่ใจว่าคุณเปลี่ยนส่วนชื่อผู้ใช้และคุณควรใช้รหัสผ่านที่เข้ารหัส)
sudo nano ~/ubuntu/ks.cfg
แทนที่เนื้อหาไฟล์ด้วยสิ่งนี้:
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 ดังนั้นเมื่อ ISO ทำการบูต EFI bootloader จะใช้ตัวเลือกที่เหมาะสมเพื่อใช้ไฟล์ preseed และ configuration ของเรา:
sudo nano ~/ubuntu/boot/grub/grub.cfg
แทนที่เนื้อหาไฟล์ด้วยสิ่งนี้:
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
}
แก้ไขเมนูการบูต isolinux สำหรับการบูตที่ไม่ใช่ EFI (การบูต MBR) เพื่อใช้การกำหนดค่าที่กำหนดเองและการกำหนดล่วงหน้าที่กำหนดเอง:
sudo nano ~/ubuntu/isolinux/txt.cfg
แทนที่เนื้อหาไฟล์ด้วยสิ่งนี้:
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:
คำสั่งนี้จะเป็นรุ่นที่แก้ไขของคำสั่งที่แสดงให้เห็นhttp://petersmithphotog.no-ip.biz/wiki/index.php/Unattended_Install คำแนะนำเหล่านั้นใช้ไม่ได้กับ Ubuntu 14.04 เพราะชี้ไปยังตำแหน่งที่ไม่ถูกต้องสำหรับไฟล์ efi.img (ควรอยู่ใน. / boot /grub/ บน 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 .
ตรวจสอบว่า ISO มีแค็ตตาล็อกการบูตสไตล์ที่ถูกต้องหรือไม่:
ISO ดั้งเดิมที่คุณดาวน์โหลดจาก Ubuntu:
dumpet -i ~/ubuntu-14.04-server-amd64.iso
เอาท์พุท:
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 ใหม่ที่คุณสร้างขึ้น:
dumpet -i ~/Custom1404.iso
เอาท์พุท:
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)
คุณสามารถเปรียบเทียบผลลัพธ์นี้กับผลลัพธ์ที่คุณได้รับจาก ISO ที่สร้างขึ้นโดยใช้คำแนะนำที่ฉันจะสร้างการติดตั้ง Ubuntu แบบอัตโนมัติได้อย่างไร? : (พวกเขาสร้าง ISO MBR เท่านั้นไม่ใช่บูตคู่ 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 .
รับข้อมูล ISO:
dumpet -i ~/non-efi-ubuntu.iso
เอาท์พุท:
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)