AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1168036
Accepted
Baa
Baa
Asked: 2019-08-24 13:50:09 +0800 CST2019-08-24 13:50:09 +0800 CST 2019-08-24 13:50:09 +0800 CST

使用自定义 ISO 创建 UEFI 可启动 live-usb

  • 772

我有一个带有 AMD64 CPU 但 UEFI 引导加载程序只支持 i386 的设备。

我使用Cubic制作了一个自定义的 Ubuntu 19.04 ISO 安装程序,并使用 usb-creator-gtk(启动磁盘创建器)将其闪存到 USB。

这会在 USB 上创建两个分区:

USB 分区

第一个分区格式化为 ISO9660 并保存 ISO 内容,第二个分区是仅包含 .EFI 引导文件的 FAT32 分区。

第二个分区是平板电脑将从中启动的分区。它的内容来自存储在 ISO 上 /boot/grub 中的 efi.img 文件。这最初只包含 AMD64 EFI 文件。:

AMD64 引导文件

我创建了自己的替换 img.efi 文件并使用以下命令输入了 bootia32.efi 文件:

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。

我的问题是,像 usb-creator-gtk 那样创建一个单独的分区来保存引导 EFI 文件有什么意义?如何使该分区加载安装程序的 Grub 配置,而不仅仅是 Grub 命令行?

谢谢

grub2 boot live-usb custom-installer uefi
  • 1 1 个回答
  • 5024 Views

1 个回答

  • Voted
  1. Best Answer
    Baa
    2019-08-27T09:47:20+08:002019-08-27T09:47:20+08:00

    感谢@oldfred 解释分隔分区是为了克服 FAT32 的 4GB 文件大小限制。

    boot通过将文件夹和EFIISO 中的文件夹放入 FAT32 (efi.img) 分区,我设法创建了可引导 ISO 。

    我已将 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
    

    其中一些可能不是必需的,但我并不担心它使用的额外 10MB 空间。

    这是我在 img.efi 文件中的 grub.cfg,请注意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 文件中的内容,请告诉我。

    • 0

相关问题

  • 更改 Wubi 的启动顺序

  • 如何在 Ubuntu 启动时显示或隐藏启动消息?

  • 如何避免启动时出现“S to Skip”消息?

  • 如何使用 Mac 创建 Ubuntu live USB?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve