|
3 months ago | |
---|---|---|
README.md | 3 months ago |
Notes on Arch Linux system setup.
efivar -l
is not empty.pacman-key --populate archlinux
and pacman-key --refresh-keys
.cryptsetup open --type plain -d /dev/urandom /dev/sda temp
- create a temporary encrypted container named temp
on the /dev/sda
partition to be encrypted.dd if=/dev/zero of=/dev/mapper/temp bs=4M status=progress
- fill the container with zeros.cryptsetup close temp
- close the temporary container.parted /dev/sda mklabel gpt
- create a new gpt
partition label.parted /dev/sda mkpart boot fat32 0% 512M
- create the boot
partition.parted /dev/sda set 1 boot on
- set the boot flags for the boot
partition.parted /dev/sda mkpart system ext4 512M 100%
- create the system
partition.cryptsetup luksFormat --type luks2 /dev/sda2
- initialize the LUKS2 header on the system partition.cryptsetup luksDump /dev/sda2
- check the LUKS2 header.cryptsetup luksOpen /dev/sda2 cryptlvm
- open the encrypted system partition and map it to /dev/mapper/cryptlvm
.pvcreate /dev/mapper/cryptlvm
- create a new physical volume from the encrypted system partition.vgcreate vg /dev/mapper/cryptlvm
- create a new volume group vg
.lvcreate --size 16G --name root vg
- create a new logical volume root
inside the vg
.lvcreate --extents 100%FREE --name home vg
- create a new logical volume home
inside the vg
, taking up the remaining space.mkfs.ext4 /dev/mapper/vg-root
- make a filesystem for the vg-root
logical volume.mkfs.ext4 /dev/mapper/vg-home
- make a filesystem for the vg-home
logical volume.mkfs.fat /dev/sda1
- make a filesystem for the boot
partition.mount /dev/mapper/vg-root /mnt
- mount the vg-root
.mkdir /mnt/home
- create the home
dir.mount /dev/mapper/vg-home /mnt/home
- mount the home
dir.mkdir /mnt/boot
- create the boot
dir.mount /dev/sda1 /mnt/boot
- create the boot
dir.vim /etc/pacman.d/mirrorlist
- find the best mirror from the mirrorlist.pacstrap /mnt linux linux-firmware lvm2 base base-devel zsh git vim
- an alternative approach to what is described in Arch wiki. Execute the pacstrap
command and follow instructions after arch-chroot
.pacstrap /mnt intel-ucode
- install microcode for Intel based CPUs (amd-ucode
for AMD based CPUs).genfstab -U /mnt > /mnt/etc/fstab
- write the currently mounted filesystems to the new system.arch-chroot /mnt
- chroot to the your new OS.useradd -s /bin/zsh -g wheel -m martins
- create a new user martins
.passwd martins
- set the password for martins
.passwd root
- set the password for root
.visudo
- edit sudo
user permissions.vim /etc/locale.gen
- edit the locale file.locale-gen
- generate the chosen locales.localectl set-locale LANG=en_US.UTF-8
- set the locale.timedatectl set-timezone Europe/Zurich
- set the timezone.timedatectl set-ntp true
- enable network time sync.vim /etc/hostname
- edit the hostname.bootctl install
- install the systemd-boot bootloader.vim /boot/loader/loader.conf
- edit the bootloader conf.default arch
editor 0
timeout 3
console-mode max
cp /usr/share/systemd/bootcl/arch.conf /boot/loader/entries/
- copy the default entry.vim /boot/loader/entries/arch.conf
- edit the default entry. Using blkid
, UUID
must be the UUID
(not PARTUUID
) of /dev/sda2
(not of /dev/mapper/cryptlvm
or /dev/mapper/vg-root
).title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=/dev/mapper/vg-root rd.luks.name=UUID=cryptlvm rd.luks.options=timeout=0 rootflags=x-systemd.device-timeout=0 quiet loglevel=3 vga=current
vim /etc/mkinitcpio.conf
- edit the initial ramdisk environment script....
HOOKS=(base systemd autodetect modconf keyboard block sd-encrypt sd-lvm2 filesystems fsck)
...
mkinitcpio -p linux
- regenerate the initial ramdisk environment.dhcpd
since systemd-networkd
can handle DHCP as well.ip l
- find the names of the interfaces.vim /etc/systemd/network/25-wired-wireless.network
- add a configuration file with the respective interfaces.[Match]
Name=enp2s0f0 wlan0
[Network]
DHCP=yes
Post
section below).pacman -S reflector
- install reflector
for optimizing mirrors.reflector -p http --save /etc/pacman.d/mirrorlist
- find the best mirror and update mirrorlist.su martins
- switch to the newly created user for running trizen as non-root.trizen
setup here and install the base
list. Install other lists as you see fit.exit
- exit the environment. You might repeat till you get back to the Live USB.umount -R /mnt
- recursively unmount the mounted partitions.systemd enable systemd-networkd.service
- enable the networking service.systemd enable systemd-resolved.service
- enable the resolver service for local applications.systemd start systemd-networkd.service
- start the networking service.systemd start systemd-resolved.service
- start the resolver service for local applications.ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
- redirect to the local stub DNS resolver file.