반응형
Linux BSP 개발자 입자에서 중요하다고 생가하는 Root Filesystem 구조에 대해 정리해보고자 한다.
- /
- bin -> /usr/bin/ : 필수 사용자 프로그램 (ls, sudo, sh, cp rm 등)
- boot : 부팅 프로세스에 필요한 파일
- vmlinuz, zImage, Image : 리눅스 커널 이미지
- dtb/, dtbo/ : 장치 정보를 담은 Device Tree Blob
- dev/ : 물리적 장치를 파일로 추상화한 디바이스 노드 파일
- null : 데이터 버림용 가상 장치
- zero : 데이터 생성용 가상 장치
- tty* : 시리얼 통신 장치
- mmcblk* : eMMC/SD 카드 블록 장치
- etc/ : 시스템 전반 설정 파일
- fstab : 파일 시스템 마운트 설정
- sysctl.conf : 커널 내부 파라미터를 부팅 시 자동으로 설정하는 파일로, sysctl 명령을 통해 해당 파라미터를 런타임에 읽고(sysctl key), 쓰고(sysctl -w key=value), 적용(sysctl -p)할 수 있음
- init.d/ : SysV init 방식 부팅 시 실행될 스크립트(레거시)
- systemd : systemd 방식 서비스 유닛 설정
- passwd, group, shadow :
- udev/rules.d/ : 하드웨어가 연결 시 어떤 이름, 권한, 심볼릭 링크로 디바이스 노드를 만들지 정의하는 규칙
- home/ : 일반 사용자용 홈 디렉토리
- lib -> /usr/lib/ : 시스템 필수 공유 라이브러리 및 커널 모듈
- /modules/$(uname -r)/ : 현재 커널 버전에 맞는 드라이버 파일(.ko) 및 의존성 파일
- firmware/ : Wi-Fi, BT, GPU 등의 하드웨어 구동용 바이너리 펌웨어
- lost+found/ : 파일 시스템 체크(fsck) 중 복구된 파일 저장 공간
- media/ : 시스템이 외부 장치를 자동으로 마운트하는 임시 공간
- mnt/ : 관리자가 외부 장치를 수동으로 마운트하는 임시 공간
- opt/ : 추가적인(Optional) 서드파티 애플리케이션 설치 공간 (배포판 외부 패키지)
- proc/ : 커널 상태정보(cpu, memory, interrupts 등)를 제공하는 가상 파일 시스템
- device-tree/ : 부트로더가 커널에 넘긴 DTB 정보를 가상 파일 시스템으로 펼쳐놓은 것 (ACPI 기반 x86에는 없음)
- cmdline : 부트로더가 커널에 전달한 인자(Bootargs) 확인
- root/ : 최상위 관리자의 홈 디렉토리
- run/ <- /var/run : tmpfs로 마운트되는 런타임 상태 정보 저장 공간으로 재부팅 시 초기화됨 (PID 파일, 소켓 파일, systemd 서비스의 런타임 데이터 등)
- sbin -> /usr/sbin/ : 관리자 전용 시스템 관리 프로그램 (ip, fdisk, reboot)
- snap/ : snap 패키지 관리용 공간
- srv/ : 시스템이 외부 네트워크에 제공하는 서비스의 데이터 공간 (Web, FTP, NFS 서버로 운영될 때)
- sys/ : 커널 객체와 드라이버 객체를 사용자 공간에 노출하는 가상 파일 시스템(sysfs)
- class/ : 장치를 기능 별(gpio, led, rtc 등)로 그룹화하여 제어 인터페이스를 제공하는 곳
- kernel/debug/ : debugfs를 마운트하여 커널 및 드라이버의 내부 상태를 디버깅하기 위해 사용하는 공간
- tmp/ : 임시 데이터 공간 (짧은 수명)
- usr/ : 사용자 공간의 대부분의 프로그램, 라이브러리, 리소스가 위치하는 곳
- lib/ : 사용자 프로그램이 사용하는 공유 라이브러리
- include/ : 사용자 공간 프로그램 또는 라이브러리 개발용 헤더 파일
- local/ : 배포판 패키지와는 별개로 사용자 직접 개발한 소프트웨어를 설치하기 위한 영역
- bin/ : 사용자 커스텀 실행 파일
- lib/ : /usr/local/bin에서 사용하는 사용자 커스텀 라이브러리
- var/ : 시스템 실행 중 변경되는 가변 데이터를 저장하는 곳
- log/ : 커널 및 서비스의 로그 파일 저장 위치
- tmp/ : 임시 데이터 공간 (긴 수명, 재부팅 후에도 유지)
- lock -> /run/lock : 서비스 간 동기화를 위한 잠금 파일 저장 위치
- lib/ : 서비스의 상태 정보, 데이터베이스, flag 파일 등 각 서비스가 지속적으로 유지관리하는 데이터 저장 위치 (이름과 달리 라이브러리가 아닌 서비스 운영 데이터가 저장됨)
※ tmpfs란?
tmpfs는 커널이 RAM 위에 제공하는 가상 파일 시스템으로, 디스크를 사용하지 않고 메모리에 파일을 저장하며 재부팅 시 내용이 사라진다. tmpfs의 크기는 시스템 RAM을 기준으로 커널이 최대 상한을 정하고, 실제로는 사용된 만큼의 메모리만 소비한다.
$ df -h

※ /tmp와 /var/tmp의 차이
https://unix.stackexchange.com/questions/30489/what-is-the-difference-between-tmp-and-var-tmp
반응형
'임베디드 개발 > 임베디드 리눅스' 카테고리의 다른 글
| LDD ] 시간 지연 함수 사용 시 주의점 (sleep vs delay) (0) | 2026.01.20 |
|---|---|
| Linux ] sysroot란? (0) | 2026.01.10 |
| TCA9538 데이터시트 및 리눅스 드라이버 분석 (Tested on Raspberry Pi 4) (0) | 2025.04.17 |
| TCA9548A 데이터시트 및 리눅스 드라이버 분석 (Tested on Raspberry Pi 4) (0) | 2025.04.06 |
| LDD ] Device Tree (DT, 디바이스 트리) (0) | 2025.03.27 |