ArchLinux installation is very well documented on Archlinux Wiki. My tutorial basically follows all the necessary steps from the wiki page with some additional configuration to achieve:
- LUKS encryption (this will be applied to all partitions except /boot)
- btrfs formatted filesystem, with use of subvolumes with flat layout
First prerequisite is to have bootable Arch installation medium.
Disk structure:
- 450MB partition for /boot (will hold rEFInd and kernel)
- rest of the disk space for subvolumes
- / will hold 2 subvolumes - root for / and home for /home mountpoint
Following step-by-step guide with comments goes through the installation process:
# check internet connection
ping archlinux.org
# sync time
timedatectl set-ntp true
# create partitions
cfdisk /dev/sda
# 450MB; type EFI System (sda1)
# rest of disk; type Linux filesystem (sda2)
# LUKS: encrypt and open sda2 partition
cryptsetup luksFormat /dev/sda2
cryptsetup open /dev/sda2 zotacroot
# create filesystems
mkfs.fat -F32 /dev/sda1
mkfs.btrfs -L archroot /dev/mapper/zotacroot
# select mirrors
vim /etc/pacman.d/mirrorlist
# now we'll mount our root partition (sda2) and create subvolumes
mkdir /mnt/{subvolumes,arch-root}
mount /dev/mapper/zotacroot /mnt/subvolumes
# subvolumes
btrfs subvolume create /mnt/subvolumes/home
btrfs subvolume create /mnt/subvolumes/root
# mount the subvolumes + boot
mount -o subvol=root /dev/mapper/zotacroot /mnt/arch-root
mkdir /mnt/arch-root/{boot,home}
mount -o subvol=home /dev/mapper/zotacroot /mnt/arch-root/home
mount /dev/sda1 /mnt/arch-root/boot
# install base system
pacstrap /mnt/arch-root base vim openssh btrfs-progs base-devel refind-efi intel-ucode
# generate fstab and chroot to new arch system
genfstab -U /mnt/arch-root >> /mnt/arch-root/etc/fstab
arch-chroot /mnt/arch-root
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
# Uncomment en_US.UTF-8 UTF-8 and other needed locales in /etc/locale.gen
# and generate with
vim /etc/locale.gen
locale-gen
# add LANG=en_US.UTF-8
vim /etc/locale.conf
# set hostname and hosts
vim /etc/hostname
vim /etc/hosts
# add "encrypt" hook in /etc/mkninitcpio.conf after block
vim /etc/mkinitcpio.conf
mkinitcpio -p linux
passwd
# install and configure rEFInd
refind-install
cd /boot/EFI
mkdir boot
cp refind/refind_x64.efi boot/bootx64.efi
# rEFInd configuration
# UUID:
ls -l /dev/disk/by-uuid/ | grep sda2
# refind.conf
menuentry "Arch Linux" {
icon /EFI/refind/icons/os_arch.png
volume "ESP"
loader /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options "cryptdevice=UUID=bde363f5-7de6-4794-83da-0dd56ff89bfa:zotacroot root=/dev/mapper/zotacroot rootflags=subvol=root rw add_efi_memmap"
submenuentry "Boot to terminal" {
add_options "systemd.unit=multi-user.target"
}
enabled
}
# in order to mount encrypted drive during boot add to /etc/crypttab
zotacroot UUID=bde363f5-7de6-4794-83da-0dd56ff89bfa none luks,timeout=180
# review fstab, you can replace UUID with disk label from /dev/disk/by-label
# I've also added transparent zstd compression for my data
LABEL=archroot / btrfs rw,relatime,ssd,space_cache,subvolid=257,subvol=root,compress=zstd 0 0
# exit and reboot
exit
umount -R /mnt/arch-root
umount -R /mnt/subvolumes
reboot
Changing rEFInd boot order:
Changing the order is important if you want to boot directly to rEFInd bootloader.
Use efibootmgr -v to list current EFI options. Then you can adjust the boot order with: efibootmgr -o 000A,0001,0003
In case you get No space left on device error add efi_no_storage_paranoia to the kernel parameters.
Do you have some typos?
ReplyDeletemkdir /mnt/{subvolumes,arch-chroot}
and then later on
mount -o subvol=root /dev/mapper/zotacroot /mnt/arch-root
also I tried to install only by using ur commands but there seem to be problems.
Seems ok to me.
DeleteI'm creating two folders - subvolumes which will contain all the subvolumes on fs, next arch-chroot where we'll temporarily mount our filesystems.
next command just mounts root subvolume.