Jump to content











Photo

OS Wire-Walking Guide: Windows Runs in RAM Memory Disk

windows 10 8.1 wimboot ram disk and vhd grub4dos svbus imdisk windows pe diskpart dism bcd bootmgr grldr grldr.mbr menu.lst

  • Please log in to reply
No replies to this topic

#1 bin

bin

    Newbie

  • Members
  • 12 posts
  •  
    United States

Posted 21 February 2020 - 01:55 AM

OS Wire-Walking Guide: Windows Runs in RAM Memory Disk

From newbie to alpha geek without using 3rd party deployment tools

By Bin 02.20.2020

I have long been trying to get this done: putting OS [Windows operation system, hereinafter] into PC RAM memory and run it for power reduction and in flexible situations. For a few times, this task has been half cooked and halted. Something happened recently, with 64 GB desktop for pro work desktop and 32 GB for pro work laptop, plus a break after a long hard project, I decided to take a look at this pending issue again. I shall thank all reboot.pro’s inspiring work to lead me here, which I had summarized in the first part in this special topic. [no worry for that part, mostly, was the failed attempt from a wrong lead.]

 

Schedule is always tight, finally having this long weekend, so to try. The preliminary checks for new computers were no avail: found they are not boot any “non-windows 10” system.[1] But what I need to boot is windows 8.1 [windows 8.1 has all the core features without windows 10’s superimposed mandatory updating]. As a result, the fancy new hardware cannot be used.

 

An old PC has 6 GB of RAM with an Intel i5. The trying of last weekend’s hybrid booting by recent reboot.pro platinum and gold members’ remedies, especially Alacran’s series posts[2] was not a success. In those posters they claimed that they had succeeded in putting a small ~1G pointer (file links) VHD only into RAM while leaving the WimBoot “.WIM” repository on physical disk. It seems to me that method was actually running the copy on the physical disk, I was trying to know whether their VHD file date stamp has been changed? (If running in RAM, the VHD on physical disk should not be changed). Since already being there, done that: Here is a method walk-through: loading the whole Windows 8.1 into the RAM with an extreme restriction: A PC with 6 GB RAM (internal Hard Disk Removed) and a 16 GB USB flash drive: Thus name it WWW: Windows Wire-Walking. Of course, there are some tweaks to be done for this. However, unlike the bells and whistles of other methods with wild third party of software piles. We are going to lead you there almost without any other software tools except those for Microsoft genuine Windows.

 

Hardware

o   Hardware: A Intel i5 6 GB RAM PC/internal HDD removed.

o   A guest PC running Windows 8.1 or later (Windows 8.1 Downloading and initiation)

o   16 GB USBD [USB mass storage drive].

 

Software

o   Windows 8.1 & saved it in the USBD.

o   The small-set files to be used here: [3]

o   GRLDR and GRLDR.MBR

o   SVBus and imDisk

 

Complete Walking Through on Deploying Windows in RAM Disk

 

List of terms:

ACP: Windows Administrator Command Prompt

ETR: Press Enter Key

USBD: USB Flash Drive

G&D: Googling & Downloading

 

1.       Readiness: [in a guest PC]             Steps “a” – “g”

a.       Insert the USBD into a OS and make it OS boot ready.[4] As drive U:\

b.       G&D Windows 8.1 è W8R.ISO. Right click & Mount as V:\

c.       G&D GRUB4DOS. Extracting GRLDR & GRLDR.MBR è U:\ & Create menu.lst è U:\[5]

d.       G&D “SVBus” Extract “Bin” folder è U:\SYS\Software\SVBus

e.       G&D “imDisk” Extract è U:\SYS\Software

f.        Deploy Windows 8.1 OS into USBD.[6]

g.       Creating Windows Boot Manage in U:\[7]

2.       PC/6 GB RAM without Hard Disk & USBD/16 GB [from now on only these two]     Steps “a” – “k”

a.       Make PC Boot from USBD, which is now bootable. The USBD will be C:\ in Windows OS.

b.       Above OS deployment allows skipping the Serial Number[8]& smooth OS installation

c.       OS will automatically finish then perform a few tweaks.[9]

d.       Slimming down and further reduce the size of OS for the current field Windows.[10]

e.       Reboot the system and find out the maximum allow RAM DISK size: 3.24 GB.[11]

f.        Packing Windows 8.1 into “.wim” with help from imDisk[12]& metamorphosis. [13]

g.       Deploy a duplicated Windows 8.1 on USBD as Flat OS.[14]

h.       Create the Boot Structure for W8R.VHD to be able to Boot from RAM as Bootable Disk[15]

i.         Redirecting the WIMBOOT Boot Entry.[16]

j.         Last but not the least, a very important enablement: by Copy all the E:\ROOT contents into C:\ and H:\[17]

k.       All set, the Windows RAM Disk Booting is now ready.

3.       OS Runs both from USBD and from RAM Disk via? GRUB4DOS with SVBus:*

a.       Reboot the machine, the original “Boot From C:\Windows” will boot from USBD.

i.      This copy of OS will serve as the daily operation OS.

ii.      16GB - 3GB+ (W8R.VHD) – 1 GB- (all others) ~ 10 GB free Space.

b.       Here to configure the system for Booting into RAM via GRUB4DOS.*

i.      Boot OS and select “Boot from W8R:VHD” let it run and do some updates.

ii.      Boot OS & highlight “Boot from W8R:VHD” è Press “F8” è “Disable digital signature enforcement”. Now install SVBus with ACP: instx64.exe/instx86.exe*

c.       Windows 8.1 Booted from RAM Disk

i.      Reboot and Select GRUB4DOS from Windows Boot Entry

ii.      In GRUB Booting menu select “Loading W8R.VHD into RAM then Boot Windows 8.1 From Loaded RAM Disk”

iii.      GRUB loads the W8R.VHD into RAM and boot from that disk.

iv.      In the W8R.VHD Windows Boot Menu, highlight “Boot From C:\Windows” then press “F8” to select “Disable Digital Signature Enforcement”

v.      The System should run fine. If failed, use the backup copy in C:\ to debug.

vi.      From here on, W8R.VHD can be compressed into .gzip etc. for fast loading.

 

This completes the process, the USBD is both capable of filed booting: running on USBD and RAM Booting: Running inside Ram Disk (See the appendix pictures to see a PC without hard disk and OS in RAM only.

* Noting: the install SVBus last step will not make it into W8R.WIM, which make W8R.WIM heathier.

 

Thanks for reading.

 

Bin

 

02.20.2020

 

(H.Z.)

 

P.S. At this stage, there is no way for me to share the pictures without losing my context being edited. As a result, this context part is been sending to post first.

 

 

Appendix: Pictures and System Screenshots[18]

 

The following images will be uploaded in the next poster.

 

1)      GRUB4DOS commandline, “DISPLAYMEM” shows a 6 GB PC available continuous memory:
2)      Disk Management Shows a RAM Disk OS after Unplugged USBD, without internal Hard Drive, the OS is residing and running in the RAM only.

3)      “This PC” Properties:

4)      Device Manager

5)      W8R.VHD Properties

6)      On Board C:\ (W8R.VHD)
7)      Windows Explorer Details:

8)      The OS System is healthy and running great.

9)      ImDisk setup in Windows PE Environment (The setup uses a 3GB Ram Disk as example)

 

The end of WWW: Windows Wire Walking


[1] Why Dell’s i5 8th or later Intel computer cannot boot windows 8.1?
any way to make it can? Please share if somebody knows.

[3] Both GRLDR ~ 300 kB and GRLDR.MBR 8kB can be extracted from GRUB4DOS by Googling “GRUB4DOS”
imDisk is a freeware, since only 1 PC + 1USBD are used in this journey, imDisk helps as a transition depository.

SVBus 1.1 is a free where for GRLDR Booting Windows 8.1 VHD into RAM and giving Windows Access.

[4] If not specific, all these operations are under ACP [Windows administrator command prompt.]
For preparing this 16GB USBD (will erase all data):

1)       DISKPART

2)       LIST DISK                [ETR: get disks in a list, e.g. USBD is Disk 1]

3)       SELECT DISK 1

4)       CLEAN

5)       CONVERT MBR

6)       CREATE PART PRIM

7)       FORMAT FS=NTFS QUICK LABEL=W8R

8)       ACTIVE

9)       ASSIGN

10)   EXIT

After these steps, the USBD is a NTFS ready boot flash drive.

[5] Using windows “notepad” and copy the following text then save it as menu.lst at U:\

 

color white/blue black/light-gray white/black white/black

timeout 30

default 0

 

title Boot Field Windows 8.1

root (hd0,0)

chainloader /bootmgr

 

title Loading W8R.VHD into RAM then Boot Windows 8.1 From Loaded RAM Disk

map --top --mem /W8R.VHD (hd)

map --hook

root (hd-1,0)

chainloader /bootmgr

 

title commandline

commandline

title reboot

reboot

title halt

halt

[6] ACP:

1)       DISM /GET-WIMINFO /WIMFILE:V:\SOURCES\INSTALL.WIM      [ETR: Get Pro Edition Index number e.g. 6]

2)       DISM /APPLY-IMAGE /IMAGEFILE: V:\SOURCES\INSTALL.WIM /INDEX:6 /APPLYDIR:U:\

[7] ACP: [The following will need to be run in the batch file, “.bat” or “.cmd” Copy/paste & save to BCDMake.bat & run it under ACP]. The following is the content of BCDMaker.bat

               

@echo off

setlocal

set BCDEDIT=%SYSTEMROOT%\system32\bcdedit.exe

@MD U:\BOOT

set BCDSTORE=U:\BOOT\BCD

@ECHO Ready to run Create U:\BOOT\BCD and ADD Windows Field OS, GRUB4DOS, WinPE entries

@ECHO CTRL+C to break

@pause

%BCDEDIT% /createstore %BCDSTORE%

 

@ECHO Check if no error then proceeding to create Boot Manager Base ENV... (CTRL+C to break)

@Pause

%BCDEDIT% /store %BCDSTORE% /create {bootmgr}

%BCDEDIT% /store %BCDSTORE% /set {bootmgr} description "Boot Manager"

%BCDEDIT% /store %BCDSTORE% /set {bootmgr} device boot

%BCDEDIT% /store %BCDSTORE% /set {bootmgr} timeout 30

 

@ECHO Check is no error proceeding creating Windows Filed OS Entry (CTRL+C to break)

@Pause

for /f "tokens=2 delims={}" %%g in ('%BCDEDIT% /store %BCDSTORE% /create /application osloader') do set guid={%%g}

%BCDEDIT% /store %BCDSTORE% /set %guid% device boot

%BCDEDIT% /store %BCDSTORE% /set %guid% path \Windows\system32\winload.exe

%BCDEDIT% /store %BCDSTORE% /set %guid% osdevice boot

%BCDEDIT% /store %BCDSTORE% /set %guid% systemroot \Windows

%BCDEDIT% /store %BCDSTORE% /set %guid% description "Boot From C:\Windows"

%BCDEDIT% /store %BCDSTORE% /displayorder %guid% /addlast

 

@ECHO Check if no error then proceeding to create GRUB4DOD Entry ... (CTRL+C to break)

@Pause

for /f "tokens=2 delims={}" %%g in ('%BCDEDIT% /store %BCDSTORE% /create /application bootsector') do set guid={%%g}

%BCDEDIT% /store %BCDSTORE% /set %guid% device boot

%BCDEDIT% /store %BCDSTORE% /set %guid% path \grldr.mbr

%BCDEDIT% /store %BCDSTORE% /set %guid% description "Grub4dos"

%BCDEDIT% /store %BCDSTORE% /displayorder %guid% /addlast

 

@ECHO Check if no error then proceeding to create creating WinPE ENV (CTRL+C to break)

@Pause

for /f "tokens=2 delims={}" %%g in ('%BCDEDIT% /store %BCDSTORE% /create /application osloader') do set guid={%%g}

%BCDEDIT% /store %BCDSTORE% /set %guid% systemroot \Windows

%BCDEDIT% /store %BCDSTORE% /set %guid% detecthal Yes

%BCDEDIT% /store %BCDSTORE% /set %guid% winpe Yes

%BCDEDIT% /store %BCDSTORE% /set %guid% osdevice ramdisk=[boot]\Recovery\WindowsRE\Winre.wim,{ramdiskoptions}

%BCDEDIT% /store %BCDSTORE% /set %guid% device ramdisk=[boot] \Recovery\WindowsRE\Winre.wim,{ramdiskoptions}

%BCDEDIT% /store %BCDSTORE% /set %guid% description "Windows 8.1 PE Environment"

%BCDEDIT% /store %BCDSTORE% /displayorder %guid% /addlast

 

@ECHO Check if no error then proceeding to create creating VHD Entry (CTRL+C to break)

@Pause

for /f "tokens=2 delims={}" %%g in ('%BCDEDIT% /store %BCDSTORE% /create /application osloader') do set guid={%%g}

%BCDEDIT% /store %BCDSTORE% /set %guid% device vhd=[BOOT]\W8R.VHD

%BCDEDIT% /store %BCDSTORE% /set %guid% path \Windows\system32\winload.exe

%BCDEDIT% /store %BCDSTORE% /set %guid% osdevice vhd=[BOOT]\W8R.VHD

%BCDEDIT% /store %BCDSTORE% /set %guid% systemroot \Windows

%BCDEDIT% /store %BCDSTORE% /set %guid% description "Boot from W8R:VHD"

%BCDEDIT% /store %BCDSTORE% /displayorder %guid% /addlast

 

[8] If install Windows from Windows ISO directly, the serial number is a mandatory step.

[9] These Tweaks will help to make it compact & independent: Remove Page File and Hibernate File. Disable Drive Restore. Erase temporary files and clean DLL cache, unnecessary fonts etc.

[10] This can go on manually without 3rd part software. i.e. components to removed: %LOCALAPPDATA%\Packages,  C:\Programs Files\WindowsApps etc, the final system size can vary.

[11] Boot the Hard Diskless 6GB PC:

1)        Select GRUB4DOS option then select command line in next GRUB boot menu. Get GRUB prompt:

2)        GRUB>”DISPLAYMEM ETR” (ETR: Press Enter). The output (pictures in appendix) shows memory info:

·          Max free RAM size is CF600000H bytes à CF6H MB à 3318 MB à 3.21 GB.

[12] Boot system to WinPE by selecting “Windows 8.1 PE Environment” from OS Boot menu. In Win PE environment. Create a RAM Disk <=3324MB from imDisk (see the appendix picture) i.e. The RAM Disk assigned as E:\

[13] Using the following command to capture WIMBOOT “.wim”

DISM /CAPTURE-IMAGE /WIMBOOT /CAPTUREDIR:C:\ /IMAGEFILE:E:\W8R.WIM /NAME:W8R

The captured WIM file is (for this case) 2.77 GB/2837 MB.

Now it is time for the metamorphosis, which is not for a fainted heart, misfires will result in losing everything:

·          Make E:\Root; E:\Root, E:\Root\BOOT, E:\ROOT\SYS, and copy:
C:\bootmgr
C:\bootnxt
C:\GRLDR
\C:\GRLDR.MBR
C:\MENU.LST
to E:\ROOT\
C:\BOOT\*.* to E:\ROOT\BOOT
C:\SYS\*.* to E:\ROOT\SYS                                         :SVBus folder/imDisk etc.

·          DISKPART
SELECT DISK 0                                                           : USBD is disk 0 in this PC/otherwise select accordingly.
FORMAT FS=NTFS QUICK LABEL=W8R

·          Deploy the WIMBoot OS shadow (Special index links similar as HardLinks / SoftLinks etc.) file system structure to W8R.VHD (while the real file data located inside W8R.WIM) with:

o    MOVE E:\W8R.WIM to C:\ (WimBoot deployment cannot be from file on a Ram Drive.)

o    Creating a E:\W8R.VHD (can be on C:\; using E:\ will speed up the process):
DISKPART
CREATE VDISK FILE="E:\W8R.VHD" MAXIMUM=3295
This creates W8R.VHD with 3295 MB, 3.21 GB.

o    DISKPART
SELECT VDISK FILE=E:\W8R.VHD
ATTACH VDISK
SELECT DISK 1                                           :USBD “0”/W8R.VHD as “1” (using “list disk” to check)
CONVERT MBR
CREATE PART PRIM
FORMAT FS=NTFS QUICK LABEL=W8Ri
ACTIVE
ASSIGN                                                     :Let Set the assign Driver Letter for W8R.VHD as H:\
EXIT

o    DISM /APPLY-IMAGE /WIMBOOT /IMAGEFILE:C:\W8R.WIM /INDEX:1 /APPLYDIR:H:\

o    After finished successfully, COPY C:\W8R.WIM to H:\
This step cannot happen earlier, because if do this step first, the W8R.VHD will have too little space left for the intermediate deployment, which is ballooning out ~ GB first then shrink to ~ 200 MB. After all those, the free space in W8R.VHD is less than 300 MB, which will be totally filled once OS runs.

o    Copy W8R.VHD to C:\

[14] This will be the safety copy of the Windows 8.1 OS for daily flat on USBD run. First using the method in footnote #13 to mount C:\W8R.VHD as H:\ (both FLAT& RAM/VHD windows will use the W8R.WIM inside C:\W8R.VHD)

DISM /APPLY-IMAGE /WIMBOOT /IMAGEFILE:V:\W8R.WIM /INDEX:1 /APPLYDIR:C:\
Now to erase the C:\W8R.WIM C:\ à later deletion makes free large space on C:\ continuous and healthier.

[15] Using the same BCDMake.bat in reference #7. However, Only 1st entry is valid. But leaving other entries there helps a counting down delay to gain the pressing F8 options instead of booting into OS immediately.

[16] “Dism /WimBoot …” has to be done from a physical structure, Windows neither allow to point to a RAM Disk for deployment nor for WIM BOOT updating to the RAM Disk. The WimBootEntry inside W8R.VHD was C:\W8R.WIM, now to update it to H:\W8R.VHD, do not worry once it is unmounted, Windows know it is inside W6R.VHD and this W8R.VHD is located in C:\ and the following redirects the boot pointer:

1)       DISM /GET-WIMBOOTENTRY /PATH:H:\                         :Will get the DataSourceID is 0

2)       DISM /Update-WIMBootEntry /Path:H:\ /DataSourceID:0 /ImageFile:H:\W8R.WIM

[17] The BOOTMGR & BOOTNXT in C:\ and V:\ are “pointers” (deployed by “DISM /APPLY-IMAGE /WIMBOOT ….”) not real files with data. They must be replaced by real files (as we saved in E:\Root)

·         The BOOTMGR enable the function of tracing pointers into W8R.WIM. This file need to be “real.”

·         Both BOOTMGR and BOOTNXT cannot be deleted àJust rename original pair to Bootmgr-0/bootnxt-0.

·         Copy the original Bootmgr/Bootnxt pair inside E:\ROOT into Root directories of C:\ and H:\

[18] I have quite a few systems has been slimed down. This system shown here is one of them. The language is non English.

 







Also tagged with one or more of these keywords: windows 10 8.1, wimboot, ram disk and vhd, grub4dos svbus imdisk, windows pe, diskpart dism bcd bootmgr, grldr grldr.mbr menu.lst

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users