Hi all.
I recently tried to customize Ultimate Boot CD to my needs using syslinux config files.
I know about Easy2boot but they seem mostly oriented to Grub4Dos, but I started to do everything Syslinux way.
In ideal world I would just copy iso files to a folder and add new config lines to custom.cfg and then use Ultimate Boot CD tools to build my final ISO, which I can then burn to a DVD or to a USB flash using Rufus or something similar (I'm more a Windows guy). I can accept the fact that I might need to load each ISO into RAM - nowadays RAM is cheap.
Intuitively I expected to have better luck with Linux based ISOs because syslinux itself is closer to the Linux world than Windows world. Especially reading that syslinux MEMDISK Wiki page says:
Windows NT/2000/XP/2003/Vista/2008/7 (NT based)
These Windows versions use INT 13h access only in the start of the booting process (loading only the necessary drivers). Once the protected mode drivers are functional to access the disks, Windows can't see the memory mapped drives created by MEMDISK (CD/DVD, hard disk and floppy disk images) and it will fail to complete the boot process.
After some experiments I was really surprised to find out that it works if I add Windows XP, 7 and 8 based PE ISOs (including Paragon Suite) with simple config like
LABEL - MENU LABEL Paragon Suite TEXT HELP Paragon Suite (Windows 7 PE based) ENDTEXT LINUX /boot/syslinux/memdisk INITRD /ubcd/custom/rm_07_11_2015.iso APPEND iso raw
but the same approach completely fails with Ubuntu Live CD, Kaspersky Rescue CD, Bitdefender Rescue CD.
For Ubuntu Live CD I found that I can make it work by extracting a bunch of files out of the ISO and polluting my final ISO image with some folders. At the end my config entry looked like this:
MENU LABEL Ubuntu Live 14.04 TEXT HELP Ubuntu Live 14.04 ENDTEXT LINUX /ubuntu/vmlinuz.efi INITRD /ubuntu/initrd.lz APPEND file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=/ubcd/custom/ubuntu-14.04.3-desktop-amd64.iso quiet splash --
Is this really my best option? Why can't Ubuntu loader just find the necessary files in ISO file in memdisk? Is it the INT 13h issue mentioned in the memdisk Wiki or is there something else going on?
With Kaspersky Rescue CD I have seen various workarounds and some of them were outdated but some others involved using Grub4Dos and not Syslinux. Does it mean that Grub4Dos is more powerful and can do more stuff than Syslinux?
After failing to boot Kaspersky Rescue CD out-of-the-box (I'm not yet ready to mess with its internal files) I decided to try Bitdefender Rescue CD. The naive Memdisk approach failed, I got a message
Invalid loop location: /rescue/livecd.squashfs Please export LOOP with a valid location
In one forum I found advice:
title Bitdefender Rescue CDpartnew (%@root:~1,3%,3) 0x00 /Boot/Bitdefender.isomap /Boot/Bitdefender.iso (0xff)map --hookkernel (0xff)/boot/kernel.i386-pc root=/dev/ram0 real_root=/dev/loop0 loop=/rescue/livecd.squashfs cdroot_marker=/rescue/livecd.squashfs initrd udev cdroot scandelay=10 quiet slash lang=eninitrd (0xff)/boot/initfs.i386-pcNote, it's not working under virtual machine or after using Plop.
partnew (%@root:~1,3%,3) 0x00 /ubcd/custom/bitdefender-rescue-cd.iso Error 30: Invalid argument
Now I'm not sure why it does not work - is it because I'm trying it in a virtual machine (VMware Player) or because the instructions are wrong or outdated.