Добавьте возможность начальной загрузки UEFI к BIOS, только Ubuntu 18.04 основывала пользовательскую ISO

Я пытаюсь добавить возможность начальной загрузки UEFI к BIOS, только Ubuntu 18.04 основывала пользовательскую ISO. Все методы, которые я нашел до сих пор, требуют efi.img файла, который не присутствует в ISO. Я могу использовать файл из полной установки Ubuntu 18.04? Если да, я должен отредактировать его? В противном случае, как я могу создать efi.img файл?

Пользовательская ISO разработана для выполнения от USB, не установленного. Это также предназначается для распределения новым пользователям Linux. Добавление возможностей UEFI к USB, а не ISO не является решением, мы смотрим.

Это - сценарий, что я раньше создавал толстый раздел. Это выполняется в папке, содержащей извлеченную ISO:

#! /bin/sh

BOOT_IMG_DATA="$PWD"
BOOT_IMG=efi.img

#Ensure needed folders exist

if [ ! -d "$BOOT_IMG_DATA"/efi/boot ]; then
  mkdir -p "$BOOT_IMG_DATA"/efi/boot
fi

if [ ! -d "$BOOT_IMG_DATA"/boot/grub ]; then
  mkdir -p "$BOOT_IMG_DATA"/boot/grub
fi

chmod -R +rw "$BOOT_IMG_DATA"/boot/grub
chmod -R +rw "$BOOT_IMG_DATA"/efi/boot

# Create the 64-bit EFI GRUB binary (bootx64.efi) and the El-Torito boot
# image (efiboot.img) that goes in the /isolinux directory for booting on
# UEFI systems.

# First, build bootx64.efi, which will be installed here in /EFI/BOOT:

grub-mkimage --format=x86_64-efi --output=bootx64.efi --config=grub.cfg --compression=xz --prefix=/EFI/BOOT part_gpt part_msdos fat ext2 hfs hfsplus iso9660 udf ufs1 ufs2 zfs chain linux boot appleldr ahci configfile normal regexp minicmd reboot halt search search_fs_file search_fs_uuid search_label gfxterm gfxmenu efi_gop efi_uga all_video loadbios gzio echo true probe loadenv bitmap_scale font cat help ls png jpeg tga test at_keyboard usb_keyboard

# Then, create a FAT formatted image that contains bootx64.efi in the
# /EFI/BOOT directory.  This is used to bootstrap GRUB from the ISO image.
dd if=/dev/zero of=efiboot.img bs=1K count=1440

# Format the image as FAT12:
mkdosfs -F 12 efiboot.img

# Create a temporary mount point:
MOUNTPOINT=$(mktemp -d)

# Mount the image there:
mount -o loop efiboot.img $MOUNTPOINT

# Copy the GRUB binary to /EFI/BOOT:
mkdir -p $MOUNTPOINT/EFI/BOOT
cp -a bootx64.efi -s $MOUNTPOINT/EFI/BOOT


# Unmount and clean up:
umount $MOUNTPOINT
rmdir $MOUNTPOINT

# Move the efiboot.img to isolinux:
mv efiboot.img isolinux
mv bootx64.efi efi/boot

echo
echo "Done building /EFI/BOOT/bootx64.efi and /isolinux/efiboot.img."

Это - сценарий, который я использую для создания ISO:

#!/bin/bash

# The example names get mapped to their roles here
orig_iso="$HOME"/foxclone/foxclone025-01.iso
new_iso="$HOME"/foxclone/foxclone025-02.iso
new_files="$PWD"
mbr_template=isohdpfx.bin


# Extract MBR template file to disk
dd if="$orig_iso" bs=1 count=432 of="$mbr_template"


# Create the new ISO image
xorriso -as mkisofs \
   -U  \
   -allow-lowercase  \
   -r -V 'foxclone025-02' \
   -o "$new_iso" \
   -J -J -joliet-long \
   -isohybrid-mbr "$mbr_template" \
   -c isolinux/boot.cat \
   -b isolinux/isolinux.bin \
    -no-emul-boot -boot-load-size 4 -boot-info-table \
   -eltorito-alt-boot \
   -e isolinux/efiboot.img \
    -no-emul-boot \
    -isohybrid-gpt-basdat \
   "$new_files"

Кто-либо видит проблему в коде? Я действительно ценю другую пару глаз, смотрящую на это, поскольку я думаю, что стал "слишком близким к лесу для наблюдения деревьев".

Править: Контент начальной загрузки/личинки и EFI/BOOT следует

larry@larry-Satellite-C55-A:~/foxclone/iso3$ ls -l boot/grub
total 2492
-rw------- 1 larry larry 2523136 Jul 31 01:33 efi.img
-rw------- 1 larry larry    5004 Mar 18  2019 font.pf2
-rw------- 1 larry larry     941 Aug  5 15:28 grub.cfg
-rw------- 1 larry larry     604 Aug  5 15:28 loopback.cfg
drwxr-xr-x 2 larry larry   12288 Jan 13 09:20 x86_64-efi

larry@larry-Satellite-C55-A:~/foxclone/iso3$ ls -l EFI/BOOT
total 2424
-rw------- 1 larry larry 1334816 Aug  5 15:28 BOOTx64.EFI
-rw------- 1 larry larry 1146744 Aug  5 15:28 grubx64.efi

Содержание 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/black
set menu_color_highlight=black/light-gray

set timeout=5
menuentry "Foxclone" {
    set gfxpayload=keep
    linux   /casper/vmlinuz  boot=casper quiet splash ---
    initrd  /casper/initrd
}
0
задан 16 January 2020 в 23:58

1 ответ

Я думаю, что Вы включите возможность начальной загрузки UEFI путем простого добавления загрузчиков shimx64.efi и grubx64.efi и конфигурационный файл личинки к подкаталогам / каталога EFI. См. стандартную Ubuntu ISO для та же установка. У Вас уже есть съемные носители установка UEFI для/EFI/Boot с подарком grubx64.efi и shimx64.efi там, но переименованный к bootx64.efi. Все, в чем Вы нуждаетесь, является grub.cfg в/EFI/ubuntu. В установленной системе этот grub.cfg является просто тремя тупиками строки, которые копируют сохраняемый grub.cfg с/boot/grub/grub.cfg, но в Вашем случае, я не думаю, что Вы будете обновлять ядра, которые изменяют/boot/grub/grub.cfg, поэтому просто помещают копию/boot/grub/grub.cfg файла там. К вашему сведению тупиковая личинка похожа (Ваш UUID и HD номер x и число раздела:

search.fs_uuid <UUID-of-the-Ubuntu-root> root hd?,gpt?   
set prefix=($root)'/boot/grub'  
configfile $prefix/grub.cfg  

Тупик будет копировать в сохраняемой копии установки grub.cfg, таким образом, полный файл личинки, который не изменяется (никакие обновления ядра в Вашем случае) будет прекрасен. Я начал видеть рекомендации, которые копает помещение grub.cfg в работы/EFI/Boot теперь, но в прошлом, которое не сделало, только смотрел в/EFI/ubuntu для grub.cfg.


Право, на самом деле довольно просто настроить. grub.cfg смотрит хорошо, если Вы разобрались в названиях своего случая: initrd и не initrd.lz и vmlinuz и не vmlinuz.efi как стандартная Гостеприимная Ubuntu использование ISO.

0
ответ дан 30 January 2020 в 23:37

Другие вопросы по тегам:

Похожие вопросы: