본문 바로가기
임베디드 개발/임베디드 리눅스

Linux Root Filesystem 구조

by eteo 2026. 1. 15.
반응형

 

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

 

 

반응형