![使用 syslinux 设置多重启动 ISO usb 的问题](https://linux22.com/image/844220/%E4%BD%BF%E7%94%A8%20syslinux%20%E8%AE%BE%E7%BD%AE%E5%A4%9A%E9%87%8D%E5%90%AF%E5%8A%A8%20ISO%20usb%20%E7%9A%84%E9%97%AE%E9%A2%98.png)
我已经遵循了本教程: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