inflearn logo

Structure and Principles of the Linux Kernel: Debugging - Basic [Author's Lecture Part 1-2]

The author of "Learning the Structure and Principles of the Linux Kernel Through Debugging" provides a thorough explanation of the basic debugging features and methods of the latest Linux kernel (v6.1), which are most commonly used in system software.

(4.6) 15 reviews

391 learners

Level Basic

Course period Unlimited

Linux
Linux
linux-kernel
linux-kernel
Operating System
Operating System
debugging
debugging
ftrace
ftrace
Linux
Linux
linux-kernel
linux-kernel
Operating System
Operating System
debugging
debugging
ftrace
ftrace

Reviews from Early Learners

Reviews from Early Learners

4.6

5.0

anhae11

62% enrolled

He teaches difficult content in an easy-to-understand way!

5.0

kech611961

32% enrolled

Good job!

5.0

sunny75

100% enrolled

2024/07/30/Tue 15:35 I listened to the lecture well. Thank you for explaining debugging well. I didn't listen to the debugging lecture, but I listened to other lectures first, and I wondered what the logs I was analyzing would look like, but I learned that it's better to listen to the lectures in order, just like the roadmap you gave me. I learned that I can analyze the Linux kernel well through debugging while listening to the lecture. Thank you always for creating good lectures.

What you will gain after the course

  • Why debugging is important in real-world projects and the actual process of debugging

  • Various ways to improve debugging skills and types of issues that may arise in real-world projects

  • How to debug the kernel using printk and dump_stack()

  • How to design device drivers and create debugging patches using printk

  • How to use and configure Ftrace

  • Key operating principles of the Linux kernel through Ftrace messages of various events

<Announcement>

1. Issuing a 30% discount coupon to celebrate reaching 500 students

To celebrate reaching 500 students (Structure and Principles of the Linux Kernel), we are issuing a 30% discount coupon. Thank you. Limited to the first 100 people.

2. Roadmap Guide 🎯

This lecture <Structure and Principles of the Linux Kernel: Debugging - Basic [Author's Lecture Part 1-2]> is included in the roadmap 'Linux kernel - basic course for system software developers'.

If you want to learn the key functions that make up the Linux kernel systematically, it is recommended to use the roadmap (30% discount on all courses).

System semiconductor, automotive fields, etc.

Linux Kernel: A Must-Know for System Software Developers


What is the most widely used operating system in IT devices? It is the Linux operating system. It is used in smartphones, digital TVs, in-flight entertainment systems, and servers. System semiconductor companies use Linux (Linux device drivers) to control the hardware they design. Furthermore, Linux is extensively utilized in various components (infotainment, autonomous driving, telematics) that make up electric vehicles (Automotive).

The core of the Linux operating system is the Linux kernel. Along with the Armv8-A architecture, the Linux kernel can be seen as the area requiring the most fundamental knowledge currently in high demand within the system software industry.

Attention Linux system software developers and Linux embedded system (BSP) programmers!

Junior developers in the Linux system software field, including system semiconductors and electric vehicles (autonomous driving, infotainment)

Job seekers who want to work in Linux system software development fields such as system semiconductors and electric vehicles

Aspiring graduate students in the field of Linux system software (memory, file systems, operating systems)

Developers from other fields who want to transition their career into the Linux system software field

However, the Linux kernel is like a massive barrier for beginners in the field of system software. Beginners have likely experienced giving up several times while trying to learn the Linux kernel. As the versions of the already difficult Linux kernel upgrade, it is evolving to become increasingly complex. Since 2024, Linux kernel versions have been upgrading to v6.6 and above, and the barrier to entry is rising even higher.

Linux system software developers across various fields, including system semiconductors and electric vehicles, are aware that they must understand the Linux kernel well to enhance their development capabilities. However, it is difficult for them to get a sense of how to learn the Linux kernel and, above all, what specific content they need to know for practical work.

The reality for entry-level or junior embedded Linux system developers

New or junior embedded Linux system developers struggle the most during the problem-solving process. What is the reason for this?

1. Lack of debugging resources

In various software fields, including web development, development environments for debugging are relatively well-established. Additionally, there are many lectures and books for beginners, so one does not experience much trial and error when learning debugging methods. However, in Linux system software development, while debugging materials do exist, most are development documents that are difficult for beginners to digest.

2. Difficulty in getting help with debugging

How is debugging performed in Linux system software projects? In most cases, kernel logs or memory dumps are analyzed. What skills are required to properly analyze logs or dumps? It requires the ability to read and understand the Linux kernel source code or grasp operational principles such as processes and interrupts. However, the reality is that senior developers with these skills are rare in actual projects, and even if you are lucky enough to have a developer who is good at debugging, they are usually too busy to provide detailed and kind explanations.

3. Difficulty in understanding why debugging is necessary

Regardless of the field, most people know that debugging is a core competency for developing problem-solving skills. However, not only job seekers but also junior Linux system software developers often do not know why they are debugging in real-world projects. Furthermore, they feel frustrated because it is difficult to know what to prepare to become good at debugging. However, when assigned a bug or an issue while working on a real-world project, they are highly likely to repeat trial and error because they do not even know how to begin the analysis. This ultimately leads to constant overtime work, and they end up blaming themselves, thinking they lack aptitude for the Linux system software field.

What is the development capability that Linux system software developers want to improve the most?

In the end, what is the practical skill that Linux system software developers want to learn the most? It is debugging skills. Since debugging is proportional to problem-solving ability, they want to improve their debugging capabilities. While there are many blogs and materials about the Linux kernel, they rarely cover how to systematically solve problems using the latest debugging techniques.

That is why I cover debugging in the "Debugging and Code Learning" section of Chapter 3 in my book, 'Structure and Principles of the Linux Kernel Learned Through Debugging.' This course is a lecture delivered by the author of 'Structure and Principles of the Linux Kernel Learned Through Debugging' and covers the contents of Chapter 3 of the book. Additionally, it explains practical debugging methods not covered in the book.

What you will learn

It explains in detail why debugging is important in real-world projects and the step-by-step process of actual debugging.

It introduces various ways to improve debugging skills and the types of issues that can arise in real-world projects.

It explains the kernel debugging process in detail by referring to cases most similar to real-world projects.

It explains in detail how to debug the kernel using printk and dump_stack(). Related reference codes are also explained.

We will conduct a hands-on session to check and analyze kernel logs on an actual Raspberry Pi. Additionally, we will load a memory dump into the Crash Utility program to open and analyze the kernel logs in detail.

It explains in detail how to design device drivers and create debugging patches using printk.

This explains Ftrace, a core debugging feature provided by the Linux kernel. In particular, it provides detailed explanations on how to utilize and configure Ftrace.

I will explain the Ftrace messages in detail. In particular, I will provide a detailed analysis of the stack trace, which allows you to understand the function call flow.

It explains how to analyze the kernel source through Ftrace messages and describes various Ftrace events.

We will explain how to configure Ftrace while setting it up directly on a Raspberry Pi. Additionally, we will extract Ftrace logs and analyze Ftrace messages from various events.


Based on my experience in book writing and lecturing,
deeper and more detailed than anyone else!

I am the unprecedented author in the domestic system software field who has written books on both the 'Linux Kernel' and 'Arm Architecture (Armv8-A, Armv7-A)'. I am also an active developer who is most well-versed in the latest system software trends (electric vehicles, system semiconductors-system software), and an educator who is most actively engaged in spreading knowledge within the system software field.

  • 'Structure and Principles of the Linux Kernel Learned Through Debugging' (2021, National Academy of Sciences Excellent Scholarly Book Award) Author

  • Author of 'The Structure and Principles of Arm Architecture for System Software Development' (2024, National Academy of Sciences Outstanding Book Award)

  • Main Instructor for 'Programmers Dev Course: Linux System and Kernel Expert'

  • June 2022, Korea Computer Congress (KCC2022) - Tutorial Presentation [Conquering the Linux Kernel Using ftrace]

  • LG Electronics 'Linux Kernel' and 'Armv8 Architecture' internal instructor (including domestic and overseas developers) - (2020~2024)


I can confidently say that I am an educator who can explain 'Linux kernel debugging features' and 'troubleshooting methods' better than anyone else in Korea.

Notes before taking the course

Practice Environment

  • Operating System and Version (OS): Raspberry Pi (Raspbian), Linux Kernel v6.1

Prerequisite Knowledge and Important Notes

  • It is helpful to have a general understanding of how Linux operates.

  • You will be able to follow the class more comfortably if you have knowledge of operating systems or computer architecture.

  • Deep prior knowledge of the Linux kernel is not required.

Recommended for
these people

Who is this course right for?

  • A junior developer who wants to build expertise in the system software field, including system semiconductors and electric vehicles (autonomous driving, infotainment).

  • A job seeker who wants to develop system software in fields such as system semiconductors and electric vehicles

  • An undergraduate student aiming to pursue graduate studies in the field of system software (memory, file systems, operating systems).

  • A developer from another field seeking to transition their career into the system software field.

  • Developers who are Linux system software developers and want to improve their debugging skills.

  • Developers who want to know the troubleshooting process related to Linux system software

Need to know before starting?

  • C Language

  • Computer Architecture

  • Operating System

Hello
This is austinkim

6,316

Learners

241

Reviews

96

Answers

4.9

Rating

22

Courses

Global Author & Linux System Software Developer (Arm, RISC-V Architecture)

A global author who has written unprecedented books on 'Arm Architecture (Armv8-A, Armv7-A)' and the 'Linux Kernel' in the domestic system software field (both books were selected as Excellent Academic Books by the National Academy of Sciences of the Republic of Korea), and is the first in Korea to author the book (in English) "Reverse Engineering Armv8-A Systems" through an international publisher (Packt). Above all, he is an active developer who is most well-versed in the latest system software trends (electric vehicles, system semiconductors-system software). He is also an educator who is most actively engaged in spreading knowledge within the system software field.

  • Author of the book (English) 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis', (Packt Publishing)

  • Author of 'Structure and Principles of Arm Architecture for System Software Development' (2024 National Academy of Sciences Outstanding Book Award)

  • Author of 'Structure and Principles of the Linux Kernel Learned Through Debugging' (2021, National Academy of Sciences Outstanding Scholarly Book Award)

  • Main Instructor for 'Programmers Dev Course: Linux System and Kernel Expert'

  • June 2022, Korea Computer Congress (KCC2022) - Tutorial Presentation [Conquering the Linux Kernel Using ftrace]

  • LG Electronics 'Linux Kernel' and 'Armv8 Architecture' internal instructor (including domestic and overseas developers) - (2020–Present)

I can confidently say that I am an educator who can explain the Linux kernel and Arm architecture (Armv8-A, Armv7-A) better than anyone else in Korea.

Lecture Inquiries: austindh.kim@gmail.com

Main Roadmap 🎯

'Arm for System Software Developers - basic course'

'Arm for System Software Developers - advanced course'

Linux kernel for system software developers - basic course

More

Curriculum

All

34 lectures ∙ (4hr 35min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

15 reviews

4.6

15 reviews

  • wodud0432886님의 프로필 이미지
    wodud0432886

    Reviews 3

    Average Rating 5.0

    5

    100% enrolled

    • cms15751340님의 프로필 이미지
      cms15751340

      Reviews 2

      Average Rating 5.0

      5

      100% enrolled

      • redkyo008975님의 프로필 이미지
        redkyo008975

        Reviews 4

        Average Rating 5.0

        5

        100% enrolled

        • minseoblee6235님의 프로필 이미지
          minseoblee6235

          Reviews 1

          Average Rating 5.0

          5

          100% enrolled

          • kdpark5057님의 프로필 이미지
            kdpark5057

            Reviews 2

            Average Rating 5.0

            5

            62% enrolled

            austinkim's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!

            $26.40