Jump to content

Install XP from a RAM loaded ISO image


cdob

Recommended Posts


Ok, I'm having the same issue as Doveman. After booting from hdd (and after presetup.cmd runs) I get an error that the installation CD cannot be found.

At best guess I'd say it hasn't been mounted at all.

I've trieed this in Qemu and on real hardware, same result... any ideas?

Link to comment
Share on other sites

Someone may well correct me, but I'm not sure you need to go through all this just to boot a PE ISO in RAM.

I've had success using the following menu.lst entries. I think you just need to make sure your PE build includes the BootSDI plugin.

I will gladly. ;)

Booting a PE in RAM is not anything new.

It is possible since the release of Server2003 SP1, end of 2004/first months of 2005 methods were found:

http://www.911cd.net/forums/index.php?showtopic=9685

http://www.911cd.net/forums/index.php?showtopic=10445

http://www.911cd.net/forums//index.php?showtopic=10482

http://www.911cd.net/forums//index.php?showtopic=10806

The BootSDI plugin is just the way some winbuilder projects implemented RAMDISK booting.

The way you depict, (mapping the iso to --mem with grub4dos) you are effectively loading the PE in memory TWICE, read here WHY:

http://www.boot-land.net/forums/index.php?...=8258&st=37

With Firadisk or WinVblock, you re-use the SAME image in RAM loaded via grub4dos.

jaclaz

Link to comment
Share on other sites

I will gladly. ;)

Thought you might ;)

You're quite right though and it's rather obvious (now that you've pointed it out!)

Then again, using the first menu entry I listed, without the -mem switch, with a BootSDI PE will do the job won't it? Obviously this isn't an option for a pre-built ISO made without using the BootSDI option. Is there any advantage to building the PE without BootSDI and using Firadisk instead?

Link to comment
Share on other sites

Then again, using the first menu entry I listed, without the -mem switch, with a BootSDI PE will do the job won't it? Obviously this isn't an option for a pre-built ISO made without using the BootSDI option. Is there any advantage to building the PE without BootSDI and using Firadisk instead?

You will need a contiguous source file for direct mapping.

Using Firadisk you are not anymore limited to the "mythical" but actually effective 500/512 Mb size limit of RAMDISK.SYS (and OK, the limit is somewhere else, AND it can be overcome now :wacko: ):

http://www.boot-land.net/forums/index.php?...ic=9474&hl=

But still it takes TIME to load an image to RAM, expecially if source is a slow device, besides requiring LOTS of RAM.

Once the image is loaded in RAM, it's speed isn't that great, Karyonix is working to speed up things:

http://www.boot-land.net/forums/index.php?...8804&st=186

If and when either Karyonix or Sha0 (Firadisk and WinVblock developers respectively) or some other developer will take seriously this idea:

http://www.boot-land.net/forums/index.php?...=8168&st=11

things may change. ;)

I even found a couple of possible candidates (existing drivers) but it seems that noone is interested in the minimalistic approach, as well as in this one:

http://www.boot-land.net/forums/index.php?...ic=3717&hl=

I am always looking around for volunteers, do you happen to have a "lab rat attitude"? :unsure:

jaclaz

Link to comment
Share on other sites

Since looking at this thread: Install 2000/XP/2003 from RAM loaded small ISO I started to wonder if it would be possible to combine the two projects (sort of).

Would it be possible to boot a mini iso with the boot files (as flyakites guide - saves on boot time!) in RAM (0XFF) and direct boot the full iso (safes RAM) from the UFD (0XFE) then install from the full iso. Just a thought but I wondered if it would work.

Edit: Nearly forgot... tested install on my desktop with and without card reader. Everything went fine except on the attempt where I created a new partition on the drive (disk was empty) and ended up with a random reboot just at the point presetup.cmd should have run. I booted to hdd a second time and everything went fine except I ended up with a 'All Users.WINDOWS' dir in Documents and settings.

I think this reboot was caused by the for loop in presetup.cmd because on subsequent installs (and on the second attempt above) I had "No Disk" errors at this point when the card reader was connected.

A part from disconnecting it prior to install the only solution I can think of is to reverse the search order in the loop, that way the UFD (where my OEM dir is) should, hopefully, be found before the card reader.

SET TAGFILE=\OEM
FOR %%i IN (Y X W V U T S R Q P O N M L K J I H G F E D C) DO IF EXIST "%%i:%TAGFILE%" SET CDDRIVE=%%i:& GOTO DPsFound

If I was doing this in a bash script I'd search for the volume label instead and save a possible 23 mounts but I have know idea how to do that in Windows.

Edited by kof94
Link to comment
Share on other sites

I am always looking around for volunteers, do you happen to have a "lab rat attitude"? :unsure:

I do normally but unfortunately I've got too many other things to fix to take on any more at the moment :no:

If I could just get PLOP working with my hardware, to speed up loading the RAM image from USB, I'd be happy.

Link to comment
Share on other sites

If I was doing this in a bash script I'd search for the volume label instead and save a possible 23 mounts but I have know idea how to do that in Windows.

In Windows there is the "LABEL" command:

http://ss64.com/nt/label.html

and the "VOL" one (advised ;)):

http://ss64.com/nt/vol.html

it also returns the volume serial.

But you have anyway to loop. :unsure:

The vlm.exe inside DSFOK:

http://members.ozemail.com.au/~nulifetv/fr...ware/index.html

will scan all volumes, but it won't return the drive letter. :(

The MOUNTVOL command will scan all volums, but won't return the label. :(

A possible "cure" is worst than the actual illness ;):

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
Set Label=%1
FOR /F "tokens=1,2 delims=:, " %%A IN ('vlm.exe') DO (
IF NOT Label==%%A SET VOLUME=%%A
IF /I %%B==%Label% GOTO :do_mountvol
)
GOTO :EOF

:do_mountvol
SET Volume=%Volume:.=?%
SET COUNTER=0
For /F %%? in ('mountvol.exe ^| FIND "\"') DO CALL :do_pairs %%?
FOR /F "tokens=2 delims==" %%? IN ('SET Drive ^| FIND "%Volume%"') DO SET %LABEL%=%%?
SET %LABEL%
GOTO :EOF

:do_pairs
SET ThisItem=%1
IF "%ThisItem:~0,4%"=="\\?\" SET /A Counter=!Counter!+1
Set Drive%Counter%=%ThisItem%=!Drive%Counter%!
GOTO :EOF

jaclaz

Link to comment
Share on other sites

tested install on my desktop with and without card reader.
Disconnect external card readers if possible. This reduce the risk.
ended up with a random reboot
What's a ramdom reboot? How often did the machine reboot?

Can you attach the presetup.log file?

There is a fix drive letter enabled by default. This may add one reboot.

Setup may assign letter c: to another device.

C: is not available for new installed windows.

Setup.cmd deletes MountedDevices.

At reboot windows assign letters again: c:\windows

Did you used fixDrive.USB option? This may add a reboot too.

I think this reboot was caused by the for loop in presetup.cmd
I doubt this.

This principal loop is used since several years.

because on subsequent installs (and on the second attempt above)

Most likely there exist a c: drive then.

I had "No Disk" errors
Thanks for the hint. Add a "DIR %%i: &&"

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) DO (
FOR %%j in (%ISO_file_search%) DO (
echo search ISO file "%%i:%%j">>presetup.log
DIR %%i: && IF EXIST "%%i:%%j" (
SET ISOfile=%%i:%%j
goto :ISO_file_found)
)
)

Link to comment
Share on other sites

@cdob

Disconnect external card readers if possible. This reduce the risk.

Yeah, I had no issues when I disconnected the card reader!

What's a ramdom reboot? How often did the machine reboot?

By 'random' I just meant that I didn't expect it because it didn't happen without the card reader attached.

Can you attach the presetup.log file?

No can't because I've wiped the drive now.

There is a fix drive letter enabled by default. This may add one reboot.

I did notice that when the hdd was already partitioned, when I repartitioned it and returned to hit enter to install it was assigned to C: and the drive letter for my ufd was removed (just a hyphen when it was previously C:). But on this occasion the the hdd was blank so after partitioning it was assigned to I: when I started the install.

fixDrive.USB is uncommented in textsetup.oem so I assume thats what caused reboot because %systemdrive% was I: prior to that.

Thanks for the hint. Add a "DIR %%i: &&"

Forgive my ignorance but wont this still cause the "No Disk" errors because there's still going to be an attempt to "mount" a non-existent filesystem and list it's contents?

@jaclaz

A possible "cure" is worst than the actual illness newwink.gif:

No jokes. Thanks for the advice though.

Link to comment
Share on other sites

No jokes. Thanks for the advice though.

You are welcome, and now the nice part ;):

I too have a couple of "problematic" machines that have one of those "stoopid" card readers to which Windows assigns a letter even if there is no media.

On these, the "IF EXIST" will throw an error.

This:

@ECHO OFF
SET TAGFILE=\OEM

FOR /F "tokens=1 delims=\ " %%? IN ('MOUNTVOL.EXE ^|FIND ":\"') DO (
DIR %%?|FIND "%TAGFILE:\=%">nul&&SET CDDRIVE=%%?& GOTO DPsFound
)

GOTO :EOF
:DPsFound
SET CDDRIVE

is a workaround, that loops only through existing drives and does not throw error for "device not ready" or "no disk".

jaclaz

Link to comment
Share on other sites

Forgive my ignorance but wont this still cause the "No Disk" errors because there's still going to be an attempt to "mount" a non-existent filesystem and list it's contents?

At XP 32 bit a dir does behave different. Open a command prompt and run "dir I:".

There is a command line message displayed only, but no "No Disk" window.

In addition there is errorlevel set internally: therefore the following && find is not executed.

Finally: "No Disk" window is not displayed.

Try too: remove find

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) DO (
FOR %%j in (%ISO_file_search%) DO (
echo search ISO file "%%i:%%j">>presetup.log
DIR "%%i:%%j" && (
SET ISOfile=%%i:%%j
goto :ISO_file_found)
)
)

Link to comment
Share on other sites

Well I've certainly learnt something today, thanks to both of you :).

Edit: I liked both solutions so much I thought I'd combine them:

set tagfile=\OEM
for /f "tokens=1 delims=: " %%? in ('mountvol.exe ^|find ":\"') do (
dir %%?:%tagfile% >nul 2>&1 && set CDDRIVE=%%?:
)
if not defined CDDRIVE (
goto EOF
)

Edited by kof94
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...