Aria technical documentation Buy

Compiling Linux Kernel 4.19.128 LTS for Aria

This article illustrates how to generate a bootable Linux Kernel image for Aria SOM starting from the Linux Kernel Archives.

Prerequisite

Step-by-step Kernel cross-compilation procedure:

Open a terminal on your Linux PC and download the Linux Kernel sources from the main stream repository:

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.128.tar.xz

Extract the Kernel sources from the compressed file by typing:

tar xvfJ linux-4.19.128.tar.xz

Move inside the new folder:

cd linux-4.19.128

Set the Kernet config for Aria:

wget https://www.acmesystems.it/www/aria_compile_kernel_4_19/acme-aria_defconfig -O arch/arm/configs/acme-aria_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- acme-aria_defconfig

Customize the default Linux Kernel configuration:

If you need to customize the Kernel configuration or you just want to take a look around the Kernel setup type:

make ARCH=arm menuconfig

and navigate inside the Kernel configuration using the arrow keys and following the help provided by the menuconfig interface.

Generate the Device Tree Blob file (.dtb)

Now compile the device tree file requested by your board by selecting one of the following commands:

wget https://www.acmesystems.it/www/aria_compile_kernel_4_19/acme-aria.dts -O arch/arm/boot/dts/acme-aria.dts
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- acme-aria.dtb

Donwload a fixed driver for serial ports

wget https://www.acmesystems.it/www/aria_compile_kernel_4_19/atmel_serial.c -O drivers/tty/serial/atmel_serial.c

Compile the Kernel image

Compile the Linux Kernel sources and generate the binary compressed image file to save in the first partition of microSD card.

make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage
...
Image arch/arm/boot/zImage is ready

Compile the Kernel modules

The image generated contains the Linux Kernel and all the built-in device drivers (option [*] in menuconfig) compiled with it.

Al the drivers compiled as external modules (option [M] in menuconfig) need to be compiled and saved in the rootfs /lib directory on the second partition of the microSD. We didn't use any [M] flag in our defconfig so this procedure is not requested but. in case you add something. these are the commands to use to compile them:

make modules -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make modules_install INSTALL_MOD_PATH=./modules ARCH=arm

Copy the boot files into the first microSD partition

Insert a formatted microSD with the boot loader (at91bootstrap) and the rootfs contents already created in your Linux PC and copy on it these files:

Write the Linux Kernel image and the device tree blob in the first microSD partition:

sudo cp arch/arm/boot/zImage /media/$USER/BOOT
sudo cp arch/arm/boot/dts/acme-aria.dtb /media/$USER/BOOT

Write the Linux Kernel modules inside the second microSD partition:

sudo rsync -avc modules/lib/. /media/$USER/rootfs/lib/.

After the first boot

At the first access to the board command line update the module dependencies by typing this command:

depmod -a

Links

Sergio Tanzilli
Systems designer, webmaster of www.acmesystems.it and founder of Acme Systems srl

Personal email: tanzilli@acmesystems.it
Web pages: https://www.acmesystems.it --- https://www.acmestudio.it
Github repositories: https://github.com/tanzilli --- https://github.com/acmesystems
Telegram group dedicated to the Acme Systems boards: https://t.me/acmesystemssrl

Home page Aria technical documentation Buy