Jump to content











Photo

Install Windows XP from ISO on UFD to SATA hard disk


  • Please log in to reply
23 replies to this topic

#1 karyonix

karyonix

    Frequent Member

  • Advanced user
  • 434 posts
  •  
    Thailand

Posted 01 March 2011 - 05:07 PM

Install Windows XP from ISO on UFD to SATA hard disk
by using Grub4Dos + FiraDisk floppy image

RequirementsPreparation
  • Copy firadisk.img to a new file in UFD, named iastor.img in this example.
  • Mount floppy image iastor.img with some virtual disk software.
  • Copy SATA/RAID files for F6 into floppy image, except TXTSETUP.OEM.
  • Combine FiraDisk TXTSETUP.OEM with SATA/RAID TXTSETUP.OEM.
    This is an easy task. Just concatenate them into one file.
  • menu.lst in root directory of UFD.

    title Setup Windows from ISO to HDD Step 1 : Boot from ISO, with virtual CD+Floppy
    map --mem (md)0x800+4 (99)
    checkrange 0x80 read 0x8280 && map (hd1) (hd0)
    checkrange 0x80 read 0x8280 && map (hd0) (hd1)
    map /winsetup.iso (222)
    map /iastor.img (fd0)
    map /iastor.img (fd1)
    map --harddrives=1
    map --hook
    write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/winsetup.iso;floppy,vmem=find:/iastor.img;\n\0
    rootnoverify (222)
    chainloader
    map --status
    pause Press any key twice . . .

    title Setup Windows from ISO to HDD Step 2 : Boot from HDD, with virtual CD
    map --mem (md)0x800+4 (99)
    checkrange 0x80 read 0x8280 && map (hd1) (hd0)
    checkrange 0x80 read 0x8280 && map (hd0) (hd1)
    map --hook
    write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/winsetup.iso;\n\0
    rootnoverify (hd0)
    chainloader +1
    map --status
    pause Press any key . . .

    title Setup Windows from ISO to HDD Step 3
    checkrange 0x80 read 0x8280 && map (hd1) (hd0)
    checkrange 0x80 read 0x8280 && map (hd0) (hd1)
    map --hook
    rootnoverify (hd0)
    chainloader +1
    map --status
    pause Press any key . . .

Start Setup
  • Step 1 Boot from UFD -> in GRUB4DOS menu select Step 1
    Text phase setup
    Press F6 when prompted.
    Press S and select FiraDisk
    Press S and select AHCI or RAID driver
    After both driver are selected Press ENTER
    Continue setup
  • Step 2 Boot from UFD -> in GRUB4DOS menu select Step 2
    GUI phase setup
  • Step 3 Boot from UFD -> in GRUB4DOS menu select Step 3
    or remove UFD and boot from hard disk directly.

EDIT: Changed script as wimb suggested.

#2 Giraffe

Giraffe

    Frequent Member

  • Advanced user
  • 498 posts
  •  
    United Nations

Posted 01 March 2011 - 07:40 PM

:cheers: I missed this...




I've a huge RTF file loaded with karyonix text(s).... time to update :cheers:

#3 wimb

wimb

    Gold Member

  • Developer
  • 2,148 posts
  •  
    Netherlands

Posted 02 March 2011 - 03:26 PM

I have tried, but GUI-mode of XP Setup did NOT start.

I have used simple firadisk.img F6 virtual floppy, since I did not need iaStor in my case.
In that case pressing F6 allowed to select the driver,
but after hardware detect and selecting partition for install of XP,
then I got in second part of TXT-mode that firadisk.sys was NOT found. :questionmark:

So I solved by NOT pressing F6 so that TXT-mode was running fine,
but GUI-mode did NOT start ...

Analysis of WINDOWS folder created by TXT-mode seems OK and
reveals OEmDir containing firadisk.sys and oemscs01.inf which are mentioned in [OemInfFiles] section of $winnt$.inf

Then I modified Step 2 and used rules as in similar WinVBlock method like

http://www.msfn.org/...post__p__957331


title Setup Windows from ISO to HDD Step 2 : Boot from HDD, with virtual CD

map --mem (md)0x800+4 (99)

# map (hd1) (hd0)

# map (hd0) (hd1)

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

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

map --hook

write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/XP3_1102.iso;\n\0

# root (hd0,0)

# chainloader /ntldr

chainloader (hd0)+1

map --status

pause Press any key . . .


That works, GUI-mode now will Start and XP Setup is OK including Install of Video and Audio at T-9 :smiling9:

Interesting is that FiraDisk is Installed correctly as SCSI Controller and Not as Unknown device as occurs for WinVBlock.
Also the Virtual XP Setup CD on USB-stick survives install of devices, without using the presetup cmd trick of cdob
Also the position of USB-stick REMOVABLE drive I: is different (for WinVBlock it was G: in the middle of FIXED drives)

VERY GOOD karyonix :(

Posted Image

#4 wimb

wimb

    Gold Member

  • Developer
  • 2,148 posts
  •  
    Netherlands

Posted 03 March 2011 - 10:58 AM

Instead of Install of XP on HDD partition, I would like to test FiraDisk for Install of XP in HDD Image file.

I tried this http://reboot.pro/88...617#entry122617

but in TXT-mode Setup after boot drivers were loaded, then I get black screen with flashing cursor at Hardware detect.

May be I did not use the correct grub4dos menu entry for the case of FiraDisk, but for WinVBlock I have it working.

Any idea on how to solve and may be can you help to find working grub4dos entries for Install of XP in Image file..


:mellow:

#5 Sha0

Sha0

    WinVBlock Dev

  • Developer
  • 1,671 posts
  • Location:reboot.pro Forums
  • Interests:Booting
  •  
    Canada

Posted 03 March 2011 - 07:33 PM

Interesting is that FiraDisk is Installed correctly as SCSI Controller and Not as Unknown device as occurs for WinVBlock.

Please note some differences:

Service name | 32-bit driver | 64-bit driver

WinVBlock    | wvblk32.sys   | wvblk64.sys

FiraDisk     | firadisk.sys  | firadi64.sys

What do you suppose might happen if all references to wvblk32 were replaced with winvblock? What happens with FiraDisk's 64-bit driver? Basically, the service name (and device ID) that is created is OK for 32-bit FiraDisk, because it exactly matches the driver's filename. But the service name (and device ID) that is created is not OK for 32-bit WinVBlock, because it doesn't match the driver's filename. So I would expect 64-bit FiraDisk to fail in the same way, but obviously I could be mistaken.

#6 Wonko the Sane

Wonko the Sane

    The Finder

  • Advanced user
  • 10,127 posts
  • Location:The Outside of the Asylum (gate is closed)
  •  
    Italy

Posted 03 March 2011 - 07:58 PM

As often happens OT :smiling9: but not much :cheers:, is a 8.3 filename required by some of the methods used?
Or by Windows itself for minitport drivers or whatever?
I mean, traditionally everything was 8.3, and AFAICR "F6" drivers I have seen have always been 8.3 compatible named, but is it a requirement or only a "tradition" or "better be safe than sorry" approach? :whistling:

:cheers:
Wonko

#7 karyonix

karyonix

    Frequent Member

  • Advanced user
  • 434 posts
  •  
    Thailand

Posted 04 March 2011 - 02:38 AM

@wimb
Thanks.
I updated the tutorial script similar to yours.

@Sha0
This behavior of setup is unexpected.
I never know there are 2 services created.
Somehow, FiraDisk and firadi64 services can co-exist.
This is still undesirable.

Let's talk about workaround.
A workaround is to use service name = file name.
  • 1. different file name and service name for 32-bit and 64-bit
    One driver package can work on both 32-bit and 64-bit.
    But service names are different.
    or
  • 2. same file name and service name for 32-bit and 64-bit
    Separate 32-bit driver package and 64-bit driver package.
    They can be in the same floppy image. 64-bit driver in \amd64\ directory.
  • 3. = 1. + 2.
  • 32-bit+64-bit INF in \ directory :
    32-bit driver file name = service name and is in the same directory as INF.
    64-bit driver file name = different name or same file name but in \amd64\ directory.
  • 64-bit-only INF in \amd64\ directory :
    64-bit driver file name = service name and is in the same directory as INF.
    Cannot use 64-bit driver file in sub-directory.

@Wonko the Sane
I am not sure but MS' document (http://msdn.microsof...9(v=VS.85).aspx) says ...

File names must not exceed eight characters, and extensions must not exceed three characters.

The same document is not very accurate regarding service name though.

#8 davlak

davlak

    Frequent Member

  • Advanced user
  • 224 posts
  •  
    Italy

Posted 04 March 2011 - 09:44 AM

as always very good job!
did anybody know or try to install 2003 server using this trick?
if yes, did it work?
I'd like to try it but at the moment I have no available PC.

#9 rdomp

rdomp

    Newbie

  • Members
  • 11 posts
  •  
    Antarctica

Posted 05 March 2011 - 01:07 AM

Hi Karyonix,

I have followed all your steps listed in the first post to install XP Pro SP3 English on a Dell Optiplex GX620, but it is not working for me. Please find below the error message I get when I select option "Setup Windows from ISO to HDD Step 1 : Boot from ISO, with virtual CD+Floppy" from the menu:

Autodetect number-of-heads failed. Use default value 2
Autodetect sector-per-track failed. Use default value 18
Address 0x8280: Value 0x80
Address 0x8280: Value 0x80
FAT12 PBP found with 0xEB (jmp) leading the boot sector.

probed C/H/S = 80/2/18, probed total sectors = 2880
FAT12 PBP found with 0xEB (jmp) leading the boot sector.

floppies_orig=1, harddrives_orig=2, floppies_curr=2, harddrives_curr=2
0x55 bytes written at offset 0x0.
chainloader

Error 25: Disk Read Error

Press any key to continue ...


A non-English version of XP Pro is already installed on C partition of the Dell Optiplex GX620 (there is only 1 hard disk with 3 partitions). Here are some details on the files I have used:

1) iastor.img: contains the firadisk.img plus the files from Intel 32-bit Floppy Configuration Utility (f6flpy3288.zip);

2) winsetup.iso is the original XP PRO SP3 cd "en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso" renamed;

3) added to winsetup.iso the following files:

a) setupp.ini having as content
[Pid]
ExtraData=786F687170637175716954806365EF
Pid=51882OEM

b)winnt.sif with the OEM Dell XP Pro license on the sticker


Thanks in advance for your help.

Edited by rdomp, 05 March 2011 - 01:29 AM.


#10 Holmes.Sherlock

Holmes.Sherlock

    Gold Member

  • Team Reboot
  • 1,349 posts
  • Location:India
  •  
    India

Posted 05 March 2011 - 08:25 AM

What is this particular line doing?

write (99) [FiraDisk]\nStartOptions=cdrom,vmem=find:/[i]winsetup.iso[/i];floppy,vmem=find:/[i]iastor.img[/i];\n\0



#11 karyonix

karyonix

    Frequent Member

  • Advanced user
  • 434 posts
  •  
    Thailand

Posted 05 March 2011 - 08:59 AM

The command write FiraDisk parameter to a small RAM drive.

When FiraDisk runs it read the parameter and create virtual drives from files as specified.

cdrom,vmem=find:/winsetup.iso
Create a virtual CD-ROM drive from file \winsetup.iso. Search for the file in all mounted volumes.

floppy,vmem=find:/iastor.img
Create a virtual floppy disk drive from file \iastor.img. Search for the file in all mounted volumes.

#12 MrChucong™

MrChucong™

    Member

  • Members
  • 59 posts
  • Location:Small City
  • Interests:Life Or Death
  •  
    Vietnam

Posted 05 March 2011 - 01:52 PM

Thank for ..U :whistling:

#13 steve6375

steve6375

    Platinum Member

  • Developer
  • 5,001 posts
  • Location:UK
  • Interests:computers (!), programming (masm,vb6,C,vbs), OSes, photography,TV,films,guitars
  •  
    United Kingdom

Posted 05 March 2011 - 08:05 PM

The command write FiraDisk parameter to a small RAM drive.

When FiraDisk runs it read the parameter and create virtual drives from files as specified.

cdrom,vmem=find:/winsetup.iso
Create a virtual CD-ROM drive from file \winsetup.iso. Search for the file in all mounted volumes.

floppy,vmem=find:/iastor.img
Create a virtual floppy disk drive from file \iastor.img. Search for the file in all mounted volumes.


Can you explain how FiraDisk finds and reads the parameters? Does it just scan memory for the [firadisk] string or can it obtain it more directly somehow? If it scans memory which area does it know to scan? Olaf Lagerkvist is interested in using the same technique for ImDisk.

#14 karyonix

karyonix

    Frequent Member

  • Advanced user
  • 434 posts
  •  
    Thailand

Posted 05 March 2011 - 10:39 PM

It read interrupt vector table, get address of INT13 handler, verify that it is GRUB4DOS and read GRUB4DOS' drive map table.

From_drive is the virtual drive. To_drive is the real media for the virtual drive. If To_drive==0xff and bit14 of to_cylinder==0, then the mapping is for --mem.

If a RAM drive is small and begins with [FiraDisk], it is recognized as parameter block.

#15 steve6375

steve6375

    Platinum Member

  • Developer
  • 5,001 posts
  • Location:UK
  • Interests:computers (!), programming (masm,vb6,C,vbs), OSes, photography,TV,films,guitars
  •  
    United Kingdom

Posted 06 March 2011 - 08:33 AM

Thanks for the reply -

It read interrupt vector table, get address of INT13 handler, verify that it is GRUB4DOS and read GRUB4DOS' drive map table.

How do you do this in protected mode OS like WinPE v2 and in code - what APIs do you use or registry values do you look at?

#16 karyonix

karyonix

    Frequent Member

  • Advanced user
  • 434 posts
  •  
    Thailand

Posted 06 March 2011 - 05:38 PM

Physical address of real mode interrupt vector table is 0.
Int13 handler pointer is at 0x4C. The pointer is consist of 2-byte offset and 2-byte segment.
Absolute physical address = (segment<<4)+offset.
GRUB4DOS int13 handler must be in conventional memory (physical address below 640KiB).

Use MmMapIoSpace to create virtual address for physical address.
Read data by using virtual address returned by MmMapIoSpace.
When finished, call MmUnmapIoSpace.

#17 rdomp

rdomp

    Newbie

  • Members
  • 11 posts
  •  
    Antarctica

Posted 06 March 2011 - 07:08 PM

Hi Karyonix,

any idea why I get "Error 25: Disk Read Error" after choosing option "Setup Windows from ISO to HDD Step 1 : Boot from ISO, with virtual CD+Floppy" from the menu" ?

Thanks in advance for your help.

Cheers,

#18 ndog37

ndog37

    Member

  • Members
  • 46 posts
  • Location:Christchurch
  • Interests:PXE booting
  •  
    New Zealand

Posted 27 April 2011 - 08:46 PM

Just wondering can this be done with pxelinux as well?

something like

kernel memdisk

append raw floppy firadisk.ima

append raw iso xpsetup.iso

?

Thanks

#19 Sha0

Sha0

    WinVBlock Dev

  • Developer
  • 1,671 posts
  • Location:reboot.pro Forums
  • Interests:Booting
  •  
    Canada

Posted 27 April 2011 - 10:34 PM

Just wondering can this be done with pxelinux as well?

something like

kernel memdisk

append raw floppy firadisk.ima

append raw iso xpsetup.iso

?

Not quite. Yes, Firadisk supports MEMDISK. No, you cannot invoke two MEMDISKs from PXELINUX. Instead, you'd have to do a dual MEMDISK setup, where the .ISO image coming over PXELINUX would itself then boot an inner MEMDISK for the virtual floppy, then that floppy would have to chain back out to the virtual CD (.ISO). This is possible, if you re-master the Windows installation .ISO to use ISOLINUX.

#20 ndog37

ndog37

    Member

  • Members
  • 46 posts
  • Location:Christchurch
  • Interests:PXE booting
  •  
    New Zealand

Posted 28 April 2011 - 03:48 AM

I did follow the conversations with liuzhaoyzz regarding his problems and the success he finally had. But I did not understand how he got the inner floppy disk integrated in the first place.

Are you able to point me to any good forum or advice how to do that?

PS - I have used nlite and ryanvm integrator, ryanvm packs etc extensively, driverpacks base unattended windows xp setup but up to now do not know about booting inner floppy disk, loading iso.

Do you mean

pxelinux.0 -> memdisk + floppy.ima

floppy.ima has syslinux installed on its mbr, which has a menu which points at ISO?

#21 Sha0

Sha0

    WinVBlock Dev

  • Developer
  • 1,671 posts
  • Location:reboot.pro Forums
  • Interests:Booting
  •  
    Canada

Posted 28 April 2011 - 12:56 PM

Do you mean

pxelinux.0 -> memdisk + floppy.ima

floppy.ima has syslinux installed on its mbr, which has a menu which points at ISO?

Nope.

I'd advise creating a FAT12 Syslinux floppy image (NDOG37.VFD) with the following contents:
  • /LDLINUX.SYS (this is produced by installing SYSLINUX to the image)
  • /SYSLINUX.CFG
  • /CHAIN.C32
  • /SETUPLDR.BIN
  • /WhateverDriverFilesYouNeed
With this SYSLINUX.CFG:

DEFAULT win_setup

LABEL win_setup

  COM32 chain.c32

  APPEND hd96 cmldr=setupldr.bin

This re-master your Windows .ISO to use ISOLINUX (see Syslinux' doc/isolinux.txt), including:
  • /I386/ (other Windows .ISO contents, etc.)
  • /ISOLINUX/
  • /ISOLINUX/ISOLINUX.BIN
  • /ISOLINUX/BOOT.CAT (produced by mkisofs)
  • /ISOLINUX/ISOLINUX.CFG
  • /ISOLINUX/MEMDISK
  • /ISOLINUX/NDOG37.VFD
With this ISOLINUX.CFG:

DEFAULT ndog37

LABEL ndog37

  KERNEL MEMDISK

  INITRD NDOG37.VFD


So you could then do: PXE -> PXELINUX -> MEMDISK + WIN.ISO -> ISOLINUX -> MEMDISK + NDOG37.VFD -> SYSLINUX -> CHAIN.C32 -> Drive 0xE0 (WIN.ISO) + SETUPLDR.BIN

Yay.

#22 Osmuni

Osmuni
  • Members
  • 1 posts
  •  
    Argentina

Posted 12 November 2011 - 01:20 AM

I want to integrate the Firadisk drivers into the XP ISO so I can avoid the use of the Firadisk F6 floppy.

I have tried modifying dosnet.inf, txtsetup.sif, placing firadisk.sys and firadisk.sy_ in I386 folder, etc., I read tutorials about adding textmode SATA drivers manually and used them as examples, but always get a BSOD after the first step of text mode install. If I remove all the modifications I did, install works with no problems.

Will anyone be so kind as to post instructions as to how to manually integrate the firadisk driver into an XP ISO, so we can boot from the ISO file to install without using a mounted Firadisk F6 floppy. Thanks.

#23 steve6375

steve6375

    Platinum Member

  • Developer
  • 5,001 posts
  • Location:UK
  • Interests:computers (!), programming (masm,vb6,C,vbs), OSes, photography,TV,films,guitars
  •  
    United Kingdom

Posted 12 November 2011 - 08:45 AM

Is this of any

I want to integrate the Firadisk drivers into the XP ISO so I can avoid the use of the Firadisk F6 floppy.

I have tried modifying dosnet.inf, txtsetup.sif, placing firadisk.sys and firadisk.sy_ in I386 folder, etc., I read tutorials about adding textmode SATA drivers manually and used them as examples, but always get a BSOD after the first step of text mode install. If I remove all the modifications I did, install works with no problems.

Will anyone be so kind as to post instructions as to how to manually integrate the firadisk driver into an XP ISO, so we can boot from the ISO file to install without using a mounted Firadisk F6 floppy. Thanks.



is this of any use http://www.rmprepusb...-xp-from-an-iso

#24 ndog37

ndog37

    Member

  • Members
  • 46 posts
  • Location:Christchurch
  • Interests:PXE booting
  •  
    New Zealand

Posted 15 November 2011 - 09:52 AM

Hi osmuni. Let us know if you have any luck. I have given up installing iso from pxelinux/grub from single iso with integrated/winvblock driver. I find it much easier to make syspreped wim file, deploy in PE environment with imagex, run fixhdc.cmd to integrate mass storage, inject drivers with infsniff and install drivers in mini setup with driverforge. Of course this only runs as installed to raw hard disk partition or if I want to run as VHD I install into vboot VHD file. Much faster as well where a total install for xp takes roughly 8-12 minutes including drivers.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users