-
Locate the disk you will be using
sudo fdisk -l
-
Select the drive we will be using for Arch (Where X is your drive letter)
sudo fdisk /dev/sdX
-
Type the following letters and numbers to partition the drive
Command: n Partition number: [ENTER] First sector: [ENTER] Last sector: +512M Remove signature: Y Command: n Partition number: [ENTER] First sector: [ENTER] Last sector: [ENTER] Remove signature: Y Save changes: wq
-
Format the new partitions
sudo mkfs.vfat /dev/sdX1 sudo mkfs.ext4 /dev/sdX2
-
Install bsdtar & wget
Debian/Ubuntu:
sudo apt install libarchive-tools wget
Fedora:
sudo dnf install bsdtar wget
Void:
sudo xbps-install bsdtar wget
Arch:
sudo pacman -Sy bsdtar wget
openSUSE:
sudo zypper install wget bsdtar
-
Mount the target drive
sudo mkdir /mnt/chroot sudo mount /dev/sdX2 /mnt/chroot sudo mkdir /mnt/chroot/boot sudo mount /dev/sdX1 /mnt/chroot/boot
-
Download and extract the tarball to the mounted drive as root [Do not use sudo]
su - wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/chroot exit
-
Mount pseudo filesystems
cd /mnt/chroot sudo mount -t proc /proc proc sudo mount --make-rslave --rbind /sys sys sudo mount --make-rslave --rbind /dev dev sudo mount --make-rslave --rbind /run run
-
Chroot into Arch Linux install
PS1="(arch chroot) # " sudo chroot /mnt/chroot /bin/bash
-
Set new root password
passwd
-
Edit resolv.conf
nano /etc/resolv.conf
nameserver 8.8.8.8
-
Set the hostname
nano /etc/hostname
-
Initiate Pacman and needed packages
pacman-key --init pacman-key --populate archlinuxarm pacman -Sy base-devel wget python3 bc pahole rsync
-
Download and extract the kernel [Modify to your needs]
mkdir /root/kernelbuild && cd /root/kernelbuild wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.2.2.tar.xz tar -xvf linux-6.2.2.tar.xz exit
-
Copy host linux running kernel config
sudo cp /boot/config-<version> /mnt/chroot/root/kernelbuild/linux-6.2.2/.config PS1="(arch chroot) # " sudo chroot /mnt/chroot /bin/bash cd /root/kernelbuild/linux-6.2.2
-
Modify .config file [Modify the following lines...] [Use CTRL+W to search for values, CTRL+W again to find the next instance]
nano .config
#CONFIG_MODULE_SIG_KEY="" #CONFIG_SYSTEM_TRUSTED_KEYS="" #CONFIG_CRYPTO_AEGIS128
-
Run the build
make -j$(nproc) && make modules -j$(nproc) && make modules_install && make headers_install && make Image
-
Generate initramfs
pacman -Sy cpio mkinitcpio-nfs-utils mkinitcpio-archiso mkinitcpio -k 6.2.2 -g /boot/initramfs-linux6.img
-
Install Grub
pacman -Sy grub efibootmgr grub-install --target=arm64-efi --efi-directory=/boot --bootloader-id=ARCH grub-mkconfig -o /boot/grub/grub.cfg
-
Configure Grub Linux defaults
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=4 arm-smmu.disable_bypass=1 amdgpu.pcie_gen_cap=0x4 amdgpu.noretry=1"
-
Set root permissions
chmod 755 / chmod 755 /bin chmod 755 /lib
-
Reboot LX2K and boot into your new install using the BIOS
-
Log into your new install with root/password
-
Disable console syslog messages [Only if your console is flooded]
dmesg -n 1 clear
-
Update system
pacman -Syyu
-
Install Gnome (I had issues installing gnome base package due to missing qemu dependecies)
pacman -Sy gnome-desktop gdm baobab cheese eog epiphany evince file-roller gdm gnome-backgrounds gnome-books gnome-calculator gnome-calendar gnome-characters gnome-clocks gnome-color-manager gnome-console gnome-contacts gnome-control-center gnome-disk-utility gnome-font-viewer gnome-getting-started-docs gnome-keyring gnome-logs gnome-maps gnome-menus gnome-music gnome-photos gnome-remote-desktop gnome-session gnome-settings-daemon gnome-shell gnome-shell-extensions gnome-software gnome-system-monitor gnome-text-editor gnome-themes-standard gnome-user-docs gnome-user-share gnome-video-effects gnome-weather grilo-plugins gvfs gvfs-afc gvfs-goa gvfs-google gvfs-gphoto2 gvfs-mtp gvfs-nfs gvfs-smb malcontent mutter nautilus orca rygel simple-scan
systemctl enable gdm
-
Create a uservisudo
pacman -Sy sudo visudo
Scroll down and press “x” when on the # to remove it
# %wheel ALL=(ALL:ALL) ALL
Then press [ESC], then [:], [w], [q], [!]
useradd -m -G audio,video,wheel,storage,kvm,users *username* passwd *username*
-
Final reboot!