How to Install Arch Linux on LVM

From LearnLinux.tv Wiki
Jump to navigation Jump to search

Overview

In this video, the viewer is shown how to create a custom installation of Arch Linux with EFI, LVM, and Encryption.

Relevant Links
Original Video
Arch Linux Download Page

Installation Steps

Download latest Arch linux ISO

https://www.archlinux.org/download/

Check if there is an Internet connection (if on wired)
 ip addr show
For WiFi, you can use wifi-menu
 wifi-menu
If you do have a network connection but no IP address use:
 dhcpcd
Edit the mirrorlist (optional)
 nano /etc/pacman.d/mirrorlist
Update repository index
 pacman -Syyy
See partitions/drives on the system (find the name of your hard drive)
 fdisk -l
Start the partitioner (fdisk)
 fdisk /dev/<DEVICE> (substitute <DEVICE> for your device name, example: /dev/sda or /dev/nvme0n1)
Show current partitions
 p
Create EFI partition
 g (to create an empty GPT partition table)
 n
 enter
 enter
 +500M
 t
 1 (For EFI)
 
Create LVM partition
 n
 enter
 enter
 enter
 t
 enter
 30
Show current partitions again
 p
Finalize partition changes
 w
Format the EFI partition
 mkfs.fat -F32 /dev/<DEVICE PARTITION 1> (for example: /dev/sda1)
Set up lvm
 pvcreate --dataalignment 1m /dev/<DEVICE NAME>
 vgcreate volgroup0 /dev/<DEVICE NAME>
 lvcreate -L 30GB volgroup0 -n lv_root
 lvcreate -l 100%FREE volgroup0 -n lv_home (or use something like "-L 250GB" if you want to make the volume size lower)
 modprobe dm_mod
 vgscan
 vgchange -ay
Format the root partition
 mkfs.ext4 /dev/volgroup0/lv_root
Mount the root partition
 mount /dev/volgroup0/lv_root /mnt
Format the home partition
 mkfs.ext4 /dev/volgroup0/lv_home
Create the home partition mount point
 mkdir /mnt/home
Mount the home volume
 mount /dev/volgroup0/lv_home /mnt/home
Create the /etc dirctory
 mkdir /mnt/etc
Create the /etc/fstab file
 genfstab -U -p /mnt >> /mnt/etc/fstab
Check the /etc/fstab file
 cat /mnt/etc/fstab
Install Arch Linux base packages
 pacstrap -i /mnt base
Access the in-progress Arch installation
 arch-chroot /mnt
Install a kernel and headers
 pacman -S linux linux-headers

For LTS:

 pacman -S linux-lts linux-lts-headers

Or both:

 pacman -S linux linux-lts linux-headers linux-lts-headers 
Install a text editor
 pacman -S nano
Install optional packages
 pacman -S base-devel openssh
Enable OpenSSH if you've installed it
 systemctl enable sshd
Install packages for networking
 pacman -S networkmanager wpa_supplicant wireless_tools netctl
Install dialog (required for wifi-menu)
 pacman -S dialog
Enable networkmanager
 systemctl enable NetworkManager
Install LVM support
 pacman -S lvm2
Edit /etc/mkinitcpio.conf
 nano /etc/mkinitcpio.conf

On the "HOOKS" line (line #52 or thereabouts), add "lvm2" in between "block" and "filesystems"

It should look similar to the following (don't copy this line in case they change it, but just add the two new items):

 HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck)
Create the initial ramdisk for the main kernel
 mkinitcpio -p linux
Create the initial ramdisk for the LTS kernel (if you installed it)
 mkinitcpio -p linux-lts
Uncomment the line from the /etc/locale.gen file that corresponds to your locale
 nano /etc/locale.gen (uncomment en_US.UTF-8)
Generate the locale
 locale-gen
Set the root password
 passwd
Create a user for yourself
 useradd -m -g users -G wheel <username>
Set your password
 passwd <username>
Install sudo (may already be installed)
 pacman -S sudo
Allow users in the 'wheel' group to use sudo
 EDITOR=nano visudo

Uncomment:

 %wheel ALL=(ALL) ALL
Install packages for GRUB
 pacman -S grub efibootmgr dosfstools os-prober mtools
Create the directory for EFI boot
 mkdir /boot/EFI
Mount the EFI partition
 mount /dev/<DEVICE PARTITION 1> /boot/EFI
Install GRUB
 grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck
Create the locale directory for GRUB
 mkdir /boot/grub/locale
Copy the locale file to locale directory
 cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
Generate GRUB's config file
 grub-mkconfig -o /boot/grub/grub.cfg
Create swap file
 fallocate -l 2G /swapfile
 chmod 600 /swapfile
 mkswap /swapfile
Back up the /etc/fstab file
 cp /etc/fstab /etc/fstab.bak
Add the swap file to the /etc/fstab file
 echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab
Check the /etc/fstab file to make sure it includes all the right partitions
 cat /etc/fstab

You should have a mountpoint for the root filesystem, boot partition, home partition, and swap file

Wrapping Up, Optional Considerations

Install CPU Microde files (AMD CPU)
 pacman -S amd-ucode
Install CPU Microde files (Intel CPU)
 pacman -S intel-ucode
Install Xorg if you plan on having a GUI
 pacman -S xorg-server
Install 3D support for Intel or AMD graphics

If you have an Intel or AMD GPU, install the mesa package:

 pacman -S mesa
Install Nvidia Driver packages if you have an Nvidia GPU
 pacman -S nvidia nvidia-utils

Note: Install nvidia-lts if you've installed the LTS kernel:

 pacman -S nvidia-lts
Install Virtualbox guest packages

If you're installing Arch inside a Virtualbox virtual machine, install these packages:

 pacman -S virtualbox-guest-utils xf86-video-vmware

Moment of truth: Reboot your machine

Exit the chroot environment
 exit
Unmount everything (some errors are okay here)
 umount -a
Reboot the machine
 reboot