Windows – Set EFI to boot Windows via (U)EFI one time

blessbootefiwindows

On my late 2012 Mac Mini, I have installed both Mac OS X Mavericks (with FileVault) and Windows 8.1 (natively, not via Bootcamp):

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     268.4 MB   disk0s1
   2:          Apple_CoreStorage                         859.0 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
   4:         Microsoft Reserved                         134.2 MB   disk0s4
   5:       Microsoft Basic Data Windows                 140.2 GB   disk0s5

That's working fine, and I can boot both Mac OS and Windows.
However, I'd like to be able to boot my Mac into Windows from the command line – without permanently changing boot settings.

To my understanding, this should do it: sudo bless -mount "/Volumes/Windows" -setBoot --nextonly

The command produces no output. With --verbose, it tells me this:

EFI found at IODeviceTree:/efi
Mount point for /Volumes/Windows is /Volumes/Windows
Mount point is '/Volumes/Windows'
No BootX creation requested
No boot.efi creation requested
found ioreg "FirmwareFeaturesMask"; featureMaskValue=0xE003FF37
found ioreg "FirmwareFeatures"; featureFlagsValue=0xE001F537
isPreBootEnvironmentUEFIWindowsBootCapable=1
given BSD is not a DVD disc medium
isDVDWithElToritoWithUEFIBootableOS=0
Checking if disk is complex (if it is associated with booter partitions)
GPT detected
Booter partition required at index 6
System partition found
Preferred system partition found: disk0s1
Returning booter information dictionary:
<CFBasicHash 0x7fdc0940a7c0 [0x7fff73d4beb0]>{type = mutable dict, count = 3,
entries =>
    0 : <CFString 0x101f48e70 [0x7fff73d4beb0]>{contents = "System Partitions"} = (
    disk0s1
)
    1 : <CFString 0x101f49650 [0x7fff73d4beb0]>{contents = "Data Partitions"} = (
    disk0s5
)
    2 : <CFString 0x101f49670 [0x7fff73d4beb0]>{contents = "Auxiliary Partitions"} = (
)
}

Path to mountpoint given: /Volumes/Windows
IOMedia disk0s5 has UUID D4FC6318-275B-427D-B039-3AB033DE8ACC
Setting EFI NVRAM:
    efi-boot-next='<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>D4FC6318-275B-427D-B039-3AB033DE8ACC</string></dict></dict><key>BLLastBSDName</key><string>disk0s5</string></dict></array>'
Setting EFI NVRAM:
    IONVRAM-DELETE-PROPERTY='efi-boot-file'
Setting EFI NVRAM:
    IONVRAM-DELETE-PROPERTY='efi-boot-mkext'
Setting EFI NVRAM:
    IONVRAM-DELETE-PROPERTY='efi-boot-kernelcache'
NVRAM variable "boot-args" not set.

That looks good to me – but the command has no effect, after rebooting, I'm back in Mac OS X.

What am I doing wrong?

Best Answer

I finally can boot to Bootcamp EFI partition with the help of this answer.

In order to boot to Bootcamp EFI partition, you have to bless the EFI partition of the disk that you install Bootcamp, too. So it goes something like this: bless -device /dev/disk0s1 -mount /Volumes/BOOTCAMP -setBoot -nextonly.