
-----------------------------------------------------

Arch Install - Legacy BIOS System & MBR Partition Layout

Multiple Choice Desktop Example

-----------------------------------------------------

1. Set keyboard layout - default is US
** Available layouts can be listed with:
ls /usr/share/kbd/keymaps/i386/**/*.map.gz | less
** To modify the layout, append a corresponding file name to loadkeys, UK for example:
loadkeys uk.map.gz

2. Verify boot mode (UEFI or Legacy):
ls /sys/firmware/efi/efivars
** If the directory does not exist, the system may be booted in Legacy BIOS Mode

3. Check internet connection:
ping google.com

4. Update system clock
timedatectl set-ntp true

5. Sync repositories, Install Reflector and Create mirrorlist, & install latest keyring
pacman -Sy
pacman -S archlinux-keyring
pacman -S --needed reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist

6. Run cfdisk - BIOS MBR
cfdisk /dev/sda
sda1: swap, sda2: root, sda3: home

7. Format partitions
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
mkswap /dev/sda1
swapon /dev/sda1

8. Mount partitions
mount /dev/sda2 /mnt
mkdir /mnt/home
mount /dev/sda3 /mnt/home

9. Install base packages
pacstrap /mnt base base-devel cryptsetup curl dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux linux-firmware linux-headers lvm2 mkinitcpio mtools nano netctl nvme-cli reflector rsync sysfsutils xz zstd

10. Create fstab
genfstab -U /mnt >> /mnt/etc/fstab

11. Chroot into system
arch-chroot /mnt

12. Configure timezone --  Example, choose your correct timezone
rm -rf /etc/localtime
to list geographic areas:
ls /usr/share/zoneinfo/
pick timezome and:
ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
hwclock --systohc --utc

13. Configure locale --  Example, choose your correct locale
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
echo "C.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
export LANG=en_US.UTF-8

14. Configure networking

A. Create hostname --  Example, choose your own hostname (computer name)
echo myhostname > /etc/hostname

B. Edit hosts file
nano /etc/hosts
Add lines:
127.0.0.1	localhost
::1		localhost
127.0.1.1	myhostname.localdomain myhostname

15. Create root password and user  --  Example, choose your own username
passwd root
useradd -m -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm -s /bin/bash username
passwd username
export VISUAL=nano
export EDITOR=nano
visudo /etc/sudoers
uncomment line: 
%wheel ALL=(ALL) ALL

16. Sync repositories, Install Reflector and Create mirrorlist
pacman -S reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist

17. Install GRUB
pacman -S grub
grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

18. Run mkinitcpio -- linux-lts for long term support kernel, linux for standard kernel
mkinitcpio -p linux

19. Install software - still inside chroot!

Xorg
pacman -S xclip xorg xorg-apps xorg-drivers xorg-server xorg-server-xvfb xorg-xkill xorg-xinit xterm mesa

General
pacman -S --needed amd-ucode aspell aspell-en arch-install-scripts archiso bash-completion bind bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dmidecode dos2unix dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm hspell htop hunspell hunspell-en_us hwdata hwdetect hwinfo inxi intel-ucode jfsutils keepassxc mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g openssl p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sdl2 sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip upower usbmuxd usbutils vim which xdg-user-dirs xfsprogs

Multimedia
pacman -S --needed alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack sox transcode smplayer x265 x264 xvidcore

Networking
pacman -S --needed avahi b43-fwcutter broadcom-wl-dkms dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox iwd net-tools networkmanager networkmanager-openvpn network-manager-applet nm-connection-editor nfs-utils nilfs-utils nss-mdns openbsd-netcat openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant

Fonts
pacman -S --needed ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2

Printing
pacman -S --needed cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer

LXQt Desktop
pacman -S --needed accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt pavucontrol-qt print-manager qbittorrent qterminal screengrab xdg-desktop-portal-lxqt xpdf xscreensaver

Plasma Desktop
pacman -S --needed accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwallet kwalletmanager kwin kwrite meld neofetch networkmanager-qt okular packagekit-qt5 pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm spectacle sweeper xdg-desktop-portal-kde

Xfce Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch pavucontrol polkit-gnome sddm  transmission-gtk xarchiver xdg-desktop-portal-gtk xfburn xfce4 xfce4-goodies xpdf

Mate Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch sddm transmission-gtk xdg-desktop-portal-gtk

Cinnamon Desktop
pacman -S --needed accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor file-roller geany gnome-firmware gnome-packagekit gnome-terminal gsound gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xdg-desktop-portal-gtk xed xpdf

20. Systemd services
systemctl disable dhcpcd.service
systemctl enable haveged.service
systemctl enable bluetooth.service
systemctl enable cups.service
systemctl enable NetworkManager
systemctl enable firewalld.service
systemctl enable fstrim.timer
systemctl enable plocate-updatedb.timer

21. Display Manager
systemctl enable sddm.service

22. Exit chroot
exit (arch-chroot)
umount -a
reboot

# Revision: 2023.07.07 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)
