virt-make-fs
từ qcow2
ví dụ libguestfs
/server//a/332114/163884 đã đề cập đến nó, nhưng đây là một ví dụ đầy đủ:
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
Lưu ý cách sudo
không bắt buộc, ngoại trừ cài đặt và cách khắc phục lỗi Ubuntu.
Sau đó tôi đã xác minh rằng QEMU thực sự có thể đọc nó với:
qemu-system-x86_64 -drive file=sysroot.ext2.qcow2,format=qcow2,if=virtio,snapshot ...
Sau đó tôi có thể gắn hình ảnh bên trong QEMU Linux và đọc tệp.
virt-make-fs
ví dụ
Công cụ tuyệt vời này cũng có thể tạo các hệ thống tập tin ext thô, ví dụ:
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2
virt-make-fs --format=raw --type=ext4 sysroot sysroot.ext4
mà chúng tôi có thể xác minh trực tiếp trên máy chủ với:
mkdir -p mnt
dev="$(sudo losetup --show -f -P sysroot.ext4)"
sudo mount -o loop "$dev" mnt
cmp sysroot/myfile mnt/myfile
Giảm thiểu kích thước hình ảnh
Một tính năng thực sự tốt virt-make-fs
là nó tự động cố gắng giảm thiểu kích thước hình ảnh nếu đó là những gì chúng ta muốn:
Virt-make-fs mặc định để giảm thiểu không gian thừa, nhưng bạn có thể sử dụng cờ --size để chừa không gian trong hệ thống tệp nếu bạn muốn.
vì thế:
df -h
nói với tôi rằng hình ảnh được lấp đầy 82%:
/dev/loop17 1.5M 1.1M 244K 82% /home/ciro/test/guestfs/mnt
Chúng tôi có thể dễ dàng thêm một số không gian bổ sung trên đầu trang tối thiểu với --size-=+
:
virt-make-fs --format=raw --size=+8M --type=ext2 sysroot sysroot.ext2
tạp chí ext4 trên cao
Hướng dẫn cũng đề cập rằng:
Lưu ý rằng hệ thống tập tin ext3 chứa một tạp chí, thường có kích thước 1-32 MB. Nếu bạn sẽ không sử dụng hệ thống tập tin theo cách yêu cầu nhật ký, thì đây chỉ là sự lãng phí.
và thật thú vị khi xác minh rằng với:
du -bs *
sản xuất:
1052672 sysroot
1446297 sysroot.ext2
2599731 sysroot.ext4
vì vậy chúng tôi thấy rằng ext4 xuất hiện lớn hơn đáng kể.
lỗi libguestfs Ubuntu
Bây giờ cho nhược điểm: dường như không có người bảo trì Ubuntu hiện tại và thư viện nói chung là lỗi trên Ubuntu.
sudo
không phải là lý thuyết bắt buộc, nhưng nó được yêu cầu do lỗi đóng gói Ubuntu trừ khi chúng tôi giải quyết: https://askubfox.com/questions/1046828/how-to-run-libguestfs-tools-tools-such-as- virt-make-fs-without-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.
Sau đó, không có cách giải quyết của chúng tôi, 18.04 (nhưng không phải 16.04) đã thất bại với: https://ormszilla.redhat.com/show_orms.cgi?id=1591617
libguestfs: error: tar_in: write error on directory: /:
do một lỗi đã được sửa chữa ngược dòng.
Đã thử nghiệm trong Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubfox3, QEMU 1: 2.11 + dfsg-1ubfox7.3.
qemu-img
vàfallocate
là một chút thuận tiện hơndd
.