Building Linux kernel (XUELK)
Info Box
|
History[edit | edit source]
Version | Date | XUELK version | Notes |
---|---|---|---|
August 2016 | XUELK 1.0.0 | ||
March 2017 | XUELK 1.1.3 | ||
1.2.0 | May 2017 | XUELK 1.2.0 | Update for new XUELK release |
2.0.1 | Sep 2017 | XUELK 2.0.1 | Update for new XUELK release |
2.0.2 | Feb 2018 | XUELK 2.0.2 | Add kernel modules documentation |
2.0.3 | Jan 2019 | XUELK 2.0.3 | Add support for NOR ISSY |
Quick reference[edit | edit source]
URL | git@git.dave.eu:lynx/linux-2.6-imx.git |
---|---|
stable branch | lynx |
stable tag | xuelk-2.0.3 |
defconfig | imx_v7_lynx_defconfig | ||||
---|---|---|---|---|---|
Kernel binary | UIMAGE_LOADADDR=0x80008000 uImage | ||||
Device trees | Platform | SOM ConfigID | CB ConfigID | DTB | |
SBC Lynx | 0x00000008 | 0x0000000E | imx6ul-lynx.dtb | ||
SBC Lynx | 0x0000000C | N/A | imx6ul-lynx-som000c.dtb | ||
SBC Lynx | 0x00000013 | 0x0000002D 0x0000002E 0x0000002F 0x00000030 |
imx6ul-lynx-som0013-cb002d.dtb imx6ul-lynx-som0013-cb002e.dtb imx6ul-lynx-som0013-cb002f.dtb imx6ul-lynx-som0013-cb0030.dtb | ||
Axel ULite | 0x0000000B 0x00000014 |
0x00000010 | imx6ul-axelulite-cb0010.dtb |
Detailed Instructions[edit | edit source]
It is assumed that the development environment has been set up properly as described here.
- start the Linux development VM and login into the system
- open a terminal window and cd into Linux kernel source code
cd lynx/linux/
- in case of needs you can update your local repository with the following git command
git pull
- configure the build environment
source ~/env.sh
- to build the binaries run the following commands:
make imx_v7_lynx_defconfig make UIMAGE_LOADADDR=0x80008000 uImage imx6ul-lynx-som000c.dtb imx6ul-lynx-som0013-cb002f.dtb imx6ul-axelulite-cb0010.dtb make modules
- The first command selects the default XUELK configuration, the second builds the kernel binary image with the required u-boot header and the kernel device tree, while the last command build kernel modules (if present in kernel configuration).
Default Linux kernel configuration can be changed by using the standard menuconfig
, xconfig
, or gconfig
make target. Subsequent builds just require uImage
make target to update the binary image. Once the build process is complete, the kernel binary image is stored into the arch/arm/boot/uImage
file. Both this file and the kernel device tree can be copied to the tftp root directory /tftpboot/lynx/
with the following commands:
cp arch/arm/boot/uImage /tftpboot/lynx/ cp arch/arm/boot/dts/*.dtb /tftpboot/lynx/
Usually, kernel modules are installed with make modules_install
command, but this method installs the modules into the /lib/modules
directory of you MVM, which is not what you want. A better way to deploy kernel modules while cross-compiling is
- generate a
.tar.gz
archive - install this archive into the target root file system
User can create such an archive, for example, using the following commands:
mkdir modules-install make INSTALL_MOD_PATH=modules-install modules_install cd modules-install && tar cvzf ../modules.tar.gz . && cd ..
Now copy modules.tar.gz
into the target root file system and install them as root with the following command
tar xvzf modules.tar.gz -C /