-
Getting connected to internet.
-
iwctl
A network tool to connect to internet generally used in arch installs
root@archlive~: iwctl iwctl: device list # list available network adapters iwctl: station wls3p0 scan # scan with wls3p0 wireless adapter iwctl: station wls3p0 get-networks # Lists available networks iwctl: station wls3p0 connect "SSID Name" # Will ask for creds iwctl: exit root@archlive~: ip a # check if you are connected root@archlive~: ping 8.8.8.8 # Verify access to internet
-
-
Set up disk partitioning(UEFI + Encryption)
-
cfdisk - Creating required partitions
cfdisk /dev/sda # Create your partitions as needed.
I have an EFI partiotion(/dev/sda1) from windows installation and my root has been created at sda4 to avoid confusion.
efi - 500MB = /dev/sda1 create this if you don't have existing efi
root - 300GB = /dev/sda4
NB: If you are dual booting, don't create a EFI partition, use existing one. In my case that is /dev/sda1
lsblk # Verify if you can identify all required partitions fdisk -l # Different way.
-
mks tools* - Formating and setting up LVM
Note: Skip this if you already have an existing EFI partition
Format EFI to FAT32
mkfs.fat -F32 /dev/sda1 # create a FAT32 file system for EFI boot partition
Format root partion to ext4
mkfs.ext4 /dev/sda4 # the root partition
cryptsetup luksFormat /dev/sda4 # Confirm with YES and enter your strong password. cryptsetup open --type luks /dev/sda4 lvm # Enter the password you just set up to unlock the partition.
cryptsetup open --type luks /dev/sda3 lvm # Enter the password you just set up and map as lvm.
pvcreate --dataalignment 1m /dev/mapper/lvm
vgcreate volgroup0 /dev/mapper/lvm
lvcreate -L 100%FREE volgroup0 -n lv_root # Give all space to root modprobe dm_mod # Load a required kernel module vgscan # scan volume groups vgchange -ay # load logical volume
mkfs.ext4 /dev/volgroup0/lv_root mount /dev/volgroup0/lv_root /mnt mkdir /mnt/boot/EFI # create a boot partion mount /dev/sda1 /mnt/boot # Mount it mkdir /mnt/etc/ # Config directory genfstab -U -p /mnt >> /mnt/etc/fstab # Generate filesystem conf and save it cat /etc/fstab # Verify
-
-
Start Arch Installation
Lets first install main packages and the kernel
pacstrap -i /mnt base arch-chroot /mnt # Chroot to our system pacman -S linux linux-headers # Thats the kernel and headers pacman -S nano base-devel openssh networkmanager wpa_supplicant wireless_tools netctl dialog lvm2 # You need this, trust me. systemctl enable NetworkManager # Enable network service
Some required editing you need in order for our luks to work
nano /etc/mkinitcpio.conf # Edit line that begins with HOOKS (... block [here] filesystems...)
For encrypted disk setup which we do, we need to add (...[encrypt lvm2]...) save and quit Should now look like this.
HOOKS (... block encrypt lvm2 filesystems...)
Regenerate the vmlinux image and look for encrypt and lvm2 in output logs
mkinitcpio -p linux
nano /etc/locale.gen # Uncomment your locale e.g. en_US.UTF-8 UTF-8 locale-gen # Generate newly configured locales
-
Set up users and permissions
passwd # Create a root password (Because we are chrooted as root account) useradd -m -g users -G wheel justkelvin # Replace justkelvin with your desired name passwd justkelvin # Set password for user created above
Let's add the newly created user to the sudoers file
EDITOR=nano visudo # Uncomment line: Allow members of group wheel to execute any command %wheel ALL=(ALL) ALL
NB: This will allow the user to run sudo commands
-
Grub installation and rebooting
Install grub and os-prober in order to locate any other installed OS.
pacman -S grub efibootmgr os-prober
Now edit this file and append this line to enable os detection and luks support
grub-install --target=x86_64-efi --bootloader-id=grub_efi --recheck # Install grub nano /etc/default/grub # Uncomment this line GRUB_ENABLE_CRYPTODISK=y # Change this line and replace /dev/sda4 with your root device number GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/sda4:volgroup0:allow-discards loglevel=3 quiet" # Add this at the end of the file - GRUB_DISABLE_OS_PROBER=false grub-mkconfig -o /boot/grub/grub.cfg # Generate grub config
Time to reboot, fingers crossed if you did everything correctly it will boot successfully.
Goodluck
exit # Exit chroot environment reboot # Reboot the system.
-
Finalize your installation
Login in the TTY with your user account created, not root.
su # Change to root, enter your password, not the root. cd /root/ # Create a swap file. dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress # Create a 2GB swap file. Change the count to your desired size chmod 600 /swapfile # Set permissions mkswap /swapfile # Make it a swapfile
Create a backup of your filesystem file (fstab)
cp /etc/fstab /etc/fstab.bak # We are going to append a line that will let the system know the swapfile existence echo "/swapfile none swap sw 0 0" | tee -a /etc/fstab # Append to fstab and echo mount -a # Test fstab for error swapon -a # Activate swap free -m # Confirm swap size
-
Configure timezone and Hostname and Hosts
timedatectl list-timezones # Find yours timedatectl set-timezone Asia/Hong_Kong # Replace it here systemctl enable --now systemd-timesyncd # Service for our time synchronization hostnamectl set-hostname arch # replace arch with what you like nano /etc/hosts # as follows, replace arch with what you set above # 127.0.0.1 localhost # 127.0.1.1 arch
Install CPU microcode
pacman -S amd-ucode # Or intel-ucode for intel device
-
Install Desktop Environment... ;)
pacman -S xorg-server # Xorg pacman -S mesa # Video driver for Intel and AMD Inc. # For Nvidia GPU pacman -S nvidia # For VM installs guest pacman -S virtualbox-guest-utils xf86-vides-vmware systemctl enable --now vboxservice
Now choose your prefered DE, WM.
# Gnome Environment pacman -S gnome gnome-tweaks systemctl enable --now gdm.service # Enable and start Dispaly manager *GDM # KDE Plasma pacman -S plasma-meta kde-applications systemctl enable --now sddm.service # Enable and start SDDM
-
Phew, thats it guys.
pacman -S neofetch neofetch # Show your crush now.
Created
October 11, 2022 14:04
-
-
Save justkelvin/96cf837f83492895e535d2c16a3c6ee3 to your computer and use it in GitHub Desktop.
Arch linux install with luks encryption
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment