강의

멘토링

커뮤니티

BEST
Security & Network

/

System

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

The author of "Learning Linux Kernel Structure and Principles Through Debugging" clearly explains the basic debugging features and methods of the latest Linux kernel (v6.1), most widely used in system software.

(4.6) 14 reviews

357 learners

  • austinkim
저자 직강
리눅스커널
임베디드리눅스
Linux
linux-kernel
Operating System
debugging
ftrace

Reviews from Early Learners

What you will learn!

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

  • Methods to improve debugging skills and issue types in real-world projects

  • printk and dump_stack() for kernel debugging

  • How to design a device driver and create a debugging patch using printk

  • How to use and set up Ftrace

  • Linux kernel's main workings via Ftrace messages of various events

1,500 Students Milestone 30% Discount Coupon Released

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

2. Roadmap Guide 🎯

This lecture is a roadmap'Linux kernel - basic course for system software developers'is included in the course.

If you want to learn the major functions that make up the Linux kernel systematically, it would be good to utilize the roadmap (30% discount on all courses).

System semiconductors, automotive sector, etc.

Linux Kernel That System Software Developers Must Know


What is the most widely used operating system in IT devices? It's the Linux operating system. It is used in smartphones, digital TVs, aviation entertainment systems, and servers. System semiconductor companies use Linux (Linux device drivers) to control the hardware they design. Additionally, Linux is widely utilized in various components of electric vehicles (Automotive) such as infotainment, autonomous driving, and telematics.

The core of the Linux operating system is the Linux kernel. Along with the Armv8-A architecture, Linux kernel knowledge can be considered the most essential foundational knowledge required in the current system software industry.

Linux system software developers and Linux embedded system (BSP) programmers, pay attention!

✅ Linux system software field including system semiconductors and electric vehicle sectors (autonomous driving, infotainment) for junior developers

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

✅ Linux system software field (memory, file system, operating system) graduate school applicants

Developers from other fields looking to transition their career to Linux system software

However, the Linux kernel is like a massive barrier for beginners in the field of system software. Beginners likely have experienced giving up on learning the Linux kernel multiple times. That difficult Linux kernel is becoming increasingly complex as it evolves with version upgrades.After 2024, the Linux kernel version will be upgraded to v6.6 or higherHowever, the barriers to entry are becoming higher.

Linux system software developers positioned in various fields including system semiconductors and electric vehicles know that they need to understand the Linux kernel well to develop their capabilities. However, it's difficult to grasp how to learn the Linux kernel and, more importantly, what content they need to know well in practical work.

The Reality of Entry-Level or Junior Embedded Linux System Developers

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

1. Lack of debugging-related materials

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 you don't experience many trial and error when learning debugging methods. However, in Linux system software development, while there are debugging-related materials, most are development documents that are difficult for beginners to digest.

2. Difficulty getting help with debugging

How do you debug Linux system software-related projects? Most of the time, you analyze kernel logs or memory dumps. What abilities are required to properly analyze logs or dumps? You need the ability to read and understand Linux kernel source code or grasp the operating principles of processes and interrupts. However, in real projects, senior developers with these abilities are rare, and even if you're lucky enough to have a developer who is good at debugging, most are too busy to provide detailed and kind explanations.

3. It's difficult to understand why debugging is done

Regardless of the field, most people know that debugging is a core competency for developing problem-solving skills. However, many job seekers as well as junior Linux system software developers often don't understand why debugging is necessary in real-world projects. They also feel frustrated because it's difficult to know what they need to prepare to become good at debugging. Moreover, when they are assigned bugs or issues during real-world projects, they are likely to repeat trial and error because they don't even know how to start analyzing. This eventually leads to endless overtime work, and they end up blaming themselves for lacking aptitude in the Linux system software field.

What development capabilities do Linux system software developers most want to cultivate?

So what is the practical skill that Linux system software developers want to learn most? It's 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.

So in Chapter 3 of my book 'Learning Linux Kernel Structure and Principles through Debugging', in the 'Debugging and Code Learning' section, I cover content about debugging.This lecture is a direct lecture by the author of 'Linux Kernel Structure and Principles Learned Through Debugging' and covers the content of Chapter 3 of the book.Additionally, it explains practical debugging methods not covered in books.

You'll learn this kind of content

This explains in detail why debugging is important in real-world projects and the actual debugging process.

This introduces various methods to improve debugging skills and types of issues that can arise in real-world projects.

It provides a detailed explanation of the kernel debugging process by referencing cases most similar to real-world projects.

This provides a detailed explanation of how to debug the kernel using printk and dump_stack(). It also includes explanations of related reference code.

We will conduct hands-on practice analyzing kernel logs on an actual Raspberry Pi. We will also load memory dumps using the Crash Utility program to open and analyze kernel logs in detail.

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

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

This provides a detailed explanation of Ftrace messages. In particular, it conducts a detailed analysis of stack traces that can help identify the call flow of functions.

This explains how to analyze kernel source code through Ftrace messages and describes various Ftrace events.

This explains how to configure Ftrace directly on a Raspberry Pi and describes the Ftrace configuration methods. It also covers extracting Ftrace logs and analyzing Ftrace messages from various events.


Based on book writing/teaching experience
Deeper and more detailed than anyone else!

In the domestic system software field, I am the author who wrote the unprecedented! 'Linux Kernel' book and 'Arm Architecture (Armv8-A, Armv7-A)' book. I am also a current developer who knows the latest system software trends (electric vehicles, system semiconductors - system software) best, and an educator who is most actively engaged in knowledge dissemination activities in the system software field.

  • 'Learning Linux Kernel Structure and Principles Through Debugging' (2021 Korea Academy Outstanding Book Award) Author

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

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

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

  • LG Electronics 'Linux Kernel' and 'Armv8 Architecture' In-house 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.

Pre-enrollment Reference Information

Practice Environment

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

Prerequisites and Important Notes

  • It would be good if you have a rough understanding of how Linux works.

  • Having knowledge of operating systems or computer architecture will make it easier to follow the class.

  • You don't need deep prerequisite knowledge about the Linux kernel.

Recommended for
these people

Who is this course right for?

  • Junior developer seeking to grow capabilities in system software, including system semiconductors and EV (autonomous driving, infotainment).

  • Aspiring system software developer for system semiconductor and electric vehicle fields.

  • Undergraduate student aiming to pursue graduate studies in system software (memory, file systems, operating systems)

  • Developer from another field transitioning to system software

  • A developer who wants to enhance debugging skills as a Linux system software developer

  • Developer seeking Linux system software troubleshooting process

Need to know before starting?

  • C language

  • Computer Architecture

  • Operating System

Hello
This is

5,836

Learners

183

Reviews

89

Answers

4.9

Rating

22

Courses

글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (Arm, RISC-V 아키텍처)

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 국내 최초로 해외 출판사(Packt)를 통해 "Reverse Engineering Armv8-A Systems" 책(영어)을 집필한 글로벌 저자입니다. 무엇보다 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 책(영어) 저자, (Packt 출판사)

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2024년, 대한민국 학술원 우수도서상) 저자

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~현재)

국내에서 어느 누구보다 리눅스 커널과 Arm 아키텍처(Armv8-A, Armv7-A)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

강의문의 : austindh.kim@gmail.com

주요 로드맵 🎯

'시스템 소프트웨어 개발자를 위한 Arm - basic course'

'시스템 소프트웨어 개발자를 위한 Arm - advanced course'

시스템 소프트웨어 개발자를 위한 Linux kernel - basic course

Curriculum

All

34 lectures ∙ (4hr 35min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

14 reviews

4.6

14 reviews

  • 최민성님의 프로필 이미지
    최민성

    Reviews 2

    Average Rating 5.0

    5

    100% enrolled

    • redkyo00님의 프로필 이미지
      redkyo00

      Reviews 2

      Average Rating 5.0

      5

      100% enrolled

      • 박규동님의 프로필 이미지
        박규동

        Reviews 2

        Average Rating 5.0

        5

        62% enrolled

        • 염재영님의 프로필 이미지
          염재영

          Reviews 3

          Average Rating 5.0

          5

          100% enrolled

          • 이현진님의 프로필 이미지
            이현진

            Reviews 13

            Average Rating 5.0

            5

            32% enrolled

            $26.40

            austinkim's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!