macOS Sierra uses new boot args structure…

I compiled RevoBoot on macOS Sierra with the latest Xcode-Beta command line tools installed but instead of booting it immediately rebooted.

Went on looking for the problem and it turned out to be a simple boot args change. Yup. We now have two Boot Video structures:

/*
 * Video information.. 
 */

struct Boot_VideoV1 {
	uint32_t	v_baseAddr;	/* Base address of video memory */
	uint32_t	v_display;	/* Display Code (if Applicable */
	uint32_t	v_rowBytes;	/* Number of bytes per pixel row */
	uint32_t	v_width;	/* Width */
	uint32_t	v_height;	/* Height */
	uint32_t	v_depth;	/* Pixel Depth */
};
typedef struct Boot_VideoV1	Boot_VideoV1;

struct Boot_Video {
	uint32_t	v_display;	/* Display Code (if Applicable */
	uint32_t	v_rowBytes;	/* Number of bytes per pixel row */
	uint32_t	v_width;	/* Width */
	uint32_t	v_height;	/* Height */
	uint32_t	v_depth;	/* Pixel Depth */
	uint32_t	v_resv[7];	/* Reserved */
	uint64_t	v_baseAddr;	/* Base address of video memory */
};
typedef struct Boot_Video	Boot_Video;

Boot_VideoV1 basically replaces the old Boot_Video and is used for backward compatibility. The new Boot_Video structure has slightly changed. The first thing you should notice is that there is a new reserved field, for seven 32-bit variables. The second change is that this new structure now uses a 64-bit VRAM address instead of a 32-bit address. Possibly only used by new Apple hardware with a new version of their own EFI.

Anyway. I made the changes for RevoBoot in bootstruct.h and a couple of other files and I also fixed it for the macosxbootloader.

Great. No reboot anymore.

7 thoughts on “macOS Sierra uses new boot args structure…

  1. As a beginner to the “enthusiast PC builder/HackT” scene, you certainly have thrown down the gauntlet for someone who *also* wants to know how to use RevoBoot.
    I know you don’t provide instructions, so I’m going to ‘school’ via the MIT online courses (as a starting point).
    Perhaps in a year or two I could provide some instructions for mortals too.
    Keep fighting the good fight.

  2. This could explain the black screen in that many
    users of MacOS Sierra are getting stuck?
    there are some new boot flag related to the video?

      • I think it is the Nvidia Web Driver problem En0r1m is talking about.

        I have personally observed 2 problems with the web drivers:

        Problem 1:
        The web driver won’t load. (Could be related to the boot-args above)

        Problem 2:
        Even after editing AGDP.kext (config1/2 -> none) people are getting black screens.
        I have only seen this problem when installing using both screens attached.

        If I install and setup everything using only a single monitor, then everything works even after plugging in the second monitor.

        If I install with both monitors connected, then as soon as the nvidia web driver loads, both screens are exhibiting the same problem as when trying to load the web drivers without the AGDP.kext fix.

        If I install with both monitors connected, and when the screens go black, force shut off the system, then remove both monitors and attach just one monitor to /another/ port, then the screens will also come back to life. (Just removing one monitor at this step does not fix it).

        I find problem 2 very peculiar as it seems like it is only happing with dual monitors, but will work fine if installed as described above.

  3. I only want to say to you hello again and thank you very much in advance for your great work about new “Sierra bootloader” for all Mac Pro 1-> 2,1 users.
    Sorry for may very bad english ; your friend Javier B.V. from Valldemossa (Baleares) .

  4. On 10.10.5 I can’t boot past [PCI Configuration Begin] with “Above 4G Decoding” enabled on my motherboard, which I need to POST with all my cards plugged in. Could this new 64 bit address fix that problem for me, if I went to Sierra?

  5. I’m sorry for the delay in responding, which has happened
    with cards like GeForce GT 6.xx is that when you start the second stage boot-users receive a black screen with the mouse pointer locked up, this happens since Sierra DP1, and comparing the GeForce.Kext from 10.11.6 with GeForce.kext the Sierra it is possible to notice a big change I’ve tried some things and failed I hope that you can investigate this on your free time and have some progress.
    thanks!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s