Jump to content

XP Pro x64 OS Boot NVMe


bluebolt

Recommended Posts

@Dietmar

Why did you put in the bios3.fd image.rom without modification of PCI VEN/DEV?

I did it like this:

  • in WinHex I unpacked from image.rom legacy firmware from the beginning of the file to offset 45FF
  • I changed PCI DEV A802 to A808 (970 EVO), calculated and fix the 8-bit checksum to 00 and save as legacya808.bin
  • I unpacked from image.rom UEFI firmware with UEFIRomExtract.exe
    uefiromextract image.rom ext.efi
  • I built a new ROM (legacy+UEFI) using efirom.exe for my Samsung 970 EVO (144D A808):
    efirom -f 0x144d -i 0xa808 -b legacya808.bin -ec ext.efi -r 0x0000 --pci23 -l 0x000002 -o image_A808.rom
    efirom -d image_A808.rom
    
    Image 1 -- Offset 0x0
      ROM header contents
        Signature              0xAA55
        PCIR offset            0x001C
        Signature               PCIR
        Vendor ID               0x144D
        Device ID               0xA808
        Length                  0x0018
        Revision                0x0002
        DeviceListOffset        0x00
        Class Code              0x020801
        Image size              0x4600
        Code revision:          0x0001
        MaxRuntimeImageLength   0x00
        ConfigUtilityCodeHeaderOffset 0x00
        DMTFCLPEntryPointOffset 0x3C80
        Indicator               0x00
        Code type               0x00
    Image 2 -- Offset 0x4600
      ROM header contents
        Signature              0xAA55
        PCIR offset            0x001C
        Signature               PCIR
        Vendor ID               0x144D
        Device ID               0xA808
        Length                  0x0018
        Revision                0x0000
        DeviceListOffset        0x00
        Class Code              0x000002
        Image size              0x3800
        Code revision:          0x0000
        MaxRuntimeImageLength   0x00
        ConfigUtilityCodeHeaderOffset 0x3646
        DMTFCLPEntryPointOffset 0x00
        Indicator               0x80   (last image)
        Code type               0x03   (EFI image)
      EFI ROM header contents
        EFI Signature          0x0EF1
        Compression Type       0x0001 (compressed)
        Machine type           0x8664 (unknown)
        Subsystem              0x000B (EFI boot service driver)
        EFI image offset       0x0034 (@0x4634)
    
  • with MMTool I insert the image_A808.rom file in the CSMCORE module as 144d a808
  • I saved as a .cap file and unpacked capsule (Extract body) in UEFITool
  • I pulled out the chip of the bios and programmed with the CH341A programmer

BIOS only sees Legacy (CSM Enabled) N1-Samsung SSD 970 EVO Plus 250 disk. Under UEFI or pure UEFI does not see the disk.

I am trying to boot a MiniXP from Hiren's USB but stops at the message:

Setup is inspecting your computer's hardware configuration…

WinPE7 Live running from UEFI not see disk.

Debian6 32-bit not see disk (fdisk -l)

WinXP installer running from USB (GRU4DOS) does not see the NVMe disk (see only USB drive)

P.S Probably the NVME UEFI firmware must be inserted in a different way - as a DXE controller (.ffs file) and under CSMCORE put only the cut out part of Legacy OptionROM without part of UEFI (cut block 0 - 45FF from image.rom file and edit PCIR and 8-bit checksum)

Edited by reboot12
Link to comment
Share on other sites


@reboot12

I just test win10 bit64 install in pur UEFI mode (CSM disabled) on the Asus p8h77-m with Option Rom from the 950 Pro in its Bios.

The 960 Pro is recogniced, but later install crashes with comment: Cant install driver.

Also legacy win10 on MBR cant be installed, not bit32 not bit64.

So, the Option Rom from the 950 Pro is only good for legacy "install" of XP SP3 or win7

Dietmar

PS: But I know, that the DXE nvme Bios file from the nuked forum works for UEFI install of win10.

EDIT: By the way you see, that the freeldr.sys is by far better than any other loader from any other OS.

Edited by Dietmar
Link to comment
Share on other sites

I modified the BIOS B85M-E-ASUS-3602.CAP of the motherboard B85M-E in this way:

  • I cut out of the image.rom firmware Legacy (offset 0-45FF), changed PCI DEV to A808, fixed the 8-bit control sum to 00 and save to file legacya808.bin
  • With MMTool I insert the legacya808.bin file under CSMCORE as 144d, a808 and save file legacy.cap
  • With UEFITool 0.26.0 open legacy.cap and insert DXE driver UEFI NvmExpressDxe_5.ffs, save to legacy+uefi.cap and Extract Body capsule to no_cap3.bin file
  • I programmed BIOS using the CH341A programmer
  • In BIOS CSM enable, AHCI disable - only NVMe disk and USB stick connected
  • I made a USB stick Win10 64-bit as USB-ISO (MPALL service tool for Phison controller), started installer in Legacy mode and installed without any problems Win10 64-bit in Legacy mode on MBR disk :P :D
    6677266800_1666171072_thumb.jpg

So booting from the NVMe disk works in Legacy BIOS mode :thumbup

6634069500_1666171849_thumb.jpg

Now I am testing the installation in pure UEFI mode (CSM disabled, Secure Boot also disabled) with the same bios:

  • I disable CSM in BIOS and reboot from same USB stick but from UEFI mode
  • at first Win10 install screen I run CMD (Shift+F10) and in diskpart sel disk 0 and clean
  • I close CMD window and continue install Win10 in UEFI mode
  • I installed without any problems Win10 64-bit in pure UEFI mode on GPT disk :P :D
    4789398100_1666173210_thumb.jpg 1677630100_1666173218_thumb.jpg

This means that I have modified the BIOS correctly and it works booting from the NVMe disk both in Legacy and pure UEFI mode (CSM disabled) :thumbup :cool: :whistle:

Edited by reboot12
Link to comment
Share on other sites

34 minutes ago, Dietmar said:

Have you tested XP SP3 install via the modded Bios?

First of all, I will test WinXP SP2 64-bit in Legacy and pure UEFI mode with UefiSeven loader

36 minutes ago, Dietmar said:

We need to make a Tutorial, step by step, that works for all motherboards and nvme devices.

I don't have other NVMe disks for test but if you have it, test it. You don't need PLOP, only for legacy bios need legacy part from image.rom Samsung 950 with fixed PCI DEV your NVMe disk and 8-bit checksum and for UEFI bios need DXE driver (.ffs file) from this tutorial: WinRaid forum: [HowTo] Get full NVMe support for all Systems with an AMI UEFI BIOS

Link to comment
Share on other sites

@reboot12

I put Plop into Bios only because of legacy XP SP3 boot.

Because Plop then automatically loads the correct nvme boot device, no chance on other way in Bios settings of the Asus P8H77-M board.

Can you please upload your unmodded Bios for the Asus B85M-E (without crazy cap)

and also the last version of your whole modded Bios (also without cap),

and the cut off image.rom file from 950 Pro

and your used DXE file for UEFI nvme boot from the nuked forum.

My board from Ebay comes tomorrow but your changes I will test today

Dietmar

PS: One year ago I also make a try with my own (UEFI cut off) image.rom from the 950 pro, but it does not work for me.

Link to comment
Share on other sites

@Dietmar

B85M-E-ASUS-3602_mod_legacy_UEFI_boot_OK_for_Samsung_NVMe_970_EVO_DEV_A808.zip

1 hour ago, Dietmar said:

PS: One year ago I also make a try with my own (UEFI cut off) image.rom from the 950 pro, but it does not work for me.

For the Legacy OptionRom to work in Legacy BIOS, the conditions must be met:

  • At the beginning of 55 AA
  • PCIR data (little endian) need same as PCI device in motherboard e.g. for Samsung 970 EVO Plus 4D 14 08 A8 (of course class and other data also same as device)
  • 8-bit checksum must be 00 (In the last byte you put 00, save to the file, calculate the 8-bit checksum, subtract from 100 hex the calculated hex value, put the new value in the last byte, save the changes to the file and re-calculate the 8-bit control sum)
Link to comment
Share on other sites

@reboot12

I integrate with the MMTool the legacy part of the image.rom from 950 Pro.

Then I check with Winhex for

Vendor ID 0x144D

and

Device ID 0xA804

for my Samsung 960 Pro.

I found 144D (vice versa because HEX) at 2 places in csmcore.raw .

And strange enough, at the second place I found A802 (which is the device ID of the original 950 Pro).

Do you get the same

Dietmar

Link to comment
Share on other sites

@reboot12

Thank you for files!

Which Tool do you use, for to check the Checksum

Dietmar

 

EDIT: I just found, that in your Csmcore.raw at the 2 places always only your

Device ID 0xA808

appears.

So, the MMtool makes an mistake and you have to set the correct Device ID by hand in the 950 Pro legacy.img before integrating.

Repairs the MMtool a wrong checksum automatically?

Edited by Dietmar
Link to comment
Share on other sites

2 hours ago, Dietmar said:

Which Tool do you use, for to check the Checksum

WinHex and Windows Calculator (Scientific View)

  • open file image.rom in WinHex
  • go to menu Edit > Define Block... and set like this and click OK:
    8308812600_1666186402_thumb.jpg
  • go to menu Edit > Copy block > Into new file and save as legacy.bin on Desktop
  • open file legacy.bin in WinHex
  • edit PCI Device for your NVMe disk A804 > little endian 04 A8 in offset 22
    1165372300_1666186843_thumb.jpg
    and at the very end of the file in the 45FF offset, insert 00 and save the file
  • go to menu Tools > Compute Hash... > select Checksum (8 bit) and click OK - it should be 82
  • open Windows Calculator (I use WinXP), change view to Scientific, switch to Hex mode and calculate 100 - 82 it should be 7E
  • in WinHex at the very end of the file in the 45FF offset, insert 7E and save the file
  • go to menu Tools > Compute Hash... > select Checksum (8 bit) and click OK - now it should be 00

 

Edited by reboot12
Link to comment
Share on other sites

2 hours ago, Dietmar said:

EDIT: I just found, that in your Csmcore.raw at the 2 places always only your

No !!!

  • Open file (Load Image) B85M-E-ASUS-3602.CAP in MMTool 5.00.0007
  • click tab Insert and Browse to open file legacy.bin (previously modified for A804)
  • click on CSMCORE, select Link Present and enter Vendor ID 144d and Device ID A804
  • now click Insert button and Save Image as then save on new file e.g. mod_bios.cap

7707342400_1666188384_thumb.jpg

If you want to write a bios with programmer, e.g. CH341A you must first remove the capsule in UEFITool and save as e.g. mod_bios.bin:

7014210200_1666188795_thumb.jpg

Edited by reboot12
Link to comment
Share on other sites

@reboot12

After some fight with my EEpromer I succeed to flash the original Bios from Webside

only with the Legacy part of the Option Rom from the 950 Pro integrated in Bios for my 960 Pro nvme.

Hm, I put no ID for my network card in Bios, but can go to Internet as before???

And voila, XP starts from nvme 960 Pro on the Asus P8H77-M board.

So, maybe because of 2 different numbers or wrong check sum it does not work last year with only legacy part.

NO PLOP IS NEEDED now!

But XP boots only with freeldr.sys.

With ntldr it hangs as before. The same happens with the original Samsung 950 Pro and also with the Plextor with own Rom.

It is a bad behavior of the ntldr of XP. Last year I noticed, that NT4 can boot, win7 and Reactos, only not XP SP3.

It depends ONLY on its ntldr, ntldr from XP does not work together with Bios from older (< 2018) motherboards

and the Option Rom of the 950 Pro

Dietmar

PS: Now I try legacy nvme with Win10.

 

EDIT: Install try legacy win10 bit32 shows at once: ntoskrnl cant be found.

The install USB stick is original(!) from Microsoft.

This behavior I have seen on the z690 boards also.

So, just now I burn a DVD with win10 bit32

Win10_21H2_German_x32.iso

EDIT2: With the legacy part alone of the Option ROM from the 950 Pro,

legacy win10 cant be installed. bit32 crashes at once and bit64 after 20% tells "driver cant be installed".

 

 

Edited by Dietmar
Link to comment
Share on other sites

@Dietmar

I am at the stage:

  • using diskpart from the Win10 installer, I divided the NVMe disk into 100MB + 20GB + 182GB + unallocated partitions
  • I pulled out an adapter with a NVMe disk from the PCIe slot
  • I installed WinXP SP2 64-bit on SATA AHCI disk and all drivers on Legacy mode
  • I installed the WindowsServer2003.WindowsXP-KB932755-x64-ENU.exe update
  • I turned off PC, I put PCIe adapter with NVMe disk Samsung and boot WinXP from SATA disk
  • I installed the NVMe driver Community NVMe 1.3 Storport Miniport by Schtrom

Now WinXP SP2 64-bit sees a NVMe drive:

9511015100_1666201617_thumb.jpg

I copied UEFI files (also UefiSeven loader) on the SATA disk and WinXP boot OK under pure UEFI

I copied to the 100MB FAT32 NVMe partition UEFI files with UEFI Shell (bootx64.efi) and a new UEFI option appeared in the bios (CSM disabled) and PC boot OK to UEFI Shell from NVMe disk

3784015300_1666202490_thumb.jpg

Now I have to somehow clone the partitions from the SATA disk to NVMe disk

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