Linux that will run docker.
This is not a hand hodling explaining guide how to install arch.
It's more of a checklist on what to do if you already done it
and know what you are doing.
Google for plenty of tutorials and youtube videos alongside arch wiki.
/home/
└── bastard/
└── docker/
├── container-setup #1
├── container-setup #2
├── ...
sudo dd bs=4M if=archlinux-2020.05.01-x86_64.iso of=/dev/sdX status=progress oflag=direct
The above command will fuck your machine up if you dunno what you are doing.
This is BIOS/MBR setup as I am running on an old thinkpad with a busted screen,
plus I like the simplicity of it.
So if theres boot menu option choose non-uefi.
- create a single partition and mark it bootable
cfdisk -z /dev/sda
- build ext4 filesystem on it
mkfs.ext4 /dev/sda1
- mount the new partition
mount /dev/sda1 /mnt
- choose geographicly close mirror,
dd
deletes entire line in vim
vim /etc/pacman.d/mirrorlist
- install the base system
pacstrap /mnt base linux linux-firmware base-devel grub vim
- gnerate fstab
genfstab -U /mnt > /mnt/etc/fstab
- chroot in to the new system
arch-chroot /mnt
- install grub
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
- set password for root
passwd
- remove the bootable media and restart the machine
exit
reboot
-
login as
root
-
set hostname
echo docker-host > /etc/hostname
-
add new user and set their password
useradd -m -G wheel bastard
passwd bastard
-
edit sudoers to allow users of the group wheel to sudo
EDITOR=vim visudo
%wheel ALL=(ALL) ALL -
check the network interface name
ip link
-
set static IP using systemd-networkd and resolv.conf
vim /etc/systemd/network/20-wired.network
[Match] Name=enp0s25 [Network] Address=10.0.19.2/24 Gateway=10.0.19.1
vim /etc/resolv.conf
nameserver 8.8.8.8 nameserver 1.1.1.1
systemctl enable --now systemd-networkd
No troublesome
systemd-resolved
in this setup. -
uncomment desidred locales in locale.gen
vim /etc/locale.gen
-
generate new locales and set one system wide
locale-gen
localectl set-locale LANG=en_US.UTF-8
-
select timezone and set it permanent
tzselect
timedatectl set-timezone 'Europe/Bratislava'
-
set hardware clock and sync using ntp
hwclock --systohc --utc
timedatectl set-ntp true
-
setup a swap file
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
vim /etc/fstab
/swapfile none swap defaults 0 0 -
reboot
reboot
From now on its login as non-root user.
- install openssh package
sudo pacman -S openssh
- edit sshd_config
sudo vim /etc/ssh/sshd_config
PasswordAuthentication yes - enable sshd service
sudo systemctl enable --now sshd
- have
docker
anddocker-compose
packages installed
sudo pacman -S docker docker-compose
- enable docker service
sudo systemctl enable --now docker
- add non-root user to the docker group
sudo gpasswd -a bastard docker
I like Zim, it's the fastest zsh framework and out of the box setup nicely
- install zsh and curl packages
sudo pacman -S zsh git curl
- install zim, it changes users default shell to zsh
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
- change the default shell to zsh
chsh -s /bin/zsh
vim .zshrc
-
export EDITOR=vim
-
for ctrl+f prepending sudo
add_sudo (){ BUFFER="sudo $BUFFER" zle -w end-of-line } zle -N add_sudo bindkey "^f" add_sudo
Here. For zim it's "Without oh-my-zsh shell" section.
Using Yay.
- install git package
sudo pacman -S git
- install yay
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin && makepkg -si
cd .. && rm -rf yay-bin
ctop-bin
and inxi
are good AUR packages.
wiki - general general recommendations
wiki - improving performance
Tools
sudo pacman -S fuse curl wget vim nnn bind-tools borg python-llfuse
Monitoring and testing
sudo pacman -S htop lm_sensors iotop nload powertop iproute2
- install cron and enable the service
sudo pacman -S cronie
sudo systemctl enable --now cronie
- if ssd, enable periodic trim
sudo pacman -S util-linux
sudo systemctl enable --now fstrim.timer
- set noatime in fstab to prevent unnecessary keep of read times
sudo vim /etc/fstab
UUID=cdd..addb / ext4 rw,noatime 0 1 - enable use of all cpu cores for makepkg jobs and disable compression
sudo vim /etc/makepkg.conf
MAKEFLAGS="-j$(nproc)"
PKGEXT='.pkg.tar' - clean up old packages weekly, keep last 3
sudo pacman -S pacman-contrib
sudo systemctl enable --now paccache.timer
- use reflector to get the fastes mirrors based on country
-c <country code>
sudo pacman -S reflector
sudo reflector -l 200 -n 20 -c SK -c CZ -p http --sort rate --save /etc/pacman.d/mirrorlist
- enable colors in pacman.conf
sudo vim /etc/pacman.conf
Color
- control power events, lid close for example
sudo vim /etc/systemd/logind.conf
HandleLidSwitch=ignore