Linux(10)
-
커널 내부 구조
커널 내부 리눅스 시동 [ x86 기반 하드웨어에서 리눅스 시동 절차 과정 ] 전원 인가 ⇩ BIOS ⇩ 부트로더(GRUB/LILO...) ⇩ 실제주소 모드 커널 ︙ x86 실제 주소 모드 (arch/x86/boot/pm.c) x86 보호 모드 ︙ 부호 모든 커널 ⇩ 사용자 프로세스와 데몬 BIOS가 MBR을 메모리에 올리면서 시작 MBR에 있는 코드는 파티션 테이블을 확인한다. 이를 통해 활성 파티션에서 GRUB, LILO, SYSLINUX와 같은 리눅스 부트로더를 읽는다. 부트로더는 압축된 커널 이미지를 메모리에 올린 후 제어권을 넘김 그러면 제어권을 받은 커널은 자신의 압축을 해제한 뒤 시동을 건다 1단계 커널 초기화 : 실제 주소 모드 어셈블리로 수행 2단계 시동 절차 : init/main.c에 ..
2023.11.06 -
리눅스 커널 최신 버전 설치 및 빌드 (Ubuntu) - Printk() 코드 삽입
오늘은 간단하게 커널 최신 버전을 Ubuntu에 가져와 원시 코드를 확인한 뒤, 커널 시작 코드에 printk("Hello, I am N0min9g") 명령어를 삽입하여 부팅시 " Hello, I am N0min9g" 문자열이 출력되도록 할 것이다. 총 3가지로 진행된다. 첫번째로, kernel의 config를 구성하는 것이다. 해당 과정을 진행하지 않으면 수많은 요구사항들을 노가다로 선택해야할 것이다. 두번째로, kernel을 빌드하는 것이다. 흔히들 make bzImage와 같이 컴파일 한다고 생각하면 된다. 세번째로, kernel을 본격적으로 설치한다. 커널 최신 버전 설치 Stable 버전 kernel.org에 나타나있는 stable한 버전 '6.5.10' 버전을 확인한다. kernel.org 트..
2023.11.03 -
커널 디버깅과 코드 학습(8)
보호되어 있는 글입니다.
2023.10.31 -
커널 디버깅과 코드 학습(7)
보호되어 있는 글입니다.
2023.10.13 -
커널 디버깅과 코드 학습(6)
보호되어 있는 글입니다.
2023.10.12 -
커널 디버깅과 코드 학습(5)
보호되어 있는 글입니다.
2023.10.06