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
For the create archive root file system (rootfs.tar.bz2) and image ubi (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.
To avoid getting a lot of time warnings when installing Debian to eMMC, please verify/set a valid date using the date command, before calling the installation script.
e.g.
# date -s "Feb 28 2018 15:09:27 CEST"
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 kernel configuration
To modify kernel configuration (add/remove features and drivers) please follow the steps below:
1. cd ~/var_mx6ul_dart_debian/src/kernel 2. Run "sudo make ARCH=arm mrproper" 3. Run "sudo make ARCH=arm imx_v7_var_defconfig 4. Run "sudo make 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. Run "sudo make ARCH=arm savedefconfig" 8. Run "sudo cp arch/arm/configs/imx_v7_var_defconfig arch/arm/configs/imx_v7_var_defconfig.orig 9. Run "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