From 0031d747ac3e49c1cd8a312bb57b4604e9eef65d Mon Sep 17 00:00:00 2001 From: Mathieu Trudel-Lapierre Date: Wed, 12 Apr 2017 19:37:08 -0400 Subject: [PATCH] Import patches-unapplied version 2.441 to ubuntu/zesty-proposed Imported using git-ubuntu import. Changelog parent: 2ac1eda867ebc37261e396efe1ac1c6ed38a28cf New changelog entries: [ Balint Reczey ] * Add a basic but configurable autopkgtest. [ Mathieu Trudel-Lapierre ] * Add ubuntu-server:live for a subiquity-based server image. * Refactor functions out of ubuntu-cpc and ubuntu-server hooks. --- debian/changelog | 11 ++ debian/tests/control | 3 + debian/tests/default-bootstraps | 95 ++++++++++ live-build/auto/config | 43 +++-- live-build/{ubuntu-cpc => }/functions | 31 ++-- .../ubuntu-cpc/hooks/032-disk-image.binary | 7 +- .../ubuntu-cpc/hooks/032-root-squashfs.binary | 2 +- .../hooks/033-disk-image-uefi.binary | 9 +- .../hooks/034-disk-image-ppc64el.binary | 7 +- .../ubuntu-cpc/hooks/040-qcow2-image.binary | 2 +- .../ubuntu-cpc/hooks/040-vmdk-image.binary | 2 +- .../ubuntu-cpc/hooks/042-vagrant.binary | 2 +- live-build/ubuntu-cpc/hooks/999-extras.binary | 5 +- .../hooks/01-setup_modules.chroot | 5 + .../hooks/030-root-squashfs.binary | 37 ++++ .../hooks/032-installer-squashfs.binary | 168 ++++++++++++++++++ .../hooks/99-fix-resolvconf.chroot | 3 + .../system/getty@.service.d/autologin.conf | 3 + .../multi-user.target.wants/subiquity.service | 1 + .../systemd/system/subiquity-debug@.service | 30 ++++ .../lib/systemd/system/subiquity.service | 31 ++++ .../ubuntu-server/includes.chroot/etc/hosts | 9 + 22 files changed, 469 insertions(+), 37 deletions(-) create mode 100644 debian/tests/control create mode 100755 debian/tests/default-bootstraps rename live-build/{ubuntu-cpc => }/functions (91%) create mode 100755 live-build/ubuntu-server/hooks/01-setup_modules.chroot create mode 100755 live-build/ubuntu-server/hooks/030-root-squashfs.binary create mode 100755 live-build/ubuntu-server/hooks/032-installer-squashfs.binary create mode 100644 live-build/ubuntu-server/hooks/99-fix-resolvconf.chroot create mode 100644 live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/getty@.service.d/autologin.conf create mode 120000 live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/multi-user.target.wants/subiquity.service create mode 100644 live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/subiquity-debug@.service create mode 100644 live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/subiquity.service create mode 100644 live-build/ubuntu-server/includes.chroot/etc/hosts diff --git a/debian/changelog b/debian/changelog index ed333d87..cb7d216e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +livecd-rootfs (2.441) zesty; urgency=medium + + [ Balint Reczey ] + * Add a basic but configurable autopkgtest. + + [ Mathieu Trudel-Lapierre ] + * Add ubuntu-server:live for a subiquity-based server image. + * Refactor functions out of ubuntu-cpc and ubuntu-server hooks. + + -- Mathieu Trudel-Lapierre Wed, 12 Apr 2017 19:37:08 -0400 + livecd-rootfs (2.440) zesty; urgency=medium [ Steve Langasek ] diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 00000000..a37a5d79 --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,3 @@ +Tests: default-bootstraps +Depends: @, lsb-release +Restrictions: needs-root diff --git a/debian/tests/default-bootstraps b/debian/tests/default-bootstraps new file mode 100755 index 00000000..47c9ae13 --- /dev/null +++ b/debian/tests/default-bootstraps @@ -0,0 +1,95 @@ +#!/bin/sh +# autopkgtest check: Build default rootfs for all supported project:subproject pairs +# (C) 2017 Canonical Ltd. +# Author: Balint Reczey + +set -e + +if [ -z "$SUITE" ]; then + SUITE=$(lsb_release -c -s) +fi + +# Known project:subproject:template combinations. +# Listed subprojects can be combined with other projects as well, +# but this list gives reasonable coverage. +ALL_TRIPLETS=" + base:: + edubuntu:: + edubuntu-dvd:: + kubuntu:: + kubuntu-active:: + kubuntu-dvd:: + kubuntu-plasma5:: + lubuntu:: + lubuntu-next:: + mythbuntu:: + ubuntu:: + ubuntu-base:: + ubuntu-budgie:: + ubuntu-budgie-desktop:: + ubuntu-budgie-live:: + ubuntu-core:system-image:ubuntu-core + ubuntu-cpc::ubuntu-cpc + ubuntu-desktop-next:system-image:ubuntu-desktop-next + ubuntu-desktop-next::ubuntu-desktop-next + ubuntu-dvd:: + ubuntu-gnome:: + ubuntukylin:: + ubuntu-mate:: + ubuntu-mate-core:: + ubuntu-mate-desktop:: + ubuntu-mate-live:: + ubuntu-netbook:: + ubuntu-server:: + ubuntu-server:ubuntu-rtm: + ubuntu-server:ubuntu-rtm/foo: + ubuntu-server:wubi: + ubuntu-touch-custom::ubuntu-touch-custom + ubuntu-touch::ubuntu-touch + xubuntu::" + +if [ -z "$SELECTED_TRIPLETS" ]; then + SELECTED_TRIPLETS=" + ubuntu-base:: + ubuntu-cpc::ubuntu-cpc +" +fi + +live_build_rootfs() { + PROJECT=${1%%:*} + local SUBPROJECT_TMP=${1%:*} + SUBPROJECT=${SUBPROJECT_TMP#*:} + TEMPLATE=${1##*:} + ARCH=$(dpkg --print-architecture) + echo "Building rootfs for project: '$PROJECT' subproject: '$SUBPROJECT' template: '$TEMPLATE' in $PWD" + cp -a /usr/share/livecd-rootfs/live-build/auto . + if [ -n "$TEMPLATE" ]; then + cp -a /usr/share/livecd-rootfs/live-build/$TEMPLATE . + fi + env PROJECT=$PROJECT \ + SUBPROJECT=$SUBPROJECT \ + SUITE=$SUITE \ + ARCH=$ARCH \ + lb config + mkdir chroot + # this part needs root rights, but right now the whole script ran as root by autopkgtest + env PROJECT=$PROJECT \ + SUBPROJECT=$SUBPROJECT \ + ARCH=$ARCH \ + lb build + echo "Build results for project: '$PROJECT' subproject: '$SUBPROJECT' template: '$TEMPLATE' in $PWD" + du -sh * + echo "" +} + +WORKDIR=$(mktemp -d) +trap "RET=\$?; rm -rf $WORKDIR; exit \$RET" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR + +for i in $SELECTED_TRIPLETS; do + mkdir $i + (cd $i && live_build_rootfs $i) + # clean up after build to avoid filling the disk, needs root rights + rm -rf $i +done + diff --git a/live-build/auto/config b/live-build/auto/config index 9782a75d..77c33db4 100755 --- a/live-build/auto/config +++ b/live-build/auto/config @@ -33,6 +33,9 @@ if [ -z "$MIRROR" ]; then esac fi +mkdir -p config +cp -af /usr/share/livecd-rootfs/live-build/functions config/functions + mkdir -p config/package-lists add_task () @@ -101,10 +104,13 @@ add_binary_hook () BINARY_HOOKS="${BINARY_HOOKS:+$BINARY_HOOKS }$1" } -case $PROJECT in - ubuntu-cpc) +case $PROJECT:$SUBPROJECT in + ubuntu-cpc:*) IMAGEFORMAT=ext4 ;; + ubuntu-server:live) + IMAGEFORMAT=plain + ;; esac case $IMAGEFORMAT in @@ -130,7 +136,13 @@ case $IMAGEFORMAT in plain) OPTS="${OPTS:+$OPTS }--initramfs none --chroot-filesystem $IMAGEFORMAT" - PREINSTALLED=true + case $PROJECT:$SUBPROJECT in + ubuntu-server:live) + ;; + *) + PREINSTALLED=true + ;; + esac ;; *) @@ -144,7 +156,7 @@ case $IMAGEFORMAT in ;; esac -if [ "$PREINSTALLED" = "true" ] && [ "$SUBPROJECT" != "wubi" ]; then +if [ "$PREINSTALLED" = "true" ]; then # This is an oem-config preinstalled image, touch a random file that # we can refer back to during build, cause that's wildly hackish touch config/oem-config-preinstalled @@ -363,6 +375,13 @@ case $PROJECT in ubuntu-server) add_task install minimal + case $SUBPROJECT in + live) + add_task install standard + add_task install server + LIVE_TASK='cloud-image' + ;; + esac COMPONENTS='main' PREINSTALL_POOL_SEEDS='server-ship' ;; @@ -694,16 +713,15 @@ EOF ;; esac -case $PROJECT in - ubuntu-server) - cat > config/hooks/100-remove-fstab.chroot < config/hooks/100-remove-fstab.chroot < config/hooks/100-ubuntukylin.chroot < config/hooks/100-ubuntukylin.chroot < config/binary_rootfs/excludes << EOF @@ -748,7 +765,7 @@ EOF fi ;; - ubuntu-touch:*|ubuntu-touch-custom:*|ubuntu-core:system-image|ubuntu-desktop-next:system-image|ubuntu-cpc:*) + ubuntu-touch:*|ubuntu-touch-custom:*|ubuntu-core:system-image|ubuntu-desktop-next:system-image|ubuntu-cpc:*|ubuntu-server:live) cp -af /usr/share/livecd-rootfs/live-build/${PROJECT}/* \ config/ ;; diff --git a/live-build/ubuntu-cpc/functions b/live-build/functions similarity index 91% rename from live-build/ubuntu-cpc/functions rename to live-build/functions index c7ff023b..5abdeea1 100644 --- a/live-build/ubuntu-cpc/functions +++ b/live-build/functions @@ -1,7 +1,7 @@ # vi: ts=4 expandtab syntax=sh -CLOUD_IMG_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process" -IMAGE_SIZE=$((2252*1024**2)) # 2.2G (the current size we ship) +imagesize=${IMAGE_SIZE:-$((2252*1024**2))} # 2.2G (the current size we ship) +fs_label="${FS_LABEL:-rootfs}" rootfs_dev_mapper= loop_device= @@ -28,13 +28,13 @@ clean_loops() { create_empty_disk_image() { # Prepare an empty disk image - dd if=/dev/zero of="$1" bs=1 count=0 seek="${IMAGE_SIZE}" + dd if=/dev/zero of="$1" bs=1 count=0 seek="${imagesize}" } make_ext4_partition() { device="$1" - - mkfs.ext4 -F -b 4096 -i 8192 -m 0 -L cloudimg-rootfs -E resize=536870912 "$device" + label=${fs_label:+-L "${fs_label}"} + mkfs.ext4 -F -b 4096 -i 8192 -m 0 ${label} -E resize=536870912 "$device" } mount_image() { @@ -87,6 +87,17 @@ mount_partition() { setup_mountpoint "$mountpoint" } +mount_overlay() { + lower="$1" + upper="$2" + work="$2/../work" + path="$3" + + mkdir -p "$work" + mount -t overlay overlay \ + -olowerdir="$lower",upperdir="$upper",workdir="$work" \ + "$path" +} mount_disk_image() { local disk_image=${1} @@ -103,7 +114,7 @@ mount_disk_image() { # such as updating grub and installing software cat > $mountpoint/usr/sbin/policy-rc.d << EOF #!/bin/sh -# ${CLOUD_IMG_STR} +# ${IMAGE_STR} echo "All runlevel operations denied by policy" >&2 exit 101 EOF @@ -157,9 +168,7 @@ umount_disk_image() { modify_vmdk_header() { # Modify the VMDK headers so that both VirtualBox _and_ VMware can - # read the vmdk and import them. The vodoo here is _not_ documented - # anywhere....so this will have to do. This is undocumented vodoo - # that has been learned by the Cloud Image team. + # read the vmdk and import them. vmdk_name="${1}" descriptor=$(mktemp) @@ -251,9 +260,9 @@ convert_to_qcow2() { replace_grub_root_with_label() { # When update-grub is run, it will detect the disks in the build system. - # Instead, we want grub to use the cloudimg-rootfs labelled disk + # Instead, we want grub to use the right labelled disk CHROOT_ROOT="$1" - sed -i -e "s,root=[^ ]\+,root=LABEL=cloudimg-rootfs," \ + sed -i -e "s,root=[^ ]\+,root=LABEL=${fs_label}," \ "$CHROOT_ROOT/boot/grub/grub.cfg" } diff --git a/live-build/ubuntu-cpc/hooks/032-disk-image.binary b/live-build/ubuntu-cpc/hooks/032-disk-image.binary index 0ed08b04..a54ac8dd 100755 --- a/live-build/ubuntu-cpc/hooks/032-disk-image.binary +++ b/live-build/ubuntu-cpc/hooks/032-disk-image.binary @@ -1,6 +1,9 @@ #!/bin/bash -ex -. /build/config/functions +IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process" +FS_LABEL="cloudimg-rootfs" + +. config/functions BOOTPART_START= BOOTPART_END= @@ -92,7 +95,7 @@ case $ARCH:$SUBARCH in # not the best place for this, but neither flash-kernel nor # u-boot have provisions for installing u-boot via maintainer # script - /build/config/hooks/raspi2/mkknlimg --dtok \ + config/hooks/raspi2/mkknlimg --dtok \ mountpoint/usr/lib/u-boot/rpi_2/u-boot.bin \ mountpoint/boot/firmware/uboot.bin ;; diff --git a/live-build/ubuntu-cpc/hooks/032-root-squashfs.binary b/live-build/ubuntu-cpc/hooks/032-root-squashfs.binary index 63a00894..0a1d51ce 100755 --- a/live-build/ubuntu-cpc/hooks/032-root-squashfs.binary +++ b/live-build/ubuntu-cpc/hooks/032-root-squashfs.binary @@ -17,7 +17,7 @@ if [ -n "$SUBARCH" ]; then exit 0 fi -. /build/config/functions +. config/functions mkdir binary/boot/squashfs.dir cp -a chroot/* binary/boot/squashfs.dir diff --git a/live-build/ubuntu-cpc/hooks/033-disk-image-uefi.binary b/live-build/ubuntu-cpc/hooks/033-disk-image-uefi.binary index 04a3c7df..3cf55ed1 100755 --- a/live-build/ubuntu-cpc/hooks/033-disk-image-uefi.binary +++ b/live-build/ubuntu-cpc/hooks/033-disk-image-uefi.binary @@ -9,7 +9,10 @@ case $ARCH in ;; esac -. /build/config/functions +IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process" +FS_LABEL="cloudimg-rootfs" + +. config/functions apt-get -qqy install dosfstools gdisk @@ -75,7 +78,7 @@ install_grub() { esac cat << EOF >> mountpoint/etc/default/grub.d/50-cloudimg-settings.cfg -${CLOUD_IMG_STR} +${IMAGE_STR} # For Cloud Image compatability GRUB_PRELOAD_MODULES="${grub_modules}" EOF @@ -90,7 +93,7 @@ EOF if [ -f mountpoint/boot/efi/EFI/BOOT/grub.cfg ]; then sed -i "s| root| root hd0,gpt1|" mountpoint/boot/efi/EFI/BOOT/grub.cfg - sed -i "1i${CLOUD_IMG_STR}" mountpoint/boot/efi/EFI/BOOT/grub.cfg + sed -i "1i${IMAGE_STR}" mountpoint/boot/efi/EFI/BOOT/grub.cfg # For some reason the grub disk is looking for /boot/grub/grub.cfg on # part 15.... chroot mountpoint mkdir -p /boot/efi/boot/grub diff --git a/live-build/ubuntu-cpc/hooks/034-disk-image-ppc64el.binary b/live-build/ubuntu-cpc/hooks/034-disk-image-ppc64el.binary index 1f6b35a7..bad7297d 100755 --- a/live-build/ubuntu-cpc/hooks/034-disk-image-ppc64el.binary +++ b/live-build/ubuntu-cpc/hooks/034-disk-image-ppc64el.binary @@ -7,7 +7,10 @@ case $ARCH in ;; esac -. /build/config/functions +IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process" +FS_LABEL="cloudimg-rootfs" + +. config/functions create_partitions() { disk_image="$1" @@ -33,7 +36,7 @@ install_grub() { # set the kernel commandline to use hvc0 mkdir -p mountpoint/etc/default/grub.d cat << EOF > mountpoint/etc/default/grub.d/50-cloudimg-settings.cfg -${CLOUD_IMG_STR} +${IMAGE_STR} # Set the recordfail timeout GRUB_RECORDFAIL_TIMEOUT=0 diff --git a/live-build/ubuntu-cpc/hooks/040-qcow2-image.binary b/live-build/ubuntu-cpc/hooks/040-qcow2-image.binary index f9ab7e62..d2a00b11 100755 --- a/live-build/ubuntu-cpc/hooks/040-qcow2-image.binary +++ b/live-build/ubuntu-cpc/hooks/040-qcow2-image.binary @@ -21,7 +21,7 @@ esac apt-get install -qqy qemu-utils -. /build/config/functions +. config/functions if [ -f binary/boot/disk-uefi.ext4 ]; then convert_to_qcow2 binary/boot/disk-uefi.ext4 livecd.ubuntu-cpc.img diff --git a/live-build/ubuntu-cpc/hooks/040-vmdk-image.binary b/live-build/ubuntu-cpc/hooks/040-vmdk-image.binary index 9a71f7ff..7c2e0e54 100755 --- a/live-build/ubuntu-cpc/hooks/040-vmdk-image.binary +++ b/live-build/ubuntu-cpc/hooks/040-vmdk-image.binary @@ -18,7 +18,7 @@ case ${IMAGE_TARGETS:-} in ;; esac -. /build/config/functions +. config/functions if [ -e binary/boot/disk-uefi.ext4 ]; then create_vmdk binary/boot/disk-uefi.ext4 livecd.ubuntu-cpc.vmdk diff --git a/live-build/ubuntu-cpc/hooks/042-vagrant.binary b/live-build/ubuntu-cpc/hooks/042-vagrant.binary index 3f962bd8..382ac547 100755 --- a/live-build/ubuntu-cpc/hooks/042-vagrant.binary +++ b/live-build/ubuntu-cpc/hooks/042-vagrant.binary @@ -44,7 +44,7 @@ case $ARCH in exit 0;; esac -. /build/config/functions +. config/functions # Virtualbox is needed for making a small VMDK apt-get -qqy install genisoimage qemu-utils diff --git a/live-build/ubuntu-cpc/hooks/999-extras.binary b/live-build/ubuntu-cpc/hooks/999-extras.binary index ffc7c691..39c464de 100755 --- a/live-build/ubuntu-cpc/hooks/999-extras.binary +++ b/live-build/ubuntu-cpc/hooks/999-extras.binary @@ -8,8 +8,9 @@ if [ ! -d ${my_dir}/extra ]; then exit 0 fi -# Export the common functions to the extras -. /build/config/functions +export IMAGE_STR="# CLOUD_IMG: This file was created/modified by the Cloud Image build process" +export CLOUD_IMG_STR="$IMAGE_STR" +export FS_LABEL="cloudimg-rootfs" # Cleaner execution /bin/run-parts --regex ".*\.binary" "${extra_d}" diff --git a/live-build/ubuntu-server/hooks/01-setup_modules.chroot b/live-build/ubuntu-server/hooks/01-setup_modules.chroot new file mode 100755 index 00000000..87af73c2 --- /dev/null +++ b/live-build/ubuntu-server/hooks/01-setup_modules.chroot @@ -0,0 +1,5 @@ +#!/bin/sh -x + +set -e + +mkdir -p /lib/modules diff --git a/live-build/ubuntu-server/hooks/030-root-squashfs.binary b/live-build/ubuntu-server/hooks/030-root-squashfs.binary new file mode 100755 index 00000000..dad337d0 --- /dev/null +++ b/live-build/ubuntu-server/hooks/030-root-squashfs.binary @@ -0,0 +1,37 @@ +#!/bin/bash -ex +# vi: ts=4 noexpandtab +# +# Generate a squashfs root and manifest + +set -x +echo "030-root-squashfs.binary" + +case $IMAGE_TARGETS in + ""|*squashfs*) + ;; + *) + echo "Skipping squashfs build" + exit 0 + ;; +esac + +if [ -n "$SUBARCH" ]; then + echo "Skipping rootfs build for subarch flavor build" + exit 0 +fi + +. config/functions + +mkdir binary/boot/squashfs.dir +cp -a chroot/* binary/boot/squashfs.dir + +apt-get -qqy install squashfs-tools + +squashfs_f="${PWD}/livecd.${PROJECT}.squashfs" +squashfs_f_manifest="${squashfs_f}.manifest" + +dpkg-query --admindir=binary/boot/squashfs.dir/var/lib/dpkg -W > ${squashfs_f_manifest} + +(cd "binary/boot/squashfs.dir/" && + mksquashfs . ${squashfs_f} \ + -no-progress -xattrs -comp xz ) diff --git a/live-build/ubuntu-server/hooks/032-installer-squashfs.binary b/live-build/ubuntu-server/hooks/032-installer-squashfs.binary new file mode 100755 index 00000000..32e57ca6 --- /dev/null +++ b/live-build/ubuntu-server/hooks/032-installer-squashfs.binary @@ -0,0 +1,168 @@ +#!/bin/bash -ex +# vi: ts=4 noexpandtab +# +# Generate a squashfs root and manifest + +set -x + +echo "032-installer-squashfs.binary" + +case $IMAGE_TARGETS in + ""|*squashfs*) + ;; + *) + echo "Skipping squashfs build" + exit 0 + ;; +esac + +if [ -n "$SUBARCH" ]; then + echo "Skipping rootfs build for subarch flavor build" + exit 0 +fi + +. config/functions + +SQUASH_ROOT=binary/boot/squashfs.dir +OVERLAY_ROOT=binary/boot/overlay.dir + +mkdir -p "$OVERLAY_ROOT" + +setup_mountpoint binary/boot/squashfs.dir + +# Create an installer squashfs layer +mount_overlay "$SQUASH_ROOT/" "$OVERLAY_ROOT/" "$SQUASH_ROOT/" + +# Prepare installer layer. + +# Install any requirements for the installer, for things we don't want +# to see on the installed system +chroot $SQUASH_ROOT apt-get update +chroot $SQUASH_ROOT apt-get -y install user-setup +chroot $SQUASH_ROOT apt-get -y install curtin + +# Don't let cloud-init run in the live session. +touch $SQUASH_ROOT/etc/cloud/cloud-init.disabled + +# Do the snap seeding dance. +chroot $SQUASH_ROOT mkdir -p /var/lib/snapd/seed/snaps /var/lib/snapd/seed/assertions +chroot $SQUASH_ROOT sh -c ' +set -x; +cd /var/lib/snapd/seed; +sudo SNAPPY_STORE_NO_CDN=1 snap download core; +sudo SNAPPY_STORE_NO_CDN=1 snap download --channel=edge subiquity; + +CORE_SNAP=$(ls -1 core*.snap); +SUBIQUITY_SNAP=$(ls -1 subiquity*.snap); + +mv *.assert /var/lib/snapd/seed/assertions/; +mv *.snap /var/lib/snapd/seed/snaps/; + +cat < /var/lib/snapd/seed/seed.yaml +snaps: + - name: core + channel: stable + file: ${CORE_SNAP} + - name: subiquity + channel: edge + classic: true + file: ${SUBIQUITY_SNAP} +EOF +' + +cat < $SQUASH_ROOT/var/lib/snapd/seed/assertions/cyphermox.account +type: account +authority-id: canonical +account-id: H0szZPjHTU4x04XeYjLyv8tJqYXq7cYk +display-name: Mathieu Trudel +timestamp: 2016-09-12T20:11:03.478544Z +username: cyphermox +validation: unproven +sign-key-sha3-384: BWDEoaqyr25nF5SNCvEv2v7QnM9QsfCc0PBMYD_i2NGSQ32EF2d4D0hqUel3m8ul + +AcLBUgQAAQoABgUCV9cL1wAAbQIQAEa8X5Bf2achG/9gC2d9YHWE+Uk9/FXK58bZ4Ym5VDTPW2Es +BZOTMA6ROcCrii8/HM88+5bKGGoYLVNjfYUosYfR31kkFT1z1payhs4zfhANTBHXQpeNlGASm9ua +O1UkBNFJwYu+tRh9gsY5wuryjfxXndS2pzUm2fXlFB4I/FgQEZnKJP99C3H0cUkGHzEwadRc7vqu +/B+mmlwX/pgzlUwt3EXkCpx0hvN4ZgSzyKAtLn+ij2XSe4MxptT/uGCY2tnqsSa+H6J+O0RYENYD +Xa7MJLXSGS9iqOwBkTO5X1eHSNPUs0LqzAqz4zTL5Kd9c/ohFwPzZpO8ltLA2nhKEfHzofMsMjEi +qwhCDQ5LZD93dQ/VWzmmrCi9cmy+mci7K+hEYLtopzbkMl7cFBVVc2pQlTArspsFy9aMurCs4m8K +GfGJOmvYP4Rnn8YYVLtAIPbGADAzG4mxBDxc8r+NRCprDIJmVHed/aQo6gNNip6VHi7xORnAJYRI +0XQThASCRYzZxEBv3iND0GzAlRdlOLA+x+jRt2CDg0qLQ5DmuXGePEkEyJEMQb+OBsFHrPcvX1UI +eHoKL9ZyvcrhsuPmG92P2UYiGp7qeKYmPQFsWNNh/R18tgingyJbm75pAE8MrpyZ1TTyDEYhwzbm +F5zdm4dy0k1EGMhTTDz/hzlE0Ugw +EOF + +cat < $SQUASH_ROOT/var/lib/snapd/seed/assertions/cyphermox-sn-test.account-key +type: account-key +authority-id: canonical +public-key-sha3-384: vihTQiNMkgsi2g39sggy3k4EVGrkFyWMof_nIrCbhxSOO7U00PRD_TDeWrpqGNor +account-id: H0szZPjHTU4x04XeYjLyv8tJqYXq7cYk +name: cyphermox-sn-test +since: 2017-03-14T21:24:50Z +body-length: 717 +sign-key-sha3-384: BWDEoaqyr25nF5SNCvEv2v7QnM9QsfCc0PBMYD_i2NGSQ32EF2d4D0hqUel3m8ul + +AcbBTQRWhcGAARAAqJ9Xdy+csx9nQkipmldiKNsBKqwRh3HjwlnSrBm/YpI7Jbgs6zubD8Zj/hwr +bQiu4E2d6aobJcn3cgNdTlCEXES1M3sC6vSmkuz2fXdHRsYD6V3l5rlPjlyWPGNajcKvn1lEyOxC +j6efASJysX5lCDPfGy8Joe4OdeZxmPAwCJpuxpltlSMBlPjCHBgHMzv+C1zh9wkBuFh3wDIFP8ih +hnzGN/UevSHMfZCGh3y20TzDHeaeI35hiHkaibQuifqVNMTjnxReYKHV2eAP8/2XpEhfMAU6AD/Y +020ayr9REE/c6KTYq7Po7REzvUrWlG0KknBtHM7wCn9puo5HrM767K0H+ts6fsrvx5kRC5ZheVOf +Jh3EoXYQYCL1EGw0bzU03Lxx0RQ6teEc0WTDzky54vFr6UHjCAwethpzZ7MtZRdfwW4r/jUcxwXR +JXXKh03WK/ivhtr9KAROVkdUeMb/txp/8DvLW5zs7ohTaaC0qH5J+MMp0lm6ux0S8WyPmMOcb0SP +0IwOTvQc1ALDG3SiUgtJRP9Kt5jeuWIltH0cYE+QGPzey+fJ+iJx0QmeVnF2+O2JH2RihR5uJIBE +HzQlNMVZB/iyjgdCLamMUeqa6DAOpzR2haIRgaXKtK0G9Ho1ArEsXZsRiFYorhtxzrwGmkq7kGCw +tsY2pTeILZO1QPMAEQEAAQ== + +AcLBUgQAAQoABgUCWMhfrAAAXn4QALo795LKWhSNlzI7KIz3hq6rFK1YVDbj3KXW8xoF1FEwyE51 +4s1hZXc5N5h7DO49pj7JcXtE+Vi2gV+X294BqRevglBZgMwUtXdHX29IgPAx0jR9ARybS9A0QQYV +OaoKmnq+44p76D2gZz0blax18uROJCKfL6GCRw29/C/GJWpRnEEJlXC2DVD45vJeptSqLDcBL6z+ +AypoV9NhJlmGm2jxPg5Jm+BdkyCZSbfNMw2sBcjJbs63KHgE9XsaP6Frb9gBexwXCx8/U6Y2jFTL +wmyHpXXjBY0et8ze2bcqcEsDeW30eFALki/+FfPzjTtxY/Xo/r2j78YMHVFOkWJYj3MZJ+LJ0UWC +eM4xzJm2ROwxFhFpIqlIRtR6WUPIxAx3Fb1j3uDTSBXDYv/hjxhSLZpw3/AN7Rj7pLWnwfD3076i +3R900ad3/tRQp8hlrn4H9zRxBwaCKhZ9h1kfmyHcVpf0Nk03Fe5tHTai0pdHpC6bPi798Iw6qt0r +D7VoKv29fa55zlGRTAG9mW0cbgkKUq1SBtLnBSy+peluVGjJWgZ3j1K9waTEoQPiNn6/JJvg2GjK +awZPm8R1ngBYQs/vGPhcfz8DGF3uwFzbSh/bLAKky22qrRypTtczDXw4H1LWPlUvB4cQfTY6Ad+w +KaHPaPmuIpn1DVEfPhNeByz57PDu +EOF + +cat < $SQUASH_ROOT/var/lib/snapd/seed/assertions/cyphermox-classic.model +type: model +authority-id: H0szZPjHTU4x04XeYjLyv8tJqYXq7cYk +series: 16 +brand-id: H0szZPjHTU4x04XeYjLyv8tJqYXq7cYk +model: cyphermox-test-classic +classic: true +timestamp: 2017-03-15T14:32:45+00:00 +sign-key-sha3-384: vihTQiNMkgsi2g39sggy3k4EVGrkFyWMof_nIrCbhxSOO7U00PRD_TDeWrpqGNor + +AcLBXAQAAQoABgUCWMm5vAAKCRBdai1JSycAlUiAD/41bWorQOI343Ub/JVGFXN8aHXwZWh2iVzY +m42QbHZSuyyLBLiEqauiQLvuFa3Dtb3i6GC6hdtOlf/sPwZISriWrNuO5qPXik5SqP5zZop/qy4y +msWpG1S6M/aNqGVfUPIx0v7l9iTb4ZG9hyyxPwdE5lFj4nIqWlu6rIGPCGC+dfAS62PPkUGdXqzV +VOA6/D2FgthhxywaZZwSLwzP/Ee+JAgeO17iX605Lb0dzy/5HmopM7G8wUgzidPUY9AIZ63gr+GP +KyBrvwHzE6PbH9QjQy1Z7DhkThKeViocx67ewnBocBr75F09LfcVR+cAxMujSs7NBbYl444aQeth +HUuLwvuH189KsnQdqF2Tfta5lkCn9Uqeshq2c2jGyYXBTpvxyQny4X+yQZF1uEalH3PRR+AxIT9Y +2siMLMuRyS/iMhIkLToutzuhZS+7ujuGs7H4l9C0hUon9c+62XEIkNH4rjutR7lCuFbE3CMqVl9H +lgGQ6HXl0uoJHEzK4T1+ipstSiujn9KD+8LCtkz0YWFmdWQ97VHB2Wmjp4c2bze+BojbqJyfJ2bo +AAHP0AEiHQ7zN0yLl7+fkYIMy64xQJqamH1Z2BFN0GWMPwTjpXpszOC+ev7Bpbg0xoldQ1tBHHxH +J4Weia71DnXOnt8cj1VhebVMlyv7B/TGAbGwgprgmQ== +EOF + +mv resolv.conf.tmp "binary/boot/squashfs.dir/etc/resolv.conf" + +# Unmount the overlay first, where it is mounted: +umount "$SQUASH_ROOT" + +# Then we can start unmounting the "real" root: +umount "binary/boot/squashfs.dir/proc" +umount "binary/boot/squashfs.dir/sys" +umount "binary/boot/squashfs.dir/dev/pts" +umount "binary/boot/squashfs.dir/dev" +umount "binary/boot/squashfs.dir/tmp" + +apt-get -qqy install squashfs-tools + +squashfs_f="${PWD}/livecd.${PROJECT}.installer.squashfs" + +(cd "$OVERLAY_ROOT/" && + mksquashfs . ${squashfs_f} \ + -no-progress -xattrs -comp xz ) diff --git a/live-build/ubuntu-server/hooks/99-fix-resolvconf.chroot b/live-build/ubuntu-server/hooks/99-fix-resolvconf.chroot new file mode 100644 index 00000000..9ed0a499 --- /dev/null +++ b/live-build/ubuntu-server/hooks/99-fix-resolvconf.chroot @@ -0,0 +1,3 @@ +#!/bin/sh + +ln -snf ../run/resolvconf/resolv.conf /etc/resolv.conf diff --git a/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/getty@.service.d/autologin.conf b/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/getty@.service.d/autologin.conf new file mode 100644 index 00000000..535e4f0c --- /dev/null +++ b/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/getty@.service.d/autologin.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=-/sbin/agetty --noclear -n --autologin ubuntu %I $TERM diff --git a/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/multi-user.target.wants/subiquity.service b/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/multi-user.target.wants/subiquity.service new file mode 120000 index 00000000..4d9ea45c --- /dev/null +++ b/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/multi-user.target.wants/subiquity.service @@ -0,0 +1 @@ +../subiquity.service \ No newline at end of file diff --git a/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/subiquity-debug@.service b/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/subiquity-debug@.service new file mode 100644 index 00000000..826e234d --- /dev/null +++ b/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/subiquity-debug@.service @@ -0,0 +1,30 @@ +[Unit] +Description=Subiquity debug shell %I +After=systemd-user-sessions.service plymouth-quit-wait.service +After=rc-local.service +IgnoreOnIsolate=yes +ConditionPathExists=/dev/tty0 +ConditionPathExists=!/run/subiquity/complete + +[Service] +Environment=PYTHONPATH=/usr/share/subiquity +ExecStartPre=/bin/systemctl stop getty@%I +ExecStart=/sbin/agetty -n --noclear -l /usr/share/subiquity/subiquity-debug %I $TERM +ExecStopPost=/bin/systemctl start getty@%I +Type=idle +Restart=always +RestartSec=0 +UtmpIdentifier=%I +TTYPath=/dev/%I +TTYReset=yes +TTYVHangup=yes +TTYVTDisallocate=yes +KillMode=process +IgnoreSIGPIPE=no +SendSIGHUP=yes + +#KillMode=process +#Restart=always +#StandardInput=tty-force +#StandardOutput=tty +#StandardError=tty diff --git a/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/subiquity.service b/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/subiquity.service new file mode 100644 index 00000000..2b40f7c0 --- /dev/null +++ b/live-build/ubuntu-server/includes.binary/boot/overlay.dir/lib/systemd/system/subiquity.service @@ -0,0 +1,31 @@ +[Unit] +Description=Subiquity, the installer for Ubuntu Server +After=systemd-user-sessions.service plymouth-quit-wait.service +After=rc-local.service +Requires=snapd.service +IgnoreOnIsolate=yes +ConditionPathExists=/dev/tty0 +ConditionPathExists=!/run/subiquity/complete + +[Service] +Environment=PYTHONPATH=/usr/share/subiquity +ExecStartPre=/bin/systemctl stop getty@tty1 +ExecStart=/sbin/agetty -n --noclear -l /snap/bin/subiquity tty1 $TERM +ExecStopPost=/bin/systemctl start getty@tty1 +Type=idle +Restart=always +RestartSec=0 +UtmpIdentifier=tty1 +TTYPath=/dev/tty1 +TTYReset=yes +TTYVHangup=yes +TTYVTDisallocate=yes +KillMode=process +IgnoreSIGPIPE=no +SendSIGHUP=yes + +#KillMode=process +#Restart=always +#StandardInput=tty-force +#StandardOutput=tty +#StandardError=tty diff --git a/live-build/ubuntu-server/includes.chroot/etc/hosts b/live-build/ubuntu-server/includes.chroot/etc/hosts new file mode 100644 index 00000000..81684340 --- /dev/null +++ b/live-build/ubuntu-server/includes.chroot/etc/hosts @@ -0,0 +1,9 @@ +127.0.0.1 localhost.localdomain localhost +::1 localhost6.localdomain6 localhost6 + +# The following lines are desirable for IPv6 capable hosts +::1 localhost ip6-localhost ip6-loopback +fe00::0 ip6-localnet +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +ff02::3 ip6-allhosts