Smart blaze VM 이미지 빌드#
임베디드 리눅스 개발에 주로 사용되는 두 가지 옵션은 데비안 기반의 ELBE 빌드 시스템과 업계 표준인 Yocto Linux입니다. 이러한 시스템을 사용하면 카메라에 업로드할 수 있는, 최적화되고 간결하며 재현 가능한 루트 파일 시스템(rootfs)을 빌드할 수 있습니다.
Smart Blaze 카메라에 기본으로 제공되는 데비안(Debian) 시스템은 일반적인 네이티브 리눅스( Linux ) 개발의 대부분의 개념이 적용되는, 사용하기 쉬운 기반으로 선정되었습니다. 이 시스템은 ELBE를 사용하여 빌드됩니다. 빌드 과정은 임베디드 리눅스 빌드 환경(Embedded Linux Build System, ELBE) 항목에서 설명되어 있습니다.
기본 VM은 다음 섹션에서 설명하는 스크립트를 통해 처음 생성되며, blaze용 pylon 보충 패키지의 일부로 제공됩니다. 이러한 스크립트는 설치 경로의 Samples 하위 폴더에서 찾을 수 있습니다. 일반적인 Linux 시스템의 경우, 이 경로는 /opt/pylon/share/pylon/Samples/blaze/smartblaze/vm입니다. 별도로 명시되지 않는 한, 이 항목에서 스크립트 및 구성 파일을 참조하는 상대 경로는 이 디렉터리를 기준으로 합니다.
VM 이미지 구조#
업로드 가능한 VM 이미지는 다음 파일들이 포함된 tar.gz 아카이브입니다:
- rootfs 이미지 rootfs.{qcow2,img,raw}
- 커널 이미지 커널
- 구성 파일 config.toml
확장자를 제외한 아카이브 기본 이름이 카메라에서 VM 이미지 이름으로 사용됩니다.
'debian-arm64-min'이라는 이름은 카메라에 기본으로 설치된 VM의 이름입니다. 이 VM은 Smart Blaze VM Control 웹 인터페이스의 '공장 초기화(Factory Reset )' 버튼을 사용하여 복원할 수 있습니다.
vm-image.sh 스크립트는 개별 파일들을 VM 이미지로 묶어줍니다:
$ ./vm-image.sh --help
Usage: ./vm-image.sh [--rootfs <path>] [--kernel <path>] [--config <path>] [--image <path>]
Build a VM image tar.gz archive containing a rootfs, kernel and optional config toml file.
Defaults:
--rootfs elbe/elbe-build-*/debian-arm64-min.qcow2
--kernel work/_result/blazevm-arm64-kernel
--image work/debian-arm64-min.tar.gz
Rootfs 이미지#
지원되는 파일 이름:
- rootfs.qcow2 (QEMU QCOW2 이미지)
- rootfs.[img|raw] (원시 이미지)
지원되는 형식:
- 원시 루트 파일 시스템이 포함된 이미지
- 첫 번째 파티션에 루트 파일 시스템이 있는 파티션 테이블이 포함된 이미지 (아래 ELBE 빌드 참조)
The elbe/build-vm.sh 이 스크립트는 다음 문서에 설명된 내용을 바탕으로 재현 가능한 루트 파일 시스템을 구축하는 예제를 제공합니다. elbe/blazevm.xml. 결과는 하위 디렉터리에 출력됩니다. elbe/elbe-build-
ELBE 및 기타 필수 도구의 설치 방법은 elbe/build-vm.sh에 설명되어 있습니다.
커널 이미지#
최신 커널을 빌드하는 간단한 kernel.sh 스크립트가 있습니다. 이 스크립트는 기본 arm64-defconfig를 사용하는데, 이는 크기 최적화는 되어 있지 않지만 virtio 기반 준가상화를 위한 모든 필수 드라이버를 포함하고 있습니다.
인수를 지정하지 않고 스크립트를 실행하면 커널을 빌드할 수 있습니다. 중간 파일들은 ./work 하위 디렉터리에 저장되며, 완성된 이미지는 ./work/_result에 저장됩니다.
rootfs는 다음 명령어로 시작됩니다. qemu-system-aarch64 그리고 다음을 포함하는 커널 이미지가 필요합니다. virtio_blk 지원. 데비안 커널 패키지는 virtio_blk 적절한 것을 사용해야 하는 모듈로서 initrd. 이 기능은 아직 지원되지 않습니다. 따라서 ELBE 빌드에서 제공될 수 있는 데비안 바이너리 커널을 사용하는 것은 불가능합니다. 대신, 정적 링크 방식으로 직접 커널을 빌드해야 합니다. virtio_blk 지원합니다. 또한, 데비안 바이너리 커널은 virtio_net 모듈로, 이는 다음의 방식과 호환되지 않습니다. ip= 매개변수는 커널 명령줄을 통해 전달됩니다.
설정 파일#
이 구성 파일에는 카메라에 설치될 때 이미지 파일을 어떻게 처리할지 제어하는 옵션이 포함되어 있습니다.
# VM Image Configuration for Basler example VMs
# Whether to inject a password in /etc/shadow before first VM image start
# default: ""
# "label-pw" - The password from the label is to be injected.
# "" - No password to inject. Image is responsible for setting a password.
password_rule = "label-pw"
# User whose password is set according to password_rule
# default: "root"
user = "root"
# Whether to manually confirm first VM image start
# default: false
confirm_start = true
이미지가 고정된 암호를 사용하며 시작 시 확인 절차가 필요하지 않은 경우, config.toml 파일을 생략할 수 있습니다.
Linux (ELBE) 임베디드 빌드 시스템#
ELBE 설치#
ELBE를 설치하고 ELBE를 사용하여 VM 루트 파일 시스템을 빌드할 수 있도록 모든 설정을 완료하려면 다음 단계를 따르십시오:
- “ELBE 설치” 안내에 따라 최신 버전의 ELBE를 설치하십시오.
-
ELBE initvm을 설정합니다.
이는 제어된 환경 내에서 루트 파일 시스템(rootfs)을 빌드하는 데 사용되는, 개발용 컴퓨터상의 가상 머신입니다. -
ELBE initvm에 대한 SSH 접속을 준비하십시오.
-
공개 SSH 키를 추가하세요(예:
~/.ssh/id_rsa.pub) 다음 명령어를 사용하여 initvm에 추가합니다: -
다음 명령을 사용하여 액세스 여부를 테스트하십시오:
-
-
빌드 스크립트에 필요한 추가 도구를 설치합니다:
apt-get intall qemu-utils
ELBE를 사용하여 루트 파일 시스템 구축하기#
ELBE를 사용하여 루트 파일 시스템을 구축하려면, 앞서 설명한 대로 ELBE를 설정하십시오. 그런 다음 elbe/build-vm.sh를 실행하십시오.
ELBE를 사용하여 SDK 구축하기#
VM 루트 파일 시스템 외에도, ‘ Yocto ’ 스타일의 SDK를 생성할 수 있습니다:
그 결과, 하위 디렉터리에 자동 압축 해제 스크립트가 제공됩니다. elbe/elbe-build-
setup-elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2.sh
이 패키지는 VM용 소프트웨어를 빌드하는 데 필요한 모든 패키지를 제공합니다. 여기에는 arm64용 gcc 크로스 컴파일러는 물론 모든 -dev VM에서 사용할 수 있는 패키지에 해당하는 개발 패키지입니다. 이 패키지는 빌드 및 링크에 필요한 헤더 파일과 관련 라이브러리는 물론, 이를 자동으로 찾아주는 pkgconfig 및 cmake 파일도 제공합니다.
ELBE SDK에서 누락된 파일 저장하기#
SDK 대상 sysroot에서 pylon 패키지와 blaze 샘플의 일부 파일이 누락되어 있습니다. ELBE SDK를 빌드한 후, 해당 파일들을 ELBE initvm에서 로컬 sysroot 디렉터리로 한 번 복사해야 합니다.
이 기능이 정상적으로 작동하려면 ELBE initvm에 대한 SSH 접속이 설정되어 있는지 확인하십시오.
설정 --project-dir initvm 내의 ELBE 프로젝트 디렉터리로 (예: /var/cache/elbe/
elbe/save-missing-sdk-files.sh --project-dir /var/cache/elbe/XXX --result-dir elbe/elbe-build-YYYYMMDD-HHMMSS
파일들이 다음 위치로 복사됩니다. sysroot ELBE 결과 디렉터리의 하위 디렉터리.
ELBE SDK 설치#
$ LATEST_ELBE_RESULT_DIR=$(ls -dt elbe/elbe-build-* | head -n1)
$ cd ${LATEST_ELBE_RESULT_DIR}
$ chmod +x setup-elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2.sh
$ ./setup-elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2.sh
ELBE BlazeVM 1.2 SDK installer
==============================
Enter target directory for SDK (default: /opt/elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2):
You are about to install the SDK to "/opt/elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2". Proceed[Y/n]?
Extracting SDK............................................................................................done
Setting it up...SKIP /opt/elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2/sysroots/host/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
$ . /opt/elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2/environment-setup-elbe-aarch64-linux-gnu-BlazeVM-1.2
SDK를 설치한 후, ELBE 결과 디렉터리에 포함된 누락된 파일을 설치된 SDK에 수동으로 추가해야 합니다.
기본 환경 설정 스크립트는 SDK를 기본 경로에 설치할 때 위 섹션에 명시된 기본 이름(/opt/elbe-sdk-aarch64-linux-gnu-BlazeVM-1.2/environment-setup-elbe-aarch64-linux-gnu-BlazeVM-1.2)입니다. SDK를 다른 위치에 설치한 경우, 경로를 그에 맞게 조정하십시오.
해당 ELBE 결과 디렉터리에서 이 스크립트를 실행하십시오(경로는 상황에 맞게 조정하십시오):