Linux kernel Module and driver Programming for x86

Comprehensive Guide to System call and Linux internals on x86 platform
Rating: 4.1 out of 5 (382 ratings)
12,070 students
Linux kernel Module and driver Programming for x86
Rating: 4.1 out of 5 (382 ratings)
12,143 students
Write modules to insert in kernel to alter the behavior and functionality of Linux kernel.
Student should be able to compile linux kernel from git source(kernel.org) or download the standalone kernel for compilation
The course introduces the concept of device driver and Major and minor number to effectively write a linux driver as a module or in kernel
In depth explanation of jiffies and utilization of jiffies for getting either timer tick or clock for further work in those areas
Understanding of device file, node, major number, minor number and numerous calls with respect to rebuffs
Understanding of kernel file system and data structure like proc, debuts etc for easy kernel debugging

Requirements

  • Basic understand of c language and working knowledge of Operating system is needed
  • Hands on Bash shell and Linux command line tools and utilities are needed to effectively utilize the concepts learned in these lecture series.
Description

This course guides a student for the basic understanding of Linux Kernels

Familiarize students with kernel compilations and different ways to achieve the same.

Introduce the character device Driver and explained in details like copy_to_user and copy_from_user

Explained the concept of Jiffies and a practical example of working Jiffies code

Explained in depth about debugfs and its various calls.

Explained in details with the help of power point as to how system call works.

The course provides the various way a system call can be invoked using software interrupt or directly invoking the syscall layer.

At the end of this course students would be well versed in kernel compilation and writing modules on Linux kernel.

This lecture series also guides students as to how to effectively get involved with Linux open source community and write patches which would be accepted upstream.

The course intends to build a niche in students who are devoted in kernel programming but couldn't gather enough resource at single location to build a career out of it.
The intention is to give a build blocks to students to understand the kernel, driver, file system, compilation, module insertion, deletion, device file, communication between user level and kernel level and how to code from kernel perspective rather than general c code.

In depth details of the explanation of concepts to communicate with kernel using either copy_from_user, copy_to_user or using the debugfs or proc fs.

Explained in details how to use virtual machine like VMware fusion of VMware workstation to setup a system for Linux kernel compilation and programming as virtual machines we can take snapshots and if there is problem we can simply revert to older snapshots for quick development, without corrupting the entire Operating system.


Who this course is for:
  • Students and professional who is willing to make a career in Linux internals and operating system.
  • Linux enthusiastic who would like to see what is going on in kernel level either due to hobby or curiosity and wanted to build a career out of it
  • Students who wanted to understand the kernel of other operating system but couldn't do so because of closed source, can learn linux and apply the almost similar concept in other OS
Curriculum
1 section • 14 lectures • 3h 2m total length
  • Introduction and Ubuntu_installation in vmware fusion
  • kernel compilation Part1
  • kernel compilation Part2
  • kernel compilation Part3
  • Hello World Module Part 1
  • Hello World Module Part 2
  • Character Device driver Part 1
  • Character Device driver Part 2
  • Character Device driver Part 3
  • Character Device driver Part 4
  • Debugfs
  • How to Patch Linux kernel
  • Jiffies Driver
  • How System Call works in Linux

Instructor
Senior Software Engineer
Shakil khan
  • 4.2 Instructor Rating
  • 3,827 Reviews
  • 84,059 Students
  • 9 Courses

Over 15 years of total experience in software development, focusing on C/C++/Linux/Symbian C++, different flavors of UNIX (SCO, HP-UX, SunOS, AIX and RedHat Linux). Knowledge of LINUX Internals/ System programming/Inter Process Communication  and Shell Scripting.

Worked on Symbian OS features like TLS/descriptors/ threads/ semaphore/IPC/ Active Objects/ Dynamics Arrays/Cleanup Stack/Client –server/Binary Compatibility.
Experience in all stages of development of large project using C/C++/ Clearcase/Subversion/GIT  on Linux and LynxOS platform.
Worked on Linux Device driver and System programming.
Worked on HP bootloader, Board Support Package and grub.
Knowledge of Virtual File system, ext3, I/O Scheduler.
Good knowledge of Socket, TCP/IP and routing protocol like BGP, RIP.
Good knowledge of porting and cross-compilation. Ported FreeBSD-libc to Symbian Platform.
Worked on Linux Device Driver(Parallel port Control panel, USB mass storage driver), System programming, ELF32,DWARF, binary optimization.    
Worked on GNU Tools chain like Cross-Compiler, Makefile, Auto Conf.
Worked on drivers for SPI, UART, I2C, GPIO Bus as part of board bringup.
Good Knowledge of Multithreading, Semaphore, Message queue, Shared memory and other IPC mechanism.
Bring up of Board and enhanced product for power star energy consumption by implementing various sleeping mode in Devices like scanner, Fax, Hard drive etc.
Knowledge of GNU tool chain and cross compilation
Participated in Code reviews, Risk management, design document as well as implementation phase.
Good knowledge of Object oriented Analysis and design.
Good Knowledge of Xen/ Qemu and virtualization.
Worked on Malware Analysis and disassembly
Very good and through knowledge of Hypervisor like Xen, KVM.