When creating VM images, copy the contents of the created filesystem into
a new filesystem before packaging it into a disk image. This prevents "remnants" of deleted files from showing up in the VM images, and reduces their compressed size (by about 10% for the cloudware images) as a result. Looks good to: gjb
This commit is contained in:
parent
4e8058e313
commit
25c1155771
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=280299
@ -102,6 +102,7 @@ main() {
|
|||||||
vm_extra_pre_umount
|
vm_extra_pre_umount
|
||||||
vm_extra_pkg_rmcache
|
vm_extra_pkg_rmcache
|
||||||
cleanup
|
cleanup
|
||||||
|
vm_copy_base
|
||||||
vm_create_disk || return 0
|
vm_create_disk || return 0
|
||||||
vm_extra_create_disk
|
vm_extra_create_disk
|
||||||
|
|
||||||
|
@ -67,6 +67,35 @@ vm_create_base() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vm_copy_base() {
|
||||||
|
# Creates a new UFS root filesystem and copies the contents of the
|
||||||
|
# current root filesystem into it. This produces a "clean" disk
|
||||||
|
# image without any remnants of files which were created temporarily
|
||||||
|
# during image-creation and have since been deleted (e.g., downloaded
|
||||||
|
# package archives).
|
||||||
|
|
||||||
|
mkdir -p ${DESTDIR}/old
|
||||||
|
mdold=$(mdconfig -f ${VMBASE})
|
||||||
|
mount /dev/${mdold} ${DESTDIR}/old
|
||||||
|
|
||||||
|
truncate -s ${VMSIZE} ${VMBASE}.tmp
|
||||||
|
mkdir -p ${DESTDIR}/new
|
||||||
|
mdnew=$(mdconfig -f ${VMBASE}.tmp)
|
||||||
|
newfs -j /dev/${mdnew}
|
||||||
|
mount /dev/${mdnew} ${DESTDIR}/new
|
||||||
|
|
||||||
|
tar -cf- -C ${DESTDIR}/old . | tar -xf- -C ${DESTDIR}/new
|
||||||
|
|
||||||
|
umount /dev/${mdold}
|
||||||
|
rmdir ${DESTDIR}/old
|
||||||
|
mdconfig -d -u ${mdold}
|
||||||
|
|
||||||
|
umount /dev/${mdnew}
|
||||||
|
rmdir ${DESTDIR}/new
|
||||||
|
mdconfig -d -u ${mdnew}
|
||||||
|
mv ${VMBASE}.tmp ${VMBASE}
|
||||||
|
}
|
||||||
|
|
||||||
vm_install_base() {
|
vm_install_base() {
|
||||||
# Installs the FreeBSD userland/kernel to the virtual machine disk.
|
# Installs the FreeBSD userland/kernel to the virtual machine disk.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user