피드로 돌아가기
Booting from FAT12: How I added file reading to my x86 kernel
Dev.toDev.to
Infrastructure

FAT12 구현을 통한 x86 커널 외부 바이너리 로드 시스템 구축

Booting from FAT12: How I added file reading to my x86 kernel

Paull Knya-z2026년 5월 22일3advanced

Context

하드코딩된 명령어로만 동작하던 32-bit x86 Protected Mode 커널의 한계를 극복하기 위한 파일 시스템 도입 필요성 대두. 외부 프로그램 실행을 위해 단순한 구조와 풍부한 레퍼런스를 가진 FAT12 파일 시스템 채택.

Technical Solution

  • Boot Sector의 BPB 분석을 통한 Sector 크기 및 FAT/Root Directory 시작 위치 정밀 계산
  • 32-byte Entry 기반의 Root Directory 스캔을 통한 대상 파일의 First Cluster 번호 식별
  • 12-bit Entry 기반의 FAT Chain 추적 로직을 구현하여 비연속적 데이터 클러스터의 순차적 읽기 수행
  • LBA(Logical Block Addressing) 주소를 BIOS int 0x13 표준인 CHS(Cylinder-Head-Sector) 방식으로 변환하는 매핑 레이어 구축
  • 0xB8000 비디오 메모리를 활용한 섹터 단위 덤프 출력으로 디스크 읽기 무결성 검증

- 디스크 레이아웃 설계 시 Reserved Sector를 포함한 정확한 오프셋 계산 필수 여부 검토 - 하드웨어 인터페이스 호출 시 LBA와 CHS 간의 주소 변환 로직 정확성 확인 - 파일 시스템의 Cluster 인덱싱 시작 번호(FAT12의 경우 2번부터 시작) 확인을 통한 Off-by-one 에러 방지 - 저수준 디버깅 시 메모리 직접 접근을 통한 상태 모니터링 체계 구축

원문 읽기