Як я можу створити ISO-завантажувальний ISO для спеціалізованої версії Ubuntu?


16

Я створив власний дистрибутив Ubuntu, який я хочу завантажувати (з USB) на своєму MAC.

Під час використання стандартного 64bit-Ubuntu-iso з веб-сайту Ubuntu він завантажується. Однак, коли робити точно те ж саме з файлом iso, який містить мій власний дистрибутив, він не працює, і, здається, підтримує лише застаріле завантаження. Однак в ОС є папка / sys / firmware / efi, тому я знаю, що вона підтримує EFI. Я зробив iso за допомогою Relinux.

Я переглянув відмінності двох ISO-файлів і побачив, що в стандартному ubuntu є папка EFI / BOOT, що містить grubx64.efi та BOOTx64.EFI, а також має папку завантаження, якої немає в іншому. Я спробував скопіювати ці два каталоги, EFI і завантажувальну папку в інший USB, але це не працює.

Моє запитання:

  • Як я можу вставити ці дві папки у свій поточний файл iso?
  • І як я можу зробити iso мого дистрибутива, щоб він підтримував завантаження EFI?

Відповіді:


18

Вам потрібно скласти подвійний каталог завантаження ISO, щоб він завантажував EFI та MBR. Стандартний файл Ubuntu 14.04 x64 ISO працює таким чином, але немає інструкцій для створення нового завантажувального ISO 14.04 для систем EFI. Мені вдалося скласти правильні кроки для створення такого ISO.

Ці інструкції дозволять вам створити користувацький ISO Ubuntu 14.04 Server, який може завантажувати EFI та MBR. Під час завантаження EFI в системі з порожнім неініціалізованим диском (наприклад, на новій генерації 2 VM в Hyper-V) налаштування почнеться автоматично, потім автоматично витріть диск і встановіть базові пакети ubuntu-сервера та OpenSSH. Це розроблено для автоматичного забезпечення нових систем з Ubuntu 14.04 за допомогою LVM та автоматичного розподілу. Якщо ви використовуєте цей ISO в існуючій системі Linux, інсталятор зупиниться, коли виявить існуючі диски і чекатиме введення. Якщо ви використовуєте цей ISO в системі, що не стосується EFI (наприклад, генерація 1 Hyper-V VM), він буде чекати на екрані запуску графічного інсталятора і вимагатиме введення, перш ніж перейти до автоматичної установки.

В результаті виходить базова установка Ubuntu Server з ubuntu-сервером і opensh-сервером.

Ось етапи створення ISO-завантажувального ISO:

Отримайте 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

Створіть попередньо встановлений файл, який використовуватиме 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, завантажувач використовує правильні параметри для використання попередньо встановлених файлів та файлів конфігурації:

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? : (вони створюють лише MBR ISO, а не подвійний каталог завантаження 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)

2
Це більше, ніж створити завантажувальний ISO ISO. Видаляючи початкові налаштування та попередньо встановлені параметри з цих інструкцій, ви можете створити стандартний Ubuntu 14.04 ISO. Конкретні зміни були відмічені у відповіді.
Anothermh

1
Тоді я прошу зберегти тут лише відповідні розділи, оскільки ви вже маєте відповідь на питання без нагляду щодо встановлення без усього іншого.
муру

2
ТАК! Я шукав далеко і широко, щоб створити завантажувальний ISO EFI із спеціалізованої папки. Рада, що ви все тут помістили в одне місце!
Алекс R

1
Це чудово працює у віртуальній машині, але я не можу завантажувати це під час копіювання на USB-накопичувач, як це робиться із зображенням ванільного Ubuntu.
HarlemSquirrel

2
@HarlemSquirrel, Щоб встановити з USB-накопичувача, вам знадобиться ще один крок для перетворення ISO в формат завантаження USB-накопичувача:# isohybrid path/to/image.iso
jjnebeker

1

USB-накопичувач з підтримкою UEFI

Якщо ви хочете встановити з USB Media, вам не потрібно спочатку створювати індивідуальний ISO.

Створення живих носіїв USB лише для UEFI - це досить прямо. Просто скопіюйте файли на USB-накопичувач у форматі FAT32 . Це воно! Він буде виявлений як дійсний завантажувальний носій UEFI.

Потім ви можете змінити файли безпосередньо на USB-диску.

Джерело та деталі: Як створити завантажувальний USB-медіа-носій лише для UEFI?


0

Для мене найкращий спосіб:

1) створити системний зворотній зв'язок iso

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

2) додайте розділ uefi до iso таким чином:

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 на носій (у цьому випадку мій pendrive в / dev / sdb

pv /tmp/live.iso | dd of=/dev/sdb conv=notrunc,noerror
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.