У меня есть устройство с процессором AMD64, но загрузчиком UEFI, который поддерживает только i386.
Я сделал пользовательский установщик Ubuntu 19.04 ISO, используя Cubic , и перенес его на USB, используя usb-creator-gtk (Startup Disk Creator).
Это создает два раздела на USB:
Первый раздел отформатирован как ISO9660 и содержит содержимое ISO, второй - раздел FAT32, содержащий только загрузочные файлы .EFI.
Второй раздел - это то, с чего планшет будет загружаться. Его содержимое взято из файла efi.img, который хранится в / boot / grub в ISO. Первоначально он содержал только E64-файлы AMD64. с помощью этих команд:
dd if=/dev/zero of=efi.img bs=1M count=5
mkfs.fat efi.img
sudo mount -o loop,rw efi.img /media/efi
sudo cp -r <files> /media/efi
Это успешно делает загрузочный USB, однако он не загружает установщик Grub, он только загружает командную строку Grub.
Я использовал этот bootia32.efi
файл для успешной загрузки grub прежде, если вместо этого я вручную отформатирую USB как FAT32, скопирую файлы ISO и поместу пользовательский файл EFI в / EFI / BOOT, после чего устройство загрузится в Grub, как я и ожидал.
Но я бы хотел сделать ISO-образ, который можно прошивать как обычно и нормально загружаться.
У меня вопрос: какой смысл создавать отдельный раздел для хранения загрузочных файлов EFI, как это делает usb-creator-gtk? Как заставить этот раздел загружать конфигурацию Grub установщика, а не только командную строку Grub?
Спасибо
Благодаря @oldfred для объяснения, что разделенные разделы состоят в том, чтобы преодолеть предел размера файла на 4 ГБ для FAT32.
Мне удалось создать загрузочный ISO путем помещения обоих boot
папка и EFI
папки от ISO в FAT32 (efi.img) раздел.
Я изменил grub.cfg для запуска от другого раздела, чем тот, в котором он находится.
Это не кажется правильным мне, потому что исходный efi.img файл только имел три файла:
BOOTx64.EFI
grubx64.efi
mmx64.efi
Но, это работает так, я счастлив.
Точная структура моего efi.img файла - это:
. ├── boot │ └── grub │ ├── font.pf2 │ ├── grub.cfg │ ├── loopback.cfg │ └── x86_64-efi │ ├── acpi.mod │ ├── adler32.mod │ ├── ahci.mod │ ├── all_video.mod │ ├── aout.mod │ ├── appleldr.mod │ ├── archelp.mod │ ├── ata.mod │ ├── at_keyboard.mod │ ├── backtrace.mod │ ├── bfs.mod │ ├── bitmap.mod │ ├── bitmap_scale.mod │ ├── blocklist.mod │ ├── boot.mod │ ├── bsd.mod │ ├── bswap_test.mod │ ├── btrfs.mod │ ├── bufio.mod │ ├── cat.mod │ ├── cbfs.mod │ ├── cbls.mod │ ├── cbmemc.mod │ ├── cbtable.mod │ ├── cbtime.mod │ ├── chain.mod │ ├── cmdline_cat_test.mod │ ├── cmp.mod │ ├── cmp_test.mod │ ├── command.lst │ ├── cpio_be.mod │ ├── cpio.mod │ ├── cpuid.mod │ ├── crc64.mod │ ├── cryptodisk.mod │ ├── crypto.lst │ ├── crypto.mod │ ├── cs5536.mod │ ├── ctz_test.mod │ ├── datehook.mod │ ├── date.mod │ ├── datetime.mod │ ├── diskfilter.mod │ ├── disk.mod │ ├── div.mod │ ├── div_test.mod │ ├── dm_nv.mod │ ├── echo.mod │ ├── efifwsetup.mod │ ├── efi_gop.mod │ ├── efinet.mod │ ├── efi_uga.mod │ ├── ehci.mod │ ├── elf.mod │ ├── eval.mod │ ├── exfat.mod │ ├── exfctest.mod │ ├── ext2.mod │ ├── fat.mod │ ├── file.mod │ ├── fixvideo.mod │ ├── font.mod │ ├── fs.lst │ ├── gcry_arcfour.mod │ ├── gcry_blowfish.mod │ ├── gcry_camellia.mod │ ├── gcry_cast5.mod │ ├── gcry_crc.mod │ ├── gcry_des.mod │ ├── gcry_dsa.mod │ ├── gcry_idea.mod │ ├── gcry_md4.mod │ ├── gcry_md5.mod │ ├── gcry_rfc2268.mod │ ├── gcry_rijndael.mod │ ├── gcry_rmd160.mod │ ├── gcry_rsa.mod │ ├── gcry_seed.mod │ ├── gcry_serpent.mod │ ├── gcry_sha1.mod │ ├── gcry_sha256.mod │ ├── gcry_sha512.mod │ ├── gcry_tiger.mod │ ├── gcry_twofish.mod │ ├── gcry_whirlpool.mod │ ├── geli.mod │ ├── gettext.mod │ ├── gfxmenu.mod │ ├── gfxterm_background.mod │ ├── gfxterm_menu.mod │ ├── gfxterm.mod │ ├── gptsync.mod │ ├── grub.cfg │ ├── gzio.mod │ ├── halt.mod │ ├── hashsum.mod │ ├── hdparm.mod │ ├── help.mod │ ├── hexdump.mod │ ├── hfs.mod │ ├── hfspluscomp.mod │ ├── hfsplus.mod │ ├── http.mod │ ├── iorw.mod │ ├── jfs.mod │ ├── jpeg.mod │ ├── keylayouts.mod │ ├── keystatus.mod │ ├── ldm.mod │ ├── legacycfg.mod │ ├── legacy_password_test.mod │ ├── linux16.mod │ ├── linuxefi.mod │ ├── linux.mod │ ├── loadbios.mod │ ├── loadenv.mod │ ├── loopback.mod │ ├── lsacpi.mod │ ├── lsefimmap.mod │ ├── lsefi.mod │ ├── lsefisystab.mod │ ├── lsmmap.mod │ ├── ls.mod │ ├── lspci.mod │ ├── lssal.mod │ ├── luks.mod │ ├── lvm.mod │ ├── lzopio.mod │ ├── macbless.mod │ ├── macho.mod │ ├── mdraid09_be.mod │ ├── mdraid09.mod │ ├── mdraid1x.mod │ ├── memrw.mod │ ├── minicmd.mod │ ├── minix2_be.mod │ ├── minix2.mod │ ├── minix3_be.mod │ ├── minix3.mod │ ├── minix_be.mod │ ├── mmap.mod │ ├── moddep.lst │ ├── morse.mod │ ├── mpi.mod │ ├── msdospart.mod │ ├── mul_test.mod │ ├── multiboot2.mod │ ├── multiboot.mod │ ├── nativedisk.mod │ ├── net.mod │ ├── newc.mod │ ├── ntfscomp.mod │ ├── ntfs.mod │ ├── odc.mod │ ├── offsetio.mod │ ├── ohci.mod │ ├── part_acorn.mod │ ├── part_amiga.mod │ ├── part_apple.mod │ ├── part_bsd.mod │ ├── part_dfly.mod │ ├── part_dvh.mod │ ├── part_gpt.mod │ ├── partmap.lst │ ├── part_msdos.mod │ ├── part_plan.mod │ ├── part_sun.mod │ ├── part_sunpc.mod │ ├── parttool.lst │ ├── parttool.mod │ ├── password.mod │ ├── password_pbkdf2.mod │ ├── pata.mod │ ├── pbkdf2.mod │ ├── pbkdf2_test.mod │ ├── pcidump.mod │ ├── play.mod │ ├── png.mod │ ├── priority_queue.mod │ ├── probe.mod │ ├── procfs.mod │ ├── progress.mod │ ├── raid5rec.mod │ ├── raid6rec.mod │ ├── random.mod │ ├── read.mod │ ├── reboot.mod │ ├── regexp.mod │ ├── reiserfs.mod │ ├── relocator.mod │ ├── romfs.mod │ ├── scsi.mod │ ├── serial.mod │ ├── setjmp.mod │ ├── setjmp_test.mod │ ├── setpci.mod │ ├── shift_test.mod │ ├── signature_test.mod │ ├── sleep.mod │ ├── sleep_test.mod │ ├── spkmodem.mod │ ├── squash4.mod │ ├── syslinuxcfg.mod │ ├── terminal.lst │ ├── terminal.mod │ ├── terminfo.mod │ ├── test_blockarg.mod │ ├── testload.mod │ ├── test.mod │ ├── testspeed.mod │ ├── tftp.mod │ ├── tga.mod │ ├── time.mod │ ├── trig.mod │ ├── tr.mod │ ├── true.mod │ ├── udf.mod │ ├── ufs1_be.mod │ ├── ufs1.mod │ ├── ufs2.mod │ ├── uhci.mod │ ├── usb_keyboard.mod │ ├── usb.mod │ ├── usbms.mod │ ├── usbserial_common.mod │ ├── usbserial_ftdi.mod │ ├── usbserial_pl2303.mod │ ├── usbserial_usbdebug.mod │ ├── usbtest.mod │ ├── verify.mod │ ├── video_bochs.mod │ ├── video_cirrus.mod │ ├── video_colors.mod │ ├── video_fb.mod │ ├── videoinfo.mod │ ├── video.lst │ ├── video.mod │ ├── videotest_checksum.mod │ ├── videotest.mod │ ├── xfs.mod │ ├── xnu.mod │ ├── xnu_uuid.mod │ ├── xnu_uuid_test.mod │ ├── xzio.mod │ └── zfscrypt.mod └── efi └── boot ├── bootia32.efi ├── BOOTx64.EFI ├── grubx64.efi └── mmx64.efi
Некоторые из тех, вероятно, не необходимы, но я не обеспокоен дополнительными 10 МБ пространства, которое это использует.
Это - мой grub.cfg в img.efi файле, отметьте set root=(hd0)
:
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 "Install Ubuntu Server" {
set root=(hd0)
set gfxpayload=keep
linux /casper/vmlinuz boot=casper only-ubiquity quiet splash ---
initrd /casper/initrd
}
menuentry "Run from internal disk" {
linux (hd1,gpt2)/boot/vmlinuz root=/dev/mmcblk1p2 intel_idle.max_cstate=0 quiet splash $vt_handoff
initrd (hd1,gpt2)/boot/initrd
}
Если кто-либо может пролить дальнейший свет на то, что должно быть в efi.img файле, сообщите мне.