debootstrap이라는 리눅스 유틸리티로 ARM계열의 임베디드 시스템에서 쓸 수 있는 데비안 루트파일시스템을 구축해 봅니다.

debootstrap에 대한 설명은 아래 데비안 위키 페이지에서 잘 설명되어 있습니다.

https://wiki.debian.org/Debootstrap

간략히 설명 드리면 데비안 저장소로부터 데비안 기본 시스템(파일시스템)을 받아서 설치하는 툴입니다. 

특히 호스트 컴퓨터에서 아키텍쳐가 다른 타겟의 임베디드 시스템의 루트파일시스템을 크로스로 구축할 수 있는 장점이 있습니다.

시스템의 루트를 변경할 수 있는 chroot와 함께 사용하면 호스트 내에서 직접 이기종의 루트파일시스템을 수정할 수도 있습니다.


오늘은 debian의 wheezy 릴리즈를 ARM 기반의 임베디드 루트 파일시스템을 구축해 보겠습니다.

사용방법은 아래와 같습니다. 없다면 apt-get install debootstrap으로 설치합니다.


debootstrap --arch=<구축할 루트파일시스템의 CPU 아키텍쳐 종류> --foreign <작업디렉토리> <저장소 URL>


@ --foregin 옵션은 현재 호스트와 타겟의 아키텍쳐가 다른 이기종일 때 반드시 넣어야 합니다. 만약 넣지 않으면 --second-stage로 진입할 수 없습니다.

@ 작업 디렉토리는 이전에 mkdir로 만들지 않더라도 없다면 자동으로 생성합니다.

@ 저장소 URL도 굳이 넣지 않더라도 기본 저장소로 받아옵니다.


그러면 아래와 같이 차근차근 진행합니다.


1. sudo debootstrap --arch=armel --foreign wheezy rfs_wheezy http://ftp.kr.debian.org/debian


여기서는 아키텍처를 armel로 진행합니다. CPU가 ARM 아키텍쳐라도 armel과 armhf로 나뉩니다. 

차이는 Hardware Float이 있고 없고의 차이입니다. ARM Cortex 시리즈라면 armhf로 이전에 나온 아키텍쳐라면 armel로 하면 됩니다.


2. 1번에서 구축한 rfs_wheezy의 /bin/bash는 ARM에서만 실행됩니다. 호스트에서 실행하기 위해서는 qemu 에뮬레이터가 필요합니다.

아래와 같이 qemu를 설치하고 qemu-arm-static 파일을 rfs_wheezy 안으로 복사합니다.

 apt-get install qemu-user-static

$ sudo cp /usr/bin/qemu-arm-static rfs_wheezy/usr/bin/


3. sudo chroot rfs_wheezy /bin/bash /debootstrap/debootstrap --second-stage


아래 4~6번은 apt-get을 위한 저정소 URL 설정입니다.

4. sudo sh -c "echo 'deb  http://ftp.kr.debian.org/debian wheezy main non-free' >> rfs_wheezy/etc/apt/sources.list"

5. sudo sh -c "echo 'deb-src http://ftp.kr.debian.org/debian wheezy main non-free' >> rfs_wheezy/etc/apt/sources.list"

6. sudo chroot rfs_wheezy /usr/bin/apt-get update


이렇게 하면 apt-get도 어느정도 설정이 되었고 업데이트도 되었습니다. 아래 부터는 구축한 루트파일시스템으로 진입해서

inittab에서 콘솔 정보도 변경하고 fstab에 /proc 정보도 수정합니다.


7. sudo chroot rfs_wheezy /bin/bash 

I have no name!@S-PC:/# vi /etc/inittab 

T0:123:respawn:/sbin/getty 115200 ttyS0

I have no name!@S-PC:/# vi /etc/fstab

none /proc proc :defaults 0 0

I have no name!@S-PC:/# passwd

패스워드도 변경합니다. 부팅 후에 로그인할 때 패스워드를 모를수 있습니다.

I have no name!@S-PC:/# exit

작업 후 호스트 콘솔로 다시 빠져나옵니다.


8. 이렇게 해서 만든 루트파일 시스템을 tar로 압축합니다.

$ cd rfs_wheezy

$ tar cf rfs_wheezy.tar *


생성된 rfs_wheezy.tar 파일을 NAND나 mmc에 퓨징을 해서 부팅을 해봅니다.

이상입니다.