리눅스 커널의 구조와 원리: 디버깅 - Basic [저자 직강 1부-2]

(5.0) 수강평 1

수강생 117

Thumbnail

초급자를 위해 준비한
[시스템, linux-kernel] 강의입니다.

시스템 소프트웨어에서 가장 많이 쓰이는, 최신 리눅스 커널(v6.1)의 기본적인 디버깅 기능과 방법을 "디버깅을 통해 배우는 리눅스 커널의 구조와 원리"의 저자가 제대로 설명합니다.

이런 걸
배워요!

  • 실전 프로젝트에서 디버깅이 중요한 이유와 실제 디버깅을 하는 과정

  • 디버깅 능력을 키우는 다양한 방법과 실전 프로젝트에 나올 수 있는 이슈의 유형

  • printk와 dump_stack()을 활용해 커널을 디버깅하는 방법

  • printk를 사용해 디바이스 드라이버를 디자인하고 디버깅 패치를 만드는 방법

  • Ftrace를 활용하는 방법과 설정 방법

  • 다양한 이벤트의 Ftrace 메시지를 통한 리눅스 커널의 주요 동작 원리

<공지>

1.100명 돌파 30% 할인 쿠폰 발행 

수강생 100명 돌파(리눅스 커널의 구조와 원리)를 기념하여 30% 할인 쿠폰을 발행합니다. 감사합니다. 선착순 100명입니다.

  • 쿠폰 : 15890-38c09ae87769

2.로드맵 안내 🎯

이번 강의 <리눅스 커널의 구조와 원리: 디버깅 - Basic [저자 직강 1부-2]>는 로드맵 '시스템 소프트웨어 개발자를 위한 Linux kernel - basic course' 에 포함된 강의입니다.

체계적으로 리눅스 커널을 구성하는 주요 기능을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다.

시스템 반도체, 자동차 분야 등

시스템 소프트웨어 개발자라면 꼭 알아야 할 리눅스 커널


IT 기기에서 가장 많이 사용되는 운영체제는 무엇일까요? 바로 리눅스 운영체제입니다. 스마트 폰, 디지틀 TV, 항공 엔터테인먼트 시스템 및 서버에 사용되고 있습니다. 시스템 반도체 업체에서 리눅스(리눅스 디바이스 드라이버)를 활용해 자신이 설계한 하드웨어를 제어합니다. 또한 전기 자동차(Automotive)을 구성하는 다양한 부품(인포테인먼트, 자율주행, 텔레메틱스)에도 리눅스가 많이 활용되고 있습니다.

리눅스 운영체제의 핵심은 리눅스 커널입니다. Armv8-A 아키텍처와 더불어 현재 시스템 소프트웨어 업계에서 가장 많이 필요한 기반 지식이 요구되는 내용이 리눅스 커널이라고도 볼 수 있어요.

리눅스 시스템 소프트웨어 개발자, 리눅스 임베디드 시스템(BSP) 프로그래머 주목!

시스템 반도체, 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 리눅스 시스템 소프트웨어 분야에서 주니어 개발자   

시스템 반도체, 전기 자동차 분야와 같은 리눅스 시스템 소프트웨어 개발 분야에서 일하고 싶은 취업 준비생 

리눅스 시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학 희망자

리눅스 시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자 

그런데 리눅스 커널은 시스템 소프트웨어 분야의 입문자에 있어 거대한 장벽과 같은 존재입니다. 입문자들은 리눅스 커널을 배우다가 수 차례 포기한 경험이 있을 것입니다. 그 어려운 리눅스 커널 버전이 업그레이드되면서 점점 더 복잡하게 진화하고 있습니다. 2024년 이후에는 리눅스 커널 버전은 v6.6 이상으로 업그레이드되고 있는데, 진입 장벽이 더 높아지고 있습니다.

시스템 반도체, 전기 자동차 분야를 포함한 다양한 분야에 포진된 리눅스 시스템 소프트웨어 개발자 분들은 리눅스 커널을 잘 알아야 개발 역량을 키울 수 있다는 사실은 알고 있습니다. 하지만 리눅스 커널을 어떻게 배워야 하고 무엇보다 실무에서 어떤 내용을 잘 알아야 하는지 감을 잡기 어려운 상황입니다.

신입 혹은 주니어 임베디드 리눅스 시스템 개발자의 현실

신입 혹은 주니어 임베디드 리눅스 시스템 개발자들은 문제를 해결하는 과정에서 가장 많이 고생합니다. 그 이유는 무엇일까요?

1.디버깅 관련 자료 부족

웹 개발을 비롯한 다양한 소프트웨어 분야에서는 디버깅을 위한 개발 환경이 비교적 잘 갖춰져 있습니다. 또한 입문자를 위한 강의나 책도 많아 디버깅 방법을 배울 때 많은 시행 착오를 겪지는 않습니다. 하지만 리눅스 시스템 소프트웨어 개발에서는 디버깅과 관련된 자료는 있으나 입문자가 소화하기 어려운 개발용 문서가 대부분입니다.

2.디버깅과 관련된 도움을 받기 어려움

리눅스 시스템 소프트웨어 관련 프로젝트에서 디버깅은 어떻게 할까요? 거의 대부분 커널 로그나 메모리 덤프를 분석합니다. 로그나 덤프를 제대로 분석하려면 어떤 능력이 요구될까요? 리눅스 커널의 소스 코드를 읽고 이해하거나 프로세스나 인터럽트와 같은 동작 원리를 파악하는 능력이 필요합니다. 하지만 실전 프로젝트에서 이런 능력을 지닌 선배 개발자는 드물고, 운이 좋게 디버깅을 잘하는 개발자가 있어도 대부분 너무 바빠서 상세하고 친절하게 설명해주기 어려운 것이 현실입니다.

3. 디버깅을 왜 하는지 알기 어려움

분야를 막론하고 대부분 문제 해결 능력을 키우기 위한 핵심 역량이 디버깅이라는 사실은 알고 있습니다. 하지만 취준생은 물론 주니어 리눅스 시스템 소프트웨어도 실전 프로젝트에서 디버깅을 왜 하는지 모르는 경우가 많습니다. 또한 디버깅을 잘 하기 위해 무엇을 준비해야 하는지 알기 어려워 답답해 합니다. 하지만 실전 프로젝트를 진행하다가 버그나 이슈를 할당 받으면 분석을 어떻게 시작하는지 조차 몰라 시행착오를 반복할 가능성이 높습니다. 결국 끊임없는 야근으로 이어지고, 자신이 리눅스 시스템 소프트웨어 분야에 적성이 부족하다고 스스로 자책을 하게 됩니다.

리눅스 시스템 소프트웨어 개발자들이 가장 키우고 싶은 개발 역량은?

결국 리눅스 시스템 소프트웨어 개발자들이 가장 배우고 싶은 실무 스킬은 무엇일까요? 바로 디버깅 스킬입니다. 디버깅은 문제 해결 능력과 비례하므로, 디버깅 능력을 키우고 싶어합니다. 리눅스 커널에 대한 블로그나 자료는 많으나 최신 디버깅 기법을 활용해 문제를 체계적으로 해결하는 방법은 거의 다루지 않습니다.

그래서 제가 쓴 '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 3장에서 '디버깅과 코드 학습'에서 디버깅에 대한 내용을 다루고 있습니다. 이 강의는 '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 저자 직강 강의로 책의 3장의 내용을 다룹니다. 더불어 책에서 다루지 않는 실용적인 디버깅 방법을 설명합니다.

이런 내용을 배워요

실전 프로젝트에서 디버깅이 중요한 이유와 실제 디버깅을 하는 과정을 세세하게 설명합니다.

디버깅 능력을 키우는 다양한 방법과 실전 프로젝트에 나올 수 있는 이슈의 유형을 소개합니다.

실전 프로젝트와 가장 유사한 사례를 참고해 커널 디버깅을 하는 과정을 상세히 설명합니다.

printk와 dump_stack()을 활용해 커널을 디버깅하는 방법을 상세하게 설명합니다. 관련 레퍼런스 코드도 함께 설명합니다.

실제 라즈베리 파이에서 커널 로그를 확인해 분석하는 실습을 진행합니다. 또한 메모리 덤프를 Crash Utility 프로그램으로 로딩해 커널 로그를 열어서 상세히 분석합니다.

printk를 사용해 디바이스 드라이버를 디자인하고 디버깅 패치를 만드는 방법을 상세하게 설명합니다.

리눅스 커널에서 제공하는 핵심 디버깅 기능인 Ftrace에 대해 설명합니다. 특히 Ftrace를 활용하는 방법과 설정 방법을 상세하게 설명합니다.

Ftrace 메시지를 상세히 설명합니다. 특히 함수의 호출 흐름을 파악할 수 있는 stack trace를 상세히 분석합니다.

Ftrace 메시지를 통해 커널 소스를 분석하는 방법과 다양한 Ftrace event에 대해 설명합니다.

라즈베리 파이에서 직접 Ftrace를 설정하면서 Ftrace 설정 방식을 설명합니다. 또한 Ftrace log를 추출한 다음에 다양한 이벤트의 Ftrace 메시지를 분석합니다.


책 집필/강의경력을 바탕으로
누구보다 깊고 상세하게!

국내 시스템 소프트웨어 분야에서 전무후무한! '리눅스 커널'책과 'Arm 아키텍처(Armv8-A, Armv7-A)' 책을 쓴 저자입니다. 또한 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자이자, 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

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

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2023년) 저자

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

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

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


국내에서 어느 누구보다 '리눅스 커널의 디버깅 기능'과 '트러블슈팅 방법'을 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

수강 전 참고 사항

실습 환경

  • 운영 체제 및 버전(OS): 라즈베리 파이(라즈비안), 리눅스 커널 v6.1

선수 지식 및 유의사항

  • 대략적으로 리눅스가 어떻게 동작하는지 아시면 좋습니다.

  • 운영체제나 컴퓨터 구조에 대해 알고 있으면 더 편하게 수업을 들을 수 있습니다.

  • 리눅스 커널에 대한 깊이 있는 선수 지식은 필요하지 않습니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 시스템 반도체, 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 시스템 소프트웨어 분야에서 역량을 키우고 싶은 주니어 개발자

  • 시스템 반도체, 전기 자동차 분야와 같은 시스템 소프트웨어 개발을 하고 싶은 취업 준비생

  • 시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학을 목표로 하는 대학생

  • 시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자

  • 리눅스 시스템 소프트웨어 개발자로 디버깅 능력을 키우고 싶은 개발자

  • 리눅스 시스템 소프트웨어와 관련된 문제 해결 과정을 알고 싶은 개발자

선수 지식,
필요할까요?

  • C언어

  • 컴퓨터구조

  • 운영체제

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자이며, 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2023년) 저자

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

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

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

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

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

주요 로드맵 🎯

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

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

로드맵_이미지_스킨.png

 

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

image

체계적으로 Arm 아키텍처(Armv8-A, Armv7-A)와 리눅스 커널을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다.

커리큘럼

전체

33 ∙ 4시간 35분

강의 게시일: 2024년 03월 07일
마지막 업데이트일: 2024년 04월 13일

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!