강의

멘토링

커뮤니티

BEST
Security & Network

/

System

Cấu trúc và nguyên lý của Linux kernel: Debug - Basic [Bài giảng trực tiếp của tác giả phần 1-2]

Tác giả của "디버깅을 통해 배우는 리눅스 커널의 구조와 원리" giải thích rõ ràng các tính năng và phương pháp 디버깅 cơ bản của 리눅스 커널 (v6.1) mới nhất, vốn được sử dụng phổ biến nhất trong phần mềm hệ thống.

(4.6) 14 đánh giá

372 học viên

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

Đánh giá từ những học viên đầu tiên

Bạn sẽ nhận được điều này sau khi học.

  • Lý do gỡ lỗi (debugging) quan trọng trong các dự án thực tế và quá trình thực hiện gỡ lỗi trên thực tế

  • Các cách khác nhau để nâng cao kỹ năng gỡ lỗi và các dạng vấn đề có thể gặp phải trong dự án thực chiến

  • Cách gỡ lỗi kernel bằng printk và dump_stack()

  • Cách thiết kế driver thiết bị và tạo patch gỡ lỗi bằng printk

  • Cách sử dụng Ftrace và cách thiết lập

  • Nguyên lý hoạt động chính của nhân Linux qua thông điệp Ftrace từ nhiều sự kiện.

Phát hành coupon giảm giá 30% kỷ niệm vượt mốc 1.500 người

Để kỷ niệm việc vượt qua 500 học viên (Cấu trúc và Nguyên lý của Linux Kernel), chúng tôi phát hành coupon giảm giá 30%. Cảm ơn các bạn. Chỉ dành cho 100 người đầu tiên.

2. Hướng dẫn lộ trình 🎯

Khóa học này là lộ trình'Linux kernel - khóa học cơ bản dành cho nhà phát triển phần mềm hệ thống'được bao gồm trong khóa học.

Những ai muốn học có hệ thống các chức năng chính cấu thành nên Linux kernel thì nên sử dụng roadmap (giảm giá 30% toàn bộ khóa học).

Bán dẫn hệ thống, lĩnh vực ô tô, v.v.

Nhà phát triển phần mềm hệ thống nhất định phải biết về Linux Kernel


Hệ điều hành được sử dụng nhiều nhất trong các thiết bị IT là gì? Đó chính là hệ điều hành Linux. Nó được sử dụng trong điện thoại thông minh, TV kỹ thuật số, hệ thống giải trí hàng không và máy chủ. Các công ty bán dẫn hệ thống sử dụng Linux (Linux device driver) để điều khiển phần cứng mà họ thiết kế. Ngoài ra, Linux cũng được sử dụng rộng rãi trong các bộ phận khác nhau cấu thành xe điện (Automotive) như hệ thống thông tin giải trí, lái xe tự động và telematics.

Cốt lõi của hệ điều hành Linux là kernel Linux. Cùng với kiến trúc Armv8-A, có thể nói rằng kernel Linux là nội dung đòi hỏi kiến thức nền tảng cần thiết nhất trong ngành phần mềm hệ thống hiện tại.

Các nhà phát triển phần mềm hệ thống Linux, lập trình viên hệ thống nhúng Linux (BSP) chú ý!

✅ Trong lĩnh vực phần mềm hệ thống Linux bao gồm bán dẫn hệ thống, lĩnh vực xe điện (tự lái, infotainment) dành cho nhà phát triển junior

Người chuẩn bị việc làm muốn làm việc trong lĩnh vực phát triển phần mềm hệ thống Linux như bán dẫn hệ thống, xe điện

✅ Những người mong muốn học cao học trong lĩnh vực phần mềm hệ thống Linux (bộ nhớ, hệ thống tập tin, hệ điều hành)

✅ Các lập trình viên từ các lĩnh vực khác muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống Linux

Tuy nhiên, nhân Linux là một rào cản khổng lồ đối với những người mới bắt đầu trong lĩnh vực phần mềm hệ thống. Những người mới bắt đầu có lẽ đã có kinh nghiệm từ bỏ nhiều lần khi học về nhân Linux. Nhân Linux vốn đã khó hiểu này đang ngày càng phát triển phức tạp hơn khi các phiên bản được nâng cấp.Từ năm 2024 trở đi, phiên bản kernel Linux được nâng cấp lên v6.6 trở lên vànhưng rào cản gia nhập đang ngày càng cao hơn.

Các nhà phát triển phần mềm hệ thống Linux hoạt động trong nhiều lĩnh vực khác nhau bao gồm bán dẫn hệ thống, xe điện đều biết rằng họ cần hiểu rõ về Linux kernel để có thể nâng cao năng lực phát triển. Tuy nhiên, họ đang gặp khó khăn trong việc nắm bắt cách học Linux kernel như thế nào và quan trọng hơn là cần biết những nội dung gì trong công việc thực tế.

Thực tế của các nhà phát triển hệ thống Linux nhúng mới vào nghề hoặc cấp độ junior

Các lập trình viên hệ thống embedded Linux mới vào nghề hoặc cấp độ junior thường gặp khó khăn nhất trong quá trình giải quyết vấn đề. Lý do là gì?

1. Thiếu tài liệu liên quan đến debugging

Trong các lĩnh vực phần mềm đa dạng bao gồm phát triển web, môi trường phát triển để debug đã được trang bị tương đối tốt. Ngoài ra, có nhiều khóa học và sách dành cho người mới bắt đầu nên khi học cách debug không phải trải qua quá nhiều thử nghiệm và sai lầm. Tuy nhiên, trong phát triển phần mềm hệ thống Linux, mặc dù có tài liệu liên quan đến debugging nhưng phần lớn là các tài liệu phát triển khó tiêu hóa đối với người mới bắt đầu.

2. Khó khăn trong việc nhận được hỗ trợ liên quan đến debug

Trong các dự án phần mềm hệ thống Linux, việc debug được thực hiện như thế nào? Hầu hết đều phân tích kernel log hoặc memory dump. Để phân tích log hoặc dump một cách đúng đắn thì cần những khả năng gì? Cần có khả năng đọc và hiểu source code của Linux kernel hoặc nắm bắt nguyên lý hoạt động như process hay interrupt. Nhưng trong các dự án thực tế, những developer senior có khả năng này rất hiếm, và ngay cả khi may mắn có developer giỏi debug thì hầu hết đều quá bận rộn nên khó có thể giải thích chi tiết và Kind.

3. Khó hiểu tại sao phải thực hiện debugging

Bất kể lĩnh vực nào, hầu hết mọi người đều biết rằng debugging là năng lực cốt lõi để phát triển khả năng giải quyết vấn đề. Tuy nhiên, không chỉ những người chuẩn bị việc làm mà ngay cả các junior trong lĩnh vực phần mềm hệ thống Linux cũng thường không hiểu tại sao phải debugging trong các dự án thực tế. Họ cũng cảm thấy bối rối vì khó biết cần chuẩn bị gì để debugging hiệu quả. Nhưng khi tiến hành dự án thực tế và được phân công xử lý bug hoặc issue, họ thậm chí không biết bắt đầu phân tích như thế nào, dẫn đến khả năng cao phải lặp đi lặp lại những sai lầm. Cuối cùng, điều này dẫn đến việc làm thêm giờ liên tục và họ tự trách mình rằng bản thân thiếu năng khiếu trong lĩnh vực phần mềm hệ thống Linux.

Các nhà phát triển phần mềm hệ thống Linux muốn phát triển nhất khả năng phát triển nào?

Cuối cùng, kỹ năng thực tế mà các nhà phát triển phần mềm hệ thống Linux muốn học nhất là gì? Chính là kỹ năng debug. Debug tỷ lệ thuận với khả năng giải quyết vấn đề, vì vậy họ muốn nâng cao khả năng debug. Mặc dù có nhiều blog và tài liệu về Linux kernel, nhưng hầu như không có tài liệu nào đề cập đến cách giải quyết vấn đề một cách có hệ thống bằng các kỹ thuật debug hiện đại.

Vì vậy, trong chương 3 "Debugging và học tập mã nguồn" của cuốn sách "Cấu trúc và nguyên lý của Linux kernel thông qua debugging" mà tôi đã viết, tôi đã đề cập đến nội dung về debugging.Khóa học này là bài giảng trực tiếp của tác giả cuốn sách 'Cấu trúc và Nguyên lý của Linux Kernel thông qua Debugging', bao gồm nội dung chương 3 của cuốn sách.Ngoài ra, tôi sẽ giải thích các phương pháp debug thực tế mà sách không đề cập đến.

Bạn sẽ học những nội dung như thế này

Giải thích chi tiết lý do tại sao việc debug rất quan trọng trong các dự án thực tế và quá trình thực hiện debug thực tế.

Giới thiệu các phương pháp đa dạng để phát triển khả năng debug và các loại vấn đề có thể xuất hiện trong dự án thực tế.

Giải thích chi tiết quá trình debug kernel bằng cách tham khảo các trường hợp tương tự nhất với dự án thực tế.

Giải thích chi tiết cách debug kernel bằng cách sử dụng printk và dump_stack(). Cũng sẽ giải thích kèm theo các reference code liên quan.

Chúng ta sẽ tiến hành thực hành kiểm tra và phân tích kernel log trên Raspberry Pi thực tế. Ngoài ra, chúng ta sẽ tải memory dump bằng chương trình Crash Utility để mở kernel log và phân tích chi tiết.

Sử dụng printk để thiết kế device driver và tạo debugging patch một cách chi tiết.

Giải thích về Ftrace, một tính năng gỡ lỗi cốt lõi được cung cấp bởi kernel Linux. Đặc biệt, giải thích chi tiết về cách sử dụng và cách cấu hình Ftrace.

Giải thích chi tiết về thông điệp Ftrace. Đặc biệt là phân tích chi tiết stack trace có thể nắm bắt được luồng gọi hàm.

Giải thích về cách phân tích mã nguồn kernel thông qua thông điệp Ftrace và các loại Ftrace event khác nhau.

Thiết lập Ftrace trực tiếp trên Raspberry Pi để giải thích cách cấu hình Ftrace. Ngoài ra, sau khi trích xuất log Ftrace, sẽ phân tích các thông điệp Ftrace của các sự kiện khác nhau.


Dựa trên kinh nghiệm viết sách/giảng dạy
Sâu sắc và chi tiết hơn ai hết!

Trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, đây là tác giả duy nhất! đã viết sách 'Linux Kernel' và sách 'Kiến trúc Arm (Armv8-A, Armv7-A)'. Đồng thời cũng là nhà phát triển thực tế hiểu rõ nhất các xu hướng phần mềm hệ thống mới nhất (xe điện, chất bán dẫn hệ thống - phần mềm hệ thống), và là nhà giáo dục tích cực nhất trong việc truyền bá kiến thức trong lĩnh vực phần mềm hệ thống.

  • 'Học cấu trúc và nguyên lý của Linux kernel thông qua debugging' (2021, Giải thưởng sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc) tác giả

  • Tác giả của 'Cấu trúc và nguyên lý kiến trúc Arm cho phát triển phần mềm hệ thống' (năm 2024, Giải thưởng Sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc)

  • 'Programmers Dev Course: Chuyên gia hệ thống Linux và kernel' Giảng viên chính

  • Tháng 6 năm 2022, Hội nghị Khoa học Máy tính Tổng hợp Hàn Quốc (KCC2022) - Bài thuyết trình hướng dẫn [Chinh phục kernel Linux bằng ftrace]

  • LG Electronics giảng viên nội bộ về 'Linux Kernel' và 'Kiến trúc Armv8' (bao gồm các nhà phát triển trong nước và nhà phát triển nước ngoài) - (2020~2024)


Tôi có thể tự tin nói rằng tôi là một giảng viên có thể giải thích 'chức năng debug của Linux kernel' và 'phương pháp khắc phục sự cố' tốt hơn bất kỳ ai khác trong nước.

Những điều cần lưu ý trước khi học

Môi trường thực hành

  • Hệ điều hành và phiên bản (OS): Raspberry Pi (Raspbian), Linux kernel v6.1

Kiến thức tiên quyết và lưu ý

  • Sẽ tốt nếu bạn biết đại khái Linux hoạt động như thế nào.

  • Nếu bạn có kiến thức về hệ điều hành hoặc kiến trúc máy tính thì sẽ có thể học bài một cách thoải mái hơn.

  • Không cần có kiến thức sâu về Linux kernel làm điều kiện tiên quyết.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Lập trình viên junior mong muốn nâng cao năng lực trong lĩnh vực phần mềm hệ thống, bao gồm bán dẫn hệ thống và lĩnh vực ô tô điện (lái tự động, thông tin giải trí).

  • Ứng viên mong muốn phát triển phần mềm hệ thống trong các lĩnh vực như bán dẫn hệ thống, ô tô điện.

  • Sinh viên đại học hướng tới cao học ngành phần mềm hệ thống (bộ nhớ, hệ thống tệp, hệ điều hành)

  • Nhà phát triển ngoài ngành mong muốn chuyển đổi sang lĩnh vực phần mềm hệ thống

  • Lập trình viên phần mềm hệ thống Linux muốn nâng cao khả năng gỡ lỗi

  • Nhà phát triển tìm hiểu quy trình xử lý sự cố liên quan đến phần mềm hệ thống Linux

Cần biết trước khi bắt đầu?

  • Ngôn ngữ C

  • Kiến trúc máy tính

  • Hệ điều hành

Xin chào
Đây là

6,034

Học viên

204

Đánh giá

89

Trả lời

4.9

Xếp hạng

22

Các khóa học

글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (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

Chương trình giảng dạy

Tất cả

34 bài giảng ∙ (4giờ 35phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

14 đánh giá

4.6

14 đánh giá

  • cms15751340님의 프로필 이미지
    cms15751340

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    • redkyo008975님의 프로필 이미지
      redkyo008975

      Đánh giá 4

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      • kdpark5057님의 프로필 이미지
        kdpark5057

        Đánh giá 2

        Đánh giá trung bình 5.0

        5

        62% đã tham gia

        • wodud0432886님의 프로필 이미지
          wodud0432886

          Đánh giá 3

          Đánh giá trung bình 5.0

          5

          100% đã tham gia

          • hjlee929096님의 프로필 이미지
            hjlee929096

            Đánh giá 13

            Đánh giá trung bình 5.0

            5

            32% đã tham gia

            716.781 ₫

            Khóa học khác của austinkim

            Hãy khám phá các khóa học khác của giảng viên!

            Khóa học tương tự

            Khám phá các khóa học khác trong cùng lĩnh vực!