Skip to content

Instantly share code, notes, and snippets.

@LaurentFough
Forked from andrsd/arch-mac-mini.md
Created April 18, 2020 17:49
Show Gist options
  • Save LaurentFough/dd42de696ac771974eeb5f4280bc83d3 to your computer and use it in GitHub Desktop.
Save LaurentFough/dd42de696ac771974eeb5f4280bc83d3 to your computer and use it in GitHub Desktop.
Install Arch linux on Mac Mini (late 2012)

Install Arch Linux on Mac mini

We will be creating dual boot for OS X and Linux with no special boot loader. For other setup, refer to [1]. We will keep all data on an external hard drive, so we do not need huge amount of space for the linux system. We will install from an USB thumb drive (will need at least 1GB in size), newer Minis do not have CD roms.

Prepare the disk in Mac OS X (El Capitan)

  • Open Disk Utility and select the disk (not partition), click Partition (top tool bar)
  • There are at least 3 partitions: EFI, OS X, Recovery. Only OS X will be shown.
  • Repartition your disk as follows:
    1. OS X (size: ~ tens of GB, type HFS+, for OS X)
    2. Arch tmp (size: ~ 10 GB, FAT, will be removed later)

Create LiveUSB that we will boot from

  • Download the .iso from download page
  • Open Terminal
  • $ diskutil list and find out its name (let's say it is /dev/disk2)
  • $ diskutil unmountDisk /dev/disk2 to unmount the drive
  • # dd if=/path/to/arch-linux-image.iso of=/dev/rdisk2 bs=1m (we replaced disk with rdisk which is the "raw" disk in OS X and a lot faster, it is not a typo)
  • $ diskutil eject /dev/disk2

Boot from LiveUSB

  • Hold Alt while booting
  • Select the USB disk
  • Welcome to Arch Linux installer ;-)

Installation

  • Connect to network

    • $ wifi-menu to setup wireless networking (assuming DHCP is available)
  • Setup time

    • $ timedatectl set-ntp true
    • Check its status $ timedatectl status
  • Partition the drive again ;-)

    • # cgdisk
    • Remove the Arch tmp partition we created earlier.
    • Remember to create 128 MB gap after OS X partitions, by typing +128M for the start of the partition.
    • Add new Arch boot partition (~ 100 MB)
    • Add new Arch root partition (fill the space)
    • Swap file can be created later if needed
  • Create file systems

    • # mkfs.ext2 /dev/<arch boot>
    • # mkfs.ext4 /dev/<arch root>
  • Mount the partitions

    • # mount /dev/<arch root> /mnt
    • # mkdir /mnt/boot
    • # mount /dev/<arch boot> /mnt/boot
  • Edit mirror list

    • # vim /etc/pacman.d/mirrorlist it will be used pac the next step, so take good care of it here
  • Install the base packages

    • # pacstrap /mnt base
  • Configure the system

    • # genfstab -U -p /mnt >> /mnt/etc/fstab
    • # arch-chroot /mnt /bin/bash
    • # echo <computer name> > /etc/hostname
    • # ln -s /usr/share/zoneinfo/<zone>/<subzone> /etc/localtime
    • # nano /etc/locale.gen uncomment locales you want
    • # locale-gen
    • # echo LANG=<your_locale> > /etc/locale.conf
    • TODO: setup wireless networking
    • # mkinitcpio -p linux
    • # passwd
    • # pacman -S gptfdisk

Boot loader

  • # mkdir /boot/efi
  • # mount /dev/<EFI partition>
  • # pacman -S grub efibootmgr
  • # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch
  • # grub-mkconfig -o /boot/grub/grub.cfg

Reboot

  • # exit or Ctrl + D
  • # umount -R /mnt
  • # reboot

Bluetooth

  • Install bluez bluez-libs bluez-utils

  • udev rule in /etc/udev/rules.d/10-local.rules:

    # Set bluetooth power up
    ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig hci0 up"
    

WiFi

Let's assume wlan is out interface for this setup.

  • Install b43-firmware from AUR

  • pacman -S wpa_supplicant

  • # vim /etc/wpa_supplicant/wpa_supplicant-wlan.conf

    ctrl_interface=/run/wpa_supplicant
    update_config=1
    
  • # wpa_supplicant -B -i wlan -c /etc/wpa_supplicant/wpa_supplicant-wlan.conf

  • # wpa_cli

    > scan
    > scan_results
    > add_network
    > set_network 0 ssid "MYSSID"
    > set_network 0 psk "passphrase"
    > enable_network 0
    > save_config
    
  • Or instead of wpa_cli, do wpa_passphrase MYSSID passphrase > /etc/wpa_supplicant/wpa_supplicant-wlan.conf

  • # dhcpcd wlan

Use systemd to start the service:

  • # ln -s /usr/share/dhcpcd/hooks/10-wpa_supplicant /usr/lib/dhcpcd/dhcpcd-hooks/
  • # systemctl enable dhcpcd@wlan

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment