mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-06-07 08:01:30 +00:00
Merge branch 'ubuntu/master' of git+ssh://git.launchpad.net/livecd-rootfs into canary-as-default
This commit is contained in:
commit
9b33f085c1
116
debian/changelog
vendored
116
debian/changelog
vendored
@ -1,3 +1,119 @@
|
|||||||
|
livecd-rootfs (23.10.30) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Fix unminimize to correctly list packages. (LP: #1996489)
|
||||||
|
|
||||||
|
-- Utkarsh Gupta <utkarsh@ubuntu.com> Sat, 02 Sep 2023 02:16:03 +0530
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.29) mantic; urgency=medium
|
||||||
|
|
||||||
|
* canary: switch to use the live task, try to use KERNEL_FLAVOURS instead
|
||||||
|
of a manual kernel add_package.
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Wed, 31 Aug 2023 11:57:11 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.28) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Allow stderr in the autopkgtest.
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Wed, 30 Aug 2023 08:28:57 -0700
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.27) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Add ubuntu to the list of targets we autopkgtest for on amd64, to ensure
|
||||||
|
coverage of the lb_chroot_layered behavior.
|
||||||
|
* lb_chroot_layered: if the unmount of the chroot mountpoint fails, dump
|
||||||
|
mount information for debugging.
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Tue, 29 Aug 2023 10:39:23 -0700
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.26) mantic; urgency=medium
|
||||||
|
|
||||||
|
[ Łukasz 'sil2100' Zemczak ]
|
||||||
|
* Update the enhanced-sb layer model to not preinstall the printing snaps,
|
||||||
|
per changes to seeds. Live layer model not changed as it will go away
|
||||||
|
soon per our staged changes.
|
||||||
|
|
||||||
|
[ Michael Hudson-Doyle ]
|
||||||
|
* Use a traditional seed.yaml style seed for the canary installer's live
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Mon, 28 Aug 2023 12:13:38 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.25) mantic; urgency=medium
|
||||||
|
|
||||||
|
* snap-seed-parse.py: fix builds with no snaps.
|
||||||
|
|
||||||
|
-- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Mon, 28 Aug 2023 14:02:56 +1200
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.24) mantic; urgency=medium
|
||||||
|
|
||||||
|
* update-source-catalog: Fix case where a variaton does not point at the
|
||||||
|
base layer (i.e. most builds) (LP: #2033168)
|
||||||
|
* Configure universe sources in canary ISO. (LP: #2033109)
|
||||||
|
* snap-seed-parse.py: Update to allow parsing uc20-style seeds.
|
||||||
|
(LP: #2028984)
|
||||||
|
|
||||||
|
-- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Mon, 28 Aug 2023 12:48:53 +1200
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.23) mantic; urgency=medium
|
||||||
|
|
||||||
|
* i386 foreign-arch support was added for the canary image before 23.04
|
||||||
|
released, but by mistake it was only added to the squashfs for the live
|
||||||
|
session, and not the squashfs layer used as the source for installation.
|
||||||
|
split the chroot hooks to add this to the standard.squashfs.
|
||||||
|
LP: #2033170.
|
||||||
|
* Drop mke2fs.conf override, no longer needed.
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Sat, 26 Aug 2023 16:34:27 -0700
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.22) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Undo preseeding in reset_snapd_state.
|
||||||
|
* update-source-catalog: work better when we want a variation to point
|
||||||
|
at the base layer.
|
||||||
|
* Stop launching a gnome-terminal at startup of the canary live session.
|
||||||
|
(LP: #2032647)
|
||||||
|
|
||||||
|
-- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Fri, 25 Aug 2023 18:45:03 +1200
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.21) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Deduplicate the layers just before creating the squashfs, to enable
|
||||||
|
deduplication of the result of binary hooks as well.
|
||||||
|
|
||||||
|
[ Steve Langasek ]
|
||||||
|
* Deduplicate snaps between squashfs layers on classic:
|
||||||
|
- Consolidate canary layers to merge 'classic' back into 'standard'
|
||||||
|
- Reset /var/lib/snapd in the upper layers before calling snap
|
||||||
|
prepare-image
|
||||||
|
- No need to use rsync in hooks now to avoid file duplication since layer
|
||||||
|
handling as a whole now uses rsync.
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Wed, 23 Aug 2023 10:31:42 -0700
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.20) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Update canary model assertions to include all the regular seeded snaps,
|
||||||
|
using the right channels for all of them.
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Tue, 22 Aug 2023 17:14:38 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.19) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Add python3-systemd to CPC's minimized builds.
|
||||||
|
|
||||||
|
-- Utkarsh Gupta <utkarsh@ubuntu.com> Tue, 22 Aug 2023 14:54:57 +0530
|
||||||
|
|
||||||
|
livecd-rootfs (23.10.18) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Refresh the canary model assertions. The live model now includes all the
|
||||||
|
snaps of the standard installation (including firefox), as we want to offer
|
||||||
|
the same experience in the livefs as in the target installation. We also
|
||||||
|
track other, proper channels for the seeded snaps.
|
||||||
|
* Fix the 020-canary-* hooks referencing the wrong layer names after changes
|
||||||
|
introduced in 23.10.17.
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Fri, 18 Aug 2023 17:58:54 +0200
|
||||||
|
|
||||||
livecd-rootfs (23.10.17) mantic; urgency=medium
|
livecd-rootfs (23.10.17) mantic; urgency=medium
|
||||||
|
|
||||||
* Merge the minimal and standard layers on the Ubuntu Desktop images
|
* Merge the minimal and standard layers on the Ubuntu Desktop images
|
||||||
|
2
debian/tests/control
vendored
2
debian/tests/control
vendored
@ -1,6 +1,6 @@
|
|||||||
Tests: default-bootstraps
|
Tests: default-bootstraps
|
||||||
Depends: @, lsb-release
|
Depends: @, lsb-release
|
||||||
Restrictions: needs-root isolation-machine
|
Restrictions: needs-root isolation-machine allow-stderr
|
||||||
|
|
||||||
Tests: minimized
|
Tests: minimized
|
||||||
Depends: @, lsb-release
|
Depends: @, lsb-release
|
||||||
|
7
debian/tests/default-bootstraps
vendored
7
debian/tests/default-bootstraps
vendored
@ -43,11 +43,17 @@ ALL_TRIPLETS="
|
|||||||
xubuntu::
|
xubuntu::
|
||||||
xubuntu:minimal:"
|
xubuntu:minimal:"
|
||||||
|
|
||||||
|
ARCH=$(dpkg --print-architecture)
|
||||||
|
|
||||||
if [ -z "$SELECTED_TRIPLETS" ]; then
|
if [ -z "$SELECTED_TRIPLETS" ]; then
|
||||||
SELECTED_TRIPLETS="
|
SELECTED_TRIPLETS="
|
||||||
ubuntu-base::
|
ubuntu-base::
|
||||||
ubuntu-cpc::ubuntu-cpc
|
ubuntu-cpc::ubuntu-cpc
|
||||||
"
|
"
|
||||||
|
if [ "$ARCH" = amd64 ]; then
|
||||||
|
SELECTED_TRIPLETS="$SELECTED_TRIPLETS
|
||||||
|
ubuntu::"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
live_build_rootfs() {
|
live_build_rootfs() {
|
||||||
@ -55,7 +61,6 @@ live_build_rootfs() {
|
|||||||
local SUBPROJECT_TMP=${1%:*}
|
local SUBPROJECT_TMP=${1%:*}
|
||||||
SUBPROJECT=${SUBPROJECT_TMP#*:}
|
SUBPROJECT=${SUBPROJECT_TMP#*:}
|
||||||
TEMPLATE=${1##*:}
|
TEMPLATE=${1##*:}
|
||||||
ARCH=$(dpkg --print-architecture)
|
|
||||||
echo "Building rootfs for project: '$PROJECT' subproject: '$SUBPROJECT' template: '$TEMPLATE' in $PWD"
|
echo "Building rootfs for project: '$PROJECT' subproject: '$SUBPROJECT' template: '$TEMPLATE' in $PWD"
|
||||||
cp -a /usr/share/livecd-rootfs/live-build/auto .
|
cp -a /usr/share/livecd-rootfs/live-build/auto .
|
||||||
if [ -n "$TEMPLATE" ]; then
|
if [ -n "$TEMPLATE" ]; then
|
||||||
|
@ -252,18 +252,18 @@ if [ -f /etc/dpkg/dpkg.cfg.d/excludes ] || [ -f /etc/dpkg/dpkg.cfg.d/excludes.dp
|
|||||||
dpkg -S /usr/share/man/ |sed 's|, |\n|g;s|: [^:]*$||' | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
|
dpkg -S /usr/share/man/ |sed 's|, |\n|g;s|: [^:]*$||' | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
|
||||||
echo "Reinstalling packages with system documentation in /usr/share/doc/ .."
|
echo "Reinstalling packages with system documentation in /usr/share/doc/ .."
|
||||||
# This step processes the packages which still have missing documentation
|
# This step processes the packages which still have missing documentation
|
||||||
dpkg --verify --verify-format rpm | awk '/..5...... \/usr\/share\/doc/ {print $2}' | sed 's|/[^/]*$||' | sort |uniq \
|
dpkg --verify --verify-format rpm | awk '$2 ~ /\/usr\/share\/doc/ {print $2}' | sed 's|/[^/]*$||' | sort | uniq \
|
||||||
| xargs dpkg -S | sed 's|, |\n|g;s|: [^:]*$||' | uniq | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
|
| xargs dpkg -S | sed 's|, |\n|g;s|: [^:]*$||' | uniq | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
|
||||||
echo "Restoring system translations..."
|
echo "Restoring system translations..."
|
||||||
# This step processes the packages which still have missing translations
|
# This step processes the packages which still have missing translations
|
||||||
dpkg --verify --verify-format rpm | awk '/..5...... \/usr\/share\/locale/ {print $2}' | sed 's|/[^/]*$||' | sort |uniq \
|
dpkg --verify --verify-format rpm | awk '$2 ~ /\/usr\/share\/locale/ {print $2}' | sed 's|/[^/]*$||' | sort | uniq \
|
||||||
| xargs dpkg -S | sed 's|, |\n|g;s|: [^:]*$||' | uniq | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
|
| xargs dpkg -S | sed 's|, |\n|g;s|: [^:]*$||' | uniq | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
|
||||||
if dpkg --verify --verify-format rpm | awk '/..5...... \/usr\/share\/doc/ {exit 1}'; then
|
if dpkg --verify --verify-format rpm | awk '$2 ~ /\/usr\/share\/doc/ {exit 1}'; then
|
||||||
echo "Documentation has been restored successfully."
|
echo "Documentation has been restored successfully."
|
||||||
rm /etc/dpkg/dpkg.cfg.d/excludes.dpkg-tmp
|
rm /etc/dpkg/dpkg.cfg.d/excludes.dpkg-tmp
|
||||||
else
|
else
|
||||||
echo "There are still files missing from /usr/share/doc/:"
|
echo "There are still files missing from /usr/share/doc/:"
|
||||||
dpkg --verify --verify-format rpm | awk '/..5...... \/usr\/share\/doc/ {print " " $2}'
|
dpkg --verify --verify-format rpm | awk '$2 ~ /\/usr\/share\/doc/ {print " " $2}'
|
||||||
echo "You may want to try running this script again or you can remove"
|
echo "You may want to try running this script again or you can remove"
|
||||||
echo "/etc/dpkg/dpkg.cfg.d/excludes.dpkg-tmp and restore the files manually."
|
echo "/etc/dpkg/dpkg.cfg.d/excludes.dpkg-tmp and restore the files manually."
|
||||||
fi
|
fi
|
||||||
|
@ -722,27 +722,23 @@ case $PROJECT in
|
|||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
touch config/universe-enabled
|
||||||
PASSES_TO_LAYERS="true"
|
PASSES_TO_LAYERS="true"
|
||||||
# the standard layer, contains all base common packages for later layers (we're splitting out the snaps)
|
KERNEL_FLAVOURS='generic-hwe-22.04'
|
||||||
|
# the standard layer, contains all base common packages for later layers
|
||||||
add_task standard minimal standard ubuntu-desktop ubuntu-desktop-default-languages
|
add_task standard minimal standard ubuntu-desktop ubuntu-desktop-default-languages
|
||||||
add_package standard cloud-init
|
add_package standard cloud-init
|
||||||
# the classic layer, basically only contains snaps from the standard and minimal tasks
|
|
||||||
add_pass standard.classic
|
|
||||||
if [ -e "config/package-lists/livecd-rootfs.snaplist.chroot_standard.full" ]; then
|
|
||||||
cat config/package-lists/livecd-rootfs.snaplist.chroot_standard.full >>config/package-lists/livecd-rootfs.snaplist.chroot_standard.classic.full
|
|
||||||
rm config/package-lists/livecd-rootfs.snaplist.chroot_standard.full
|
|
||||||
fi
|
|
||||||
# the live layer, contains all packages for the live session installer
|
# the live layer, contains all packages for the live session installer
|
||||||
# TODO: we should probably add the kernel per KERNEL_FLAVOURS
|
add_task standard.live ubuntu-live
|
||||||
add_package standard.live linux-generic casper lvm2 mdadm cryptsetup dctrl-tools
|
|
||||||
remove_package standard.live ubiquity-frontend-gtk
|
remove_package standard.live ubiquity-frontend-gtk
|
||||||
|
add_snap standard.live ubuntu-desktop-installer/classic
|
||||||
# the enhanced-secureboot layer, contains all packages for the enhanced secureboot install
|
# the enhanced-secureboot layer, contains all packages for the enhanced secureboot install
|
||||||
add_package standard.enhanced-secureboot cryptsetup boot-managed-by-snapd
|
add_package standard.enhanced-secureboot cryptsetup boot-managed-by-snapd
|
||||||
|
|
||||||
# language support
|
# language support
|
||||||
seeded_langs="$(get_seeded_languages desktop)"
|
seeded_langs="$(get_seeded_languages desktop)"
|
||||||
echo "$seeded_langs" | tr ' ' ',' > config/seeded-languages
|
echo "$seeded_langs" | tr ' ' ',' > config/seeded-languages
|
||||||
derive_language_layers standard.classic desktop desktop-default-languages "$seeded_langs"
|
derive_language_layers standard desktop desktop-default-languages "$seeded_langs"
|
||||||
derive_language_layers standard.enhanced-secureboot desktop desktop-default-languages "$seeded_langs"
|
derive_language_layers standard.enhanced-secureboot desktop desktop-default-languages "$seeded_langs"
|
||||||
|
|
||||||
# now let's create the neccessary catalog files
|
# now let's create the neccessary catalog files
|
||||||
@ -755,12 +751,9 @@ case $PROJECT in
|
|||||||
variant: desktop
|
variant: desktop
|
||||||
locale_support: langpack
|
locale_support: langpack
|
||||||
default: yes
|
default: yes
|
||||||
EOF
|
|
||||||
cat <<-EOF > config/standard.classic.catalog-in.yaml
|
|
||||||
id: ubuntu-desktop
|
|
||||||
variations:
|
variations:
|
||||||
classic:
|
standard:
|
||||||
path: standard.classic.squashfs
|
path: standard.squashfs
|
||||||
EOF
|
EOF
|
||||||
cat <<-EOF > config/standard.enhanced-secureboot.catalog-in.yaml
|
cat <<-EOF > config/standard.enhanced-secureboot.catalog-in.yaml
|
||||||
id: ubuntu-desktop
|
id: ubuntu-desktop
|
||||||
@ -1076,8 +1069,15 @@ case $PROJECT in
|
|||||||
# or by passing --no-install-recommends to apt-get install.
|
# or by passing --no-install-recommends to apt-get install.
|
||||||
# Apt config is set using `APT_OPTIONS` variable in this script.
|
# Apt config is set using `APT_OPTIONS` variable in this script.
|
||||||
# This fixes LP: #2031640
|
# This fixes LP: #2031640
|
||||||
|
#
|
||||||
|
# We're also installing python3-systemd for now because it's needed by
|
||||||
|
# ubuntu-advantage-tools. This will eventually be dropped in the next
|
||||||
|
# release of u-a-t. This is being discussed and tracked at
|
||||||
|
# https://github.com/canonical/ubuntu-pro-client/issues/2692.
|
||||||
|
# Once python3-systemd is dropped from u-a-t, we can remove it
|
||||||
|
# from here, too.
|
||||||
APT_OPTIONS="${APT_OPTIONS:+$APT_OPTIONS }--no-install-recommends"
|
APT_OPTIONS="${APT_OPTIONS:+$APT_OPTIONS }--no-install-recommends"
|
||||||
add_package install ubuntu-cloud-minimal
|
add_package install ubuntu-cloud-minimal python3-systemd
|
||||||
else
|
else
|
||||||
add_task install minimal standard cloud-image
|
add_task install minimal standard cloud-image
|
||||||
add_package install ubuntu-minimal
|
add_package install ubuntu-minimal
|
||||||
@ -1272,7 +1272,7 @@ case "$ARCH${SUBARCH:++$SUBARCH}" in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
case $PROJECT:${SUBPROJECT:-} in
|
case $PROJECT:${SUBPROJECT:-} in
|
||||||
ubuntu-server:*|ubuntu-base:*|ubuntu-oci:*|ubuntu:)
|
ubuntu-server:*|ubuntu-base:*|ubuntu-oci:*)
|
||||||
OPTS="${OPTS:+$OPTS }--linux-packages=none --initramfs=none"
|
OPTS="${OPTS:+$OPTS }--linux-packages=none --initramfs=none"
|
||||||
KERNEL_FLAVOURS=none
|
KERNEL_FLAVOURS=none
|
||||||
BINARY_REMOVE_LINUX=false
|
BINARY_REMOVE_LINUX=false
|
||||||
|
@ -1230,3 +1230,15 @@ EOF
|
|||||||
undivert_grub "${mountpoint}"
|
undivert_grub "${mountpoint}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# find all files under /var/lib/snapd in the target directory that aren't
|
||||||
|
# shipped by the snapd package itself, and remove them
|
||||||
|
reset_snapd_state() {
|
||||||
|
rootdir="$1"
|
||||||
|
|
||||||
|
/usr/lib/snapd/snap-preseed --reset $(realpath "$rootdir") || true
|
||||||
|
rm -rf "$rootdir/var/lib/snapd"
|
||||||
|
setup_mountpoint "$rootdir"
|
||||||
|
chroot "$rootdir" apt-get install --reinstall -y snapd
|
||||||
|
teardown_mountpoint "$rootdir"
|
||||||
|
}
|
||||||
|
@ -142,7 +142,39 @@ build_layered_squashfs () {
|
|||||||
cp "${squashfs_f_manifest}.full" "${prefix}.manifest"
|
cp "${squashfs_f_manifest}.full" "${prefix}.manifest"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
create_squashfs "overlay.${pass}/" ${squashfs_f}
|
if [ -n "$lowerdirs" ]; then
|
||||||
|
# Although the current chroot was created as an overlay over
|
||||||
|
# the previous layer, many operations can result in redundant
|
||||||
|
# files in the upperdir. Rather than trying to minimize the
|
||||||
|
# overlay by hand, we rsync the chroot into a fresh overlay,
|
||||||
|
# rely on rsyncs ability to avoid redundant file operations,
|
||||||
|
# and take _that_ overlay's upperdir as the content of the
|
||||||
|
# layer.
|
||||||
|
mkdir -p chroot-2 "$overlay_dir-2"
|
||||||
|
mount_overlay "$lowerdirs" "$overlay_dir-2" chroot-2
|
||||||
|
# rsync takes many, many options. The subset
|
||||||
|
# we pass here is quite important:
|
||||||
|
# -a is standard to operate in the basic way required here.
|
||||||
|
# -X to preserve xattrs
|
||||||
|
# -H to preserve hardlinks
|
||||||
|
# -A to preserve ACLs
|
||||||
|
# -S to preserve sparseness
|
||||||
|
# --checksum to skip copies based on the content of the file
|
||||||
|
# (rather than the default which is to skip copies based
|
||||||
|
# on size + mtime)
|
||||||
|
# --no-times to not copy mtimes from source to dest (we
|
||||||
|
# don't care about mtime in the image and want to
|
||||||
|
# deduplicate files that have indentical contents but
|
||||||
|
# different mtimes)
|
||||||
|
# --del because we want to remove files that have been
|
||||||
|
# deleted in this layer.
|
||||||
|
rsync -aXHAS --checksum --no-times --del chroot/ chroot-2/
|
||||||
|
umount chroot-2
|
||||||
|
rmdir chroot-2
|
||||||
|
overlay_dir="$overlay_dir-2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
create_squashfs "${overlay_dir}" ${squashfs_f}
|
||||||
|
|
||||||
if [ -f config/$pass.catalog-in.yaml ]; then
|
if [ -f config/$pass.catalog-in.yaml ]; then
|
||||||
echo "Expanding catalog entry template for $pass"
|
echo "Expanding catalog entry template for $pass"
|
||||||
|
@ -131,8 +131,8 @@ create_chroot_pass () {
|
|||||||
mkdir -p "$overlay_dir/"
|
mkdir -p "$overlay_dir/"
|
||||||
lowerdirs=$(get_lowerdirs_for_pass $pass)
|
lowerdirs=$(get_lowerdirs_for_pass $pass)
|
||||||
if [ -n "$lowerdirs" ]; then
|
if [ -n "$lowerdirs" ]; then
|
||||||
mkdir -p chroot "${overlay_dir}-initial"
|
mkdir -p chroot/
|
||||||
mount_overlay "$lowerdirs" "${overlay_dir}-initial" chroot/
|
mount_overlay "$lowerdirs" "$overlay_dir" chroot/
|
||||||
else
|
else
|
||||||
ln -s "$overlay_dir/" chroot
|
ln -s "$overlay_dir/" chroot
|
||||||
fi
|
fi
|
||||||
@ -268,19 +268,14 @@ create_chroot_pass () {
|
|||||||
lb chroot_devpts remove ${*}
|
lb chroot_devpts remove ${*}
|
||||||
|
|
||||||
if [ -n "$lowerdirs" ]; then
|
if [ -n "$lowerdirs" ]; then
|
||||||
# Although the current chroot was created as an overlay over
|
res=0
|
||||||
# the previous layer, many operations can result in redundant
|
umount chroot || res=$?
|
||||||
# files in the upperdir. Rather than trying to minimize the
|
if [ $res -ne 0 ]; then
|
||||||
# overlay by hand, we rsync the chroot into a fresh overlay,
|
Echo_message "Unmount failed, current mounts: "
|
||||||
# rely on rsyncs ability to avoid redundant file operations,
|
cat /proc/$$/mounts
|
||||||
# and take _that_ overlay's upperdir as the content of the
|
exit $res
|
||||||
# layer.
|
fi
|
||||||
mkdir chroot-2
|
rmdir chroot
|
||||||
mount_overlay "$lowerdirs" "$overlay_dir" chroot-2/
|
|
||||||
rsync -aXHAS --del chroot/ chroot-2/
|
|
||||||
umount chroot chroot-2
|
|
||||||
rmdir chroot chroot-2
|
|
||||||
rm -rf ${overlay_dir}-initial
|
|
||||||
else
|
else
|
||||||
rm chroot
|
rm chroot
|
||||||
fi
|
fi
|
||||||
|
@ -10,6 +10,7 @@ The $chroot_dir argument is optional and will default to the empty string.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import glob
|
||||||
import os.path
|
import os.path
|
||||||
import re
|
import re
|
||||||
import yaml
|
import yaml
|
||||||
@ -32,23 +33,19 @@ CHROOT_ROOT = ARGS.chroot
|
|||||||
FNAME = ARGS.file
|
FNAME = ARGS.file
|
||||||
|
|
||||||
# Trim any trailing slashes for correct appending
|
# Trim any trailing slashes for correct appending
|
||||||
|
CHROOT_ROOT = CHROOT_ROOT.rstrip('/')
|
||||||
log("CHROOT_ROOT: {}".format(CHROOT_ROOT))
|
log("CHROOT_ROOT: {}".format(CHROOT_ROOT))
|
||||||
if len(CHROOT_ROOT) > 0 and CHROOT_ROOT[-1] == '/':
|
|
||||||
CHROOT_ROOT = CHROOT_ROOT[:-1]
|
|
||||||
|
|
||||||
# This is where we expect to find the seed.yaml file
|
|
||||||
YAML_PATH = CHROOT_ROOT + '/var/lib/snapd/seed/seed.yaml'
|
|
||||||
|
|
||||||
# Snaps are prepended with this string in the manifest
|
# Snaps are prepended with this string in the manifest
|
||||||
LINE_PREFIX = 'snap:'
|
LINE_PREFIX = 'snap:'
|
||||||
|
|
||||||
log("yaml path: {}".format(YAML_PATH))
|
# This is where we expect to find the seed.yaml file
|
||||||
if not os.path.isfile(YAML_PATH):
|
YAML_PATH = CHROOT_ROOT + '/var/lib/snapd/seed/seed.yaml'
|
||||||
log("WARNING: yaml path not found; no seeded snaps found.")
|
|
||||||
exit(0)
|
|
||||||
else:
|
|
||||||
log("yaml path found.")
|
|
||||||
|
|
||||||
|
log("yaml path: {}".format(YAML_PATH))
|
||||||
|
|
||||||
|
|
||||||
|
def make_manifest_from_seed_yaml(path):
|
||||||
with open(YAML_PATH, 'r') as fh:
|
with open(YAML_PATH, 'r') as fh:
|
||||||
yaml_lines = yaml.safe_load(fh)['snaps']
|
yaml_lines = yaml.safe_load(fh)['snaps']
|
||||||
|
|
||||||
@ -65,4 +62,100 @@ with open(FNAME, 'a+') as fh:
|
|||||||
item['channel'],
|
item['channel'],
|
||||||
revision,
|
revision,
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
|
def look_for_uc20_model(chroot):
|
||||||
|
systems_dir = f"{chroot}/var/lib/snapd/seed/systems"
|
||||||
|
if not os.path.isdir(systems_dir):
|
||||||
|
log("no systems directory found")
|
||||||
|
return None
|
||||||
|
modeenv = f"{chroot}/var/lib/snapd/modeenv"
|
||||||
|
system_name = None
|
||||||
|
if os.path.isfile(modeenv):
|
||||||
|
log(f"found modeenv file at {modeenv}")
|
||||||
|
with open(modeenv) as fh:
|
||||||
|
for line in fh:
|
||||||
|
if line.startswith("recovery_system="):
|
||||||
|
system_name = line.split('=', 1)[1].strip()
|
||||||
|
log(f"read system name {system_name!r} from modeenv")
|
||||||
|
break
|
||||||
|
if system_name is None:
|
||||||
|
system_names = os.listdir(systems_dir)
|
||||||
|
if len(system_names) == 0:
|
||||||
|
log("no systems found")
|
||||||
|
return None
|
||||||
|
elif len(system_names) > 1:
|
||||||
|
log("multiple systems found, refusing to guess which to parse")
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
system_name = system_names[0]
|
||||||
|
log(f"parsing only system found {system_name}")
|
||||||
|
system_dir = f"{chroot}/var/lib/snapd/seed/systems/{system_name}"
|
||||||
|
if not os.path.isdir(system_dir):
|
||||||
|
log(f"could not find system called {system_name}")
|
||||||
|
return None
|
||||||
|
return system_dir
|
||||||
|
|
||||||
|
|
||||||
|
def parse_assertion_file(asserts, filename):
|
||||||
|
# Parse the snapd assertions file 'filename' and store the
|
||||||
|
# assertions found in 'asserts'.
|
||||||
|
with open(filename) as fp:
|
||||||
|
text = fp.read()
|
||||||
|
|
||||||
|
k = ''
|
||||||
|
|
||||||
|
for block in text.split('\n\n'):
|
||||||
|
if block.startswith('type:'):
|
||||||
|
this_assert = {}
|
||||||
|
for line in block.split('\n'):
|
||||||
|
if line.startswith(' '):
|
||||||
|
this_assert[k.strip()] += '\n' + line
|
||||||
|
continue
|
||||||
|
k, v = line.split(':', 1)
|
||||||
|
this_assert[k.strip()] = v.strip()
|
||||||
|
asserts.setdefault(this_assert['type'], []).append(this_assert)
|
||||||
|
|
||||||
|
|
||||||
|
def make_manifest_from_system(system_dir):
|
||||||
|
files = [f"{system_dir}/model"] + glob.glob(f"{system_dir}/assertions/*")
|
||||||
|
|
||||||
|
asserts = {}
|
||||||
|
for filename in files:
|
||||||
|
parse_assertion_file(asserts, filename)
|
||||||
|
|
||||||
|
[model] = asserts['model']
|
||||||
|
snaps = yaml.safe_load(model['snaps'])
|
||||||
|
|
||||||
|
snap_names = []
|
||||||
|
for snap in snaps:
|
||||||
|
snap_names.append(snap['name'])
|
||||||
|
snap_names.sort()
|
||||||
|
|
||||||
|
snap_name_to_id = {}
|
||||||
|
snap_id_to_rev = {}
|
||||||
|
for decl in asserts['snap-declaration']:
|
||||||
|
snap_name_to_id[decl['snap-name']] = decl['snap-id']
|
||||||
|
for rev in asserts['snap-revision']:
|
||||||
|
snap_id_to_rev[rev['snap-id']] = rev['snap-revision']
|
||||||
|
|
||||||
|
log('Writing manifest to {}'.format(FNAME))
|
||||||
|
|
||||||
|
with open(FNAME, 'a+') as fh:
|
||||||
|
for snap_name in snap_names:
|
||||||
|
channel = snap['default-channel']
|
||||||
|
rev = snap_id_to_rev[snap_name_to_id[snap_name]]
|
||||||
|
fh.write(f"{LINE_PREFIX}{snap_name}\t{channel}\t{rev}\n")
|
||||||
|
|
||||||
|
|
||||||
|
if os.path.isfile(YAML_PATH):
|
||||||
|
log(f"seed.yaml found at {YAML_PATH}")
|
||||||
|
make_manifest_from_seed_yaml(YAML_PATH)
|
||||||
|
else:
|
||||||
|
system_dir = look_for_uc20_model(CHROOT_ROOT)
|
||||||
|
if system_dir is None:
|
||||||
|
log("WARNING: could not find seed.yaml or uc20-style seed")
|
||||||
|
exit(0)
|
||||||
|
make_manifest_from_system(system_dir)
|
||||||
|
|
||||||
log('Manifest output finished.')
|
log('Manifest output finished.')
|
||||||
|
18
live-build/ubuntu/hooks/020-foreign-arch.chroot_early
Executable file
18
live-build/ubuntu/hooks/020-foreign-arch.chroot_early
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
case ${PASS:-} in
|
||||||
|
standard)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$(dpkg --print-architecture)" = amd64 ]; then
|
||||||
|
echo "I: Enabling amd64 multiarch support on amd64"
|
||||||
|
dpkg --add-architecture i386
|
||||||
|
|
||||||
|
apt-get -y update
|
||||||
|
fi
|
@ -3,7 +3,7 @@
|
|||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
case ${PASS:-} in
|
case ${PASS:-} in
|
||||||
minimal.standard.enhanced-secureboot)
|
standard.enhanced-secureboot)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exit 0
|
exit 0
|
||||||
@ -16,11 +16,13 @@ if [ -n "${SUBPROJECT:-}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
. config/binary
|
. config/binary
|
||||||
|
. config/functions
|
||||||
|
|
||||||
# env SNAPPY_STORE_NO_CDN=1 snap known --remote model series=16 brand-id=canonical model=ubuntu-classic-2310-amd64 > config/classic-model.model
|
# env SNAPPY_STORE_NO_CDN=1 snap known --remote model series=16 brand-id=canonical model=ubuntu-classic-2310-amd64 > config/classic-model.model
|
||||||
cat <<EOF > config/classic-model.model
|
cat <<EOF > config/classic-model.model
|
||||||
type: model
|
type: model
|
||||||
authority-id: canonical
|
authority-id: canonical
|
||||||
|
revision: 4
|
||||||
series: 16
|
series: 16
|
||||||
brand-id: canonical
|
brand-id: canonical
|
||||||
model: ubuntu-classic-2310-amd64
|
model: ubuntu-classic-2310-amd64
|
||||||
@ -36,7 +38,7 @@ snaps:
|
|||||||
name: pc
|
name: pc
|
||||||
type: gadget
|
type: gadget
|
||||||
-
|
-
|
||||||
default-channel: 24-hwe/stable
|
default-channel: 23.10/stable
|
||||||
id: pYVQrBcKmBa0mZ4CCN7ExT6jH8rY1hza
|
id: pYVQrBcKmBa0mZ4CCN7ExT6jH8rY1hza
|
||||||
name: pc-kernel
|
name: pc-kernel
|
||||||
type: kernel
|
type: kernel
|
||||||
@ -50,67 +52,60 @@ snaps:
|
|||||||
id: PMrrV4ml8uWuEUDBT8dSGnKUYbevVhc4
|
id: PMrrV4ml8uWuEUDBT8dSGnKUYbevVhc4
|
||||||
name: snapd
|
name: snapd
|
||||||
type: snapd
|
type: snapd
|
||||||
-
|
|
||||||
default-channel: latest/stable
|
|
||||||
id: DLqre5XGLbDqg9jPtiAhRRjDuPVa5X1q
|
|
||||||
name: core20
|
|
||||||
type: base
|
|
||||||
-
|
-
|
||||||
default-channel: latest/stable
|
default-channel: latest/stable
|
||||||
id: EISPgh06mRh1vordZY9OZ34QHdd7OrdR
|
id: EISPgh06mRh1vordZY9OZ34QHdd7OrdR
|
||||||
name: bare
|
name: bare
|
||||||
type: base
|
type: base
|
||||||
-
|
-
|
||||||
default-channel: latest/stable
|
default-channel: latest/stable/ubuntu-23.10
|
||||||
id: 3wdHCAVyZEmYsCMFDE9qt92UV8rC8Wdk
|
id: 3wdHCAVyZEmYsCMFDE9qt92UV8rC8Wdk
|
||||||
name: firefox
|
name: firefox
|
||||||
type: app
|
type: app
|
||||||
-
|
-
|
||||||
default-channel: latest/stable
|
default-channel: latest/stable/ubuntu-23.10
|
||||||
id: rw36mkAjdIKl13dzfwyxP87cejpyIcct
|
|
||||||
name: gnome-3-38-2004
|
|
||||||
type: app
|
|
||||||
-
|
|
||||||
default-channel: latest/stable
|
|
||||||
id: lATO8HzwVvrAPrlZRAWpfyrJKlAJrZS3
|
id: lATO8HzwVvrAPrlZRAWpfyrJKlAJrZS3
|
||||||
name: gnome-42-2204
|
name: gnome-42-2204
|
||||||
type: app
|
type: app
|
||||||
-
|
-
|
||||||
default-channel: latest/stable
|
default-channel: latest/stable/ubuntu-23.10
|
||||||
id: jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
|
id: jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
|
||||||
name: gtk-common-themes
|
name: gtk-common-themes
|
||||||
type: app
|
type: app
|
||||||
-
|
-
|
||||||
default-channel: latest/stable
|
default-channel: latest/stable/ubuntu-23.10
|
||||||
id: gjf3IPXoRiipCu9K0kVu52f0H56fIksg
|
id: gjf3IPXoRiipCu9K0kVu52f0H56fIksg
|
||||||
name: snap-store
|
name: snap-store
|
||||||
type: app
|
type: app
|
||||||
-
|
-
|
||||||
default-channel: latest/stable
|
default-channel: latest/stable/ubuntu-23.10
|
||||||
id: IrwRHakqtzhFRHJOOPxKVPU0Kk7Erhcu
|
id: IrwRHakqtzhFRHJOOPxKVPU0Kk7Erhcu
|
||||||
name: snapd-desktop-integration
|
name: snapd-desktop-integration
|
||||||
type: app
|
type: app
|
||||||
timestamp: 2023-07-18T12:00:00.0Z
|
timestamp: 2023-08-24T12:00:00.0Z
|
||||||
sign-key-sha3-384: 9tydnLa6MTJ-jaQTFUXEwHl1yRx7ZS4K5cyFDhYDcPzhS7uyEkDxdUjg9g08BtNn
|
sign-key-sha3-384: 9tydnLa6MTJ-jaQTFUXEwHl1yRx7ZS4K5cyFDhYDcPzhS7uyEkDxdUjg9g08BtNn
|
||||||
|
|
||||||
AcLBXAQAAQoABgUCZLa6ewAKCRDgT5vottzAEu9jD/9dfuMX8kDWrEaaiv+3g6GB/xEuhHkVStOU
|
AcLBXAQAAQoABgUCZOjUagAKCRDgT5vottzAEgUCD/9ZjBDGZZv7cbIvPWUpqx42XeespLf6xJK6
|
||||||
5c+7M9wB19BQrIhKCbYnNNGLJrIJj1DDThwCK+/L43NiiuolEDaTAGbKPxw7BhCMitnX9i3fxkFm
|
iadXGNJD910+RkzMPrxAtoo8tmYYIrrbw2Q9lbNOcMfl2akxV+TJzYez2J6V/6wvaPraCFbIdKhr
|
||||||
WaAsc667Fi9QVTb7XFKrzUiU7cwmqCI0ZjAn1fx8zXutRPISKw8fQaL8Acv80lNSWL5dyyJ1gtvC
|
d+bI3e1QTxdlejfc3Nu4ImhKlFEsYrYJZIwAcm7btvmoidoQBXSoUxc7lDt5vdv4mN+bVvVOhew9
|
||||||
jMGVbD8R45pF+n8u5sNQaRweYayNv+TFAJDquGxP3Cuu0DYiO3SzsBpg8BV9siqByOshO+93DCaM
|
/FG7U+G5w4yZzkW5rH1lhBGIZX76D6+/3AVlC/R69mBUPDNDeGj48IUT8iV58cYYprchMbw4LIU6
|
||||||
8Vl3RFPGdY+M+kJsoI3GBHlZ3K+Hl1biVPpfm74T5DXQiLAxzs7iPgfqGC0QwRdzxHsNCETZrVAn
|
l92wqbhl3uQveoWUqirHbQYa8q7D85XnvlukaPb3LQL6rJzuAU1G1jmLPkMz5mqQsRBBuhC9skR4
|
||||||
PzRDiagJSQWgAB1/zUVDgHIOw52OmHrTavwK7/p983na/HhVfU0rV3vZ/Ve6XsTryoOZ6Z31ygc4
|
UWHK7TWsKSlWmCfZAVn9wZezPZ4M+dQv8QNb7JpCmVNZ4GL/uMOds213FTeNJhowVfqgT1sMv9LP
|
||||||
NiAtm8z7rRSsehR3JdykrtJziaE26lph9gl3QgdSYnfOGB+IOUt/Y6jf9hcAEIXqCMVKoiL2ynlp
|
H8mPIB1COn50+6XpZPUj49i2yiVN+BeuhRG9BDdstDie8gNOMvJgyvh0WmfgmIQcCuRgzheqj/co
|
||||||
G+nrcV25FfId+FDjezbfvPGe71fsjVZyL4ReQPCZRyCBujcASsn7sitZTuiZzYX8L9Uwl4baO6/a
|
0a8WuqYLsmyQCERP1fhuR/27d5+Dxg7DuiwocZwgXjtRkhUJrCnNWJnY//03sVXilFitEdlLVPt7
|
||||||
dRTqQ4onOgta0LnuGFoIg4ifs7OLcyZmuQUoVR8a8IwNvq9/acYZ/uoYBUwWpzkqF2i1Wc8t+zvx
|
WVhBSGHlrIaayLiOmCshvLqKZN5Cum9hXZ+wxWI/liG27eXOwaMDKPg/KeyxsHWNrXyuT5ZrTL7w
|
||||||
uqvrEaWLoj9oa4E+956QJLGfn+qwSNeURdfkjAoPnA==
|
eAEuriz8mNgmJtzImEkhymjuAuSTL284F1WpeW/cIg==
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
channel=""
|
channel=""
|
||||||
if [ -n "${CHANNEL:-}" ]; then
|
if [ -n "${CHANNEL:-}" ]; then
|
||||||
channel="--channel $CHANNEL"
|
channel="--channel $CHANNEL"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
reset_snapd_state chroot
|
||||||
|
|
||||||
env SNAPPY_STORE_NO_CDN=1 snap prepare-image \
|
env SNAPPY_STORE_NO_CDN=1 snap prepare-image \
|
||||||
--classic config/classic-model.model $channel chroot
|
--classic config/classic-model.model $channel chroot
|
||||||
mv chroot/system-seed/systems/* chroot/system-seed/systems/enhanced-secureboot-desktop
|
mv chroot/system-seed/systems/* chroot/system-seed/systems/enhanced-secureboot-desktop
|
||||||
rsync -a chroot/system-seed/ chroot/var/lib/snapd/seed
|
rm -rf chroot/var/lib/snapd/seed
|
||||||
rm -rf chroot/system-seed/
|
mv chroot/system-seed chroot/var/lib/snapd/seed
|
||||||
|
@ -1,99 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
case ${PASS:-} in
|
|
||||||
minimal.standard.live)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ -n "${SUBPROJECT:-}" ]; then
|
|
||||||
echo "We don't run Ubuntu Desktop hooks for this project."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
. config/binary
|
|
||||||
|
|
||||||
# env SNAPPY_STORE_NO_CDN=1 snap known --remote model series=16 brand-id=canonical model=ubuntu-installer-classic-2310-amd64 > config/classic-model-installer.model
|
|
||||||
cat <<EOF > config/classic-model-installer.model
|
|
||||||
type: model
|
|
||||||
authority-id: canonical
|
|
||||||
series: 16
|
|
||||||
brand-id: canonical
|
|
||||||
model: ubuntu-installer-classic-2310-amd64
|
|
||||||
architecture: amd64
|
|
||||||
base: core22
|
|
||||||
classic: true
|
|
||||||
distribution: ubuntu
|
|
||||||
grade: signed
|
|
||||||
snaps:
|
|
||||||
-
|
|
||||||
default-channel: latest/stable
|
|
||||||
id: amcUKQILKXHHTlmSa7NMdnXSx02dNeeT
|
|
||||||
name: core22
|
|
||||||
type: base
|
|
||||||
-
|
|
||||||
default-channel: latest/stable
|
|
||||||
id: PMrrV4ml8uWuEUDBT8dSGnKUYbevVhc4
|
|
||||||
name: snapd
|
|
||||||
type: snapd
|
|
||||||
-
|
|
||||||
classic: true
|
|
||||||
default-channel: latest/stable/canary-23.10
|
|
||||||
id: rQm0TtMOYOtEslvEXgxQDhgy1JNn38Wz
|
|
||||||
name: ubuntu-desktop-installer
|
|
||||||
type: app
|
|
||||||
timestamp: 2023-07-18T12:00:00.0Z
|
|
||||||
sign-key-sha3-384: 9tydnLa6MTJ-jaQTFUXEwHl1yRx7ZS4K5cyFDhYDcPzhS7uyEkDxdUjg9g08BtNn
|
|
||||||
|
|
||||||
AcLBXAQAAQoABgUCZLa6iQAKCRDgT5vottzAEh+hEACxb8nNg/2yznOanHsCY69miFDHvxLf2AGB
|
|
||||||
qeE+XJ9pyN05/JkvrDhODL0DCknFuvgo5kl+FhrS+mPdviytc3Ppm3kHSnPuwfzuO4t8PM1mRMOZ
|
|
||||||
8djtgzbStKAzwKyYiK/pon4/Wtu1+6/tTp8Ji/pH12aRoFBub6mtQD81hC/xVxdcKz8KvzGsD5co
|
|
||||||
H1TLfhKACVQJHZp7ErShkB6Ka6nVQy1c8/4sDPadKb2mqraIVMJmmHlYAHMfGl6f1dElheAjWXmz
|
|
||||||
0Roz4fh4lvjM0GmYTlsmhEj10F0pdwY/C2jB+6VFBJEZax65mRjs6Jaqxa150a26sOVFcMkS0ifO
|
|
||||||
pkB+KHrnilJ0/PyXZCoQcL65wTBEnfI0X/nzhvuE+9dXz5EUlusWeMvEhJ4QNOacCPARSd76M7QB
|
|
||||||
gUhMrz4Vf68V6tlfbXxgoEJFoVJo4i7gymMPnZDg0uAGQFYK+SSVEO/VtLDQvwRBU80IdA0kaIsn
|
|
||||||
afaqwYP8ACNPWpTztVYd/X6mvpdDz8MsW9pAEmJ4EN6JWcEu4ii5qXlzLK3s3HaCS5XNj+TpPEU+
|
|
||||||
9Nh9ePmCfE+KxR0cgfTbxP3KerYSd/xQHxgMLcMAGq20+1i/FmksKD6cSNYJRoqwTPwP+D9p42wF
|
|
||||||
3qGR3KEYbIij4hk/fZMCNzUEWt41OLLUVKm81oOixg==
|
|
||||||
EOF
|
|
||||||
|
|
||||||
channel=""
|
|
||||||
if [ -n "${CHANNEL:-}" ]; then
|
|
||||||
channel="--channel $CHANNEL"
|
|
||||||
fi
|
|
||||||
env SNAPPY_STORE_NO_CDN=1 snap prepare-image \
|
|
||||||
--classic config/classic-model-installer.model $channel chroot
|
|
||||||
mv chroot/system-seed/systems/* chroot/system-seed/systems/classic-installer
|
|
||||||
rsync -a chroot/system-seed/ chroot/var/lib/snapd/seed
|
|
||||||
rm -rf chroot/system-seed/
|
|
||||||
|
|
||||||
cat <<EOF > chroot/var/lib/snapd/modeenv
|
|
||||||
mode=run
|
|
||||||
recovery_system=classic-installer
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Temporary while we still use the subiquity TUI for the live system
|
|
||||||
cat > chroot/usr/lib/systemd/user/subiquity-tui.service << EOF
|
|
||||||
[Unit]
|
|
||||||
Description=subiquity tui
|
|
||||||
PartOf=graphical-session.target
|
|
||||||
After=graphical-session.target
|
|
||||||
|
|
||||||
# Never run in GDM
|
|
||||||
Conflicts=gnome-session@gnome-login.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/bin/gnome-terminal --wait -- sudo sh -c 'echo waiting for snapd; snap wait system seed.loaded; sleep 5; snap run subiquity'
|
|
||||||
Restart=no
|
|
||||||
EOF
|
|
||||||
mkdir chroot/etc/systemd/user/graphical-session.target.wants/
|
|
||||||
ln -vs /usr/lib/systemd/user/subiquity-tui.service chroot/etc/systemd/user/graphical-session.target.wants/
|
|
||||||
|
|
||||||
mv chroot/boot/initrd.img-* ${PWD}/livecd.${PROJECT}.initrd-generic
|
|
||||||
mv chroot/boot/vmlinu?-* ${PWD}/livecd.${PROJECT}.kernel-generic
|
|
||||||
chmod a+r ${PWD}/livecd.${PROJECT}.initrd-generic ${PWD}/livecd.${PROJECT}.kernel-generic
|
|
@ -3,18 +3,13 @@
|
|||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
case ${PASS:-} in
|
case ${PASS:-} in
|
||||||
minimal.standard.live)
|
standard.live)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# As described in LP: #2025339, an initrd built from a jammy userspace
|
|
||||||
# (which is what we use for Ubuntu Desktop builds currently) cannot fsck a
|
|
||||||
# mantic root filesystem created with the default options.
|
|
||||||
sed -i -e 's/,orphan_file//' /etc/mke2fs.conf
|
|
||||||
|
|
||||||
cat <<EOF > /etc/initramfs-tools/conf.d/casperize.conf
|
cat <<EOF > /etc/initramfs-tools/conf.d/casperize.conf
|
||||||
export CASPER_GENERATE_UUID=1
|
export CASPER_GENERATE_UUID=1
|
||||||
EOF
|
EOF
|
||||||
@ -22,10 +17,3 @@ EOF
|
|||||||
cat <<EOF > /etc/initramfs-tools/conf.d/default-layer.conf
|
cat <<EOF > /etc/initramfs-tools/conf.d/default-layer.conf
|
||||||
LAYERFS_PATH=${PASS}.squashfs
|
LAYERFS_PATH=${PASS}.squashfs
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ "$(dpkg --print-architecture)" = amd64 ]; then
|
|
||||||
echo "I: Enabling amd64 multiarch support on amd64"
|
|
||||||
dpkg --add-architecture i386
|
|
||||||
|
|
||||||
apt-get -y update
|
|
||||||
fi
|
|
||||||
|
@ -37,12 +37,18 @@ for entry in output:
|
|||||||
if 'variations' not in template:
|
if 'variations' not in template:
|
||||||
print("Non unique id in source catalog but no variations!")
|
print("Non unique id in source catalog but no variations!")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
for k, variation in template['variations'].items():
|
for variation in template['variations'].values():
|
||||||
variation['size'] = int(opts.size)
|
variation['size'] = int(opts.size)
|
||||||
entry.setdefault('variations', {}).update(template['variations'])
|
entry.setdefault('variations', {}).update(template['variations'])
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
# No entry with this id found, so add a new one.
|
# No entry with this id found, so add a new one.
|
||||||
|
|
||||||
|
if 'variations' in template:
|
||||||
|
for variation in template['variations'].values():
|
||||||
|
if variation['path'] == opts.squashfs:
|
||||||
|
variation['size'] = int(opts.size)
|
||||||
|
|
||||||
template['size'] = int(opts.size)
|
template['size'] = int(opts.size)
|
||||||
template['path'] = opts.squashfs
|
template['path'] = opts.squashfs
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user