使用syslinux在USB上进行多重引导


9

我正在尝试使用Ubuntu,Backtrack和Mantra-OS(您可以看到所有的ubuntu)制作一个多引导USB。这些是我已经完成的步骤:

sudo su
unmount /dev/sdb1                          # unmount the drive
mkfs.vfat -F 32 -n disqus /dev/sdb1        # Format the disk with vfat
syslinux -maf /dev/sdb1                    # Install syslinux and the mbr
mkdir /media/disqus                        # Mount for the disk
mount /dev/sdb1 /media/disqus
mkdir /media/disqus/syslinux               # Syslinux configuration folder
cp /usr/lib/syslinux/{vesamenu.c32,reboot.c32,poweroff.com} /media/disqus/syslinux          # Files needed for syslinux
mkdir /media/disqus/syslinux/iso           # A folder that will contain extracted isos
mkdir /media/disqus/syslinux/iso/ubuntu
mkdir /media/disqus/syslinux/iso/backtrack
mkdir /media/disqus/syslinux/iso/mantra-os

之后,我将各个ISO中的文件装入并复制到我创建的文件夹中:

mkdir /media/iso
mount -t iso9660 -o loop,ro /home/nizar/Destkop/ubuntu.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/ubuntu
umount /media/iso/
mount -t iso9660 -o loop,ro /home/nizar/Destkop/backtrack.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/backtrack
umount /media/iso/
mount -t iso9660 -o loop,ro /home/nizar/Destkop/mantra-os.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/mantra-os
umount /media/iso/
rmdir /media/iso/

在此之后我填的配置文件syslinux.cfg/media/diqus/syslinux有这样的:

DEFAULT Backtrack
PROMPT 0
allowoptions 0
TIMEOUT 100
UI vesamenu.c32

MENU TITLE Disqus: The Ultimate Disk
MENU BACKGROUND anon1.png

MENU COLOR border       30;44   #40ffffff #a0000000 std
MENU COLOR title        1;36;44 #9033ccff #a0000000 std
MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel        37;44   #50ffffff #a0000000 std
MENU COLOR help         37;40   #c0ffffff #a0000000 std
MENU COLOR timeout_msg  37;40   #80ffffff #00000000 std
MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07        37;40   #90ffffff #a0000000 std
MENU COLOR tabmsg       31;40   #30ffffff #00000000 std

MENU WIDTH 80
MENU MARGIN 10
MENU ROWS 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 18
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

LABEL Backtrack
    MENU LABEL Backtrack
    kernel iso/backtrack/casper/vmlinuz
    append initrd=iso/backtrack/casper/initrdf.gz file=/cdrom/preseed/custom.seed boot=casper quiet splash --

LABEL Ubuntu
    MENU LABEL Ubuntu
    kernel iso/ubuntu/casper/vmlinuz
    append initrd=iso/ubuntu/casper/initrd.lz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --

LABEL Mantra-OS
    MENU LABEL Mantra-OS
    kernel /mantra-os/casper/vmlinuz
    append initrd=/mantra-os/casper/initrd.lz file=/cdrom/preseed/xubuntu.seed boot=casper quiet splash --

LABEL Reboot
MENU LABEL Reboot
COM32 reboot.c32

LABEL Power Off
MENU LABEL Power Off
COMBOOT poweroff.com

(anon1.png:/ media / disqus / syslinux /中的640x480 8bit png)

现在一切正常,我可以启动,有了syslinux菜单,甚至可以加载vmlinuz和initrd!操作系统实际上正在加载(我有启动屏幕),但是随后出现错误(关于Busybox的信息):

 (initramfs) unable to find a medium containing a live file system

我不太确定这是什么问题,但我认为这与相对路径和CDROM“问题”有关。我已经测试了其中许多(甚至相对和绝对),但没有任何效果。

答案不得与MultiBootUSB,MultiSystem,Yummi或任何其他工具有关。它也不能与grub或grub2或任何其他引导程序有关。我想让我的方法起作用。


为什么不使用Grub2?这将更容易,因为它不需要您提取ISO。
Zoredache

@Zoredache我已经用grub2做过了,但是我想在syslinux上并且没有内存磁盘。
pr.nizar

1
PenDriveLinux Multiboot将完成您需要做的所有事情。这就是为什么我说这是骗子。
James Mertz 2013年

Answers:


1

我实际上解决了这个问题,并且有效!我发现了一个作弊代码:live-media-path = path / to / casper / folder和ignore_uuid。因此,修改后的工作代码为:

DEFAULT Backtrack
PROMPT 0
allowoptions 0
TIMEOUT 100
UI vesamenu.c32
MENU TITLE Disqus: The Ultimate Disk
MENU BACKGROUND anon1.png
MENU COLOR border 30;44 #40ffffff #a0000000 std
MENU COLOR title 1;36;44 #9033ccff #a0000000 std
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel 37;44 #50ffffff #a0000000 std
MENU COLOR help 37;40 #c0ffffff #a0000000 std
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
MENU WIDTH 80
MENU MARGIN 10
MENU ROWS 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 18
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

LABEL Backtrack
MENU LABEL Backtrack
kernel /syslinux/iso/backtrack/casper/vmlinuz
append initrd=/syslinux/iso/backtrack/casper/initrdf.gz live-media-path=/syslinux/iso/backtrack/casper ignore_uuid boot=casper quiet splash --

LABEL Ubuntu
MENU LABEL Ubuntu
kernel /syslinux/iso/ubuntu/casper/vmlinuz
append initrd=/syslinux/iso/ubuntu/casper/initrd.lz live-media-path=/syslinux/iso/ubuntu/casper ignore_uuid boot=casper quiet splash --

LABEL Mantra-OS
MENU LABEL Mantra-OS
kernel /syslinux/iso/mantra-os/casper/vmlinuz
append initrd=/syslinux/iso/mantra-os/casper/initrd.lz live-media-path=/syslinux/iso/mantra-os/casper ignore_uuid boot=casper quiet splash --

LABEL Reboot
MENU LABEL Reboot
COM32 reboot.c32

LABEL Power Off
MENU LABEL Power Off
COMBOOT poweroff.com

非常感谢!

PS:对于其他发行版,您可以在Yumi的GitHub存储库中查找syslinux配置文件:https : //github.com/bwnickle/YUMI/blob/master/src/menu/


做得好。尼扎尔 仅作记录,ignore_uuid可以省略;另外,对于想要从CD复制最少文件集的任何人,请查看sfxpt.wordpress.com/2014/02/18/…。即,rsync -vuaR .disk casper /mnt/usbpen/boot/lub1310
xpt

0

好的,由于您对替代解决方案不感兴趣,因此您将需要花费更多时间来了解预订流程的工作原理。

引导程序将内核和initrd加载到内存中,然后将执行传递给内核。在那之后,所有执行将传递给initrd中的init / upstart进程,以及第一个进程调用的所有脚本。initrd中的脚本实际上并不了解有关文件系统的任何信息,也不了解文件从何处被加载。他们不能简单地引用该目录中的某个大型caspar文件系统。

livecds的Initrd包含允许它们定位文件系统的脚本。对于Ubuntu系统,它将在它可以看到的每个驱动器上的每个已知文件系统的根目录内的特定文件夹中查找特定文件。如果找不到任何内容,则会收到您提到的错误。

您可以将ISO-SCAN选项传递到作为附加行的一部分。此参数将告诉脚本,而不是扫描文件系统,它将环回装入ISO,并从中读取文件。

仅将文件拖放到您定义的某个随机目录中可能不受支持。我最近没有查看livecd initrd脚本,但是我不知道有任何选项可让您为提取的文件指定任意目录。

如果您想要开发人员尚未设计的行为,那么您将不得不使用自己的脚本和工具来重新构建initrd,以加载根文件系统。将ISO保留在文件系统上,然后使用iso-scan/filename=$isofile选项是可以使用的方法,而无需重建initrd。


问题是BT5R3 仍然不支持iso-scan / filename参数...我必须修补casper / initrd.gz文件。this.is.thoughtcrime.org.nz/multi-boot-bt5-from-usb-with-grub2我的问题还有其他解决方法吗?
pr.nizar

如果您将详细信息添加到原始问题中,那么问题重复就少了很多。几乎可以肯定有一个解决方案,但是目前我还不知道。
Zoredache

这unetbootin做,但问题是,它不会是相同的目录结构我做了我可以做同样的事情。(youtube.com/watch?v=MH-khdiXqYs
pr.nizar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.