Skip to content
/ dux Public

My Arch Linux installer written in Bash for a Btrfs snapshots KDE Plasma desktop setup

License

Notifications You must be signed in to change notification settings

felikcat/dux

Repository files navigation

About

This Arch Linux installer’s primary goals.
  • Tunnel-visioned on maintaining a stable OS, such as using Btrfs snapshots automatically.

  • Has some desktop & gaming optimizations that ArchInstall and ArchTitus fail to do themselves, the ladder two being optimized for servers instead (Linux defaults).

  • Kept simple and programmed in Bash.

  • There’s customizability, but only if important.

    • If you don’t like parts of Dux, you can change that after the fact, as a regular Arch Linux user would.

      • Chasing immense customizability will lead to bugs and user error. If you want that, use ArchInstall or Archboot instead.

  • No third-party repos that break the OS, unlike Manjaro.

  • systemd services are avoided whenever possible, as they are lower-quality than alternatives.

  • What’s used is what is the most pragmatic, which is currently KDE. Historically there was a GNOME installer.

If you’re going to use Dux, three rules to keep in mind:
  1. The installer itself will break likely every few months, due to Arch maintainers renaming a package. You are expected to fix issues if I don’t get around to it quickly enough.

  2. This installer is a way to setup Arch Linux faster, in a high-quality manner, and is resilient against breakage from updates; given you know how to use Btrfs snapshots.

  3. Dual-booting is supported, but only if for example, Windows, is on a separate disk/drive from the Arch Linux install.

1. Requirements

  1. If you do not meet the GPU requirements, use gpu_selected="0" to manually install and configure yourself:

    • For AMD: Radeon RX 460 or newer.

    • For NVIDIA: GeForce GTX 745 or newer.

    • For Intel: HD 3000 or newer.

  2. UEFI must be enabled.

    • If booting into the Arch Linux ISO fails on UEFI, a very rare IA32 UEFI BIOS is used. Follow these instructions to successfully boot the Arch Linux ISO.

  3. Disable UEFI Secure Boot

  4. 3GB of RAM.

  5. 16GB of storage + the amount of swap size used (configurable).

2. [OPTIONAL] Verify ISO authenticity — for your security

Details
Download the latest Arch Linux ISO; if you have no torrent client, use qBittorrent.
  • Keep that tab open.

macOS
  1. Install Homebrew from https://brew.sh/

  2. brew install gnupg

  3. Follow the Linux instructions below.

Windows
  1. Install GnuPG using its latest simple installer:
    480

  2. Open a Terminal or PowerShell in the directory of gpg.exe:
    480

  3. Follow the Linux instructions below.

Linux
  1. NOTE: The full key (not short or long) is used to fully protect against collision attacks.
    gpg --auto-key-locate clear,wkd -v --locate-external-key pierre@archlinux.org

  2. Download the "ISO PGP signature" from here.

  3. gpg --full-gen-key

Please select what kind of key you want:
   (1) RSA and RSA
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
   (9) ECC (sign and encrypt) *default*
  (10) ECC (sign only)
  (14) Existing key from card
Your selection? ↵

Please select which elliptic curve you want:
   (1) Curve 25519 *default*
   (4) NIST P-384
   (6) Brainpool P-256
Your selection? ↵

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) ↵
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: dux
Email address: dux@dux.com
Comment:
You selected this USER-ID:
    "dux <dux@dux.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
  1. After your new GPG key has been generated, show its full key; [ultimate] indicates that you trust this key ultimately (you created the key), which is the desired behavior.
    gpg --list-secret-keys --keyid-format none

  2. Sign Arch’s GPG key with yours.
    gpg --sign-key 3E80CA1A8B89F69CBA57D98A76A5EF9054449A5C

  3. Verify if the ISO is authentic, and its file integrity doesn’t fail (indicates a broken download).
    gpg --verify /path/to/archTAB.sig

    • 480

3. Format a USB with the Arch Linux ISO

⚠️
This will destroy all previous data on the targeted device!

Windows

First choice is to use balenaEtcher.

Second choice (Rufus)
  1. Download and install rufus-$version.exe
    https://github.com/pbatard/rufus/releases

  2. Add the Arch ISO then copy the following settings:
    480

  3. Click Start, then use "Write in ISO → ESP mode".

macOS and Linux

dd method (not recommended)
  1. Thoroughly list disks and partitions; to see what disk/drive you are going to format.
    $ lsblk -o PATH,MODEL,PARTLABEL,FSTYPE,FSVER,SIZE,FSUSE%,FSAVAIL,MOUNTPOINTS

  2. Do not append numbers to the end of /dev/EXAMPLE
    # dd if=/path/to/archTAB of=/dev/EXAMPLE bs=8M oflag=direct status=progress

OpenBSD

  1. List all available disks:
    $ dmesg|egrep '^([cswf]d). ' or $ df -h

  2. List the partitions of a disk, and show sizes in gigabytes (-p g):
    # disklabel -p g EXAMPLE

  3. Do not append numbers to the end of /dev/EXAMPLE:
    # dd bs=4M if=/path/to/archTAB of=/dev/EXAMPLE conv=sync

4. Starting the Dux installer

Once booted into the Arch Linux ISO, ensure an internet connection is established.
$ ping archlinux.org

No connection?

For Wi-Fi:

  1. Run # rfkill unblock all

  2. # iwctlstation wlan0 connect your_wifi_SSIDexit

  3. # systemctl restart systemd-networkd

💡
If "wlan0" is not the correct interface, use iwctl’s station list to see your wireless interface(s).
  1. # pacman-key --init

  2. # pacman -Syy git

  3. # git clone https://github.com/felikcat/dux

  4. Open ~/dux/src/Configs/settings.sh in your editor of choice, likely vim or nano

    • Do not remove options in Dux’s configs! Disable them.

  5. # bash ~/dux/src/format_disk.sh

    • Ctrl + C to exit the disk formatter if you’re not comfortable proceeding.

  6. # bash ~/dux/src/install_dux.sh

    • If there’s issues: run with DEBUG=1 (put before bash) for more verbose logs.

5. Software catalog

Table 1. The following can be installed through KDE’s "Discover".

100
OnlyOffice
A Microsoft Office compatible replacement suite.

100
Evince
A document viewer for PDFs and other formats; the full list of file formats supported.

100
Evolution
A mail client and calendar, with address book functionality.

100
Firefox
The best feeling Web Browser for Linux. Be sure to disable its telemetry and auto-recommendations!

100
GNOME System Monitor
An alternative Task Manager / Activity Monitor.

100
mpv
A Video and Audio Player with the best performance, and most capability in terms of video processing such as high-quality upscaling. It’s recommended to view I am Scum’s guide.

100
qpwgraph
An Audio Patchbay. If you used QjackCtl prior, this is what you want.

100
Foliate
An eBook viewer. Has some overlap with Evince, but supports some file formats it doesn’t and has features that closer emulate a physical book.

100
SyncThingy
A tray indicator for the continuous file synchronization program, Syncthing. It synchronizes files between two or more computers in real time, safely protected from prying eyes.

💡
For other software, use a search engine like so: "feh arch linux". Doing that links to this wiki page, showing how to install and configure feh, and explains what it is (an Image Viewer).

If you have issues, please read ⇒ potential_fixes.adoc

If you plan to virtualize Windows or Linux in QEMU ⇒ Virtualization.adoc is your friend.

About

My Arch Linux installer written in Bash for a Btrfs snapshots KDE Plasma desktop setup

Resources

License

Stars

Watchers

Forks

Languages