This article illustrates how to generate a bootable class='acmetable' Linux Kernel image usable on the following Acme Systems boards:
Download and save in your home directory the Linux Kernel sources:
Extract the Kernel sources from the compressed file by typing:
~$ tar xvfJ linux-3.14.23.tar.xz ...
Move inside the new folder:
~$ cd linux-3.14.23 ~/linux-3.14.23$
At this point I suggest to create a your own personal branch on Linux Kernel sources to keep a trace of any changes from the Kernel mainline using git.
Download acme-arietta_defconfig in arch/arm/configs then type to use it:
~/linux-3.14.23$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- acme-arietta_defconfig ... # configuration written to .config
If you need to customize the Kernel configuration or just taking a look to the drivers and features activated type:
~/linux-3.14.23$ make ARCH=arm menuconfig
and navigate inside the Kernel configuration using the arrow keys and following the help provided by the menuconfig interface.
Download acme-arietta.dts in arch/arm/boot/dts then type to use it:
~/linux-3.14.23$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- acme-arietta.dtb ...
Compile the Linux Kernel sources and generate a binary image file to save in the first partition of microSD card.
~/linux-3.14.23$ make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage ... Image arch/arm/boot/zImage is ready
On a mid-power PC the whole source compilation requires about 5 minutes.
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. To compile them type:
~/linux-3.14.23$ make modules -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- ... ~/linux-3.14.23$ make modules_install INSTALL_MOD_PATH=./modules ARCH=arm ...
Insert a formatted microSD in your Linux PC and copy on it the files directly:
Write the Linux Kernel image and Device tree blog files in the first microSD partition:
~/linux-3.14.23$ cp arch/arm/boot/dts/acme-arietta.dtb /media/$USER/KERNEL ~/linux-3.14.23$ cp arch/arm/boot/zImage /media/$USER/KERNEL
If you are using an Ubuntu release older than 13.10 remove $USER in the path
Write the Kernel modules in the rootfs (second microSD partition):
~/linux-3.14.23$ sudo rsync -avc modules/lib/. /media/$USER/rootfs/lib/.
Use this method if you have a working board accessible via LAN
Write the Linux Kernel image and Device tree blog files in the first microSD partition:
~/linux-3.14.23$ scp arch/arm/boot/dts/acme-arietta.dtb root@arietta.local:/boot ~/linux-3.14.23$ scp arch/arm/boot/zImage root@arietta.local:/boot
Write the Kernel modules in the rootfs (second microSD partition):
~/linux-3.14.23$ rsync -avc modules/lib/. root@arietta.local:/lib/.
If this command doesn't work verify if rsync in installed on your board. Use apt-get install rsync.
At the first access to the board command line update the module dependencies by typing this command:
~# depmod -a