파일에 dd를 넣는 것과 물리적 디스크에 dd를 넣는 것의 차이점은 무엇인가요?

파일에 dd를 넣는 것과 물리적 디스크에 dd를 넣는 것의 차이점은 무엇인가요?

"openwrt-19.07.6-x86-64-combined-squashfs.img" 이미지 크기는 20MB입니다. 파일 이름을 "openwrt.raw"로 변경하면 해당 파일을 virt-manager로 가져와 시스템으로 부팅할 수 있습니다. 그러나 루트 파티션 "/"에는 공백이 없습니다.

"openwrt-19.07.6-x86-64-combined-squashfs.img"를 USB 드라이브에 추가한 다음 USB 드라이브를 새 파일에 추가하면 출력 파일을 virt-manager로 가져오고 시스템으로 부팅합니다. 루트 파티션의 크기는 "256MB"입니다.

dd if=openwrt-19.07.6-x86-64-combined-squashfs.img of=/dev/sde
dd if=/dev/sde of=./openwrt_with_256MB_root_partition.raw

"openwrt_with_256MB_root_partition.raw"의 크기는 USB 드라이브와 동일합니다. 하지만 다음 명령을 사용하면:

dd if=openwrt-19.07.6-x86-64-combined-squashfs.img of=/openwrt.raw

출력 파일의 크기는 입력 파일과 동일합니다. 나는 이 행동이 무의미하다는 것을 이해합니다. 하지만 USB 드라이브에 256MB 루트 파티션을 추가하면 이를 사용할 수 있게 되는 이유를 누군가 설명할 수 있습니까? 물리적 USB 드라이브나 다른 디스크 없이 루트 공간이 256MB인 이미지 파일을 생성할 수 있는 방법이 있습니까?

답변1

요즘 OpenWRT가 무엇을 하는지는 모르겠습니다.

그러나 당신이 하고 있는 일은 단순히 파일 끝에 일부 쓰레기 데이터를 추가하는 것뿐입니다. 파일 크기는 결국 가상 머신 내부의 장치 크기가 되므로 결과를 이해하기 쉽습니다.

다음을 사용할 수도 있습니다 truncate.

truncate -s256M openwrt-19.07.6-x86-64-combined-squashfs.img

엄밀히 말하면 이것은 희박한 파일을 생성하기 때문에 동일하지 않지만 훨씬 빠르고 충분합니다.

정확히 같은 결과를 얻으려면 실제로 다음과 같이 일부 데이터를 파일에 써야 합니다.

dd if=/dev/zero bs=1M count=236 >> openwrt-19.07.6-x86-64-combined-squashfs.img

에서 고급 플래그를 사용할 수도 있습니다 dd. 256 - 20 = 236

이와 관련된 또 다른 도구는 fallocate.


업데이트: 이미지를 보면 이렇습니다.

$ fdisk -l openwrt-19.07.6-x86-generic-combined-squashfs.img
Disk openwrt-19.07.6-x86-generic-combined-squashfs.img: 19.5 MiB, 20450816 bytes, 39943 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf1f0223e

Device                                             Boot Start    End Sectors  Size Id Type
openwrt-19.07.6-x86-generic-combined-squashfs.img1 *      512  33279   32768   16M 83 Linux
openwrt-19.07.6-x86-generic-combined-squashfs.img2      33792 558079  524288  256M 83 Linux

('크기' 열을 참고하세요.)

두 번째 파티션에는 압축된 읽기 전용 루트 이미지가 포함되어야 합니다.그리고읽기-쓰기 F2FS 영역, 그것이 어떻게 작동하는지 모르겠습니다. 아마도 처음 부팅할 때 크기가 조정되었을 수도 있습니다.

관련 정보