[Arch] Archlinux Setup (Updated)

A brief archlinux install guide.

Final setup will be: archlinux + i3wm, booted with efi.

Before the install…


  • this is for gpt partitions and efi boot. And the device name here is only a reference.
  • Also note that: if you are installing the new system from a existing system, you can simply use rsync to migrate system, see wiki for details. If you want a fresh new install, the package arch-install-scripts is needed, which includes the tools like arch-chroot and genfstab etc.

Make sure the system clock is accurate before the install.

timedatectl set-ntp true
timedatectl status

Make sure internet is available. A wired connection is recommended. See wiki for details.

Preparing the disk.

Disk Partition & Formatting

use tool cgdisk to make partitions.

Partition Mount Point Type Size (typical) Device Name
boot /boot Efi System 256-512MB /dev/sda1
swap linux swap 2 * Memory Size /dev/sda2
root / linux filesystem as large as needed /dev/sda3

Disk formatting

Formatting the boot and root partition

mkfs.vfat -F32 /dev/sda1
mkfs.ext4 /dev/sda3

Use swap partition (Optional)

mkswap /dev/sda2
swapon /dev/sda2

Note: package dosfstools may be needed for vfat file system.

Mount the Disk

mount /dev/sda3 /mnt
mkdir -p /mnt/home 
mkdir -p /mnt/boot
mount /dev/sda1 /mnt/boot

System Install and Basic Configs

Before the install, you may want to choose a faster mirror. Expecially when you are from CHINA… China’s gov is a total blyat… Edit /etc/pacman.d/mirrorlist and run pacman -Syy

install basic system

pacstrap /mnt base linux linux-firmware

config fstab

# genfstab -U /mnt >> /mnt/etc/fstab 

Note: before running genfstab, I recommend you to use lsblk or fdisk -l etc. to check if the partitions are correctly mounted.

After the system installing, genfstab should not be used anymore. Edit /etc/fstab manually afterwards if needed.

chroot into the new installed system

arch-chroot /mnt

basic system config

Setting Timezone

# timedatectl list-timezones
# timedatectl set-timezone Zone/SubZone

Locale and Language edit /etc/locale.gen, uncomment the language encoding that you need. e.g. I have

en_US.UTF-8 UTF-8
de_DE.UTF-8 UTF-8
zh_CN.GB18030 GB18030
zh_CN.UTF-8 UTF-8
zh_CN GB2312

then run locale-gen to generate locales..

create /etc/locale.conf and set LANG variable, e.g.


Network Manager I prefer Network Manager.. here we disable dhcpd(if used during the installation) and install network-manager

sudo pacman -S networkmanager
sudo systemctl disable dhcpcd
sudo systemctl enable NetworkManager.service

Create new user It’s not recommended to use root user on a daily basis.

useradd -G wheel username
passwd username
mkdir -m 700 /home/username
chown username:username /home/user

Then edit sudoers to grant new user root privilege. Use visudo command to edit.

username ALL=(ALL) ALL

Boatloader (fore UEFI)

Check again all the partitions are correctly mounted!

pacman -S grub os-prober efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck
grub-mkconfig -o /boot/grub/grub.cfg

Now you can unmount the disk and reboot. If nothing went wrong, you should be able to boot into the new system with grub.

Desktop Environment, Sound and Graphic.

install xorg

pacman -S xorg xorg-server xorg-utils xorg-xinit xorg-xfontsel xorg-font-util

install and setup i3

pacman -S i3-wm i3status i3blocks i3lock dmenu dunst

Note: packages other than i3-wm are optinal. There are also forks of i3 that you may choose from e.g. i3-gaps which gives extra gap between panels. Also I’m not going to cover the usage and detailed config of i3-wm and other utils here. This is only a setup guide.

To run i3, edit ~/.xinitrc and add at the end:

exec i3

Now run startx to launch X and i3! (A basic config will be generated during the first startup)


Alsa is installed by default, install alsa-utils for a control panel alsa-mixer.

graphic Note: this section is only for intel integrated graphic card users..

pacman -S mesa xf86-video-intel 

Preventing graphic tearing: add or edit /etc/X11/xorg.conf.d/20-intel.conf

Section "Device"
  Identifier "Intel Graphics"
  Driver "intel"

  Option "TearFree" "true"

Then reboot..

something else

fonts Lacking proper fonts sometimes causes problems.. Here are the fonts I installed.


Terminal, shell and editor

I currently use suckless’s st terminal. The build I’m using can be found in this site’s static file page.

I also use fish as shell, ranger and nnn as file browsers, neovim as editor and plugged as its plugin manager.

Fcitx and input method

pacman -S fcitx fcitx-configtool fcitx-googlepinyin fcitx-libpinyin

then add the folling lines to .xinitrc

# fcitx input
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx

and the following to i3 config

exec --no-startup-id fcitx -d

Other useful settings

add this to .xinitrc to swap esc and caplock (for vim users)

# swap caps
setxkbmap -option caps:swapescape

also this one (which will change your life)

xset r rate 300 50