sd 카드 플래싱 쉘로 자동화하기

virtual box에서 윈도우 클립보드 공유하는 법은 다음과 같다.


이렇게 양방향 설정하고, 같은 메뉴에서 게스트 확장 CD 이미지 삽입을 누른다.


옆에 cd가 뜰텐데


누르고


재부팅 해주자. 


이러면 클립보드 공유되고. 윈도우에서 ctrl + c하고, 우분투에서는 ctrl + shift + v 해주면 된다.


우선 디렉토리를 만들자

$ cd ~

$ mkdir flashing

$ cd flashing


다음 쉘 스크립트 2개를 작성한다.


1. sd_flashing.sh

if [ $# -ne 1 ]; then
        echo $# arg number error
        echo arg1 can be disk character like a, b, c, d.
        exit -1
fi

sudo umount /dev/sd$11
sudo umount /dev/sd$12

sudo ./partitioning.sh $1
sudo mkfs.vfat -F 32 /dev/sd$11
sudo mkfs.ext4 /dev/sd$12

sudo mount /dev/sd$11 /mnt
rm -rf /mnt/*
sudo cp ./MLO /mnt
sudo cp ./u-boot.img /mnt
sudo cp ./zImage ./am335x-boneblack.dtb ./uboot.env /mnt
sudo sync
sudo umount /mnt

sleep 2

sudo mount /dev/sd$12 /mnt
rm -rf /mnt/*
sudo tar -xvf core-* -C /mnt
sudo sync
sudo umount /mnt


2. partitioning.sh

#!/bin/expect

set timeout 10

set number [lindex $argv 0]
spawn fdisk /dev/sd$number
expect "Command (m for help):"
send "d\n"
expect ":"
send "\n"
expect ":"
send "d\n"
expect ":"
send "\n"
expect ":"
send "n\n"
expect ":"
send "p\n"
expect ":"
send "\n"
expect ":"
send "\n"
expect ":"
send "+64M\n"
expect ":"
send "Y\n"
expect ":"
send "n\n"
expect ":"
send "p\n"
expect ":"
send "\n"
expect ":"
send "\n"
expect ":"
send "\n"
expect ":"
send "Y\n"
expect ":"
send "t\n"
expect ":"
send "1\n"
expect ":"
send "0c\n"
expect ":"
send "a\n"
expect ":"
send "1\n"
expect ":"
send "w\n"
expect EOF
exit

 

아래 파일들과 쉘 파일을 같은 디렉토리에 위치시킨다.


.dtbo 파일은 오버레이 설정할 때 나중에 추가될 것이니까 신경쓰지 말자.


fdisk로 sd카드 sd 몇인지 읽어서 사용해주면 된다

sd카드가 /dev/sdb로 되어 있으면

$ sudo ./sd_flashing.sh b

해주면 알아서 파티션 나누고 이미지 압축 풀고 해줄 것이다.


번외)

IMAGE_FSTYPES:append = " wic.zst"

local.conf에 추가하면 wic.zst를 이미지를 뱉는데 이걸 dd로 sd카드에 자동으로 플래싱 하게 할 수 있다.

그런데 이러면 파티션 2번 sd카드 공간을 다 못쓴다.

따라서 파일시스템 크기를 늘려줘야 하는데 local.conf 에서

IMAGE_ROOTFS_EXTRA_SPACE = "20242880"

이렇게 rootfs의 추가 공간을 지정해 주고 dd명령어를 사용해 sd카드에 플래싱 해주면 된다.


dd 커맨드가 너무 느리다. bs = 4M 설정해도 256분이나 걸린다;;


그래서 fdisk 활용한 쉘 파일로 자동화하여 플래싱하도록 했다. 

대략 10분이면 플래싱 끝난다...

댓글

이 블로그의 인기 게시물

[ BBB - yocto (9) ] 장치트리(DEVICE TREE)

[ BBB - yocto (11) ] uart

[ BBB - yocto (5) ] makefile 작성법과 컴파일 자동화