Some months ago I got a MacBook Pro 13.3 for work, and since I’m much more comfortable in a Linux environment, I decided to install Fedora. I really like Apple’s hardware, especially the retina display, but for me, Fedora was the right OS to work with.
So let’s see what I did in order to install Fedora 24.
Boot Media
Still running OS X, download Fedora 24 Workstation ISO file from the following link. Then, follow these steps:
- Open terminal
- diskutil list
- Insert the USB pendrive that you want to make bootable
- diskutil list
- Take the new disk in the list. It should appear as /dev/diskX being X a certain number. (i.e. /dev/disk1)
- diskutil unmountDisk /dev/disk1
- sudo dd if=~/Downloads/Fedora-Live-Workstation-x86_64-24-10.iso of=/dev/rdisk1 bs=1m (see there is an ‘r’ in front of the disk name. This will make this process faster)
- Wait for some minutes to finish.
If you want to make a dual boot system (in order to keep Mac OS X), I suggest to open diskutil graphic application and make an empty partition of your disk.
Installation
Insert the USB drive where Fedora 24 ISO has been located and restart the laptop. Make sure to press Alt when it’s booting up. That way, you will be able to choose Fedora from the USB stick.
There are dozens of tutorials about how to install Fedora in general. Just follow the steps from the screen and configure date/timezone, users, network, partition table, etc.
Once the process has finished, remove the USB stick and reboot the system. Now, GRUB boot loader will show up and you will be able to boot Fedora 24!
OMG: I cannot boot Mac OS X!
Fixing things that are not working
Wireless Card
It really depends on the Wireless Network Card your MacBook has got, but in many ocassions, Wifi connection doesn’t work out of the box. It has a very simple solution:
sudo dnf install akmod-wl
Reboot and bang! it’s working…
Camera
Same kind of issue with the FacetimeHD camera integrated in the MacBooks. However, there is a great effort building a reverse-engineered driver that make it compatible with most of Linux/GNU distros:
https://github.com/patjak/bcwc_pcie
In order to build the driver succesfully, I’d recommend to install the following packages and make the build as root:
sudo dnf groupinstall "Development Tools"
sudo dnf install kernel-devel
There is a problem extracting the firmware so a very good friend of mine (Jean-Philippe Jung) has stored it here. Get the camera firmware (v1.43 as of OS X 10.11 El Capitan) from:
(https://www.dropbox.com/s/rt1o0enqo361o9b/firmware.bin?dl=0)
Firmware has to be copied to /usr/lib/firmware/facetimehd/firmware.bin
NOTE: This driver has been around for a while and it was valid up to Fedora 23. For Fedora 24 (kernel 4.5), there is this other fork that works fine (even the firmware extraction):
https://github.com/engstk/bcwc_pcie)
Backlight
See: https://github.com/patjak/mba6x_bl
Software and cuties
Some time ago I saw this video on youtube and it’s kind of my reference post-installation:
https://www.youtube.com/watch?v=TQ68l10Fy5M)
It explains very cool things like Gnome Tweak Tools, Fedy, Fusion Repos and other bunch of useful stuff. I’m gonna list some of my daily work applications:
- HexChat (IRC client)
- Chrome
- Atom
- Spotify
And for the shell terminal:
- Tmux
- Powerline
- Vim
- Vundle (Vim plugin manager)
Finally, this is the list of my Vim plugins to basically convert it into an IDE:
" " let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" vim-bubblegum
Plugin 'baskerville/bubblegum'
" vim-fugitive
Plugin 'tpope/vim-fugitive'
" vim-gitgutter
Plugin 'airblade/vim-gitgutter'
" vim-NERDTree
Plugin 'scrooloose/nerdtree'
Plugin 'Xuyuanp/nerdtree-git-plugin'
" vim-tagbar
Plugin 'majutsushi/tagbar'
" vim-flake8
Plugin 'nvie/vim-flake8'
" vim-python-pep8-indent
Plugin 'hynek/vim-python-pep8-indent'
" jedi-vim
Plugin 'davidhalter/jedi-vim'
" vim-virtualenv
Plugin 'jmcantrell/vim-virtualenv'
" vim-licenses
Plugin 'antoyo/vim-licenses'
" vim-snipmate
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
Plugin 'honza/vim-snippets'
" vim-syntastic
Plugin 'scrooloose/syntastic'
" vim-tbone
Plugin 'tpope/vim-tbone'
" tmuxline
Plugin 'edkolev/tmuxline.vim'