Я пытаюсь создать мультизагрузочный USB с Ubuntu, Backtrack и Mantra-OS (все Ubuntu, как вы можете видеть). Вот шаги, которые я сделал:
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: 640 x 480, 8-битный png в / media / disqus / syslinux /)
Теперь все идет хорошо, и я могу загрузиться, у меня есть меню syslinux и даже загрузить vmlinuz и initrd! ОС на самом деле загружается (у меня есть заставка), но затем у меня появляется ошибка (что-то о Busybox):
(initramfs) unable to find a medium containing a live file system
Я не совсем уверен, в чем проблема, но я думаю, что это относительно относительных путей и "вещи" CDROM. Я протестировал многие из них (даже относительные и абсолютные), но ничего не работает.
Ответ не должен быть о MultiBootUSB, MultiSystem, Yummi или любом другом инструменте; это не должно быть также о grub или grub2 или любом другом загрузчике. Я хочу, чтобы мой подход работал.
источник
Ответы:
Я действительно решил это, и это работает! Я нашел чит-код с именем: live-media-path = path / to / casper / folder вместе с ignore_uuid. Итак, модифицированный рабочий код:
Большое спасибо!
PS: для других дистрибутивов вы можете искать конфигурационные файлы syslinux в репозитории Yumi на GitHub: https://github.com/bwnickle/YUMI/blob/master/src/menu/
источник
ignore_uuid
можно опустить; Кроме того, если вы хотите скопировать минимальный набор файлов с компакт-диска, ознакомьтесь с разделом sfxpt.wordpress.com/2014/02/18/… . Т.е.,rsync -vuaR .disk casper /mnt/usbpen/boot/lub1310
.Хорошо, поскольку вас не интересуют альтернативные решения, вам нужно больше времени, чтобы понять, как работает процесс книги.
Загрузчик загружает ядро и initrd в память , а затем передает выполнение ядру. После этого все выполнение передается процессу init / upstart в initrd и всем сценариям, которые вызывает первый процесс. Скрипты в initrd, на самом деле ничего не знают о файловой системе или относительном пафосе того, откуда она была загружена. Они не могут просто ссылаться на какую-то большую файловую систему Каспара в этом каталоге.
Initrd livecds, содержит сценарии, которые позволяют им найти файловую систему. Для системы Ubuntu это ищет определенный файл в определенной папке в корне каждой известной файловой системы на каждом диске, который это может видеть. Если он ничего не может найти, вы получаете ошибку, которую вы упомянули.
Вы можете передать эту
ISO-SCAN
опцию как часть вашей строки добавления. Этот аргумент сообщит сценарию, что вместо сканирования файловых систем он будет монтировать ISO-образы и будет читать файлы изнутри.Простое удаление файлов в произвольный каталог, который вы определяете, вероятно, не поддерживается. В последнее время я не смотрел сценарии livecd initrd, но мне неизвестны какие-либо параметры, позволяющие вам указать произвольный каталог для извлеченных файлов.
Если вам нужно поведение, которое еще не было разработано разработчиками, вам придется пересобрать ваши initrds с помощью ваших собственных скриптов и инструментов для загрузки корневой файловой системы. Оставить ISO в файловой системе, а затем использовать
iso-scan/filename=$isofile
опцию - это метод, который вы можете использовать, не перестраивая ваш initrd.источник