3 minute read

These are my notes on what I did to get Arch running on a MacBookPro 11,5 (Mid-2015)

My setup has no swap, EFI boot, encrypted root (single partition)

Disclaimer

These are very destructive procedures. I bare no responsibility for any damages done to your system.

Boot into the arch install USB

Live System Wifi

It is worth mentioning that I first connected to my wifi network using the iwctl utility. I actually didn’t make note of the commands there, but from memory I think they were:

station wlan0 connect MY_WIFI_SSID
station wlan0 show

Prep root password and SSH

My next step is to set a root password, enable root login in the sshd config, and start the sshd service.

Note: This unsafe SSH setup is for the live system only and does not propagate to the installed system.

Log in remotely and start setting up the system

I like to do this because all my notes are on a working, stable system. When I inevitably have to iterate, using remote access proves to be super useful.

First, let’s wipe our disk (you’ve been warned by the disclaimer!)

wipefs -a /dev/sda

Set up partitions

parted /dev/sda mklabel gpt
parted /dev/sda mkpart boot fat32 0% 1GB
parted /dev/sda set 1 esp on
parted /dev/sda mkpart luks 1GB 100%

Set up encryption

cryptsetup -y -v luksFormat /dev/sda2
cryptsetup open /dev/sda2 root

Optional: Fill up the disk space (takes a long time)

dd if=/dev/urandom of=/dev/mapper/root bs=1M

Create rootFS and mount

mkfs.xfs /dev/mapper/root
mount /dev/mapper/root /mnt

Set up the EFI partition

mkfs.fat -F32 /dev/sda1
mount --mkdir /dev/sda1 /mnt/boot

Basic bootstrap & fstab & chroot

pacstrap -K /mnt base linux linux-firmware
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt

Can’t live without vim

pacman -Syu --noconfirm vim

Timezone, timesync

ln -sf /usr/share/zoneinfo/Europe/Dublin /etc/localtime
hwclock --systohc

Locale

localectl set-locale LANG=en_US.UTF-8
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
locale-gen

# These two commands are just for the current session. May not be needed
unset LANG
source /etc/profile.d/locale.sh

Hostname

echo myhostname > /etc/hostname

initramfs modifications in /etc/mkinitcpio.conf We want the amdgpu driver to have precedence over radeon

HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt filesystems fsck)
MODULES=(amdgpu radeon)

Ensure we are using the amdgpu with the appropriate family support

echo "options amdgpu si_support=1" > /etc/modprobe.d/amdgpu.conf
echo "options radeon si_support=0" > /etc/modprobe.d/radeon.conf

Install xfsprogs before we re-bake initramfs

pacman -Syu --noconfirm xfsprogs
mkinitcpio -P

Gnome & friends

pacman -Syu --noconfirm mesa libva-mesa-driver mesa-vdpau vulkan-radeon vulkan-intel
pacman -Syu --noconfirm gnome gnome-extra

Enable gdm

systemctl enable gdm

More software…

pacman -Syu --noconfirm less rsync firefox htop i2c-tools lm_sensors aspell hunspell hunspell-en_us hunspell-en_gb wget

Devel and AUR software

pacman -S --needed base-devel git

Audio software

pacman -Syu --noconfirm sudo networkmanager
pacman -Syu --noconfirm pipewire wireplumber alsa-utils 

Enable networkmanager and sshd

systemctl enable NetworkManager
systemctl enable sshd

Enable gnome power control panel options

pacman -Syu power-profiles-daemon
systemctl enable power-profiles-daemon

Add my user

useradd -m myusername
passwd myusername
usermod -aG wheel myusername

Root password

passwd

Install and setup refind (needed for osx spoofing)

pacman -Syu --noconfirm refind
refind-install

Edit /boot/efi/EFI/refind/refind.conf

spoof_osx_version 10.11

List our encrypted root block device ID

ls -l /dev/disk/by-uuid/ | grep sda2
# lrwxrwxrwx 1 root root 10 May  5 15:01 EXAMPLE_UUID -> ../../sda2

Edit /boot/refind_linux.conf. Find “Boot with Standard options” (first entry). Add the following kernel options

Make sure to use the correct UUID as per what we got above. The brcmfmac.feature_disable=0x82000 stanza hais from this solution. WiFi is currently broken without this stanza.

"Boot with standard options"  "amdgpu.aspm=0 acpi_osi=Darwin acpi_backlight=native radeon.si_support=0 amdgpu.si_support=1 cryptdevice=UUID=EXAMPLE_UUID:root root=/dev/mapper/root rw add_efi_memmap intel_iommu=on iommu=pt brcmfmac.feature_disable=0x82000"

Disable suspend. We do this because currently there is a, what looks like, a kernel bug that crashes amdgpu on S3 suspend.

mkdir /etc/systemd/sleep.conf.d
vim /etc/systemd/sleep.conf.d/disable-suspend.conf
[Sleep]
AllowSuspend=no
AllowHibernation=no
AllowHybridSleep=no
AllowSuspendThenHibernate=no

Finally…

exit
umount -R /mnt
reboot

References

General Arch installation references

  • https://wiki.archlinux.org/title/Installation_guide
  • https://wiki.archlinux.org/title/Arch_boot_process#Boot_loader
  • https://wiki.archlinux.org/title/REFInd
  • https://www.rodsbooks.com/refind/linux.html#easiest
  • https://wiki.archlinux.org/title/Dm-crypt/Encrypting_an_entire_system#LUKS_on_a_partition
  • https://wiki.archlinux.org/title/MacBookPro11,x

Arch sound references

  • https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture
  • https://wiki.archlinux.org/title/PipeWire
  • https://wiki.archlinux.org/title/WirePlumber

Power management references

  • https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate

Graphics references

Comments