Add linux-artix-install-and-system-config doc, update obsidian-nvim
This commit is contained in:
@@ -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
|
||||||
|
```
|
||||||
|
|
||||||
@@ -4,6 +4,9 @@ return {
|
|||||||
version = "*", -- '*' for latest release, not latest commit
|
version = "*", -- '*' for latest release, not latest commit
|
||||||
ft = "markdown",
|
ft = "markdown",
|
||||||
opts = {
|
opts = {
|
||||||
|
footer = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
frontmatter = {
|
frontmatter = {
|
||||||
enabled = false,
|
enabled = false,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user