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 लिनक्स के अंदर छवि को माउंट करने और फ़ाइल को पढ़ने में सक्षम हूं।
virt-make-fs
ext उदाहरण
यह भयानक उपकरण कच्चे 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
यह है कि यदि हम चाहते हैं तो यह स्वतः ही छवि का आकार कम करने की कोशिश करता है:
अतिरिक्त जगह को कम करने के लिए लगभग मेक-एफएस डिफॉल्ट करता है, लेकिन आप चाहें तो फाइल सिस्टम में स्पेस छोड़ने के लिए --साइज फ्लैग का उपयोग कर सकते हैं।
इसलिए:
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-32 एमबी आकार में। यदि आप एक तरह से फाइल सिस्टम का उपयोग नहीं करने जा रहे हैं, जिसके लिए जर्नल की आवश्यकता होती है, तो यह सिर्फ ओवरहेड व्यर्थ है।
और यह सत्यापित करना दिलचस्प है कि:
du -bs *
जो पैदा करता है:
1052672 sysroot
1446297 sysroot.ext2
2599731 sysroot.ext4
इसलिए हम देखते हैं कि ext4 काफी बड़ा निकला।
libguestfs उबंटू बग
अब नकारात्मक पक्ष के लिए: वर्तमान में कोई उबंटू अनुचर प्रतीत नहीं होता है और उबंटू में आमतौर पर पुस्तकालय छोटी गाड़ी है।
sudo
सिद्धांत रूप में आवश्यक नहीं है, लेकिन एक उबंटू पैकेजिंग बग के कारण यह आवश्यक है जब तक कि हम एक वर्कअराउंड नहीं करते हैं: /ubuntu/1046828/how-to-run-libguestfs-tools-tools-such-as virt-मेक-FS-बिना-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: /:
एक बग के कारण जो पहले से ही ऊपर की तरफ तय था।
Ubuntu 18.04 में परीक्षण किया गया, libguestfs-tools 1: 1.36.13-1ubuntu3, QEMU 1: 2.11 + dfsg-1ubuntu7.3।
qemu-img
और कीfallocate
तुलना में थोड़ा अधिक सुविधाजनक हैंdd
।