If you experiment with this please do not wonder. The NVRAM might remember additional information across reboots. So your UEFI might adopt to what you are up to, and stick to the previous setting even if you do not give command. This is no bug, this is a feature.

Windows and (U)EFI

You have a Windows 7 64 bit and want to install it in UEFI mode. But it still installs in BIOS mode.

This is not a Windows BUG but a problem with your mainboard UEFI implementation. It is starting a so called "CSM" (Compatibility Support Module) which emulates an old BIOS. If Windows detects a BIOS it installs in BIOS mode.

  1. Windows and (U)EFI
    1. Boot Windows in UEFI mode
      1. Boot selection
      2. UEFI shell way
    2. Windows install in (U)EFI mode
    3. Install Windows
    4. Notes
      1. Recommendations
      2. Links

BIOS-Mode is the formerly known way to boot an OS. It uses the MBR (Master Boot Record, the first sector on the Harddrive) for partitioning and only supports drives up to 2.2 GB capacity. The new method implemented by UEFI is called GPT (GUID Partition Table). However few of the old tools have support for GPT. Windows only supports this in the 64-Bit versions starting with Windows Vista SP1.

Boot Windows in UEFI mode

There are two solutions known to me which work. I tried it on my UEFI mainboard with an USB attached CDROM drive.

The good thing about UEFI is complete USB support. So do not worry about if your USB drive works. If it is standard, you can access it.

Boot selection

  • Interrupt the boot process of your UEFI and manually select the boot medium. How to do that differs from the version, perhaps it is F10, perhaps F11 or Ctrl+S, whatever.
  • UEFI lists all the drives it is capable to boot from.
  • Perhaps you can see your CD-ROM drive two times. One time it is called "USB CD..." and one time it is called "UEFI USB CD...". Choose the latter.
  • This then boots the UEFI boot code on your Windows CD-ROM.
  • Windows now is in UEFI mode. You cannot see this, but you will notice this later.

UEFI shell way

  • Boot you System in the UEFI shell - if your BIOS has one.
  • In the UEFI shell enter following:
    map -r
  • You will see some "fs" drives. One is called "Removable CDRom" or similar. That is your CD drive. If your harddrive is not empty it might become "fs0:" such that your CD drive becomes "fs1:", but with an empty harddrive your CD is "fs0:"
  • Enter
    fs0:
    Yes, this looks a bit like MS-DOS. This changes to the drive "fs0" in this case which is my CD drive.
  • To see the directory of your CD-ROM you can enter
    dir
    This will only reveal a directory called "EFI" at my side. That's ok.
  • Now boot the Windows boot code:
    cd EFI\BOOT
    BOOTX764.EFI
  • Press a key to boot into Windows. If you don't you will come back to the shell.
  • If you pressed to many keys, you will see another screen which lets you select "Windows Setup [EMS Enabled]" (no, this is no sign that it is EFI enabled). You can press F8 here to see advanced setup options, but this does not help much ;)
Well, yes. Welcome back good old DOS mode. UEFI Shell and MSDOS-Loader of Win95 are not much different, except that UEFI can be Bytecode (most time it isn't), such that it can be programmed hardware independent if you like. So welcome back good old UCSD pascal as well.

Windows install in (U)EFI mode

  • Selecting your language
  • Start Install
  • Accept the license
  • Select "Manual" mode
  • Now click "Extended drive options"
  • Click "New"
  • Enter the size. Note that for a complete Win7 Ultimate 64 install you need 35 GB plus size of programs to install plus 1.5 times your RAM for SWAP plus 1 times your RAM for hibernation (there is a way to half the hibernation file using "powercfg" shell tool, but I do not recommend to do so).
  • Accept the size and accept the next message.
  • Note that the partitions are create when you click "OK".
Now you can tell if you are EFI or in BIOS mode: If 3 partitions are created named "System", "MSR (reserved)" and one "Primary" then you are in (U)EFI mode. If only two partitions are created, then you are in BIOS mode.

If you are in BIOS mode, delete the two partitions again and start all over. Restart your computer, and try to boot via UEFI instead of BIOS CSM.

Note that if you have no UEFI Shell your mainboard probably is not EFI compliant. In that case there is no way to boot Windows in UEFI mode such that you cannot install in UEFI mode, too.

Install Windows

  • Select the right newly created partition and click continue.
  • If you fail to do so, Windows will create another partition and install in that.

Notes

  • The 100 MB System "EFI system partition" (Code EF00) is the one with the Windows Boot Loader. It is FAT32 formatted. UEFI can only access FAT32 formatted drives.
  • The 128 MB "Microsoft reserved partition" (Code 0C01) is for Microsoft usage and NTFS formatted. It also is called "MSR partition".
  • The third partition "Microsoft basic data" (Code 0700) is the real windows drive and becomes your C: under Windows. It has the size you entered and is NTFS formatted, of course.
  • If you ever kill the MSR partition, it can be revived using your Windows install CD in recovery mode. I never tried that myself.
If you are puzzled about the new EFI codes for the partitions shown by the Linux "gdisk" utility, this code apparently is the high-byte taken from the old MBR partition table extended by some low byte of 00 or 01.

These are symbolic names used by Linux - I did not find a good reference to this, sorry -. The real partition code is a GUID, of course (as the name GPT already suggests), but this codes are very uncomfortable.

Recommendations

  • It is recommended to create a 500 MB EFI partition. Windows only creates 100 MB, this is a bit small.
  • If you have an MSI board and want to use Winki outside your Windows partition this partition should be even bigger, like 4 GB.
  • So my recommendation is 4 GB for the EFI system partition! Then you can really play with this partition and use it for different things.

Links

-Tino, 2012-06-03