Hi Tony,
this patch works for me:
---
diskimage-builder/diskimage_builder/elements/ubuntu/root.d/10-cache-ubuntu-tarball.orig
2018-02-09 12:20:02.117793234 +0000
+++
diskimage-builder/diskimage_builder/elements/ubuntu/root.d/10-cache-ubuntu-tarball
2018-02-09 13:25:48.654868263 +0000
@@ -14,7 +14,9 @@
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://cloud-images.ubuntu.com}
DIB_RELEASE=${DIB_RELEASE:-trusty}
-BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-$ARCH-root.tar.gz}
+SUFFIX="-root"
+[[ $DIB_RELEASE =~ (artful|bionic) ]] && SUFFIX=""
+BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-${ARCH}${SUFFIX}.tar.gz}
SHA256SUMS=${SHA256SUMS:-https://${DIB_CLOUD_IMAGES##http?(s)://}/$DIB_RELEASE/current/SHA256SUMS}
CACHED_FILE=$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
CACHED_FILE_LOCK=$DIB_LOCKFILES/$BASE_IMAGE_FILE.lock
@@ -45,9 +47,25 @@
fi
popd
fi
- # Extract the base image (use --numeric-owner to avoid UID/GID
mismatch between
- # image tarball and host OS e.g. when building Ubuntu image on an
openSUSE host)
- sudo tar -C $TARGET_ROOT --numeric-owner -xzf
$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
+ if [ -n "$SUFFIX" ]; then
+ # Extract the base image (use --numeric-owner to avoid UID/GID
mismatch between
+ # image tarball and host OS e.g. when building Ubuntu image on an
openSUSE host)
+ sudo tar -C $TARGET_ROOT --numeric-owner -xzf
$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
+ else
+ # Unpack image to IDIR, mount it on MDIR, copy it to TARGET_ROOT
+ IDIR="/tmp/`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ;
echo ''`"
+ MDIR="/tmp/`head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ;
echo ''`"
+ sudo mkdir $IDIR $MDIR
+ sudo tar -C $IDIR --numeric-owner -xzf
$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
+ sudo mount -o loop -t auto
$IDIR/$DIB_RELEASE-server-cloudimg-${ARCH}.img $MDIR
+ pushd $PWD 2>/dev/null
+ cd $MDIR
+ sudo tar c . | sudo tar x -C $TARGET_ROOT -k --numeric-owner
2>/dev/null
+ popd
+ # Clean up
+ sudo umount $MDIR
+ sudo rm -rf $IDIR $MDIR
+ fi
}
(
On 2/9/18 1:03 PM, Volodymyr Litovka wrote:
Hi Tony,
On 2/9/18 6:01 AM, Tony Breeds wrote:
On Thu, Feb 08, 2018 at 10:53:14PM +0200, Volodymyr Litovka wrote:
Hi colleagues,
does anybody here know how to prepare Ubuntu Artful (17.10) image using
diskimage-builder?
diskimage-builder use the following naming style for download -
$DIB_RELEASE-server-cloudimg-$ARCH-root.tar.gz
and while "-root" names are there for trusty/amd64 and xenial/amd64 distros,
these archives for artful (and bionic) are absent on
cloud-images.ubuntu.com. There are just different kinds of images, not
source tree as in -root archives.
I will appreciate any ideas or knowledge how to customize 17.10-based image
using diskimage-builder or in diskimage-builder-like fashion.
You might like to investigate the ubuntu-minimal DIB element which will
build your ubuntu image from apt rather than starting with the pre-built
image.
good idea, but with
export DIST="ubuntu-minimal"
export DIB_RELEASE=artful
diskimage-builder fails with the following debug:
2018-02-09 10:33:22.426 | dib-run-parts Sourcing environment file
/tmp/in_target.d/pre-install.d/../environment.d/10-dib-init-system.bash
2018-02-09 10:33:22.427 | + source
/tmp/in_target.d/pre-install.d/../environment.d/10-dib-init-system.bash
2018-02-09 10:33:22.427 | ++++ dirname
/tmp/in_target.d/pre-install.d/../environment.d/10-dib-init-system.bash
2018-02-09 10:33:22.428 | +++
PATH='$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/tmp/in_target.d/pre-install.d/../environment.d/..'
2018-02-09 10:33:22.428 | +++ dib-init-system
2018-02-09 10:33:22.429 | + set -eu
2018-02-09 10:33:22.429 | + set -o pipefail
2018-02-09 10:33:22.429 | + '[' -f /usr/bin/systemctl -o -f
/bin/systemctl ']'
2018-02-09 10:33:22.429 | + [[ -f /sbin/initctl ]]
2018-02-09 10:33:22.429 | + [[ -f /etc/gentoo-release ]]
2018-02-09 10:33:22.429 | + [[ -f /sbin/init ]]
2018-02-09 10:33:22.429 | + echo 'Unknown init system'
2018-02-09 10:36:54.852 | + exit 1
2018-02-09 10:36:54.853 | ++ DIB_INIT_SYSTEM='Unknown init system
while earlier it find systemd
2018-02-09 10:33:22.221 | dib-run-parts Sourcing environment file
/tmp/dib_build.fJUf6F4d/hooks/extra-data.d/../environment.d/10-dib-init-system.bash
2018-02-09 10:33:22.223 | + source
/tmp/dib_build.fJUf6F4d/hooks/extra-data.d/../environment.d/10-dib-init-system.bash
2018-02-09 10:33:22.223 | ++++ dirname
/tmp/dib_build.fJUf6F4d/hooks/extra-data.d/../environment.d/10-dib-init-system.bash
2018-02-09 10:33:22.224 | +++
PATH=/home/doka/DIB/dib/bin:/home/doka/DIB/dib/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/tmp/dib_build.fJUf6F4d/hooks/extra-data.d/../environment.d/..
2018-02-09 10:33:22.224 | +++ dib-init-system
2018-02-09 10:33:22.225 | + set -eu
2018-02-09 10:33:22.225 | + set -o pipefail
2018-02-09 10:33:22.225 | + '[' -f /usr/bin/systemctl -o -f
/bin/systemctl ']'
2018-02-09 10:33:22.225 | + echo systemd
2018-02-09 10:33:22.226 | ++ DIB_INIT_SYSTEM=systemd
2018-02-09 10:33:22.226 | ++ export DIB_INIT_SYSTEM
it seems somewhere in the middle something happens to systemd package
In the meantime I'll look at how we can consume the .img file, which is
similar to what we'd need to do for Fedora
script
diskimage-builder/diskimage_builder/elements/ubuntu/root.d/10-cache-ubuntu-tarball
contains the function get_ubuntu_tarball() which, after all checks,
does the following:
sudo tar -C $TARGET_ROOT --numeric-owner -xzf
$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
probably, the easiest hack around the issue is to change above to smth
like
sudo (
mount -o loop <image> <mount point>
tar cv <mount point> | tar xv -C $TARGET_ROOT ...
)
Will try this.
--
Volodymyr Litovka
"Vision without Execution is Hallucination." -- Thomas Edison
--
Volodymyr Litovka
"Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________
OpenStack-operators mailing list
OpenStack-operators@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators