Rockpro64 and stock arch linux
#1
I've gotten the stock rootfs running on the Rockpro64 SBC, using steps from a variety of sources. If desired, I'll try to hunt down the locations. Steps below:

Section 1 - Making a Good SPL

0. Perform these steps from a functional image, on the board, such as Armbian
    -note: may need to "apt-get install gcc-arm-none-eabi binutils-arm-none-eabi"

1. Get u-boot, cd into the folder
    #git clone https://gitlab.denx.de/u-boot/u-boot.git
    #cd u-boot
    #make clean

2. Get, make the Trusted code, copy it into the u-boot folder
    #git clone https://github.com/ARM-software/arm-trus...rmware.git atf
    #make -C atf PLAT=rk3399 bl31
    #cp bl31.elf ../

3. Make u-boot
    #make rockpro64-rk3399_defconfig
    #make ARCH=arm -j7


4. Write loaders to disk, or copy them to storage for Section 2
    #tools/mkimage -n rk3399 -T rksd -d tpl/u-boot-tpl-dtb.bin tpl-spl.img
    #cat spl/u-boot-spl-dtb.bin >> tpl-spl.img
    #dd if=tpl-spl.img of=/dev/mmcblkN seek=64 conv=fsync
    #dd if=u-boot.itb of=/dev/mmcblkN seek=16384 conv=fsync

Section 2 - Install Arch

0. This must be performed from a different computer, make sure uboot-tools is installed

1. Zero the beginning of the SD card:

    #dd if=/dev/zero of=/dev/sdX bs=1M count=32

2. Start fdisk to partition the SD card:

    #fdisk /dev/sdX

3. At the fdisk prompt, create the new partition:

    Type o. This will clear out any partitions on the drive.
    Type n, then p for primary, 1 for the first partition on the drive, 32768 for the first sector, and then +4G
    -this creates a 4G partition
    Write the partition table and exit by typing w.

4 . Create the ext4 filesystem:

    #mkfs.ext4 /dev/sdX1

5. Mount the filesystem:

    #mkdir something
    #mount /dev/sdX1 something

5. Download and extract the root filesystem (as root, not via sudo):

    #wget http://os.archlinuxarm.org/os/ArchLinuxA...est.tar.gz
    #tar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C something

6. Use this as boot.txt, place in something/boot/
    
 
Code:
   # MAC address (use spaces instead of colons)
    setenv macaddr da 19 c8 7a 6d f4
    
    part uuid ${devtype} ${devnum}:${bootpart} uuid
    setenv bootargs console=ttyS2,1500000 root=PARTUUID=${uuid} rw rootwait
    setenv fdtfile rockchip/rk3399-rockpro64.dtb
    
    if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/Image; then
      if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then
        fdt addr ${fdt_addr_r}
        fdt resize
        fdt set /[email protected] local-mac-address "[${macaddr}]"
        if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then
          # This upstream Uboot doesn't support compresses cpio initrd, use kernel option to
          # load initramfs
          setenv bootargs ${bootargs} initrd=${ramdisk_addr_r},20M ramdisk_size=10M
        fi;
        booti ${kernel_addr_r} - ${fdt_addr_r};
      fi;
    fi

7. in the something/boot/ directory, generate boot.scr from the boot.txt

    #mkimage -A arm -O linux -T script -C none -n "U-Boot boot script" -d boot.txt boot.scr

8. Unmount the partition

    #umount something

9. Write the bootloader to the sd card

    #dd if=tpl-spl.img of=/dev/sdX seek=64 conv=fsync
    #dd if=u-boot.itb of=/dev/sdX seek=16384 conv=fsync

10. Insert SD, apply voltage

11. Initialize the pacman keyring and populate the Arch Linux ARM package signing keys:

    #pacman-key --init
    #pacman-key --populate archlinuxarm

12. Update

    #pacman -Syu
    #pacman -S uboot-tools

Further Notes: hdmi may be kinda weird from the supplied boot.txt, depending on the monitor used.
  Reply
#2
Thanks for the write-up TaborFife. I repeated your steps and everything worked out fine. I did cross-compile u-boot and the trusted-firmware on another computer however. Currently the kernel version is:
Code:
$ uname -a
Linux RockPro64 5.3.13-1-ARCH #1 SMP Sun Nov 24 17:44:14 UTC 2019 aarch64 GNU/Linux
  Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  Rockpro64 not stable... crashes now and then. Pineapple 5 189 12-06-2019, 12:35 PM
Last Post: Pineapple
  slarm64 (unofficial slackware) ROCKPro64 RK3399 (aarch64) mara 25 4,345 11-27-2019, 12:15 PM
Last Post: mara
  RockPro64 getting started - non-booting images [solved] new-rockpro-user 1 73 11-21-2019, 01:09 AM
Last Post: new-rockpro-user
  new rockpro64: images won't boot [solved] new-rockpro-user 0 49 11-20-2019, 12:42 PM
Last Post: new-rockpro-user
Thumbs Up Batocera for RockPro64 Luke 3 1,892 11-06-2019, 02:12 PM
Last Post: Wizzard
  My PCIe disk controller works with Linux 5.3.6 guannais 1 134 10-30-2019, 07:11 PM
Last Post: guannais
  DLNA and/or Plex problem with RockPro64 aldrick 10 278 10-20-2019, 10:34 PM
Last Post: aldrick
  Linux Build Help: Stuck at "Starting kernel ..." ihamilton 2 279 10-10-2019, 12:51 PM
Last Post: ihamilton
  Void Linux WIP losinggeneration 0 189 10-04-2019, 03:23 AM
Last Post: losinggeneration
  Arch Linux on RockPro64 mmatyas 27 8,995 09-28-2019, 04:30 AM
Last Post: TaborFife

Forum Jump:


Users browsing this thread: 1 Guest(s)