Add linux-artix-install-and-system-config doc, update obsidian-nvim

This commit is contained in:
2025-12-29 12:15:05 -06:00
parent 4fad7b86f4
commit e64adcdfab
2 changed files with 245 additions and 0 deletions

View File

@@ -0,0 +1,242 @@
# 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 <wifi_XXXXXXXXXXXXXXXX_managed_psk>
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 <target storage drive>
# 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/<LVM partition>
cryptsetup open /dev/<LVM partition> artixlvm
pvcreate /dev/mapper/artixlvm
vgcreate artixvg /dev/mapper/artixlvm
lvcreate -L <size of memory + 4G, e.g. 36G> artixvg -n swap
lvcreate -l 100%FREE artixvg -n root
```
- [ ] set filesystems for partitions/volumes
```bash
mkfs.vfat -F32 /dev/<boot partition>
mkfs.ext4 /dev/artixvg/root
mkswap /dev/artixvg/swap
```
- [ ] mount the partitions/volumes
```bash
mount /dev/artixvg/root /mnt
mkdir /mnt/boot
mount /dev/<boot partition> /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/<path to target zone> /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 "<computer name>" > /etc/hostname
nvim /etc/hosts
# ensure /etc/hosts includes the following:
127.0.0.1 localhost
::1 localhost
127.0.1.1 <computer name>.localdomain <computer name>"
```
- [ ] 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=<UUID from blkid above>: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 <username>
passwd <username>
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/<target device> 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
```