mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-02-23 11:21:12 +00:00
Merge ensure-vmtools-in-vmdk-header into ubuntu/master [a=jchittum] [r=rcj]
vmtools version in vmdk header (LP: #1893898) LP: #1893898 describes missing vmtools version from the vmdk headers. The version should be added as ddb.toolsVersion = "2147483647" however the sed was no longer replacing a ddb.comment field with the tools version. Rather than subbing ddb.comment with toolsVersion, this commit deletes ddb.comment (which the comment mentions could cause errors), and adds the correct value. There was no visibility into the descriptor during hook creation, so debug statements were added. This allows us to quickly verify in the logs that bad statements are removed (the possibly offending commetns), as well as ensuring that the toolsVersion is added MP: https://code.launchpad.net/~jchittum/livecd-rootfs/+git/livecd-rootfs/+merge/392401
This commit is contained in:
commit
df38b9ba75
6
debian/changelog
vendored
6
debian/changelog
vendored
@ -1,3 +1,9 @@
|
||||
livecd-rootfs (2.697) UNRELEASED; urgency=medium
|
||||
|
||||
* Ensure vmtools version entered into vmdk header (LP: #1893898)
|
||||
|
||||
-- John Chittum <john.chittum@canonical.com> Mon, 19 Oct 2020 10:52:54 -0500
|
||||
|
||||
livecd-rootfs (2.696) hirsute; urgency=medium
|
||||
|
||||
* auto/config: seed ubuntu-desktop when building hyperv image LP: #1901846
|
||||
|
@ -236,28 +236,34 @@ modify_vmdk_header() {
|
||||
|
||||
# Extract the vmdk header for manipulation
|
||||
dd if="${vmdk_name}" of="${descriptor}" bs=1 skip=512 count=1024
|
||||
echo "Cat'ing original descriptor to console for debugging."
|
||||
# cat header so we are aware of the original descriptor for debugging
|
||||
cat $descriptor
|
||||
|
||||
# The sed lines below is where the magic is. Specifically:
|
||||
# ddb.toolsVersion: sets the open-vm-tools so that VMware shows
|
||||
# the tooling as current
|
||||
# ddb.virtualHWVersion: set the version to 7, which covers most
|
||||
# current versions of VMware
|
||||
# createType: make sure its set to stream Optimized
|
||||
# remove the vmdk-stream-converter comment and replace with
|
||||
# # Disk DescriptorFile. This is needed for Virtualbox
|
||||
# remove the comments from vmdk-stream-converter which causes
|
||||
# VirtualBox and others to fail VMDK validation
|
||||
# trim null bytes to treat as standard text file
|
||||
tr -d '\000' < $descriptor > $newdescriptor
|
||||
|
||||
sed -e 's|# Description file.*|# Disk DescriptorFile|' \
|
||||
-e '/# Believe this is random*/d' \
|
||||
-e '/# Indicates no parent/d' \
|
||||
-e '/# The Disk Data Base/d' \
|
||||
-e 's|ddb.comment.*|ddb.toolsVersion = "2147483647"|' \
|
||||
"${descriptor}" > "${newdescriptor}"
|
||||
# add newline to newdescriptor
|
||||
echo "" >> $newdescriptor
|
||||
|
||||
# The header is cannot be bigger than 1024
|
||||
expr $(stat --format=%s ${newdescriptor}) \< 1024 > /dev/null 2>&1 || {
|
||||
echo "descriptor is too large, VMDK will be invalid!"; exit 1; }
|
||||
# add required tools version
|
||||
echo -n 'ddb.toolsVersion = "2147483647"' >> $newdescriptor
|
||||
|
||||
# diff original descriptor and new descriptor for debugging
|
||||
# diff exits 1 if difference. pipefail not set so piping diff
|
||||
# to cat prints diff and swallows exit 1
|
||||
echo "Printing diff of original and new descriptors."
|
||||
diff --text $descriptor $newdescriptor | cat
|
||||
|
||||
|
||||
# The header must be 1024 or less before padding
|
||||
if ! expr $(stat --format=%s ${newdescriptor}) \< 1025 > /dev/null 2>&1; then
|
||||
echo "descriptor is too large, VMDK will be invalid!";
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# reset newdescriptor to be 1024
|
||||
truncate --no-create --size=1K $newdescriptor
|
||||
|
||||
# Overwrite the vmdk header with our new, modified one
|
||||
dd conv=notrunc,nocreat \
|
||||
|
Loading…
x
Reference in New Issue
Block a user