Skip to main content

Arch Linux Framework Desktop v2.0

Major VersionM

by Jesse Darnley

Introduction

Once you have your Framework Desktop set up following the Quick Start Guide, you’re ready to install your preferred OS. With the latest release of Arch Linux, everything works pretty smoothly. You can check our Linux page for additional Linux compatibility notes.

NOTE: This is a Compatible Community Supported Linux Distribution. Learn more here.

Tools

No tools specified.

  1. First, download Arch Linux from Arch's website. Arch Linux has a detailed installation guide that you can follow.  We'll go through the steps in this Guide assuming you have a simple installation scenario of a fresh install on a blank drive. Open the Terminal app. Run the command diskutil list to list the storage devices the system sees. The flash drive should be listed as external.
    • First, download Arch Linux from Arch's website. Arch Linux has a detailed installation guide that you can follow. We'll go through the steps in this Guide assuming you have a simple installation scenario of a fresh install on a blank drive.

    • Open the Terminal app.

    • Run the command diskutil list to list the storage devices the system sees. The flash drive should be listed as external.

    • Run the command diskutil eraseDisk free none gpt diskX replacing X with the number of the disk as found in the previous step.

    • Be absolutely certain the command is typed correctly as this can result in loss of data.

    • Use dd to write the downloaded Arch Linux iso to the flash drive: dd if=/path/to/arch-linux.iso of=/dev/diskX bs=8m status=progress

    • Be absolutely certain the paths are correct before running this command with sudo, it will result in loss of data if the wrong disk is chosen.

    • Once the USB drive creation is complete, close the terminal and safely eject the USB drive.

  2. First, download Arch Linux from Arch's website. Arch Linux has a detailed installation guide that you can follow.  We'll go through the steps in this Guide assuming you have a simple installation scenario of a fresh install on a blank drive. New line.Download Rufus as a tool to create the USB installer from the ISO - select the top download option from the link provided. Rufus is available for Windows. Install it.
    • First, download Arch Linux from Arch's website. Arch Linux has a detailed installation guide that you can follow. We'll go through the steps in this Guide assuming you have a simple installation scenario of a fresh install on a blank drive.

    • New line.Download Rufus as a tool to create the USB installer from the ISO - select the top download option from the link provided. Rufus is available for Windows. Install it.

    • Launch Rufus. Insert your USB drive (8GB or larger). Click on "Flash from file" and select the Arch Linux iso that you downloaded. Click on "SELECT" and choose your USB drive. Click "START" and wait a minute or two for it to complete.

  3. Enforce Secure Boot must be Disabled: While Arch Linux can be configured to support Secure Boot, the Live ISO does not ship with a signed bootloader by default.  Information about Secure Boot on Framework Computers can be found here.
    • Enforce Secure Boot must be Disabled: While Arch Linux can be configured to support Secure Boot, the Live ISO does not ship with a signed bootloader by default. Information about Secure Boot on Framework Computers can be found here.

    • Insert the USB drive into the powered off Framework Desktop, and then power on. If an existing OS is installed on a Storage drive in the desktop, immediately after the power light comes on begin rapidly tapping (continuously ) the F12 key - begin tapping well before the Framework logo is visible.

    • If there is no internal storage drive installed or it is blank, the desktop will boot to the USB drive directly.

    • Hit Enter again to boot into and install Arch Linux.

    • This is a distribution of Linux that is intended to be built from a relatively minimal state. Refer to the Arch Wiki for more detailed information.

    • To fast track the install process with a text-based user interface, there is a helper library called archinstall designed to speed up the process.

  4. If using an Ethernet Expansion Card, the Live Environment will automatically connect to the internet. If using WiFi, begin by entering iwctl
    • If using an Ethernet Expansion Card, the Live Environment will automatically connect to the internet.

    • If using WiFi, begin by entering iwctl

    • Enter station wlan0 scan then enter station wlan0 get-networks

    • Enter station wlan0 "NetworkName" replacing NetworkName with the name of the desired network shown by get-networks, then enter the network password when prompted.

    • Exit iwctl by entering either exit or quit

    • Test the connection to the Arch Linux servers with ping -c3 archlinux.org

    • Sync the system clock with the network by entering timedatectl set-ntp true

  5. List the disks currently recognized by the system and their properties by running fdisk -l This guide assumes the first NVMe drive recognized by the system is being used for installation. This process will wipe the drive being targeted and the loss of all data on it. Run fdisk /dev/nvme0n1
    • List the disks currently recognized by the system and their properties by running fdisk -l

    • This guide assumes the first NVMe drive recognized by the system is being used for installation. This process will wipe the drive being targeted and the loss of all data on it.

    • Run fdisk /dev/nvme0n1

    • Initialize the disk with a new partition table by typing g and pressing enter.

    • Create the boot partition by typing n then pressing enter. Press enter to select the default Partition Number. Press enter again to select the default First Sector. Finally enter +700M as the selection for Last Sector.

    • Enter t to change the Partition Type. Enter 1 then press enter to change the partition type to EFI System.

    • Create the root partition for the system by again typing n and pressing enter. This time press enter 3 times to make the default selections. This will use the rest of the available storage on the targeted drive.

    • Enter w to write the changes to the drive and exit fdisk.

  6. Format the boot partition in FAT32 by running the command: mkfs.fat -F32 /dev/nvme0n1p1
    • Format the boot partition in FAT32 by running the command: mkfs.fat -F32 /dev/nvme0n1p1

    • For the root partition, almost any filesystem can be used, but this guide will use EXT4. Format the root partition in EXT4 by running the command: mkfs.ext4 /dev/nvme0n1p2

    • First mount the root partition using the command: mount /dev/nvme0n1p2 /mnt

    • Now create the folder that the boot partition will mount to with the command: mkdir /mnt/boot

    • Next mount the boot partition to this newly created folder with: mount /dev/nvme0n1p1 /mnt/boot

  7. The first step of installation once the storage is prepared is to install the base system and packages. This is done by running the command: pacstrap /mnt base linux linux-firmware amd-ucode After the previous step completes, the system needs a configuration file that tells it what storage to use in the system and how. This file can be generated automatically by running the command: genfstab -U /mnt >> /mnt/etc/fstab
    • The first step of installation once the storage is prepared is to install the base system and packages. This is done by running the command: pacstrap /mnt base linux linux-firmware amd-ucode

    • After the previous step completes, the system needs a configuration file that tells it what storage to use in the system and how. This file can be generated automatically by running the command: genfstab -U /mnt >> /mnt/etc/fstab

    • At this point the system is prepared for the rest of the install process. This is done from within the freshly installed system without restarting by running the command: arch-chroot /mnt

    • Install a few more essential packages that will be used to complete installation by running the command: pacman -S base-devel networkmanager wireless-regdb vim nano

  8. Folders containing lists of supported options for setting the system's timezone can be listed by running the command: ls /usr/share/zoneinfo/
    • Folders containing lists of supported options for setting the system's timezone can be listed by running the command: ls /usr/share/zoneinfo/

    • For the purposes of this guide, the US/Eastern timezone will be used as an example. Set the system's timezone to the United States' Eastern Time by running the command: ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime

    • Finally, set the hardware clock of the system by running the command: hwclock --systohc

  9. The file locale.gen needs to be edited in order to set language support. To open the file for editing, run the command: nano /etc/locale.gen Use the arrow keys to scroll down and find the line with the appropriate locale, and remove the # from the start of that line. For example, to set the locale to US English, locate the line that reads #en_US.UTF-8 UTF-8 and change it to en_US.UTF-8 UTF-8
    • The file locale.gen needs to be edited in order to set language support. To open the file for editing, run the command: nano /etc/locale.gen

    • Use the arrow keys to scroll down and find the line with the appropriate locale, and remove the # from the start of that line.

    • For example, to set the locale to US English, locate the line that reads #en_US.UTF-8 UTF-8 and change it to en_US.UTF-8 UTF-8

    • After making edits, press Ctrl+O and Enter to save the changes, then Ctrl+X to exit nano.

    • Now generate the system locale by running the command: locale-gen

    • Finally, create the locale configuration file. This can be done quickly using the command echo LANG=en_US.UTF-8 > /etc/locale.conf

    • To use another language, replace en_US.UTF-8 with the locale of choice as it appears in /etc/locale.gen

  10. Set the hostname of the system. This is the name that the computer is seen as by other devices on the network. The limit for the hostname is 253 ASCII characters. This guide will use "framework" as an example. This can be done in a number of ways, including running the command: echo framework > /etc/hostname Edit the hosts file to include the hostname. This helps to ensure reliable networking. To do this edit, run the command: nano /etc/hosts While in this file, add a line that links your hostname to the localhost address. The line should look something like: 127.0.1.1    framework.localdomain    framework
    • Set the hostname of the system. This is the name that the computer is seen as by other devices on the network. The limit for the hostname is 253 ASCII characters. This guide will use "framework" as an example. This can be done in a number of ways, including running the command: echo framework > /etc/hostname

    • Edit the hosts file to include the hostname. This helps to ensure reliable networking. To do this edit, run the command: nano /etc/hosts

    • While in this file, add a line that links your hostname to the localhost address. The line should look something like: 127.0.1.1 framework.localdomain framework

    • Press Ctrl+X, then Y, then Enter to save the edits and exit nano.

    • Enable NetworkManager by running the command: systemctl enable NetworkManager

  11. Create a new user with administrator privileges by running the command: useradd -m -G wheel,input -s /bin/bash username username can be replaced with any combination of 32 or fewer lower case letters and numbers. Special characters should be avoided. Set a password for this new account by running the command: passwd username
    • Create a new user with administrator privileges by running the command: useradd -m -G wheel,input -s /bin/bash username

    • username can be replaced with any combination of 32 or fewer lower case letters and numbers. Special characters should be avoided.

    • Set a password for this new account by running the command: passwd username

    • Enter the desired password twice when prompted. The password will not be set it both passwords do not match.

    • Set up administrator access for users by installing sudo by running the command: pacman -S sudo

    • Set permissions for sudo by editing the sudoers file. This can be done by running the command: EDITOR=nano visudo

    • Use the arrow keys to scroll down and find the line that reads # %wheel ALL=(ALL:ALL) ALL and alter it to %wheel ALL=(ALL:ALL) ALL before pressing Ctrl+X then Y, then Enter to save and exit.

  12. There are many options for a bootloader in Linux. This guide will focus on bootctl which is included with a base install of Arch Linux. Install the bootloader to the boot partition by running the command: bootctl install
    • There are many options for a bootloader in Linux. This guide will focus on bootctl which is included with a base install of Arch Linux. Install the bootloader to the boot partition by running the command: bootctl install

    • Edit the loader configuration file by running the command: nano /boot/loader/loader.conf

    • The first line of this file is for setting the default boot selection. So it should look like: default arch.conf

    • The second line of this file is for setting the timeout, or how long the bootloader is visible for in seconds. It should look like: timeout 3

    • Press Ctrl+X, then Y, then Enter to save and exit.

  13. Now that the bootloader is installed and configured, the file arch.conf for the default boot entry that was set earlier. This file can be created by running the command: nano /boot/loader/entries/arch.conf
    • Now that the bootloader is installed and configured, the file arch.conf for the default boot entry that was set earlier. This file can be created by running the command: nano /boot/loader/entries/arch.conf

    • The first line of this file is to set the title for the boot entry. This is the text displayed when the bootloader is displayed during early boot. It should look like: title Arch Linux

    • The second line of this file is for selecting the Linux image that is loaded by this bootloader entry. It should look like: linux /vmlinuz-linux

    • The next lines of this file are for setting system specific files to be loaded by the Initial RAM Disk that is loaded during boot. There can be multiple lines for initrd. Press Ctrl+X and enter after making the changes to save and close the file.

    • For this example, the first initrd line should be for loading processor specific microcode. The line should look like: initrd /amd-ucode.img

    • The second initrd line in this particular entry file is for loading the Initial RAM Filesystem. It should look like: initrd /initramfs-linux.img

    • The last line is for setting the kernel options. This includes indicating the root filesystem. To add the ID for the root filesystem to the entry file, run the following command: echo 'options\troot=PARTUUID=$(blkid -s PARTUUID -o value /dev/nvme0n1p2) rw' >> /boot/loader/entries/arch.conf

  14. Swap is absolutely essential to maintaining good performance in a Linux system. Even when there is unused physical RAM, memory is often reallocated for the purposes of optimizing for system responsiveness. ZRAM compresses a section of RAM instead of using system storage for this purpose. Install it by running: pacman -S zram-generator Create a configuration file for ZRAM by running: nano /etc/systemd/zram-generator.conf
    • Swap is absolutely essential to maintaining good performance in a Linux system. Even when there is unused physical RAM, memory is often reallocated for the purposes of optimizing for system responsiveness. ZRAM compresses a section of RAM instead of using system storage for this purpose. Install it by running: pacman -S zram-generator

    • Create a configuration file for ZRAM by running: nano /etc/systemd/zram-generator.conf

    • This configuration file consists of five lines. The first line is the name of the ZRAM device. For this example, the line will be: [zram0]

    • The second line sets the size of the ZRAM device. Typically this should be one quarter to one half of the system's physical memory. For this example, it will be set to half by adding the line: zram-size = ram / 2

    • The third line determines the algorithm used to compress the memory used to make the ZRAM device. On modern systems, zstd is fast and compresses well. Set it by adding the line: compression-algorithm = zstd

    • The fourth line sets swap priority, which determines how often the system will use swap. The default setting is the same as adding the line: swap-priority = 100

    • The fifth and final line is used to set the filesystem type. This should be automatically set correctly, but to be safe add the line: fs-type = swap

    • Press Ctrl+X, then Y, then Enter to save your changes and exit.

  15. To install the AMD graphical drivers run the command: pacman -S mesa xf86-video-amdgpu vulkan-radeon libva-mesa-driver mesa-vdpau xorg-xrandr To install drivers related to input devices, run the command: pacman -S xf86-input-libinput
    • To install the AMD graphical drivers run the command: pacman -S mesa xf86-video-amdgpu vulkan-radeon libva-mesa-driver mesa-vdpau xorg-xrandr

    • To install drivers related to input devices, run the command: pacman -S xf86-input-libinput

    • To install audio related packages, firmware, and drivers, run the command: pacman -S pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber sof-firmware alsa-utils

    • To install Bluetooth related packages, run the command: pacman -S bluez bluez-utils blueman iwd

    • Enable Bluetooth after installing these packages by running: systemctl enable bluetooth

    • To install power management related packages, run the command: pacman -S tuned tuned-ppd

    • Enable the `tuned` service to enable power management by running: systemctl enable tuned

  16. Arch Linux has an extremely wide range of graphical interfaces for users to choose from. This guide will focus on installing either Gnome Desktop or KDE.
    • Arch Linux has an extremely wide range of graphical interfaces for users to choose from. This guide will focus on installing either Gnome Desktop or KDE.

    • To install Gnome and its related packages, run the command: pacman -S gnome gnome-tweaks gnome-software firefox

    • When given an option for fonts, selecting 2 for noto-fonts will ensure maximum compatibility across languages.

    • To enable Gnome to start up automatically, run the command: systemctl enable gdm

    • To install KDE and its related packages, run the command: pacman -S plasma plasma-wayland-session kde-applications firefox

    • To enable KDE to start up automatically, run the command: systemctl enable sddm

  17. Arch Linux is a very barebones system and does not come with some packages included as part of the base system. To add some of these tools to the system, run the command: pacman -S cups git wget btop amdgpu_top Cups is the print server for Linux. If this system will not be used with a printer, the cups package can be skipped. If a printer will be used with the system, enable cups after installing it by running the command: systemctl enable cups
    • Arch Linux is a very barebones system and does not come with some packages included as part of the base system. To add some of these tools to the system, run the command: pacman -S cups git wget btop amdgpu_top

    • Cups is the print server for Linux. If this system will not be used with a printer, the cups package can be skipped. If a printer will be used with the system, enable cups after installing it by running the command: systemctl enable cups

  18. At this point, the system should have a functional Arch Linux installation on it with either Gnome or KDE as a desktop environment. Exit the chroot environment by running the command: exit
    • At this point, the system should have a functional Arch Linux installation on it with either Gnome or KDE as a desktop environment. Exit the chroot environment by running the command: exit

    • Unmount the partitions that were used for installation by running the command: umount -R /mnt

    • Reboot the system and remove the Live USB drive.

    • Before updating to the latest firmware, make sure you verify which BIOS were running.

    • Framework Desktop firmware is available through LVFS. Check for updates by running fwupdmgr refresh and run updates if they are available by running fwupdmgr update

Conclusion

Enjoy using Arch on your Framework Desktop! If you have any questions or run into any issues, we recommend bringing them to the Community in the Linux Arch topic. Members of the Framework team participate in discussions there.

One other person completed this guide.

Matt Hartley

Member since: 11/8/22

25 Guides authored

Team

Framework Member of Framework

8 Members

151 Guides authored

0 Comments

Add Comment



View Statistics:

Past 24 Hours: 3

Past 7 Days: 31

Past 30 Days: 196

All Time: 215