Open main menu

DAVE Developer's Wiki β

Changes

DESK-MX6-L/Development/How to create a bootable microSD card

1,770 bytes added, 14:24, 9 October 2020
no edit summary
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
|-
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|X1.Y0.Z0|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Month YearOct 2020|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|TBD|-|-|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|[TBD_link X.Y.Z]|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Month Year|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|TBD|-First DESK release
|}
<section end=History/>
The script - named <code>mksd.sh</code> - looks like this:
<pre>
TBD #!/bin/bash if [[ -z $1 || -z $2 || -z $3 || -z $4 || -z $5 ]]then echo "$0 Usage: cat " echo " $0 <device> <u-boot.img> <SPL> <binaries directory> <rootfs tar.bz2>" echo " Example: $0 /dev/sdc u-boot.img SPL binaries/ rootfs.tar.bz2" exitfi if [ "$(whoami)" != "root" ]then echo "you must be root to run this script!" exitfi if ! [[ -b $1 ]]then echo "$1 is not a valid block device!" exitfi if ! [[ -e $2 ]]then echo "Incorrect u-boot.img location!" exitfi if ! [[ -e $3 ]]then echo "Incorrect SPL location!" exitfi if ! [[ -d $4 ]]then echo "Incorrect Binaries location!" exitfi if ! [[ -f $5 ]]then echo "Incorrect rootfs location!" exitfi DRIVE=$1if [[ "$DRIVE" == *"mmcblk"* ]]then echo "You're using a mmc device, I need to fix partition names" PART="p"else PART=""fiUBOOT=$2SPL=$3BINARIES=$4RFS=$5 echo "All data on "$DRIVE" now will be destroyed! Continue? [y/n]"read ansif ! [ $ans == 'y' ]then exitfi echo "[Partitioning $1...]" dd if=/dev/zero of mksd=$DRIVE bs=1024 count=1024 SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'` echo DISK SIZE - $SIZE bytes CYLINDERS=`echo $SIZE/255/63/512 | bc` # check if we're running an old (e.g. 2.20.x) or new (e.g.sh script2.24.x) sfdisksfdisk --help | grep -- -H if [ "$?" -eq "0" ]then { echo 10,1380,0x0c,* echo 1390,,83,- } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVEelse{ echo 10,4086M,0x0c,* echo 4096M,,83,-} | sfdisk $DRIVEfi partprobe  echo "[Making filesystems...]"mkfs.vfat -F 32 -n BOOT "$DRIVE$PART"1 #> /dev/nullmkfs.ext3 -L ROOTFS "$DRIVE$PART"2 #> /dev/null echo "[Copying files...]" binaries_dir=${BINARIES%/}mount "$DRIVE$PART"1 /mntcp -av --no-preserve=ownership $binaries_dir/* /mnt/umount "$DRIVE$PART"1 echo "[Extracting rfs (this may take a while...)]"mount "$DRIVE$PART"2 /mnttar jxf $RFS -C /mnt > /dev/nullchmod 755 /mntumount "$DRIVE$PART"2 echo "[Programming SPL]"dd if=$SPL of=$DRIVE bs=512 seek=2 conv=fsync echo "[Programming u-boot.img]"dd if=$UBOOT of=$DRIVE bs=1k seek=69 conv=fsync echo "[Done]" 
</pre>
* bootscript: <code>boot.scr</code>
* Linux kernel: <code>uImage</code>
* Device tree blob: <code>''carrier''imx6q-xelk-l-2-0-0.dtb</code>.
This is the list of the binary files that will be used by the script:
<pre>
dvdk@vagrant:~/desk-{{{kit}}}mx-l$ ls -ladesktotal 7548drwxrwxr-x 2 dvdk dvdk 4096 Oct 9 16:22 .drwxrwxr-x 6 dvdk dvdk 4096 Oct 9 16:22 ..TBD directory listing-rw-r--r-- 1 dvdk dvdk 53760 Oct 9 16:22 imx6q-sbcx-cb0012.dtb-rw-r--r-- 1 dvdk dvdk 56320 Oct 9 16:22 SPL-rw-r--r-- 1 dvdk dvdk 569864 Oct 9 16:22 u-boot...img-rw-r--r-- 1 dvdk dvdk 7031520 Oct 9 16:22 uImagedvdk@vagrant:~/desk-mx-l$
</pre>
 
You can now run the script, by passing the following parameters:
*Device file of the microSD card (<code>/dev/sdc</code> in the example)
*Archive of the target's root file system (compressed as <code>.tar.bz2</code> file).
<pre>
dvdk@vagrant:~/desk-{{{kit}}}mx-l$ ./mksd.sh /dev/sd<x> <u-boot.img> <SPL> <binaries_dir>desk/ <rfs_filename>
...
...
8,226
edits