CI
bitbucket-pipelines와 같은 일반 시스템에서 실행하기 위해 Docker 가상 머신에서 Raspberry Pi 이미지 생성을 자동화하려고 합니다 .
물리적 시스템에서는 "템플릿" 이미지를 사용하고 이를 로컬 디렉터리로 분할한 다음 스크립트로 채우고 마운트 해제합니다. 설치하려면 다음과 같은 스크립트를 사용합니다.
loopdevice=`losetup -f --show -P images/template.img`
echo $loopdevice > loopdevice
mkdir -p images/p1
mkdir -p images/p2
mkdir -p images/p3
mount ${loopdevice}p1 images/p1
mount ${loopdevice}p2 images/p2
mount ${loopdevice}p3 images/p3
(이미지에는 각각 3개의 디렉터리에 마운트된 3개의 파티션이 포함되어 있습니다.)
안타깝게도 Dcoker 컨테이너 내부의 루프백 장치를 권한 없이 사용할 수 없으며 Bitbucket 파이프라인 내에서 권한을 부여할 수도 없습니다. 여기서 막다른 골목이 보입니다.
그렇다면 문제는 파일 시스템 이미지 파일을 루프백 장치에 마운트하지 않고 조작할 수 있는 Linux 도구가 있습니까?입니다.
답변1
- 요구 사항에 따라 파일 시스템을 조작하는 도구가 있습니다. 그 중 하나는공구 상자FAT 파일 시스템을 지원하는 패키지입니다. 다른 하나는e2 도구, EXT2 및 EXT3 파일 시스템을 구현합니다. 둘 다 debian Linux 및 기타 여러 운영 체제에서 사용할 수 있습니다.
- 이러한 도구는 파티션의 이미지를 처리하지 못할 수 있습니다. 이것은 문제가 되지 않습니다. 템플릿을 파티션 테이블과 파티션 내용에 대한 별도의 파일로 분할하고(아마도 미리) 파일 시스템 이미지에 파일을 추가한 다음
cat
조각을 올바른 순서로 모아 최종 디스크 이미지를 생성하기만 하면 됩니다.
답변2
사용하고 추천합니다guestfish
, 이것은 다음의 일부입니다libguestfs, 가상 머신 디스크 이미지에 액세스하고 수정하기 위한 라이브러리.
OpenStack 문서에 권한이 필요하지 않은 도구에 대한 유용한 설명이 포함되어 있는 것을 발견했습니다.이미지 수정 — 가상 머신 이미지 가이드 문서
많은 비연속적인 변경을 수행하는 경우 guestfish
데몬을 실행하고 원격 제어 모드를 사용하면 이점을 얻을 수 있습니다. 이렇게 하면 시작 시간을 (사소하지는 않지만) 절약할 수 있습니다.
바라보다guestfish
소켓을 통한 원격 제어설명서의 내용 guestfish
.