Open arbv opened 1 year ago
I have also booted an unmodified Fedora Workstation image of the same version (also booted in UEFI mode). Works fine, GPU within GNOME is detected as using Panfrost driver.
I have stupidly destroyed the SD card reader in my nanopi R5s... Good thing is: it is now running this Debian image, so all is not lost. If I want to be able to change the OS on EMMC, all I would need is the ability to boot from USB storage when detected. Question for you guys: is there any possibility we could modify the uboot script on the current device to allow for that? Any help greatly appreciated!
Removable media is preferred to non-removable. If you have a removable device, it will boot before the emmc.
If you make a removable mmc and rename /boot/extlinux
to something else like /boot/extlinux.old
it will not be seen as bootable and the bootloader on the mmc will then try to boot the emmc device.
Of course you can put a boot loader on the emmc device and it should just boot without mmc.
Ah I don't have an mmc to try out, but I have USB storage devices. The FriendlyWRT version of u-boot accessed from the serial console has a run usb_boot
option that can start from a USB thumb drive (worked for me once). Unfortunately all I have now is this repo's u-boot version without that option. I was thinking maybe there would be a way to modify extlinux to add an option to boot from USB? I don't dare touch u-boot on EMMC, it is currently my last option to boot that device.
It is the more modern Standard Boot: https://docs.u-boot.org/en/latest/develop/bootstd.html
I do not have a device in front of me to test this, but I think it should just be:
setenv boot_targets "usb"
boot
Excellent, thanks! I managed to boot the board off a USB stick running the same image.
I tried to persist the changes to boot_targets
but could not find a way (no saveenv
). All I need is re-arrange the default device boot order: usb nvme mmc1 mmc0 ... Any ways to do that without recompiling u-boot?
Thanks again!
I have stupidly destroyed the SD card reader in my nanopi R5s...
Is it mechanical damage? If you are handy with a soldering iron, try this: https://www.amazon.com/gp/product/B00E6PVMU2
The bootloader is not setup with a save environment. Either do what you are doing now, or replace the boot loader. I can make a bootloader that has an environment or that boots usb, mmc0
It is not as bad as it sounds to replace it on the emmc:
sudo dd bs=4K seek=8 if=idbloader.img of=/dev/mmcblk0
sudo dd bs=4K seek=2048 if=u-boot.itb of=/dev/mmcblk0
Ah, thanks for the thoughts but yes it is mechanical damage and my soldering skills are not what they used to be. I opened the box to access the motherboard and UART, forgot there was an SD card reader, and broke it in half. Should be fine as long as I can boot from other media: EMMC, USB, or even NVME. No worries I can build another boot loader with media in a different order. Thanks again for sharing such a useful project!
I don't have access to the UART yet; can someone post the output of printenv
from u-boot prompt? Thanks!
=> printenv
arch=arm
baudrate=1500000
board=evb_rk3568
board_name=evb_rk3568
boot_targets=mmc1 mmc0 nvme scsi usb pxe dhcp spi
bootcmd=bootflow scan
bootdelay=2
cpu=armv8
cpuid#=54474e4b383400000000000000060714
eth1addr=46:37:9d:1b:c1:78
ethaddr=46:37:9d:1b:c1:79
fdt_addr_r=0x0a100000
fdtcontroladdr=edbec250
fdtfile=rockchip/rk3568-nanopi-r5c.dtb
fdtoverlay_addr_r=0x02000000
kernel_addr_r=0x02080000
kernel_comp_addr_r=0x08000000
kernel_comp_size=0x2000000
loadaddr=0xc00800
partitions=uuid_disk=${uuid_gpt_disk};name=loader1,start=32K,size=4000K,uuid=${uuid_gpt_loader1};name=loader2,start=8MB,size=4MB,uuid=${uuid_gpt_loader2};name=trust,size=4M,uuid=${uuid_gpt_atf};name=boot,size=112M,bootable,uuid=${uuid_gpt_boot};name=rootfs,size=-,uuid=B921B045-1DF0-41C3-AF44-4C6F280D3FAE;
pxefile_addr_r=0x00e00000
ramdisk_addr_r=0x0a200000
script_offset_f=0xffe000
script_size_f=0x2000
scriptaddr=0x00c00000
serial#=3ad598e2b63fdc37
soc=rk3568
stderr=serial@fe660000
stdin=serial@fe660000
stdout=serial@fe660000
vendor=rockchip
Environment size: 1014/126972 bytes
Hmm, except for the bootcmd
value that ^^ looks almost identical to rk3328 renegade with mainline u-boot. The latter didn't like booting from sdcard using efi/grub but nanopi-r5c booted up right away with the same sdcard image and u-boot defconfig. Simple config is:
dd if=u-boot-rockchip.bin of=/dev/sdX seek=64
grub-install --target=arm64-efi --efi-directory=/boot/efi --removable
devicetree
entries in grub.cfg --or-- use the patches: https://github.com/VCTLabs/embedded-overlay/tree/master/sys-boot/grub/files (both blscfg and devicetree)Note u-boot was built with the latest rkbin files:
Rambling references from testing:
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
[ 0.000000] Linux version 6.6.8-gentoo-dist (root@jiji.arm.dev.gentoo.org) (aarch64-unknown-linux-gnu-gcc (Gentoo 13.2.1_p20230826 p7) 13.2.1 20230826, GNU ld (Gentoo 2.40 p5) 2.40.0) #1 SMP PREEMPT_DYNAMIC Wed Dec 20 17:39:34 -00 2023
[ 0.000000] KASLR disabled due to lack of seed
[ 0.000000] Machine model: FriendlyElec NanoPi R5C
[ 0.000000] earlycon: uart8250 at MMIO32 0x00000000fe660000 (options '')
[ 0.000000] printk: bootconsole [uart8250] enabled
[ 0.000000] efi: EFI v2.10 by Das U-Boot
[ 0.000000] efi: RTPROP=0xecbd3040 SMBIOS=0xecbd2000 MEMRESERVE=0xacee1040
[ 0.000000] NUMA: No NUMA configuration found
[ 0.000000] NUMA: Faking a node at [mem 0x0000000000200000-0x00000000efffffff]
[ 0.000000] NUMA: NODE_DATA [mem 0xef5bd2c0-0xef5d3fff]
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000200000-0x00000000efffffff]
[ 0.000000] DMA32 empty
[ 0.000000] Normal empty
[ 0.000000] Device empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000200000-0x00000000ecbd1fff]
[ 0.000000] node 0: [mem 0x00000000ecbd2000-0x00000000ecbd3fff]
[ 0.000000] node 0: [mem 0x00000000ecbd4000-0x00000000ecbd4fff]
[ 0.000000] node 0: [mem 0x00000000ecbd5000-0x00000000ecbd6fff]
[ 0.000000] node 0: [mem 0x00000000ecbd7000-0x00000000ecbd7fff]
[ 0.000000] node 0: [mem 0x00000000ecbd8000-0x00000000ecbdbfff]
[ 0.000000] node 0: [mem 0x00000000ecbdc000-0x00000000eff0ffff]
[ 0.000000] node 0: [mem 0x00000000eff10000-0x00000000eff1ffff]
[ 0.000000] node 0: [mem 0x00000000eff20000-0x00000000efffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000200000-0x00000000efffffff]
[ 0.000000] On node 0, zone DMA: 512 pages in unavailable ranges
[ 0.000000] cma: Reserved 64 MiB at 0x00000000e4e00000 on node -1
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] psci: SMC Calling Convention v1.2
[ 0.000000] percpu: Embedded 32 pages/cpu s92840 r8192 d30040 u131072
Also, again, thanks! this really does help with the bootstrapping as someone else mentioned...
I have successfully booted unmodified Fedora Server 38 image from a USB drive. In order to accomplish that, I have flashed a small image with u-boot only into eMMC memory of the device. The u-boot (2023.04) was built with UEFI support. See #2 and #6 (in particular, this https://github.com/inindev/nanopi-r5/issues/6#issuecomment-1564912171).