Linux Internals
Summary
This Linux Internals course focuses on the elements of the Linux Kernel that
allow the programmer to build software components which are heavily linked to
the hardware level in computer systems. The Linux operating system benefits
from a modular Kernel structure that allows programmers to focus on a
particular area without interfering with the other parts of the Kernel. Given
that the programmer knows how to use the various interfaces and tools already
built into the Kernel, adding a new feature to the OS is therefore greatly
simplified.
This course allows the student to gain a good general understanding of these
basic tools and interfaces in order to successfully modify features and
develop new aspects of the Linux Kernel. Since this course is based on the
latest versions of the Linux Kernel (version 2.4.x), students will be able to
contribute to the current Linux development efforts.
The course includes many questions to facilitate an interactive learning
experience. There are five major labs that give students a strong practical
experience of the steps involved in Kernel development by focusing on real
world exercises.
Prerequisites
Students are expected to have a good working knowledge of the C programming
language. For example, UNIX signals, processes and filesystem access methods
will be used in this course but will not be extensively explained. An
intermediate knowledge of the UNIX/Linux shell commands is needed. Students
should also know how to use one of the commonly used UNIX editors (Vi, Emacs
or others).
Experience with the basic data structures (arrays, linked lists, etc.) is
also necessary. Some sections of the course involve the assembly programming
language, but the instructor will assume no prior knowledge of the assembly
language.
Course Objectives
On completion of this course, the student should be able to
Install and configure the Linux Kernel.
Understand the structure under which the Linux Kernel was built and continues to evolve.
Gain an understanding of the tasks that we use the Kernel for.
Modify, test and implement new features in the Linux Kernel.
Identify the difference between user space and Kernel space on the Linux operating system, and understand how we can link these two levels.
Be able to use the various hardware abstraction levels that the Kernel makes available to the programmer, in order to produce code which is both architecture and version independent.
Distinguish the differences between the version 2.4 and 2.2 of the Linux Kernel.
Length
5 Days
Format
Instructor-led course, with practical computer-based exercises.
Course Outline
Hands-on
Day 1: Basic Kernel configuration, building and testing.
Day 2: Filesystem internals
Day 3: Implementing a new system call and integrating it in the Kernel
Day 4: Device driver development: design and implementation
Day 5: Making modules out of device driver
Hardware and Software Requirements
This course requires each student to have access to a computer, typically a
233 MHz Pentium containing 64 MB or RAM, or better.
These workstations should be able to run on RedHat Linux 7.0. Prior to the
training session, the training center should make sure that RedHat works
perfectly on the workstations in order to avoid wasted time on first day of
training.
The computers used by the students should be hooked together on a local
Ethernet network (10BaseT or better). Again, the training center should make
sure that the network cards are compatible with Linux. Internet access from
the workstations could be helpful but is not essential. An Internet access
should be made available for the instructor.
Finally, the students usually benefit greatly from presentations done with a
LCD projector. This course involves a large amount of code being presented
to students, so this aspect makes a LCD projector almost a necessity.
Notice: Undefined index: HTTP_REFERER in /var/www/datadeliverance/inc/trademarks.inc on line 3
Notice: Undefined index: HTTP_REFERER in /var/www/datadeliverance/inc/trademarks.inc on line 4
Notice: Undefined variable: REMOTE_USER in /var/www/datadeliverance/inc/trademarks.inc on line 7
Notice: Undefined index: HTTP_REFERER in /var/www/datadeliverance/inc/trademarks.inc on line 7
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
PL/SQL and SQL*Plus are trademarks or registered trademarks of Oracle
Corporation. Microsoft is either a registered trademark or trademark of Microsoft
Corporation in the United States and/or other countries. MVS is a registered
trademark of the International Business Machines Corp. in the U.S. or other
countries or both. Motif, OSF/1, UNIX, and the "X Device" are registered
trademarks and IT DialTone and The Open Group are trademarks of The Open Group
in the U.S. and other countries. All other trademarks are the property of
their respective owners.