강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

누구나 쉽게 배우는 임베디드 리눅스⑤

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

누구나 쉽게 배우는 임베디드 리눅스


루트
파일 시스템은
어떻게 구성되는가

 

 

지난 호에서는 리눅스 커널을 빌드하고 실행해 보면서,

커널 부팅 메시지가 출력 도중 멈추는 데까지 확인을 보았다.

커널 이미지만 가지고서는 부팅을 하는 불충분하기 때문이다.

이번 시간에는 부팅을 완료하는 데까지 필요한 마지막 조건인 루트 파일 시스템에 대해 다룰 것이다.

 

_ 장영준 삼성전자 SW연구소 Linux Technology Group 선임 연구원

 

연재 순서

임베디드 리눅스 걸음마

교차 개발 환경을 구축하자

부트로더 설정은 이렇게

커널을 올려보자

루트 파일 시스템은 어떻게 구성되는가

2% 부족함을 채워보자

 

 

부팅에 필요한 파일 시스템, RFS

리눅스가 적재된 PC 사용하기 위해서는 필요한 요소가 바로 하드디스크, 플래시와 같은 저장장치이다. 여기에는 PC 사용하기 위해 필요한 프로그램과 자료들이 저장돼 있고, 시스템 초기화 각종 주변장치들을 제어하기 위한 파일 부팅에 필요한 내용도 포함돼 있다. 리눅스에서 이러한 저장장치는 파일 시스템으로 관리되고 있는데, 시스템 초기화 관리에 필요한 내용을 담고 있어 부팅에 필요한 파일 시스템을 루트 파일 시스템(Root File System, 이하 RFS)이라고 한다.

리눅스가 설치된 PC 보면/라는 디렉토리가 있고, /아래의 하위 디렉토리로 /bin, /sbin, /lib등의 디렉토리가 있음을 확인할 있다. 여기서/라는 디렉토리는 저장장치와 연결이 되어 있어, 리눅스의 동작에 필요한 기능을 담고 있다. 이때/ 루트 파일 시스템(RFS) 된다.

그렇다면 커널 부팅을 완료하기 위해서는 타겟에 RFS 적재하고, 커널에서 RFS 어느 위치에 있는가를 알려주는 과정을 거쳐야 것이다. 이제부터 RFS 구축하고, 이를 이용하여 커널 부팅을 완료하는 과정에 대해 알아 보겠다.

 

RFS 디렉토리 생성

RFS 만들기에 앞서, 그동안의 과정에서는 oss라는 유저 계정을 만들어 사용해 왔는데, 이번 시간은 root 계정으로 진행을 하겠다. 과정 중간에 root 계정으로만 있는 일들이 있기 때문이다. root 계정으로 RFS 구성하는 작업은 자칫 PC 시스템 파일을 잘못 건드릴 우려가 있기 때문에 다른 작업 비해 각별한 주의를 요한다.

먼저, RFS 디렉토리를 생성한다.

 

# cd ~oss/

# mkdir mk_rfs

# cd mk_rfs

# mkdir rfs tmp

 

 

여기에서 rfs RFS 구성할 디렉토리이고, tmp 과정 중에 사용될 임시 디렉토리이다. 이어서 실제 RFS 구성하게 rfs 디렉토리를 구성해 보자.

 

# cd rfs

# mkdir bin sbin etc dev lib usr mnt proc sys

 

 

이제부터는 디렉토리의 내용을 채워 보도록 하겠다.

 

busybox 설치

RFS 구성하는데 필요한 프로그램들을 설치하는 과정이다.

리눅스를 구동하는데 필요한 가장 기본이 되는 프로그램은 (shell)이다. GUI모드가 아닌 커맨드 라인 모드로 리눅스 부팅을 하게 되면 프롬프트가 뜨게 되고, 여기에서 명령어를 입력하여 다양한 프로그램을 실행하게 된다. 이러한 역할을 수행하는 쉘을 비롯하여, 시스템 동작에 필요한 ls, mv, cp, ps등의 유틸리티를 설치해야 기본적인 리눅스 명령어를 실행할 기반이 갖춰지는데, 이러한 프로그램 각각을 구하여 빌드해서 설치해도 되지만, 여기서는 임베디드 리눅스에서 많이 사용되는 busybox라는 프로그램을 이용하기로 한다.

busybox 역시 오픈소스이기 때문에 무료로 사용가능하고,공식사이트는http://www.busybox.net/

이다. 자세한 정보 소스 코드를 구할 있다. busybox 위에서 언급한 shell 비롯하여, ls, mv, cp 기본적으로 필요한 프로그램들을 한데 묶어 busybox라는 하나의 파일로서 실행되도록 만들어 준다. 필요한 기능들을 하나로 관리해 주기 때문에 설치가 편리하고, 무엇보다도 각각을 직접 만들었을 때보다 실행파일의 크기가 현저히 작아진다는 이유로, 저장공간에 제약을 받는 임베디드 리눅스에서 많이 사용되고 있다. 물론, 크기를 작게 만들기 위한 프로그램이기 때문에, 모든 기능이 들어 있는 것은 아니므로, 필요한 프로그램을 추가로 설치해야 필요가 생기기도 하는데, 기본 기능만을 필요로 하는 임베디드 시스템에서는 busybox 하나만으로도 충분히 사용 가능하다.

그러면 busybox 설치 방법에 대해 알아보겠다. 여기서는 최신 안정 버전인 1.8.2 기준으로 설명한다.

 

먼저, 공식 사이트에서 소스 코드를 다운로드받고, 압축을 해제한다.

 

# wget http://busybox.net/downloads/busybox-1.8.2.tar.bz2

# tar - xjf busybox-1.8.2.tar.bz2

# cd busybox-1.8.2

 

busybox 빌드는 리눅스 커널과 비슷한 방식으로 진행된다. Makefile ARCH CROSS_COMPILE

항목을 다음과 같이 수정한다.

 

Makefile (Line 175)

 

#ARCH ?= $(SUBARCH)

#CROSS_COMPILE ?=

ARCH = arm

CROSS_COMPILE = arm-linux-

 

다음으로 busybox 빌드하기 위한 옵션을 지정한다.

 

# make menuconfig

위와 같은 화면이 나오고, 목적에 맞게 필요한 프로그램을 등록하거나 기능을 선택할 있다. 디폴트로 자주 사용되는 옵션이 지정되어 있으므로, 여기서는 옵션 변경 없이 저장하고 종료한다.

 

image001.jpg

 

마지막으로 빌드 인스톨 작업을 수행한다.

 

# make

# make CONFIG_PREFIX=./_inst install

 

인스톨 과정에 추가된 CONFIG_PREFIX 빌드가 완료된 busybox _inst 디렉토리로 설치해준다.

 

생성된 _inst 디렉토리의 내용을 보면 bin, linuxrc, sbin, usr 라는 디렉토리 파일이 생성되었음을 확인할 있고, 이를 RFS 복사한다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,156 명
  • 현재 강좌수 :  36,513 개
  • 현재 접속자 :  298 명