-
Notifications
You must be signed in to change notification settings - Fork 50
Installing Gentoo with LiveCD
Installing Gentoo on Apple Silicon is not that different to doing so on a bog-standard amd64 machine. We leverage the Asahi installer and the Asahi Linux Minimal environment to bootstrap a secret sauce version of the Gentoo LiveCD image, which allows us to follow the Handbook pretty closely.
The only major deviation from the Handbook is using chadmed's asahi-gentoosupport
package to automate the
installation of the kernel, GRUB, overlay, m1n1, and U-Boot. You are of course welcome to attempt installing
these manually, however it will take you longer than bootstrapping the rest of the system combined.
This guide will assume that you are familiar withe the Asahi Linux installer and will not walk you through using it.
It is important to note that the ESP must be mounted at /boot/efi
for certain Asahi scripts to function properly.
As such, it is best if you put it in /etc/fstab
and leave it there.
If you've never used a Portage overlay before, take a few minutes to read the final section on maintaining the system. Failure to do so properly may result in you missing critical system updates or leaving your machine in an unbootable state.
-
When upgrading the kernel, you must pass
--all-ramdisk-modules
togenkernel
for building the initramfs. Since we have some required softdeps for booting, failing to put all modules in the initramfs will leave your system in an unbootable state. Of course, this only applies if you actually use an initramfs. -
If you are using the
asahi-audio
package, PipeWire must be compiled withextra
andgstreamer
USE flags. Failing to do so will stop PipeWire from being linked againstlibsndfile
, which will stop the FIRs from loading. -
If you are switching your toolchain to clang/LLVM, be sure to force
kmod
to be built with gcc. Your system will be unbootable if you try building with clang!
Install Asahi Linux Minimal (with more than the minimal disk space, 12GB worked) and set up networking. The environment comes with iwd and NetworkManager for setting up WiFi. Ethernet connections should be handled automatically at boot.
Update the system by running pacman -Syu
as root (or sudo pacman -Syu
when you installed AsahiLinux Desktop).
Reboot into Asahi Linux.
Install Git by running pacman -S git
/sudo pacman -S git
..
Step 2: Clone asahi-gentoosupport
This repo automates setting up the LiveCD for booting on Apple Silicon. Clone it somewhere and enter the directory.
Get the latest install-arm64-minimal image from the Gentoo site. It's probably easiest to do this by installing a text
based web browser such as links
. Save this image to the directory you cloned asahi-gentoosupport
to as install.iso
.
It must be called install.iso
.
Run ./genstrap.sh
inside the asahi-gentoosupport
directory. This will automatically prepare the system and LiveCD image for booting by
- Extracting the SquashFS from the LiveCD
- Injecting the
linux-asahi
kernel modules and firmware into it - Wrapping the SquashFS in an initramfs
- Adding a GRUB menu entry for the installer
Reboot the machine. When the GRUB menu appears, select Gentoo Live Install Environment. This will boot you to the standard LiveCD. From here, install Gentoo as you normally would, stopping when it's time to install the kernel and bootloader.
Note: It is absolutely imperative that you DO NOT alter any other partition on the system, including the EFI System Partition set up by Asahi Linux. You are free to do anything you wish to the partition that was previously your Asahi Linux root filesystem, such as shrinking it to add some swap space, but never, ever delete any APFS partition or the Asahi EFI System partition. You have been warned...
Merge Git by running emerge -av dev-vcs/git
, then clone asahi-gentoosupport
again. Run ./install.sh
and follow the prompts. This will
- Install the Asahi Overlay, which provides the kernel, boot tooling and (possibly) patched packages
- Install the boot tooling and firmware required for Apple Silicon machines to function correctly
- Merge the Asahi Linux kernel sources as
asahi-sources
, replacing the standardgentoo-sources
package - Copy the running kernel's config to
/usr/src/linux/.config
- Automate building the kernel
Kbuild may ask you about certain Kconfig options. Just accept its defaults for now.
This allows you to skip setting up GRUB, the kernel, and the boot tooling yourself which can be a bit of a hassle on these machines and may leave you with an unbootable Linux setup.
Finish off the rest of your usual Gentoo install procedure, reboot, and have fun! It's a good idea to customise the kernel as you see fit since the running config will be based on Arch/Asahi Linux. Remember to save the running kernel and initramfs as a fallback so you can easily boot it from GRUB should anything go wrong.
Getting and applying system updates is a little more involved than a totally vanilla Gentoo installation. You need to keep the Asahi overlay synced and make sure that system firmware is updated correctly.
When you update the U-Boot or m1n1 packages, Portage will only install the resultant binaries to /usr/lib/asahi-boot/
.
This is both a security and a reliability measure. m1n1 ships with a script, update-m1n1
, which must be run as root
every time you update the kernel, U-Boot, or m1n1 itself. This script is responsible for collecting the m1n1, U-Boot
and Devicetree blobs, packaging them up into a single binary object, and installing it on the EFI System Partition.
For more information on how this works and why it must work this way, consult Open OS ecosystem on Apple Silicon Macs
When you are running through a kernel upgrade, it is extremely important that you update the Stage 2 m1n1 payload at the same time. m1n1 Stage 2 contains the Devicetree blobs required for the kernel to find the hardware, probe it properly, and boot the system. Devicetrees are not stable, and a kernel upgrade with new DTs may result in an unbootable system, loss of function, or missing out on a newly enabled feature. To make sure this does not occur, it is imperative that you run
root# update-m1n1
after every kernel upgrade.
In order to receive Asahi-specific updates, you must ensure that the Asahi overlay remains synchronised. By default,
Portage will not do this for you. In addition to emerge --sync
or emerge-webrsync
, you must also run
root# emaint -r asahi sync
before trying to update. No other steps are necessary to make sure that packages are updated, just update your system like you normally would at this point.
Wiki for the Asahi Linux project: https://asahilinux.org/