Jump to content

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


jetman

Recommended Posts

@google44

Thanks buddy, I'll be taking a look at that asap.

@Jotnar

As memdisk is still in active development it wouldn't surprise me if a new version would require you to use a switch to make an image boot where as before you didn't require one. I'm only really stabbing in the dark here to give you plausible answers to the the problem, it could be any number of things really.

@Sir Jet

If diskemu could be ported for use with isolinux it would be fantastic. The original diskemu binary does hold the key to booting those images that memdisk can't touch e.g. DocMem.

In an ideal world you'd really want the updated version contained in CDShell. The author added extra features that even enabled you to directly boot an .iso image :w00t: .

We can but dream......... :whistle:

Edited by kof94
Link to comment
Share on other sites


@google44

I nearly forgot.... NwDsk...

The reason your using that FreeDOS NwDsk image is to execute apps from your boot CD/DVD, hens why there is a folder called 'dosapps' on the UBCD disc.

Basically all you've got is a modular DOS boot disc that you can add as many drivers as you want to, to achieve your goal i.e sata,aspi,usb,keyboard(if your not in the US),mouse,DPMI etc and some utils if you like.

Personally I don't want or need a networking DOS boot disc so I ripped all of that out. I also removed NTFS and LFN support as well as Volkov Commander for the same reasons.

To do this I took the FreeDOS UBCD NwDsk 3.42 from Erwin's site (you need to look in the beta section) and just started cutting.

You really need to read the little section about how the boot process works i.e. what level you want you're cab's at and you need to look at what each cab contains. This may take a while but once you've got the general idea about how this works you'll realise it's quite simple, for the user anyway.

The next part is easier than you might think.

The first thing you want to happen after all your drivers and stuff are load is to find your boot CD/DVD and set a variable for it . You can do this quite simply with a command like this:

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\autorun.inf set bootdrv=%%i:

This command basically looks at all your drives for a file called autorun.inf at the root of it and sets a variable called %bootdrv%.

The second thing you want to happen is to execute your app. This is also rather simple and wouldn't be possible without using memdisk.

Whist booting your FreeDOS image it is possible to set an environment variable that is recognised in DOS.

Some thing like this:

LABEL hdat2
MENU LABEL HDAT2 4.52
KERNEL memdisk
APPEND initrd=boot/freedos.igz setup=hdat2

The bit your interested in is setup=hdat2, that is your variable!

From there it's just a question of how to use it. Now this is were I confess I have stolen some idea's from UBCD.

Here is my entire setup.bat that is execute by autorun3.bat. Autorun3.bat is contained in the 'etc' folder on the NwDsk

and executes what ever you want at the end of the boot process. I chose to launch my setup.

@if "%debug%"=="" echo off

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\autorun.inf set bootdrv=%%i:
if "%bootdrv%"=="" goto _msg
%bootdrv%
cd \

if "%setup%"=="" goto _msg
if not exist \dostools\%setup%\setup.bat goto _msg
cd \dostools\%setup%
call setup.bat
goto _end

:_msg
echo.
echo Floppy Drive = %srcdrv%
echo Ram Drive = %ramdrv%
echo Boot Drive = %bootdrv%
echo.

:_end

It's not the best batch in the world but it does the job. Finds my boot DVD finds the app I want to execute by it's folder name and launches it.

the batch contained in that folder can do this how ever you like I chose to keep all my apps in zip files and decompress them into ram for use but it's up to you.

Here's an example:

@echo off
cls
unzip -qq -uo estest.zip -d %ramdrv%\estest\
%ramdrv%
cd \estest
estest.exe /?

There's alot more to it than this including tweaking settings here and there, but I feel I might drown you with info at the mo.

Have a mess around with it and if you have any specific questions drop me a line.

-kof94

Link to comment
Share on other sites

It appears that it cannot find the bootdrive and of course no dos program is launched. Here is the output:

2001094519460690983_rs.jpg

The same output if I use dosubcd.igz from ultimate boot cd. Only if i boot ultimate boot cd and run fprot for example, then it's working. I use virtual pc and vmware, the same output.

isolinux command:

LABEL bartpe
MENU LABEL 1 test
KERNEL /boot/isolinux/memdisk
APPEND initrd=fdubcd.img setup=amset

There is an amset folder in dosapps folder. Basically i have in root of my cd the following folders: boot-->isolinux (fdubcd and all config files) and dosapps -->amset (with startup.bat and amset files).

I injected in fdubcd.img your startup.bat in "bin "folder and then modify autorun3.bat to run startup.bat at the end.

I've tried with this code to find the bootdrive but it's the same thing, it cannot find the bootdrvive:

@echo off
SET BOOTDRV=
ECHO %COMSPEC% ¦ CHOICE /C:ABCDEFGHIJKLMNOPQRSTUVWXYZ > NUL
IF ERRORLEVEL 1 SET BOOTDRV=A
IF ERRORLEVEL 2 SET BOOTDRV=B
IF ERRORLEVEL 3 SET BOOTDRV=C
IF ERRORLEVEL 4 SET BOOTDRV=D
IF ERRORLEVEL 5 SET BOOTDRV=E
IF ERRORLEVEL 6 SET BOOTDRV=F
IF ERRORLEVEL 7 SET BOOTDRV=G
IF ERRORLEVEL 8 SET BOOTDRV=H
IF ERRORLEVEL 9 SET BOOTDRV=I
IF ERRORLEVEL 10 SET BOOTDRV=J
IF ERRORLEVEL 11 SET BOOTDRV=K
IF ERRORLEVEL 12 SET BOOTDRV=L
IF ERRORLEVEL 13 SET BOOTDRV=M
IF ERRORLEVEL 14 SET BOOTDRV=N
IF ERRORLEVEL 15 SET BOOTDRV=O
IF ERRORLEVEL 16 SET BOOTDRV=P
IF ERRORLEVEL 17 SET BOOTDRV=Q
IF ERRORLEVEL 18 SET BOOTDRV=R
IF ERRORLEVEL 19 SET BOOTDRV=S
IF ERRORLEVEL 20 SET BOOTDRV=T
IF ERRORLEVEL 21 SET BOOTDRV=U
IF ERRORLEVEL 22 SET BOOTDRV=V
IF ERRORLEVEL 23 SET BOOTDRV=W
IF ERRORLEVEL 24 SET BOOTDRV=X
IF ERRORLEVEL 25 SET BOOTDRV=Y
IF ERRORLEVEL 26 SET BOOTDRV=Z
IF "%BOOTDRV%"=="" ECHO Error checking boot drive
IF NOT "%BOOTDRV%"=="" ECHO Boot drive is %BOOTDRV%

Edited by google44
Link to comment
Share on other sites

The same output if I use dosubcd.igz from ultimate boot cd. Only if i boot ultimate boot cd and run fprot for example, then it's working. I use virtual pc and vmware, the same output.

Thats because it's the same image just not compressed!

I've tried with this code to find the bootdrive but it's the same thing, it cannot find the bootdrvive:

Thats because you need a tag file, in my case it's autorun.inf at the root of the disc. Once DOS has searched all drives and found the one with autorun.inf in it, it will set that drive as %bootdrv%.

Here it is again:

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\autorun.inf set bootdrv=%%i:

I've set autorun.inf in bold so you can see where to add your tag file.

If you just want to use the existing, bloated UBCD image then make a file called ubcd.ico at the root of your disc, it'll work then.

Edited by kof94
Link to comment
Share on other sites

You're the man, now it's working :thumbup . Thank you very much for your help ;)

If you just want to use the existing, bloated UBCD image then make a file called ubcd.ico at the root of your disc, it'll work then.

No, I don't want ot use it because it's obviously too bloated, i will create my own, i just use it for testing purposes.

Edited by google44
Link to comment
Share on other sites

You're the man, now it's working :thumbup . Thank you very much for your help ;)
If you just want to use the existing, bloated UBCD image then make a file called ubcd.ico at the root of your disc, it'll work then.

No, I don't want ot use it because it's obviously too bloated, i will create my own, i just use it for testing purposes.

There are easier ways to do all of this. You can explicitly set the drive letter of the ramdrive, if one uses the corr ramdrive driver. And the same is true of MSCDEX, for optical drives. Then set the LASTDRIVE letter (in CONFIG.SYS) to Z, use R for the ramdrive, and X for the starting letter of the opticals. (X bec an IDE-based PC has a max of four drives, where at least one is a hdrive.) I use the higher drive letters for all of this, to avoid collision w/ hdrive partitions if a PC has a lot of drive partitions. So, if you need to go searching for files on an optical drive, you have fewer drives to search

Anyway, that's a generic solution which has always served me well....Jet

Link to comment
Share on other sites

For a minute there I thought I was in the wrong forum. Then I realised... we've been stickied :w00t:

There are easier ways to do all of this. You can explicitly set the drive letter of the ramdrive, if one uses the corr ramdrive driver. And the same is true of MSCDEX, for optical drives. Then set the LASTDRIVE letter (in CONFIG.SYS) to Z, use R for the ramdrive, and X for the starting letter of the opticals. (X bec an IDE-based PC has a max of four drives, where at least one is a hdrive.) I use the higher drive letters for all of this, to avoid collision w/ hdrive partitions if a PC has a lot of drive partitions. So, if you need to go searching for files on an optical drive, you have fewer drives to search

Anyway, that's a generic solution which has always served me well....Jet

To be honest, my batch is just a copy of the techniques people have used for RunOnceEx and batch file software installations. I just went with what I knew!

Edited by kof94
Link to comment
Share on other sites

To be honest, my batch is just a copy of the techniques people have used for RunOnceEx and batch file software installations. I just went with what I knew!

Understood. Short of using something like Python (a better scripting lang) to interrogate registry entries, I guess everyone goes the brute-force way (yours truly incl) for XP scripts....Jet

Link to comment
Share on other sites

To be honest I very rarely use a batch file for anything these days, with the exception of these DOS tools of course.

Anything I do with Windows is usually performed via an inf or WPI if I'm installing apps.

Then of course if an app itself is playing up I'll either write an installer using Inno or an AutoIt script. Saying that, if something looks like I may have to resort to a batch file I write an AutoIt script instead.

Granted it's probably nowhere near Python (I don't know) but it does the job.

I'm starting to sound like a bit of a snob, sorry :P .

:: EOF :)

Edited by kof94
Link to comment
Share on other sites

To be honest I very rarely use a batch file for anything these days, with the exception of these DOS tools of course.

Anything I do with Windows is usually performed via an inf or WPI if I'm installing apps.

Then of course if an app itself is playing up I'll either write an installer using Inno or an AutoIt script. Saying that, if something looks like I may have to resort to a batch file I write an AutoIt script instead.

Granted it's probably nowhere near Python (I don't know) but it does the job.

I'm starting to sound like a bit of a snob, sorry :P .

:: EOF :)

Hardly. The word Python keeps coming up, bec it's platform-independent and syntactically it's no more complicated than InnoScript. You should give a look one of these days.

In the next couple of weeks, I plan to regen my BartPE disc, that's when Python really goes to work. More news soon ;) ....Jet

Link to comment
Share on other sites

Hello, I just received a link to this thread from a user.

I'm the author of SYSLINUX, and it's always interesting to see how my stuff is being used. There have been a couple of interesting bug/misfeature reports in this thread, in particular the MENU MARGIN/MENU WIDTH issue which could perhaps be handled more cleanly.

I'm always interested in feature requests or bug reports, which doesn't mean I will always be able to accept and/or deal with them, but I will consider things and perhaps add them in the future if I feel it is appropriate.

The best place to comment is on the SYSLINUX mailing list, syslinux@zytor.com. I do ask that you do not send questions to me personally, since the only way I can moderate my workload is to allow other people on the mailing list a chance to repond; writing on the mailing list also allows questions and answers to go into the archives for other people to use.

Thanks,

-hpa

Link to comment
Share on other sites

Hardly. The word Python keeps coming up, bec it's platform-independent and syntactically it's no more complicated than InnoScript. You should give a look one of these days.

In the next couple of weeks, I plan to regen my BartPE disc, that's when Python really goes to work. More news soon newwink.gif ....Jet

May be I should. I'm no programmer but if there's a decent help file I can usually muddle my way through. Hay, may be then I really could be a snob :lol::rolleyes: .

All laughs aside, how good are you at modding Slax?

Catch ya later.

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...