Using ArchLinux, install packages arm-none-eabi-binutils, arm-none-eabi-gcc and u-boot tools == Build U-Boot == git clone git://git.denx.de/u-boot.git cd u-boot make CROSS_COMPILE='arm-none-eabi-' orangepi_one_defconfig make CROSS_COMPILE='arm-none-eabi-' == Install U-Boot == Warning: will destroy data on the first few KB of the SDCard. dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk1 bs=1024 seek=8 == Config U-Boot == Create a new partition on the SDCard (taking care of not overwriting U-Boot). Format it to FAT32. Create a new file called boot.cmd with the following content: setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 load mmc 0:1 0x43000000 ${fdtfile} || load mmc 0:1 0x43000000 boot/${fdtfile} load mmc 0:1 0x42000000 uImage || load mmc 0:1 0x42000000 boot/uImage bootm 0x42000000 - 0x43000000 Then run: mkimage -C none -A arm -T script -d boot.cmd boot.scr == Install kernel == Copy uImage and sun8i-h3-orangepi-one.dtb from the kernel you built to the partition created above.