ArchLinux Installation From Scratch UEFI,GUI,Steam,VLC,Libre Office,OBS-STUDIO,flatpak it's a process,but the results are worth it.You will get a fully customizable system where you can make everything work exactly how you want it,sky is the limit!
0. Downloading the installation image and creating a bootable device using rufus or gnome-multi-writer utility:
- Download image here via torrent or direct link:https://www.archlinux.org/download/
- Use Rufus http://rufus.ie/ and select GPT and ISO mode for the image
- Also Balena Etcher portable is a nice tool https://www.balena.io/etcher/
- On Linux use gnome-multi-writer utility or ventoy
By default all current Arch installation mediums have a guided installer(better to use manual installation):
- archinstall
- python -m archinstall guided
Formatting the SSD/HDD properly before installing Arch Linux or any other Linux distribution or operating system:
- sudo cfdisk /dev/sda
- sudo cfdisk /dev/nvme0n1
- Delete everything you see then Write>>Yes
- sudo wipefs -a /dev/sda
- sudo wipefs /dev/nvme0n1
- sudo shred -f -v /dev/sda
- sudo shred -f -v /nvme0n1
- sudo shred /dev/sda
- sudo shred /dev/nvme0n1
NB!! when you are running into weird pgp errors during pacstrap,don't forget to run this command from the Arch ISO!:
- pacman -Sy archlinux-keyring
- cfdisk
- /dev/sdx1 512M Fat32(EFI)
- /dev/sdx2 8-10GB swap
- /dev/sdx3 200GB ext 4
- mkfs.fat -F32 /dev/sdx1
- mkswap /dev/sdX2
- swapon /dev/sdX2
- mkfs.ext4 /dev/sdX3
- mount /dev/sdX3 /mnt
- lsblk
- ip link
5.Installing basic packages and important stuff with wifi you will need the iw wpa_supplicant dialog packages:
- pacstrap /mnt base base-devel linux linux-headers linux-firmware nano vim networkmanager iw wpa_supplicant dialog
- pacstrap /mnt base base-devel linux linux-headers linux-firmware nano vim networkmanager
- pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware nano vim networkmanager iw wpa_supplicant dialog
- pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware nano vim networkmanager
- pacstrap /mnt base base-devel linux linux-headers linux-lts linux-lts-headers linux-firmware nano vim dhcpcd networkmanager iw wpa_supplicant dialog
- pacstrap /mnt base base-devel linux linux-headers linux-lts linux-lts-headers linux-firmware nano vim dhcpcd iwd iw wpa_supplicant dialog netctl
- 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 test
- passwd
- passwd your_new_user
- visudo
- nano /etc/sudoers
- sudo=ALL=(ALL:ALL) ALL
- username=ALL=(ALL:ALL) ALL
- sudo=ALL=(ALL:ALL) ALL
- username=ALL=(ALL:ALL) ALL
- Defaults targetpw
- ALL ALL=(ALL:ALL)
- :w! + Enter to exit and write changes
- :q + Enter exit
- sudo nano /etc/sudoers
- pacman -S grub efibootmgr dosfstools os-prober mtools fuse2
- pacman -S grub efibootmgr dosfstools os-prober mtools fuse3
- mkdir /boot/efi
- mount /dev/sdx1 /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
- sudo systemctl enable NetworkManager.service
- sudo systemctl enable wpa_supplicant.service
- sudo systemctl start NetworkManager.service
- sudo reboot
- sudo nmtui
- ping archlinux.org
- sudo systemctl enable NetworkManager.service
- sudo systemctl start NetworkManager.service
- sudo systemctl enable wpa_supplicant.service
- sudo systemctl start wpa_supplicant.service
- sudo reboot
- sudo nmtui
- ping archlinux.org
- sudo systemctl enable netctl.service
- sudo systemctl start netctl.service
- sudo systemctl enable dhcpcd.service
- sudo systemctl start dhcpcd.service
- sudo systemctl enable wpa_supplicant.service
- sudo systemctl start wpa_supplicant.service
- 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
- xf86-video-vesa mesa
- sudo pacman -S alsa-firmware alsa-utils pulseaudio pulseaudio-alsa
- sudo pacman -S alsa-firmware alsa-utils pipewire pipewire-alsa pipewire-pulse
- sudo pacman -S lxterminal
- sudo pacman -S ufw
- sudo pacman -S xfce4 xfce4-goodies gvfs
- sudo pacman -S arc-gtk-theme
- sudo pacman -S papirus-icon-theme
- sudo pacman -S noto-fonts noto-fonts-emoji
- yay -S numix-icon-theme-git
- yay -S apple-fonts
- pacman -S network-manager-applet
- Go to your /home/user/ directory
- Enable view hidden files and folders in Thunar
- Create two directories .themes and .icons
- Download custom themes here:
- https://www.xfce-look.org/browse/
- Extract and copy/paste into the .theme and .icons folders
- Change in Appearance Settings
- xfconf-query -c xfwm4 -p /general/use_compositing -s false
- xfconf-query -c xfwm4 -p /general/use_compositing
- sudo mkdir home
- sudo pacman -S deepin deepin-extra
- sudo pacman -S gnome gnome-extra
- sudo pacman -S gnome-packagekit
- sudo pacman -S plasma kde-applications
- sudo pacman -S plasma-meta
- sudo pacman -S plasma-desktop
- sudo pacman -S plasma dolphin dolphin-plugins packagekit-qt6 konsole
- sudo pacman -S packagekit-qt6
- sudo pacman -S cinnamon
- sudo pacman -S mate mate-extra
- sudo pacman -S lxde
- sudo pacman -S lxqt breeze-icons
- 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
29. 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 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
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 neofetch 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 neofetch 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)
37. 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! #silentgamepls