#1에서 SD 카드에 부트로더+리눅스커널+루트파일시스템을 넣을 준비를 모두 마쳤다.
이제 SD 카드 작업을 순차적으로 실시해보자.
1. DISK 환경 변수 설정
lsblk 명령어를 사용해서 현재 블럭 장치에 대해서 확인을 한다.
그 다음 SD카드를 삽입하고 동일하게 lsblk 명령어를 사용해서 다른 부분을 확인한다.
다른 부분은 보시다시피 sdb가 되겠다. sdb1이 SD카드 임을 확인 할 수 있다.
그래서 다음과 같이 환경 변수를 설정한다.
export DISK=/dev/sdb |
2. MicroSD 카드 포맷
MicroSD 카드를 다음 명령어로 파티션을 지우고 포맷한다.
sudo dd if=/dev/zero of=${DISK} bs=1M count=10 |
3. Boot loader Install
~/ (루트폴더에서)
sudo dd if=./u-boot/MLO of=${DISK} count=1 seek=1 bs=128k sudo dd if=./u-boot/u-boot.img of=${DISK} count=2 seek=1 bs=384k |
u-boot 폴더안에서 MLO와 u-boot.img 파일의 크기를 보면 각각 92.6kB와 476.5kB 이다.
따라서 첫번째 행의 명령어를 하기와 같이 실행하면,
그 결과로, u-boot 폴더에 있는 MLO 파일이 이전에 환경 변수를 설정한 DISK위치 즉 MicroSD에 128k 크기 만큼 복사를 한다(MLO 파일이 92.6kB이므로 충분히 커버가 됨).
두번째 행의 명령어를 하기와 같이 입력.
그 결과로, u-boot 폴더에 있는 u-boot.img 파일이 위에 설명했던 내용과 동일하게 MicroSD에 384k*2 크기 만큼 복사를 한다.
4. 파티션 생성
부팅로더가 들어간 부분과 그렇지 않은 부분에 대해서 파티션을 생성해야 하는데, util-linux 버젼 별로 상이하다고 한다.
따라서 다음과 같이 먼저 버젼을 확인할 필요가 있다.
내가 사용하는 util-linux 버젼은 2.31.1이다.
아래와 같이 버젼에 따라 명령어가 다르다.
sfdisk >= 2.26.x
sfdisk <= 2.25.x
|
sfdisk >= 2.26x를 사용해야 하므로 다음과 같이 명령어를 실행한다.
5. 파티션 포맷
mkfs.ext4에 대한 버젼을 확인 후 파티션 포맷을 실행한다.
버젼에 따라 명령어가 다른데, 현재 내가 사용하는 버젼은 1.44.1이다.
mkfs.ext4 >= 1.43
mkfs.ext4 <= 1.42
|
그래서 첫번째 방법을 이용하여 명령어를 다음과 같이 수행한다.
MicroSD 카드를 사용하기 위해서는 임의의 폴더를 만들고, 그곳에 마운트를 시켜야지만 MicroSD카드를 이용 가능하다.
따라서, 여기서는 /media/rootfs/ 라는 폴더를 만든 다음, SDcard에 mount한다.
sudo mkdir -p /media/rootfs/
for: DISK=/dev/mmcblkX sudo mount ${DISK}p1 /media/rootfs/
for: DISK=/dev/sdX sudo mount ${DISK}1 /media/rootfs/ |
다음과 같이 실행을 해보았다.
lsblk 명령어를 사용하여 실제 MicroSD 카드가 Mount된 이름(/media/rootfs/)을 다음과 같이 확인 할 수 있다.
'안드로이드 임베디드 > 비글보드' 카테고리의 다른 글
안드로이드 소스 컴파일 - #1 (0) | 2019.11.19 |
---|---|
비글보드용 SD카드 이미지 만들기 - #3(Ubuntu v18.04) (2) | 2019.11.18 |
비글보드용 SD카드 이미지 만들기 - #1(Ubuntu v18.04) (4) | 2019.11.14 |
비글본블랙(BeagleBoneBlack) UART로 PC와 연결하기 (0) | 2019.11.12 |
ARM 용 크로스 컴파일러 설치 (0) | 2019.11.09 |