Linux kernel Module and driver Programming for x86
4.1 (27 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,276 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Linux kernel Module and driver Programming for x86 to your Wishlist.

Add to Wishlist

Linux kernel Module and driver Programming for x86

Comprehensive Guide to System call and Linux internals on x86 platform
4.1 (27 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
1,276 students enrolled
Created by Shakil khan
Last updated 6/2017
English
Current price: $10 Original price: $45 Discount: 78% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 3 hours on-demand video
  • 3 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • 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
View Curriculum
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 is the target audience?
  • 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
Students Who Viewed This Course Also Viewed
Curriculum For This Course
14 Lectures
03:02:43
+
Linux kernel Module Programming
14 Lectures 03:02:43

Introduction and how to install ubuntu in vmware fusion or workstation for kernel compilation


Preview 15:31

How to compile Linux kernel in details part1

Preview 16:04

How to compile Linux kernel in details part2

kernel compilation Part2
16:21

How to compile Linux kernel in details part3

kernel compilation Part3
16:43

How to add a hello world module in linux kernel Part 1

Preview 16:05

How to add a hello world module in linux kernel Part 1

Hello World Module Part 2
15:17

How to write a character device driver part -1

Character Device driver Part 1
10:00

How to write a character device driver part -2

Preview 10:02

How to write a character device driver part -3

Character Device driver Part 3
08:08

How to write a character device driver part -4

Character Device driver Part 4
10:35

How to Write a debugfs driver in linux kernel

Preview 18:30

How to Patch a linux kernel

How to Patch Linux kernel
13:39

How to write a kernel module to read values of Jiffies

Preview 11:49

How system call works

How System Call works in Linux
03:59
About the Instructor
Shakil khan
4.4 Average rating
271 Reviews
4,712 Students
5 Courses
Senior Software Engineer

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 knowledg of Hypervisor like Xen, KVM.