آموزش برنامه نویسی کرنل لینوکس

Learn Linux Kernel Programming

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: این دوره به شما یاد می دهد که چگونه شروع به نوشتن ماژول های هسته لینوکس و درایورهای دستگاه کنید. این دوره پر از مثال ها است. dmesg ارسال پارامترها به ماژول های هسته لینوکس صادر کردن نمادها Kernel Panic, oops, BUG, ​​WARN مدیریت فرآیند در لینوکس کرنل ایجاد رشته های هسته ماژول متادیتا چاپ و اشکال زدایی دینامیک ، ls و غیره) دسترسی به رایانه ای که لینوکس دارد (مستقیم یا روی VM)

بیش از 110 سخنرانی در مورد برنامه نویسی هسته لینوکس

به روز شده در 12 دسامبر 2020: ویدیوهای بیشتری در بخش پاداش اضافه شد

آیا می خواهید افق خود را گسترش دهید و بخشی از تکامل برنامه نویسی باشید؟ آیا می خواهید در برنامه نویسی ماژول هسته لینوکس مهارت کسب کنید تا مهارت هایی را کسب کنید که مورد توجه صنعت برنامه نویسی است؟

و چرا که نه؟ به هر حال، لینوکس یکی از محبوب‌ترین سیستم‌عامل‌ها برای توسعه‌دهندگان نرم‌افزار است و محبوبیت آن تنها در طول زمان افزایش می‌یابد.

دوره های برنامه نویسی ماژول هسته لینوکس زیادی برای یادگیری این مهارت ها وجود دارد.

با این حال، این دوره‌ها اغلب فاقد رویکرد عملی هستند، و دانش‌آموزان اغلب احساس می‌کنند که عقب مانده‌اند.

بنابراین، بهترین دوره برای یادگیری این مهارت ارزشمند در حال حاضر چیست؟

معرفی Learn Linux Kernel Programming، یک دوره آموزشی با کیفیت بالا که توسط Linux Weekend Learning ایجاد شده است.

این دوره بر اساس یک رویکرد عملی ساخته شده است و از نمونه های واقعی زیادی برای آموزش مناسب به شما استفاده می کند.

با ثبت نام، مادام العمر به دوره دسترسی خواهید داشت. شما می توانید با سرعت خود یاد بگیرید و هر زمان که بخواهید به آنها مراجعه کنید!

در اینجا برخی از مزایای این دوره آمده است:

  • بیش از 5 ساعت آموزش و آموزش ویدیویی

  • 100+ سخنرانی در مورد برنامه نویسی هسته لینوکس

  • درک ورود و خروج ماژول های هسته hello world

  • ماژول‌های هسته مختلفی را بنویسید که نمادها را صادر می‌کند، پارامترها را می‌پذیرد، رشته‌های هسته ایجاد می‌کند

  • در مورد عملکرد printk در عمق اطلاعات کسب کنید

  • دستورهای مختلفی که هنگام کار در ماژول‌های هسته لینوکس استفاده می‌شوند: insmod، rmmod، modprobe، lsmod، dmesg

  • همه مثال‌ها و یادداشت‌های استفاده شده در دوره برای دانلود در دسترس هستند

  • از طریق کانال‌های ارتباطی Udemy برای سؤالات و کمک به مربیان خود دسترسی مستقیم داشته باشید

  • دسترسی مادام العمر به دوره، از جمله همه به روز رسانی های آینده

این دوره با 30 روز تضمین بازگشت وجه ارائه می شود!. اگر از دوره راضی نیستید، پول خود را پس خواهید گرفت

پس منتظر چه چیزی هستید، اکنون ثبت نام کنید و قدم بعدی را در یادگیری برنامه نویسی هسته لینوکس بردارید

دستوراتی که از این دوره خواهید آموخت:

  • lsmod

  • dmesg

  • insmod

  • rmmod

  • modprobe

  • اطلاعات اصلاحی

  • depmod

  • objdump

  • ps -l

APIهای تحت پوشش دوره:

  • module_param

  • آرایه_param_module

  • EXPORT_SYMBOL

  • EXPORT_SYMBOL_GPL

  • MODULE_INFO

  • KBUILD_MODNAME

  • dump_stack

  • هراس

  • BUG()

  • برای_هر_فرآیند

  • num_online_cpus

  • printk_rate_limit

  • printk_one

  • print_hex_dump

  • print_hex_dump_bytes

  • جاری

  • kthread_create

  • wake_up_process

  • kthread_stop

  • kthread_should_stop

  • kthread_run

  • usleep_range

  • sleep

  • smp_processor_id

  • VERMAGIC_STRING


سرفصل ها و درس ها

مقدمه Introduction

  • درایور دستگاه چیست؟ What is Device Driver

  • ماژول کرنل چیست؟ What is Kernel Module

  • درایورهای دستگاه در مقابل ماژول‌های هسته Device Drivers vs Kernel Modules

  • انواع ماژول های هسته Types of Kernel Modules

  • دستورات پایه Basic Commands

  • Hello World Kernel Module Hello World Kernel Module

  • Printf در مقابل Printk Printf vs Printk

  • Makefile ساده شده Simplified Makefile

  • چه اتفاقی می افتد در هنگام اجرا insmod What happens when run insmod

  • اگر از تابع Kernel Module Init -1 را برگردانیم چه اتفاقی می افتد What happens if we return -1 from Kernel Module Init function

  • نام دیگری به Kernel Module بدهید Give another name to Kernel Module

  • گستره ماژول هسته در چندین فایل C Kernel Module Span across Multiple C Files

  • دو ماژول هسته از Single Makefile Two Kernel Modules from Single Makefile

  • Dmesg در عمق Dmesg in deep

  • گزینه دنبال کردن Dmesg Dmesg follow option

  • نمونه ماژول هسته لینوکس فقط با module_init Linux Kernel Module example with module_init only

  • نمونه ماژول هسته لینوکس فقط با module_exit Linux Kernel Module example with module_exit only

  • ماژول هسته لینوکس دو خطی Two Line Linux Kernel Module

  • جمع آوری متقابل Cross Compilation

  • منابع Resources

  • مسابقه مقدمه Introduction Quiz

بخش داخلی ماژول هسته لینوکس Linux Kernel Module Internals

  • از .c تا .ko From .c to .ko

  • درک Module.symvers و modules.order Understanding Module.symvers and modules.order

  • Insmod در مقابل Modprobe Insmod vs Modprobe

  • Modprobe چگونه وابستگی ها را محاسبه می کند (modules.dep/depmod) How Modprobe calculates dependencies (modules.dep/depmod)

  • آشنایی با توابع module_init و module_exit Understanding module_init & module_exit functions

  • نمونه هایی از نام مستعار ویژگی gcc Examples of gcc attribute alias

  • مثال ماژول هسته لینوکس بدون ماکرو module_init و module_exit Linux Kernel Module example without module_init and module_exit macro

  • آزمون داخلی ماژول هسته لینوکس Linux Kernel Module Internals Quiz

پارامترهای ماژول Module Parameters

  • ارسال پارامترها به ماژول های هسته لینوکس Passing Parameters to Linux Kernel Modules

  • چه اتفاقی می افتد اگر مقادیر نادرستی را به پارامترهای ماژول ارسال کنیم What happen if we pass incorrect values to module parameters

  • نحوه ارسال پارامترها به ماژول های داخلی How to pass parameters to builtin modules

  • نحوه ارسال رشته با چند کلمه به عنوان پارامتر How to pass string with multiple word as parameter

  • انتقال صفر به آرگومان مجوز ماکرو module_param Passing zero to permission argument of module_param macro

  • ارسال آرایه به عنوان پارامترهای ماژول Passing array as module parameters

  • inv bool Inv bool

  • آزمون پارامترهای ماژول Module Parameters Quiz

صادرات نمادها Exporting Symbols

  • جدول نمادها و نمادها Symbol and Symbol Table

  • نماد صادراتی Exporting symbol

  • System.map در مقابل/proc/kallsyms System.map vs /proc/kallsyms

  • نمونه ای از ماژول هسته لینوکس برای صادرات تابع Linux Kernel Module example of exporting function

  • انباشته شدن ماژول Module Stacking

  • نمونه ای از ماژول هسته لینوکس برای صادرات متغیر Linux Kernel Module example of exporting variable

  • نسخه سحر و جادو Version Magic

  • منابع Resources

  • آزمون صادرات نمادها Exporting Symbols Quiz

مجوزهای ماژول Module Licenses

  • اگر ماکرو MODULE_LICENSE را مشخص نکنیم چه اتفاقی می‌افتد What happens if we don't specify MODULE_LICENSE macro

  • هسته آلوده چیست What is tainted kernel

  • چگونه بررسی کنیم که آیا هسته در حالت آلوده است یا خیر؟ How to check whether the kernel is in tainted state or not

  • وقتی مجوز نامعتبر را مشخص می کنید چه اتفاقی می افتد (بگویید "abc") What happens when you specify invalid license (Say "abc")

  • وقتی یک ماژول هسته غیر GPL سعی می کند به ماژول GPL دسترسی پیدا کند چه اتفاقی می افتد What happens when a non-GPL kernel module trying to access GPL Module

  • آزمون مجوزهای ماژول Module Licenses Quiz

فراداده ماژول Module Metadata

  • چگونه نسخه هسته را از یک .ko پیدا کنیم How to find out kernel version from a .ko

  • فراداده ماژول Module metadata

  • ماکرو MODULE_INFO MODULE_INFO macro

  • Objdump روی ماژول کرنل Objdump on Kernel module

  • آزمون فراداده ماژول Module Metadata Quiz

چاپ Printk

  • چه اتفاقی می افتد اگر به طور مداوم printk را صدا کنیم What happens if we continuously call printk

  • اندازه بافر حلقه هسته Printk Printk kernel ring buffer size

  • Printk Log Levels Printk Log Levels

  • سطح گزارش چاپ پیش‌فرض Default printk log level

  • پیام های هسته در کنسول Kernel Messages on Console

  • ماکروهای چاپی کوتاه Short printk macros

  • پیام های pr_debug را فعال کنید Enable pr_debug messages

  • نمونه ماژول هسته لینوکس که شماره ممیز شناور را چاپ می کند Linux Kernel Module example which prints floating point number

  • چرا واحد ممیز شناور در فضای هسته خاموش است Why floating point unit is OFF in kernel space

  • محدود کردن پیام‌های printk - printk_rate_limit Limiting printk messages - printk_rate_limit

  • محدود کردن پیام‌های printk - printk_once Limiting printk messages - printk_once

  • اجتناب از رفتار خط جدید پیش‌فرض printk Avoiding default new line behavior of printk

  • چاپ hex dump - print_hex_dump Printing hex dump - print_hex_dump

  • چاپ hex dump - print_hex_dump_bytes Printing hex dump - print_hex_dump_bytes

  • اشکال زدایی پویا Dynamic Debug

  • منابع Resources

  • مسابقه پرینتک Printk quiz

فراخوانی سیستم برای بارگیری ماژول System call for loading module

  • اگر بخواهم فایل non-ko را با insmod بارگیری کنم چه اتفاقی می افتد What happens if i try to load non-ko file with insmod

  • strace در دستور insmod strace on insmod command

  • نام ماژول را از .ko بیابید Find out name of module from .ko

وحشت هسته، اوه، اشکال Kernel Panic, Oops, Bug

  • چگونه پشته هسته را تخلیه کنیم How to dump kernel stack

  • وحشت هسته چیست؟ What is kernel panic

  • مثال وحشت هسته Kernel Panic Example

  • اوه چیه What is oops

  • اوه مثال Oops Example

  • BUG چیست و مثال What is BUG and example

  • آیا می توانیم ماژول را بعد از باگ/اوپس حذف کنیم Can we remove module after bug/oops

  • نحوه تعریف نماد پیش پردازش در Makefile How to define preprocessing symbol in Makefile

  • منابع Resources

  • امتحان Quiz

مدیریت فرآیند در کرنل لینوکس Process Management in Linux Kernel

  • چگونه بفهمیم چه تعداد CPU از فضای کاربر و فضای هسته وجود دارد How to find out how many CPU's are present from user space and kernel space

  • نمایش فرآیند در هسته لینوکس و وضعیت های فرآیند Process representation in Linux Kernel and process states

  • مثالی از ماژول هسته لینوکس که نام فرآیند، شناسه فرآیند و s فرآیند را نشان می دهد Linux Kernel Module example demonstrating process name, process id and process s

  • مثال ماژول هسته لینوکس که ماکرو فعلی را نشان می دهد Linux Kernel Module example demonstrating current macro

  • مثال ماژول هسته لینوکس که بخش 2 ماکرو فعلی را نشان می دهد Linux Kernel Module example demonstrating current macro part 2

  • ماژول هسته لینوکس که PID را به عنوان آرگومان می پذیرد و فرآیند و والد را چاپ می کند Linux Kernel Module which accepts PID as argument and prints process and parent

  • نقشه حافظه فرآیند Process Memory Map

  • نمونه ماژول هسته لینوکس برای چاپ نقشه حافظه فرآیند Linux Kernel Module xample for printing process memory map

  • امتحان Quiz

موضوعات هسته Kernel Threads

  • مقدمه ای بر موضوعات هسته Introduction to Kernel Threads

  • نمونه موضوع هسته - kthread_create Kernel Thread Example - kthread_create

  • نمونه موضوع هسته - kthread_run Kernel Thread Example - kthread_run

  • نمونه دو هسته هسته Two Kernel Threads Example

  • آیا می توانیم دو رشته هسته با یک نام داشته باشیم؟ Can we have two kernel threads with same name

  • اگر از ()kthread_should_stop در تابع thread استفاده نکنیم چه اتفاقی می افتد What happens if we don't use kthread_should_stop() in thread function

  • اگر در module_exit ()kthread_stop را صدا نکنیم چه اتفاقی می افتد What happens if we don't call kthread_stop() in module_exit

  • چاپ شناسه پردازنده در ماژول هسته Print processor id in kernel module

  • نمونه ای از Thread کرنل لینوکس از شرایط مسابقه Linux Kernel Thread example of race condition

  • امتحان Quiz

پشتیبانی ماژول برای چندین هسته Module Support for Multiple Kernels

  • LINUX_VERSION_CODE ماکرو LINUX_VERSION_CODE Macro

  • KERNEL_VERSION ماکرو KERNEL_VERSION Macro

  • UTS_RELEASE UTS_RELEASE

  • نمونه ماژول هسته لینوکس که از چندین نسخه پشتیبانی می کند Linux Kernel Module example supporting multiple versions

  • خروجی مرحله از پیش پردازش شده Output of pre-processed stage

  • منابع Resources

بخش پاداش Bonus Section

  • اهمیت ماکرو __init Significance of __init macro

  • آیا می توانیم از ماکرو __init برای ماژول های داخلی استفاده کنیم؟ Can we use __init macro for builtin modules

  • __خروج ماکرو __exit macro

  • __initdata و __exitdata ماکرو __initdata and __exitdata macro

  • چگونه ماژول های داخلی را فهرست می کنید How do you list builtin modules

  • نحوه بارگذاری خودکار ماژول ها How to load modules automatically

  • لیست سیاه ماژول های هسته Blacklisting Kernel Modules

  • لیست سیاه ماژول های هسته قسمت 2 Blacklisting Kernel Modules Part 2

  • ارسال پارامترها به ماژول های هسته لینوکس که با استفاده از modprobe بارگذاری شده اند Passing Parameters to Linux Kernel Modules loaded using modprobe

  • سیستول systool

نمایش نظرات

آموزش برنامه نویسی کرنل لینوکس
جزییات دوره
5.5 hours
112
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
3,496
4.6 از 5
دارد
دارد
دارد
Linux Trainer
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Linux Trainer Linux Trainer

مربی در آموزش آخر هفته لینوکس