Jump to content

Install XP from a RAM loaded ISO image


cdob

Recommended Posts

Maybe this can be usefull:

timeout 30

default /default

# After execute this commands -> usb-drive always (hd0)

# Nested calls like configfile /menu.lst is ignored

errorcheck off

# Try to supress unneeded messages

debug off

serial --unit=0 --speed=115200

terminal --silent serial

# Clearing mappings...

checkrange 0x00,0x01 read 0x8280 && map --unmap=0:0xff

checkrange 0x00,0x01 read 0x8280 && map --floppies=2

# Shifts (hd) devices (4 hdd by default)

checkrange 0x00,0x01 read 0x8280 && map (hd3) (hd4)

checkrange 0x00,0x01 read 0x8280 && map (hd2) (hd3)

checkrange 0x00,0x01 read 0x8280 && map (hd1) (hd2)

checkrange 0x00,0x01 read 0x8280 && map (hd0) (hd1)

# Maybe USB-ZIP like (fd1) or (fd0) ?

checkrange 0x01 read 0x8280 && map (fd1) (hd0)

checkrange 0x00 read 0x8280 && map (fd0) (hd0)

checkrange 0x00 read 0x8280 && map (fd0) (fd1)

checkrange 0x00 read 0x8280 && map (fd1) (fd0)

# Mapping changes

checkrange 0x00,0x01 read 0x8280 && map --hook

checkrange 0x00,0x01 read 0x8280 && rootnoverify (hd0,0)

# Try to hide unnecessary floppies

ls (fd1)/menu.lst && map --floppies=1

geometry (fd0) || map --floppies=0

# Enable messages output

terminal console

terminal graphics

debug normal

errorcheck on

gfxmenu /boot/_splash/message.gz

configfile /boot/_lst/2menu_en.lst

title

...

@kDn

Another idea:

Imagine there exist a file \I386\RAMBOOT.TXT

123456\nsome text

123456 refers to RAM load sectors count.

Grub4dos menu.lst dosn't contain sector numbers by default.

Do you have a idea to boot grub4dos, read RAMBOOT.TXT at grub4dos and call

map --mem (0xFE)+123456 (0xFF)

cdob

I dont know good solution, :( or universal way...

But I try thinking about it :)

Edited by kDn
Link to comment
Share on other sites


You know what... I feel so dumb. The unattended answer files I was using were blank. LOL! So I guess this just hasn't been my week. :( I've been troubleshooting creating a USB Bootable RAM ISO all week and most of my issues were my own fault. If someone wants to remove my useless posts in this thread it's fine by me. I feel so embarressed that I'd even let the simplest things like this slide by me. LOL! This is what I get for being out of the loop for so long. Guess it's time for me to start coding something again. :blink:

Link to comment
Share on other sites

Here's a few questions I have:

1. If I loaded an iso to ram... and then loaded a second iso to RAM again... would existing files be overwritten?

The reason I ask is this.

We know that all different editions of XP Pro use the same exact files... except a small amount of files are different.

If we could load an ISO of XP Pro Corp to RAM... and then load another small ISO on top of it which only contained the different files for XP Pro OEM... would it actually change the ram install into XP Pro OEM?

2. Also... can I mount an ISO onto a HD instead of into RAM?

for instance if we could... then we could create a normal USB XP install stick with XP Pro Corp...

and then mount a small iso with the different files for XP Pro OEM conversion. Which would overwrite the ones on the hd.

3. And my last question...

Is there any way possible to use a cd/dvd... and somehow mount that small iso into RAM in a way that would map those files to trick windows setup into thinking the files in ram where the files on the disk. Since CD/DVD ROM's are not writeable... this would be really cool if we could utalize the memory to make it look like the drive is writeable. I doubt this is possible right now. But it would be something cool to think about for those who have created drivers like this which allows us to do things we normally couldn't do in the past.

Link to comment
Share on other sites

I feel so embarressed that I'd even let the simplest things like this slide by me. LOL!

Well, NO, it doesn't work this way. :no:

What would we have (when old and retired, and forgetful ;)) to point you to, which reference would we have for "You remember that time you completely messed up...."

:P

1. If I loaded an iso to ram... and then loaded a second iso to RAM again... would existing files be overwritten?

NO. separate addresses are used.

2. Also... can I mount an ISO onto a HD instead of into RAM?

NO.

You cannot mount an ISO to a HD.

BUT, hopefully, in the future we may be able to load directly (NOT in ram) a HD image (.ima/.img) as HD.

This is a requsted feature that will probably be added to Firadisk or to WinVblock:

http://www.boot-land.net/forums/index.php?showtopic=8168

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

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

For the record there is a "filedisk" driver that should be able to do that as it has no size limits and is a real miniport one:

http://www.boot-land.net/forums/index.php?showtopic=8468

(it seems like there are no takers for experimenting with this one)

for instance if we could... then we could create a normal USB XP install stick with XP Pro Corp...

and then mount a small iso with the different files for XP Pro OEM conversion. Which would overwrite the ones on the hd.

There could be a way through using graft-points (sort of hardlinks) in the making of the .iso.

3. And my last question...

Is there any way possible to use a cd/dvd... and somehow mount that small iso into RAM in a way that would map those files to trick windows setup into thinking the files in ram where the files on the disk. Since CD/DVD ROM's are not writeable... this would be really cool if we could utalize the memory to make it look like the drive is writeable. I doubt this is possible right now. But it would be something cool to think about for those who have created drivers like this which allows us to do things we normally couldn't do in the past.

Sure, Firadisk (and grub4dos) can load HD images allright (actually it is what it is intended and used for) but you will have to deal to same "queer" behaviour theat were found (and solved) for the "normal" Install XPfrom USB.

jaclaz

Link to comment
Share on other sites

cdob

What you think about that?

title Test generating menu
#(fd1) optional, required at some BIOS
#map --mem /Boot/XP_INST.gz (fd1)
map --mem /Boot/XP_INST.gz (fd0)
ls /Boot/XP_RAM.ISO || find --set-root /Boot/XP_RAM.ISO
map /Boot/XP_RAM.ISO (0xFE)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
# EMPTY512.LST content 512 spaces
write --offset=0x00 (fd0)/EMPTY512.LST default 0\n######
write --offset=0x10 (fd0)/EMPTY512.LST \ntimeout 0\n\n##
write --offset=0x20 (fd0)/EMPTY512.LST \ntitle TOFF\n###
write --offset=0x30 (fd0)/EMPTY512.LST \nmap --mem (0xFE) (0xFF)\n#
write --offset=0x60 (fd0)/EMPTY512.LST \nmap --hook\n###
write --offset=0x70 (fd0)/EMPTY512.LST \nmap --unmap=0xFE\n#####
write --offset=0x88 (fd0)/EMPTY512.LST \nchainloader (0xFF)/I386/SETUPLDR.BIN\n#
# RAMBOOT.TXT content like "+12345667" without quotes
dd if=(0xfe)/RAMBOOT.TXT of=(fd0)/EMPTY512.LST seek=0x44 count=0x0A
configfile (fd0)/EMPTY512.LST

Link to comment
Share on other sites

reply to post#70

can you please explain the grub4dos entries in code box plz ?

This an idea to construct menu entry on-the-fly... Look to the post #59 or #66

Edited by kDn
Link to comment
Share on other sites

@kDn

Thanks, I like the idea.

The (fd0)/EMPTY512.LST offers a universal solution.

EMPTY512.LST settings can be adjusted to special needs.

Have to do some tests. There are different approaches to create RAMBOOT.TXT.

Maybe I add a ramload.lst to ISO image too. ramload.lst offer a basic setting with swap hd0 hd1 and without map.

Haven't made a final decision so far.

@Siginet

I don't know a reliable solution with two single ISO files.

Remember grub4dos dd is more a hex editor. You can copy sectors, but file system is not adjusted.

You may mount a second ISO file, and dd oembios.cat to RAM ISO.

Given different oembios.cat file sizes results are interesting. Try and report.

A multi session CD (or fake multi session as growisofs) may get a approach too.

dd file system parts to RAM. However this is rather difficult at two single ISO images.

A multi boot ISO file gives reliable results.

To 3: It should be possible to load a small iso into RAM (textmode boot files, about 10mb), mount the big ISO file to a virtual CD drive and continue installation.

Setup search all CD drives for source files, does work at U3 fake CD drive. No need to add a special search.

I don't know a setupldr.bin textmode driver to mount the big ISO file.

Link to comment
Share on other sites

What you think about that?

I created two approaches finally:

mkISO_RAMload_sort.cmd creates a grub4dos menu RAMboot.lst.

Example:

#183934 #

timeout 1

title Install Windows - no map

map --mem (0xFE)+183934 (0xFF)

map --hook

chainloader (0xFF)/I386/SETUPLDR.BIN

Recognice the first line, this contain the sector numbers.

The RAMboot.lst is called from main menu.lst.

First approach: configfile, use preconfigured RAMboot.lst.

title Loading XP RAM install - swap hd0 hd1 \n loading N sectors configfile RAMBOOT.LST
ls /Inst/XP_RAM.ISO || find --set-root /Inst/XP_RAM.ISO
map --mem /Inst/XP_INST.IMA (fd0)
map /Inst/XP_RAM.ISO (0xFE)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
map --unmap=0xFE
configfile (0xFE)/I386/RAMBOOT.LST

title Loading XP RAM install - no map hdN \n loading N sectors configfile RAMBOOT.LST
ls /Inst/XP_RAM.ISO || find --set-root /Inst/XP_RAM.ISO
map --mem /Inst/XP_INST.IMA (fd0)
map /Inst/XP_RAM.ISO (0xFE)
map --hook
map --unmap=0xFE
configfile (0xFE)/I386/RAMBOOT.LST

Second approach: universal solution, read sectors from RAMboot.lst


title Loading XP RAM install - no map hdN \n loading N sectors from RAMBOOT.LST
ls /Inst/XP_RAM.ISO || find --set-root /Inst/XP_RAM.ISO
map --mem /Inst/XP_INST.IMA (fd0)
#optional, (fd1) required at some BIOS
#map --mem /Inst/XP_INST.IMA (fd1)
map /Inst/XP_RAM.ISO (0xFE)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
#kDn [url="http://www.msfn.org/board/index.php?s=&showtopic=137714&view=findpost&p=886626"]http://www.msfn.org/board/index.php?s=&amp...st&p=886626[/url]
# EMPTY512.LST content 512 spaces
write --offset=0x00 (fd0)/setup/EMPTY512.LST default 0\n
write --offset=0x10 (fd0)/setup/EMPTY512.LST \ntimeout 0\n\n
write --offset=0x20 (fd0)/setup/EMPTY512.LST \ntitle RAM load\n
write --offset=0x30 (fd0)/setup/EMPTY512.LST \nmap --mem (0xFE)+ (0xFF)\n
write --offset=0x52 (fd0)/setup/EMPTY512.LST \nmap --hook\n
write --offset=0x60 (fd0)/setup/EMPTY512.LST \nmap --unmap=0xFE\n
write --offset=0x72 (fd0)/setup/EMPTY512.LST \nchainloader (0xFF)/I386/SETUPLDR.BIN\n
# RAMBOOT.* content like "#123456" without quotes
dd if=(0xfe)/I386/RAMBOOT.LST of=(fd0)/setup/EMPTY512.LST skip=1 seek=0x42 bs=1 count=0x07
#cat (fd0)/setup/EMPTY512.LST
configfile (fd0)/setup/EMPTY512.LST

EMPTY512.LST is included in XP_INST_v04.7z, attached to first post.

Link to comment
Share on other sites

On some systems USB do not initialized properly, this can be fixed like that:

title Testing Install Windows XP from ISO on USB-HDD

ls /boot/XP_RAM.ISO || find --set-root /boot/XP_RAM.ISO

map --mem /boot/XP_INST.gz (fd0)

#(fd1) optional, required at some BIOS

map /boot/XP_RAM.ISO (0xFE)

# if start from HDD-device, than remaping hd0<->hd1

checkrange 0x80 read 0x8280 && map (hd0) (hd1)

checkrange 0x80 read 0x8280 && map (hd1) (hd0)

map --hook

write --offset=0 (fd0)/setup/ISOimage.ini \\boot\\XP_RAM.ISO\n;\n;\n;

map --unmap=0xFE

# uncomment line ;setup, fixBoot.USB

write --offset=1782 (fd0)/TXTSETUP.OEM dll = setup, fixBoot.USB\r\n;

configfile (0xFE)/I386/RAMBOOT.LST

Link to comment
Share on other sites

If you want to use multiple unattended-mode installation, you may do some simple steps:

1. Create file WINNT.SIF with 65536 space chars (0x20), and put it in the root of floppy image (XP_INST.IMA)

2. Use menu item like that:

title Testing WINNT.SIF

ls /Inst/XP_RAM.ISO || find --set-root /Inst/XP_RAM.ISO

map --mem /boot/XP_INST.IMA (fd0)

#(fd1) optional, required at some BIOS

#map --mem /boot/XP_INSTF.IMA (fd1)

map /Inst/XP_RAM.ISO (0xFE)

map --hook

# Uncomment if not work while installing from USB

#write --offset=1782 (fd0)/TXTSETUP.OEM dll = setup, fixBoot.USB\r\n;

# Use WINNT.SIF from ISO

#dd if=(0xFE)/I386/WINNT.SIF of=(fd0)/WINNT.SIF

# Use WINNT.SIF from /boot/TEST.SIF

dd if=()/boot/TEST.SIF of=(fd0)/WINNT.SIF

# or comment all lines whis dd command for install in manual (non unattended) mode

checkrange 0x80 read 0x8280 && map (hd0) (hd1)

checkrange 0x80 read 0x8280 && map (hd1) (hd0)

map --hook

map --unmap=0xFE

configfile (0xFE)/I386/RAMBOOT.LST

Link to comment
Share on other sites

Excellent work, i appreciate that effort so much.

I used ISO file for windows XPSP3 tweaked with NLite.

i tested this using Memory stick 8GB/1GB/4GB on AsusEee --> worked fine.

i tested this using Memory stick 8GB/1GB/4GB on HP530 --> worked fine.

i tested this using Memory stick 8GB/1GB/4GB on HP500 --> worked fine.

i tested this using Memory stick 8GB/1GB/4GB on Acer1640 --> worked fine.

but when i tested this using the builtin/internal Card Reader with 4GB on ACER5738 with the following steps:

1- Format 4GB SD memory with HPTools.

2- install Grub 0.4.4

3- Booted from Grub

4- Start the text mode windows setup till i reach the step for choosing the partition to install windows --> actually this step never reached and blank screen appear instead.

5- i tried another ISO that worked for all other Laptobs and the same result

6- i tried with an ISO for pure windows (Not tweaked) with the same results.

7- i got maaaaaaaaaaaaaaaaaaaaaaaaaad with this.

any solution gents?

Link to comment
Share on other sites

Another some little changes maded in setup script (SETUP.CMD) for more correct work, compare and confirm its please.
Sorry late answer, got distracted. Some vacation preparations: I'm offline next december.

Diff are spaces in most cases

$ diff setup.cmd setup.cmd.edited

44c44
< echo presetup log %date% %time% > presetup.log
---
> for %%a in (presetup.log) do if not exist %%a echo presetup log %date% %time% > presetup.log
49c49
< for %%a in (reg.exe) do if not exist %%a echo Error: missing file: %%a >>presetup.log
---
> for %%a in (reg.exe) do if not exist %%a echo Error: missing file: %%a >> presetup.log
53c53
< echo presetup fixDrive.USB > presetup.log
---
> echo presetup fixDrive.USB >> presetup.log
58c58
< if /I not %SystemDrive%.==C: echo setup SystemDrive %SystemDrive% >>presetup.log
---
> if /I not %SystemDrive%.==C: echo setup SystemDrive %SystemDrive% >> presetup.log
62,63c62,65
< if exist c:\Inst\XP_*.ISO set reassign=true
< if exist c:\Inst\2003*.ISO set reassign=true
---
>
> set ISO_file_search=\Inst\XP_RAM.ISO
> if exist ISOimage.ini for /f "eol=;" %%a in (ISOimage.ini) do if not %%a.==. set ISO_file_search=%%a
> if exist c:%ISO_file_search% set reassign=true
68c70
< echo reg delete MountedDevices \DosDevices\C: and \DosDevices\%SystemDrive%>> presetup.log
---
> echo reg delete MountedDevices \DosDevices\C: and \DosDevices\%SystemDrive% >> presetup.log
85c87
< echo presetup fixBoot.USB > presetup.log
---
> echo presetup fixBoot.USB >> presetup.log
106c108
< if not exist %%a echo Error: missing file: %%a >>presetup.log)
---
> if not exist %%a echo Error: missing file: %%a >> presetup.log)
129c131
< if defined sourcepath (echo sourcepath %sourcepath%)>>presetup.log
---
> if defined sourcepath (echo sourcepath %sourcepath%) >> presetup.log
143c145
< echo search ISO file "%%i:%%j">>presetup.log
---
> echo search ISO file "%%i:%%j" >> presetup.log
149c151
< (echo Error: no ISO file found &echo.)>>presetup.log
---
> (echo Error: no ISO file found &echo.) >> presetup.log
153c155
< echo found ISOfile %ISOfile%>>presetup.log
---
> echo found ISOfile %ISOfile% >> presetup.log
156c158
< echo mount ISOfile %ISOfile% >>presetup.log
---
> echo mount ISOfile %ISOfile% >> presetup.log
165c167
< echo.>>presetup.log
---
> echo. >> presetup.log
167c169
< echo.>>presetup.log
---
> echo. >> presetup.log
171c173
< (echo. &echo mount ISOfile V:\XP_RAM.ISO) >>presetup.log
---
> (echo. &echo mount ISOfile V:\XP_RAM.ISO) >> presetup.log
174c176
< echo.>>presetup.log
---
> echo. >> presetup.log
176c178
< echo.>>presetup.log
---
> echo. >> presetup.log
205c207
< echo call presetup.cmd >>presetup.log
---
> echo call presetup.cmd >> presetup.log
208c210
< echo end presetup.cmd >>presetup.log
---
> echo end presetup.cmd >> presetup.log
222c224
< (echo. &echo run setup CmdLine: %CmdLine% - %date% %time%)>>presetup.log
---
> (echo. &echo run setup CmdLine: %CmdLine% - %date% %time%) >> presetup.log
233c235
< (echo. &echo prepare USB boot configuration %date% %time% )>>presetup.log
---
> (echo. &echo prepare USB boot configuration %date% %time% ) >> presetup.log

I like to keep this lines: if exist c:\Inst\XP_*.ISO set reassign=true

Idea, USB drive got letter c:, let windows reassing drive letters. Internal hard disk may get c: or windows assign c: for USB again.

Do you have different results? Can you describe the conditions?

Thanks, I missed a > at 'echo presetup fixBoot.USB > presetup.log'.

Yes, use 'echo presetup fixBoot.USB >> presetup.log'

On some systems USB do not initialized properly, this can be fixed like that:

I'm glad to keep the fixBoot.USB section, actually I might have deleted this part.

Now this is usefull at some conditions.

Do you have some examples? Which systems dosn't initialize USB properly.

Another idea for multiple installation:

add several floppy images XP_INST.IMA to multi boot ISO image.

Load the ISO image to RAM first, and load a appropiate floppy image from ISO image next.

Start the text mode windows setup till i reach the step for choosing the partition to install windows --> actually this step never reached and blank screen appear instead.

Windows setup hang at partition detection/mounting.

Does internal hard disk contain partitions already?

Does a Memory stick 8GB/1GB/4GB work at the ACER5738 ?

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