Download packages and build.¶
Create directory tree¶
Create the following directory tree:
Download kernel source¶
Download kernel source from git repository
$ git clone https://github.com/varigit/DART-SD410-kernel.git kernel
$ cd kernel
$ git checkout -b kernel-20.07 remotes/origin/release/kernel-20.07
Download Linaro folder from FTP site¶
Download the whole Linaro-20.07 folder located in /dart-sd410/Software/Debian on Variscite FTP into ~/sd410/Debian/Linaro-5.7.0 directory The following files will be downloaded.
sd410
└── Debian
└── Linaro-20.07
├── kernel
│ └── build.sh
├── ramdisk
│ └── initrd.img
├── RescueImages
│ ├── boot-sd410-lvds.img
│ ├── boot-sd410-hdmi.img
│ ├── dart-sd410_8016.bin
│ ├── emmc_appsboot.mbn
│ ├── flashall.bat
│ ├── gpt_both0.bin
│ ├── hyp.mbn
│ ├── LICENSE
│ ├── linaro-sid-developer-dart-sd410-893.zip
│ ├── linaro-sid-alip-dart-sd410-893.zip
│ ├── rpm.mbn
│ ├── sbl1.mbn
│ └── tz.mbn
├── mkbootimg
└── makebootimg.sh
Extract the rootfs files by:
$ unzip -o linaro-sid-developer-dart-sd410-893.zip
$ unzip -o linaro-sid-developer-dart-sd410-893.zip
The file build.sh will be placed in the git kernel directory
NOTE:
Please refer to [email protected] for obtaining FTP credentials.
Download GCC from FTP site¶
Download GCC compiler archive from /Software/Debian directory into ~/sd410/Debian directory of your PC.
Extract the GCC compiler by:
Boot Image Build¶
Variscite suggests using the downloaded script for building the boot images. If something goes wrong then try the manual build.
Automatic creation of the boot image first time¶
Build kernel source using the supplied script file:
The kernel sources will be built and the output boot image file will be created in the ~/sd410/Debian/Linaro-5.7.0/ directory
If the kernel configuration was not changed the next builds can be speed up by using the command:
Manual kernel build¶
Export Envornment variables for compiler and architecture
$ export CROSS_COMPILE=~/sd410/debian/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
$ export ARCH=arm64
Select the needed defconfig file for kernel:
Build the kernel and modules
$ make KERNELRELEASE=5.7.0-linaro-lt-qcom Image dtbs -j8
$ make KERNELRELEASE=5.7.0-linaro-lt-qcom modules -j8
$ make KERNELRELEASE=5.7.0-linaro-lt-qcom INSTALL_MOD_PATH=build-${ARCH}-modules modules_install -j8
Combine dtb files with kernel image
$ cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/apq8016-var-dart-hdmi.dtb > arch/arm64/boot/Image.gz_hdmi_dtb
$ cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/apq8016-var-dart-lvds.dtb > arch/arm64/boot/Image.gz_lvds_dtb
Manual boot image creation¶
You will need a default ramdisk for boot image creation.
It is located in the ramdisk directory of the downloaded folder.
Compress all the dtb files and the kernel image file into one dt.img file by:
$ ./mkbootimg --kernel kernel/arch/arm64/boot/Image.gz_hdmi_dtb\
--ramdisk ramdisk/initrd.img \
--output boot-sd410-hdmi.img \
--pagesize 2048 \
--base 0x80000000 \
--cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8"
$ ./mkbootimg --kernel kernel/arch/arm64/boot/Image.gz_lvds_dtb\
--ramdisk ramdisk/initrd.img \
--output boot-sd410-lvds.img \
--pagesize 2048 \
--base 0x80000000 \
--cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8"
The files named boot-sd410-hdmi.img and boot-sd410-lvds.img are created. One of them should be burned into the board using fastboot. Remove unneeded dt.img file:
Flash new image to the board¶
Cycle power of the VAR-SD410CustomBoard with Back button pressed. It will enter fastboot mode. run the following command to update the boot image:
The board will update the system and reboot with the updated kernel