Boot the Arch Linux ISO using Legacy BIOS.

Change shell to bash and reload shell:

# usermod -s /bin/bash root
# exit

Partition your storage device with Master Boot Record MBR partition table:

# fdisk /dev/sda

This is the how my SSD is partitioned:

sda     500.0G
├─sda1  492.0G  part /,/home/
└─sda2    8.0G  part [SWAP]

If you created a swap partition, make swap space and enable it:

# mkswap /dev/sda2
# swapon /dev/sda2

Make the BTRFS on the partition for Arch Linux:

# mkfs.btrfs /dev/sda1

Create BTRFS subvolumes:

# mount /dev/sda1 /mnt
# btrfs subvolume create /mnt/@arch
# btrfs subvolume create /mnt/@home
# btrfs subvolume create /mnt/@var
# umount /mnt

Mount the subvolumes:

# mount -o subvol=@arch /dev/sda1 /mnt
# mkdir /mnt/home
# mount -o subvol=@home /dev/sda1 /mnt/home
# mkdir /mnt/var
# mount -o subvol=@var /dev/sda1 /mnt/var

Create the base bootstrap Arch Linux root file system with linux-hardened instead of linux:

# pacstrap /mnt base linux linux-firmware nano

Create the file system table and save it:

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

Change Root chroot into your newly bootstrapped Arch Linux:

# arch-chroot /mnt /bin/bash

Set the hostname:

# echo "leedev" > /etc/hostname

Edit hosts:

# nano /etc/hosts
------------------  localhost
::1        localhost  leedev.localdomain  leedev

Set the system timezone and generate /etc/adjtime:

# ln -s /usr/share/zoneinfo/US/Central /etc/localtime
# hwclock --systohc

Configure and generate locales:

# echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
# locale-gen
# echo "LANG=en_US.UTF-8" > /etc/locale.conf

Configure the keyboard keymap console:

# echo "KEYMAP=us" > /etc/vconsole.conf

Create a group and user:

# groupadd --gid 1000 leedev
# useradd --home-dir /home/leedev --create-home --uid 1000 --gid 1000 --groups wheel,sys --shell /bin/bash lee

Set the password for this new user:

# passwd leedev

Install a lean but complete Server or Gnome desktop environment:


# pacman -S tmux sudo openssh rsync bash-completion git grub btrfs-progs ecryptfs-utils


# pacman -S tmux sudo openssh rsync bash-completion git grub btrfs-progs ecryptfs-utils base-devel sysstat gdm gnome-shell gnome-terminal nautilus gnome-control-center gnome-tweak-tool ttf-liberation system-config-printer gnome-backgrounds gnome-keyring gnome-disk-utility baobab gnome-screenshot cheese evince epiphany eog totem mpv geany file-roller networkmanager dhclient gst-libav libmtp ttf-freefont noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra libva-vdpau-driver libdvdcss pkgfile xorg-server xorg-xinit libvdpau xf86-video-amdgpu xf86-input-libinput mesa-vdpau mesa-libgl gst-plugins-ugly xf86-input-libinput gimp inkscape cups ghostscript gsfonts foomatic-db foomatic-db-engine foomatic-db-nonfree seahorse os-prober

Give the wheel group sudo permissions:

# nano /etc/sudoers.d/group_wheel
Defaults:%wheel runcwd=*

Edit /etc/shadow to prevent root login:

# nano /etc/shadow

Edit /etc/mkinitcpio.conf:

# nano /etc/mkinitcpio.conf
HOOKS=(systemd autodetect modconf block filesystems keyboard)

Create the initramfs:

# mkinitcpio -P

Install CPU Microcode:

# pacman -S amd-ucode

# pacman -S intel-ucode

Make and save the grub configuration:

# grub-mkconfig -o /boot/grub/grub.cfg

Install Grub to the MBR:

# grub-install /dev/sda

Configure the services to start at boot:

Server: NOTE: Configure systemd-resolved and systemd-networkd.

# systemctl enable sshd.service systemd-timesyncd.service systemd-resolved.service systemd-networkd.service


# systemctl enable sshd.service systemd-timesyncd.service systemd-resolved.service NetworkManager.service gdm.service cups.service

Exit the chroot:

# exit

Unmount the newly created file systems:

# umount -R /mnt

Reboot and enjoy Arch Linux:

# reboot