New System76 Darter Pro 10 with Gentoo
I decided to get a System76 Darter Pro 10. It was to replace my Thinkbook 14s which was over 5 years old. The Thinkbook had been a replacement for an IdeaPad Y470p purchased early in 2012. Before the IdeaPad and Thinkbook, there were Thinkpads of various types. I had a lot of experience with Gentoo on my desktop, but the IdeaPad was the first laptop I went 100% Gentoo. It was rough, to put it mildly. Over 7 years with the IdeaPad, I was not going to start from scratch moving to the Thinkbook. I setup the Thinkbook drive, rsync’d the IdeaPad drive to the Thinkbook, tweaked everything, and recompiled. It worked but was not fun. The Darter Pro 10 was not going to be any different, I wanted a new laptop and not a “fresh” start.

The Darter Pro bonus (for me) is the second slot for the second M2 drive which in my system is empty. I inserted the old Thinkbook M2 in this slot and booted from my trusty Gentoo USB stick to setup the drive following the Gentoo Handbook. I made the ESP partition, a swap, and the rest of the 2T drive is root. Next, was to format the partitions: ESP fat32, mkswap, and finally the root drive JFS. Yes JFS, I am set in my ways and have never had a problem with it. After mounting the partitions of the Darter Pro drive and Thinkbook drive, I rsync’d the data from the old drive to the new drive.
Once the rsync was complete, the Thinkbook drive was removed and the Darter Pro got closed and rebooted using the USB. Next, mount the copied system and chroot into it, again as described in the Gentoo Handbook. As a note, once I boot a Gentoo system from the live USB, I start the ssh server after modifying the sshd_config to PasswordAuthentication yes then I change the password for the live system. This allows me to ssh into the live system for all the modifications.
I then tweaked the existing Thinkbook kernel config with Darter Pro parameters and modified the make.conf with the new Darter Pro parameters. Below is the first portion of my Darter Pro make.conf is below.
CFLAGS="-march=alderlake -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j15"
ACCEPT_LICENSE="*"
ABI_X86="64 32"
SYMLINK_LIB=no
LIBDIR_x86=lib
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sha sse sse2 sse3 sse4_1 sse4_2 ssse3 vpclmulqdq"
ALSA_CARDS="hda-intel"
INPUT_DEVICES="libinput"
VIDEO_CARDS="intel"
SANE_BACKENDS="hp"
LINGUAS="en_US"
L10N="en l10n_en-US"
DISTDIR=/var/cache/distfiles
EMERGE_DEFAULT_OPTS="--verbose --quiet-build=n --autounmask=y"
PORTDIR="/usr/portage"
GRUB_PLATFORMS="efi-64"
CURL_SSL="openssl"
FEATURES=""
LIBREOFFICE_EXTENSIONS="presenter-minimizer wiki-publisher"
LLVM_TARGETS="ARC BPF"
PYTHON_SINGLE_TARGET="python3_11"
PYTHON_TARGETS="python3_11 python3_12"
QEMU_SOFTMMU_TARGETS="arm x86_64 i386"
QEMU_USER_TARGETS="x86_64 i386"
The next step I perform is compile gcc and next the kernel. I use grub, so I reinstall grub and run grub-mkconfig. At this point I run the following:
emerge -v --update --deep --newuse --with-bdeps=y --autounmask-write --verbose-conflicts @world
Everything that has changed with the system should recompile. The steps getting to this point may vary for different people. My main objective is to get the sytem up and running on its own with minimal effort because recompiling the entire system while running off the live USB is painful. Luckily, the system came up into Gnome on the first boot, I cannot express how happy I was at that moment. I did do some more tweaks on the kernel and felt everything was good enough for the “big build”.
From this point it just becomes a rebuild grind. Step one, delete the old emerge logs, specifically /var/log/emerge.log. Next, rebuild the entire system:
emerge -ev --keep-going @world
I also use the –exclude gentoo-sources, as an example, to skip this package. Anyway, the previous command will start a rebuild of the entire system. Will it complete without error? I have rarely, if ever, had a complete system build not have issues. This is why I clear the old emerge logs and use the keep-going option. The build might start as 1 of 2100 packages to build and install and latter it might be 1 of 1900. I try to have impulse control and just let it go.
Once the build completes, the emerge.log will list all the failures. Some of the failures could be easy, for example, net-analyzer/nessus-bin in portage is not available any longer. That would be a “who cares” issue, but finding it and having to restart would be a killer and that is why I use the keep-going option. One of the more recent issues I have encountered is the gcc version. I have been using gcc 14 and some packages fail. The trick is to have a gcc 12 or 13 installed, temporarily eselect a lower gcc verson and attempt to complile. This clears a number of errors.
In the end, everything worked surprisingly well. This link is a Gitlab link which contains the original config when new running PopOS and my current config. The disclamer is that I use the JFS filesystem and no initramfs. The following are screen captures from the Gnome About windows:


Now, issues and what does not work. A quick glances at the journal has this warning:
CPU topo: Boot CPU APIC ID not the first enumerated APIC ID: 20 != 10
CPU topo: [Firmware Bug]: APIC enumeration order not specification compliant
I believe this warning is a firmware issue. However, I do get this APIC error:
ACPI Error: AE_NOT_FOUND, While resolving a named reference package element - \_SB_.PCI0.RP05.MCHC (20240827/dspkginit-438)
I think this is probably why Fn-Mic (Mute/Unmute Microphone) is not working. All the other Fn worked for me with the kernel system76 module. The mic works, just not the Fn key combination.
Anyway, that is it for now and I am incredibly happy with the Darter Pro 10.

System76 Darter Pro 10 Neofetch