Jump to content

squishykid

Validating
  • Posts

    1
  • Joined

  • Last visited

Posts posted by squishykid

  1. Fantastic instructions and thanks for all the work! I was able to follow the instructions and almost had it working. There were some small changes required however.

     

    I had to modify my /boot/boot.cmd on the nvme drive:

    --- /boot/boot.cmd
    +++ /boot/boot.cmd
    @@ -6,7 +6,7 @@
     setenv load_addr "0x9000000"
     setenv overlay_error "false"
     # default values
    -setenv rootdev "/dev/mmcblk0p1"
    +setenv rootdev "/dev/nvme0n1p1"
     setenv verbosity "1"
     setenv console "both"
     setenv bootlogo "false"
    @@ -29,7 +29,7 @@
     if test "${bootlogo}" = "true"; then setenv consoleargs "bootsplash.bootfile=bootsplash.armbian ${consoleargs}"; fi
     
     # get PARTUUID of first partition on SD/eMMC the boot script was loaded from
    -if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:1 partuuid; fi
    +if test "${devtype}" = "nvme"; then part uuid nvme ${devnum}:1 partuuid; fi
     
     setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
     
    

     

    Then after modifying I ran `mkimage -C none -A arm -T script -d /u/boot/boot.cmd /u/boot/boot.scr`

     

    (I had mounted the nvme partition under `/u` after the `nand-sata-instal` step completed)

     

    Without this fix the board would not seem to boot. U-boot would complete and then load the kernel. However I was able to see via serial that the kernel was waiting for the root device to appear (looping `Begin: Running /scripts/local-block ... done.` over and over). Then it would drop to an initramfs shell and alert that it was unable to find the root filesystem device and had given up.

     

    Hardware:

    RockPi 4A 1.4

    Kingston A2000 1TB

    ROCK PI 4x M.2 Extension board v1.6

     

    Armbian Image:

    5036f952501644989d744d789d36c4f797501d48e24605d7a8f043adfc792ad0 *Armbian_21.02.1_Rockpi-4a_buster_current_5.10.12.img.xz

     

    Full /boot/armbianEnv.txt:

    verbosity=1
    console=both
    bootlogo=false
    overlay_prefix=rockchip
    fdtfile=rockchip/rk3399-rock-pi-4a.dtb
    rootdev=UUID=3e02d076-8e50-47fe-9a55-df7e1edef6e0
    rootfstype=ext4
    usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

    Full /boot/boot.cmd:

    # DO NOT EDIT THIS FILE
    #
    # Please edit /boot/armbianEnv.txt to set supported parameters
    #
    
    setenv load_addr "0x9000000"
    setenv overlay_error "false"
    # default values
    #setenv rootdev "/dev/mmcblk0p1"
    setenv rootdev "/dev/nvme0n1p1"
    setenv verbosity "1"
    setenv console "both"
    setenv bootlogo "false"
    setenv rootfstype "ext4"
    setenv docker_optimizations "on"
    setenv earlycon "off"
    
    echo "Boot script loaded from ${devtype} ${devnum}"
    
    if test -e ${devtype} ${devnum} ${prefix}armbianEnv.txt; then
    	load ${devtype} ${devnum} ${load_addr} ${prefix}armbianEnv.txt
    	env import -t ${load_addr} ${filesize}
    fi
    
    if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi
    
    if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi
    if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "console=ttyS2,1500000 ${consoleargs}"; fi
    if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; fi
    if test "${bootlogo}" = "true"; then setenv consoleargs "bootsplash.bootfile=bootsplash.armbian ${consoleargs}"; fi
    
    # get PARTUUID of first partition on SD/eMMC the boot script was loaded from
    #if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:1 partuuid; fi
    if test "${devtype}" = "nvme"; then part uuid nvme ${devnum}:1 partuuid; fi
    
    setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
    
    if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1"; fi
    
    load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
    load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}Image
    
    load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
    fdt addr ${fdt_addr_r}
    fdt resize 65536
    for overlay_file in ${overlays}; do
    	if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/rockchip/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
    		echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
    		fdt apply ${load_addr} || setenv overlay_error "true"
    	fi
    done
    for overlay_file in ${user_overlays}; do
    	if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
    		echo "Applying user provided DT overlay ${overlay_file}.dtbo"
    		fdt apply ${load_addr} || setenv overlay_error "true"
    	fi
    done
    if test "${overlay_error}" = "true"; then
    	echo "Error applying DT overlays, restoring original DT"
    	load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
    else
    	if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/rockchip/overlay/${overlay_prefix}-fixup.scr; then
    		echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
    		source ${load_addr}
    	fi
    	if test -e ${devtype} ${devnum} ${prefix}fixup.scr; then
    		load ${devtype} ${devnum} ${load_addr} ${prefix}fixup.scr
    		echo "Applying user provided fixup script (fixup.scr)"
    		source ${load_addr}
    	fi
    fi
    booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
    
    # Recompile with:
    # mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr

     

×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines