Thanks for your detailed response, Thomas.
I'm grateful that you showed your methods, as well as confirming my
theories. It's always useful to learn new commands in these circumstances :)
The CDROM image does boot successfully, from physical media or mounted as an ISO
in a virtual machine - my ambition was to eliminate the need for either a
physical disc or a host OS to run the virtual machine - after all, it is just
booting a linux 2.0.x kernel and some init scripts, right? :D
You are correct that it then maps a lot of files to /cdrom/live and /cdrom/boot
after the initial floppy stage. The process of exactly how it got from the
boot.catalog to that stage was proving elusive and opaque to me, thanks for
shining some light on it. From inspecting the running machine I could not quite
tell which files were in which of the "layers". Those files pointing
to /cdrom will probably present their own challenges in due course, but
obviously will be well beyond the scope of Syslinux at that point.?
At least now I can continue my meddling.
Cheers!
Kevin Grant?
On Saturday, 14 May 2022, 12:41:12 BST, Thomas Schmitt <scdbackup at
gmx.net> wrote:
Hi,
Kevin Grant wrote:> I'm having some fun playing with a really old bootable CDROM image
(seems to
> be based off a Slackware image originally) and trying to run it off a USB
> stick or HDD partition instead of CD, but it wasn't created as a hybrid
> image originally and it just won't play ball (yet).
> [...]
> It seems to be using floppy emulation mode, which doesnt help.
> [...]
>
https://archive.org/download/cobaltraqrestorecd/CobaltRaQ%20%28196-00102-01%29.iso
At least the download speed is from the early 2000s. :))
? $ xorriso -indev CobaltRaQ__196-00102-01_.iso \
? ? ? ? ? ? -pvd_info -report_system_area plain -report_el_torito plain
reports:
? Drive current: -indev 'CobaltRaQ__196-00102-01_.iso'
? PVD address? : 16s
? Volume Id? ? : CDROM
? Volume Set Id:
? Publisher Id :
? Preparer Id? :
? App Id? ? ? : MKISOFS ISO 9660 FILESYSTEM BUILDER
? System Id? ? : LINUX
? CopyrightFile:
? Abstract File:
? Biblio File? :
? Creation Time: 2000091116290500
? Cr. Time Zone: -07:00
? Modif. Time? : 2000091116290500
? Mo. Time Zone: -07:00
? Expir. Time? : 0000000000000000
? Eff. Time? ? : 2000091116290500
? Ef. Time Zone: -07:00
? xorriso : NOTE : No System Area was loaded
? El Torito catalog? : 19024? 1
? El Torito cat path : /boot/boot.catalog
? El Torito images? :? N? Pltf? B? Emul? Ld_seg? Hdpt? Ldsiz? ? ? ? LBA
? El Torito boot img :? 1? BIOS? y? fd2.8? 0x0000? 0x00? ? ? 1? ? ? 19027
? El Torito img path :? 1? /boot/eltorito.img
So it's 21.5 years old and the boot image is indeed announced in the
boot catalog as 2.8 MB floppy image which is present in the ISO as data
file /boot/eltorito.img.
Mounting the ISO i get from that file
? $ file /mnt/iso/boot/eltorito.img
? /mnt/iso/boot/eltorito.img: DOS/MBR boot sector, code offset 0x3c+2,
? OEM-ID "SYSLINUX", sectors/cluster 2, root entries 240,
? sectors 5760 (volumes <=32 MB) , sectors/FAT 9, sectors/track 36,
? serial number 0x1e4219cf, label: "LINUX BOOT ", FAT (12 bit),
? followed by FAT
Mounting the file as /mnt/fat i get
? $ find /mnt/fat -exec ls -ld '{}' ';'
? drwxr-xr-x 2 root root 7680 Jan? 1? 1970 /mnt/fat
? -r-xr-xr-x 1 root root 5352 May 28? 1998 /mnt/fat/LDLINUX.SYS
? -rwxr-xr-x 1 root root 1396332 Dec? 8? 1999 /mnt/fat/INITRD.IMG
? -rwxr-xr-x 1 root root 214 Dec? 6? 1999 /mnt/fat/MESSAGE.TXT
? -rwxr-xr-x 1 root root 13016 May 27? 1998 /mnt/fat/SYSLINUX
? -rwxr-xr-x 1 root root 337 May 12? 1998 /mnt/fat/SYSLINUX.CFG
? -rwxr-xr-x 1 root root 6508 May 27? 1998 /mnt/fat/SYSLINUX.COM
? -rwxr-xr-x 1 root root 543530 Mar 25? 1999 /mnt/fat/VMLINUZ
It might be possible to to use INITRD.IMG, SYSLINUX.CFG, and VMLINUZ
to pack up a new ISO with modern ISOLINUX equipment and isohybrid MBR.
Decisive are probably these lines from SYSLINUX.CFG :
? default vmlinuz initrd=initrd.img ramdisk_size=6144 load_ramdisk=1
prompt_ramdisk=0 rw root=/dev/ram0
? append initrd=initrd.img ramdisk_size=6144 load_ramdisk=1 prompt_ramdisk=0 rw
root=/dev/ram0
and then of course how the stuff in INITRD.IMG finds the ISO in order to
load the final operating system.
The initrd is a gzip compressed ext2 filesystem:
? $ file /mnt/fat/INITRD.IMG
? /mnt/fat/INITRD.IMG: gzip compressed data, was "initrd", last
modified:
? Thu Dec? 9 03:29:00 1999, from Unix
? $ gunzip </mnt/fat/INITRD.IMG >CobaltRaQ_initrd.img
? $ file CobaltRaQ_initrd.img
? CobaltRaQ_initrd.img: Linux rev 0.0 ext2 filesystem data,
UUID=2aa52f1e-0032-11d2-9f79-00a02428eca0
2500 files in there. (The ISO has 32000.)
Telling from dangling symbolic links, i'd say the ISO shall be mounted as
"/cdrom/live".
I would begin by checking that the original ISO can be still be booted from
real CD or by qemu -cdrom.
But such endeavors are out of my scope as ISO 9660 producer.
Have a nice day :)
Thomas