commit b5a7af4ad1d98590c1a7acbbba63543e09243fb9
parent b97f395fec3aeebb0d1523f168341d9250dd5923
Author: Jack Sangdahl <jack@pngu.org>
Date: Wed, 25 Feb 2026 21:43:59 -0700
Add completed Artix Laptop page
Small updates elsewhere
Diffstat:
6 files changed, 494 insertions(+), 4 deletions(-)
diff --git a/artix_laptop.html b/artix_laptop.html
@@ -9,9 +9,355 @@
<body>
<a style="text-decoration: none" href="content.html"><--</a>
<h2>Artix Laptop</h2>
- <p><i>2026-02-19</i></p>
+ <p><i>2024-11-19</i></p>
<hr />
- <p>This page covers my 2013 Macbook Air (A1466) running Artix Linux.</p>
+ <p>
+ This page covers various features, hardware, and notes of my 2015 Macbook Air 7,2 (A1466)
+ running Artix Linux. This is my primary system out and about. My system configuration can be
+ found
+ <a href="https://git.pngu.org/dots/tree/?h=pluto" target="_blank">here</a>. The programs I use
+ on this system can mostly found <a href="programs.html">here</a>.
+ </p>
+ <h3>Hardware</h3>
+ <h4>Hardware Overview</h4>
+ <ul>
+ <li>Intel i7 5650U 4-core @ 2.20GHz</li>
+ <li>Intel 3rd Gen Graphics</li>
+ <li>8 GiB Memory</li>
+ <li>1 TB NVMe Samsung 970 SSD</li>
+ <li>Broadcom BCM4360 Network Controller</li>
+ <li>Broadcom BCM2046 Bluetooth Controller</li>
+ <li>Broadcom BCM5974 Touchpad</li>
+ <li>13" 1440x900 LCD Display</li>
+ <li>2x USB 3.0, 1x SDXC Reader, 1x Thunderbolt 2</li>
+ <li>
+ <a href="data/laptop_lspci" target="_blank"><code>lspci</code></a
+ >, <a href="data/laptop_lscpu" target="_blank"><code>lscpu</code></a>
+ </li>
+ </ul>
+ <h4>Hardware Modifications</h4>
+ <h5>SSD</h5>
+ <p>
+ Since Apple began using NVMe SSDs, they have used own proprietary ones with non-standard
+ connectors. This machine originally came with a 128 GiB Samsung "blade" SSD, which I was not
+ keen on keeping. There exists
+ <a href="https://www.microconnectors.com/macbook-m-2-nvme-upgrade-adapter" target="_blank"
+ >adapters</a
+ >
+ which act as a bridge between a standard NVMe SSD and Apple's connector. Installation is quite
+ straight forward and takes about 5 minutes.
+ </p>
+ <h5>Battery</h5>
+ <p>
+ Ten years on, this laptop's original battery lasted about 30 minutes and would lose power
+ randomly. A suitable
+ <a
+ href="https://www.ifixit.com/products/macbook-air-13-late-2010-2017-replacement-battery"
+ target="_blank"
+ >replacement</a
+ >
+ can be found for about 60 USD (or less on Aliexpress...). With this, battery life is about 5
+ hours, which is half decent for an Intel laptop, and mostly acccredited to TLP and thermald.
+ </p>
+ <h5>RAM</h5>
+ <p>
+ While not done on this specific model, I replaced the original 4 GiB of memory present on one
+ of my other similar (EMC2559) Macbooks with
+ <a href="https://www.aliexpress.com/item/3256808958665315.html" target="_blank"
+ >16 GiB memory</a
+ >. This was not particularly difficult, but time consuming — it took about 10 hours
+ total. This
+ <a href="https://rewa.tech/upgrade-macbook-air-a1466-to-i7-cpu-16gb-ram" target="_blank"
+ >write up</a
+ >
+ was particularly helpful, especially regarding the resistor modifications.
+ </p>
+ <img class="inline-image" src="data/laptop_open.jpg" alt="laptop_open.jpg" />
+ <h3>System</h3>
+ <h4>File System</h4>
+ <h5>Overview</h5>
+ <p>
+ One of the notable aspects is the fact the entire installation uses the
+ <a href="https://openzfs.github.io/openzfs-docs" target="_blank">Z file system (ZFS)</a>. This
+ poses a bit of a learning curve for first time ZFS users, however is ultimately very
+ convenient for the file system and logical volume manager to be combined in one tool. While
+ many of ZFS's features are not all that important on a laptop like this, some are still nice
+ to have like snapshots. I have one (root) pool that splits up the standard layout of a Linux
+ system into multiple datasets:
+ </p>
+ <pre><code>NAME USED AVAIL REFER MOUNTPOINT
+kepler_rpool 30.7G 904G 96K none
+kepler_rpool/DATA 14.3G 904G 96K none
+kepler_rpool/DATA/default 14.3G 904G 96K none
+kepler_rpool/DATA/default/home 14.2G 904G 14.2G /home
+kepler_rpool/DATA/default/opt 116M 904G 116M /opt
+kepler_rpool/DATA/default/root 200K 904G 200K /root
+kepler_rpool/DATA/default/usr 1.02M 904G 96K /usr
+kepler_rpool/DATA/default/usr/local 952K 904G 952K /usr/local
+kepler_rpool/DATA/default/var 628K 904G 96K /var
+kepler_rpool/DATA/default/var/lib 96K 904G 96K /var/lib
+kepler_rpool/DATA/default/var/log 316K 904G 316K /var/log
+kepler_rpool/DATA/default/var/tmp 120K 904G 120K /var/tmp
+kepler_rpool/ROOT 16.4G 904G 96K none
+kepler_rpool/ROOT/default 16.4G 904G 14.3G /</code></pre>
+ <p>
+ This system has no need for a separate boot pool, as there is no bootloader. Another fun note
+ is that because ZFS handles mounting all partitions, there is no need for a
+ <code>/etc/fstab</code> file on this system.
+ </p>
+ <h5>Kernel Version</h5>
+ <p>
+ An important note about ZFS, is that is not compatible with mainline kernel development, and
+ lags a couple releases behind. Check release notes
+ <a href="https://github.com/openzfs/zfs/releases" target="_blank">here</a> for what version
+ ZFS is installed and pin kernel and kernel headers packages at something appropriate. This can
+ be done in Pacman like:
+ </p>
+ <pre><code>curl -O https://archive.archlinux.org/packages/l/linux-lts/linux-lts-6.12.74-1-x86_64.pkg.tar.zst
+curl -O https://archive.archlinux.org/packages/l/linux-lts-headers/linux-lts-headers-6.12.74-1-x86_64.pkg.tar.zst
+
+pacman -U linux-lts-6.12.74-1-x86_64.pkg.tar.zst
+pacman -U linux-lts-headers-6.12.74-1-x86_64.pkg.tar.zst</code></pre>
+ <p>
+ And add <code>linux-lts</code> and <code>linux-lts-headers</code> under the
+ <code>IgnorePkg</code> field in <code>/etc/pacman.conf</code> to prevent these packages from
+ automatically being upgraded.
+ </p>
+ <h5>Live Environment</h5>
+ <p>
+ There have been a couple times where I need to access this system via a live USB environment,
+ which is a little different than a system with a more typical file system. The first
+ consideration is that the live system must include ZFS utilities (<code>zfs-utils</code>) and
+ kernel modules (<code>zfs-dkms</code>). These can of course be obtained in the live
+ environment with a network connection, however, the kernel driver for this laptop's network
+ controller is not part of the Linux kernel. Thus, a network connection proves to be quite a
+ hassle. Ubuntu ISO images (e.g. 24.04 LTS) include both of these tools and make a suitable
+ live environment.
+ <br />
+ Once in the live environment and loading the ZFS kernel module, it is important to ensure the
+ Ubuntu system does not write its <code>hostid</code> to the zpool (<code>kepler_rpool</code>
+ in this case). Import it with no cache file and to an appropriate temporary location:
+ </p>
+ <pre><code>zpool import -f -o cachefile=none -o altroot=/mnt -R /mnt kepler_rpool</code></pre>
+ <p>Once imported, mounted pseudo file systems and <code>chroot</code> as normal:</p>
+ <pre><code>mount --rbind /dev /mnt/dev
+mount --rbind /sys /mnt/sys
+mount --rbind /proc /mnt/proc
+mount --rbind /run /mnt/run
+
+chroot /mnt /bin/bash</code></pre>
+ <p>After fixing whatever is broke, exit and export pool(s):</p>
+ <pre><code>exit
+zpool export kepler_rpool
+umount -a
+ </code></pre>
+ <h4>Bootloader</h4>
+ <p>
+ As eluded to above, this system does not have a traditional bootloader, like GRUB. Being a
+ laptop, my needs are fairly minimal, and I have no need for alternate operating systems or
+ multiple kernels. Thus, a
+ <a href="https://uapi-group.org/specifications/specs/unified_kernel_image" target="_blank"
+ >UKI</a
+ >
+ can be used. This creates a bootable image that includes microcode, kernel image, etc. into
+ one binary that can be exposed to BIOS and booted via UEFI, or also a bootloader like GRUB. As
+ this system uses ZFS, configuring this is not quite as straight forward as my
+ <a href="gentoo_desktop.html/">Gentoo system's UKI</a>, but still doable.
+ </p>
+ <ol>
+ <li>
+ <p>
+ A "stub loader" is required, which is part of the Systemd package. Unfortunately, no such
+ package exists for Artix that includes only systemd utilities with no dependency on other
+ systemd components, like
+ <a href="https://packages.gentoo.org/packages/sys-apps/systemd-utils" target="_blank"
+ >there is for Gentoo</a
+ >. Luckily, the single file needed from systemd is a portable executable that handles the
+ transition between UEFI and the Linux kernel;
+ <a href="https://man.archlinux.org/man/linuxx64.efi.stub.7.en" target="_blank"
+ ><code>linuxx64.efi.stub</code></a
+ >. Obtain this file manually from the systemd package:
+ </p>
+ <pre><code>curl -O https://archive.archlinux.org/packages/s/systemd/systemd-259.1-1-x86_64.pkg.tar.zst
+bsdtar -xvf systemd-259.1-1-x86_64.pkg.tar.zst
+cp usr/lib/systemd/boot/efi/linuxx64.efi.stub /usr/lib/systemd/boot/efi/</code></pre>
+ <p>
+ Create this directory and its parents if needed. Dracut will search for this executable
+ here.
+ </p>
+ </li>
+ <li>
+ <p>
+ Dracut is the tool itself that creates the UKI. On a system using ZFS and OpenRC, some
+ additional configuration is needed to omit some systemd modules that will not exist on
+ this system, include ZFS-specific modules and files, and set the kernel command line
+ parameters.
+ </p>
+ <pre><code class="language-shell"># /etc/dracut.conf.d/uki_openrc_zfs.conf
+
+omit_dracutmodules+=" systemd-initrd systemd-networkd dracut-systemd "
+
+install_items+=" /etc/hostid /etc/zfs/zpool.cache "
+add_dracutmodules+=" zfs "
+filesystems+=" zfs "
+
+kernel_cmdline="root=ZFS=kepler_rpool/ROOT/default ro"
+ </code></pre>
+ </li>
+ <li>
+ <p>
+ Now, generate and install the UKI itself. On this system, since the ESP is not used at
+ runtime at all and does not need to be mounted, it is simply a VFAT filesystem on a 512 M
+ partition. In the case of this system, first mount this partition:
+ </p>
+ <pre><code>mount /dev/sda1 /boot</code></pre>
+ <p>Create the UKI (create the appropriate directories as necessary):</p>
+ <pre><code>dracut --uefi /boot/efi/EFI/Linux/artix-zfs-linux-$(uname -r) $(uname-r)</code></pre>
+ The directory should look like:
+ <pre><code>tree /boot
+/boot
+/boot/EFI
+/boot/EFI/Linux
+/boot/EFI/Linux/artix-zfs-linux-x.y.z</code></pre>
+ <p>Create a UEFI entry to expose the EFI stub using <code>efibootmgr</code>:</p>
+
+ <pre><code>efibootmgr --create --disk /dev/sdX --part partition_number --label "Artix Linux x.y.z" --loader 'EFI\Linux\artix-zfs-linux-$(uname -r).efi'</code></pre>
+ <p>
+ Above, the <code>disk</code> parameter should be only the identifier of the entire disk
+ (e.g. <code>sda</code>), and the <code>part</code> parameter is the partition number (e.g.
+ simply "1" if the ESP is on <code>/dev/sda1</code>).
+ </p>
+ </li>
+ </ol>
+ <h4>Laptop Utilities</h4>
+ <p>tlp, thermald, brightnessctl</p>
+ <p>
+ Across most of my systems, many of the utilities remain the same. There are a couple extra
+ packages that are useful on a laptop, or at least this one.
+ </p>
+ <ul>
+ <li>
+ <a href="https://github.com/Hummer12007/brightnessctl" target="_blank">brightnessctl</a>
+ <p>
+ Used to control both display brightness and keyboard backlight. On this hardware,
+ <code>CONFIG_APPLE_BACKLIGHT</code> and <code>CONFIG_SENSORS_APPLESMC</code> must be set
+ in the kernel. This functionality can be mapped in Sway:
+ </p>
+ <pre><code>bindsym XF86MonBrightnessDown exec brightnessctl -q set 10%-
+bindsym XF86MonBrightnessUp exec brightnessctl -q set +10%
+bindsym XF86KbdBrightnessDown exec brightnessctl -q --device='smc::kbd_backlight' set 10%-
+bindsym XF86KbdBrightnessUp exec brightnessctl -q --device='smc::kbd_backlight' set +10%</code></pre>
+ </li>
+ <li>
+ <a href="https://github.com/linrunner/TLP" target="_blank">TLP</a>
+ <p>
+ A tool that helps manage and conserve power usage on laptops. Requires zero configuration
+ and shows quite noticeable differences. Simply enable and start the service.
+ </p>
+ </li>
+ <li>
+ <a href="https://github.com/intel/thermal_daemon" target="_blank">thermald</a>
+ <p>
+ A tool for Intel CPUs that manages thermal state and prevents overheating. Knowing that
+ Intel processors run on the warmer and less energy efficient side, this both helps
+ conserve energy and prevent burns. Also requires zero configuration, and simply for the
+ service to be started.
+ </p>
+ </li>
+ </ul>
+ <h4>Miscellaneous</h4>
+ <h5>Pacman Hooks</h5>
+ <p>
+ The Pacman package manager has a feature that allows for a script to be run at some point
+ during its execution — e.g. after package installation, before, etc. I use this for two
+ things:
+ </p>
+ <ol>
+ <li>
+ <p>
+ Pacman archives multiple versions of packages after updating or even removing then (the
+ latter is actually quite useful if you, perhaps, are over eager and remove a package
+ required for networking, it can be reinstalled easily, despite you breaking your network
+ connectivity). The <code>paccache</code> tool from
+ <a href="https://archlinux.org/packages/extra/x86_64/pacman-contrib" target="_blank"
+ >pacman-contrib</a
+ >
+ package removes these cached files, but also allows for, say, 2 versions to be kept.
+ </p>
+ <pre><code># /etc/pacman.d/hooks/cache_cleanup.hook
+
+[Trigger]
+Type = Package
+Operation = Remove
+Operation = Install
+Operation = Upgrade
+Target = *
+
+[Action]
+Description = Removing unnecessary cached files...
+When = PostTransaction
+Exec = /usr/bin/paccache -rvk2</code></pre>
+ </li>
+ <li>
+ <p>
+ I have a preference to use Clang over GCC for compiling code locally. I also have a habit
+ of calling <code>cc foo.c</code>, rather than the full utility. The GCC package (from the
+ Arch repositories at least) is who owns/installs the <code>/usr/bin/cc</code> symlink.
+ This Pacman hook "fixes" this.
+ </p>
+ <pre><code># /etc/pacman.d/hooks/cc_link_clang.hook
+
+[Trigger]
+Operation = Install
+Operation = Upgrade
+Type = Package
+Target = gcc
+
+[Action]
+Description = Replacing /usr/bin/cc symlink with Clang after GCC update
+When = PostTransaction
+Exec = /usr/bin/ln -f /usr/bin/clang /usr/bin/cc
+Depends = clang</code></pre>
+ </li>
+ </ol>
+ <h5>Disable Startup Chime</h5>
+ <p>
+ Another QOL modification for me was disable the (obnoxious) startup sound present on all Macs.
+ This can be achieved by modifying an EFI variable. This requires the
+ <code>CONFIG_EFIVAR_FS</code> parameter to be set, although most configurations should enable
+ this by default. Install the
+ <a href="https://archlinux.org/packages/?name=efivar" target="_blank">efivar</a> package and
+ mount the <code>efivarfs</code> partition:
+ </p>
+ <pre><code>mount -t efivarfs efivarfs /sys/firmware/efi/efivars</code></pre>
+ <p>
+ This partition does not need to remain mounted after modification. The follow commands that
+ actually make the changes must be ran as proper root, not just with elevated permissions.
+ </p>
+ <ol>
+ <li>
+ <p>
+ Remove the immutable flag from the appropriate file. This should remain the same across
+ most Macbooks, however one can list out available efivars to be sure:
+ </p>
+ <pre><code>chattr -i /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82</code></pre>
+ </li>
+ <li>
+ <p>
+ Mac's EFI terminal uses the
+ <a href="https://en.wikipedia.org/wiki/ANSI_escape_code#C0_control_codes" target="_blank"
+ >bell code</a
+ >, <code>0x07</code>, to audibly play system messages/warnings. It can be set to null
+ characters to silence it:
+ </p>
+ <pre><code>printf "\x07\x00\x00\x00\x00" > /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82</code></pre>
+ </li>
+ <li>
+ <p>Lastly, replace the immutable flag:</p>
+ <pre><code>chattr +i /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82</code></pre>
+ </li>
+ </ol>
+ <h3>Screenshots</h3>
<img
class="inline-image"
src="https://raw.githubusercontent.com/waffle87/dots/refs/heads/kepler/.img/fetch.png"
diff --git a/content.html b/content.html
@@ -35,7 +35,7 @@
<li><a href="hardware_key.html">Linux Hardware Authenticator Key</a></li>
</ul>
<h4>Miscellaneous</h4>
- <p>Mostly system configuration notes for myself</p>
+ <p>Mostly notes for myself</p>
<ul>
<li><a href="gpg_key_git.html">GPG key signing with Git</a></li>
<li><a href="ssh_agent.html">SSH agent for password-less login</a></li>
diff --git a/data/laptop_lscpu b/data/laptop_lscpu
@@ -0,0 +1,61 @@
+Architecture: x86_64
+ CPU op-mode(s): 32-bit, 64-bit
+ Address sizes: 39 bits physical, 48 bits virtual
+ Byte Order: Little Endian
+CPU(s): 4
+ On-line CPU(s) list: 0-3
+Vendor ID: GenuineIntel
+ Model name: Intel(R) Core(TM) i7-5650U CPU @ 2.20GHz
+ CPU family: 6
+ Model: 61
+ Thread(s) per core: 2
+ Core(s) per socket: 2
+ Socket(s): 1
+ Stepping: 4
+ CPU(s) scaling MHz: 36%
+ CPU max MHz: 3200.0000
+ CPU min MHz: 500.0000
+ BogoMIPS: 4401.45
+ Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge m
+ ca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 s
+ s ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc
+ arch_perfmon pebs bts rep_good nopl xtopology nonstop_
+ tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_c
+ pl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid
+ sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer a
+ es xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpu
+ id_fault epb pti ssbd ibrs ibpb stibp tpr_shadow flexp
+ riority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle a
+ vx2 smep bmi2 erms invpcid rtm rdseed adx smap intel_p
+ t xsaveopt dtherm ida arat pln pts vnmi md_clear flush
+ _l1d
+Virtualization features:
+ Virtualization: VT-x
+Caches (sum of all):
+ L1d: 64 KiB (2 instances)
+ L1i: 64 KiB (2 instances)
+ L2: 512 KiB (2 instances)
+ L3: 4 MiB (1 instance)
+NUMA:
+ NUMA node(s): 1
+ NUMA node0 CPU(s): 0-3
+Vulnerabilities:
+ Gather data sampling: Not affected
+ Itlb multihit: KVM: Mitigation: VMX disabled
+ L1tf: Mitigation; PTE Inversion; VMX conditional cache flush
+ es, SMT vulnerable
+ Mds: Mitigation; Clear CPU buffers; SMT vulnerable
+ Meltdown: Mitigation; PTI
+ Mmio stale data: Unknown: No mitigations
+ Reg file data sampling: Not affected
+ Retbleed: Not affected
+ Spec rstack overflow: Not affected
+ Spec store bypass: Mitigation; Speculative Store Bypass disabled via prct
+ l
+ Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointe
+ r sanitization
+ Spectre v2: Mitigation; Retpolines; IBPB conditional; IBRS_FW; STI
+ BP conditional; RSB filling; PBRSB-eIBRS Not affected;
+ BHI Not affected
+ Srbds: Mitigation; Microcode
+ Tsx async abort: Mitigation; Clear CPU buffers; SMT vulnerable
diff --git a/data/laptop_lspci b/data/laptop_lspci
@@ -0,0 +1,82 @@
+00:00.0 Host bridge: Intel Corporation Broadwell-U Host Bridge -OPI (rev 09)
+ DeviceName: SATA
+ Subsystem: Apple Inc. Device 011b
+ Kernel driver in use: bdw_uncore
+00:02.0 VGA compatible controller: Intel Corporation Broadwell-U GT3 [HD Graphics 6000] (rev 09)
+ Subsystem: Apple Inc. Device 011b
+ Kernel driver in use: i915
+ Kernel modules: i915
+00:03.0 Audio device: Intel Corporation Broadwell-U Audio Controller (rev 09)
+ Subsystem: Apple Inc. Device 011b
+ Kernel driver in use: snd_hda_intel
+ Kernel modules: snd_hda_intel
+00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: xhci_hcd
+ Kernel modules: xhci_pci
+00:15.0 DMA controller: Intel Corporation Wildcat Point-LP Serial IO DMA Controller (rev 03)
+ Subsystem: Intel Corporation Wildcat Point-LP Serial IO DMA Controller
+ Kernel driver in use: dw_dmac_pci
+00:15.4 Serial bus controller: Intel Corporation Wildcat Point-LP Serial IO GSPI Controller #1 (rev 03)
+ Subsystem: Intel Corporation Wildcat Point-LP Serial IO GSPI Controller #1
+ Kernel driver in use: pxa2xx_spi_pci
+ Kernel modules: spi_pxa2xx_pci
+00:16.0 Communication controller: Intel Corporation Wildcat Point-LP MEI Controller #1 (rev 03)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: mei_me
+ Kernel modules: mei_me
+00:1b.0 Audio device: Intel Corporation Wildcat Point-LP High Definition Audio Controller (rev 03)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: snd_hda_intel
+ Kernel modules: snd_hda_intel
+00:1c.0 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #1 (rev e3)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: pcieport
+00:1c.1 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #2 (rev e3)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: pcieport
+00:1c.2 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #3 (rev e3)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: pcieport
+00:1c.4 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #5 (rev e3)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: pcieport
+00:1c.5 PCI bridge: Intel Corporation Wildcat Point-LP PCI Express Root Port #6 (rev e3)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: pcieport
+00:1f.0 ISA bridge: Intel Corporation Wildcat Point-LP LPC Controller (rev 03)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: lpc_ich
+ Kernel modules: lpc_ich
+00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: i801_smbus
+ Kernel modules: i2c_i801
+00:1f.6 Signal processing controller: Intel Corporation Wildcat Point-LP Thermal Management Controller (rev 03)
+ Subsystem: Intel Corporation Device 7270
+ Kernel driver in use: intel_pch_thermal
+ Kernel modules: intel_pch_thermal
+02:00.0 Multimedia controller: Broadcom Inc. and subsidiaries 720p FaceTime HD Camera
+ Subsystem: Broadcom Inc. and subsidiaries 720p FaceTime HD Camera
+03:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4360 802.11ac Dual Band Wireless Network Adapter (rev 03)
+ Subsystem: Apple Inc. Device 0117
+ Kernel driver in use: wl
+ Kernel modules: bcma, wl
+04:00.0 SATA controller: Samsung Electronics Co Ltd S4LN058A01[SSUBX] AHCI SSD Controller (Apple slot) (rev 01)
+ Subsystem: Samsung Electronics Co Ltd S4LN058A01[SSUBX] AHCI SSD Controller (Apple slot)
+ Kernel driver in use: ahci
+05:00.0 PCI bridge: Intel Corporation DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013]
+ Kernel driver in use: pcieport
+06:00.0 PCI bridge: Intel Corporation DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013]
+ Kernel driver in use: pcieport
+06:03.0 PCI bridge: Intel Corporation DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013]
+ Kernel driver in use: pcieport
+06:04.0 PCI bridge: Intel Corporation DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013]
+ Kernel driver in use: pcieport
+06:05.0 PCI bridge: Intel Corporation DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013]
+ Kernel driver in use: pcieport
+06:06.0 PCI bridge: Intel Corporation DSL5320 Thunderbolt 2 Bridge [Falcon Ridge 2C 2013]
+ Kernel driver in use: pcieport
+07:00.0 System peripheral: Intel Corporation DSL5320 Thunderbolt 2 NHI [Falcon Ridge 2C 2013]
+ Kernel driver in use: thunderbolt
+ Kernel modules: thunderbolt
diff --git a/data/laptop_open.jpg b/data/laptop_open.jpg
Binary files differ.
diff --git a/gentoo_desktop.html b/gentoo_desktop.html
@@ -22,6 +22,7 @@
<li>Ryzen 7 3700X 8-core @ 3.6GHz</li>
<li>Radeon RX 6600/6600 XT/6600M</li>
<li>16 GiB Memory</li>
+ <li>2x 1 TB NVMe SSD, 1x 512 GiB SATA SSD</li>
<li>MSI B550i Motherboard</li>
<li>Intel AX200 Network/Bluetooth Controller</li>
<li>
@@ -125,7 +126,7 @@ sys-apps/systemd-utils boot kernel-install</code></pre>
<ol>
<li>
<p>
- A "stub loader" is required, which is in the form of Systemd software. The
+ A "stub loader" is required, which is in the form of systemd software. The
<code>sys-apps/systemd-utils</code> package can be install with the <code>boot</code> and
<code>kernel-install</code> USE flags.
</p>