Debian Build Release
Overview
This page describes how to build and install Debian distribution (Stretch) on Variscite boards with DART-6UL.
These instructions were tested with Ubuntu 16.04 x64! When using other distributions, there may be problems.
Create build environment
Installing required packages
On Ubuntu building machine:
$ sudo apt-get install binfmt-support qemu qemu-user-static debootstrap kpartx \ lvm2 dosfstools gpart binutils git lib32ncurses5-dev python-m2crypto gawk wget \ git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev \ autoconf libtool libglib2.0-dev libarchive-dev python-git xterm sed cvs subversion \ coreutils texi2html bc docbook-utils python-pysqlite2 help2man make gcc g++ \ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial automake groff curl \ lzop asciidoc u-boot-tools mtd-utils device-tree-compiler
Deploy source
Download archive containing the build script and support files for building Debian Stretch for this board:
$ cd ~ $ git clone https://github.com/varigit/debian-var.git -b debian_stretch_mx6ul_var01 var_mx6ul_dart_debian
Create environment (Internet connection should be available):
$ cd ~/var_mx6ul_dart_debian $ ./make_var_mx6ul_dart_debian.sh -c deploy
This environment prepared to build.
Make Debian
Build all
Internet connection should be available
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c all | tee 2.log
Build by parts
Build bootloader
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c bootloader
Build kernel, dtb files and kernel modules
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c kernel $ sudo ./make_var_mx6ul_dart_debian.sh -c modules
Build rootfs
Internet connection should be available
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c rootfs
Pack rootfs
To create the root file system archive (rootfs.tar.gz) and UBI image (rootfs.ubi.img), run the following commands:
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c rtar $ sudo ./make_var_mx6ul_dart_debian.sh -c rubi
Create boot SD card
- Follow the above steps for make rootfs, kernel, bootloader;
- Insert the SD card to card reader connected to a host system;
- Run the following commands (Caution! All data on the card will be destroyed):
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c sdcard -d /dev/sdX
where '/dev/sdX' path to the block SD device in your system.
Boot the board with a bootable SD card
Note: Booting from SD card eliminates WiFi as the WiFi and SD card are using the same SDIO interface.
A typical use-case, is to boot from an SD card, flash the eMMC/NAND flash, and re-boot from the eMMC/NAND flash to have WiFi operational.
Setting the Boot Mode
Booting your system from an SD card requires switching the Boot DIP switches. See picture below.
On the VAR-6ULCustomBoard (with a DART-6UL):
- "00" The current position in the picture will set the system to boot from SD card
- "01" Moving the right switch will set the system to boot from eMMC
- "10" Moving the left switch will set the system to boot from NAND flash
- "11" is illegal.
On the Concerto-Board (with a VAR-SOM-6UL):
- ON-EXT: Boot from the external storage (SD card) - the current position in the picture
- OFF-INT: Boot from the SOM's internal storage (eMMC/NAND flash)
Automatic device Tree selection in U-Boot
Enable/Disable Automatic Device Tree selection
To enable the automatic device tree selection in U-Boot (already enabled by default):
$ setenv fdt_file=undefined $ saveenv
To disable the automatic device tree selection in U-Boot, set the device tree file manually:
$ setenv fdt_file=YOUR_DTB_FILE $ saveenv
Build Results
The resulted images are located in ~/var_mx6ul_dart_debian/output/.
Image name |
How to use |
---|---|
rootfs.tar.gz | Root filesystem tarball used for installation on SD card and eMMC |
rootfs.ubi.img | Use for flash to NAND |
zImage | Linux kernel image |
SPL.nand | SPL built for NAND. The SPL is pre-U-Boot SW component, required for DDR initialization |
SPL.emmc | SPL built for SD card and eMMC boot. The SPL is pre-U-Boot SW component, required for DDR initialization |
u-boot.img.nand | U-Boot built for NAND flash |
u-boot.img.emmc | U-Boot built for SD card or eMMC |
Device Tree name |
Details |
imx6ul-var-dart-emmc_wifi.dtb | DART-6UL with eMMC and WiFi enabled. (SD card & NAND disabled) |
imx6ul-var-dart-nand_wifi.dtb | DART-6UL with l NAND and WiFi enabled. (SD card & eMMC disabled) |
imx6ul-var-dart-sd_emmc.dtb | DART-6UL with SD card and eMMC enabled (WiFi & NAND disabled). You can boot from eMMC or SD card |
imx6ul-var-dart-sd_nand.dtb | DART-6UL with SD card and NAND enabled (WiFi & eMMC disabled). You can boot from NAND or SD card |
imx6ul-var-dart-5g-emmc_wifi.dtb | DART-6UL-5G with eMMC and WiFi enabled. (SD card & NAND disabled) |
imx6ul-var-dart-5g-nand_wifi.dtb | DART-6UL-5G with l NAND and WiFi enabled. (SD card & eMMC disabled) |
imx6ull-var-dart-emmc_wifi.dtb | DART-6ULL with eMMC and WiFi enabled. (SD card & NAND disabled) |
imx6ull-var-dart-nand_wifi.dtb | DART-6ULL with l NAND and WiFi enabled. (SD card & eMMC disabled) |
imx6ull-var-dart-sd_emmc.dtb | DART-6ULL with SD card and eMMC enabled (WiFi & NAND disabled). You can boot from eMMC or SD card |
imx6ull-var-dart-sd_nand.dtb | DART-6ULL with SD card and NAND enabled (WiFi & eMMC disabled). You can boot from NAND or SD card |
imx6ull-var-dart-5g-emmc_wifi.dtb | DART-6ULL-5G with eMMC and WiFi enabled. (SD card & NAND disabled) |
imx6ull-var-dart-5g-nand_wifi.dtb | DART-6ULL-5G with l NAND and WiFi enabled. (SD card & eMMC disabled) |
Linux console access
User name | User password | User descriptor |
---|---|---|
root | root | system administrator |
user | user | local user |
xuser | used for X session access |
Flash images to NAND flash / eMMC
In case you are using a SOM with NAND flash, run the following command as root to install Debian on it:
# debian-nand.sh
In case you are using a SOM with eMMC, run the following command as root to install Debian on it:
# debian-emmc.sh
The above scripts are located in /usr/sbin in the rootfs of the SD card used to boot Debian.
How-to: Test and use an interface
Please see this section in the Yocto developer guide page. It is the same for Debian.
How-to: Modify the kernel configuration
To modify the kernel configuration (add/remove features and drivers) please follow the steps below:
1. $ cd ~/var_mx6ul_dart_debian/src/kernel 2. $ sudo make ARCH=arm mrproper 3. $ sudo make ARCH=arm imx_v7_var_defconfig 4. $ sudo make ARCH=arm menuconfig 5. Navigate the menu and select the desired kernel functionality 6. Exit the menu and answer "Yes" when asked "Do you wish to save your new configuration?" 7. $ sudo make ARCH=arm savedefconfig 8. $ sudo cp arch/arm/configs/imx_v7_var_defconfig arch/arm/configs/imx_v7_var_defconfig.orig 9. $ sudo cp defconfig arch/arm/configs/imx_v7_var_defconfig 10. Follow the instructions above to rebuild kernel and modules, repack rootfs images and recreate SD card