Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Learn Linux Kernel Programming

Học Lập Trình Kernel Linux

Học Lập Trình Kernel Linux

Khóa học này sẽ hướng dẫn bạn cách bắt đầu viết các Module Kernel và Driver Thiết bị cho Linux. Khóa học có rất nhiều ví dụ thực tế.

4.4
(940 đánh giá)
6,693 học viên
Giảng viên
Linux Trainer
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 789.000đ -94%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
5.5 giờ video
112 bài giảng
10 bài quiz
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 31/05/2026

Bạn sẽ học được gì

Module Kernel, Driver Thiết bị là gì và sự khác biệt giữa chúng
Ưu điểm và nhược điểm của Module Kernel
Tìm hiểu Module Kernel Linux hello world và quy trình biên dịch
Các lệnh thông dụng: lsmod, rmmod, modinfo, insmod, modprobe, modinfo, depmod, objdump, dmesg
Truyền tham số cho Module Kernel Linux
Xuất Symbol (Exporting Symbols)
Kernel Panic, oops, BUG, WARN
Quản lý Tiến trình trong Kernel Linux
Tạo Kernel Threads
Siêu dữ liệu Module (Module Metadata)
Printk và Dynamic Debug

Yêu cầu

Yêu cầu: Kiến thức cơ bản về ngôn ngữ lập trình C
Hiểu biết cơ bản về các lệnh thường dùng trong Linux (echo, cat, make, ls, v.v.)
Có máy tính chạy Linux (trực tiếp hoặc trên máy ảo)

Đối tượng phù hợp

Đối tượng: Các nhà phát triển muốn tìm hiểu về Module Kernel Linux

Nội dung khóa học

13 phần • 112 bài giảng
1 Driver Thiết bị là gì
2 Module Kernel là gì
3 Driver Thiết bị so với Module Kernel
4 Các loại Module Kernel
5 Các lệnh cơ bản
6 Module Kernel Hello World
7 Printf so với Printk
8 Makefile đơn giản hóa
9 Điều gì xảy ra khi chạy insmod
10 Điều gì xảy ra nếu trả về -1 từ hàm Init của Module Kernel
11 Đặt tên khác cho Module Kernel
12 Module Kernel trải rộng trên nhiều file C
13 Hai Module Kernel từ một Makefile duy nhất
14 Tìm hiểu sâu về Dmesg
15 Tùy chọn follow của Dmesg
16 Ví dụ Module Kernel Linux chỉ dùng module_init
17 Ví dụ Module Kernel Linux chỉ dùng module_exit
18 Module Kernel Linux chỉ với hai dòng lệnh
19 Biên dịch chéo (Cross Compilation)
20 Tài nguyên
1 Từ file .c đến file .ko
2 Tìm hiểu Module.symvers và modules.order
3 Insmod so với Modprobe
4 Cách Modprobe tính toán phụ thuộc (modules.dep/depmod)
5 Tìm hiểu các hàm module_init & module_exit
6 Ví dụ về gcc attribute alias
7 Ví dụ Module Kernel Linux không dùng macro module_init và module_exit
1 Truyền tham số cho Module Kernel Linux
2 Điều gì xảy ra nếu truyền giá trị sai cho tham số module
3 Cách truyền tham số cho các module tích hợp sẵn (builtin modules)
4 Cách truyền chuỗi có nhiều từ làm tham số
5 Truyền giá trị 0 cho đối số permission của macro module_param
6 Truyền mảng làm tham số module
7 Inv bool
1 Symbol và Bảng Symbol
2 Xuất symbol
3 System.map so với /proc/kallsyms
4 Ví dụ Module Kernel Linux về xuất hàm
5 Module Stacking
6 Ví dụ Module Kernel Linux về xuất biến
7 Version Magic
8 Tài nguyên
1 Điều gì xảy ra nếu không chỉ định macro MODULE_LICENSE
2 Kernel bị "nhiễm bẩn" (tainted kernel) là gì
3 Cách kiểm tra kernel có đang ở trạng thái bị nhiễm bẩn hay không
4 Điều gì xảy ra khi chỉ định giấy phép không hợp lệ (Ví dụ: "abc")
5 Điều gì xảy ra khi một module kernel không phải GPL cố truy cập Module GPL
1 Cách tìm ra phiên bản kernel từ file .ko
2 Siêu dữ liệu Module
3 Macro MODULE_INFO
4 Objdump trên module kernel
1 Điều gì xảy ra nếu liên tục gọi printk
2 Kích thước bộ đệm vòng (ring buffer) của Printk Kernel
3 Các mức log (Log Levels) của Printk
4 Mức log printk mặc định
5 Thông báo Kernel trên Console
6 Macro printk dạng rút gọn
7 Kích hoạt thông báo pr_debug
8 Ví dụ Module Kernel Linux in ra số dấu phẩy động
9 Tại sao đơn vị dấu phẩy động (FPU) bị tắt trong kernel space
10 Giới hạn thông báo printk - printk_rate_limit
11 Giới hạn thông báo printk - printk_once
12 Tránh hành vi xuống dòng mặc định của printk
13 In dump hexa - print_hex_dump
14 In dump hexa - print_hex_dump_bytes
15 Gỡ lỗi động (Dynamic Debug)
16 Tài nguyên
1 Điều gì xảy ra nếu cố nạp file không phải .ko với insmod
2 strace trên lệnh insmod
3 Tìm ra tên module từ file .ko
1 Cách dump kernel stack
2 Kernel panic là gì
3 Ví dụ Kernel Panic
4 Oops là gì
5 Ví dụ Oops
6 BUG là gì và ví dụ
7 Có thể xóa module sau khi gặp bug/oops không
8 Cách định nghĩa ký hiệu tiền xử lý (preprocessing symbol) trong Makefile
9 Tài nguyên
1 Cách tìm ra có bao nhiêu CPU từ user space và kernel space
2 Biểu diễn tiến trình trong Kernel Linux và các trạng thái tiến trình
3 Ví dụ Module Kernel Linux minh họa tên tiến trình, ID tiến trình và trạng thái tiến trình
4 Ví dụ Module Kernel Linux minh họa macro current
5 Ví dụ Module Kernel Linux minh họa macro current - phần 2
6 Module Kernel Linux nhận PID làm đối số và in thông tin tiến trình và tiến trình cha
7 Bản đồ bộ nhớ tiến trình (Process Memory Map)
8 Ví dụ Module Kernel Linux để in bản đồ bộ nhớ tiến trình
1 Giới thiệu về Kernel Threads
2 Ví dụ Kernel Thread - kthread_create
3 Ví dụ Kernel Thread - kthread_run
4 Ví dụ với hai Kernel Threads
5 Có thể có hai kernel threads cùng tên không
6 Điều gì xảy ra nếu không dùng kthread_should_stop() trong hàm thread
7 Điều gì xảy ra nếu không gọi kthread_stop() trong module_exit
8 In ID bộ xử lý trong module kernel
9 Ví dụ Kernel Thread Linux về điều kiện đua (race condition)
1 Macro LINUX_VERSION_CODE
2 Macro KERNEL_VERSION
3 UTS_RELEASE
4 Ví dụ Module Kernel Linux hỗ trợ nhiều phiên bản
5 Đầu ra của giai đoạn tiền xử lý (pre-processing)
6 Tài nguyên
1 Ý nghĩa của macro __init
2 Có thể dùng macro __init cho các module tích hợp sẵn (builtin modules) không
3 Macro __exit
4 Macro __initdata và __exitdata
5 Cách liệt kê các module tích hợp sẵn (builtin modules)
6 Cách tự động nạp module
7 Đưa Module Kernel vào danh sách đen (Blacklisting) - Phần 1
8 Đưa Module Kernel vào danh sách đen (Blacklisting) - Phần 2
9 Truyền tham số cho Module Kernel Linux được nạp bằng modprobe
10 systool

Giới thiệu khóa học

110+ Lectures on Linux Kernel Programming

Updated on Dec 12th 2020 : Added more videos in Bonus section

Do you want to expand your horizon and be a part of programming evolution? Would you like to become proficient in Linux Kernel Module Programming to gain skills that are valued by the programming industry?

And why not? After all, Linux is one of the most popular OS for software developers, and its popularity is only going to increase over time.

There are many Linux Kernel Module Programming courses available to learn these skills.

However, these courses are often lacking in the practical approach, and students often feel left behind.

So, what is the best course available to learn this valuable skill right now?

Introducing Learn Linux Kernel Programming, a high-quality course developed by Linux Weekend Learning.

This course is built on a practical approach and uses a lot of real-world examples to give you proper training.

By enrolling, you will have lifetime access to course. You can learn at your own pace and refer back them whenever you want!

Here are some of the perks of this course:

  • Over 5 hours of video teaching and training

  • 100+ Lectures on Linux Kernel Programming

  • Understanding the in and out of the hello world kernel modules

  • Write various kernel modules which exports symbols, accepts parameters, creates kernel threads

  • Learn about the printk function in deep

  • Various commands used while working in Linux Kernel Modules:insmod, rmmod, modprobe, lsmod, dmesg

  • All examples and notes used in the course are available for download

  • Direct access to your instructors for questions and help through the Udemy communication channels

  • Lifetime access to the course, including all future updates

This course comes with a 30 day money back guaranteed!. If you are not satisfied with the course, you'll get your money back

So what are you waiting for, enroll now and take the next step in learning Linux Kernel Programming

Commands you will learn from this course:

  • lsmod

  • dmesg

  • insmod

  • rmmod

  • modprobe

  • modinfo

  • depmod

  • objdump

  • ps -l

API's covered in the course:

  • module_param

  • module_param_array

  • EXPORT_SYMBOL

  • EXPORT_SYMBOL_GPL

  • MODULE_INFO

  • KBUILD_MODNAME

  • dump_stack

  • panic

  • BUG()

  • for_each_process

  • num_online_cpus

  • printk_rate_limit

  • printk_once

  • print_hex_dump

  • print_hex_dump_bytes

  • current

  • kthread_create

  • wake_up_process

  • kthread_stop

  • kthread_should_stop

  • kthread_run

  • usleep_range

  • msleep

  • smp_processor_id

  • VERMAGIC_STRING

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học C Programming
Hiển thị tất cả khoá học Linux Kernel
Hiển thị tất cả khoá học Operating Systems
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊