![부팅 가능한 USB 드라이브를 동일한 크기의 다른 메모리 스틱에 복제](https://linux55.com/image/94779/%EB%B6%80%ED%8C%85%20%EA%B0%80%EB%8A%A5%ED%95%9C%20USB%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%A5%BC%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%ED%81%AC%EA%B8%B0%EC%9D%98%20%EB%8B%A4%EB%A5%B8%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EC%8A%A4%ED%8B%B1%EC%97%90%20%EB%B3%B5%EC%A0%9C.png)
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