Thinkpad T440 ArchLinux Setup


I recently got a Thinkpad T440 and decided to document the steps I took to set up archlinux. The last time I'd done this was on the Asus Zenbook UX330UA some years back. I thought the process would be different, but it was largely similar.

I first got the iso image and burnt it onto a flash drive with:

sudo dd if=archlinux-2021.01.01-x86_64.iso of=/dev/sda status=progress bs=2M

Connecting the flash into the laptop and booting got me into Grub, then archlinux, and accessed wifi using iwctl.

device list # showed wlan0 as the wifi device
station wlan0 scan
station wlan0 get-networks # list SSIDs
station wlan0 connect SSID

After which I updated the system clock with:

timedatectl set-ntp true

I had no qualms wiping out my hard drive and setting things up from scratch. I noticed that I had two storage devices, a 16GB SSD and a 512GB hard drive. I decided against using the SSD for anything (I'm planning to upgrade this to a larger size), and only used the hard drive.

To partition the drive:

fdisk -l # lists devices

fdisk /dev/sda # enters fdisk to help modify this drive
g # convert to gpt partitioning scheme
n # create a new partition
# first partition 2M for Grub
n # 2nd partition 120GB for linux
n # 3rd partittion rest of files size, for home directory

The first partition needed to have at least 1MB for Grub (see grub archwiki. I added another two partitions: 120GB for arch and the rest for my home folder. My reasoning was that when I upgraded the SSD, I'd just set up arch on it and my home folder would still be ok.

I partitioned the 2nd partition with:

mkfs.ext4 /dev/sda2
mount /dev/sda2 /mnt

And installed most of the programs I'd need with:

pacstrap /mnt base linux linux-firmware openssh git networkmanager tmux i3 dmenu sway xfce4 feh scrot xautolock python python-pip gvim neovim python-pynvim xdg-user-dirs zsh zsh-completions pulseaudio ledger firefox libmtp gvfs-mtp man-db man-pages texinfo intel-ucode grub

To generate fstab, I first mounted the third partition into /mnt/home:

mkfs.ext4 /dev/sda3 # partition to ext4
mount /dev/sda3 /mnt/home # ensures home is on another partition
genfstab -U /mnt >> /mnt/etc/fstab

I then chroot'ed into the partition and set up my timezone, locale and root user.

arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Africa/Nairobi /etc/localtime
hwclock --systohc

I set the locale by uncommenting the 'en_US.UTF-8 UTF-8' and the 'en_GB.UTF-8 UTF-8' lines in the /etc/locale.gen file and ran:

echo LANG=en_US.UTF-8 >> /etc/locale.conf
echo ovonel >> /etc/hostname

and added the following lines into /etc/hosts:   localhost
::1             localhost   ovonel.localdomain ovonel

I set up the root password by typing passwd, and added a new user with:

useradd -m -G wheel -s /bin/bash username
passwd username

I also installed sudo and set up permissions for the wheel group by uncommenting the line %WHEEL ALL= (ALL) ALL.

pacman -S sudo
EDITOR=vi visudo #and uncommnet the line %WHEEL  ALL= (ALL) ALL

Lastly I set up grub with:

grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

and after rebooting, I could enter my system.

Other Thinkpad T440 specific Things

This section will keep getting updates as I slowly improve my linux experience on the laptop.

I installed xorg using the instructions xorg archwiki.

I had to fix the screen size by measuring my screen dimensions with a tape measure and added them in a monitor config in /etc/X11/xorg.conf.d/90.monitor.conf:

Section "Monitor"
    Identifier      "eDP1"
    DisplaySize     300 170
    Gamma           0.7

For power management I set up tpacpi-bat and tlp, enabling their default services.

sudo pacman -S tpacpi-bat
sudo systemctl enable tpacpi-bat.service
sudo pacman -S tlp
sudo systemctl enable tlp