virt-make-fs
libguestfs qcow2
예제에서
https://serverfault.com/a/332114/163884에서 언급했지만 다음은 전체 예입니다.
sudo apt-get install libguestfs-tools
# Workarounds for Ubuntu 18.04 bugs. See section below.
sudo rm -rf /var/cache/.guestfs-*
echo dash | sudo tee /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/zz-dash-packages
sudo chmod +r /boot/vmlinuz-*
mkdir sysroot
# Just a test file.
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=qcow2 --type=ext2 sysroot sysroot.ext2.qcow2
참고 방법은 sudo
설치 및 우분투 버그 해결 방법을 제외하고, 필요하지 않습니다.
그런 다음 QEMU가 실제로 읽을 수 있음을 확인했습니다.
qemu-system-x86_64 -drive file=sysroot.ext2.qcow2,format=qcow2,if=virtio,snapshot ...
그런 다음 QEMU Linux에 이미지를 마운트하고 파일을 읽을 수 있습니다.
virt-make-fs
다음 예
이 멋진 도구는 다음과 같은 원시 ext 파일 시스템을 만들 수도 있습니다.
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2
virt-make-fs --format=raw --type=ext4 sysroot sysroot.ext4
다음을 통해 호스트에서 직접 확인할 수 있습니다.
mkdir -p mnt
dev="$(sudo losetup --show -f -P sysroot.ext4)"
sudo mount -o loop "$dev" mnt
cmp sysroot/myfile mnt/myfile
이미지 크기 최소화
정말 좋은 기능은 virt-make-fs
원하는 이미지 크기를 자동으로 최소화하려고 시도한다는 것입니다.
Virt-make-fs는 기본적으로 여분의 공간을 최소화하지만, --size 플래그를 사용하여 원하는 경우 파일 시스템에 공간을 남겨 둘 수 있습니다.
그래서:
df -h
이미지가 82 % 채워 졌다고 알려줍니다.
/dev/loop17 1.5M 1.1M 244K 82% /home/ciro/test/guestfs/mnt
다음과 같이 최소값 위에 여분의 공간을 쉽게 추가 할 수 있습니다 --size-=+
.
virt-make-fs --format=raw --size=+8M --type=ext2 sysroot sysroot.ext2
ext4 저널 오버 헤드
매뉴얼은 또한 다음과 같이 언급합니다.
ext3 파일 시스템에는 일반적으로 1-32MB 크기의 저널이 포함되어 있습니다. 저널이 필요한 방식으로 파일 시스템을 사용하지 않을 경우 이는 오버 헤드로 인한 것입니다.
그리고 다음을 확인하는 것이 흥미 롭습니다.
du -bs *
어떤 생산 :
1052672 sysroot
1446297 sysroot.ext2
2599731 sysroot.ext4
그래서 우리는 ext4가 상당히 커졌다는 것을 알았습니다.
libguestfs 우분투 버그
단점 : 현재 Ubuntu 관리자 가 없는 것으로 보이며 라이브러리는 일반적으로 Ubuntu에서 버그가 있습니다.
sudo
이론에없는이 필요하지만, 우리가 해결을하지 않는 한이 우분투 포장 버그로 인해 필요합니다 /ubuntu/1046828/how-to-run-libguestfs-tools-tools-such-as- virt-make-fs-with-sudo / 1046829 # 1046829
libguestfs: error: /usr/bin/supermin exited with error status 1.
To see full error messages you may need to enable debugging.
Do:
export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
and run the command again. For further information, read:
http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
You can also run 'libguestfs-test-tool' and post the *complete* output
into a bug report or message to the libguestfs mailing list.
libguestfs: error: /usr/bin/supermin exited with error status 1.
그런 다음 해결 방법이 없으면 18.04 (16.04는 아님)가 https://bugzilla.redhat.com/show_bug.cgi?id=1591617 과 함께 실패합니다.
libguestfs: error: tar_in: write error on directory: /:
업스트림에서 이미 수정 된 버그로 인해
우분투 18.04에서 테스트 된 libguestfs-tools 1 : 1.36.13-1ubuntu3, QEMU 1 : 2.11 + dfsg-1ubuntu7.3.
qemu-img
그리고fallocate
보다 약간 더 편리합니다dd
.