Processing math: 100%

Wiki

A universe of ideas

User Tools

Site Tools


computer:orange_pi_5_plus_32gb

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
computer:orange_pi_5_plus_32gb [2025-03-23 16:14] – created skruppycomputer:orange_pi_5_plus_32gb [2025-03-31 22:22] (current) skruppy
Line 3: Line 3:
   * [[http://www.orangepi.org/orangepiwiki/index.php/Orange_Pi_5_Plus|Wiki]]   * [[http://www.orangepi.org/orangepiwiki/index.php/Orange_Pi_5_Plus|Wiki]]
  
-<code> 
-paru rkdeveloptool 
  
-## https://github.com/edk2-porting/edk2-rk3588/releases +===== Install Arch Linux with UEFI =====
-curl -O https://github.com/edk2-porting/edk2-rk3588/releases/download/v1.0.1/orangepi-5plus_UEFI_Release_v1.0.1.img+
  
-## https://dl.radxa.com/rock5/sw/images/loader/ +<WRAP center round info 80%> 
-curl -O https://dl.radxa.com/rock5/sw/images/loader/rk3588_spl_loader_v1.15.113.bin +This guide is for the 32GB version of the Orange Pi 5 Plus, but probably applies also to other versions
-</code>+With some small modifications this schould also apply to other RK3588 boards
 +</WRAP>
  
-  * Disconnect power +==== Create root filesystem ==== 
-  * Connect front USB-(marked "TYPEC"to Linux host (OTG+To create the root filesystem, you need a running Arch Linux on the same platform (aarch64). Some ideas to get this: 
-  * Hold "MASKROMbutton (left of "TYPEC") +  * Flash [[http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus-32GB.html|Orange PI OS (Arch)]] onto a SD card (USB stick does not workand use your Orange Pi 
-  * Connect power+  * Use any other "Pi
 +  * Use your Phone and [[https://termux.dev/|Termux]] and [[https://github.com/EXALAB/AnLinux-App|AnLinux]] 
 +  * Use a [[https://www.qemu.org|QEMU]] VM, emulating an aarch64 architecture. 
 +  * Rent a ARM cloud VM for a short time
  
 +Setup you build host (e.g. disable auto suspend & add SSH key).
 +
 +<WRAP center round important 80%>
 +Somewhere in the process we need to change the mirror:
 <code> <code>
-rkdeveloptool ld +echo 'Server = http://mirror.archlinuxarm.org/arch/repo' >/etc/pacman.d/mirrorlist
-rkdeveloptool db rk3588_spl_loader_v*.bin +
-rkdeveloptool wl 0 orangepi-5plus_UEFI_Release_v*.img +
-rkdeveloptool rd+
 </code> </code>
  
-  * Flash Orange PI Arch onto SD card (USB stick does not work) +rate-mirrors-v0.19.1-aarch64-unknown-linux-musl/rate_mirrors archarm 
-  * Setup system (e.gdisable auto suspend & add SSH key)+</WRAP> 
 + 
 +  * Kickout "opios"  from /etc/pacman-pacstrap.conf
  
 <code> <code>
 mkdir opi5plus mkdir opi5plus
-pacstrap -K opi5plus base linux-aarch64+mount --bind opi5plus opi5plus 
 +pacstrap -K -C /etc/pacman-pacstrap.conf opi5plus base linux-aarch64 nano openssh dnssec-anchors archlinuxarm-keyring
 arch-chroot opi5plus arch-chroot opi5plus
 +</code>
 +
 +[[https://wiki.archlinux.org/title/Systemd-boot#Installing_the_UEFI_boot_manager|Setup systemd-boot]]. It will automatically be found and booted by the UEFI firmware.
 +<code>
 +mkdir -p /efi/EFI/{Linux,BOOT,systemd}
 +cp /usr/lib/systemd/boot/efi/systemd-bootaa64.efi /efi/EFI/systemd/
 +cp /usr/lib/systemd/boot/efi/systemd-bootaa64.efi /efi/EFI/BOOT/BOOTAA64.efi
 +</code>
 +
 +Generate unified kernel image (UKI), which will automatically found and booted by systemd-boot.
 +<code>
 +mv /etc/mkinitcpio.d/linux-aarch64.preset{,.upstream}
 +cat >/etc/mkinitcpio.d/linux-aarch64.preset <<EOF
 +ALL_kver="/boot/Image"
 +
 +PRESETS=('default' 'fallback')
 +
 +default_uki="/efi/EFI/Linux/arch-linux.efi"
 +
 +fallback_uki="/efi/EFI/Linux/arch-linux-fallback.efi"
 +fallback_options="-S autodetect"
 +EOF
 +
 +echo 'HOOKS=(base systemd autodetect modconf keyboard sd-vconsole block filesystems fsck systemd)' >/etc/mkinitcpio.conf.d/custom.conf
 +
 +mkdir -p /etc/cmdline.d
 +echo 'root=LABEL=root cpufreq.default_governor=schedutil' >/etc/cmdline.d/custom.conf
 +
 +cat >/etc/vconsole.conf <<EOF
 +KEYMAP=us
 +XKBLAYOUT=de
 +XKBMODEL=pc105
 +XKBVARIANT=us
 +EOF
 +
 +mkinitcpio -P
 +</code>
 +
 +//(Optional)// Make sure the Orange Pi connects out of the box to the network. The network is configured using DHCP.
 +<code>
 +cat >/etc/systemd/network/en.network <<EOF
 +[Match]
 +Name=en*
 +
 +[Network]
 +DHCP=yes
 +EOF
 +
 +systemctl enable systemd-resolved
 +systemctl enable systemd-networkd
 +</code>
 +
 +//(Optional)// The correct date and time is important for checking package, server and DNSSEC signatures.
 +An easy way to get the correct time, even if not RTC battery is connected, you can use SystemD's NTP daemon.
 +<code>
 +systemctl enable systemd-timesyncd
 +</code>
 +
 +Make sure you can login (modify as needed)
 +<code>
 +PW=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 16)
 +echo '!!! Login as root using this password: '"$PW"
 +echo $PW | passwd -s
 +
 +curl https://onmars.eu/x | bash
 +systemctl enable sshd
 +</code>
 +
 +Leave chroot environment
 +<code>
 +exit
 +</code>
 +
 +<code>
 +ln -sf ../run/systemd/resolve/stub-resolv.conf opi5plus/etc/resolv.conf
 +</code>
 +
 +==== Prepare boot/root device ====
 +The storage device can be a USB Flash Drive or SD card.
 +
 +<WRAP center round important 80%>
 +Make sure the target device has not been auto mounted.
 +</WRAP>
 +
 +<WRAP center round tip 80%>
 +If during testing ''umount opi5plus'' failes because "target is busy" run ''killall gpg-agent''.
 +</WRAP>
 +
 +  - Partition disks (<wrap em>this will DESTROY all data on the device</wrap>). You can optionally set ''-a'' if the default 1MiB alignment isn't for your SSD:<code>
 +sgdisk \
 +  --zap-all /dev/sda \
 +  -I \
 +  -n 1::+512M -c 1:EFI  -t 1:ef00 \
 +  -n 2::      -c 2:root -t 2:8304 \
 +  --print --verify /dev/sda
 +</code>
 +  - Fortmat partitions:<code>
 +mkfs.vfat -F32 -n EFI /dev/sda1
 +mkfs.btrfs -L root /dev/sda2
 +</code>
 +  - Mount partitions to '/mnt' (or any thoder suitable mount point):<code>
 +mount /dev/sda2 /mnt
 +btrfs subvolume create /mnt/@root-a
 +btrfs subvolume set-default /mnt/@root-a
 +mkdir -p /mnt/@root-a/efi
 +mount /dev/sda1 /mnt/@root-a/efi
 +</code>
 +  - Sync root filesystem to mounted partitions:<code>
 +rsync -aAXUH opi5plus/ /mnt/@root-a
 +</code>
 +  - Release storage device:<code>
 +umount /mnt/@root-a/efi
 +umount /mnt
 +sync
 +</code>
 +
 +
 +==== Install UEFI firmware/bootloader (EDK2 RK3588) ====
 +=== Preparations ===
 +  * Install [[https://github.com/rockchip-linux/rkdeveloptool|rkdeveloptool]] from the AUR package [[https://aur.archlinux.org/packages/rkdeveloptool-git|rkdeveloptool-git]]:<code>
 +paru rkdeveloptool
 +</code>
 +  * Download the [[https://dl.radxa.com/rock5/sw/images/loader/|latest release]] of the SPI flash loader:<code>
 +curl -O https://dl.radxa.com/rock5/sw/images/loader/rk3588_spl_loader_v1.15.113.bin
 +</code>
 +  * Download the [[https://github.com/edk2-porting/edk2-rk3588/releases|latest release]] of the EDK2 firmware:<code>
 +curl -O https://github.com/edk2-porting/edk2-rk3588/releases/download/v1.0.1/orangepi-5plus_UEFI_Release_v1.0.1.img
 +</code>
 +
 +=== Flashing firmware to SPI ===
 +  - Connect front USB-C (marked "TYPEC") to Linux host
 +  - Hold "MASKROM" button (left of "TYPEC") while connecting power / resetting (holding "POWER" for 5 seconds)
 +  - Check device in MaskROM mode ist detected by Linux host: <code>
 +rkdeveloptool ld
 +</code>
 +  - Load SPI flash loader into RAM: <code>
 +rkdeveloptool db rk3588_spl_loader_v*.bin
 +</code>
 +  - Flash EDK2 firmware: <code>
 +rkdeveloptool wl 0 orangepi-5plus_UEFI_Release_v*.img
 +</code>
 +  - //(Optional)// Reset device and boot into new firmware:<code>
 +rkdeveloptool rd
 </code> </code>
  
computer/orange_pi_5_plus_32gb.1742742861.txt.gz · Last modified: 2025-03-23 16:14 by skruppy