使用 syslinux 设置多重启动 ISO usb 的问题

使用 syslinux 设置多重启动 ISO usb 的问题

我已经遵循了本教程:http://blog.jakgibb.com/2013/01/03/creating-a-multiboot-usb-stick-using-syslinux/

我想使用 syslinux 而不是这里提供的方法直接从 USB 驱动器启动 linux live ISO:http://www.pendrivelinux.com/boot-multiple-iso-from-usb-via-grub2-using-linux/

这是我的 syslinux.cfg:

default vesamenu.c32
prompt 0
timeout 300
menu title Geek USB
menu background /bg.png
MENU TABMSG  Created by Salman
MENU WIDTH 72
MENU MARGIN 10
MENU VSHIFT 3
MENU HSHIFT 6
MENU ROWS 15
MENU TABMSGROW 20
MENU TIMEOUTROW 22
menu color title 1;36;44 #66A0FF #00000000 none
menu color hotsel 30;47 #C00000 #DDDDDDDD
menu color sel 30;47 #000000 #FFFFFFFF
menu color border 30;44 #D00000 #00000000 std
menu color scrollbar 30;44 #DDDDDDDD #00000000 none

label HardDisk
    menu label Continue to Boot from ^First HD (default)
    KERNEL chain.c32
    APPEND hd1
    MENU DEFAULT

label MY
    menu label ^MY
    loopback loop /ubuntu-12.04.3-desktop-i386.iso
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-12.04.3-desktop-i386.iso noeject noprompt splash --
    initrd (loop)/casper/initrd.lz

label MIX
    menu label ^MIX
    insmod loopback
    insmod iso9660
    set isofile="/ubuntu-12.04.3-desktop-i386.iso"
    loopback loop $isofile
    kernel (loop)/casper/vmlinuz
    append boot=casper initrd=(loop)/casper/initrd.lz splash --

label MIX2
    menu label ^MIX2
    set isofile="/ubuntu-12.04.3-desktop-i386.iso"
    loopback loop $isofile
    kernel (loop)/casper/vmlinuz
    append boot=casper live-media-path=(loop)/casper/ file=(loop)/preseed/ubuntu.seed initrd=(loop)/casper/initrd.lz splash --

label MIX3
    menu label ^MIX3
    loopback loop /ubuntu-12.04.3-desktop-i386.iso
    kernel (loop)/casper/vmlinuz
    append boot=casper live-media-path=(loop)/casper/ file=(loop)/preseed/ubuntu.seed initrd=(loop)/casper/initrd.lz splash --

我的 USB 正在启动,syslinux 正在运行,并且启动菜单(系统Linux配置文件) 显示正常,但菜单不起作用,不知道为什么?没有菜单启动 ubuntu-12.04.3-desktop-i386.iso。最糟糕的是,当我选择一个菜单并按下回车键时,没有出现任何错误,屏幕闪烁并返回主菜单。

我的代码有什么问题?

答案1

好吧,我得到了一个 syslinux 启动 USB 密钥来加载解压的 ubuntu vmlinuz 和 initrd。我能提供的最好的就是对我有用的步骤...

  • 下载你选择的 ubuntu(显然)
  • 挂载 iso(我使用的是 Windows 10),然后复制所有已挂载的文件到闪存驱动器中的目录。
    • [可选] 重命名闪存驱动器上的文件夹(我选择ubu
  • 修改 syslinux 配置以指向linux正确initrd的文件
  • 确保你append有正确的标志

对我有用的 syslinux.conf 条目:

label installUbuntu2WORKSEE  
menu label ubuntuInstaller2WORKS  
linux /ubu/casper/vmlinuz.efi  
initrd /ubu/casper/initrd.lz  
append boot=casper iso-scan/filename=/iso/ubuntu-16.04.3-desktop-amd64.iso

启动后,我得到了标准的“试用 Ubuntu”桌面 - 我可以安装或直接使用它。我听说过,如果一直使用 USB 密钥来运行 Ubuntu 或其他桌面操作系统,而不更改内部操作系统设置,以防止频繁写入密钥,这会过早烧坏您的 NAND 内存,这会带来一些不好的影响。我也无法解释所有的启动标志 - 我还不够了解。也许其他更熟悉 Ubuntu 的人可以解释。

注意:我的闪存驱动器是 FAT32,有超过 4GB 的可用空间。.iso 文件和解压后的文件可能占用近 4GB 的空间。但是,我还在此密钥上加载了 fatdog64(puppy 变体),以及它的 iso 和 puppy iso。因此可以进行多重引导。

答案2

在我看来,问题似乎是

loopback loop $isofile
kernel (loop)/casper/vmlinuz

这部分是 GRUB2 命令,syslinux 无法理解该命令。您应该检查适当的 sislinux/isolinux 命令。据我所知,syslinux 使用 memdisk 的方式与 GRUB2 使用 loopback 的方式相同。 http://www.syslinux.org/wiki/index.php/MEMDISK

相关内容