Open main menu

DAVE Developer's Wiki β

Changes

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

451 bytes added, 08:09, 25 February 2022
Update SD card section for DESK-MX6-L v3.0.0 release
<section begin="History" />
{| style="border-collapse:collapse; "
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
|-
!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"|Version!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"|Issue Date!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"|1.0.0|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"|Jun 2021|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"|First DESK release|-| 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" |3.0.0| 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" |Feb 2022| 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" |3.0.0 DESK release
|}
<section end="History" />
__FORCETOC__
<section begin="Body" />
==How to create a bootable SD card==
{{ImportantMessage|text=The procedure described here was tested with a physical machine. In case of a virtual machine such as the [[Managed_Virtual_Machine_(MVM)|MVM]], it might not work properly. Also, it is worth remembering that The USB controller of the MVM is disabled should be enabled by default. See also [[MVM_FAQs#Q:_How_to_use_the_USB_devices_connected_to_the_host_machine.3F|this section]]If you are using Linux-based distribution and are having trouble detecting a USB device in virtual machine, please make sure your user belongs to the ''vboxusers'' group.}}
This article shows how to create a bootable microSD for the [[DESK-MX6-L/General/Release_Notes|DESK-MX6-L Release Notes]] kit by using a simple bash script. <br>
'''Note:''' Starting from this '''DESK-MX6-L 1.0.0''' release the support for the SPL has been introduced in UbootU-Boot. Previous versions of this script will no longer produce a fully functional and bootable microSD card. <br>
The procedure has been tested on a Linux PC running Ubuntu LTS 16MVM released with '''DESK-MX6-L 3.04 distribution 0.0''' release with
*a 16 GB microSD card [1]
*a USB SD card reader*the binary files delivered along with the [[DESK-MX6-L/General/Release_Notes#Downloadable_binary_imagesDownloadable_binary_images_2|DESKMX6DESK-MX6-L 13.0.0]].
The resulting card is partitioned as depicted here below:
* bootable partition (mmcblk0p1, vfat) containing:
** binary images (uU-boot Boot and kernel images)
* root file system partition (mmcblk0p2, ext3)
** root file system binaries and init scripts
if [[ -z $1 || -z $2 || -z $3 || -z $4 || -z $5 ]]
then
echo "$0 Usage:" 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" exit
fi
if [ "$(whoami)" != "root" ]
then
echo "you must be root to run this script!" exit
fi
if ! [[ -b $1 ]]
then
echo "$1 is not a valid block device!" exit
fi
if ! [[ -e $2 ]]
then
echo "Incorrect u-boot.img location!" exit
fi
if ! [[ -e $3 ]]
then
echo "Incorrect SPL location!" exit
fi
if ! [[ -d $4 ]]
then
echo "Incorrect Binaries location!" exit
fi
if ! [[ -f $5 ]]
then
echo "Incorrect rootfs location!" exit
fi
if [[ "$DRIVE" == *"mmcblk"* ]]
then
echo "You're using a mmc device, I need to fix partition names" PART="p"
else
PART=""
fi
UBOOT=$2
if ! [ $ans == 'y' ]
then
exit
fi
if [ "$?" -eq "0" ]
then
{ echo 40,1380,0x0c,* echo 1420,,83,- } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE
else
{
Here is an example that shows how to use this script. Let's assume that the binary We use here files were downloaded in the <code>desk<delivered with [[DESK-MX6-L/code> subdirectory of the working directoryGeneral/Release_Notes#Downloadable_binary_images_2|DESK-MX6-L 3.0.0]] release. Before invoking the script, the following files has to be renamed in order to make them compatible with the default U-Boot environment variables:
* bootscript: <code>boot.scr</code>
* splash image: <code>splash_image.bmp</code>* Linux kernel: <code>uImagedesk-mx6-l-3.0.0_uImage</code>* Device tree blob: <code>desk-mx6-l-13.0.0_imx6dl-sbcx-cb0012.dtb</code>.
This is the list of the We will copy them into <code>~/desk-mx-l/desk</code> directory. Needed binary files that will can be used by found on <code>MVM</code> in the scriptfollowing location:
<pre>
dvdk@vagrant:~/desk-mx-l$ ll /tftpboot/desk-mx-l/total 1038811616drwxr-xr-x 2 dvdk root 4096 Jul 1 14Feb 24 13:53 11 ./drwxr-xr-x 3 dvdk root 4096 Apr 9 15Feb 24 13:52 08 ../-rw-r--r-- 1 dvdk dvdk 1556 Jul 1 14:53 boot.scr-rw-r--r-- 1 dvdk root 52939 Apr 9 1551910 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6dl-sbcx-cb0012.dtb-rw-r--r-- 1 dvdk root 53252 Apr 9 1552223 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6dl-sbcx-cb0013.dtb-rw-r--r-- 1 dvdk root 52837 Apr 9 1551824 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6dl-sbcx-cb0018.dtb-rw-r--r-- 1 dvdk root 53939 Apr 9 1552894 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6dl-sbcx-cb0050.dtb-rw-r--r-- 1 dvdk root 53212 Apr 9 1552199 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6dl-sbcx-cb0055.dtb-rw-r--r-- 1 dvdk root 49142 Apr 9 1548399 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6dl-xelk-l.dtb-rw-r--r-- 1 dvdk root 53760 Apr 9 1553187 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6q-sbcx-cb0012.dtb-rw-r--r-- 1 dvdk root 54069 Apr 9 1553496 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6q-sbcx-cb0013.dtb-rw-r--r-- 1 dvdk root 50131 Apr 9 1549840 Feb 24 13:53 10 desk-mx6-l-13.0.0_imx6q-xelk-l-2-0-0.dtb-rw-r--r-- 1 dvdk root 49959 Apr 9 1549672 Feb 24 13:53 11 desk-mx6-l-13.0.0_imx6q-xelk-l.dtb-rw-r--r-- 1 dvdk root 56320 Apr 9 1560416 Feb 24 13:52 08 desk-mx6-l-13.0.0_mx6qdldesk_nand_SPL-rw-r--r-- 1 dvdk root 570224 Apr 9 15625300 Feb 24 13:52 08 desk-mx6-l-13.0.0_mx6qdldesk_nand_u-boot.img-rw-r--r-- 1 dvdk root 56320 Apr 9 1560416 Feb 24 13:52 08 desk-mx6-l-13.0.0_mx6qdldesk_spi_SPL-rw-r--r-- 1 dvdk root 569984 Apr 9 15602668 Feb 24 13:52 08 desk-mx6-l-13.0.0_mx6qdldesk_spi_u-boot.img-rw-r--r-- 1 dvdk root 56320 Apr 9 1560416 Feb 24 13:52 08 desk-mx6-l-13.0.0_mx6qdldesk_SPL-rw-r--r-- 1 dvdk root 569864 Apr 9 15624932 Feb 24 13:52 08 desk-mx6-l-13.0.0_mx6qdldesk_u-boot.img-rw-r--r-- 1 dvdk root 7031584 Apr 9 158154280 Feb 24 13:53 10 desk-mx6-l-13.0.0_uImage-rw-r--r-- 1 dvdk root 1152054 Apr 9 15Feb 24 13:52 08 splash_image.bmpdvdk@vagrant:~$ ll ~/desk-mx-l/desk-mx6-l-3.0.0_boot.scr -rw-rw-r-- 1 dvdk dvdk 1556 Feb 24 14:43 /home/dvdk/desk-mx-l/desk-mx6-l-3.0.0_boot.scrdvdk@vagrant:~$ cp /tftpboot/desk-mx-l/desk-mx6-l-3.0.0_uImage ~/desk-mx-l/desk/desk-mx6-l-3.0.0_uImagedvdk@vagrant:~$ cp /tftpboot/desk-mx-l/desk-mx6-l-3.0.0_imx6dl-sbcx-cb0012.dtb ~/desk-mx-l/desk/desk-mx6-l-3.0.0_imx6dl-sbcx-cb0012.dtbdvdk@vagrant:~$ cp ~/desk-mx-l/desk-mx6-l-3.0.0_boot.scr ~/desk-mx-l/desk/boot.scrdvdk@vagrant:~$ cp /tftpboot/desk-mx-l/splash_image.bmp ~/desk-mx-l/desk/
</pre>
You can now run the script, by passing the following parameters:
*Device file of the microSD card (<code>/dev/sdcsdb</code> in the example)
*U-Boot image
*SPL
*Path of the directory containing the bootscript file, the splash image, the Linux kernel image, and the device tree blob files
*Archive of the target's root file system (compressed as <code>.tar.bz2</code> file).
<pre>
dvdk@vagrant:~/desk-mx-l$ sudo ./desk-mx6-l-13.0.0_mksd.sh /dev/sdb /tftpboot/desk-mx-l/desk-mx6-l-13.0.0_mx6qdldesk_u-boot.img /tftpboot/desk-mx-l/desk-mx6-l-13.0.0_mx6qdldesk_SPL /tftpboot~/desk-mx-l/ desk ./rfs/davedesk-mx6-l-3.0.0_desk-image-develqt5-desk-mx6.tar.bz2
All data on /dev/sdb now will be destroyed! Continue? [y/n]
y
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 32.0706 01554 s, 341 520 kB/s
DISK SIZE - 15931539456 bytes
Checking that no-one is using this disk right now ... OK
Disk /dev/sdb: 14.9 86 GiB, 15931539456 bytes, 31116288 sectorsDisk model: Transcend
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
>>> Created a new DOS disklabel with disk identifier 0x2c61a4d60x40f56c1d./dev/sdb1: Created a new partition 1 of type 'W95 FAT32 (LBA)' and of size 8 GiB./dev/sdb2: Sector 16384000 is already allocated.Created a new partition 2 of type 'Linux' and of size 6.9 GiB./dev/sdb3: Done. 
New situation:
Disklabel type: dos
Disk identifier: 0xe38701f1
 
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 32768 16777215 16744448 8G c W95 FAT32 (LBA)
/dev/sdb2 16777216 62333951 45556736 21.7G 83 Linux
 
New situation:
Disklabel type: dos
Disk identifier: 0x40f56c1d
Device Boot Start End Sectors Size Id Type
Calling ioctl() to re-read partition table.
Syncing disks.
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
[Making filesystems...]
mkfs.fat 34.0.28 1 (20152017-0501-1624)mke2fs 1.4245.13 5 (1707-MayJan-20152020)/dev/sdb2 contains a ext3 file system labelled 'ROOTFS' last mounted on /mnt on Thu Jul 1 14:57:17 2021
Creating filesystem with 1792384 4k blocks and 448800 inodes
Filesystem UUID: 330007bc969ecf69-831ce872-4c5d4709-b51eb325-626bbac325da627b3d1c9201
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 16384 blocks): done
Writing superblocks and filesystem accounting information: done
[Copying files...]
'/tftpboothome/dvdk/desk-mx-l/desk/boot.scr' -> '/mnt/boot.scr''/tftpboothome/dvdk/desk-mx-l/desk-mx6-l-1.0.0_imx6dl-sbcx-cb0012.dtb' -> '/mnt/desk-mx6-l-13.0.0_imx6dl-sbcx-cb0012.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_imx6dl-sbcx-cb0013.dtb' -> '/mnt/desk-mx6-l-1.0.0_imx6dl-sbcx-cb0013.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_imx6dl-sbcx-cb0018.dtb' -> '/mnt/desk-mx6-l-1.0.0_imx6dl-sbcx-cb0018.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_imx6dl-sbcx-cb0050.dtb' -> '/mnt/desk-mx6-l-13.0.0_imx6dl-sbcx-cb0050.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_imx6dl-sbcx-cb0055.dtb' -> '/mnt/desk-mx6-l-1.0.0_imx6dl-sbcx-cb0055.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_imx6dl-xelk-l.dtb' -> '/mnt/desk-mx6-l-1.0.0_imx6dl-xelk-l.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_imx6q-sbcx-cb0012.dtb' -> '/mnt/desk-mx6-l-1.0.0_imx6q-sbcx-cb0012.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_imx6q-sbcx-cb0013.dtb' -> '/mnt/desk-mx6-l-1.0.0_imx6q-sbcx-cb0013.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_imx6q-xelk-l-2-0-0.dtb' -> '/mnt/desk-mx6-l-1.0.0_imx6q-xelk-l-2-0-0.dtb''home/tftpbootdvdk/desk-mx-l/desk-mx6-l-1.0.0_imx6q-xelk-l.dtb' -> '/mnt/desk-mx6-l-13.0.0_imx6q-xelk-l.dtb''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_mx6qdldesk_nand_SPL0_uImage' -> '/mnt/desk-mx6-l-13.0.0_mx6qdldesk_nand_SPL0_uImage''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_mx6qdldesk_nand_u-boot.img' -> '/mnthome/desk-mx6-l-1.0.0_mx6qdldesk_nand_u-boot.img''/tftpbootdvdk/desk-mx-l/desk-mx6-l-1.0.0_mx6qdldesk_spi_SPL' -> '/mnt/desk-mx6-l-1.0.0_mx6qdldesk_spi_SPL''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_mx6qdldesk_spi_u-boot.img' -> '/mnt/desk-mx6-l-1.0.0_mx6qdldesk_spi_u-boot.img''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_mx6qdldesk_SPL' -> '/mnt/desk-mx6-l-1.0.0_mx6qdldesk_SPL''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_mx6qdldesk_u-boot.img' -> '/mnt/desk-mx6-l-1.0.0_mx6qdldesk_u-boot.img''/tftpboot/desk-mx-l/desk-mx6-l-1.0.0_uImage' -> '/mnt/desk-mx6-l-1.0.0_uImage''/tftpboot/desk-mx-l/splash_image.bmp' -> '/mnt/splash_image.bmp'
[Extracting rfs (this may take a while...)]
[Programming SPL]
110118+0 records in110118+0 records out56320 60416 bytes (56 60 kB, 55 59 KiB) copied, 0.181772 129522 s, 310 466 kB/s
[Programming u-boot.img]
556610+1 records in556610+1 records out569864 624932 bytes (570 625 kB, 557 610 KiB) copied, 21.31068 84936 s, 247 338 kB/s
[Done]
</pre>
<pre>
echo 'V��3Fb���6"�DESK-MX6-L�echo 'bootscript generated with command "mkimage -A ARM -T script -C none -n AXELDESK-Lite-DESKMX6-SBCX L -d bootscript.txt boot.scr"'
setenv desk_release 'desk-mx6-l-13.0.0'
if test 0x${cb_configid#} = 0x00000012;
then
if test ${cpu} = 6DL; then setenv fdtfile ${desk_release}_imx6dl-sbcx-cb0012.dtb else setenv fdtfile ${desk_release}_imx6q-sbcx-cb0012.dtb fi
elif test 0x${cb_configid#} = 0x00000013;
then
if test ${cpu} = 6DL; then setenv fdtfile ${desk_release}_imx6dl-sbcx-cb0013.dtb else setenv fdtfile ${desk_release}_imx6q-sbcx-cb0013.dtb fielif test 0x${cb_configid#} = 0x00000001;then if test ${cpu} = 6DL; then setenv fdtfile ${desk_release}_imx6dl-xelk-l.dtb else setenv fdtfile ${desk_release}_imx6q-xelk-l.dtb fielif test 0x${cb_configid#} = 0x00000018;then setenv fdtfile ${desk_release}_imx6dl-sbcx-cb0018.dtbelif test 0x${cb_configid#} = 0x00000050;then setenv fdtfile ${desk_release}_imx6dl-sbcx-cb0050.dtbelif test 0x${cb_configid#} = 0x00000055;then setenv fdtfile ${desk_release}_imx6dl-sbcx-cb0055.dtb
elif test 0x${cb_configid#} = 0xffffffff;
then
if test ${cpu} = 6DL; then setenv fdtfile ${desk_release}_imx6dl_imx6q-deskxelk-l-2.0.-0.dtb else setenv fdtfile ${desk_release}_imx6q-desk-l-2.0.0.dtb fi
else
echo Invalid CB! Autoreset ...
sleep 30
reset
fi
setenv mmc_loadfdt 'fatload mmc ${mmcdev}:1 ${fdtaddr} ${fdtfile}'
echo Booting AxelLiteDESK-DESKMX6-SBCX L via mmcboot with ${fdtfile} as device tree
run mmcboot
=== Attention !===
* <code>/home/dvdk/desk-mx-l/desk-mx6-l-13.0.0_boot.scr</code> has been generated using the images available at the moment of VM creation: please, use the previous indication ax as an example on how to create a '''proper''' bootscript for your own purposes* <code>/home/dvdk/desk-mx-l/desk-mx6-l-13.0.0_mksd.sh</code> bash script has been validated using a single SD card version: the size of the partitions and the related ''sfdisk'' parameters have to be properly modified according to your own SD card used and to your partitions specification. You can use it an an example to be modified according your use case
----
[[Category:AXEL Lite]]
devwiki_user
120
edits