This is a more recent article I put together on how to install Arch linux with EUFI on a Lenovo ThinkPad T470p with secure boot disabled. This article assumes you are using a US keyboard layout. You should also read the official Arch installation guide https://wiki.archlinux.org/index.php/installation_guide.
My ThinkPad uses a NVMe (Non-Volatile Memory Express) storage interface drive. I call this out because you will see my notes referencing /dev/nvme0n1 in the notes below.
-
Verify boot mode:
- This is an important set when working with a UEFI system. Run the below command and if the directory does not exist, the system may not be booted in UEFI mode.
ls /sys/firmware/efi/efivars(If the directory exist your computer supports EFI)
-
Ping some site on the internet to verify connection:
- Use
ip linkto verify your network devices - If necessary, use
iwctlto setup your wireless - Run
pingto check to see if you already have an internet connection ping archlinux.org -c 5
- Use
-
Update system clock:
- View the current status of your clock by running
timedatectl status - Run the following command to ensure your system clock is correct
timedatectl set-ntp true - This will set your date and time to update remotely using network time protocol
- View the current status of your clock by running
-
Go to https://archlinux.org/mirrorlist and find the closest mirror that supports HTTPS:
- Add the mirrors on top of the
/etc/pacman.d/mirrorlistfile. Server = https://mirror.arizona.edu/archlinux/$repo/os/$arch(United States)
- Add the mirrors on top of the
-
Run
fdisk -lto show you disks -
cfdisk -z /dev/the_disk_to_be_partitionedin my case it would becfdisk -z /dev/nvme0n1 -
Select
gpt
-
Create EFI partition:
- New
- 1G
- Type
- EFI System
- Write
-
Create root partition:
- Select free space
- New
- Use rest of the space
- Linux root (x86-64) filesystem
- Write
-
Create the filesystems and encryption:
fdisk -lto view the partitions for the next stepmkfs.vfat -F32 -n EFI /dev/nvme0n1p1cryptsetup --use-random luksFormat /dev/nvme0n1p2(you will be prompted to type a passphrase)cryptsetup luksOpen /dev/nvme0n1p2 luks
-
Create logical partitions
pvcreate /dev/mapper/luksvgcreate vol_grp /dev/mapper/lukslvcreate --size 8G vol_grp --name swaplvcreate -l +100%FREE vol_grp --name root
- Format the root and swap partitions
mkfs.ext4 -L root /dev/mapper/vol_grp-rootmkswap /dev/mapper/vol_grp-swap
-
Mount the filesystems.
mount /dev/mapper/vol_grp-root /mntswapon /dev/mapper/vol_grp-swapmount --mkdir /dev/nvme0n1p1 /mnt/boot
-
Install Arch linux base packages:
- Use the following if you want to include VIM:
pacstrap -K /mnt base base-devel linux linux-firmware sudo lvm2 efibootmgr intel-ucode xf86-video-intel vi vim
-
Generate the
/etc/fstabfile:genfstab -U /mnt >> /mnt/etc/fstab
-
Chroot into installed system:
arch-chroot /mnt
-
Set the timezone:
ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime
-
Update the Hardware clock:
hwclock --systohc
-
Set locale:
sed -i 's/#en_US.UTF-8/en_US.UTF-8/g' /etc/locale.gen(uncomment en_US.UTF-8)- or
vim /etc/locale.genand manually uncomment en_US.UTF-8 locale-gen
-
Set your hostname and configure hosts
echo myhostname > /etc/hostname- Update
/etc/hostswith the following:
127.0.0.1 localhost ::1 localhost 127.0.1.1 myhostname.localdomain myhostname -
Set the root password
passwd
-
Let’s enable the network
- If you don’t do this before your reboot you won’t have internet connection
pacman -S networkmanagersystemctl enable NetworkManager
-
Create the initial ramdisk environment
vim /etc/mkinitcpio.conf
Update mkinitcpio.conf to the values below:
MODULES=(ext4) BINARIES=() FILES=() HOOKS=(base udev autodetect modconf block encrypt lvm2 resume filesystems keyboard fsck)- `mkinitcpio -p linux` - `bootctl --path=/boot install` -
Boot loader settings
echo default archlinux >> /boot/loader/loader.confecho timeout 4 >> /boot/loader/loader.conf
-
Find the UUID of encrypted partition using
blkidblkid
vim /boot/loader/entries/archlinux.confThen enter the following information:
title Arch Linux linux /vmlinuz-linux initrd /intel-ucode.img initrd /initramfs-linux.img options cryptdevice=UUID="YOUR-UUID-HERE":vol_grp root=/dev/mapper/vol_grp-root resume=/dev/mapper/vol_grp-swap rw intel_pstate=no_hwp -
Exit, unount and reboot:
exitumount -R /mntreboot
-
Install
throttledwhich is a workaround for Intel throttling issues. Read more about it here.pacman -S throttledsudo systemctl enable --now throttled.service
Thanks for visiting!