none
Network Boot diskless Windows 7 Embedded in RAM

    General discussion

  • Hi

    I was wondering if there is an official way of booting Windows 7 (embedded) diskless?

    I mean not WinPE, but kind of like XPE was done with SDI, but from inside a wim.

    I can do this by including 3 drivers to boot start and toggling WinPE in BCD (and adjusting a bunch of registry entries).

    But this is not a very nice approach, so I was hoping for a better and hopefully documented way to do this.

    It will of course be restricted in size to half a gig for the wim, roughly 1,5 Gb uncompressed. But still, not a big problem with this new tool..

    Joakim
    Sunday, December 13, 2009 11:14 PM

All replies

  • Have no one really experimented with this?

    It is interesting to see how simple it actually is.... I was hoping for a discussion on how to extend this - if there exist any use for it..

    The size restriction for the wim, could be "worked around" by splitting the image from a "core". But then again, if there exist no real usage for it, it makes no sense to bother with.

    Joakim
    Tuesday, December 15, 2009 8:45 AM
  • Since no explanation has been posted, I might as well post what is necessary to boot from inside a wim for non-PE.

    Include 3 drivers;
    fbwf.sys
    ramdisk.sys
    wimfsf.sys

    Merge this into your target SYSTEM hive, mounted as sys;
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\Control]
    "SystemBootDevice"="ramdisk(0)"
    
    [HKEY_LOCAL_MACHINE\sys\MountedDevices]
    "\\DosDevices\\C:"=hex:fc,57,b2,d9,4e,68,cb,4d,ab,79,03,cf,a2,f6,b7,50
    
    [HKEY_LOCAL_MACHINE\sys\Setup]
    "SystemPartition"="\\Device\\Ramdisk{d9b257fc-684e-4dcb-ab79-03cfa2f6b750}"
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\FBWF]
    "DisplayName"="fbwf"
    "Group"="FSFilter System Recovery"
    "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
      52,00,49,00,56,00,45,00,52,00,53,00,5c,00,66,00,62,00,77,00,66,00,2e,00,73,\
      00,79,00,73,00,00,00
    "Description"="File Based Write Filter Driver"
    "ErrorControl"=dword:00000001
    "Start"=dword:00000000
    "Tag"=dword:00000005
    "Type"=dword:00000002
    "DependOnService"=hex(7):66,00,6c,00,74,00,6d,00,67,00,72,00,00,00,00,00
    "WinPECacheThreshold"=dword:00000200
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\FBWF\Instances]
    "DefaultInstance"="Fbwf Instance"
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\FBWF\Instances\Fbwf Instance]
    "Altitude"="226000"
    "Flags"=dword:00000000
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\FltMgr]
    "AttachWhenLoaded"=dword:00000001
    "DisplayName"="@%SystemRoot%\\system32\\drivers\\fltmgr.sys,-10001"
    "Group"="FSFilter Infrastructure"
    "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\
      72,00,69,00,76,00,65,00,72,00,73,00,5c,00,66,00,6c,00,74,00,6d,00,67,00,72,\
      00,2e,00,73,00,79,00,73,00,00,00
    "Description"="@%SystemRoot%\\system32\\drivers\\fltmgr.sys,-10000"
    "ErrorControl"=dword:00000003
    "Start"=dword:00000000
    "Tag"=dword:00000001
    "Type"=dword:00000002
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\Ramdisk]
    "DisplayName"="Windows RAM Disk Driver"
    "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
      52,00,49,00,56,00,45,00,52,00,53,00,5c,00,72,00,61,00,6d,00,64,00,69,00,73,\
      00,6b,00,2e,00,73,00,79,00,73,00,00,00
    "ErrorControl"=dword:00000001
    "Start"=dword:00000000
    "Type"=dword:00000001
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\Ramdisk\Debug]
    "DebugComponents"=dword:7fffffff
    "DebugLevel"=dword:00000005
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\WimFsf]
    "DisplayName"="Windows Imaging File System Filter Driver"
    "Group"="FSFilter Compression"
    "ErrorControl"=dword:00000001
    "Start"=dword:00000000
    "Type"=dword:00000002
    "DependOnService"=hex(7):46,00,6c,00,74,00,4d,00,67,00,72,00,00,00,00,00
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\WimFsf\Instances]
    "DefaultInstance"="Wimfsf Instance"
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\WimFsf\Instances\Wimfsf Instance]
    "Altitude"="161000"
    "Flags"=dword:00000000
    
    [HKEY_LOCAL_MACHINE\sys\ControlSet001\services\WimFsf\Parameters]
    
    The "WinPECacheThreshold" can be adjusted according to supported values. Btw, it is possible to set the value to 400 (1 Gb), but you cannot use that much... Any explanation?

    Notice the key under  MountedDevices. It is used to override the default (X:)as set by /minint and winpe. I would still like an explanation for why it is necessary to set winpe on, although the system inside the wim is not a PE.

    Joakim
    Sunday, December 20, 2009 7:40 AM
  • You can try "OS streaming" to boot (diskless) computers under Windows desktop OS (XP to Win7).
    Try :
    - HP Image Manager
    https://h20392.www2.hp.com/portal/swdepot/displayProductInfo.do?productNumber=IMTRIAL

    - Citrix Provisioning Services  (google search for this product)

    - Double Take Flex   (google search for this product)

    and also, the free/open source way (with no shared disks, no administration console, no "image builder", no helper for DHCP/PXE configuration):
    gPXE+iSCSI
    http://www.etherboot.org/wiki/sanboot/winnt_iscsi
    http://erwan.l.free.fr/iscsi/body.html

    HTH
    Monday, December 21, 2009 5:35 PM
  • I was primarily investigating "inram" solutions, but iSCSI-alike solutions are also interesting.

    Thanks anyway.

    Joakim
    Tuesday, December 22, 2009 11:04 AM
  • im-ram boot:

    Basically, prior tyo actually booting, you create a RAM-Disk, provision it with a "real" and complete disk image and then fire the boot process by invoking whater boot loader is in the RAM disk (MBR + bootmgr for instance).

    Cons: you need a huge amount of RAM since you have to have the complete disk (even free space!) in RAM. The time to provision the RAM disk can be somewhat long and it will use a lot of Network bandwidth. Typical embedded disk sizes are above 1GB in the Windows world (except the CE family). Restricted to embedded OSes with small footprint. Updating the source disk can by painful.

    Pro: It is resilient to network failure AFTER the system has provisioned the ram-disk. IN-Ram access is very fast. It is usually possible to share a unique "disk source" for several clients at the same time. No modifications can be done by a common user to the system configuration: when rebooted, the configuration is restored to its state as defined by the source disk.

     

    OS/Disk streaming ("iSCSI-alike"):

    Basically you begin by PXE-booting or network booting, getting and launching a small "remote virtual disk client" that connects to a remote virtual disk which is hosted on a server. This remote virtual disk client can act to provide BIOS-level access to the remote virtual disk, and is used to load and launch the boot sector (MBR) on the remote disk. When run, the boot sector invokes whatever bootlader stands on teh remote disk (bootmgr for instance). When the OS loads and does not (cannot) use BIOS-level disk access, a remote virtual disk driver takes over and provide disk access to the OS.

    Cons: it is not resilient to network failure: The network/server have to be available for this to work. It requires a LAN-type network connection

    Pro: The size of the remote disk does not have any impact on teh performances of the client: Since the remote virtual disk is a disk to the OS, the OS reads sectors on it on demand and does not need to load the complete disk sectors in RAM (hopefully, because typical disk sizes are above 15GB). A client usually reads between 60MB and 200MB to bott a complete Windows (XP, 7...) OS. The remote virtual disk can usually be shared by several client at the same time: the system is made to adapt "unique IDs" such as computer name, domain credentials etc; Then there is only one "disk" to manage for as many clients as desired (deployment is not even needed).

    Updating the reference remote disk is made very easily: Set the disk to be shared as "writable" by a single client, boot a client off it, make the modifications, shutdown the client, share the updated disk.

    The system also has a way to prevent  users/clients from writing directly in the remote disk, thus actually acting as a write-filter.

    Check articles on "OS Streaming" for more details, and this article:

    http://en.wikipedia.org/wiki/Diskless_node

     

    Wednesday, July 07, 2010 12:15 PM
  • XPe/WES2009 support booting into RAM or network boot.  I believe image size was a reason why network boot feature was not supported in WES7.

    Network install is supported, but this is to install on to media. You would have to find a work around to make this idea work.

    -Sean

     


    www.sjjmicro.com / www.seanliming.com, Book Author - XP Embedded Advanced, XPe Supplemental Toolkit, WEPOS / POS for .NET Step-by-Step
    Wednesday, July 07, 2010 3:21 PM
  • I need a SOFTWEAR for this Please.

    Please make it with NO adminrights.

    I need this for my PC

    Tuesday, February 26, 2013 2:40 AM