SlideShare a Scribd company logo
Building Embedded Linux
(Full Tutorial for ARM)
Information Technology Institute (ITI)
Sherif Mousa
Embedded Linux @ Information Technology Institute 1
2Embedded Linux @ Information Technology Institute
Using Linux in an
embedded project is easier, and
more fun, than ever 
Tips for Linux
• Read instructions and tips carefully.
• Always read error messages carefully, in
particular the first one which is issued.
• Never stay stuck with a strange problem more
than 5 minutes.
• If you ran commands from a root shell by
mistake, your regular user may no longer be able
to handle the corresponding generated files. In
this case, use the chown –R command to give the
new files back to your regular user.
3Embedded Linux @ Information Technology Institute
Tips for Linux
• You should only use the root user for
operations that require super-user privileges,
such as: mounting a file system, loading a
kernel module, changing file ownership,
configuring the network. Most regular tasks
(such as downloading, extracting sources,
compiling...) can be done as a regular user.
4Embedded Linux @ Information Technology Institute
5
Hardware for Linux systems
Embedded Linux @ Information Technology Institute
Processor and Arch.
• The Linux kernel and most other architecture-
dependent component support a wide range
of 32 and 64 bits architectures
– x86 and x86-64, as found on PC platforms, but
also embedded systems (multimedia, industrial)
– ARM, with hundreds of different SoC (multimedia,
industrial)
– PowerPC (mainly real-time, industrial
applications)
6Embedded Linux @ Information Technology Institute
RAM & Storage
• RAM: a very basic Linux system can work within 8
MB of RAM, but a more realistic system will
usually require at least 32 MB of RAM. Depends
on the type and size of applications.
• Storage: a very basic Linux system can work
within 4 MB of storage, but usually more is
needed.
– Flash storage is supported, both NAND and NOR flash,
with specific filesystems.
– Block storage including SD/MMC cards and eMMC.
7Embedded Linux @ Information Technology Institute
Communication
• The Linux kernel has support for many common
communication busses
– USB
– SPI (Serial Peripheral Interface)
– CAN (Controller Area Network)
– 1-wire
• And also extensive networking support
– Ethernet, Wi, Bluetooth, CAN, etc.
– IPv4, IPv6, TCP, UDP, etc.
– Firewalling, advanced routing.
8Embedded Linux @ Information Technology Institute
Types of HW platforms
• Evaluation platforms from the SoC vendor. Usually
expensive, but many peripherals are built-in. Generally
unsuitable for real products.
• Component on Module, a small board with only
CPU/RAM/ash and a few other core components, with
connectors to access all other peripherals. Can be used
to build end products for small to medium quantities.
• Custom platform. Schematics for evaluation boards or
development platforms are more and more commonly
freely available, making it easier to develop custom
platforms. (Open Hardware)
9Embedded Linux @ Information Technology Institute
Tips for HW
• Make sure the hardware you plan to use is
already supported by the Linux kernel, and has an
open-source bootloader.
• Having support in the official versions of the
projects (kernel, bootloader) is a lot better:
quality is better, and new versions are available.
• Some SoC vendors and/or board vendors do not
contribute their changes back to the mainline
Linux kernel.
10Embedded Linux @ Information Technology Institute
11
Software Components
Embedded Linux @ Information Technology Institute
Software Components
• Cross-compilation ToolChain
• Bootloader
• Linux Kernel
• System libraries (C library)
• Filesystem with other libraries & apps.
12Embedded Linux @ Information Technology Institute
Embedded Linux Output
• Board Support Package development
– A BSP contains a bootloader and kernel with the
suitable device drivers for the targeted hardware
• System integration
– Integrate all the components, bootloader, kernel,
third-party libraries and applications and in-house
applications into a working system
• Development of applications
– Normal Linux applications, but using specially chosen
libraries
13Embedded Linux @ Information Technology Institute
Cross-ToolChain
14Embedded Linux @ Information Technology Institute
X86 Binary Target Binary
X86
X86 Target CPU
Source Code
Native ToolChain Cross ToolChain
15
Where to get Cross-ToolChain
Embedded Linux @ Information Technology Institute
Where to get Cross-ToolChain
• http://elinux.org/Toolchains
• Codesourcery, ready-made
– http://www.mentor.com/embedded-
software/codesourcery
• Linaro, ready made
– http://www.linaro.org/
• Buildroot, tool to build
– http://www.buildroot.net/
• Crosstool-NG, tool to build
– http://crosstool-ng.org/
16Embedded Linux @ Information Technology Institute
17
Building Cross-ToolChain
Embedded Linux @ Information Technology Institute
Cross-ToolChain
• Three machines must be distinguished when
discussing toolchain creation
– The build machine, where the toolchain is built.
– The host machine, where the toolchain will be
executed.
– The target machine, where the binaries created
by the toolchain are executed.
18Embedded Linux @ Information Technology Institute
Cross-ToolChain components
19Embedded Linux @ Information Technology Institute
GDB (optional)
GCC CompilerC/C++ libs
binutils Kernel Headers
Binutils
• Binutils is a set of tools to generate and
manipulate binaries for a given CPU architecture
– as, the assembler, that generates binary code from
assembler source code
– ld, the linker
– ar, ranlib, to generate .a archives, used for libraries
– objdump, readelf, size, nm, strings, to inspect
binaries. Very useful analysis tools!
– strip, to strip useless parts of binaries in order to
reduce their size
• http://www.gnu.org/software/binutils/
20Embedded Linux @ Information Technology Institute
Kernel Headers
• The C library and compiled programs needs to
interact with the kernel
– Available system calls and their numbers
– Constant definitions
– Data structures, etc.
• Therefore, compiling the C library requires
kernel headers, and many applications also
require them.
21Embedded Linux @ Information Technology Institute
GCC
• GNU Compiler Collection, the famous free
software compiler
• Can compile C, C++, Ada, Fortran, Java,
Objective-C, Objective-C++, and generate
code for a large number of CPU architectures,
including ARM, AVR, Blackfin, CRIS, FRV, M32,
MIPS, MN10300, PowerPC, SH, v850, i386, x86
64, IA64, Xtensa, etc.
• http://gcc.gnu.org/
22Embedded Linux @ Information Technology Institute
C Library
• The C library is
– Interface between the applications and the kernel
– Provides the well-known standard C API to ease
application development
• Several C libraries are available:
– glibc, uClibc, eglibc, dietlibc, newlib, etc.
• The choice of the C library must be made at the
time of the cross-compiling toolchain generation,
as the GCC compiler is compiled against a specific
c C library.
• We will use uClibc: http://www.uclibc.org/
23Embedded Linux @ Information Technology Institute
24
crosstool-ng
Embedded Linux @ Information Technology Institute
crosstool-ng
• Don’t forget the required pkgs
– sudo apt-get install ncurses-dev bison texinfo
flex autoconf automake libtool libexpat1-dev
libncurses5-dev patch curl cvs build-essential
subversion gawk python-dev gperf
• http://crosstool-ng.org
• Untar the source code, then build it
– ./configure --enable-local
– make
25Embedded Linux @ Information Technology Institute
crosstool-ng
• You can use help
– ./ct-ng help
– ./ct-ng list-samples
• We will use
– ./ct-ng arm-unknown-linux-uclibcgnueabi
26Embedded Linux @ Information Technology Institute
crosstool-ng
• You can configure it again
– ./ct-ng menuconfig
• We will use
– ./ct-ng arm-unknown-linux-uclibcgnueabi
• In Path and misc options:
– Prefix directory
– Change Maximum log level to see to DEBUG
• In Toolchain options:
– Set Tuple’s alias to arm-linux
27Embedded Linux @ Information Technology Institute
crosstool-ng
• In Debug facilities:
• Enable gdb, strace and ltrace.
• Remove the other options (dmalloc and
duma).
• In gdb options:
– Make sure that the Cross-gdb and Build a static
gdbserver options are enabled; the other options
are not needed.
– Set gdb version to 7.4.1
28Embedded Linux @ Information Technology Institute
crosstool-ng
• Build
– Create in you home directory
• src >> save the tarballs it will download
• x-tools >> the outbut
– ./ct-ng build
And wait
29Embedded Linux @ Information Technology Institute
30
Using Cross-ToolChain
Embedded Linux @ Information Technology Institute
Using Cross-ToolChain
• Now you have your own built toolchain from
ARM arch. Inside x-tools directory.
• Add the bin directory to your PATH
environment variable to be able to use it from
anywhere
export PATH=$PATH:PATH_TO_BIN_INSIDE_TOOLCHAIN
• You can add this line to bash startup script to
be global every time you log in.
sudo gedit /etc/bash.bashrc
31Embedded Linux @ Information Technology Institute
Compile a simple program
• Compile any C program to check the toolchain
arm-linux-gcc hello.c -o hello
• Or by using static compiling
arm-linux-gcc -static hello.c -o hellostatic
• You can view the file type
file hello
32Embedded Linux @ Information Technology Institute
33
Kernel Compilation
Embedded Linux @ Information Technology Institute
Kernel Compilation
• Where to get Linux Kernel source
– https://www.kernel.org/
• You can download any Linux version according
to your needs.
34Embedded Linux @ Information Technology Institute
Kernel patching
• Changes to the kernel sources are distributed
as patch files. The patch utility is used to apply
a series of edits to a set of source files. So, for
example, if you have the 2.0.29 kernel source
tree and you wanted to move to the 2.0.30
source tree, you would obtain the 2.0.30
patch file and apply the patches (edits) to that
source tree:
patch -p1 < patch-2.0.30
35Embedded Linux @ Information Technology Institute
Linux source dir
• arch
– The arch subdirectory contains all of the architecture specific kernel
code. It has further subdirectories, one per supported architecture, for
example i386 and alpha.
• include
– The include subdirectory contains most of the include files needed to
build the kernel code. It too has further subdirectories including one
for every architecture supported. The include/asm subdirectory is a
soft link to the real include directory needed for this architecture, for
example include/asm-i386. To change architectures you need to edit
the kernel makefile and rerun the Linux kernel configuration program.
• init
– This directory contains the initialization code for the kernel and it is a
very good place to start looking at how the kernel works.
36Embedded Linux @ Information Technology Institute
Linux source dir
• mm
– This directory contains all of the memory management code. The
architecture specific memory management code lives down in
arch/*/mm/, for example arch/i386/mm/fault.c.
• drivers
– All of the system's device drivers live in this directory. They are further
sub-divided into classes of device driver, for example block.
• ipc
– This directory contains the kernels inter-process communications
code.
• modules
– This is simply a directory used to hold built modules.
• fs
– All of the file system code. This is further sub-divided into directories,
one per supported file system, for example vfat and ext2.
37Embedded Linux @ Information Technology Institute
Linux source dir
• kernel
– The main kernel code. Again, the architecture specific
kernel code is in arch/*/kernel.
• net
– The kernel's networking code.
• lib
– This directory contains the kernel's library code. The
architecture specific library code can be found in
arch/*/lib/.
• scripts
– This directory contains the scripts (for example awk and tk
scripts) that are used when the kernel is configured.
38Embedded Linux @ Information Technology Institute
Kernel Compilation
• Configure the Linux kernel
make vexpress_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
• Edit the default configuration
make menuconfig
• Build the kernel image
make all ARCH=arm CROSS_COMPILE=arm-linux-
• You will find the kernel image in
arch/arm/boot/zImage
39Embedded Linux @ Information Technology Institute
40
HW Emulators
Embedded Linux @ Information Technology Institute
HW Emulators
• Hardware emulation is the process of
imitating the behavior of one or more pieces
of hardware (typically a system under design)
with another piece of hardware, typically a
special purpose emulation system.
41Embedded Linux @ Information Technology Institute
Qemu
• QEMU is a generic and open source machine
emulator and virtualizer.
• QEMU lets you run another operating system on
top of your existing OS.
• When used as a machine emulator, QEMU can
run OSes and programs made for one machine
(e.g. an ARM board) on a different machine (e.g.
your own PC). By using dynamic translation, it
achieves very good performance.
42Embedded Linux @ Information Technology Institute
Qemu
• Install Qemu on Ubuntu
sudo apt-get install qemu-system
• Test Qemu running
qemu-system-i386 -m 256M –kernel 
/boot/vmlinuz-3.2.0-57-generic-pae 
-initrd /boot/initrd.img-3.2.0-57-generic-pae
• This command will run your current installed
Linux kernel inside Qemu emulator
43Embedded Linux @ Information Technology Institute
Qemu ARM
• To run the ARM kernel inside Qemu
• We need the zImage Kernel & initrd image
filesystem with init process to run
• Compile a simple C program
arm-linux-gcc -static hello.c -o init
• Generate the initramfs image
echo init | cpio -o --format=newc > initramfs
44Embedded Linux @ Information Technology Institute
Qemu ARM
• Put the zImage & initramfs together and
execute the command
qemu-system-arm -M vexpress-a9 
-kernel zImage -initrd initramfs 
-append "console=tty1“
• The Linux system should start and execute the
single process init.
45Embedded Linux @ Information Technology Institute
46
Building full ARM system with Busybox
Embedded Linux @ Information Technology Institute
Linux Kernel
• The same zImage kernel already built.
47Embedded Linux @ Information Technology Institute
Busybox
• Inside Busybox source dir, configure & cross-
compile for ARM (static)
make ARCH=arm CROSS_COMPILE=arm-linux- defconfig
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
Busybox Settings -->
Build Options -->
Build Busybox as a static binary (CHECK)
• Command to start building
make CONFIG_PREFIX=/home/user-name/ARM_SYSTEM_DIR
ARCH=arm CROSS_COMPILE=arm-linux- install
48Embedded Linux @ Information Technology Institute
Complete the filesystem dirs
• Inside the ARM_SYSTEM_DIR
mkdir proc sys dev etc etc/init.d
gedit etc/init.d/rcS
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/mdev –s
• Change the rcS file permissions
chmod +x etc/init.d/rcS
49Embedded Linux @ Information Technology Institute
Create the root fs image file
• Inside the ARM_SYSTEM_DIR
find . | cpio -o --format=newc > ../rootfs.img
cd ..
gzip -c rootfs.img > rootfs.img.gz
• Now you have the kernel image & the root fs
image compressed
50Embedded Linux @ Information Technology Institute
Run Qemu emulator
qemu-system-arm -M vexpress-a9 
-kernel zImage -initrd rootfs.img.gz 
-append "root=/dev/ram rdinit=/bin/sh“
• Now you got a console running, and can try
any command or app installed.
51Embedded Linux @ Information Technology Institute
eng.sherif.mosa@gmail.com
http://about.me/shatrix
52Embedded Linux @ Information Technology Institute
Ad

More Related Content

What's hot (20)

Introduction to Modern U-Boot
Introduction to Modern U-BootIntroduction to Modern U-Boot
Introduction to Modern U-Boot
GlobalLogic Ukraine
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
shimosawa
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
Emertxe Information Technologies Pvt Ltd
 
U-Boot - An universal bootloader
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader
Emertxe Information Technologies Pvt Ltd
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
Emertxe Information Technologies Pvt Ltd
 
linux device driver
linux device driverlinux device driver
linux device driver
Rahul Batra
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driver
Vandana Salve
 
Linux Internals - Part III
Linux Internals - Part IIILinux Internals - Part III
Linux Internals - Part III
Emertxe Information Technologies Pvt Ltd
 
Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0Linux Internals - Interview essentials - 1.0
Linux Internals - Interview essentials - 1.0
Emertxe Information Technologies Pvt Ltd
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
 
Introduction to Embedded Systems
Introduction to Embedded Systems Introduction to Embedded Systems
Introduction to Embedded Systems
Emertxe Information Technologies Pvt Ltd
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
QUONTRASOLUTIONS
 
File systems for Embedded Linux
File systems for Embedded LinuxFile systems for Embedded Linux
File systems for Embedded Linux
Emertxe Information Technologies Pvt Ltd
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
艾鍗科技
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
Macpaul Lin
 
Advanced C - Part 1
Advanced C - Part 1 Advanced C - Part 1
Advanced C - Part 1
Emertxe Information Technologies Pvt Ltd
 
The linux networking architecture
The linux networking architectureThe linux networking architecture
The linux networking architecture
hugo lu
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
Houcheng Lin
 
Linux Kernel Image
Linux Kernel ImageLinux Kernel Image
Linux Kernel Image
艾鍗科技
 
Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)
Tushar B Kute
 
Linux Initialization Process (2)
Linux Initialization Process (2)Linux Initialization Process (2)
Linux Initialization Process (2)
shimosawa
 
linux device driver
linux device driverlinux device driver
linux device driver
Rahul Batra
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driver
Vandana Salve
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
QUONTRASOLUTIONS
 
U boot porting guide for SoC
U boot porting guide for SoCU boot porting guide for SoC
U boot porting guide for SoC
Macpaul Lin
 
The linux networking architecture
The linux networking architectureThe linux networking architecture
The linux networking architecture
hugo lu
 
Uboot startup sequence
Uboot startup sequenceUboot startup sequence
Uboot startup sequence
Houcheng Lin
 
Linux Kernel Image
Linux Kernel ImageLinux Kernel Image
Linux Kernel Image
艾鍗科技
 
Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)
Tushar B Kute
 

Similar to Building Embedded Linux Full Tutorial for ARM (20)

Building Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionBuilding Embedded Linux Systems Introduction
Building Embedded Linux Systems Introduction
Sherif Mousa
 
Lect 1_Embedded Linux Embedded RTOS ppt
Lect 1_Embedded Linux Embedded RTOS  pptLect 1_Embedded Linux Embedded RTOS  ppt
Lect 1_Embedded Linux Embedded RTOS ppt
Varsha506533
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded Linux
Tushar B Kute
 
Embedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoEmbedded Linux from Scratch to Yocto
Embedded Linux from Scratch to Yocto
Sherif Mousa
 
Linux for embedded_systems
Linux for embedded_systemsLinux for embedded_systems
Linux for embedded_systems
Vandana Salve
 
Intro to linux
Intro to linux Intro to linux
Intro to linux
Islam Nabil
 
Embedded linux
Embedded linuxEmbedded linux
Embedded linux
Wingston
 
Building Embedded Linux
Building Embedded LinuxBuilding Embedded Linux
Building Embedded Linux
Sherif Mousa
 
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B KuteUnit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Tushar B Kute
 
Hands on OpenCL
Hands on OpenCLHands on OpenCL
Hands on OpenCL
Vladimir Starostenkov
 
Embedded Linux primer
Embedded Linux primerEmbedded Linux primer
Embedded Linux primer
Drew Fustini
 
Lec 10-linux-review
Lec 10-linux-reviewLec 10-linux-review
Lec 10-linux-review
abinaya m
 
The Linux System
The Linux SystemThe Linux System
The Linux System
husnaina_akhtar
 
Embedded Linux - Building toolchain
Embedded Linux - Building toolchainEmbedded Linux - Building toolchain
Embedded Linux - Building toolchain
Emertxe Information Technologies Pvt Ltd
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
Akhil Kaushik
 
NXP IMX6 Processor - Embedded Linux
NXP IMX6 Processor - Embedded LinuxNXP IMX6 Processor - Embedded Linux
NXP IMX6 Processor - Embedded Linux
NEEVEE Technologies
 
Linux – an introduction
Linux – an introductionLinux – an introduction
Linux – an introduction
Wingston
 
Introduction to EasyBuild: Tutorial Part 1
Introduction to EasyBuild: Tutorial Part 1Introduction to EasyBuild: Tutorial Part 1
Introduction to EasyBuild: Tutorial Part 1
inside-BigData.com
 
embedded-linux-120203.pdf
embedded-linux-120203.pdfembedded-linux-120203.pdf
embedded-linux-120203.pdf
twtester
 
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
melbats
 
Building Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionBuilding Embedded Linux Systems Introduction
Building Embedded Linux Systems Introduction
Sherif Mousa
 
Lect 1_Embedded Linux Embedded RTOS ppt
Lect 1_Embedded Linux Embedded RTOS  pptLect 1_Embedded Linux Embedded RTOS  ppt
Lect 1_Embedded Linux Embedded RTOS ppt
Varsha506533
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded Linux
Tushar B Kute
 
Embedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoEmbedded Linux from Scratch to Yocto
Embedded Linux from Scratch to Yocto
Sherif Mousa
 
Linux for embedded_systems
Linux for embedded_systemsLinux for embedded_systems
Linux for embedded_systems
Vandana Salve
 
Embedded linux
Embedded linuxEmbedded linux
Embedded linux
Wingston
 
Building Embedded Linux
Building Embedded LinuxBuilding Embedded Linux
Building Embedded Linux
Sherif Mousa
 
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B KuteUnit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Tushar B Kute
 
Embedded Linux primer
Embedded Linux primerEmbedded Linux primer
Embedded Linux primer
Drew Fustini
 
Lec 10-linux-review
Lec 10-linux-reviewLec 10-linux-review
Lec 10-linux-review
abinaya m
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
Akhil Kaushik
 
NXP IMX6 Processor - Embedded Linux
NXP IMX6 Processor - Embedded LinuxNXP IMX6 Processor - Embedded Linux
NXP IMX6 Processor - Embedded Linux
NEEVEE Technologies
 
Linux – an introduction
Linux – an introductionLinux – an introduction
Linux – an introduction
Wingston
 
Introduction to EasyBuild: Tutorial Part 1
Introduction to EasyBuild: Tutorial Part 1Introduction to EasyBuild: Tutorial Part 1
Introduction to EasyBuild: Tutorial Part 1
inside-BigData.com
 
embedded-linux-120203.pdf
embedded-linux-120203.pdfembedded-linux-120203.pdf
embedded-linux-120203.pdf
twtester
 
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
melbats
 
Ad

More from Sherif Mousa (10)

Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
Sherif Mousa
 
Building Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchBuilding Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 Arch
Sherif Mousa
 
Android Session "g | Canal Cities" event
Android Session "g | Canal Cities" eventAndroid Session "g | Canal Cities" event
Android Session "g | Canal Cities" event
Sherif Mousa
 
كيف تفشل
كيف تفشلكيف تفشل
كيف تفشل
Sherif Mousa
 
Operating systems Basics
Operating systems BasicsOperating systems Basics
Operating systems Basics
Sherif Mousa
 
linux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixlinux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrix
Sherif Mousa
 
005 skyeye
005 skyeye005 skyeye
005 skyeye
Sherif Mousa
 
003 scripting
003 scripting003 scripting
003 scripting
Sherif Mousa
 
001 linux revision
001 linux revision001 linux revision
001 linux revision
Sherif Mousa
 
Smile
SmileSmile
Smile
Sherif Mousa
 
Yocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution MakerYocto - Embedded Linux Distribution Maker
Yocto - Embedded Linux Distribution Maker
Sherif Mousa
 
Building Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 ArchBuilding Mini Embedded Linux System for X86 Arch
Building Mini Embedded Linux System for X86 Arch
Sherif Mousa
 
Android Session "g | Canal Cities" event
Android Session "g | Canal Cities" eventAndroid Session "g | Canal Cities" event
Android Session "g | Canal Cities" event
Sherif Mousa
 
Operating systems Basics
Operating systems BasicsOperating systems Basics
Operating systems Basics
Sherif Mousa
 
linux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixlinux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrix
Sherif Mousa
 
001 linux revision
001 linux revision001 linux revision
001 linux revision
Sherif Mousa
 
Ad

Recently uploaded (20)

TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 

Building Embedded Linux Full Tutorial for ARM

  • 1. Building Embedded Linux (Full Tutorial for ARM) Information Technology Institute (ITI) Sherif Mousa Embedded Linux @ Information Technology Institute 1
  • 2. 2Embedded Linux @ Information Technology Institute Using Linux in an embedded project is easier, and more fun, than ever 
  • 3. Tips for Linux • Read instructions and tips carefully. • Always read error messages carefully, in particular the first one which is issued. • Never stay stuck with a strange problem more than 5 minutes. • If you ran commands from a root shell by mistake, your regular user may no longer be able to handle the corresponding generated files. In this case, use the chown –R command to give the new files back to your regular user. 3Embedded Linux @ Information Technology Institute
  • 4. Tips for Linux • You should only use the root user for operations that require super-user privileges, such as: mounting a file system, loading a kernel module, changing file ownership, configuring the network. Most regular tasks (such as downloading, extracting sources, compiling...) can be done as a regular user. 4Embedded Linux @ Information Technology Institute
  • 5. 5 Hardware for Linux systems Embedded Linux @ Information Technology Institute
  • 6. Processor and Arch. • The Linux kernel and most other architecture- dependent component support a wide range of 32 and 64 bits architectures – x86 and x86-64, as found on PC platforms, but also embedded systems (multimedia, industrial) – ARM, with hundreds of different SoC (multimedia, industrial) – PowerPC (mainly real-time, industrial applications) 6Embedded Linux @ Information Technology Institute
  • 7. RAM & Storage • RAM: a very basic Linux system can work within 8 MB of RAM, but a more realistic system will usually require at least 32 MB of RAM. Depends on the type and size of applications. • Storage: a very basic Linux system can work within 4 MB of storage, but usually more is needed. – Flash storage is supported, both NAND and NOR flash, with specific filesystems. – Block storage including SD/MMC cards and eMMC. 7Embedded Linux @ Information Technology Institute
  • 8. Communication • The Linux kernel has support for many common communication busses – USB – SPI (Serial Peripheral Interface) – CAN (Controller Area Network) – 1-wire • And also extensive networking support – Ethernet, Wi, Bluetooth, CAN, etc. – IPv4, IPv6, TCP, UDP, etc. – Firewalling, advanced routing. 8Embedded Linux @ Information Technology Institute
  • 9. Types of HW platforms • Evaluation platforms from the SoC vendor. Usually expensive, but many peripherals are built-in. Generally unsuitable for real products. • Component on Module, a small board with only CPU/RAM/ash and a few other core components, with connectors to access all other peripherals. Can be used to build end products for small to medium quantities. • Custom platform. Schematics for evaluation boards or development platforms are more and more commonly freely available, making it easier to develop custom platforms. (Open Hardware) 9Embedded Linux @ Information Technology Institute
  • 10. Tips for HW • Make sure the hardware you plan to use is already supported by the Linux kernel, and has an open-source bootloader. • Having support in the official versions of the projects (kernel, bootloader) is a lot better: quality is better, and new versions are available. • Some SoC vendors and/or board vendors do not contribute their changes back to the mainline Linux kernel. 10Embedded Linux @ Information Technology Institute
  • 11. 11 Software Components Embedded Linux @ Information Technology Institute
  • 12. Software Components • Cross-compilation ToolChain • Bootloader • Linux Kernel • System libraries (C library) • Filesystem with other libraries & apps. 12Embedded Linux @ Information Technology Institute
  • 13. Embedded Linux Output • Board Support Package development – A BSP contains a bootloader and kernel with the suitable device drivers for the targeted hardware • System integration – Integrate all the components, bootloader, kernel, third-party libraries and applications and in-house applications into a working system • Development of applications – Normal Linux applications, but using specially chosen libraries 13Embedded Linux @ Information Technology Institute
  • 14. Cross-ToolChain 14Embedded Linux @ Information Technology Institute X86 Binary Target Binary X86 X86 Target CPU Source Code Native ToolChain Cross ToolChain
  • 15. 15 Where to get Cross-ToolChain Embedded Linux @ Information Technology Institute
  • 16. Where to get Cross-ToolChain • http://elinux.org/Toolchains • Codesourcery, ready-made – http://www.mentor.com/embedded- software/codesourcery • Linaro, ready made – http://www.linaro.org/ • Buildroot, tool to build – http://www.buildroot.net/ • Crosstool-NG, tool to build – http://crosstool-ng.org/ 16Embedded Linux @ Information Technology Institute
  • 17. 17 Building Cross-ToolChain Embedded Linux @ Information Technology Institute
  • 18. Cross-ToolChain • Three machines must be distinguished when discussing toolchain creation – The build machine, where the toolchain is built. – The host machine, where the toolchain will be executed. – The target machine, where the binaries created by the toolchain are executed. 18Embedded Linux @ Information Technology Institute
  • 19. Cross-ToolChain components 19Embedded Linux @ Information Technology Institute GDB (optional) GCC CompilerC/C++ libs binutils Kernel Headers
  • 20. Binutils • Binutils is a set of tools to generate and manipulate binaries for a given CPU architecture – as, the assembler, that generates binary code from assembler source code – ld, the linker – ar, ranlib, to generate .a archives, used for libraries – objdump, readelf, size, nm, strings, to inspect binaries. Very useful analysis tools! – strip, to strip useless parts of binaries in order to reduce their size • http://www.gnu.org/software/binutils/ 20Embedded Linux @ Information Technology Institute
  • 21. Kernel Headers • The C library and compiled programs needs to interact with the kernel – Available system calls and their numbers – Constant definitions – Data structures, etc. • Therefore, compiling the C library requires kernel headers, and many applications also require them. 21Embedded Linux @ Information Technology Institute
  • 22. GCC • GNU Compiler Collection, the famous free software compiler • Can compile C, C++, Ada, Fortran, Java, Objective-C, Objective-C++, and generate code for a large number of CPU architectures, including ARM, AVR, Blackfin, CRIS, FRV, M32, MIPS, MN10300, PowerPC, SH, v850, i386, x86 64, IA64, Xtensa, etc. • http://gcc.gnu.org/ 22Embedded Linux @ Information Technology Institute
  • 23. C Library • The C library is – Interface between the applications and the kernel – Provides the well-known standard C API to ease application development • Several C libraries are available: – glibc, uClibc, eglibc, dietlibc, newlib, etc. • The choice of the C library must be made at the time of the cross-compiling toolchain generation, as the GCC compiler is compiled against a specific c C library. • We will use uClibc: http://www.uclibc.org/ 23Embedded Linux @ Information Technology Institute
  • 24. 24 crosstool-ng Embedded Linux @ Information Technology Institute
  • 25. crosstool-ng • Don’t forget the required pkgs – sudo apt-get install ncurses-dev bison texinfo flex autoconf automake libtool libexpat1-dev libncurses5-dev patch curl cvs build-essential subversion gawk python-dev gperf • http://crosstool-ng.org • Untar the source code, then build it – ./configure --enable-local – make 25Embedded Linux @ Information Technology Institute
  • 26. crosstool-ng • You can use help – ./ct-ng help – ./ct-ng list-samples • We will use – ./ct-ng arm-unknown-linux-uclibcgnueabi 26Embedded Linux @ Information Technology Institute
  • 27. crosstool-ng • You can configure it again – ./ct-ng menuconfig • We will use – ./ct-ng arm-unknown-linux-uclibcgnueabi • In Path and misc options: – Prefix directory – Change Maximum log level to see to DEBUG • In Toolchain options: – Set Tuple’s alias to arm-linux 27Embedded Linux @ Information Technology Institute
  • 28. crosstool-ng • In Debug facilities: • Enable gdb, strace and ltrace. • Remove the other options (dmalloc and duma). • In gdb options: – Make sure that the Cross-gdb and Build a static gdbserver options are enabled; the other options are not needed. – Set gdb version to 7.4.1 28Embedded Linux @ Information Technology Institute
  • 29. crosstool-ng • Build – Create in you home directory • src >> save the tarballs it will download • x-tools >> the outbut – ./ct-ng build And wait 29Embedded Linux @ Information Technology Institute
  • 30. 30 Using Cross-ToolChain Embedded Linux @ Information Technology Institute
  • 31. Using Cross-ToolChain • Now you have your own built toolchain from ARM arch. Inside x-tools directory. • Add the bin directory to your PATH environment variable to be able to use it from anywhere export PATH=$PATH:PATH_TO_BIN_INSIDE_TOOLCHAIN • You can add this line to bash startup script to be global every time you log in. sudo gedit /etc/bash.bashrc 31Embedded Linux @ Information Technology Institute
  • 32. Compile a simple program • Compile any C program to check the toolchain arm-linux-gcc hello.c -o hello • Or by using static compiling arm-linux-gcc -static hello.c -o hellostatic • You can view the file type file hello 32Embedded Linux @ Information Technology Institute
  • 33. 33 Kernel Compilation Embedded Linux @ Information Technology Institute
  • 34. Kernel Compilation • Where to get Linux Kernel source – https://www.kernel.org/ • You can download any Linux version according to your needs. 34Embedded Linux @ Information Technology Institute
  • 35. Kernel patching • Changes to the kernel sources are distributed as patch files. The patch utility is used to apply a series of edits to a set of source files. So, for example, if you have the 2.0.29 kernel source tree and you wanted to move to the 2.0.30 source tree, you would obtain the 2.0.30 patch file and apply the patches (edits) to that source tree: patch -p1 < patch-2.0.30 35Embedded Linux @ Information Technology Institute
  • 36. Linux source dir • arch – The arch subdirectory contains all of the architecture specific kernel code. It has further subdirectories, one per supported architecture, for example i386 and alpha. • include – The include subdirectory contains most of the include files needed to build the kernel code. It too has further subdirectories including one for every architecture supported. The include/asm subdirectory is a soft link to the real include directory needed for this architecture, for example include/asm-i386. To change architectures you need to edit the kernel makefile and rerun the Linux kernel configuration program. • init – This directory contains the initialization code for the kernel and it is a very good place to start looking at how the kernel works. 36Embedded Linux @ Information Technology Institute
  • 37. Linux source dir • mm – This directory contains all of the memory management code. The architecture specific memory management code lives down in arch/*/mm/, for example arch/i386/mm/fault.c. • drivers – All of the system's device drivers live in this directory. They are further sub-divided into classes of device driver, for example block. • ipc – This directory contains the kernels inter-process communications code. • modules – This is simply a directory used to hold built modules. • fs – All of the file system code. This is further sub-divided into directories, one per supported file system, for example vfat and ext2. 37Embedded Linux @ Information Technology Institute
  • 38. Linux source dir • kernel – The main kernel code. Again, the architecture specific kernel code is in arch/*/kernel. • net – The kernel's networking code. • lib – This directory contains the kernel's library code. The architecture specific library code can be found in arch/*/lib/. • scripts – This directory contains the scripts (for example awk and tk scripts) that are used when the kernel is configured. 38Embedded Linux @ Information Technology Institute
  • 39. Kernel Compilation • Configure the Linux kernel make vexpress_defconfig ARCH=arm CROSS_COMPILE=arm-linux- • Edit the default configuration make menuconfig • Build the kernel image make all ARCH=arm CROSS_COMPILE=arm-linux- • You will find the kernel image in arch/arm/boot/zImage 39Embedded Linux @ Information Technology Institute
  • 40. 40 HW Emulators Embedded Linux @ Information Technology Institute
  • 41. HW Emulators • Hardware emulation is the process of imitating the behavior of one or more pieces of hardware (typically a system under design) with another piece of hardware, typically a special purpose emulation system. 41Embedded Linux @ Information Technology Institute
  • 42. Qemu • QEMU is a generic and open source machine emulator and virtualizer. • QEMU lets you run another operating system on top of your existing OS. • When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performance. 42Embedded Linux @ Information Technology Institute
  • 43. Qemu • Install Qemu on Ubuntu sudo apt-get install qemu-system • Test Qemu running qemu-system-i386 -m 256M –kernel /boot/vmlinuz-3.2.0-57-generic-pae -initrd /boot/initrd.img-3.2.0-57-generic-pae • This command will run your current installed Linux kernel inside Qemu emulator 43Embedded Linux @ Information Technology Institute
  • 44. Qemu ARM • To run the ARM kernel inside Qemu • We need the zImage Kernel & initrd image filesystem with init process to run • Compile a simple C program arm-linux-gcc -static hello.c -o init • Generate the initramfs image echo init | cpio -o --format=newc > initramfs 44Embedded Linux @ Information Technology Institute
  • 45. Qemu ARM • Put the zImage & initramfs together and execute the command qemu-system-arm -M vexpress-a9 -kernel zImage -initrd initramfs -append "console=tty1“ • The Linux system should start and execute the single process init. 45Embedded Linux @ Information Technology Institute
  • 46. 46 Building full ARM system with Busybox Embedded Linux @ Information Technology Institute
  • 47. Linux Kernel • The same zImage kernel already built. 47Embedded Linux @ Information Technology Institute
  • 48. Busybox • Inside Busybox source dir, configure & cross- compile for ARM (static) make ARCH=arm CROSS_COMPILE=arm-linux- defconfig make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig Busybox Settings --> Build Options --> Build Busybox as a static binary (CHECK) • Command to start building make CONFIG_PREFIX=/home/user-name/ARM_SYSTEM_DIR ARCH=arm CROSS_COMPILE=arm-linux- install 48Embedded Linux @ Information Technology Institute
  • 49. Complete the filesystem dirs • Inside the ARM_SYSTEM_DIR mkdir proc sys dev etc etc/init.d gedit etc/init.d/rcS #!/bin/sh mount -t proc none /proc mount -t sysfs none /sys /sbin/mdev –s • Change the rcS file permissions chmod +x etc/init.d/rcS 49Embedded Linux @ Information Technology Institute
  • 50. Create the root fs image file • Inside the ARM_SYSTEM_DIR find . | cpio -o --format=newc > ../rootfs.img cd .. gzip -c rootfs.img > rootfs.img.gz • Now you have the kernel image & the root fs image compressed 50Embedded Linux @ Information Technology Institute
  • 51. Run Qemu emulator qemu-system-arm -M vexpress-a9 -kernel zImage -initrd rootfs.img.gz -append "root=/dev/ram rdinit=/bin/sh“ • Now you got a console running, and can try any command or app installed. 51Embedded Linux @ Information Technology Institute