기본 파일 시스템 구성 요소
Buildroot를 이용하여 임베디드 리눅스 시스템을 구축할 때, 기본 파일 시스템(Root File System, 이하 RootFS)은 시스템의 핵심적인 역할을 합니다. RootFS는 부팅 이후 사용자 공간(user space)에서 동작하는 프로그램과 라이브러리, 설정 파일 등을 포함하며, 시스템의 전체적인 구조와 동작 방식에 큰 영향을 미칩니다.
본 포스팅에서는 RootFS의 기본 구성 요소를 살펴보고, Buildroot를 활용하여 이를 구성하는 방법을 설명하겠습니다.
1. Root File System의 개요
RootFS는 리눅스 시스템이 동작하는 데 필요한 모든 사용자 공간 파일을 포함합니다. 일반적으로 다음과 같은 요소로 구성됩니다.
- 디렉터리 구조: 표준 리눅스 파일 시스템 계층 구조(FHS, Filesystem Hierarchy Standard)에 따라
/bin
,/sbin
,/usr
,/lib
,/etc
,/dev
,/proc
,/sys
,/var
,/tmp
등의 디렉터리를 포함합니다. - 실행 파일 및 라이브러리: 커널이 실행한 첫 번째 프로세스(init)와 기본적인 명령어를 실행할 수 있는 바이너리 파일이 포함됩니다.
- 설정 파일: 네트워크 설정, 사용자 계정 정보 등의 환경 설정 파일이 포함됩니다.
- 가상 파일 시스템:
/proc
,/sys
등의 디렉터리는 커널이 런타임에 제공하는 정보와 인터페이스를 포함합니다.
2. RootFS의 기본 디렉터리 구성
RootFS는 표준 리눅스 파일 시스템 계층 구조를 따르며, 일반적으로 다음과 같은 디렉터리를 포함합니다.
2.1 /bin
(Binary)
/bin
디렉터리는 일반 사용자와 시스템이 사용하는 기본 명령어 실행 파일을 포함합니다. 예를 들면 다음과 같은 바이너리 파일이 있습니다.
/bin/sh # 기본 셸
/bin/ls # 디렉터리 목록 출력 명령어
/bin/cp # 파일 복사 명령어
/bin/mv # 파일 이동 명령어
2.2 /sbin
(System Binary)
/sbin
디렉터리는 시스템 관리자가 사용하는 명령어 실행 파일을 포함합니다. 일반 사용자보다는 root 권한을 가진 사용자가 주로 사용합니다.
/sbin/init # 시스템 초기화 프로세스
/sbin/reboot # 시스템 재부팅 명령어
/sbin/ifconfig # 네트워크 인터페이스 설정 명령어
2.3 /lib
및 /lib64
(Libraries)
/lib
디렉터리는 실행 바이너리가 동작하는 데 필요한 공유 라이브러리를 포함합니다. 32비트 시스템은 /lib
, 64비트 시스템은 /lib64
를 사용합니다.
/lib/libc.so.6 # C 라이브러리
/lib/ld-linux.so.2 # 동적 링커
2.4 /etc
(Configuration Files)
/etc
디렉터리는 시스템의 전반적인 설정을 담당하는 파일들을 포함합니다.
/etc/passwd # 사용자 계정 정보
/etc/shadow # 사용자 암호 정보
/etc/fstab # 파일 시스템 마운트 설정
/etc/network/interfaces # 네트워크 설정 파일
2.5 /dev
(Device Files)
/dev
디렉터리는 시스템에서 사용되는 디바이스 파일을 포함합니다. 이 디렉터리는 동적 또는 정적으로 생성될 수 있습니다.
/dev/null # 모든 데이터를 폐기하는 장치 파일
/dev/tty # 터미널 장치 파일
/dev/sda # 첫 번째 하드 디스크 장치 파일
2.6 /proc
및 /sys
(Virtual Filesystem)
이 두 디렉터리는 가상 파일 시스템으로서, 실행 중인 시스템의 커널 정보를 제공합니다.
/proc/cpuinfo
: CPU 정보 출력/proc/meminfo
: 메모리 정보 출력/sys/class/net
: 네트워크 인터페이스 정보 제공
2.7 /var
및 /tmp
(Logs & Temporary Files)
/var
디렉터리는 시스템 실행 중 생성되는 로그 파일, 캐시 데이터를 저장합니다./tmp
디렉터리는 임시 파일을 저장하며, 시스템 재부팅 시 데이터가 삭제될 수 있습니다.
3. Buildroot를 이용한 RootFS 구성
Buildroot를 이용하면 기본적인 RootFS를 손쉽게 빌드할 수 있습니다. 이를 위해 Buildroot 설정을 확인하고 필요한 패키지를 포함하여 RootFS를 구성할 수 있습니다.
3.1 Buildroot 설정 확인
먼저 Buildroot의 설정을 확인하여 RootFS 구성을 조정할 수 있습니다.
make menuconfig
이후 다음 항목을 설정합니다.
- Target options: 타겟 아키텍처 및 ABI 설정
- Build options: 빌드 결과물 저장 경로 설정
- Filesystem images: RootFS 형식 선택 (ext4, cpio, tar 등)
- System configuration: 기본 설정 파일 지정
3.2 RootFS 빌드
설정이 완료되면 RootFS를 빌드합니다.
make
빌드가 완료되면 output/images/rootfs.tar
등의 파일이 생성되며, 이를 마운트하여 확인할 수 있습니다.
3.3 RootFS 마운트 및 확인
다음과 같이 RootFS를 마운트하여 내용을 확인할 수 있습니다.
mkdir -p /mnt/rootfs
sudo mount -o loop output/images/rootfs.ext4 /mnt/rootfs
ls /mnt/rootfs
4. 결론
RootFS는 리눅스 시스템에서 사용자 공간의 핵심 역할을 하며, 다양한 구성 요소가 존재합니다. Buildroot를 활용하면 RootFS를 쉽게 빌드할 수 있으며, 시스템 요구사항에 맞게 커스터마이징할 수 있습니다.
'Linux > buildroot' 카테고리의 다른 글
Buildroot Init 스크립트 및 서비스 설정 (0) | 2025.04.13 |
---|---|
Buildroot에서 사용자 정의 디렉터리 및 파일 추가 방법 (0) | 2025.04.12 |
Buildroot 간단한 C/C++ 애플리케이션 추가 및 실행 (0) | 2025.04.10 |
Buildroot에서 사용자 정의 패키지 작성법 및 Config.in 설정 (0) | 2025.04.09 |
Buildroot에서 Custom Application 추가하기 (0) | 2025.04.08 |