# Installing Arch Linux ARM 1. Locate the disk you will be using ``` sudo fdisk -l ``` 2. Select the drive we will be using for Arch (Where X is your drive letter) ``` sudo fdisk /dev/sdX ``` 3. 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 ``` 4. Format the new partitions ``` sudo mkfs.vfat /dev/sdX1 sudo mkfs.ext4 /dev/sdX2 ``` 5. 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 ``` 6. 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 ``` 7. 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 ``` 8. 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 ``` 9. Chroot into Arch Linux install ``` PS1="(arch chroot) # " sudo chroot /mnt/chroot /bin/bash ``` 10. Set new root password ``` passwd ``` 11. Edit resolv.conf ``` nano /etc/resolv.conf ``` ``` nameserver 8.8.8.8 ``` 12. Set the hostname ``` nano /etc/hostname ``` 13. Initiate Pacman and needed packages ``` pacman-key --init pacman-key --populate archlinuxarm pacman -Sy base-devel wget python3 bc pahole rsync ``` 14. 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 ``` 15. 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 ``` 16. 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 ``` 17. Run the build ``` make -j$(nproc) && make modules -j$(nproc) && make modules_install && make headers_install && make Image ``` 18. Generate initramfs ``` pacman -Sy cpio mkinitcpio-nfs-utils mkinitcpio-archiso mkinitcpio -k 6.2.2 -g /boot/initramfs-linux6.img ``` 19. Install Grub ``` pacman -Sy grub efibootmgr grub-install --target=arm64-efi --efi-directory=/boot --bootloader-id=ARCH grub-mkconfig -o /boot/grub/grub.cfg ``` 20. 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" ``` 21. Set root permissions ``` chmod 755 / chmod 755 /bin chmod 755 /lib ``` 22. Reboot LX2K and boot into your new install using the BIOS 23. Log into your new install with root/*password* 24. Disable console syslog messages [Only if your console is flooded] ``` dmesg -n 1 clear ``` 25. Update system ``` pacman -Syyu ``` 26. 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 ``` 27. 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* ``` 28. Final reboot!