강의

멘토링

로드맵

Inflearn brand logo image
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.8) 11 reviews

341 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

<Notice>

30% discount coupon issued when 1,500 people sign up

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

2. Roadmap Guide 🎯

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

If you want to learn the main features that make up the Linux kernel systematically , we recommend using the roadmap ( 30% discount on all lectures ).

System semiconductors, automotive fields, etc.

Linux Kernel: A Must-Know for System Software Developers


What is the most used operating system in IT devices? It is the Linux operating system . It is used in smart phones, digital TVs, aviation entertainment systems, and servers. System semiconductor companies use Linux (Linux device drivers) to control the hardware they design. Linux is also widely used 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 considered the most essential foundational knowledge required in the current system software industry.

Attention Linux System Software Developers and Linux Embedded System (BSP) Programmers!

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

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

Applicants for graduate school in the field of Linux system software (memory, file system, operating system)

Developers from other fields who want to transition their careers into Linux system software.

However, the Linux kernel is a huge barrier for beginners in the field of system software. Beginners may have given up several times while learning the Linux kernel. The difficult Linux kernel version is evolving more and more complex as it is upgraded. After 2024, the Linux kernel version will be upgraded to v6.6 or higher , which makes the entry barrier higher.

Linux system software developers who are deployed in various fields including system semiconductors and electric vehicles know that they need to know the Linux kernel well to improve their development capabilities. However, it is difficult to get a sense of how to learn the Linux kernel and, above all, what content they need to know well in practice.

The Reality of Being a New or Junior Embedded Linux System Developer

What are the most common problems faced by new or junior embedded Linux system developers when solving a problem? Why?

1. Lack of debugging-related materials

In various software fields including web development, the development environment for debugging is relatively well-equipped. Also, there are many lectures and books for beginners, so you don't have to go through a lot of trial and error when learning debugging methods. However, in Linux system software development, there are materials related to debugging, but most of them are development documents that are difficult for beginners to digest .

2. Difficulty getting help with debugging

How do you debug a Linux system software project? Most of the time, you analyze kernel logs or memory dumps. What skills are required to properly analyze logs or dumps? You need the ability to read and understand the source code of the Linux kernel or to understand the operating principles of processes or interrupts. However , in real projects, senior developers with these skills are rare, and even if you are lucky enough to have a developer who is good at debugging, most of them are too busy to explain in detail and kindly .

3. Difficulty knowing why debugging is being done

Regardless of the field, most people know that debugging is a core competency for developing problem-solving skills. However, many job seekers and even junior Linux system software do not know why they debug in real projects. They also feel frustrated because they do not know what to prepare for debugging well. However , when working on a real project and are assigned a bug or issue, they are likely to repeat trial and error because they do not even know how to start analyzing it. This eventually leads to endless overtime work and self-reproach for lacking the aptitude for Linux system software.

What development skills do Linux system software developers most want to develop?

Ultimately, what practical skill do Linux system software developers want to learn the most? It is debugging skills . Debugging is proportional to problem-solving skills, so they want to improve their debugging skills. There are many blogs and materials about the Linux kernel, but they rarely cover how to systematically solve problems using the latest debugging techniques.

So, in Chapter 3 of 'Learning the Structure and Principles of the Linux Kernel through Debugging' that I wrote, I cover the contents of debugging and code learning. This lecture is a lecture directly delivered by the author of 'Learning the Structure and Principles of the Linux Kernel through Debugging' and covers the contents of Chapter 3 of the book. In addition, it explains practical debugging methods that are not covered in the book.

Learn about these things

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

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

We will explain in detail the process of kernel debugging by referring to a case that is most similar to a real-world project.

This article explains in detail how to debug the kernel using printk and dump_stack(). Related reference code is also provided.

We will practice checking and analyzing kernel logs on an actual Raspberry Pi. We will also load memory dumps into the Crash Utility program and open the kernel logs for detailed analysis.

This article details how to design device drivers and create debugging patches using printk.

Describes Ftrace, a core debugging feature provided by the Linux kernel. In particular, it explains in detail how to utilize Ftrace and how to configure it.

Describes Ftrace messages in detail, especially the stack trace, which can help you understand the function call flow.

Explains how to analyze kernel source through Ftrace messages and the various Ftrace events.

We will explain how to set up Ftrace by setting it up directly on the Raspberry Pi. We will also extract the Ftrace log and analyze the Ftrace messages for various events.


Based on my experience writing books and giving lectures
More in-depth and detailed than anyone else!

The author of the book 'Linux Kernel' and 'Arm Architecture (Armv8-A, Armv7-A)', which is unprecedented in the domestic system software field! He is also a working developer who knows the latest system software trends (electric vehicles, system semiconductors - system software) the best, and an educator who is most active in spreading knowledge in the system software field.

  • Author of 'Learning the Structure and Principles of the Linux Kernel through Debugging' ( 2021, Korean Academy of Sciences Outstanding Book Award )

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

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

  • June 2022, Korea Computer Conference (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 the educator who can explain the 'Linux kernel debugging function' and 'troubleshooting methods' better than anyone else in Korea.

Things to note before taking the class

Practice environment

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

Player Knowledge and Notes

  • It would be good to have a general idea of how Linux works.

  • If you know about operating systems and computer architecture, you will be able to take the class more easily.

  • No in-depth prior knowledge of the Linux kernel is required.

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,545

Learners

156

Reviews

85

Answers

4.9

Rating

21

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

11 reviews

4.8

11 reviews

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

    Reviews 1

    Average Rating 5.0

    5

    62% enrolled

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

      Reviews 2

      Average Rating 5.0

      5

      100% enrolled

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

        Reviews 13

        Average Rating 5.0

        5

        32% enrolled

        • anhae11님의 프로필 이미지
          anhae11

          Reviews 1

          Average Rating 5.0

          5

          62% enrolled

          어려운 내용인데 쉽게 가르쳐주십니다!

          • 홍승석님의 프로필 이미지
            홍승석

            Reviews 2

            Average Rating 3.0

            3

            97% enrolled

            $26.40

            austinkim's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!