After a long absence (circa 2006) from using Linux as my daily computing environment, I decided to build a new Linux workstation. I’m extremely happy with how it turned out, so I’m writing this post with some details about the hardware and software I selected and why. The short version is that everything works, including suspend to RAM, GPU drivers, sound, hardware sensors (temperature, fan speed, etc.) and all with no weird patches and only one or two custom settings. Performance is pretty good, as well. In the past I’ve never paid much attention to aesthetics, beyond picking a case I like. On this build, basing it on desktop-class AMD components and a water-cooling setup, I knew I’d end up with a bunch of RGB lighting, which I figured I would turn off. Torwards the end of the build, I decided to embrace my inner bling and leave the lights on, although I did set them all to a single color and turned the brightness down a bit.
Table of Contents
- Build Notes
- Operating System
- Bill of Materials
Build Notes
CPU & RAM
My main goals for this build were to get a reasonably high number of fast cores (at least 16) with lots of fast RAM. I looked at the Threadripper lineup, but I couldn’t quite justify the price point for what I needed. The two main options I considered were the AMD Ryzen 7950X and Intel Core i9-13900K. I settled on the Ryzen because:
- While it has fewer cores, they are all “performance” cores
- More combined L2/L3 cache (although only half as much L2 cache)
Both processors support DDR5 RAM and PCI Express 5.0, which were also requirements for this build.
SSD
Not much to say here: I picked the fastest NVMe drive made by a company I had heard of and that was in stock, and ended up with a 2 TB Corsair MP700. Overall, I’m happy with it: performance has been good and I haven’t had any driver or reliability problems.
GPU
I only seriously considered AMD GPUs, due to Nvidia’s poor reputation for Linux driver support. Having CUDA support would have been nice, but AMD has made some strides in bringing ROCm to at least their high-end consumer GPUs. Overall, I’m happy with the Radeon RX 7900 XTX. glmark2 performance is good, and my day-to-day experience has been as well.
GLmark2 2023.01:
pts/glmark2-1.4.0 [Resolution: 2560 x 1440]
Test 1 of 1
Estimated Trial Run Count: 1
Estimated Time To Completion: 6 Minutes [19:17 UTC]
Started Run 1 @ 19:11:35
Resolution: 2560 x 1440:
26738
Average: 26738 Score
Comparison of 96 OpenBenchmarking.org samples since 17 March 2023; median result: 3715 Score. Box plot of samples:
[ |--############!######################*######*#---------------*-----*-----*--------| *]
This Result: 26738 ^
AMD Radeon RX 56: 8902 ^ XFX AMD Radeon RX 6950 XT: 16776 ^
XFX AMD Radeon RX 6800 XT: 15456 ^
AMD Radeon RX 6800: 14249 ^
AMD Radeon RX 6800 XT: 10485 ^
The Case and Power Supply
Since the case sits on my desk, I wanted something that looks good, is easy to work on, and has good airflow – the Fractal Design North case was the best option I could find. Overall, I think it is a great case, especially for an air-cooled build. The case is beautiful, and, overall the build quality is very high. I did find the holes that were punched in the side covers for the thumbscrews were too small, leading the thumbscrew threads to bite into the covers and gall, so I drilled those out slightly. Cable management in the case is excellent – there is plenty of room in the power supply tunnel for PS cables, and there is a void behind the motherboard tray for additional cable management/routing. That gets a little tight, but everything fit nicely. The wood front panel comes off, giving easy access to the front fans.
The power supply is a Corsair RM850e. I picked it because I’ve had good luck over the years with Corsair power supplies and had good efficiency, being rated 80 Gold Plus.
Water Cooling
While it is completely unnecessary, I wanted to do a water-cooled build. I had never done one before and wanted to try it out, and see for myself if I could get a quieter PC with good thermal management properties. I used EKWB Quantum components for the cooling loop.
The North case really isn’t designed for a custom water cooled loop with a large radiator (nor does Fractal market it for such purposes,) and I had to make a few modifications to get everything to work:
- The only practical place to mount the radiator was vertically, behind the front fans. I might have been able to mount it overhead, but I think I would have had problems mounting the reservoir/pump if I did that.
- The GPU water block interfered with the rear mounting shroud on the radiator, so I had to (carefully) cut a small channel in the radiator shroud for the GPU to fit.
- I had to cut a hole to access the radiator drain port. There is not quite enough room for the EKWB drain valve to be permanently attached to the bottom of the radiator and not protrude more than the case feet. I have a plan to fix that, but haven’t done it yet. Until then, if I do need to drain the cooling loop, I’ll have to turn the case upside down and temporarily attach the drain valve.
After living with the water cooling setup for a few months now, I’m happy with it, but not happy enough to spend another $800 the next time I build a computer. The gains just aren’t enough to warrant the cost. Air cooling has gotten really, really, good, even on high-TDP components like the ones I’m running. Maybe if I was overclocking everything it would be worth it, but I’m not.
LEDs
My original plan was to turn all the LEDs off. But, while fiddling with the case, I decided I wanted bigger thumbscrews, and the ones I found that could be shipped quickly were anodized purple. So, I decided to turn all of the LEDs the same purple with OpenRGB. I also bought some purple power cables to complete the look. In for a penny, in for a pound, and all.
Operating System
The very first Linux distribution I ever used was Slackware 2.3, back in the mid 90s. For this build, I decided to give Arch Linux a try, and I have to say, compared to Ubuntu, Arch feels like an old friend. The package management system is minimalist, but very functional, and I like have a ports-like community system (AUR) to draw from.
In my absence from the Linux desktop, I largely missed out on a few major controveries: Systemd and Wayland. In 2023, I didn’t find either of them onerous to use, although I think the Systemd journal is a little wonky compared to regular old text log files. My Wayland perspective is probably shaped by the fact I’m using an AMD GPU (I understand Nvidia Wayland stability is not quite there yet) and Sway, which seems to be a very stable Wayland compositor. I played around with Plasma for a few days, and it seems to work pretty well, too.
I was more worried about having to chase a bunch of random hardware issues, stuff like power management and sound that might work like 95% of the time, but thankfully, I haven’t had to deal with much of that. Everything, and I mean everything, works, including:
- WiFi and Bluetooth, although I turned them both off after testing
- Sound
- Temperature sensors (this required one minor hack)
- Suspend (also required one minor hack)
I don’t have a swap partition – I don’t see the need with 64GB of RAM, and frankly don’t want to waste SSD write cycles on it, so I haven’t tested and don’t have an opinion of how well hibernate would work with this setup.
Workarounds
The two tweaks I had to make were:
- Add usbcore.autosuspend=1 to my grub defaults. This is to make USB reattachment work reliably after waking from suspend. The relevant line looks like this:
GRUB_CMDLINE_LINUX_DEFAULT="usbcore.autosuspend=-1 quiet"
- Create /etc/modprobe.d/nct6683.conf with the following contents to allow lmsensors to see fan/temp stats:
options nct6683 force=1
That’s it. Those are the only hardware-related issues I’ve run into.
Desktop
I wanted a very focused desktop without any distractions, so I decided to give Sway a try, and it has worked out very well for my needs. My main stack is:
- Sway compositor (my config)
- i3status-rust status bar (my config)
- kickoff launcher
- swayidle + swaylock for screen locking
- Alacritty terminal
There are two things I wanted that this stack didn’t accommodate, at least to my needs: screen savers and suspend to sleep. It doesn’t support screensavers at all, and I wanted suspend to sleep to monitor both Wayland idle time and terminal idle time, so if I’m ssh’d in, the Wayland idle timer doesn’t put my machine to sleep. Towards that end, I wrote idlewatcher that monitors both Wayland and all logged-in terminals to calculate an idle time and manage sleep. I haven’t worked on the screensaver problem yet.
Bill of Materials
Component | Part # | Price1 | Source |
---|---|---|---|
Case | Fractal Design North ATX Case | $139.97 | Newegg |
Power Supply | Corsair RM850e ATX Power Supply | $119.99 | Newegg |
Motherboard | ASRock X670E Steel Legend | $279.99 | Newegg |
CPU | AMD Ryzen 7950X | $598.99 | Newegg |
RAM | G.SKILL Trident DDR5-6000 64GB Kit | $209.99 | Newegg |
SSD | Corsair MP700 PCI-Express 5.0x4 NVMe SSD | $259.99 | Newegg |
GPU | ASUS TUF Radeon RX 7900 XTX 24GB GPU | $1,079.99 | Newegg |
Thermal Compound | Corsair XTM50 5g | $14.99 | Newegg |
Water Cooling | EK Quantum Power^2 P360 Kit for AM5 | $636.62 | EKWB |
Water Cooling | EK Quantum Power^2 GPU Water Block | $257.99 | EKWB |
Water Cooling | EK Quantum Torque Compression Fittings (qty 2) | $13.74 | EKWB |
Water Cooling | EK Quantum Drain Valve | $21.49 | EKWB |
Water Cooling | EK Quantum Torque Extender - 7mm | $5.15 | EKWB |
Case Hardware | Purple Anodized Thumb Screws | $15.98 | Amazon |
PSU Extension Cords | AsiaHorse ATX Extension Cords (purple) qty 2 | $42.22 | Amazon |
GPU Standoff | Telescoping GPU Standoff | $9.99 | Amazon |
$3,707.08 | Grand Total |
This certainly was not intended to be a budget build, but I’ll point out a few things you could change to get a great workstation with the same daily-driver-Linux-compatibility benefits for a significantly lower cost:
- Eliminate the water cooling system. If you do, get a Dark Rock Elite or Noctua NH-D15S air cooler. Both are around $100, for a net savings of around $850, not to mention a signficantly easier build experience.
- Scale back the GPU. For a Linux system, I’d definitely stick with an AMD GPU, but you could get an RX 6600 XT for $240, a savings of around $750.
With those two simple changes, this is a $2,150 workstation build.
I already had a keyboard, mouse, and monitor to use, but of course you’d need those if you didn’t already have/want to reuse those components. The rest of the setup looks like this:
Component | Part # | Price* | Source |
---|---|---|---|
Monitor | LG 34WN80C-B 34" Widescreen monitor | $599.00 | Amazon |
Keyboard | Ergodox Moonlander | $365.00 | ZSA |
Mouse | Razer Basilisk v3 (wired) | $58.99 | Newegg |
As of January 2024 ↩︎