# Artix Linux - Install and System Config **Attribution:** Most or much of this was generated by or derived from Grok, or else from Artix docs, Arch docs/wiki, or else the docs for the particular programs or packages used. I'm not claiming any of this is mine, just putting it here in one file for future convenience/reference. I used this approach in December of 2025 to install Artix Linux on a Framework 13in laptop from 2023 q4. - OS and distro: Artix Linux - init system: dinit - partitioning, GUID Partition Table: - unencrypted boot partition (size: 512M), UEFI - LUKS-encrypted LVM: - swap partition (size: amount of memory + 4G) - root/default partition (size: remaining space) For reference, doc page from Artix for installation: https://wiki.artixlinux.org/Main/Installation --- ## install steps - [ ] if not already done, download artix ISO (dinit version) and dd it onto a usb drive - [ ] boot the live usb and select the install option (whatever it may look like) - [ ] connect to the internet ```bash connmanctl //// within connmanctl enable wifi scan wifi agent on services connect quit ``` - [ ] verify connection using `ping` - [ ] update live system keys/mirrors ```bash pacman -Sy artix-keyring ``` - [ ] run lsblk and identify the storage drive on which to install - note: when i ran this in 2025 dec on my framework laptop, it was `/dev/nvme0n1` - [ ] partition the drive ```bash cfdisk # use GPT (guid partition table) # new partition, size 512M, type 'EFI System' # new partition, size (remaining), type 'Linux LVM' # write changes # quit cfdisk ``` - [ ] set up LVM volumes ```bash cryptsetup luksFormat --type luks2 /dev/ cryptsetup open /dev/ artixlvm pvcreate /dev/mapper/artixlvm vgcreate artixvg /dev/mapper/artixlvm lvcreate -L artixvg -n swap lvcreate -l 100%FREE artixvg -n root ``` - [ ] set filesystems for partitions/volumes ```bash mkfs.vfat -F32 /dev/ mkfs.ext4 /dev/artixvg/root mkswap /dev/artixvg/swap ``` - [ ] mount the partitions/volumes ```bash mount /dev/artixvg/root /mnt mkdir /mnt/boot mount /dev/ /mnt/boot swapon /dev/artixvg/swap ``` - [ ] install base system and needed packages ```bash basestrap /mnt base base-devel linux \ linux-firmware \ dinit elogind-dinit \ lvm2 cryptsetup grub efibootmgr mkinitcpio \ connman connman-dinit wpa_supplicant \ git less neovim zsh ``` - [ ] generate fstab ```bash fstabgen -U /mnt >> /mnt/etc/fstab # verify (add noatime to ext4 line if desired) vi /mnt/etc/fstab ``` - [ ] chroot into installed system ```bash artix-chroot /mnt ``` - [ ] set timezone, hardware clock, locale ```bash ln -sf /usr/share/zoneinfo/ /etc/localtime hwclock --systohc nvim /etc/locale.gen # uncomment en_US.UTF-8 UTF-8; add others if desired locale-gen echo "LANG=en_US.UTF-8" > /etc/locale.conf ``` - [ ] set hostname and /etc/hosts ```bash echo "" > /etc/hostname nvim /etc/hosts # ensure /etc/hosts includes the following: 127.0.0.1 localhost ::1 localhost 127.0.1.1 .localdomain " ``` - [ ] mkinitcpio with hooks ```bash nvim /etc/mkinitcpio.conf # go to HOOKS and set it thus: HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 resume filesystems fsck) mkinitcpio -P ``` - [ ] grub config and install ```bash blkid # note the UUID of the LVM/LUKS partition nvim /etc/default/grub # ensure the following is set: GRUB_CMDLINE_LINUX="cryptdevice=UUID=:artixlvm root=/dev/mapper/artixvg-root resume=/dev/mapper/artixvg-swap quiet rw" grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Artix grub-mkconfig -o /boot/grub/grub.cfg ``` - [ ] set up connman for installed system ```bash mkdir -p /etc/dinit.d/boot.d ln -s ../connmand /etc/dinit.d/boot.d/connmand ``` - [ ] set root password, set up user ```bash passwd useradd -m -G wheel,audio,video,optical,storage passwd pacman -S sudo EDITOR=nvim visudo # uncomment the line in /etc/sudoers which looks something like the below: echo "%wheel ALL=(ALL) ALL" ``` - [ ] close stuff out and reboot ```bash exit umount -R /mnt swapoff -a cryptsetup close cryptlvm # may not work, just ignore and reboot reboot ``` --- ## system config (post install) _NOTE: don't put anything here which should be in my dotfiles-and-setup scripts instead_ - [ ] set up chrony (for syncing system time with ntp servers) - _NOTE: edit defaults in `/etc/chrony/chrony.conf` if desired_ ```bash sudo pacman -S chrony chrony-dinit # Fallback if dinitctl enable fails (symlink method) sudo mkdir -p /etc/dinit.d/boot.d sudo ln -s ../chronyd /etc/dinit.d/boot.d/chronyd # alt: sudo dinitctl enable chronyd /etc/dinit.d/chronyd start # alt: sudo dinitctl start chronyd ``` --- ## troubleshooting if i need to try something again and reopen the LVM, the below should work: ```bash cryptsetup open /dev/ artixlvm # enter existing password vgchange -ay artixvg # or, if only one VG exists: vgchange -ay ``` if date/time get messed up (such as due to battery running out), fix with: ```bash # can manually adjust to local time; grok said "date is UTC if hardware is set that way" sudo date -s "2025-12-17 12:47:00" # or, if chrony, ntp, or similar is set up, can trigger sync chronyd -q # can check after with `date` or `chronyc tracking` sudo hwclock -w --utc ```