강의

멘토링

커뮤니티

BEST
Security & Network

/

System

Linuxカーネルの構造と原理:デバッグ - Basic [著者直講第1部-2]

システムソフトウェアで最もよく使われる、最新リナックスカーネル(v6.1)の基本的なデバッグ機能と方法を、「디버깅을 통해 배우는 리눅스 커널의 구조와 원리」の著者が適切に説明します。

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

学習した受講者のレビュー

受講後に得られること

  • 実践プロジェクトでデバッグが重要な理由と、実際のデバッグ過程

  • デバッグ能力を高める様々な方法と実戦プロジェクトで発生しうるイシューの類型

  • printkおよびdump_stack()を活用してカーネルをデバッグする方法

  • printkを使ってデバイスドライバーを設計し、デバッグパッチを作成する方法

  • Ftraceの活用方法と設定方法

  • 多様なイベントのFtraceメッセージを通じたLinuxカーネルの主要な動作原理

<お知らせ>

1,500名突破30%割引クーポン発行

受講生500名突破(Linuxカーネルの構造と原理)を記念して30%割引クーポンを発行します。ありがとうございます。先着100名です。

2.ロードマップ案内 🎯

今回の講義はロードマップ'システムソフトウェア開発者のためのLinux kernel - basic course'に含まれる講義です。

体系的にLinuxカーネルを構成する主要機能を学びたい方は、ロードマップ(全講義30%割引)を活用されると良いでしょう。

システム半導体、自動車分野など

システムソフトウェア開発者なら必ず知っておくべきLinuxカーネル


IT機器で最も多く使用されているオペレーティングシステムは何でしょうか?それはLinuxオペレーティングシステムです。スマートフォン、デジタルTV、航空エンターテインメントシステム、そしてサーバーで使用されています。システム半導体企業では、Linux(Linuxデバイスドライバー)を活用して自社が設計したハードウェアを制御しています。また、電気自動車(Automotive)を構成する様々な部品(インフォテインメント、自動運転、テレマティクス)にもLinuxが多く活用されています。

Linuxオペレーティングシステムの核心はLinuxカーネルです。Armv8-Aアーキテクチャと共に、現在のシステムソフトウェア業界で最も必要とされる基盤知識が要求される内容がLinuxカーネルとも言えるでしょう。

Linuxシステムソフトウェア開発者、Linux組み込みシステム(BSP)プログラマー注目!

✅ システム半導体、電気自動車分野(自律走行、インフォテインメント)を含むLinuxシステムソフトウェア分野でのジュニア開発者

✅ システム半導体、電気自動車分野のようなLinuxシステムソフトウェア開発分野で働きたい就職準備生

✅ Linuxシステムソフトウェア分野(メモリ、ファイルシステム、オペレーティングシステム)の大学院進学希望者

✅ Linuxシステムソフトウェア分野にキャリアチェンジを目指す他分野の開発者

しかし、Linuxカーネルはシステムソフトウェア分野の初心者にとって巨大な壁のような存在です。初心者たちはLinuxカーネルを学ぼうとして何度も諦めた経験があるでしょう。その難しいLinuxカーネルがバージョンアップグレードされながら、ますます複雑に進化しています。2024年以降、Linuxカーネルバージョンはv6.6以上にアップグレードされありますが、参入障壁がより高くなっています。

システム半導体、電気自動車分野を含む様々な分野に配置されているLinuxシステムソフトウェア開発者の皆さんは、Linuxカーネルをよく知ってこそ開発能力を向上させることができるという事実は知っています。しかし、Linuxカーネルをどのように学ぶべきか、そして何よりも実務でどのような内容をよく知っておくべきかを把握するのが難しい状況です。

新人またはジュニア組み込みLinuxシステム開発者の現実

新人またはジュニア組み込みLinuxシステム開発者は、問題を解決する過程で最も苦労します。その理由は何でしょうか?

1.デバッグ関連資料不足

ウェブ開発をはじめとする様々なソフトウェア分野では、デバッグのための開発環境が比較的よく整備されています。また初心者向けの講義や書籍も多く、デバッグ方法を学ぶ際に多くの試行錯誤を経験することはありません。しかしLinuxシステムソフトウェア開発では、デバッグに関する資料はあるものの、初心者が理解するには難しい開発用ドキュメントがほとんどです。

2.デバッグに関連したサポートを受けることが困難

Linuxシステムソフトウェア関連プロジェクトでデバッグはどのように行うのでしょうか?ほとんどの場合、カーネルログやメモリダンプを分析します。ログやダンプを適切に分析するには、どのような能力が求められるでしょうか?Linuxカーネルのソースコードを読んで理解したり、プロセスや割り込みなどの動作原理を把握する能力が必要です。しかし実際のプロジェクトでこのような能力を持つ先輩開発者は少なく、運良くデバッグが得意な開発者がいても、ほとんどが忙しすぎて詳細で親切に説明してくれるのが難しいのが現実です。

3. デバッグをなぜ行うのか理解しにくい

分野を問わず、ほとんどの問題解決能力を向上させるための核心的な力量がデバッグであるという事実は知っています。しかし就活生はもちろん、ジュニアLinuxシステムソフトウェア開発者も実戦プロジェクトでデバッグをなぜするのか分からない場合が多いです。またデバッグを上手く行うために何を準備すべきか分かりにくく、もどかしく思っています。しかし実戦プロジェクトを進めている最中にバグやイシューを割り当てられると、分析をどのように始めるかすら分からず試行錯誤を繰り返す可能性が高いです。結局絶え間ない残業につながり、自分がLinuxシステムソフトウェア分野に適性が不足していると自分を責めるようになります。

Linuxシステムソフトウェア開発者が最も伸ばしたい開発能力は?

結局、Linuxシステムソフトウェア開発者が最も学びたい実務スキルは何でしょうか?それはデバッグスキルです。デバッグは問題解決能力と比例するため、デバッグ能力を向上させたいと思っています。Linuxカーネルに関するブログや資料は多くありますが、最新のデバッグ技法を活用して問題を体系的に解決する方法はほとんど扱われていません。

そこで私が書いた「デバッグを通して学ぶLinuxカーネルの構造と原理」の3章「デバッグとコード学習」でデバッグに関する内容を扱っています。この講義は「デバッグを通して学ぶLinuxカーネルの構造と原理」著者直講講義として、本の3章の内容を扱います。さらに、書籍では扱わない実用的なデバッグ方法について説明します。

こんな内容を学びます

実戦プロジェクトでデバッグが重要な理由と実際のデバッグを行う過程を詳細に説明します。

デバッグ能力を向上させる様々な方法と実戦プロジェクトで発生する可能性のある問題の種類を紹介します。

実戦プロジェクトと最も類似した事例を参考にして、カーネルデバッグを行う過程を詳細に説明します。

printk와dump_stack()を活用してカーネルをデバッグする方法を詳細に説明します。関連するリファレンスコードも併せて説明します。

実際のRaspberry Piでカーネルログを確認して分析する実習を進めます。また、メモリダンプをCrash Utilityプログラムでロードしてカーネルログを開いて詳細に分析します。

printkを使用してデバイスドライバーを設計し、デバッグパッチを作成する方法を詳細に説明します。

Linuxカーネルが提供するコアデバッグ機能であるFtraceについて説明します。特にFtraceを活用する方法と設定方法を詳細に説明します。

Ftraceメッセージを詳細に説明します。特に関数の呼び出しフローを把握できるstack traceを詳細に分析します。

Ftraceメッセージを通じてカーネルソースを分析する方法と様々なFtraceイベントについて説明します。

ラズベリーパイで直接Ftraceを設定しながらFtraceの設定方式を説明します。また、Ftraceログを抽出した後、様々なイベントのFtraceメッセージを分析します。


書籍執筆・講義経験をもとに
誰よりも深く詳細に!

国内システムソフトウェア分野で前代未聞!「Linuxカーネル」本と「Armアーキテクチャ(Armv8-A、Armv7-A)」本を書いた著者です。また、最新システムソフトウェアトレンド(電気自動車、システム半導体-システムソフトウェア)を最もよく知っている現役開発者であり、システムソフトウェア分野で最も知識普及活動を活発に行っている教育者です。

  • 「デバッグを通して学ぶLinuxカーネルの構造と原理」2021年、大韓民国学術院優秀図書賞)著者

  • 「システムソフトウェア開発のためのArmアーキテクチャの構造と原理」(2024年、大韓民国学術院優秀図書賞著者

  • 'プログラマース デブ コース: Linuxシステム及びカーネル専門家' メイン講師

  • 2022年6月、韓国コンピュータ総合学術大会(KCC2022)- チュートリアル発表「ftraceを利用してLinuxカーネルを征服する」

  • LG電子「Linuxカーネル」及び「Armv8アーキテクチャ」社内講師(国内及び海外開発者含む) - (2020年〜2024年)


国内で誰よりも「Linuxカーネルのデバッグ機能」と「トラブルシューティング方法」を上手く説明できる教育者だと自信を持って申し上げることができます。

受講前の参考事項

実習環境

  • オペレーティングシステムおよびバージョン(OS):Raspberry Pi(Raspbian)、Linuxカーネル v6.1

前提知識および注意事項

  • 大まかにLinuxがどのように動作するかご存知であれば良いです。

  • オペレーティングシステムやコンピュータアーキテクチャについて知っていれば、より楽に授業を受けることができます。

  • Linuxカーネルに関する深い予備知識は必要ありません。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • システム半導体、電気自動車分野(自動運転、インフォテインメント)を含むシステムソフトウェア分野で能力を伸ばしたいジュニア開発者

  • システム半導体、電気自動車分野のようなシステムソフトウェア開発をしたい就職準備生

  • システムソフトウェア分野(メモリ、ファイルシステム、オペレーティングシステム)の大学院進学を目標とする大学生

  • システムソフトウェア分野へキャリア転換を考えている他分野のエンジニア

  • Linuxシステムソフトウェア開発者として、デバッグ能力を高めたい開発者

  • Linuxシステムソフトウェアに関連する問題解決の過程を知りたい開発者

前提知識、
必要でしょうか?

  • C言語

  • コンピュータ構造

  • オペレーティングシステム

こんにちは
です。

6,018

受講生

200

受講レビュー

89

回答

4.9

講座評価

22

講座

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

カリキュラム

全体

34件 ∙ (4時間 35分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

14件

4.6

14件の受講レビュー

  • cms15751340님의 프로필 이미지
    cms15751340

    受講レビュー 2

    平均評価 5.0

    5

    100% 受講後に作成

    • redkyo008975님의 프로필 이미지
      redkyo008975

      受講レビュー 4

      平均評価 5.0

      5

      100% 受講後に作成

      • kdpark5057님의 프로필 이미지
        kdpark5057

        受講レビュー 2

        平均評価 5.0

        5

        62% 受講後に作成

        • wodud0432886님의 프로필 이미지
          wodud0432886

          受講レビュー 3

          平均評価 5.0

          5

          100% 受講後に作成

          • hjlee929096님의 프로필 이미지
            hjlee929096

            受講レビュー 13

            平均評価 5.0

            5

            32% 受講後に作成

            ¥4,235

            austinkimの他の講座

            知識共有者の他の講座を見てみましょう!

            似ている講座

            同じ分野の他の講座を見てみましょう!