Getting Started
Hello everyone, in this blog I will help you bootstrap your arch linux setup in 5-10 minutes, and teach you where you can look into when you need help. Arch Linux has been one of the most difficult distros to setup until the new convenient archinstall
script.
I will be using archinstall
script in this guide. It is known with its non-exhaustive user friendly TUI installation phase.
First of all, ensure you install the ISO from Download Page, Arch is used within the whole world so don’t be scared of picking the closest mirror to yourself. All the mirrors have SSL/TLS enabled, the contents are the same you don’t need to worry about it. Also archlinux-x86_64.iso
and archlinux-YYYY.MM.DD-x86_64.iso
correspond to the same ISO, there is no difference.
Second of all, you need a software to burn the ISO, I used to use fedora media writer or opensuse image writer. But Balena Etcher is the cross-platform option for your own OS, after you insert the USB flash stick, just select the ISO and click burn or write.
The Requirements
- USB flash stick (recommended space >= 2G)
- ISO burner/ISO writer software (Balena Etcher)
- The internet (either with reliable ethernet or wifi)
- The keyboard
Setting up with Archinstall
After your burned the ISO then you plug in the USB flash stick and start the computer, you should see the classic Arch boot menu.
Firstly, you will need an internet connection, if you have ethernet you can just plug the ethernet cable and continue. If you have wifi, you need to type a few commands then enter the password(passphrase).
root@archiso $ iwctl
[iwd] $ help
[iwd] $ device list
[iwd] $ station wlan0 scan
[iwd] $ station wlan0 get-networks
[iwd] $ station wlan0 connect YOUR_NETWORK_NAME
Passphrase: *********
[iwd] $ station wlan0 show
[iwd] $ exit
Then we write and enter archinstall
to join TUI installation phase. There are couple of options presented to us;
root@archiso $ archinstall
Language
I pick English.
Mirror
I pick the closest mirror to me as a country.
Locales
I pick my locales for my keyboard.
Disk configuration
I pick BTRFS with compression/subvolumes enabled and auto disk partitioning. Please skip the disk encryption as it complicates many things.
Bootloader
I like the standard GRUB.
Swap
Always yes.
Hostname/Root Password/User Account
Profile
I pick Desktop/Gnome/all open-source drivers. You may need to pay attention to the drivers if you have NVIDIA driver.
Audio
Pipewire for latest hardware, pulse for very old hardware.
Kernel
- linux is the normal latest one. (I prefer this)
- linux-hardened is full of security therefore has lots of restraints.
- linux-lts is LTS (old) kernel.
- linux-zen is for performance machines with higher power usage such as gaming.
Network Configuration
Pick network manager if you are using GNOME or KDE.
Timezone / Automatic Time Sync
I pick my timezone and enable automatic time sync as the clock changes in winter and summer times.
Install
Finally click on install and enjoy, you can remove the flash stick after it asks you to do so when installation finishes.
Tuning Pacman
Pacman is the fastest package manager in the unixverse, but a little bit of tuning is required to make it skyrocket out of the roof. Big warning, once it is tuned, you will never enjoy mediocre package managers.
In /etc/pacman.conf
, change #color
row to color
, add a below row under it ILoveCandy
, also change #ParallelDownloads = 5
to ParallelDownloads = 10
, you can make the number higher as well if your internet is good.
We also need to set up paccache
(pacman cache cleaner for weekly)
$ sudo pacman -S pacman-contrib
$ sudo systemctl enable paccache.timer
Lastly, let’s edit /etc/makepkg.conf
, change MAKEFLAGS="-j4"
to MAKEFLAGS="-j$(nproc)"
Pacman Cheatsheet
dnf upgrade
equivelant, upgrades your whole system including the kernel
$ pacman -Syu
dnf search
equivelant, only searches through official repos, not AUR
$ pacman -Ss xPackage
dnf install
equivelant, installs the package to the system
$ pacman -S xPackage
dnf remove
equivelant, removes the package from the system
$ pacman -Rs xPackage
dnf list --all
equivelant, lists all the packages
$ pacman -Q
Using AUR for Unofficial Packages
I will be showing how you can install Brave through AUR, AUR is everyone’s ship to upload packages, you can make packages for anyone and upload it to AUR, so we need to be EXTREMELY careful while using AUR.
We will be downloading Brave from brave-bin, common Arch package convention is to rename packaged software accordingly;
- abc (means build from stable version of the source)
- abc-git (means build from main branch of the source)
- abc-bin (means pre-built stable version binary)
We inspect URLs in PKGBUILD file for brave-bin to ensure we are not downloading the next crypto miner bot for our GPU.
$ mkdir AUR && cd ~/AUR
$ git clone https://aur.archlinux.org/brave-bin.git
$ cd ./brave-bin
$ less PKGBUILD
$ makepkg -si
Important note: DO NOT ever install an AUR helper, it is your job as an user to check every single AUR package before installing something, if something is not in official arch repo, use AUR wisely or even contribute to it!
Enable Microcode
Microcode is a very low-level instruction set which is stored permanently in a computer, it helps your processor’s power and computing efficiency.
For intel intel-ucode
, for AMD amd-ucode
$ sudo pacman -S intel-ucode
Enable Bluetooth
Sometimes bluetooth may not work on Linux in general but since you are on Arch, you just need a single package to make it work for every bluetooth driver out there. Remember this is not Linux’s fault, it is the fault of hardware manufacturers due to not open sourcing bluetooth drivers.
sudo pacman -S bluez bluez-utils
systemctl start bluetooth
sudo systemctl status bluetooth
sudo systemctl enable bluetooth
● bluetooth.service - Bluetooth service
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; preset: disabled)
Active: active (running) since Tue 2023-07-01 11:31:45 BST; 1 day 7h ago
Docs: man:bluetoothd(8)
Main PID: 633 (bluetoothd)
Status: "Running"
Tasks: 1 (limit: 76824)
Memory: 3.0M
CPU: 46.646s
CGroup: /system.slice/bluetooth.service
└─633 /usr/lib/bluetooth/bluetoothd
Disable GRUB Screen
The thing is when you open your computer and see GRUB screen everytime, it could be annoying unless you have multiple OSes in a single machine. So I recommend to change your /etc/default/grub
. Under GRUB settings, I change GRUB_TIMEOUT_STYLE=countdown
to GRUB_TIMEOUT_STYLE=hidden
to get rid of waiting on GRUB screen for 5 seconds. You can still visit GRUB screen with special Fx key on your machine.
My Personal Taste of Software (Optional)
$ sudo pacman -S wget curl git neofetch sl cowsay fortune-mod lolcat nmap mandoc vlc thunderbird obsidian discord gimp converseen calibre libreoffice-still go kubectl docker terraform rsync nodejs pnpm vscode
Installing vscode on arch, requires a small metadata patching for vscode marketplace as this vscode is not closely connected to Microsoft telemetry or Microsoft binary directly. We will use AUR for this purpose, please inspect the contents of PKGBUILD and other scripts for your own safety all the time. If we don’t patch our vscode marketplace, some plugins will be missing. please ALWAYS inspect the contents please.
$ cd ~/AUR
$ git clone https://aur.archlinux.org/code-marketplace.git
$ cd ./code-marketplace
$ less PKGBUILD
$ makepkg -si
Install Zsh (Optional)
Zsh is the fully fledged shell for end-users. You can install by doing sudo pacman -S zsh
then run chsh -s $(which zsh)
After you have installed zsh, we will be theming with ohmyzsh
and powerlevel10k
and also couple of shell plugins such as zsh completion
, zsh autosuggestion
, zsh highlighting
The installation of ohmyzsh is quite straight forward but please do INSPECT the shell script for the peace of the mind;
$ wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
$ less install.sh
$ sh install.sh
Logout and login again and open your shell to complete prompted options.
The installation of powerlevel10k is a bit more different. You need to install manually these 4 fonts; MesloLGS NF “Regular, Bold, Italic, Bold Italic” then double click each .ttf file and click install. Here is the link to the fonts
Let’s now install powerlevel10k through our ohmyzsh settings.
$ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
Now we can set ZSH_THEME=“powerlevel10k/powerlevel10k” in ~/.zshrc
file. And simply run exec zsh && p10k configure
.
At least but not the last, if you check out zsh users repository we have 3 must zsh productivity plugins; completions, highlighting and autosuggestions. Let’s install them one by one.
We install zsh-completions through ohmyzsh again. This will give you a custom CLI completion if a program provides its zsh completion.
$ git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions
Add it to FPATH in your .zshrc by adding the following line before source “$ZSH/oh-my-zsh.sh”
fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src
Then we install zsh-syntax-highlighting and zsh-autosuggestions. This will give you correct text highlighting and autosuggestions from the previous terminal history.
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Now modify plugins=
in your ~/.zshrc
file.
plugins=(
# other plugins...
zsh-syntax-highlighting
zsh-autosuggestions
)
Additional Help
If you get stuck or encounter a very difficult problem, you can check out the forums, arch forums/wiki/AUR is what makes arch the best distro in the unixverse.
“Power to the people”
— Unknown