부팅 가능한 USB 드라이브를 동일한 크기의 다른 메모리 스틱에 복제

부팅 가능한 USB 드라이브를 동일한 크기의 다른 메모리 스틱에 복제

Ubuntu의 부팅 가능한 버전을 넣어야 하는 동일한 크기의 USB 드라이브가 20개 있습니다. 제가 사용하고 있는 드라이브의 용량은 4GB 입니다. 드라이브를 두 개의 파티션(GPT, FAT32)으로 분할하여 OS용 파티션 하나와 데이터용 파티션 하나를 갖게 되었습니다.

저는 UNetbootin을 사용하여 부팅 가능한 Ubunutu 스틱을 만들고 있습니다. 모든 것이 잘 작동하는 것 같지만 속도가 매우 느립니다(설치하는 데 약 30분 정도 소요).

이제 드라이브를 수동으로 분할하고 각 드라이브에서 UNetbootin을 실행하지 않고도 이 스틱을 나머지 19개 스틱에 완전 복제할 수 있는지 궁금합니다.

dd그렇지 않은 경우 분할을 수행하고 부팅 가능한 파티션을 만든 다음 내용을 올바른 파티션에 복사하는 스크립트를 작성하는 것이 또 다른 옵션이 될 수 있습니다.

저는 macOS를 실행하고 있으므로 Gparted나 다른 멋진 Linux 도구가 설치되어 있지 않습니다(아마도).

답변1

dd는 파티션 테이블과 그 밖의 모든 것을 포함하여 드라이브의 전체 복사본을 수행합니다(ipor의 설명에 따르면).

다음과 같은 것이 트릭을 수행해야 합니다.

dd if=<your reference usb stick> of=<one of the 19 other usb sticks> bs=32M

나중에 사용하기 위해 먼저 참조 USB 스틱의 내용을 이미지로 디스크에 덤프할 수도 있습니다 ;-)

답변2

USB 메모리의 크기에 따라 복사한 후 빈 공간이 많아 쓰기 시간이 오래 걸릴 수 있습니다.

사용된 블록만 디스크 이미지에 기록하는 bmap 도구를 사용하여 이 작업을 수행하는 더 좋은 방법이 있습니다.

여기서는 Ubuntu/Debian용으로 패키지되었지만 실행을 위해 설치하기 위해 기본적으로 설치되지 않은 여러 도구를 사용했습니다.

sudo apt-get install bmap-tools libguestfs-tools pigz

먼저 소스 이미지를 생성해야 합니다.

sudo dd if=/dev/source of=/path/to/source.img bs=1M

희소 이미지

다음으로, 스파스 파일을 생성하려면 이미지에서 0을 모두 제거해야 합니다.

cp --sparse=always /path/to/source.img /path/to/source.img.sparse

이것이 이미지의 복사본을 만들고 더 많은 공간을 차지한다는 것을 눈치챘을 것입니다. 운 좋게도 파이프라인에서 cp를 사용할 수 있습니다.

sudo dd if=/dev/source bs=1M | cp --sparse=always /dev/stdin /path/to/source.img.sparse

비맵 도구

이제 bmaptool을 사용하여 이미지 파일을 레이아웃하는 방법에 대한 일부 메타데이터를 생성해야 합니다.

bmaptool create -o /path/to/source.img.bmap /path/to/source.img.sparse

원하는 경우 이제 이미지 파일을 압축할 수 있으며 bmaptool은 자동으로 이미지 파일의 압축을 해제합니다. Pigz는 병렬 gzip 압축 도구입니다.

pigz /path/to/source.img.sparse

빈 USB 스틱에 파일을 쓰려면 이제 다음을 수행할 수 있습니다.

sudo bmaptool copy --bmap /path/to/source.img.bmap /path/to/source.img.sparse.gz /dev/sdX

https://source.tizen.org/documentation/reference/bmaptool

손님 물고기

더 똑똑하다고 생각되면 guestfish 프로젝트의 도구를 사용하여 Linux 이미지를 복제하기 전에 정리할 수도 있습니다. 로그 파일, 서버 SSH 키 등이 삭제됩니다.

이미지를 압축하기 전에 다음 명령을 실행하여 정리하세요.

이 명령은 로그, 기록 파일, SSH 서버 키 등을 제거하여 이미지를 정리합니다.

virt-sysprep -a /path/to/source.img.sparse

이 명령은 처음 시작할 때 새 서버 키로 ssh를 설정합니다.

virt-customize --firstboot-command "dpkg-reconfigure openssh-server" /path/to/source.img.sparse

이 명령은 SSD를 다듬는 것처럼 이미지에서 fstrim을 실행하여 파일 시스템에서 사용되지 않는 모든 블록을 제거합니다.

virt-sparsify --inplace /path/to/source.img.sparse

http://libguestfs.org/

관련 정보