# arch-platform ## Introduction This document describes disk partitioning and installation of the minimal Arch Linux system with LVM-in-LUKS, systemd-boot and network capabilities. Created at 2022-05-22T23:58:54Z and not so well maintained as I rarely use it. ## Create installation medium 1. [Download](https://archlinux.org/download/) via torrent 2. Verify: `sha256sum | grep ` 3. Find usb device name: `lsblk` 4. Create installation medium: `dd if= of=/dev/ bs=1MiB` ## Install 1. Boot to USB image 2. On loader screen press `e`, append `nomodeset` the at end of `linux` commans 3. Partitioning: `parted ` (see name via `lsblk`) ``` mklabel gpt mkpart ESP fat32 1MiB 513MiB set 1 boot on mkpart primary ext4 514MiB 100% quit ``` 4. Encrypt & open: ```bash cryptsetup luksFormat p2 cryptsetup luksOpen p2 p2_crypt ``` 5. Create volumes: ```bash pvcreate /dev/mapper/p2_crypt vgcreate main /dev/mapper/p2_crypt lvcreate -L G main -n swap lvcreate -L G main -n root lvcreate -l 100%FREE main -n home ``` 6. Create FS: ```bash mkfs.ext4 /dev/mapper/main-root mkfs.ext4 /dev/mapper/main-home mkswap /dev/mapper/main-swap mkfs.fat -F32 /dev/p1 ``` 7. Mount: ```bash mount /dev/mapper/main-root /mnt mkdir /mnt/home /mnt/boot mount /dev/mapper/main-home /mnt/home mount /dev/nvme0n1p1 /mnt/boot swapon /dev/mapper/main-swap ``` 8. Wifi setup (if needed) ```bash iwctl device list iwctl station [device] connect [network_name] ``` 9. Update keyring (iso may be too old): `pacman -Sy archlinux-keyring` 10. Install (for wifi you also need `networkmanager`): ```bash pacstrap -i /mnt base linux linux-firmware intel-ucode lvm2 sudo vim polkit ``` 11. Disks: `genfstab -U /mnt >> /mnt/etc/fstab` 12. Change root: `arch-chroot /mnt` 13. Add loader hooks: `vim /etc/mkinitcpio.conf`, set ```conf HOOKS=(base udev autodetect microcode keyboard keymap modconf block encrypt lvm2 filesystems fsck)` ``` 14. Make initrams: `mkinitcpio -p linux` 15. Install bootloader: `bootctl install --path=/boot` 16. Save disk UUID: `cryptsetup luksUUID /dev/p2 > /boot/loader/entries/arch.conf` 17. Make boot config: `vim /boot/loader/entries/arch.conf` ```conf title Arch linux /vmlinuz-linux initrd /initramfs-linux.img options quiet loglevel=3 cryptdevice=UUID=[uuid]:[disk_name]p2_crypt root=/dev/mapper/main-root rw resume=/dev/mapper/main-swap ``` 18. Make generic boot config: `vim /boot/loader/loader.conf`, set `default arch` 19. Create sudo group: `groupadd -g 1000 sudo` 20. Grant privileges: `visudo`, uncomment or add line `%sudo ALL=(ALL:ALL) ALL` 21. Add user ```bash groupadd -g 2000 useradd -m --groups sudo --gid 2000 --uid 2000 passwd ``` 22. `exit`, `reboot` into real system 23. login, `sudo su` 24. Uncomment locale in `/etc/locale.gen`, run `locale-gen` 25. `echo "" > /etc/hostname` 26. `systemctl enable NetworkManager --now` 27. Enable and sync time: `systemctl enable systemd-timesyncd --now` 28. Get tz from `tzselect`, set via `timedatectl set-timezone [tz]` 29. Update hwclock: `hwclock -w --utc`