Container-Optimized OS는 오픈소스 Chromium OS 프로젝트의 도구를 기반으로 빌드되었습니다. 원하는 경우 Container-Optimized OS 소스 코드로 바로 Container-Optimized OS 이미지를 직접 빌드할 수 있습니다.
기본 요건
Container-Optimized OS 이미지를 빌드하려면 개발 머신에 다음 도구를 설치해야 합니다.
git
님 및curl
님repo
및cros_sdk
와 같은 도구가 포함된depot_tools
라는 Chromium 스크립트 패키지입니다.
Container-Optimized OS 소스 코드 받기
depot_tools
에 포함된 repo
도구를 사용하여 Container-Optimized OS의 소스 코드를 다운로드할 수 있습니다.
먼저 소스 코드를 저장할 디렉터리를 만듭니다. 예를 들어 홈 디렉터리에 cos-src
가 있습니다.
mkdir $HOME/cos-src
cd $HOME/cos-src
이제 다음 명령어를 사용하여 소스 코드를 다운로드합니다.
repo init -u https://cos.googlesource.com/cos/manifest.git \
--repo-url https://chromium.googlesource.com/external/repo.git
repo sync
Container-Optimized OS 이미지 빌드
Container-Optimized OS를 빌드하려면 적절한 chroot
환경을 만들어야 합니다. depot_tools
에 포함된 cros_sdk
도구를 사용하여 이전 단계에서 생성한 소스 디렉터리에서 다음 명령어를 실행하여 Container-Optimized OS 컴파일에 사용할 수 있는 chroot
를 만들고 입력할 수 있습니다.
cd $HOME/cos-src
cros_sdk --enter
chroot
내부에 있으면 디스크 이미지를 빌드할 수 있습니다. Container-Optimized OS를 빌드하려면 다음과 같이 보드 이름에 lakitu
(x86 이미지) 또는 lakitu-arm64
(Arm 이미지)를 지정하세요.
x86 이미지
build_packages --board=lakitu
build_image --board=lakitu test
Arm 이미지
build_packages --board=lakitu-arm64
build_image --board=lakitu-arm64 test
test
외에도 ./build image
스크립트 명령어에 적절한 매개변수를 전달하여 base
또는 dev
이미지를 빌드할 수 있습니다. 매개변수를 지정하지 않으면 기본적으로 dev
이미지가 빌드됩니다.
dev
이미지에는 base
이미지 위에 설치된 몇 가지 추가 디버그 도구가 포함되어 있습니다. test
이미지에는 dev
이미지의 디버그 도구와 자동 Container-Optimized OS 테스트를 실행하는 데 필요한 도구가 포함되어 있습니다.
저작자 표시 요구사항
Container-Optimized OS 이미지를 생성할 때는 서드 파티 라이선스의 다양한 저작자 표시 요구사항을 충족해야 합니다. 빌드를 통해 생성한 이미지는 /opt/google/chrome/resources/about_os_credits.html
에 모든 관련 저작자 표시 정보가 포함됩니다. 이는 개별 빌드 아티팩트로서 빌드 출력 디렉터리에서도 license_credits.html
파일로 제공합니다.
이미지 실행
Container-Optimized OS 이미지를 빌드했으면 KVM을 사용하여 이미지를 실행하거나 Compute Engine 인스턴스로 이미지를 가져오면 됩니다.
하이퍼바이저에서 실행 중
하이퍼바이저에서 이미지를 부팅하려면 다음 명령어를 실행하세요.
x86 이미지
kvm -m 1024 -nographic -net nic,model=virtio -net user,hostfwd=tcp:127.0.0.1:9222-:22 -hda src/build/images/lakitu/latest/chromiumos_test_image.bin
Arm 이미지
sudo apt-get install qemu-system-arm qemu-efi
dd if=/dev/zero of=/tmp/flash0.img bs=1M count=64
dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=/tmp/flash0.img conv=notrunc
sudo qemu-system-aarch64 -m 1024 -cpu cortex-a57 -M virt -nographic \ -pflash /tmp/flash0.img \ -device virtio-scsi-pci,id=scsi \ -drive if=none,file=src/build/images/lakitu-arm64/latest/chromiumos_test_image.bin,id=hd0 \ -device scsi-hd,drive=hd0,bootindex=0 \ -net nic \ -net user,hostfwd=tcp::9222-:22
이 방식으로 부팅하면 VM의 직렬 포트가 콘솔에 연결된 상태로 유지되어 SSH를 사용하지 않고 로그인할 수 있습니다. test
이미지를 실행할 경우 'root/test0000'이라는 사용자 이름/비밀번호 쌍을 사용하여 로그인할 수 있습니다.
VM이 시작되면 SSH를 사용하여 dev
또는 test
이미지에 액세스할 수 있습니다. SSH를 사용하여 이미지에 액세스하려면 다음과 같이 해당 이미지를 위해 생성된 키를 사용하세요.
x86 이미지
ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa
Arm 이미지
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsa
Compute Engine에서 실행
Compute Engine 인스턴스로 이미지를 가져오려면 이미지를 .tar
파일로 압축해야 합니다. 이미지를 압축하려면 다음 명령어를 실행하세요.
x86 이미지
tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/latest/chromiumos_image.bin|disk.raw|'
Arm 이미지
tar -Sczf compressed-image.tar.gz images/lakitu-arm64/latest/chromiumos_image.bin --transform 's|images/lakitu-arm64/latest/chromiumos_image.bin|disk.raw|'
.tar
파일을 만든 후에는 Compute Engine 문서의 기존 이미지 가져오기 지침을 따르면 됩니다.