본문으로 건너뛰기
  1. Posts/

BPI-M2S BSP 사용해보기

·
Linux SBC
작성자
hw5e
page.hw5e.cc
목차

바나나파이에서 제공하는 BSP를 사용해본 과정을 기록했다.

BSP 빌드
#

u-boot 2015.1, 리눅스 4.9.241 커널 기반의 BSP이다.

소스 다운로드
#

크로스 컴파일러는 소스코드에 포함되어있다.

git clone https://github.com/BPI-SINOVOIP/BPI-M2S-bsp
cd BPI-M2S-bsp
git submodule update --init --recursive

Docker 컨테이너 생성
#

개발환경이 우분투 16.04 기준이라 최근 버전의 우분투와는 다른게 있어서 docker를 사용했다.

(https://hub.docker.com/r/sinovoip/bpi-build-linux-4.4/) 를 사용하여도 된다 사실 이건 문제없는데 안드로이드 빌드용 도커이미지는 포맷 버전이 낮아서 이미지 받는게 안된다.

sudo docker pull ubuntu:16.04
sudo docker create --privileged -it -v ~/BPI-M2S-bsp/:/home/bsp --name bpi ubuntu:16.04
sudo docker start bpi
docker exec bpi apt-get update 
docker exec bpi apt-get install -y apt-utils openssh-server build-essential gcc-multilib unzip sudo git mercurial vim bc u-boot-tools device-tree-compiler pkg-config libusb-1.0-0-dev python-software-properties software-properties-common libncurses5-dev lib32ncurses5-dev libc6-dev-i386 lib32z-dev libswitch-perl openssl libssl-dev bison flex busybox gawk locales cpio kmod

빌드
#

컨테이너의 셸에 접속

sudo docker exec -it bpi /usr/bin/bash
cd /home/bsp
./build.sh bpi-m2s 1 

크로스 컴파일러가 소스에 같이들어있다보니 환경변수 설정같은건 따로 필요없었다. build.sh의 다른 옵션들이 궁금하면 파일을 열어보자.

설치
#

문서에는 SD카드에 설치하는 법을 알려주는데 EMMC에 설치하는 방법은 아직 알아보지 않았다.

설치를 시도해보니 이 스크립트는 sd카드를 파티션을 생성하지 않는다는 것을 확인했다. 파티션을 전부 지운 sd카드에 쓰기를 시도하면 없는 파티션에 쓰려고 한다고 에러가 났다. 일단 바나나파이에서 주는 OS 이미지 아무거나 받아서 SD카드에 쓴 뒤 파티션을 다시 포맷하는 식으로 했다.

파티션을 직접 만들어서 해보고 싶다면, fdisk로 확인한 파티션의 정보인데

Device     Boot  Start       End   Sectors  Size Id Type
/dev/sdd1       204800    729087    524288  256M  c W95 FAT32 (LBA)
/dev/sdd2       729088 124669951 123940864 59.1G 83 Linux

이걸 보고 파티션 시작지점을 똑같이 맞춰서 파티션을 만들면 될 것 같다.

make install, ./build.sh bpi-m2s 6 중 아무거나 실행하면 되는데. 뭐 대충 하라는 대로 하면 된다. SD 카드가 /dev/sdX 중 뭔지 묻는게 나오는데 맨 뒷부분만 적는게 아니라 /dev/sda 처럼 전부 적아야 한다.

만약 BPI-tools가 없다고 나오면 다음 명령어로 설치

curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash -

설치후 sd카드로 부팅하면 initramfs로 부팅된다. 주요 명령어들이 busybox로 하드링크가 걸려있는 것 정도를 확인했다.

Docker 컨테이너 삭제
#

sudo docker rm bpibsp
Reply by Email