Skip to main content

How do I dual-boot Ubuntu 18.04 on a 2011 Mac Mini?

Machine Specs:



  • Mac Mini (Mid 2011), Macmini5,2
  • Core i7
  • 16 GB RAM (2x8 GB)
  • AMD Radeon HD 6630M 256MB
  • 27-inch Apple Thunderbolt Display
  • 512 GB SSD
  • Running macOS 10.13 High Sierra

Caution:


This process can result in data loss. If you have personal data on the Mac Mini before starting, back it up first. Twice! (One is none. Two is one. ~ U.S. Navy Seal saying).  Also, mistyping in the parts of this process may brick your Mac Mini. You have been warned. If in doubt, stop working and do research on Google until you understand what's going on in the step. If you find an error, please leave a comment. I will update.

Note:


This is process I figured out in lieu of booting the Ubuntu install with EFI via refind. Via the refind boot method, I would constantly get:

10:39:07 kernel: Couldn't get size: 0x800000000000000e
10:39:07 kernel: MODSIGN: Couldn't get UEFI db list
10:39:07 kernel: Couldn't get size: 0x800000000000000e


The error seems to be related to Apple's use of Secure Boot.

Process:


    Before adding *any* personal data on the macOS side...

    Disk Utility -> Click on macOS drive (Let’s call it “macOS”) -> Click “Partition” button -> Click “Partition” button -> Click macOS partition on left -> Set size to half the drive. -> Click other half -> Make new parition using exFAT FS (FS type doesn’t matter). Click "Apply".


    After resizing, connect a Apple native keyboard (dasKeyboard didn’t work).


    Reboot pressing Command+R to go into recovery mode.

    Open Utilities -> Terminal

    Run: csrutil disable

    Reboot back into macOS.


    For the purposes of this doc, your username is “username”. Change as needed.

    Unpack into ~/Downloads/refind-some_version_number

    Reboot into recovery mode by holding down Command-R.

    Open Utilities -> Terminal

    Run: cd /Volumes/macOS/Users/username/Downloads/refind-some_version_number

    Run: cp refind-install refind-install.save

    Run: vi refind-install
    Change: #!/usr/bin/env bash  TO #!/bin/bash
    (The rescue env doesn’t seem to have /usr/bin/env)

    Run: ./refind-install
    (no arguments are needed on macOS. Some may actually break macOS!!!)

    Reboot.

    On refind screen choose: "Boot from disk macOS".

    In macOS, download Ubuntu 18.04 desktop ISO and “Etcher” app for macOS.

    Insert USB stick (at least 16 GB?).

    Use Etcher to write the Ubuntu ISO to the USB stick.

    Open Terminal.

    Run: sudo su -

    Run: diskutil list

    Look for disk with size of USB stick (e.g. 16GB).

    Run: bless -device /dev/diskX -legacy -setBoot -nextonly
    (Bless the whole disk, not the partition)

    With USB stick plugged in, reboot.

    You should be able to boot into Ubuntu setup without EFI issues (“legacy”).

    At the Welcome screen, choose your language and click “Install Ubuntu”.

    Choose your keyboard layout and click “Continue”.

    Click “Normal Installation” and check the “Install third party software…” box. Then click “Continue”.

    ---

    !!!! VERY IMPORTANT !!!!

    ON THE “Installation Type” screen CLICK “Something else”

    Then click “Continue”.

    You will see TWO partitions about 256GB in size. THE FIRST partition is your macOS partition!!!!

    Click the SECOND 256 GB partition with the EXFAT FILESYSTEM.

    Click the “Change” button.

    Under “Use as”, select one of the top six options (maybe not btrfs? I don't know the status of using btrfs on your root filesystem.). I chose ext4.

    Under “Mount point”, select “/”, click “OK”.

    ---

    !!!! ALSO VERY IMPORTANT !!!!

    Under “Device for boot loader installation”, SELECT THE Linux PARTITION FROM THE PREVIOUS STEP (ext2,3,4/btrfs/jfs/xfs)! NOT the macOS partition! NOT the whole drive.
    (probably /dev/sda3)

    Click “Install Now”.

    Follow rest of installation…

    Reboot Linux as instructed and remove install USB stick. Press Command+R to go into recovery mode.


    Open Utilities -> Terminal


    Run: csrutil enable


    Reboot.

    On the refind screen:

    To use Ubuntu 18.04, choose “Boot Linux (Legacy) from ext4 volume” on the right. It should have a penguin icon.

    To use macOS, choose "Boot from disk macOS".

    That’s it.

    Comments

    Popular posts from this blog

    Fixing SSH connection problems in EGit in Eclipse

    Note: I posted a version of this on Stack Overflow. Errors can occur when there is an underlying SSH authentication issue, like having the wrong public key on the git remote server or if the git remote server changed its SSH host key. Often the an SSH error will appear as: " Invalid remote: origin: Invalid remote: origin" Eclipse will use the .ssh directory you specify in Preferences -> General -> Network Connections -> SSH2 for its ssh configuration. Set it "{your default user directory}.ssh\" . To fix things, first you need to determine which ssh client you are using for Git. This is stored in the GIT_SSH environmental variable. Right-click on "Computer" (Windows 7), then choose Properties -> Advanced System Settings -> Environment Variables. If GIT_SSH contains a path to plink.exe, you are using the PuTTY stack. To get your public key, open PuTTYgen.exe and then load your private key file (*.ppk). The listed public key sho...

    How the find the Active Directory Domain Controllers listed in DNS on Linux...

    Assumptions: You have the "host" utility from BIND. You can do a zone transfer from the local DNS server Your Active Directory admins have properly configured DNS for Active Directory If you have the above, use the following command: host -t srv -l your.active.directory.dns.domain | grep _kerberos._tcp.*._sites.dc._msdcs.your.active.directory.dns.domain Replace your.active.directory.dns.domain with your actual AD DNS domain.

    PowerShell One-Liners

    Introduction PowerShell is Microsoft's shell for their product lines. It's now on version 3.0. If you miss the power of the command line while using Windows on either your laptop or servers, PowerShell provides that power. Important concepts: Almost all aspects of the Microsoft ecosystem are objects within an overarching structure. You query and manipulate this structure and its objects with PowerShell. This includes all aspects of SharePoint, Active Directory, and Exchange. Other companies, like VMware (see below) have also written PowerShell modules. This "object nature" means that PowerShell pipes pass objects and properties, not just text.  Variables store data-structures of objects.  One-liners Note: Unwrap the code lines before you use them. Get Help Get the usage of the command "Select-Object": Get-Help Select-Object Built-in examples for the command "Select-Object": Get-Help Select-Object -exam...