Mac boot menu not showing recently installed Linux OS

bootdisk-utilitydual-boothard drivepartition

I installed GNU/Linux Kali on my Early-2015 MacBook Pro (Mojave) by following the instructions on the Kali official website for dual boot. Linux runs fine but it boots by default. When I went to boot into Macintosh HD from the boot menu, I noticed my new Linux OS was not showing, so I held off on changing macOS to default.

The steps I followed for the installation were:

  • Resize 500 GB partition to 450 GB with diskutil apfs resizeContainer
  • Download contents of kali-linux-2020.4-live-amd64.iso and burn into USB drive with dd
  • Boot into boot menu (hold down option key during power-on)
  • Boot from USB
  • Follow installation instructions (Guided – use the largest continuous free space)

Any ideas what could be wrong?

Listed disks in case that helps:

~$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         450.1 GB   disk0s2
   3:           Linux Filesystem                         48.9 GB    disk0s3
   4:                 Linux Swap                         1.0 GB     disk0s4

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +450.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            268.7 GB   disk1s1
   2:                APFS Volume Preboot                 46.0 MB    disk1s2
   3:                APFS Volume Recovery                510.4 MB   disk1s3
   4:                APFS Volume VM                      1.1 GB     disk1s4

Best Answer

There are two methods which can be used when an installed Linux does not appear in the Mac Startup Manager. (The OP refers to the Mac Startup Manager as the "boot menu".)

  • Method 1: Create folders, copy files and rename files from the linux installation so the Linux will appear in the Mac Startup Manager. This may not be possible will all Linux installations. The main problem with this method is that the Linux installation does not know of these changes. So future updates to Linux may cause an unstable boot environment.
  • Method 2: Basically this is the same as Method 1 except instead of harvesting files from the Linux installation, the necessary files are taken from the download of the rEFInd Boot Manger.

In the case of Kali Linux, the steps to implement Method 1 are given below.

  1. Boot to macOS.

  2. Mount the EFI volume. Open a Terminal application window and enter the command given below.

    sudo diskutil mount disk0s1
    
  3. Create folders, copy files and rename files. Enter the following commands in the Terminal application window.

    mkdir -p /Volumes/EFI/EFI/BOOT
    cp /Volumes/EFI/EFI/kali/grubx64.efi /Volumes/EFI/EFI/BOOT/bootx64.efi
    
  4. Unmount the EFI volume. Enter the command given below.

    diskutil unmount disk0s1
    

The steps to implement Method 2 are given below.

  1. Boot to macOS.

  2. Use Safari to download rEFInd. Be default, the download should automatically unzip to the ~/Downloads/refind-bin-0.12.0 folder.

  3. Mount the EFI volume. Open a Terminal application window and enter the command given below.

    sudo diskutil mount disk0s1
    
  4. Create folders, copy files and rename files. Enter the following commands in the Terminal application window.

    cd ~/Downloads/refind-bin-0.12.0/refind
    mkdir -p /Volumes/EFI/EFI/BOOT
    cp refind_x64.efi /Volumes/EFI/EFI/BOOT/boot_x64.efi
    cp refind.conf-sample /Volumes/EFI/EFI/BOOT/refind.conf
    
  5. Edit rEFInd configuration file. Enter the following command in the Terminal application window.

    nano /Volumes/EFI/EFI/BOOT/refind.conf
    

    Add the following text to the end of the file. When finished press control+X key combination to save the modified buffer and exit the editor.

    timeout -1
    hideui all
    scanfor manual
    menuentry Kali {
    loader /EFI/kali/grubx64.efi
    }
    
  6. Change the label which will appear on the Mac Startup Manager display. Enter the command given below.

    bless --folder /Volumes/EFI/EFI/BOOT --label Kali
    
  7. (Optional.) Install a Kali icon to appear on the Mac Startup Manager display. Use Safari to download Mac icns. Enter the following commands to install the icon.

    hdiutil attach ~/Downloads/mac-icns.dmg 
    cp /Volumes/mac-icns/OSX10.11.6/os_kali.icns /Volumes/EFI/.VolumeIcon.icns
    diskutil eject mac-icns
    
  8. Remove the ._* files. Enter the command given below.

    dot_clean /Volumes/EFI/EFI/BOOT
    
  9. Unmount the EFI volume. Enter the command given below.

    diskutil unmount disk0s1
    

I should point out that the Offensive Security macOS/Kali dual boot installation instructions replaced the Mac Startup Manager with the rEFInd Startup Manager. The installation procedure outlined by the OP seems to followed those of Offensive Security, but did not finish with the installation of rEFInd. The OP might consider continuing the installation by starting with the instructions in the section titled "Installing rEFInd using Kali Linux".