Jump to content

Super-Disc: Multi-Boot Project CD/DVD Using ISOLINUX


jetman

Recommended Posts

Hi Jetman,

wanted to say thx. Great Article you wrote here. I was able to integrate by now the following os on one DVD:

Vista, XP, Knoppix, Knoppicillin (Linux Virus scan), Open Suse 10, Fedora (Live cd), Open Solaris 10, Gparted, Acronis Disk Director, Acronis True Image, Debian Squeeze CD1 (testing) and DSL.

Tricky was the OpenSolaris integration because OpenSolaris needs the Rock Ridge Extensions to boot and the grub Bootloader. The problem was, that WinXP cant boot when i activate the -r switch in genisoimage. I read that the XP bootsector would be destroyed with Rock Ridge enabled. Dunno why or if i made another mistake.

So i need a workaround to get both Open Solaris and XP to work. And the solution was Grub4Dos as it can directly start the NTLDR of xp without using the Bootsector via a chainload directive.

The grub4dos package contains a file named grub.exe and this file is actually a linux kernel. So as i didnt know how to chainload other bootmanager via isolinux you can indirect start grub via isolinux with

kernel grub.exe

Then you have the ability to chainload via grub SETUPLDR.BIN from the i386 folder and this starts NTLDR. Thats it, and it works with Rock Ridge enabled.

So you can start via the isolinux menu both WinXP and OpenSolaris via grub and both works with Rock Ridge enabled.

JackCarver

Link to comment
Share on other sites


Hi Jetman,

wanted to say thx. Great Article you wrote here. I was able to integrate by now the following os on one DVD:

<snip>

kernel grub.exe

Then you have the ability to chainload via grub SETUPLDR.BIN from the i386 folder and this starts NTLDR. Thats it, and it works with Rock Ridge enabled.

So you can start via the isolinux menu both WinXP and OpenSolaris via grub and both works with Rock Ridge enabled.

JackCarver

Jack: Thanx for the kind words, but you've introdued a very interesting wrinkle. I hope to experiment w/ this in the next few days. Was wondering:

  1. what (Grub4DOS) files did you incorporate into your image and where did you put them ?
  2. were you able to directly use GRUB as a chainloader as in:
    KERNEL /BOOT/GRUB/GRUB.EXE
    APPEND --config-file="CHAINLOADER /I386/SETUPLDR.BIN"


Thanx for the heads-up ! This definitely justifies a new round of experimentation w/ Grub4DOS....Jet

Link to comment
Share on other sites

Hi Jet,

i downloaded only the grub.exe file of the package Grub4DOS. As said I had the problem, that OpenSolaris 10 comes with a Grub bootloader. So i searches a pretty time the web to find a solution, that i can start grub via Isolinux and then i found this article:

http://aronzak.wordpress.com/tag/syslinux/

Look at the topic "Howto: Syslinux and Grub on one USB drive" at this site. There you can find the link i downloaded the grub.exe. I think you can also use the grub.exe from the lateset Grub4Dos package as well.

To my DVD structure:

I have a folder calles BOOT, i chose this cause Vista has this folder on DVD. In this folder i have the dirs "isolinux" and "grub". In the "grub" dir i put only the grub.exe file, in my "isolinux" dir there are all files which isolinux uses as isolinux.bin, ...cfg and the kernel and ramdisk files.

In my root directory, i called it "Multiboot2" - as i now decided to make one Multiboot-DVD only with Live-Systems as knoppix and so and one with Systems to install on HD - there i put the grub menu.lst file and the splashscreen file as Grub4Dos seems to search in /root_dir, /grub, or /boot/grub but not in /BOOT/grub as i have.

Now to start grub from isolinux put a directive as:

LABEL VistaPE OpenSolaris

MENU label 7 VistaPE OpenSolaris V10 (Grub4DOS Prompt)

kernel /BOOT/grub/grub.exe

in your isolinux.cfg file. As grub.exe is a linux kernel you can put it in the kernel directive of isolinux.cfg. This directive now starts Grub4Dos and it searches for its menu.lst and splashscreen if you want to have one in the grubmenu.

I took the menu.lst from OpenSolaris and made some new entries in it to start VistaPE, as example:

title VistaPE

chainloader /BOOTMGR

title OpenSolaris 2008.11 snv_101b_rc2 X86

kernel /platform/i86pc/kernel/unix

module /BOOT/x86.microroot

Thats it. Right after you push the VistaPE OpenSolaris Button in the isolinux menu, grub starts and shows its submenu with this entries. There choose your favourite and VistaPE or OpenSolaris boot.

Pls let me know when you did some testing if this works for u. For me its a nice combining of isolinux and grub4dos as grub4dos is better in chainloading other bootloaders in my opinion.

greetings Jack

Link to comment
Share on other sites

Hmmm did a little testing of my own. The command you posted doesnt work. when i add

APPEND --config-file="CHAINLOADER /BOOTMGR"

in my isolinux.cfg nothing happens. But even more strange, when i use the grub.exe from the latest Grub4Dos Build i get the error:

Booting find /menu.lst

find --set-root --ignore-floppies --ignore-cd /menu.lst

Error 15 File not found...

i think this happens cause of the --ignore-cd directive. the version before this one finds menu.lst without problems. dont know how i can change this, that grub doesnt use --ignore-cd or so.

Jack

Link to comment
Share on other sites

I got it :thumbup ... I tested a little time with the latest version of grub4dos and i found out the following:

The latest version cant find menu.lst if u do it like the version before. There you needed only kernel /path_to/grub.exe in ur isolinux.cfg. Now its

kernel /path_to/grub.exe --configfile=(cd)/Path_to_menu.lst

if u want ur splashimage its now

splashimage (cd)/path_to_image.gz

in ur menu.lst. otherwise grub doesnt find it. dont know why they made it so complicated compared with the older version i tried first but this works.

then for example when u want to start vistaPE directly use:

kernel /path_to/grub.exe --config-file=chainloader (cd)/path_to/BOOTMGR

and PE starts directly without going in menu.lst. Btw u must use chainloader (cd)/path_to/BOOTMGR in ur menu.lst as well. without the (cd) the chainloader directive doesnt work.

now i will test if its also possible to start OpenSolaris directly from the isolinux.cfg via grub. perhaps i can paste the kernel and module command from menu.lst directly in the isolinux.cfg.

if it works i write it here in the forum

greetings Jack

Link to comment
Share on other sites

@Phylum

Just in case it's your mkisofs commands this is my simple mkisofs script.

This script is located in boot/isolinux along with mkisofs. If your using Windows just grab the commands lower down the script.

#!/bin/bash

# Script to create a bootable ISO image

cd -- "$(dirname "$0")"

SOURCE=$(cd ../; pwd)
APPID="Bootdisk"
VOLID="Bootdisk"
BOOT=boot/isolinux/isolinux.bin
CATALOG=boot/isolinux/boot.cat
OUTPUT=$HOME/Bootdisk.iso

help() {
echo "
--------------------------------------------------------------------------
This script creates a bootable ISO image using mkisofs.

Usage: $(basename "$0") [options]

Example: $(basename "$0") -o $OUTPUT --md5

-o, --output <file> Set output file name
-m, --md5 Create MD5 check file
-h, --help Help
--------------------------------------------------------------------------
"
}

waiting() {
chars=( "|" "/" "-" "\\" )
array=${#chars[*]}
count=0
echo -n " "
while [ -e "$1" ]; do
count=$(( count + 1 ))
echo -ne "\b${chars[$(( count % array ))]}"; sleep 0.2
done
}

while [ "$1" != "" ]; do
case $1 in
-h | --help )
help
exit
;;
-o | --output )
OUTPUT="$2"
shift 2
;;
-m | --md5 )
MD5="1"
shift
;;
* )
shift
esac
done

if [ -f "$OUTPUT" ]; then
echo "$(basename $0): \`$OUTPUT' already exists"
echo -n "Remove this file and continue? [Y/n]: "
read retval
case $retval in
Y|y|[Yy][Ee][Ss])
rm -f $OUTPUT || exit 1
;;
*)
help
exit 1
esac
fi

rm -f $SOURCE/contents.md5
if [ "$MD5" = "1" ]; then

if [ -x `type -path mktemp` ]; then
md5tmp="`mktemp`"
else
md5tmp="/tmp/md5.$RANDOM"
touch $md5tmp || exit 1
chmod 600 $md5tmp
fi

echo -n "Creating MD5 check file. Please wait..."
waiting $md5tmp &

( cd $SOURCE
find . -type f -exec md5sum {} \; | sort -k 2,2 > $md5tmp
mv $md5tmp contents.md5
)

echo -e "\bDone"
fi

if [ ! -x "`type -path mkisofs`" ]; then
echo "$(basename $0): \`mkisofs' command not found"
exit 1
fi

mkisofs \
-iso-level 4 \
-full-iso9660-filenames \
-disable-deep-relocation \
-rock \
-joliet \
-joliet-long \
-no-emul-boot \
-boot-info-table \
-boot-load-size 4 \
-appid "$APPID" \
-volid "$VOLID" \
-eltorito-boot $BOOT \
-eltorito-catalog $CATALOG \
-output $OUTPUT \
$SOURCE || exit 1

echo "$(basename $0): \`$OUTPUT' succesfully created"

exit 0

One more thing...

You can use the file util in Linux to query a file type, I'm not sure but you might find a Windows port as part of cygwin.

First decompress the image (gzip -d initrd.gz) then test the file.

$ file initrd
initrd: ASCII cpio archive (SVR4 with no CRC)

Edited by kof94
Link to comment
Share on other sites

i use

g:\cd

as my root folder

& my file structure is

for boot files

g:\cd\boot\isolinux

g:\cd\boot\bartpe

g:\cd\boot\xpsp3

for respective cd content

g:\cd\bartpe

g:\cd\xpsp3

i use isolinux.cfg as

DEFAULT /boot/isolinux/vesamenu.c32
PROMPT 0
TIMEOUT 300
TOTALTIMEOUT 450
####
MENU BACKGROUND /boot/isolinux/splash.png
MENU TITLE XPSP3 + BARTPE
####
#### The 1st byte of the fgnd color is brightness.
#### blue
MENU COLOR title 1;36;44 #ff0000ff #00000000 std
#### blue
MENU COLOR unsel 37;44 #ff0000ff #00000000 std
#### white
MENU COLOR sel 7;37;40 #c0ffffff #ff000000 std
#### red
MENU COLOR hotkey 1;37;44 #ffff0000 #00000000 std
#### green
MENU COLOR hotsel 1;7;37;40 #ff00ff00 #ff000000 all
####



LABEL bootc
MENU LABEL ^boot from C:
MENU DEFAULT
KERNEL /boot/isolinux/chain.c32
APPEND hd0

LABEL bartpe
MENU LABEL ^BartPE/WinPE
KERNEL /boot/bartpe/bSETUPLDR.BIN

LABEL xpsp3
MENU LABEL ^Unattended XP SP# Pro Installation
KERNEL /boot/xpsp3/xSETUPLDR.BIN

& edited SETUPLDR.BIN using hexedit & replace i386 to bartpe/i386 in case of bartpe

& replace i386 to xpsp3/i386 in case of xpsp3

& rename as bSETUPLDR.BIN &xSETUPLDR.BIN

& place in

g:\cd\boot\bartpe

g:\cd\boot\xpsp3

resp

now to make cd i have used mkisofs.exe of pebuilder

& created bat to automate process

@ECHO OFF
ECHO Starting @ (%TIME%) ....
SET _VNBR_=01
SET _ROOT_=G:\cd
SET CDTITLE="cd-%_VNBR_%"
SET CDFILENAME="%_ROOT_%%CDTITLE%.ISO"
C:\pebuilder3110a\mkisofs.exe -N -V %CDTITLE% -b isolinux.bin -d -iso-level 4 -no-emul-boot -boot-load-size 4 -boot-info-table -o "G:\ISO.iso" "G:\cd\boot\isolinux"

but all this creat bootable iso of 1.44mb

then i use magiciso to add other files from the cd folder & save it

the image is bootable

:wacko: but when i try to chk it with vmware it just do nothing no error no message & no progress just processing

** please help me figureout where i have done mistake :o

thanks in adv :P

if u can tell me simply what to do instead of redirecting then i will really appriciate

Link to comment
Share on other sites

  • 2 weeks later...

I have some problem i'm using programs ultra ISO for Add my multi-boot size 5 GB and chose Optimize

look pic

89872387.th.jpg

now size 2,80

test on VM working not problem and burn to DVD speed burn 12X test one my computer not problem

test on another computer PC not working why where mistake

Link to comment
Share on other sites

  • 2 weeks later...
I have some problem i'm using programs ultra ISO for Add my multi-boot size 5 GB and chose Optimize

look pic

<snip>

now size 2,80

test on VM working not problem and burn to DVD speed burn 12X test one my computer not problem

test on another computer PC not working why where mistake

Can't help as I've made virtually all of my discs using UltraISO and have occasionally used the Optimization feature successfully. If it [Optimization] doesn't work, sometimes you have to re-organize the contents of a disc, to move some content from one disc to another or use a bigger (DL) disc and turn off Optimzation....Jet

Edited by jetman
Link to comment
Share on other sites

  • 2 months later...
  • 3 weeks later...

Well, hello, world!

I followed this howto and I did my isolinux multiboot with linux, xp and win2000... I thought I would have no problem in booting a winbuilder LiveXP, but I was wrong... I couldnt find any bootsect.bin and i think isolinux cannot boot SETUPLDR.BIN

I knew I had to create an image that boot setupldr.bin & bootfix.bin in the i386 dir, and I did with bbie: I have no problem in booting if i copy the LiveXP "\" in my multiboot "\"...

...but, as you can guess, it means I can integrate just one LiveXP for dvd... Yeah, one LiveXP per dvd is enough :D but I just would like not to have such a messy iso

I think the problem is redirecting the entire process from "\i386" folder to "\Livexp\i386"... I've tried modifying txtsetup, but i think i have to modify setupldr or doing something similar to the xp installer... and it's over my skills...

Anyway, I realize I'm trying like a blind in a open space :blink:

so, please: help! (like the beatles used to say) :whistle:

Link to comment
Share on other sites

Hello! I tried to follow the how-to and at step 3 it says "From \syslinux, *COPY* (don't *MOVE*) vesamenu.c32, chain.c32, isolinux.bin, memdisk to boot\isolinux\.". The problem is that I don't see memdisk in the huge source of syslinux. Here is a screenshot.

syslinux.th.jpg

Link to comment
Share on other sites

Hello! I tried to follow the how-to and at step 3 it says "From \syslinux, *COPY* (don't *MOVE*) vesamenu.c32, chain.c32, isolinux.bin, memdisk to boot\isolinux\.". The problem is that I don't see memdisk in the huge source of syslinux.

isn't it where it should be? :unsure:

I.e. in this file:

http://www.kernel.org/pub/linux/utils/boot...slinux-3.82.zip

in the "memdisk" directory, as a file 19.584 bytes in size, called "memdisk" (with no extension)

jaclaz

Link to comment
Share on other sites

Oh, yes thanks. I wasn't carefull when extracted the archive ... And I thought it was in the root folder ... sorry. But at "4) Open the System Rescue ISO and copy vmlinuz1 and vmlinuz.igz to boot\sysdresccd\. Copy sysrescd.dat to sysresccd\. Copy memtest86 to boot\isolinux\." in my sysrescuecd-x86-1.2.1.iso I have in NTPASSWD folder the files "initrd.cgz"; "vmlinuz." and scsi.cgz" not vmlinuz1 and vmlinuz.igz. The only *.igz file is INITRAM.IGZ .

Edited by florin91
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...