2018-11-05

Radxa - Make SD booting images



Make SD booting images

http://wiki.radxa.com/Rock/make_sd_image


Rock/pro/lite has on board NAND flash, but can also boot from exteranl uSD card. uSD card has a higher booting priority. This page introduce how to make a completely off NAND bootable image for sd card.

Introduction

To boot from uSD card and run the system on uSD card, we need the following
  • bootloader for booting from uSD card - u-boot-sd.img
  • parameter for uSD card layout and kernel cmdline - parameter.img
  • kernel+ramdisk - boot.img
  • a rootfs - rootfs.ext4

Prepare images

u-boot for sdcard

Follow the instruction at Make u-boot for sdcard to create the u-boot-sd.img for sd card.

get the parameter

Download the parameter from dl.radxa.com
wget http://dl.radxa.com/rock/images/parameter/parameter_linux_sd
rkcrc -p parameter_linux_sd parameter.img                                      #where to get rkcrc, refer to http://radxa.com/Rock/flash_the_image "Flash with rkflashtool"

build the kernel

Follow the Booting Linux(3.0.36) or build mainline kernl page to make the boot.img.

make the roofts

Follow the instructions here to make the Ubuntu or Debian rootfs - rootfs.ext4.

Write to the sdcard

First, let's clean the uSD card.
sudo dd if=/dev/zero of=/dev/sdx bs=1M count=1

Then, create the partitions with fdisk
export START_SECTOR=65536              

why the start sector is 65536(32MB offset) is we need reserve some sectors # for boot.img/parameter/bootloader before the filesystem starts.
 
sudo fdisk /dev/sdx  << EOF
n
p
1
$START_SECTOR

w
EOF

Now we have a new partition for rootfs starting at START_SECTOR. It's time to write the images to the sdcard.
 
sudo dd if=u-boot-sd.img of=/dev/sdx conv=sync seek=64 
sudo dd if=parameter.img of=/dev/sdx conv=sync seek=$((0x2000))
sudo dd if=boot.img of=/dev/sdx conv=sync seek=$((0x2000+0x2000))
sudo dd if=rootfs.ext4 of=/dev/sdx1 conv=sync

Insert the uSD card to rock/pro/lite, you can boot from uSD card now.