Jump to content











Photo
- - - - -

Boot Mini Windows VHD from Network via iPXE

vhd ipxe network minixp mini7 mini8

  • Please log in to reply
68 replies to this topic

#26 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 3041 posts
  • Location:Nantes - France
  •  
    France

Posted 31 January 2014 - 06:27 PM

In the case where you clone an image, I believe you always need to ensure that both the network storage driver (aoe or iscsi) is set to start=0, as well as the nic driver.

 

CCboot, amongst other things, does that for sure.

This could explain why it did the trick for you for your iscsi/win7 image.

 

But in the case of AOE, this is not enough (start=0 for network and aoe driver).

I will test try to understand all modifications made by the CCBoot client and test them one by one.

 

/Erwan

 

Edit:

So far CCBoot seems to install the following components:

-ccache driver (which is not needed in the AOE procedure you pointed to)

-ccboootpnp driver (CCBootPnP.sys)

-ccbootnic driver (CCBootNIC.sys)

-ms iscsiboot (which also includes ms mpio)

-sanbootconf



#27 wimb

wimb

    Platinum Member

  • Developer
  • 3756 posts
  • Interests:Boot and Install from USB
  •  
    Netherlands

Posted 01 February 2014 - 07:28 AM

-Are you using proxydhcp or dhcp only in Tiny PXE Server? if dhcp only, then beware that most probably your booting AOE O.S will get its ip config from Tiny PXE Server (hence the need to set the dns, gateway, etc...)

 

 

Using ProxyDhcp checkbox works OK for me to get Internet working !!

Internet and Network are working now OK in PXE booting of Win7 x32 VHD as iSCSI disk on Win8x64 Server.

 

iSCSI-7x32.png

 

In Win7 x32 VHD the iscsi and nic driver were set to Start=0 but that is not working.

In case of Win7 and iSCSI then Install of CCBoot client in VHD is really needed to get iSCSI of Win7 working.

I think iscsiboot.sys driver of CCBoot is needed for booting and then msiscsi.sys is used to Install the Microsoft iSCSI Initiator as Storage Controller.

You see that New Hardware is being installed and Install of the Storage Controller is asking for Reboot.

 

In case of Win8 then iSCSI is working out of the box and no changes are needed.

 

Thanks Erwan :)



#28 wimb

wimb

    Platinum Member

  • Developer
  • 3756 posts
  • Interests:Boot and Install from USB
  •  
    Netherlands

Posted 24 February 2014 - 07:55 AM

PXE wimboot is very handy and fast for booting of Win8.1SE boot.wim from Network. :)
 
How to make Win8.1SE boot.wim
 
Using iPXE and wimboot, you can boot into Windows PE via HTTP.
 
In case of Windows 8 then bootmgr.exe must be used instead of bootmgr
 
More Info on how to use Tiny PXE Server for booting WIM and VHD from Network via iPXE
I copied folders Boot and sources from Win8.1SE_2014-01-30\ISO\WIM folder to pxesrv\files folder 
and added file bootmgr.exe to pxesrv\files folder
 
Entry in menu.ipxe for PXE wimboot of Win8.1SE boot.wim file
:w81x64_wim
kernel ${boot-url}/wimboot
initrd ${boot-url}/bootmgr.exe                  bootmgr.exe
initrd ${boot-url}/Boot/bcd                     bcd
initrd ${boot-url}/Boot/fonts/segmono_boot.ttf  segmono_boot.ttf
initrd ${boot-url}/Boot/fonts/segoe_slboot.ttf  segoe_slboot.ttf
initrd ${boot-url}/Boot/fonts/segoen_slboot.ttf segoen_slboot.ttf
initrd ${boot-url}/Boot/fonts/wgl4_boot.ttf     wgl4_boot.ttf
initrd ${boot-url}/Boot/boot.sdi                boot.sdi
initrd ${boot-url}/sources/boot.wim             boot.wim
imgstat
boot || goto failed
goto start
F12 hotkey can be used for PXE boot when LAN PXE Boot ROM is enabled in BIOS
F8 hotkey can be used to select PXE boot in BIOS Boot Menu
 
PXESRV.png ==> W81SE_PXE_I5.png  W81SE_PXE.png
 
:cheers:


#29 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 3041 posts
  • Location:Nantes - France
  •  
    France

Posted 24 February 2014 - 12:01 PM

Hi Wimb,

 

Thanks for sharing.

 

When booting WIM over the network, it would be interesting which of the 3 below methods is the fastest on HTTP :

 

-wimboot

-memdisk

-sanboot

 

Regards,

Erwan



#30 wimb

wimb

    Platinum Member

  • Developer
  • 3756 posts
  • Interests:Boot and Install from USB
  •  
    Netherlands

Posted 24 February 2014 - 02:06 PM

When booting WIM over the network, it would be interesting which of the 3 below methods is the fastest on HTTP :

 

 

Hi Erwan,
 
I measured the time from iPXE Menu until Desktop appears and the winner is wimboot :)
 
boot.wim - wimboot - 35 sec
w81x64.iso - memdisk - 45 sec
w81x64.iso - sanboot - 135 sec
 
In case of sanboot then the initial wait of 30 sec and the time to load the RAMDISK of 80 sec take most of the time ....
 
:cheers:


#31 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 3041 posts
  • Location:Nantes - France
  •  
    France

Posted 24 February 2014 - 02:24 PM

I would have wrongly (by far obviously !) bet on sanboot :)

 

Thanks for testing this : I will now stick to wimboot then when booting my winpe !

 

Cheers,

Erwan



#32 tinoy69

tinoy69

    Member

  • Members
  • 30 posts
  •  
    Philippines

Posted 15 July 2014 - 09:24 AM

I have been successfully able to boot windows 7 through aoe and here are the steps i've made...

 

install winows 7 (make sure to only 1 partition, else will not boot if there is more than 1)

install drivers

set uac, system restore to off

testsign (bcdedit -set TESTSIGNING ON, bcdedit -set loaoptions DDISABLE_INTEGRITY_CHECKS)

reboot

install aoe driver as storage controller

->enable iscsi ->control panel->administrative tools->iscsi initiator->(do you want to enable? yes)

regedt32 goto to HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES

set boot start to 0

aoe, ndis, iscsiprt, tcpip, [lan card hive]

->this is the most important step to boot the image

->disable the LWF driver

->goto this how to

->http://blog.zorinaq.com/?e=41

reboot

image the partition using your favorite tool

mount the image using vblade and viola!

 

hope this helps

(other parts of this post was taken from http://windowsdiskle...wordpress.com/)


Edited by tinoy69, 15 July 2014 - 09:30 AM.


#33 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 3041 posts
  • Location:Nantes - France
  •  
    France

Posted 15 July 2014 - 11:59 AM

Hi Tinoy69,

 

Your last link is not working (one charater too much).

 

Regarding AOE, are you sure iscsi initiator is a prerequisite?

AOE is many times confused with ISCSI when these are 2 different protocols.

 

As a whole, booting thru iSCSI has always worked out of the box for me whereas AOE (since Windows 7) as always proven difficult.

Some other posts mentionned that the ccboot client was a prerequisite (and indeed I could witness it) but never understood why.

 

The LWF part is interesting and that might be the missing bit in my previous attempts.

Although, the article is about iSCSI and I never needed to disable LWF in the past with iSCSI boot.

 

Just like Iscsi, I would like to

1-install Win7 (to one unique partition/drive),

[-disable the firewall : not needed here as AOE=ethernet, not IP,]

2-install AOE driver,

3-set the right services (ndis, netword card, aoe) to start=0 / tcpip probably does not need start=0 here (AOE=ethernet)

4-clone (offline thru winpe)

5-network boot.

 

At least this is how I did in the past with XP+AOE.

No other steps should ideally be needed although Win7 seems to introduce some extra (unknown to me) bits there.

 

See here for a working Win7+AOE using CCboot "magic" (i.e I dont know what it does).

 

Regards,

Erwan



#34 tinoy69

tinoy69

    Member

  • Members
  • 30 posts
  •  
    Philippines

Posted 15 July 2014 - 07:04 PM

sorry about the link erwan, yes, too much "."

 

about the iscsi initiator, in my default windows install, the iscsi service is not enabled by default

since i do connect a gamedisk using iscsi, i enable it just to have the iscsi service ready

yes, it might not be a prerequisite, havent booted aoe using a disabled iscsiprt service...

 

ccboot is just an automation of the boot start thingy...because it automatically installs sanbootconf

or you can do with downloading and installing only the sanbootconf (which is safer to manually editing the registry)

 

the lwf driver (lightweight filter) is the most important step, i haven't made windows 7 to boot with aoe without this step...

 

hope this helps


Edited by tinoy69, 15 July 2014 - 07:04 PM.


#35 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 3041 posts
  • Location:Nantes - France
  •  
    France

Posted 15 July 2014 - 08:01 PM

sorry about the link erwan, yes, too much "."

 

about the iscsi initiator, in my default windows install, the iscsi service is not enabled by default

since i do connect a gamedisk using iscsi, i enable it just to have the iscsi service ready

yes, it might not be a prerequisite, havent booted aoe using a disabled iscsiprt service...

 

ccboot is just an automation of the boot start thingy...because it automatically installs sanbootconf

or you can do with downloading and installing only the sanbootconf (which is safer to manually editing the registry)

 

the lwf driver (lightweight filter) is the most important step, i haven't made windows 7 to boot with aoe without this step...

 

hope this helps

 

I'll give it a try to the LWF disabling part.

Sounds like an interesting thread to follow indeed : thanks for that !



#36 tinoy69

tinoy69

    Member

  • Members
  • 30 posts
  •  
    Philippines

Posted 16 July 2014 - 03:08 PM

I'll give it a try to the LWF disabling part.

Sounds like an interesting thread to follow indeed : thanks for that !

 

okay, let me know if it works...



#37 Ankur.k1991

Ankur.k1991

    Member

  • Members
  • 58 posts
  •  
    India

Posted 09 September 2014 - 11:18 AM

Please give me step by step detail or video link

pxe boot vhd


  • wimb likes this

#38 wimb

wimb

    Platinum Member

  • Developer
  • 3756 posts
  • Interests:Boot and Install from USB
  •  
    Netherlands

Posted 09 September 2014 - 11:31 AM

Best and by far the most easy solution is PXE wimboot:

 

PXE wimboot is very handy and fast for booting of Win8.1SE boot.wim from Network. :)

 

http://reboot.pro/to...e-2#entry182393

http://reboot.pro/to...e-3#entry184053

 

PXE of VHD requires special drivers and additional software (so it is more complicated)

 

http://reboot.pro/to...twork-via-ipxe/

 

:cheers:



#39 amiranda

amiranda
  • Members
  • 3 posts
  •  
    Philippines

Posted 22 September 2014 - 03:14 AM

Hi Guys,

 

I'm really interested in this technology and I already tried this in my computer shop (though since this requires more HDD space from server, I stop for now). I would just like to ask if you already talked about changing the AOE initiator to have a write cache, I mean the write will be stored in the client machine and then those writes will then be retrieved from there. With this, the target file (and only single file is needed) will always be fresh and we will save bandwidth since most writes will not go to the server and reading the same write also needs to be retrieved locally. 

 

I'm trying to make this using WinDDK but I'm just starting to learn this since I'm a Java programmer. This will be a big help with Computer shop or companies rely on network images only and put their document somewhere else. 

 

Regards



#40 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 3041 posts
  • Location:Nantes - France
  •  
    France

Posted 22 September 2014 - 03:29 PM

Hi Guys,

 

I'm really interested in this technology and I already tried this in my computer shop (though since this requires more HDD space from server, I stop for now). I would just like to ask if you already talked about changing the AOE initiator to have a write cache, I mean the write will be stored in the client machine and then those writes will then be retrieved from there. With this, the target file (and only single file is needed) will always be fresh and we will save bandwidth since most writes will not go to the server and reading the same write also needs to be retrieved locally. 

 

I'm trying to make this using WinDDK but I'm just starting to learn this since I'm a Java programmer. This will be a big help with Computer shop or companies rely on network images only and put their document somewhere else. 

 

Regards

 

Hi Amiranda,

 

Just to be sure I get : do you mean a file based write filter "protecting" your image or a differential disk ?

 

Regards,

Erwan


  • amiranda likes this

#41 sixcentgeorge

sixcentgeorge

    Frequent Member

  • Advanced user
  • 191 posts
  •  
    France

Posted 22 September 2014 - 04:24 PM

may be this server is the best on earth : http://tftpd32.jounin.net/

 

opensource IPv6 ready application which includes DHCP, TFTP, DNS, SNTP and Syslog servers as well as a TFTP client.

it exists in 32 or 64 bit with source available .

 

i used years ago with something made by M$ with a pc having nt4 installed and hosting 90% of win95 files for clients having an isa network card .

it was well working ;'] but never updated...



#42 erwan.l

erwan.l

    Platinum Member

  • Developer
  • 3041 posts
  • Location:Nantes - France
  •  
    France

Posted 22 September 2014 - 05:26 PM

may be this server is the best on earth : http://tftpd32.jounin.net/

 

opensource IPv6 ready application which includes DHCP, TFTP, DNS, SNTP and Syslog servers as well as a TFTP client.

it exists in 32 or 64 bit with source available .

 

i used years ago with something made by M$ with a pc having nt4 installed and hosting 90% of win95 files for clients having an isa network card .

it was well working ;'] but never updated...

 

 

Well then allow me to do some free marketing : Tiny PXE Server .

 

It does DHCP, PROXYDHCP, BINL, TFTP, DNS, HTTP, SMP, user-class filtering (for IPXE/GPXE), vendor-class filtering (for UEFI booting).

 

I also use it for years and it is very regurlarly updated.

 

And the author is pretty cool  B)

 

Shall I say more?



#43 sixcentgeorge

sixcentgeorge

    Frequent Member

  • Advanced user
  • 191 posts
  •  
    France

Posted 22 September 2014 - 06:47 PM

it looks cool , does your tool also comes with the " needed files from syslinux? "

 

i joke a bit ....but that s few month i start to think that os windows or linux should create a frontier between hardware and software [and may try to share same files .] to both have a better evolution and happy customers .

then pc would have a boot / uefi partition , a driver one and others for os 

in the case of booting a generic vhd with windows or a linux squashfs , made for doing a bkup or a virus checking or an os install , then boot would load drivers from the partiton ,


Edited by sixcentgeorge, 22 September 2014 - 06:48 PM.


#44 wimb

wimb

    Platinum Member

  • Developer
  • 3756 posts
  • Interests:Boot and Install from USB
  •  
    Netherlands

Posted 23 September 2014 - 06:56 AM

Well then allow me to do some free marketing : Tiny PXE Server .

 

 

Yes Tiny PXE Server is doing fine, and If I may say more ....

 

Best and by far the most easy solution is PXE wimboot:
 
PXE wimboot is very handy and fast for booting of Win8.1SE boot.wim from Network. :)
 
 
It would be nice if menu entries in files wimboot.ipxe and menu.ipxe for booting boot.wim 
were changed to values needed for Win8.1 e.g. by using bootmgr.exe and fonts as given in above references.
 
:cheers:


#45 sixcentgeorge

sixcentgeorge

    Frequent Member

  • Advanced user
  • 191 posts
  •  
    France

Posted 23 September 2014 - 12:36 PM

have you tested tftpd32-64 ? may be it can handle bigger than 2 Go file-size ?

 

pxe or ipxe generate a lot of network traffic , do the latests release support jumbo packets and cards teaming ?



#46 amiranda

amiranda
  • Members
  • 3 posts
  •  
    Philippines

Posted 24 September 2014 - 02:24 AM

Hi Amiranda,

 

Just to be sure I get : do you mean a file based write filter "protecting" your image or a differential disk ?

 

Regards,

Erwan

 

Thanks for the info. I checked on the technology of EWF and FBWF drive and I think this is the same thing that I wanted to implement just like what you mentioned above. I'm checking on EWF for now but I found that those driver were available only on embedded OS, 

 

On my first step is to checked the EWF (since this is sector based) and check it with WinAOE if those things will work the way I need it to work. But if you have some nice articles on this, please send and will really help me allot especially on Window 7.

 

Regards,

Alex



#47 sixcentgeorge

sixcentgeorge

    Frequent Member

  • Advanced user
  • 191 posts
  •  
    France

Posted 24 September 2014 - 06:46 AM

after reading this : http://msdn.microsof...bedded.60).aspx

the filter seems to need a real hd and all writtings are done in memory...

 

how much memory has your computer ?

 

in order to get "same" results as you seem to want , i would do like this :

first have a computer with 16 Go or ram or more

 

then do an install of win7 in a vhd of 40-60 Go

 

update...then remove as much files as you can....plus set disks shares

 

then under an other windows you mount the vhd , defrag it and then reduce its size ....my current result is 6656 Mo : the os plus 400-500 Mo of free space , win7 x64 is able to run with 4 G0 so free space can be higher . my pc is file server so i prefer file cache aka smartdrv to eat memory

 

then you can lzma the vhd if you load it using grub4dos in ram ....[ that should be possible from the network to , never tried ..]

 

them all changes of the windows are in memory and you have a fresh wiwi at each boot

good luck


Edited by sixcentgeorge, 24 September 2014 - 06:49 AM.


#48 amiranda

amiranda
  • Members
  • 3 posts
  •  
    Philippines

Posted 24 September 2014 - 07:11 AM



after reading this : http://msdn.microsof...bedded.60).aspx
the filter seems to need a real hd and all writtings are done in memory...

how much memory has your computer ?

in order to get "same" results as you seem to want , i would do like this :
first have a computer with 16 Go or ram or more

then do an install of win7 in a vhd of 40-60 Go

update...then remove as much files as you can....plus set disks shares

then under an other windows you mount the vhd , defrag it and then reduce its size ....my current result is 6656 Mo : the os plus 400-500 Mo of free space , win7 x64 is able to run with 4 G0 so free space can be higher . my pc is file server so i prefer file cache aka smartdrv to eat memory

then you can lzma the vhd if you load it using grub4dos in ram ....[ that should be possible from the network to , never tried ..]

them all changes of the windows are in memory and you have a fresh wiwi at each boot
good luck

That will be a huge requirement and may not be feasible for Computer Shops. I tried testing Dokan (JDokan since I'm more on Java), the result was good if I do copy on write but that will be a server based and it almost eats up 1G per client machine. Of course not good for 20 units or more. That is why I'm looking into patching winaoe driver (from winaoe.org). I think EWF is promising since this is Sector based cache and also from client side, but I wonder if this is fine with both winaoe and ewf both on client. I tried putting up this code for winaoe but haven't tested it yet. I will share it here, maybe a C++ programmer can verify if this will work (I'm new in C++). I'm planning to call the code before AoeRequest Read and Write. I think this is same with EWF as sector based cache. If this was Java, then I think I can easily do this.


#include <cstring>
#include <iostream>
#include <stdio.h>
#include <stdbool.h>

using namespace std;

static int count = 0;
static int SECTORSIZE = 512;

enum WRITE_CONTENTS {
ALL_WRITE,
CONTAINS_WRITE,
NO_WRITE
};

struct _CACHE {
long offset;
char data[];
} *SectorCache;

WRITE_CONTENTS checkCachWrite(long startSector, long sectorCount) {
bool hasWrites = false;
bool hasNoWrites = false;
long myOffset = startSector;
for (int i=0; i<sectorCount; i++) {
myOffset += SECTORSIZE*i;
_CACHE b = getCacheFromSector(myOffset);
if (b != NULL) {
hasWrites = true;
}
else if (b == NULL) {
hasNoWrites = true;
}
}
if (hasWrites && hasNoWrites) {
return CONTAINS_WRITE;
}
else if (hasWrites) {
return ALL_WRITE;
}
else {
return NO_WRITE;
}
}

//call this on CONTAINS_WRITE and ALL_WRITE only
char *getData(long startSector, long sectorCount, PUCHAR buffer, _CACHE cacheType) {
char *data;
if (cacheType != NO_WRITE) {
long myOffset = startSector;
for (int i=0; i<sectorCount; i++) {
myOffset += SECTORSIZE*i;
_CACHE b = getCacheFromSector(myOffset);
if (b == NULL) {
b = new _CACHE();
SectorCache[count++] = b;
b.offset = myOffset;
RtlCopyMemory(b.data, &buffer[myOffset], SECTORSIZE);
}
strncat(data, b.data, sizeof(b.data));
}
}
return data;
}

void putData(long startSector, long sectorCount, PUCHAR buffer) {
long myOffset = startSector;
for (int i=0; i<sectorCount; i++) {
myOffset += SECTORSIZE*i;
_CACHE b = getCacheFromSector(myOffset);
if (b == NULL) {
b = new _CACHE();
SectorCache[count++] = b;
b.offset = myOffset;
}
RtlCopyMemory(b.data, &buffer[myOffset], SECTORSIZE);
}
}

_CACHE getCacheFromSector(int offset) {
_CACHE b;
for (int i=0; i<count; i++) {
if (SectorCache[i].offset == offset) {
b = SectorCache[i];
break;
}
}
return b;
}

Edited by amiranda, 24 September 2014 - 07:12 AM.


#49 Jacoub

Jacoub
  • Members
  • 1 posts
  •  
    Kuwait

Posted 27 January 2015 - 11:21 AM

greetings everyone

One question, this solution will work on different hardware & different network "Network Binding" or it is hardware independent???

Recently i manged using iSCSI and it is working fine but fails if Network hardware changed!!!

 

Thanks and best regards,

Jacoub  



#50 pazhanii

pazhanii

    Member

  • Members
  • 58 posts
  • Location:India
  •  
    India

Posted 12 February 2015 - 06:20 AM

Sir, I have been booting a vhd with microsoft iscsi, and ipxe. Server side: Server 2008, tftp32, and solerwind tftp.
Client side: xp or win 7, iscsi initator and ipxe. 
 
How to boot in memory?
1st pxe boots and get dhcp address and boot file, grubdos and from there ipxe, sanboot and boots. Where we have to add the memory boot?
 
or after ipxe, we should sanhook and exit?
and try to grub4dos mem option?
 
I create a vhd using vhd create and winvblock menu and copy it on pendrive, boot every client using it. But i want to copy that vhd in iscsi and boot in memory using ipxe and grub4dos.
 
AS i am new to forum, i dont know where to post or send in message. plz let know if it is not right thing to message you
 
One personal question?
Apart from your work, you spend time to create programs, how you are open minded to share your hard work for public? In this forum i have seen many tools for free. Many don't share
This is great for who can't afford to buy, but my heart thanks you a lot.






Also tagged with one or more of these keywords: vhd, ipxe, network, minixp, mini7, mini8

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users