HOWTO : Perfect Dual Boot Kali Linux 1.0.6 on MacBook Air (Mid 2013) with rEFInd 0.7.7





IMPORTANT : DO NOT UPGRADE YOUR MAC OSX TO YOSEMITE (10.10) AS REFIND (Version 0.8.3) WILL NOT WORKING PROPERLY AND IT FAILS TO DUAL BOOT.





rEFInd version 0.8.4 is compatible with Mac OSX 10.10.x Yosemite. Existing users please refer to the official site for installation.






UPDATED FOR REFIND 0.8.3 on July 13, 2014




This tutorial is written for MacBook Air (may be other models of Apple computers) and Kali Linux users who want to dual boot Mac OSX and Kali Linux.



Pros :



(1) Use GRUB2 for EFI

(2) Simple and Easy to Use and Install

(3) Mac OSX can be Encrypted but reqires extra work (not in this HOWTO)

(4) Kali Linux can be Encrypted



Cons :



(1) Conexists with Mac OSX

(2) Kali Linux Bootable Live USB cannot be booted with rEFInd (use Option key to boot instead)



Background



Since Kali Linux 1.0.6 is based on Debian 7.0 (Wheezy) which is not EFI enabled by default, the GRUB2 (EFI) will not be installed when installing Kali Linux 1.0.6.



We need to use rEFInd which installed in Mac OSX and post-install the GRUB2 on Kali Linux. Meanwhile, the old GRUB should be removed before hand; otherwise, you will break the system.



Making of Kali Linux Install USB



Please refer to the Kali Linux Documentation of making the install USB at here.



You can also refer to this article for making a persistence USB for the installation if you do not have "Thunderbolt to Ethernet" or "USB 3.0 Gigabit USB LAN Adapter". These two devices can be recognized by Kali Linux out of the box.



Install rEFInd on MacBook Air



Boot up MacBook Air to Mac OSX. Download the rEFInd binary zip file and extract it. Go to "Downloads/refind-bin-0.7.7" "Downloads/refind-bin-0.8.3" and install the rEFInd.



cd Downloads/refind-bin-0.7.7 cd Downloads/refind-bin-0.8.3

sudo ./install.sh --alldrivers




Installation and Partitioning



At the MacBook Air with Mac OSX, execute the "Disk Utility". Create a new partition and making it as two, one is "Macintosh HD" and the new one is "Macintosh HD 2". Applied the change. Then remove the newest created partition (Macintosh HD 2). Do not format it and leave it as is. After that, shut it down.



Insert Kali Linux Live Install USB to the MacBook Air and then power on the MacBook Air with long pressing "Option" key. When the Kali Linux Boot Menu displayed. Select "Live (amd64)" and press "Tab" to append "persistence" at the end of the line. After that, press "Enter". Make sure you are connected to the internet. If not, your install will be failed.



The Kali Linux Live will be launched. Select "Install Kali Linux" from the Menu (Applications -- System Tools). Follow the instructions for the installation. Make sure you have a very strong root password. When you are prompted to do partitioning, you just select "Guided - use the largest continuous free space" for non-encryption installation. Do not select "entire disk" options as it will delete the Mac OSX partitions.



The partitioning for normal install is : /etc/sda1 is EFI, /etc/sda2 is Macintosh HD, /etc/sda3 is Recovery HD, /etc/sda4 is biosgrub (unformatted), /etc/sda5 is / (Kali Linux) and /etc/sda6 is SWAP.



If you want to install whole disk encryption, you need to select "Manual". Do not select "entire disk" options as it will delete the Mac OSX partitions. First of all, create a 400MB to 1024MB EXT2 partition which is mount to "/boot". Then, select "Configure encrypted volumes" and name it as "encrypt_vol" for the remaining available spaces. Choose "/dev/sda free #3" for the encrypt volume. Enter the strong "Encryption passphrase". After that, select "Configure the Logical Volume Manager". Create volume group and name it as "kali". Select "/dev/mapper/sda5_crypt" for the volume group. Select "Create logical volume" and name it as "root" with desired capacity. Re-select "Create logical volume" and name it as "swap" with the remaining spaces. Set mount point "/" as EXT4 for "LVM VG kali, LV root" and "swap" as SWAP for for "LVM VG kali, LV swap".



The encrypted volume should be "sda5_crypt" and it is /dev/sda5 too. We need to get its UUID for the bug fix later. It is because Kali Linux Manual partitioning has a serious bug that not allowing you to boot the box.



The partitioning for encryption install is : /etc/sda1 is EFI, /etc/sda2 is Macintosh HD, /etc/sda3 is Recovery HD, /etc/sda4 is /boot (Kali Linux, EXT2) and /etc/sda5 is Encrypted LVM volume which includes / and SWAP.



When asking for installing the GRUB to MBR, just skip it. We do not need it. If you do so, you will kill the system and you need to reinstall the Mac OSX. After that, wait for the installation to complete.



Install EFI on Kali Linux



When the installation is completed, it will return to the Live Kali Linux. Do not reboot it.



Open a terminal. And complete the following commands :



(A) Normal install without luks encryption



mkdir /mnt/root

mount /dev/sda5 /mnt/root



cd /mnt/root

mount -t proc proc proc/

mount -t sysfs sys sys/

mount -o bind /dev dev/

mkdir boot/efi

mount /dev/sda1 boot/efi



chroot /mnt/root



apt-get --purge remove grub-pc

apt-get --purge autoremove

apt-get install grub-efi-amd64



nano /etc/default/grub




Change from :



GRUB_CMDLINE_LINUX_DEFAULT="quiet"



Change to :



GRUB_CMDLINE_LINUX_DEFAULT="quiet apparmor=1 security=apparmor pcie_aspm=force radeon.dpm=1 acpi_backlight=vendor libata.force=noncq"



grub-install

update-grub



exit

reboot




(B) LVM with luks encryption



blkid /dev/sda5



Write down the UUID and the others for further use.



cryptsetup luksOpen /dev/sda5 sda5_crypt

vgchange -ay kali



mkdir /mnt/root

mount /dev/mapper/kali-root /mnt/root



cd /mnt/root

mount -t proc proc proc/

mount -t sysfs sys sys/

mount -o bind /dev dev/

mount /dev/sda4 boot/

mkdir boot/efi

mount /dev/sda1 boot/efi



chroot /mnt/root



apt-get --purge remove grub-pc

apt-get --purge autoremove

apt-get install grub-efi-amd64



nano /etc/default/grub




Change from :



GRUB_CMDLINE_LINUX_DEFAULT="quiet"



Change to :



GRUB_CMDLINE_LINUX_DEFAULT="quiet apparmor=1 security=apparmor pcie_aspm=force radeon.dpm=1 acpi_backlight=vendor libata.force=noncq"



grub-install

update-grub

update-initramfs -u



exit

reboot




In case if the Kali Linux cannot be booted and drop you to a initramfs shell. Do not panic. We can fix it.



cryptsetup luksOpen /dev/sda5 sda5_crypt

vgchange -ay

exit




The Kali Linux can be booted up fine. Upon booted up, you need to do the following :



update-initramfs -u



exit

reboot



Configuration of rEFInd



Boot to Mac OSX and configure the refind.conf.



sudo nano /EFI/refind/refind.conf



Change from :



scan_all_linux_kernels #scan_all_linux_kernels false



Change to :



#scan_all_linux_kernels scan_all_linux_kernels false



Then, you can boot to Kali Linux without problem.



Tailor-made Kali Linux



Boot to Kali Linux. Then configure it by refering to this guide and this guide.



That's all! See you.