Resolved Updated to Mojave... now I can't boot into my Windows volume

PowerMac G4 MDD

macrumors 68000
Original poster
In short: I updated from High Sierra, to Mojave, and I can no longer boot from the separate SSD which I use for Windows. Only my main volume is bootable.

My Mac Pro's specifications are in my signature. (Note that I have no EFI card.) I'm thinking that this whole thing is a bug which [hopefully] will be worked out within the next few mini updates to Mojave.
 

h9826790

macrumors G5
Apr 3, 2014
14,144
6,781
Hong Kong
Just tested on my cMP.

No problem at all to boot my Windows 10 (EFI mode installed on a dedicated SSD) with the terminal bless method.
 

h9826790

macrumors G5
Apr 3, 2014
14,144
6,781
Hong Kong
Can you elaborate on the Terminal bless method?
1) Run the following command in terminal
Code:
diskutil list
2) locate your Windows partition. e.g. My Windows is in EFI mode, and the Windows drive is "disk2"
Screenshot 2018-09-30 at 04.17.15.png


3) In terminal, enter (Note: you have to change the disk number according to the result in step 2)
Code:
sudo bless -device /dev/disk2s2 -mount /Volumes/BOOTCAMP -setBoot -nextonly
4) Reboot your Mac

N.B. The "nextonly" argument make your Mac only boot to Windows once. And automatically go back to MacOS on the next boot. If the cMP doesn't go back to macOS for any reason, you can't use bootcamp apps (in Windows) to select macOS as next boot drive (because Mojave should be on a APFS partition, which is virtually transparent in Windows). So, you can either select a HFS+ partition for next boot (if you have that), or simply perform a PRAM reset. With a RX580, you can always perform a PRAM reset to bring you back to macOS if anything goes wrong.

If you don't like this complicated procedure to boot to Windows, you may try BootChamp or Boot Runner. They may still work.
 

PianoPro

macrumors 6502
Sep 4, 2018
281
150
In short: I updated from High Sierra, to Mojave, and I can no longer boot from the separate SSD which I use for Windows. Only my main volume is bootable.

My Mac Pro's specifications are in my signature. (Note that I have no EFI card.) I'm thinking that this whole thing is a bug which [hopefully] will be worked out within the next few mini updates to Mojave.
Here's the Applescript I wrote to boot into Windows. You can access it from the script icon in the menu bar so it's always available.

Just substitute the name of your Windows volume for BOOTCAMP if you use another name. Also be sure to insert your password where it says your_password.

# My Win 10 EFI booting requires -device /dev/diskXs1 be included in the "bless" command.
# It may be that Win 10 legacy BIOS booting only requires -mount /Volumes/BOOTCAMP because
# that seems to work for some Mac's, but not for my Win 10.

# This script solves the problem of the Disk ID assigned to the Win 10 physical disk changing
# from one power-up to another. The Disk ID depends on when it is enumerated during boot.

set Win_devID to do shell script "diskutil info BOOTCAMP | grep Node"
# this assigns the string "Device Node: /dev/diskXsY" to the Win_devID variable, where X is unpredictable
# BOOTCAMP is the Win 10 volume name

set Win_devID to (text -7 thru -2 of Win_devID) & "1"
# This strips everything except "diskXs" and appends a "1" for the EFI location (always "1")

display dialog "Windows 10 EFI Volume was assigned as " & Win_devID buttons {"Cancel", "Boot Win10"}

do shell script "bless -device \"/dev/" & Win_devID & "\" -mount /Volumes/EFI -setBoot -nextonly" password "your_password" with administrator privileges

tell application "Finder" to restart
 

expede

macrumors regular
Jan 15, 2018
203
54
Sweden
Does not work for me. I think BootChamp needs "all" not just "without NVRAM". I mean the script at all. tsialex wrote me;

sudo sh -c "bless -device /dev/disk5s2 -mount /Volumes/BOOTCAMP -setBoot -nextonly; shutdown -r now"

But it does just a reboot. I´m on 10.14.1 and 139.0.0.0.0. It worked with 138.0.0.0.0 and 10.14 but not now.

@PianoPro ; Your script is nice, but it do the same "Reboot" in 10.14.1

/Per
 
Last edited:

tsialex

macrumors 604
Jun 13, 2016
7,655
8,367
Brazil
Does not work for me. I think BootChamp needs "all" not just "without NVRAM". I mean the script at all. tsialex wrote me;

sudo sh -c "bless -device /dev/disk5s2 -mount /Volumes/BOOTCAMP -setBoot -nextonly; shutdown -r now"

But it does just a reboot. I´m on 10.14.1 and 139.0.0.0.0. It worked with 138.0.0.0.0 and 10.14 but not now.

/Per
This is a hack, not a solution. Macs don't use permanent disk nodes, so at every boot you can have different disk numbers. Don't use this.
 
  • Like
Reactions: PowerMac G4 MDD

Demigod Mac

macrumors 6502a
Apr 25, 2008
791
241
Here's the Applescript I wrote to boot into Windows. You can access it from the script icon in the menu bar so it's always available.
Does your script need SIP to be disabled to work? Was under the impression the bless command doesn't work with SIP turned on.
 

PianoPro

macrumors 6502
Sep 4, 2018
281
150
Does your script need SIP to be disabled to work? Was under the impression the bless command doesn't work with SIP turned on.
Yes, you must turn off SIP-nvram of course to "bless". To do that:

From Recovery mode - command-R from a startup, access terminal and then type:

csrutil enable --without nvram

Note if you do a PRAM reset (not necessary with the script) that will re-enable all of SIP
[doublepost=1538260275][/doublepost]
Change from 1 to 2 in this line:
Code:
set Win_devID to (text -7 thru -2 of Win_devID) & "2"
Use "1" if you are using UEFI booting into Windows, as I said at the top of my script. In that case you should bless the EFI volume, not the BOOTCAMP volume. The EFI volume is always "1".

If you are booting into Windows with the legacy BIOS (which normally happens if you installed from the Bootcamp Assistant app rather than doing the preferred UEFI install without Bootcamp assistant) then you need to bless the BOOTCAMP volume. You can use: diskutil list from the terminal to discover where the BOOTCAMP volume is on the physical disk. It's the Y from the returned "diskXsY", and it won't change between boots (which the X can). Y may be "2" or may not depending on how many partitions you have on that disk and which is the BOOTCAMP partition.

I think you will also need to change -mount /Volumes/EFI to -mount /Volumes/BOOTCAMP if you are using the legacy BIOS boot. I can't check that because I don't use the legacy BIOS boot.
 
  • Like
Reactions: tsialex

PowerMac G4 MDD

macrumors 68000
Original poster
Odd... I am suddenly able to boot into Windows again. I don't think Mojave was the problem; I think I was effectively falling into a Windows update trap which never showed up on my screen. (I even tried the boot procedure twice and was still met with a black screen.)

Eventually, I tried again, finally seeing a Windows update screen—all followed by a restart and successful boot. Of course, this whole time, it was Windows being the stupid OS that it is. Not sure why its updating compromised the boot process like that. Gotta disable that stuff.
 

dvbcheck

macrumors newbie
Aug 16, 2014
29
13
Germany
display dialog "Windows 10 EFI Volume was assigned as " & Win_devID buttons {"Cancel", "Boot Win10"}

do shell script "bless -device \"/dev/" & Win_devID & "\" -mount /Volumes/EFI -setBoot -nextonly" password "your_password" with administrator privileges

tell application "Finder" to restart
Hello PianoPro,
thanks for your script.
It´s working for me but clicking the cancel button reboots my machine into macOS.

How to enable to quit the script?
 
Last edited:

tyvol

macrumors newbie
Jan 7, 2009
20
6
Indio, California
@PianoPro posted a nicely done AppleScript, use that - it's a elegant solution.

Quite elegant, actually.

But now, with 10.14.4 and the new Boot Rom of 141.0.0.0.0, this elegant solution sadly doesn't seem to work anymore...

As I can't get to the EFI menu (and Windows 10) by holding down the option key at start, I'm a bit stuck.

Any suggestions as to how I might get this great Script to work again?

TIA...
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.