Difference between revisions of "Quartz64 Installing Arch Linux ARM"

Jump to navigation Jump to search
m
Update the kernel package to a 5.18-rc kernel with PCIe patches
m (→‎Installing The Root File System: sudo su instead of sudo -i)
m (Update the kernel package to a 5.18-rc kernel with PCIe patches)
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{note|This page is a work in progress. It's not a tutorial you can follow yet. Wait for the 5.16 kernel release. Right now there's still an undocumented step left: installing a custom kernel package to get it booting. This will no longer be necessary with Linux 5.16.}}
{{note|This page is a work in progress. If you are not familiar with user-mode QEMU, wait for [https://github.com/archlinuxarm/PKGBUILDs/pull/1918 the necessary kernel config changes] to be made.}}


Commands to be run as a normal user are prefixed with <code>$</code>, commands to be run as root are prefixed with <code>#</code>. We assume your target device is <tt>/dev/sdb</tt>, adjust accordingly.
Commands to be run as a normal user are prefixed with <code>$</code>, commands to be run as root are prefixed with <code>#</code>. We assume your target device is <tt>/dev/sdX</tt>, adjust accordingly.


== Partitioning The Block Device ==
== Partitioning The Block Device ==


Here we assume your block device is <tt>/dev/sdb</tt>, adjust as needed.
Here we assume your block device is <tt>/dev/sdX</tt>, adjust as needed.


Create a new partition table:
Create a new partition table:


  # parted -s /dev/sdb mklabel gpt
  # parted -s /dev/sdX mklabel gpt


Create the partitions for loader and u-boot:
Create the partitions for loader and u-boot:
   
   
  # parted -s /dev/sdb unit s mkpart loader 64 8MiB
  # parted -s /dev/sdX mkpart loader 64s 8MiB
  # parted -s /dev/sdb unit s mkpart uboot 8MiB 16MiB
  # parted -s /dev/sdX mkpart uboot 8MiB 16MiB


Create the partition for u-boot's environment:
Create the partition for u-boot's environment:


  # parted -s /dev/sdb unit s mkpart env 16MiB 32MiB
  # parted -s /dev/sdX mkpart env 16MiB 32MiB


Create the "efi" boot partition and mark it as bootable:
Create the "efi" boot partition and mark it as bootable:


  # parted -s /dev/sdb unit s mkpart efi fat32 32MiB 544MiB
  # parted -s /dev/sdX mkpart efi fat32 32MiB 544MiB
  # parted -s /dev/sdb set 4 boot on
  # parted -s /dev/sdX set 4 boot on


Create the root partition:
Create the root partition:


  # parted -s /dev/sdb unit s mkpart root ext4 544MiB 100%
  # parted -s /dev/sdX mkpart root ext4 544MiB 100%


=== Creating The File Systems ===
=== Creating The File Systems ===
Line 33: Line 33:
Now create the file systems for boot and root:
Now create the file systems for boot and root:


  # mkfs.vfat -n "efi" /dev/sdb4
  # mkfs.vfat -n "efi" /dev/sdX4
  # mkfs.ext4 -L "rootfs" /dev/sdb5
  # mkfs.ext4 -L "rootfs" /dev/sdX5


== Fetching and Flashing U-Boot ==
== Fetching and Flashing U-Boot ==
Line 48: Line 48:
Flash idblock.bin and uboot.img:
Flash idblock.bin and uboot.img:


  # dd if=artifacts/idblock.bin of=/dev/sdb1
  # dd if=artifacts/idblock.bin of=/dev/sdX1
  # dd if=artifacts/uboot.img of=/dev/sdb2
  # dd if=artifacts/uboot.img of=/dev/sdX2


== Fetching The Root File System Tarball ==
== Fetching The Root File System Tarball ==
Line 71: Line 71:
== Installing The Root File System ==
== Installing The Root File System ==


{{note|Don't prefix the bsdtar command with <code>sudo</code>, run it from an interactive root shell as done here with <code>sudo su</code>. At least the ALARM instructions claim this matters}}
  # mount /dev/sdX5 /mnt/alarm-root
 
$ sudo su
  # mount /dev/sdb5 /mnt/alarm-root
  # mkdir /mnt/alarm-root/boot
  # mkdir /mnt/alarm-root/boot
  # mount /dev/sdb4 /mnt/alarm-root/boot
  # mount /dev/sdX4 /mnt/alarm-root/boot
  # bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/alarm-root
  # bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/alarm-root


Line 87: Line 84:
In <tt>/mnt/alarm-root/etc/fstab</tt>, put the lines
In <tt>/mnt/alarm-root/etc/fstab</tt>, put the lines


  PARTUUID=''root-uuid-here''  /      ext4    defaults        0      0
  PARTUUID=''root-uuid-here''  /      ext4    defaults        0      1
  PARTUUID=''boot-uuid-here''  /boot  vfat    defaults        0      1
  PARTUUID=''boot-uuid-here''  /boot  vfat    defaults        0      2


with your UUIDs in place of the placeholder.
with your UUIDs in place of the placeholder.
Line 110: Line 107:


For a different type of Quartz64 device (e.g. Model B) replace the <tt>fdt</tt> line with the appropriate <tt>/boot</tt>-relative path to the device tree.
For a different type of Quartz64 device (e.g. Model B) replace the <tt>fdt</tt> line with the appropriate <tt>/boot</tt>-relative path to the device tree.
=== Finishing Touches ===
{{note|Here's where you'd do the part I said was iffy and won't be necessary once my PR is merged. You'll need an Arch Linux or Manjaro system. If it's not an aarch64 system, you'll also need <tt>qemu-user-static</tt>.
First, get [https://fratti.ch/quartz64/alarm-kernels/linux-aarch64-rc-5.18.rc6-1-aarch64.pkg.tar.zst the linux-aarch64-rc package I patched and built], then copy it somewhere into your mounted root.
Alternatively, patch and build the package yourself by [https://github.com/CounterPillow/PKGBUILDs/commit/622e03ba3753f823ea903bdbbf59c2f400dd2334 using my forked package sources].
Next, <code>arch-chroot</code> into the mounted root:
<code># arch-chroot /mnt/alarm-root</code>
and install the package
<code># pacman -U linux-aarch64-rc-5.18.rc6-1-aarch64.pkg.tar.zst</code>
Then <code>exit</code> the chroot again once it's done installing.
}}


Once done, unmount the partitions:
Once done, unmount the partitions:
Line 126: Line 142:


You are now ready to use Arch Linux ARM! Either delete or rename (and move the homedir of) the <code>alarm</code> user, and you're all set. Don't forget to install things like <code>sudo</code> and setting up sudo groups and such.
You are now ready to use Arch Linux ARM! Either delete or rename (and move the homedir of) the <code>alarm</code> user, and you're all set. Don't forget to install things like <code>sudo</code> and setting up sudo groups and such.
[[Category:Quartz64]] [[Category:Guide]] [[Category:Quartz64 Guides]]
502

edits

Navigation menu