2개의 디스크 이미지를 2개의 파티션이 있는 하나의 디스크 이미지로 병합하는 방법은 무엇입니까?

2개의 디스크 이미지를 2개의 파티션이 있는 하나의 디스크 이미지로 병합하는 방법은 무엇입니까?

서로 다른 파일 시스템(예: fat 및 ext4)을 사용하는 2개의 (비교적 작은) qemu(원시 형식) 디스크 이미지가 있습니다.

USB 스틱에 두 개의 서로 다른 파티션으로 저장하여 컴퓨터에 연결하고 거기에서 부팅할 수 있도록 하고 싶습니다.

fdisk와 dd를 사용하여 이 작업을 수행할 수 있지만 이를 위해서는 루트 액세스와 수동 개입이 필요합니다(이 작업은 앞으로 몇 달 동안 자주 수행될 작업입니다.

작업을 어떻게 자동화할 수 있나요? sudo 및 루트 액세스를 방지할 수 있나요?

현재 디스크 이미지는 지속적인 통합 프로세스 중에 생성되며 루트 액세스나 수동 개입이 필요하지 않지만 이 새로운 요구 사항을 충족하기 위해 두 디스크를 병합하는 방법을 찾을 수 없습니다.

편집하다

자동화해야 하는 것은 실제 USB 키의 파티셔닝이 아니라 sudo dd ...이미 채워진 데이터(권한이 보존됨)를 포함해야 하는 단일 .disk 이미지와 함께 사용할 수 있는 파티션을 생성하는 것입니다.

원시 디스크 이미지를 작성하려면 루트가 필요한 이유를 이해할 수 없습니다.

답변1

루트가 필요하지 않습니다. "fdisk someimage.hdd"를 실행하면 해당 파일에 액세스할 수 있는 한 문제가 없습니다. dd의 offset 및 notrunc 매개변수를 사용하여 파티션에 해당하는 파일 부분에 dd를 수행할 수도 있습니다.

dd 파티션 장치를 사용하는 것에 비해 수동으로 오프셋을 지정하는 것은 상당히 불편합니다. 루트 액세스가 유용한 곳은 바로 여기입니다. "losetup" 명령을 사용하여 이미지와 해당 파티션에 대한 루프백 블록 장치를 생성할 수 있습니다.

그러나 파티션 크기를 변경하지 않으면 연습을 반복할 때마다 이러한 오프셋 계산이 변경되지 않으므로 한 번 계산하면 나중에 다시 사용할 수 있습니다.

또 다른 방법이 있습니다. 이미지를 한 번 만들고 오프셋을 계산한 후, 향후 이미지 재구축을 위해 fdisk 및 dd를 사용할 필요 없이 파티션 테이블이 포함된 디스크 이미지의 시작 부분을 별도의 파일로 추출할 수 있습니다. 연결만 하면 됩니다(" cat") 파티션 테이블과 두 개의 파티션 이미지를 단일 디스크 이미지로 만듭니다. (어떤 경우에는 디스크 끝에 백업 파티션 테이블이 있을 수 있으므로 파티션 테이블이 포함된 디스크 접두사 파일과 유사하게 파티션 뒤에 디스크 접미사 파일을 추가해야 할 수도 있습니다.)

답변2

짧은 대답은 '아니요'입니다.

USB 드라이브의 스크립트나 유사한 파일을 통해 두 개의 파티션을 생성해야 하는 한, 파티션 테이블을 편집하고 루트 액세스가 필요한 파일 시스템을 생성할 수 있습니다.

이미 올바른 파일 시스템을 갖춘 파티션이 있고 qemu의 두 이미지가 모두 로컬로 마운트되어 있는 경우(루트도 필요하지만 pmount를 확인하세요), 이미지의 파일을 USB 스틱의 파티션으로 복사해 볼 수 있습니다. 일반 파일만 있고 해당 파일이 속한 사용자/그룹에 관심이 없는 한 루트 없이도 작동합니다.

관련 정보