Smart blaze VM 이미지 빌드#
임베디드 Linux 개발을 위한 두 가지 주류 옵션은 Debian 기반 ELBE 빌드 시스템과 업계 표준인 Yocto Linux입니다. 이러한 시스템을 사용하면 카메라에 업로드할 수 있으며 최적화되고 간소하며 재현 가능한 rootfs를 빌드할 수 있습니다.
Smart blaze 카메라에 기본 제공되는 Debian 시스템은 일반적인 네이티브 Linux 개발의 대부분 개념이 적용되는 사용하기 쉬운 기반으로 선택되었습니다. 이 시스템은 ELBE를 사용하여 빌드됩니다. 빌드 프로세스는 Embedded Linux Build System (ELBE)에서 설명합니다.
기본 VM은 처음에는 다음 섹션에 설명된 스크립트에서 생성되며 pylon Supplementary Package for blaze의 일부로 제공됩니다. 이러한 스크립트는 설치 경로의 Samples 하위 폴더에서 찾을 수 있습니다. 일반적인 Linux 시스템의 경우 이 경로는 /opt/pylon/share/pylon/Samples/blaze/smartblaze/vm입니다. 달리 언급되지 않는 한, 이 항목의 스크립트 및 config 파일과 관련된 상대 경로는 이 디렉터리를 기준으로 합니다.
VM Image 구조#
업로드 가능한 VM 이미지는 다음 파일이 포함된 tar.gz 아카이브입니다.
- rootfs image rootfs.{qcow2,img,raw}
- kernel image kernel
- config file config.toml
확장자가 없는 아카이브 기본 이름은 카메라의 VM 이미지 이름으로 사용됩니다.
이름 debian-arm64-min은 카메라에 있는 기본 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 Image#
지원되는 파일 이름:
- rootfs.qcow2 (QEMU QCOW2 이미지)
- rootfs.[img|raw] (raw 이미지)
지원되는 형식:
- raw 루트 파일 시스템이 포함된 이미지
- 첫 번째 파티션에 루트 파일 시스템이 있는 파티션 테이블이 포함된 이미지(아래의 ELBE 빌드 참조)
이 elbe/build-vm.sh 이 스크립트는 다음의 설명을 사용하여 재현 가능한 rootfs를 빌드하는 예시를 제공합니다. elbe/blazevm.xml. 결과는 하위 디렉터리에 출력됩니다. elbe/elbe-build-
ELBE 및 기타 필수 도구 설치 방법은 elbe/build-vm.sh에 설명되어 있습니다.
Kernel Image#
최신 커널을 빌드하는 간단한 kernel.sh 스크립트가 있습니다. 크기 최적화는 되어 있지 않지만 virtio 기반의 반가상화에 필요한 모든 드라이버가 포함된 기본 arm64-defconfig가 사용됩니다.
인수 없이 스크립트를 실행하여 커널을 빌드할 수 있습니다. 중간 파일은 ./work 하위 디렉토리에 저장되고 완성된 이미지는 ./work/_result에 저장됩니다.
rootfs는 다음을 통해 시작됩니다. qemu-system-aarch64 또한 다음을 포함하는 커널 이미지가 필요합니다. virtio_blk 지원. Debian 커널 패키지는 virtio_blk 을(를) 모듈로 사용하므로 적절한 initrd의 사용이 필요합니다. 이는 아직 지원되지 않습니다. 따라서 ELBE 빌드에서 제공할 수 있는 Debian 바이너리 커널을 사용하는 것은 옵션이 아닙니다. 대신 정적 virtio_blk 지원을 포함하는 자체 커널을 빌드해야 합니다. 또한 Debian 바이너리 커널은 virtio_net 을(를) 모듈로 사용하므로 ip= 파라미터가 커널 cmdline을 통해 제공되는 방식에서는 작동하지 않습니다.
Config File#
구성 파일에는 카메라에 설치할 때 이미지 파일이 처리되는 방식을 제어하는 옵션이 포함되어 있습니다.
# 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 파일을 생략할 수 있습니다.
Embedded Linux Build System (ELBE)#
ELBE 설치#
ELBE를 설치하고 ELBE를 사용하여 VM rootfs를 빌드하기 위한 모든 환경을 설정하려면 다음 단계를 따르세요.
- Installing ELBE에 따라 최신 ELBE 버전을 설치합니다.
-
ELBE initvm을 설정합니다.
이는 제어된 환경 내에서 rootfs를 빌드하는 데 사용되는 개발 컴퓨터의 가상 머신입니다. -
ELBE initvm에 대한 SSH 접근을 준비합니다(나중에 ELBE SDK를 사용하는 경우에만 필요함).
-
다음 명령을 사용하여 공개 SSH 키(예:
~/.ssh/id_rsa.pub의 내용)를 initvm에 추가합니다. -
다음 명령어로 테스트 액세스를 수행합니다:
-
-
빌드 스크립트에 필요한 추가 도구를 설치합니다:
apt-get install qemu-utils
ELBE를 사용한 Root 파일 시스템 빌드#
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에서 누락된 파일 저장#
pylon 패키지 및 blaze 샘플의 일부 파일이 SDK 대상 sysroot에 누락되어 있습니다. 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
파일은 ELBE 결과 디렉터리의 sysroot 하위 디렉터리로 복사됩니다.
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 결과 디렉터리에서 이 스크립트를 호출합니다(경로를 그에 맞게 조정하세요):