mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-08-14 18:24:15 +00:00
Imported 23.10.21
No reason for CPC update specified.
This commit is contained in:
parent
15530a6cef
commit
81727dfb6e
15
debian/changelog
vendored
15
debian/changelog
vendored
@ -1,3 +1,18 @@
|
|||||||
|
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
|
livecd-rootfs (23.10.20) mantic; urgency=medium
|
||||||
|
|
||||||
* Update canary model assertions to include all the regular seeded snaps,
|
* Update canary model assertions to include all the regular seeded snaps,
|
||||||
|
@ -723,15 +723,9 @@ case $PROJECT in
|
|||||||
;;
|
;;
|
||||||
canary)
|
canary)
|
||||||
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)
|
# 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
|
# TODO: we should probably add the kernel per KERNEL_FLAVOURS
|
||||||
add_package standard.live linux-generic casper lvm2 mdadm cryptsetup dctrl-tools
|
add_package standard.live linux-generic casper lvm2 mdadm cryptsetup dctrl-tools
|
||||||
@ -742,7 +736,7 @@ case $PROJECT in
|
|||||||
# 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 +749,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
|
||||||
|
@ -1230,3 +1230,14 @@ 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"
|
||||||
|
|
||||||
|
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,8 @@ 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
|
umount chroot
|
||||||
# the previous layer, many operations can result in redundant
|
rmdir chroot
|
||||||
# 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 chroot-2
|
|
||||||
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
|
||||||
|
@ -20,6 +20,7 @@ case ${SUBPROJECT:-} in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
. 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
|
||||||
@ -134,8 +135,11 @@ 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
|
||||||
|
@ -20,6 +20,7 @@ case ${SUBPROJECT:-} in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
. config/binary
|
. config/binary
|
||||||
|
. config/functions
|
||||||
|
|
||||||
# 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
|
# 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
|
cat <<EOF > config/classic-model-installer.model
|
||||||
@ -130,11 +131,14 @@ 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-installer.model $channel chroot
|
--classic config/classic-model-installer.model $channel chroot
|
||||||
mv chroot/system-seed/systems/* chroot/system-seed/systems/classic-installer
|
mv chroot/system-seed/systems/* chroot/system-seed/systems/classic-installer
|
||||||
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
|
||||||
|
|
||||||
cat <<EOF > chroot/var/lib/snapd/modeenv
|
cat <<EOF > chroot/var/lib/snapd/modeenv
|
||||||
mode=run
|
mode=run
|
||||||
|
Loading…
x
Reference in New Issue
Block a user