- Download Arch Linux ISO image here via torrent or direct link:
- https://archlinux.org/download/
- Use Rufus https://rufus.ie/en/ and select GPT and ISO mode for the image
- Balena Etcher is another great tool
- https://etcher.balena.io/
- for creating bootable USB's
2. Before installing Arch Linux on bare metal it is recommended to remove previous filesystems and data, after backing up what the user needs
- sudo wipefs -a /dev/sda
- sudo wipefs /dev/nvme0n1
(Opional) Deleting everything with shred command properly while overwriting so no forensics recovery is possible, also helps fix bad blocks in some cases:
- sudo shred -f -v /dev/sda
- sudo shred -f -v /nvme0n1
- sudo cfdisk /dev/sda
- sudo cfdisk /dev/nvme0n1
From free space on the SSD/HDD create the following partitions using cfdisk' TUI (Terminal User Interface):
- /dev/sda1 512M Fat32(EFI)
- /dev/nvme01p1 512M Fat32(EFI)
(Optional) SWAP partition size can be around 8-10GB, but it is not required if you have 16GB/32GB or more RAM
- /dev/sda2 8-10GB swap
- /dev/nvme0n1p2 8-10GB swap
Required main partition for your main user /mnt, remaining size can be as large as you want it to be:
- /dev/sda3 1000GB ext4
- /dev/nvme0n1p3 1000GB ext4
5.Format partitions,create UEFI partition, mount point partition (main user partition) and swap partition
- mkfs.fat -F32 /dev/sda
- mkfs.fat -F32 /dev/nvme0n1p1
-
mkswap /dev/sda2
-
swapon /dev/sda2
-
mkswap /dev/nvme0n1p2
-
swapon /dev/nvme0n1p2
- mkfs.ext4 /dev/sda3
- mkfs.ext4 /dev/nvme0n1p3
- mount /dev/sda3 /mnt
- mount /dev/nvme0n1p3 /mnt
- pacstrap /mnt base base-devel linux linux-headers linux-firmware nano networkmanager
- genfstab -U /mnt >> /mnt/etc/fstab
(Optional choice) Standard Arch Linux installation with better Wi-Fi support and nano as text editor:
- pacstrap /mnt base base-devel linux linux-headers linux-firmware nano networkmanager iw wpa_supplicant dialog
- genfstab -U /mnt >> /mnt/etc/fstab
(Optional choice) LTS(Long Term Support) Arch Linux installation with standard Ethernet and Wi-Fi support,nano as text editor:
- pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware nano networkmanager
- genfstab -U /mnt >> /mnt/etc/fstab
(Optional choice) LTS (Long Term Support) Kernel Arch Linux installation with better Wi-Fi support and nano as text editor:
- pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware nano networkmanager iw wpa_supplicant dialog
- genfstab -U /mnt >> /mnt/etc/fstab
(Optional choice) Standard Arch Linux installation with LTS (Long Term Support) Kernel as backup and nano as text editor:
- pacstrap /mnt base base-devel linux linux-headers linux-lts linux-lts-headers linux-firmware nano networkmanager iw wpa_supplicant dialog
- genfstab -U /mnt >> /mnt/etc/fstab
- arch-chroot /mnt /bin/bash
- nano /etc/locale.gen
- locale-gen
- useradd -g users -G power,storage,wheel -m user
- passwd
- passwd user
- visudo
- nano /etc/sudoers
- sudo=ALL=(ALL:ALL) ALL
- user=ALL=(ALL:ALL) ALL
More secure way by uncommenting the following lines,without touching anything else in the sudoers file:
-
Defaults targetpw
-
ALL ALL=(ALL:ALL)
- sudo nano /etc/sudoers
- pacman -S grub efibootmgr dosfstools os-prober mtools fuse3
- mkdir /boot/efi
- mount /dev/sda1 /boot/efi
- mount /dev/nvme0n1p1 /boot/efi
- grub-install --target=x86_64-efi --bootloader-id=grub --efi-directory=/boot/efi
- grub-mkconfig -o /boot/grub/grub.cfg
-
mkdir /boot/efi/EFI/BOOT
-
cp /boot/efi/EFI/GRUB/grubx64.efi /boot/efi/EFI/BOOT/BOOTX64.EFI
-
exit
-
umount -R /mnt
-
reboot
12. Desktop Environment installation,enabling the network and sound, Xorg installation,Date/Time configuration
- sudo systemctl enable --now NetworkManager.service
-
sudo systemctl enable --now NetworkManager.service
-
sudo systemctl enable --now wpa_supplicant.service
-
sudo nmtui
Select the desired wireless connection,wired connections should be activated by default,connect to Wi-Fi using your password.
- ping archlinux.org
-
sudo timedatectl set-ntp true
-
sudo timedatectl list-timezones
-
sudo timedatectl set-timezone Zone/SubZone
-
sudo hwclock --systohc
-
sudo ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
- sudo hostnamectl set-hostname myhostname
- sudo pacman -S intel-ucode
- sudo pacman -S amd-ucode
- sudo pacman -S xorg xorg-server xorg-xinit xorg-apps xterm xorg-xrandr xdg-user-dirs
- xdg-user-dirs-update
- sudo nano /etc/pacman.conf
- [multilib] Include = /etc/pacman.d/mirrorlist
- sudo pacman -Syu
- sudo pacman -S alsa-firmware alsa-utils pipewire pipewire-alsa pipewire-pulse
- sudo pacman -S xfce4 xfce4-goodies gvfs
-
sudo pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
-
sudo systemctl enable --now lightdm.service
- sudo pacman -S gnome gnome-extra
- sudo pacman -S gnome-packagekit
-
sudo pacman -S gdm libgdm
-
sudo systemctl enable --now gdm
- sudo pacman -S plasma kde-applications
- sudo pacman -S packagekit-qt6
-
sudo pacman -S sddm sddm-kcm
-
sudo systemctl enable --now sddm
- xf86-video-vesa mesa
- sudo pacman -S alsa-firmware alsa-utils pulseaudio pulseaudio-alsa
- sudo pacman -S xdg-user-dirs
- xdg-user-dirs-update
- sudo pacman -Rscn application name
- sudo pacman -Scc
- sudo pacman -Sc
- sudo pacman -S sddm sddm-kcm
- sudo systemctl enable --now sddm
- sudo pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
- sudo systemctl enable --now lightdm
- sudo pacman -S gdm libgdm
- sudo systemctl enable --now gdm
- sudo pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
- sudo systemctl enable lightdm.service
- sudo systemctl start lightdm.service
- sudo pacman -S gdm libgdm
- sudo systemctl enable gdm.service
- sudo systemctl start gdm.service
- sudo pacman -S sddm sddm-kcm
- sudo systemctl enable sddm
- sudo systemctl start sddm
- sudo pacman -S lxdm
- sudo pacman -S lxdm-gtk3
- sudo systemctl enable lxdm
- sudo systemctl start lxdm
-
sudo nano /etc/sddm.conf.d/autologin.conf
-
[Autologin]
-
User=test
-
Session=default
- sudo pacman -S papirus-icon-theme
- sudo pacman -S noto-fonts noto-fonts-emoji
- sudo pacman -S arc-gtk-theme
26. Edit the pacman conf file to enable mirror list to enable multilib support(for 32bit) for Steam and proprietary drivers:
- sudo nano /etc/pacman.conf
- [multilib]
- Include = /etc/pacman.d/mirrorlist
- sudo pacman -Syu
- sudo pacman -Syyuu
- sudo pacman -S nvidia nvidia-settings nvidia-utils lib32-nvidia-utils lib32-opencl-nvidia opencl-nvidia libvdpau lib32-libvdpau libxnvctrl vulkan-icd-loader lib32-vulkan-icd-loader vkd3d lib32-vkd3d opencl-headers opencl-clhpp vulkan-validation-layers lib32-vulkan-validation-layers
- sudo mkinitcpio -P
- sudo pacman -S nvidia-lts nvidia-settings nvidia-utils lib32-nvidia-utils lib32-opencl-nvidia opencl-nvidia libvdpau lib32-libvdpau libxnvctrl vulkan-icd-loader lib32-vulkan-icd-loader vkd3d lib32-vkd3d opencl-headers opencl-clhpp vulkan-validation-layers lib32-vulkan-validation-layers
- sudo mkinitcpio -P
- sudo pacman -S nvidia-dkms nvidia-settings nvidia-utils lib32-nvidia-utils lib32-opencl-nvidia opencl-nvidia libvdpau lib32-libvdpau libxnvctrl vulkan-icd-loader lib32-vulkan-icd-loader vkd3d lib32-vkd3d opencl-headers opencl-clhpp vulkan-validation-layers lib32-vulkan-validation-layers
- sudo mkinitcpio -P
- sudo pacman -S nvidia-open nvidia-settings nvidia-utils lib32-nvidia-utils lib32-opencl-nvidia opencl-nvidia libvdpau lib32-libvdpau libxnvctrl vulkan-icd-loader lib32-vulkan-icd-loader vkd3d lib32-vkd3d opencl-headers opencl-clhpp vulkan-validation-layers lib32-vulkan-validation-layers
- sudo mkinitcpio -P
- sudo pacman -S nvidia-open-dkms nvidia-settings nvidia-utils lib32-nvidia-utils lib32-opencl-nvidia opencl-nvidia libvdpau lib32-libvdpau libxnvctrl vulkan-icd-loader lib32-vulkan-icd-loader vkd3d lib32-vkd3d opencl-headers opencl-clhpp vulkan-validation-layers lib32-vulkan-validation-layers
- sudo mkinitcpio -P
- sudo nano /etc/mkinitcpio.conf
- sudo mkinitcpio -P
Edit GRUB /etc/default/grub for other bootloaders check the Arch Wiki https://wiki.archlinux.org/title/Kernel_module#Setting_module_options
- sudo nano /etc/default/grub
- sudo grub-mkconfig -o /boot/grub/grub.cfg
- sudo cat /sys/module/nvidia_drm/parameters/modeset
- sudo ln -s /dev/null /etc/udev/rules.d/61-gdm.rules
- sudo reboot
- sudo pacman -S egl-wayland libglvnd
- sudo mkinitcpio -P
- sudo reboot
- sudo nvidia-xconfig
- sudo pacman -S mesa lib32-mesa mesa-vdpau lib32-mesa-vdpau lib32-vulkan-radeon vulkan-radeon glu lib32-glu vulkan-icd-loader lib32-vulkan-icd-loader
- sudo reboot
- sudo pacman -S steam
- sudo pacman -S git
- git clone https://aur.archlinux.org/yay.git
- cd yay
- makepkg -si
- sudo pacman -S firefox-developer-edition
- sudo pacman -S chromium
- sudo pacman -S firefox
- yay -s brave-bin
- sudo pacman -S libreoffice-fresh
- sudo pacman -S libreoffice-still
- yay -S dhewm3-git
- sudo pacman -S obs-studio
- sudo pacman -S flatpak
- sudo pacman -S lutris
- sudo pacman -S openra
- sudo pacman -S gimp
- sudo pacman -S krita
- sudo pacamn -S kate
- sudo pacman -S qbittorrent
- sudo pacman -S ktorrent
- sudo pacman -S transmission-qt
- sudo pacman -S transmission-gtk
- sudo pacman -S kdenlive
- sudo pacman -S shotcut
- sudo pacman -S libretro
- sudo pacman -S dosbox
- sudo pacman -S scummvm
- sudo pacman -S pscx2
- sudo pacman -S retroarch
- sudo pacman -S gamemode lib32-gamemode
- sudo pacman -S gamescope
- sudo nano /usr/lib/sysctl.d/10-arch.conf
- change vm.max_map_count=2147483642
- reboot
- cat /proc/sys/vm/max_map_count
- sudo pacman -S openmw
- yay -S ecwolf
- yay -S gzdoom
- yay -S itch
- yay -S teamviewer
- sudo systemctl enable teamviewerd.service
- sudo systemctl start teamviewerd.service
- sudo pacman -S supertux
- sudo pacman -S supertuxkart
- yay -S dunelegacy
- yay -S sdlpop
- sudo pacman -S 0ad
- sudo pacman -S xonotic
- sudo pacman -S wesnoth
- yay -S freedm
- sudo pacman -S openra
- sudo pacman -S freeciv
- sudo pacman -S dwarffortress
- flatpak install flathub com.moddb.TotalChaos
- yay -S opensurge
- yay -S commander-genius-git
- yay -S ventoy
- sudo pacman -S gnome-multi-writer
- sudo pacman -S gnome-disk-utility
- sudo pacman -S partitionmanager
- sudo pacman -S gparted
- yay -S dxvk-bin
- yay -S phoronix-test-suite
- sudo pacman -S gtk3 gtk4 qt6 gvfs
- sudo pacman -S ark lrzip lzop p7zip unarchiver unrar
- sudo pacman -S file-roller nemo-fileroller unzip lzop p7zip unrar unarchiver
33. Dependencies multimedia/libraries(OPTIONAL if you want full no bloatware system skip these,or choose the ones you need):
- sudo pacman -S fluidsynth lib32-fluidsynth openal lib32-openal gvfs gvfs-nfs libkate gst-plugins-base gst-plugins-bad-libs gst-libav lib32-gst-plugins-good gst-plugin-gtk lib32-gstreamer lib32-gst-plugins-base lib32-gst-plugins-base-libs xvidcore lib32-libxvmc libxvmc ffmpeg gst-libav gst-plugins-good gst-plugins-bad smpeg faac sndio libnma openresolv x264 x265 opus sane lame libao wavpack libmad a52dec libvorbis faad2 libmpeg2 libtheora libvpx libde265 libdv schroedinger dav1d rav1e gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-plugin-pipewire lib32-pipewire pipewire-zeroconf flac lib32-flac smpeg lib32-smpeg mac opus lib32-opus opus-tools opusfile libmpeg2
- sudo pacman -S mpv vlc dragon kmplayer celluloid mpd qtav
(Optional) In case you want a GNOME-desktop package on other DE(might solve some issues/might cause some issues):
- sudo pacman -S gnome-desktop
- sudo pacman -S meson
-
sudo pacman -S wine wine-mono wine-gecko lutris steam
-
sudo pacman -S mono
-
sudo pacman -S lib32-v4l-utils lib32-libxcomposite lib32-opencl-icd-loader lib32-gst-plugins-base-libs
-
sudo pacman -Syyuu
-
sudo pacman -S opusfile
-
sudo pacman -S gcc-libs grilo grilo-plugins
- sudo systemctl restart systemd-binfmt
- sudo pacman -S mingw-w64 glslang lib32-libvorbis
- sudo pacman -S dosbox scummvm
- yay -S dxvk
- sudo pacman -S mangohud lib32-mangohud
- Download the latest release here: https://github.com/GloriousEggroll/proton-ge-custom/releases
- Extract,enable hidden files and folders
- Create a folder in your /home/user/steam/root/compatibilitytools.d if it does not exist.
- Copy/paste the extracted GE folder into /home/user/config/.steam/root/compatibilitytools.d
- Restart Steam,enjoy the custom GE build
(Optional) Install spectacle for screenshots (KDE PLASMA) and fastfetch to have "I use arch btw" in your CLI for screenshots and reddit,also man pages support to actually learn some stuff about what packages you install and flatpak for a wide variety of software,most of which you can find in AUR.
-
sudo pacman -S spectacle fastfetch flatpak man
-
sudo pacman -S sonnet
-
sudo pacman -S enchant
-
sudo pacman -Syyuu
(Optional) Gnome multi-writer tool, useful for creating usb sticks with OS installs and gnome-boxes for vm's useful GUI for QEMU:
- sudo pacman -S gnome-multi-writer
- sudo pacman -S gnome-boxes
- sudo pacman -S virt-manager qemu-desktop
- sudo systemctl enable libvirtd.service
- sudo systemctl start libvirtd.service
- sudo systemctl enable --now libvirtd.service
Check this website for additional driver/video support on vm's for both GNOME BOXES and virtmanager:
- yay -S itch teamviewer
-
sudo systemctl enable teamviewerd.service
-
sudo systemctl start teamviewerd.service
- sudo pacman -S gvfs-mtp neofetch spectacle
- sudo pacman -Syu
- sudo pacman -Syyuu
- history
- clear
- sudo pacman -S gnome-disk-utility
- Edit mount options
- Add this line:
- nosuid,nodev,nofail,x-gvfs-show,auto
- sudo systemctl status
- sudo pacman -Syyuu
- sudo pacman -Syu
- yay timeshift
- link to AUR https://aur.archlinux.org/packages/timeshift/
- sudo pacman -Sc
- sudo pacman -Scc
- sudo du -sh ~/.cache/
- sudo rm -rf ~/.cache/*
- sudo pacman -Qtdq
- sudo pacman -Rns $(pacman -Qtdq)
- yay -Sc
- yay -Scc
- sudo rm /var/cache/pacman/pkg/*
- sudo pacman -Rdd package name
- sudo pacman -Rscn package name
- su
- pacman -Qtdq | pacman -Rns -
- exit
- sudo pacman -D --asdeps $(pacman -Qqe)
NB! This command will remove everything,including Desktop Environment and drivers,except for core essential stuff,use as a last resort or if you like tinkering for many hours with your system or just want to do a clean install aggain using TTY.
Change the installation reason to "as explicitly" of only the essential packages, those you do not want to remove, in order to avoid targeting them:
- sudo pacman -D --asexplicit base linux linux-firmware
- sudo pacman rm -rf./(name of directory or file)
35. Creating a bootable Windows 10 USB using Disks utility (Possible on any linux distro even without GNOME)
- Download a Windows image from MS link below:
- https://www.microsoft.com/en-us/software-download/windows10
- Insert USB Drive
- Launch Disks Utility
- Select your USB Drive and in the top right=corner click the menu select Format Disk
- In Partitioning select Compatible with modern systems and hard disks>2TB (GPT)
- Click Format wait for it to finish
- Click Partition> For Use with Windows(NTFS) (in Volume labele type Windows or ESD)
- Mount the USB and Open it
- Go to the place where you downloaded Windows 10 ISO and select Open with Disk Image Mounter
- Open Copy everything from the Windows 10 ISO and paste into your USB Drive,wait for it to finish(takes a while)
- sudo nano /usr/share/pipewire/pipewire.conf
- reboot
- LC_ALL=C lscpu | grep Virtualization
- zgrep CONFIG_KVM /proc/config.gz
- sudo pacman -S virt-manager qemu vde2 ebtables dnsmasq bridge-utils openbsd-netcat
- sudo systemctl enable libvirtd.service
- sudo systemctl start libvirtd.service
- sudo nano /etc/libvirt/libvirtd.conf
- unix_sock_group = "libvirt"
- unix_sock_rw_perms = "0770"
- sudo usermod -a -G libvirt $(whoami)
- sudo systemctl restart libvirtd.service
- sudo pacman -S ntfs-3g
- yay -S downgrade package name
- sudo ln -s /usr/lib/libalpm.so.14.0.0 /usr/lib/libalpm.so.13
-
yay -S gpu-screen-recorder-git
-
yay -S gpu-screen-recorder-gtk
(Optional) Get nvidia-patch: https://github.com/keylase/nvidia-patch
- Extract and go to the folder
- Open in terminal
- sudo ./patch-fbc.sh
- sudo nano /etc/pacman.conf
- #IgnorePkg =
- #IgnoreGroup =
- IgnorePkg = linux nvidia firefox
- IgnoreGroup = linux nvidia firefox
- IgnorePkg = linux
- IgnoreGroup = linux
- lspci -v
- sudo lspci -v
- sudo mkinitcpio
That's it you are good for using pure ArchLinux and don't forget to view archwiki for more advanced commands and packages:
- sudo pacman -S man
- man (your command here)
If you start getting errors like "signature from "John Smith john.smith@archlinux.org" is marginal trust" do these steps:
- sudo pacman -S archlinux-keyring
- sudo pacman -Syu archlinux-keyring
- sudo pacman -Syyuu
- sudo pacman-key --refresh-keys
- sudo pacman -Syu archlinux-keyring
If it is an existing SSD/HDD that you already formatted with ext4 or btrfs and automounted in filemanager like Dolphin or Nemo,then you have to check in properties for example "/media/user/Backup" that is your mount point.
-
sudo lsblk -f
-
sudo nano /etc/fstab
-
/ was on /dev/sda2 during installation
-
UUID=362fe9a2-29fc-43fe-824d-09d1d93b1549 / ext4 errors=remount-ro 0 1
-
/boot/efi was on /dev/sda1 during installation
-
UUID=64EF-0C84 /boot/efi vfat umask=0077 0 1
-
swap was on /dev/sda3 during installation
-
UUID=b36261ad-191e-4cb5-ba0e-f2715e32f82c none swap sw 0 0
-
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
- /dev/sdb1 /media/user/Backup ext4 defaults,auto 0 2
*Enjoy! Thank you!