From 0bab600464f997a2f379209a68c7dc1ee23998ef Mon Sep 17 00:00:00 2001 From: trivernis Date: Sun, 22 Oct 2023 18:31:59 +0200 Subject: [PATCH] Add initial tutorial --- README.md | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..2e92125 --- /dev/null +++ b/README.md @@ -0,0 +1,235 @@ +# How to install arch on the hp omen + +## Disk Layout + +We're using the following disks + +``` +/dev/nvme0n1 - 500GiB m.2 SSD +/dev/sda - 2TB SATA SSD +``` + +## Partitioning + +We're creating three partitions. One EFI, one root and one home partition. +The root and home partition are to be encrypted with dm-crypt. + +```sh +fdisk /dev/nvme0n1 +> g # gpt partition table +> n +> # starting from the beginning +> +500M # 500 MiB +> t 1 # EFI partition +> n # new partition +> # +> # use the remaining size of the disk +> w +> q + +fdisk /dev/sda +> g +> n +> +> # use the whole disk +> w +> q + +# Create the encrypted root partition +cryptsetup -cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/nvme0n1p2 + +# Create the encrypted home partition +cryptsetup -cipher aes-xts-plain64 --key-size 512 --hash sha512 --iter-time 5000 --use-random luksFormat /dev/sda1 + +# Open the devices +cryptsetup luksOpen /dev/nvme0n1p2 cryptroot +cryptsetup luksOpen /dev/sda1 crypthome + +# Create the filesystems +mkfs.fat -F 32 /dev/nvme0n1p1 +mkfs.btrfs /dev/mapper/cryptroot +mkfs.btrfs /dev/mapper/crypthome + +# mount the partitions in the correpsonding paths +mount /dev/mapper/cryptroot /mnt +mkdir /mnt/boot +mount /dev/nvme0n1p1 /mnt/boot +mkdir /mnt/home +mount /dev/mapper/crypthome /mnt/home +``` + +## Pacstrap + +```sh +# install base, kernels, firmware and utils +pacstrap -i /mnt base base-devel linux linux-zen linux-firmware intel-ucode vim nushell +``` + +## Steps in Chroot + +```sh +# enter new root +arch-chroot /mnt +``` + +### Timezone and Time + +```sh +# Uncomment at least one desired locale +vim /etc/locale.gen +locale-gen +# Use your main locale +echo LANG=en_GB.UTF-8 /etc/locale.conf +export LANG=en_GB.UTF-8 + +# Timezone info +ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localetime + +# Configure hwclock to utc +hwclock --systohc --utc + +# Set the keyboard layout +echo KEYMAP=de > /etc/vconsole.conf +``` + +### Pacman + +Open `/etc/pacman.conf` and uncomment `Color` and `ParallelDownlods=5` as well +as the section containing the `multilib` repository + + +### Users + +```sh +# set the root password +passwd + +# Add a user (this one is called trivernis) +useradd -m -G wheel -s /bin/nu trivernis + +# Change the user's password +passwd trivernis + +# Enable the wheel group +EDITOR=/bin/vim visudo # uncomment the corresponding line +``` + + +### Bootloader (systemd-boot) + +Add mkinitcpio hooks +```sh +# TODO +``` + +```sh +# Generate initrds +mkinitcpio -P + +bootctl install +``` + +Create records in /boot/loader/entries/ + +```sh +# arch-zen.conf +title Arch Linux (linux-zen) +linux /vmlinuz-linux-zen +initrd /intel-ucode.img +initrd /initramfs-linux-zen.img +options cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot zswap.enabled=1 intel_pstate=no_hwp rootfstype=btrfs +``` + +```sh +# arch.conf +title Arch Linux (linux) +linux /vmlinuz-linux +initrd /intel-ucode.img +initrd /initramfs-linux.img +options cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot zswap.enabled=1 intel_pstate=no_hwp rootfstype=btrfs +``` + +```sh +# arch-fallback.conf +title Fallback Arch Linux (linux) +linux /vmlinuz-linux +initrd /intel-ucode.img +initrd /initramfs-linux-fallback.img +options cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot zswap.enabled=1 intel_pstate=no_hwp rootfstype=btrfs +``` + +Configure the bootloader with `/boot/loader/loader.conf` + +```sh +timeout 2 +default arch-zen.conf +console-mode max +```` + +### Disks + +```sh +# Create key for /home cryptdevice +mkdir /etc/keys +chmod 700 /etc/keys +dd bs=512 count=4 if=/dev/random of=/etc/keys/crypthome.key iflag=fullblock +chmod 600 /etc/key/crypthome.key +cryptsetup luksAddKey /dev/sda1 /etc/keys/crypthome.key +``` + +Edit `/etc/cryptab` And add the device with the created key + + +### Networking + +```sh +# set the hostname +echo archomen > /etc/hostname + +# Install the networkmanager +pacman -S networkmanager +systemctl enable NetworkManager.service --now +``` + + +### Desktop Environment (KDE) + +```sh +# Install audio support +pacman -S pulseaudio + +# install KDE. Choose +# > noto-fonts +# > pipewire-jack +# > wireplumber +# > phonon-qt5-gstreamer +# in the selection prompts +pacman -S sddm plasma plasma-wayland-session xorg-xwayland xdg-desktop-portal-kde plasma-nm plasma-pa kwallet5 kwallet-pam kwalletmanager + +# Enable sddm on startup +systemd enable sddm +``` + + +### PRIME Offloading + +Make sure to remove `kms` from the `/etc/mkinitcpio.conf` HOOKS section + +```sh +# Install nvidia drivers +pacman -S linux-headers linux-zen-headers dkms nvidia-dkms prime nvidia-utils lib32-nvidia-utils +``` + + +### Yay + +```sh +pacman -S git +git clone https://aur.archlinux.org/yay.gi +cd yay +makepkg -si +``` + +### Swap + +See [BTRFS Swap](https://wiki.archlinux.org/title/Btrfs#Swap_file)