mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-08-14 18:24:15 +00:00
Imported 2.890
No reason for CPC update specified.
This commit is contained in:
parent
784152bee9
commit
1287214409
122
debian/changelog
vendored
122
debian/changelog
vendored
@ -1,3 +1,125 @@
|
|||||||
|
livecd-rootfs (2.890) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Allow choosing installer channels with the CHANNEL variable for
|
||||||
|
subiquity-based installer ISOs.
|
||||||
|
|
||||||
|
-- Dan Bungert <daniel.bungert@canonical.com> Fri, 16 Jun 2023 09:12:08 -0600
|
||||||
|
|
||||||
|
livecd-rootfs (2.849) mantic; urgency=medium
|
||||||
|
|
||||||
|
[ Gauthier Jolly ]
|
||||||
|
* ubuntu-cpc: mount ESP on /boot and bind mount /boot on /boot/efi
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Thu, 15 Jun 2023 12:18:47 -0700
|
||||||
|
|
||||||
|
livecd-rootfs (2.848) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Migrate default Ubuntu Budgie image builds to their new
|
||||||
|
ubuntu-budgie-installer, mirroring what has been done for Ubuntu. At the
|
||||||
|
same time, we add support for building legacy ubiquity-based images as
|
||||||
|
well.
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Wed, 07 Jun 2023 13:33:26 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (2.847) mantic; urgency=medium
|
||||||
|
|
||||||
|
* canary images: add boot-managed-by-snapd preinstalled by default on the
|
||||||
|
enhanced-secureboot layer. This will make sure that all canary installs
|
||||||
|
will not allow installing non-snap kernels and bootloader packages (as
|
||||||
|
this could break their systems).
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Mon, 05 Jun 2023 16:57:58 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (2.846) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Make the newly added mtools dependency arch-specific as it's not
|
||||||
|
installable on i386, causing migration issues.
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Thu, 01 Jun 2023 11:40:52 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (2.845) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Add the mtools dependency for ubuntu-image.
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Wed, 31 May 2023 17:08:44 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (2.844) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Switch to use ubuntu-image 3.0 for our raspberry pi mantic images.
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Wed, 31 May 2023 15:15:09 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (2.843) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Unconditionally enable i386 in the chroot for Ubuntu Desktop; the new
|
||||||
|
installer doesn't handle enabling this at install time, and late
|
||||||
|
enablement also misses us some recommends.
|
||||||
|
* Restore losetup code, the necessary launchpad-buildd changes were being
|
||||||
|
deployed just as this revert landed.
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Fri, 26 May 2023 13:51:18 -0700
|
||||||
|
|
||||||
|
livecd-rootfs (2.842) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Revert once again the kpartx->losetup changes as those are causing
|
||||||
|
constant build failures for RISC-V images. This clearly needs some more
|
||||||
|
investigation before proceeding. This means that we're back to using
|
||||||
|
kpartx for loop device setup.
|
||||||
|
|
||||||
|
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Wed, 24 May 2023 11:07:21 +0200
|
||||||
|
|
||||||
|
livecd-rootfs (2.841) mantic; urgency=medium
|
||||||
|
|
||||||
|
* The base seed for edubuntu is desktop-gnome, not desktop. LP: #2019060.
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Wed, 17 May 2023 23:50:57 -0700
|
||||||
|
|
||||||
|
livecd-rootfs (2.840) mantic; urgency=medium
|
||||||
|
|
||||||
|
* auto/config: switch ubuntucinnamon and ubuntu-unity builds to use add_task
|
||||||
|
to get their desktop packages. Previously most (all?) flavour builds got
|
||||||
|
the snaps from that flavour's "desktop" seed implicitly added, but now an
|
||||||
|
explicit add_task is needed.
|
||||||
|
* auto/config: alter check for unexpectedly seeded snaps in
|
||||||
|
ubuntu-cpc:minimized build. As the build no longer implicitly seeds the
|
||||||
|
snaps from the server seed, we can just assert no snaps are seeded. This
|
||||||
|
fixes an autopkgtest regression but also cleaner.
|
||||||
|
|
||||||
|
-- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Thu, 18 May 2023 11:33:59 +1200
|
||||||
|
|
||||||
|
livecd-rootfs (2.839) mantic; urgency=medium
|
||||||
|
|
||||||
|
* Drop use of --removable flag to grub-install from
|
||||||
|
live-build/buildd/hooks/02-disk-image-uefi.binary, to match the cloud
|
||||||
|
images (7c760864fdcb278ca37396f06f5e3f297428d63d). This fixes
|
||||||
|
bootloader updates in the buildd images, but also fixes compatibility
|
||||||
|
with using devtmpfs for losetup.
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Wed, 17 May 2023 09:27:56 -0700
|
||||||
|
|
||||||
|
livecd-rootfs (2.838) mantic; urgency=medium
|
||||||
|
|
||||||
|
* auto/config: Set FLAVOUR appropriately for flavours added since the
|
||||||
|
expand-task branch was created.
|
||||||
|
* live-build/expand-task: Fix expansion of tasks with non-flavour specific
|
||||||
|
name (e.g. "minimal") when building a non-Ubuntu flavour.
|
||||||
|
* auto/config: Do not include the ubuntu-desktop-minimal task in edubuntu.
|
||||||
|
Cross flavour task references do not work with the approach expand-task
|
||||||
|
takes, and the ubuntu-desktop-minimal package is part of the
|
||||||
|
edubuntu-desktop-gnome task already.
|
||||||
|
* live-build/expand-task: handle seeding of classic snaps correctly.
|
||||||
|
|
||||||
|
-- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Wed, 17 May 2023 15:53:50 +1200
|
||||||
|
|
||||||
|
livecd-rootfs (2.837) mantic; urgency=medium
|
||||||
|
|
||||||
|
* auto/config: Rewrite add_task to use a Python script that cribs the logic
|
||||||
|
from lp:ubuntu-archive-publishing's generate_extra_overrides.py. This
|
||||||
|
means we can avoid some dubious hacks around seeding snaps and no longer
|
||||||
|
depend on the Task headers in the archive. (LP: #2019265)
|
||||||
|
|
||||||
|
-- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Mon, 15 May 2023 09:36:29 +1200
|
||||||
|
|
||||||
livecd-rootfs (2.836) mantic; urgency=medium
|
livecd-rootfs (2.836) mantic; urgency=medium
|
||||||
|
|
||||||
* canary: include cryptsetup in the live layer
|
* canary: include cryptsetup in the live layer
|
||||||
|
5
debian/control
vendored
5
debian/control
vendored
@ -27,6 +27,8 @@ Depends: ${misc:Depends},
|
|||||||
lsb-release,
|
lsb-release,
|
||||||
lzma,
|
lzma,
|
||||||
make,
|
make,
|
||||||
|
mount,
|
||||||
|
mtools [!i386],
|
||||||
parted,
|
parted,
|
||||||
procps,
|
procps,
|
||||||
python3,
|
python3,
|
||||||
@ -38,8 +40,7 @@ Depends: ${misc:Depends},
|
|||||||
snapd (>= 2.39) [!i386],
|
snapd (>= 2.39) [!i386],
|
||||||
squashfs-tools (>= 1:3.3-1),
|
squashfs-tools (>= 1:3.3-1),
|
||||||
sudo,
|
sudo,
|
||||||
u-boot-tools [armhf arm64],
|
u-boot-tools [arm64 armhf],
|
||||||
ubuntu-image [!i386 !riscv64],
|
|
||||||
python3-vmdkstream [amd64 i386],
|
python3-vmdkstream [amd64 i386],
|
||||||
xorriso [!i386],
|
xorriso [!i386],
|
||||||
xz-utils,
|
xz-utils,
|
||||||
|
@ -89,9 +89,15 @@ PREFIX="livecd.$PROJECT${SUBARCH:+-$SUBARCH}"
|
|||||||
if [ "${IMAGEFORMAT:-}" = "ubuntu-image" ]; then
|
if [ "${IMAGEFORMAT:-}" = "ubuntu-image" ]; then
|
||||||
# Use ubuntu-image instead of live-build
|
# Use ubuntu-image instead of live-build
|
||||||
|
|
||||||
|
export SNAPPY_STORE_NO_CDN=1
|
||||||
|
snap install --classic ubuntu-image
|
||||||
|
|
||||||
|
# TODO: eventually, this should be handled by a single ubuntu-image
|
||||||
|
# call without having to do a conditional on ubuntu-core/classic.
|
||||||
|
# We could already do that, but then we'd still have to do the
|
||||||
|
# compressing for the core images.
|
||||||
if [ "$PROJECT" = "ubuntu-core" ]; then
|
if [ "$PROJECT" = "ubuntu-core" ]; then
|
||||||
env SNAPPY_STORE_NO_CDN=1 \
|
/snap/bin/ubuntu-image snap $UBUNTU_IMAGE_ARGS \
|
||||||
ubuntu-image snap $UBUNTU_IMAGE_ARGS \
|
|
||||||
-O output "$PREFIX".model-assertion
|
-O output "$PREFIX".model-assertion
|
||||||
# XXX: currently we only have one image generated, but really
|
# XXX: currently we only have one image generated, but really
|
||||||
# we should be supporting more than one for models that
|
# we should be supporting more than one for models that
|
||||||
@ -100,20 +106,23 @@ if [ "${IMAGEFORMAT:-}" = "ubuntu-image" ]; then
|
|||||||
xz -0 -T4 "$PREFIX".img
|
xz -0 -T4 "$PREFIX".img
|
||||||
mv output/seed.manifest "$PREFIX".manifest
|
mv output/seed.manifest "$PREFIX".manifest
|
||||||
else
|
else
|
||||||
# First we need to build the gadget tree
|
/snap/bin/ubuntu-image classic --verbose $UBUNTU_IMAGE_ARGS \
|
||||||
make -C "config/$PREFIX-gadget" \
|
-O output "$PREFIX".yaml
|
||||||
ARCH=$ARCH SERIES=$SUITE $GADGET_TARGET
|
# Since the output of the ubuntu-image call can vary based on what
|
||||||
ubuntu-image classic $UBUNTU_IMAGE_ARGS \
|
# kind of an image we build, the safest bet is to 'export' all the
|
||||||
-s $SUITE -p $PROJECT -a $ARCH --subarch $SUBARCH \
|
# artifacts from the output directory. The image definition file
|
||||||
-O output config/$PREFIX-gadget/install
|
# should be what defines what is expected, so that we don't have
|
||||||
# XXX: currently we only have one image generated, but really
|
# to tweak livecd-rootfs everytime a different type of artifact
|
||||||
# we should be supporting more than one for models that
|
# is needed.
|
||||||
# define those.
|
for artifact in output/*; do
|
||||||
mv output/*.img "$PREFIX".img
|
# We want to be dynamic, and want to support even
|
||||||
xz -0 -T4 "$PREFIX".img
|
# two-part extensions.
|
||||||
# Also link the output image to a filename that cdimage expects
|
filename=$(basename $artifact)
|
||||||
ln "$PREFIX".img.xz livecd.ubuntu-cpc.disk1.img.xz
|
noversion=$(echo $filename | sed 's/[0-9][0-9]\.[0-9][0-9]//')
|
||||||
mv output/filesystem.manifest "$PREFIX".manifest
|
extension=${noversion#*.}
|
||||||
|
mv $artifact "$PREFIX".$extension
|
||||||
|
done
|
||||||
|
[ -f $PREFIX.img ] && xz -0 -T4 "$PREFIX".img
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
@ -549,9 +558,14 @@ for OUTPUT in ext2 ext3 ext4 manifest manifest-remove size squashfs; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# we don't need a manifest-remove for a layered-aware installer
|
# we don't need a manifest-remove for a layered-aware installer
|
||||||
if [ "$PROJECT" = "ubuntu" ] && [ "$SUBPROJECT" != "legacy" ]; then
|
if [ "$SUBPROJECT" != "legacy" ]; then
|
||||||
|
# here we have a list of all new-installer flavors
|
||||||
|
case $PROJECT in
|
||||||
|
ubuntu|ubuntu-budgie)
|
||||||
rm -f livecd.${PROJECT}-manifest-remove
|
rm -f livecd.${PROJECT}-manifest-remove
|
||||||
rm -f config/manifest-minimal-remove
|
rm -f config/manifest-minimal-remove
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e config/manifest-minimal-remove ]; then
|
if [ -e config/manifest-minimal-remove ]; then
|
||||||
|
@ -36,6 +36,7 @@ mkdir -p config
|
|||||||
cp -af /usr/share/livecd-rootfs/live-build/functions config/functions
|
cp -af /usr/share/livecd-rootfs/live-build/functions config/functions
|
||||||
cp -af /usr/share/livecd-rootfs/live-build/lb_*_layered config/
|
cp -af /usr/share/livecd-rootfs/live-build/lb_*_layered config/
|
||||||
cp -af /usr/share/livecd-rootfs/live-build/snap-seed-parse.py config/snap-seed-parse
|
cp -af /usr/share/livecd-rootfs/live-build/snap-seed-parse.py config/snap-seed-parse
|
||||||
|
cp -af /usr/share/livecd-rootfs/live-build/expand-task config/expand-task
|
||||||
cp -af /usr/share/livecd-rootfs/live-build/squashfs-exclude-files config/
|
cp -af /usr/share/livecd-rootfs/live-build/squashfs-exclude-files config/
|
||||||
|
|
||||||
mkdir -p config/package-lists
|
mkdir -p config/package-lists
|
||||||
@ -106,55 +107,36 @@ add_task ()
|
|||||||
{
|
{
|
||||||
local pass="$1"
|
local pass="$1"
|
||||||
shift
|
shift
|
||||||
local task
|
local file pkg_file snap_file task
|
||||||
local snap_list_file
|
|
||||||
local snap_list_files
|
|
||||||
local curseed
|
|
||||||
|
|
||||||
_check_immutable_passes_to_layers
|
_check_immutable_passes_to_layers
|
||||||
_register_pass "$pass"
|
_register_pass "$pass"
|
||||||
|
|
||||||
# The removal of direct task installation support from live-build
|
if [ ! -e config/germinate-output/structure ]; then
|
||||||
# poses some problems. If the chroot has multiarch configured - for
|
echo "add_task too soon" >&2
|
||||||
# example, if we're building for amd64 - then dumpavail will show
|
exit 1
|
||||||
# foreign-architecture packages which will have their own Task
|
fi
|
||||||
# lines, but which we don't want to install. (Compare
|
|
||||||
# PackageContainerInterface::FromTask in apt, which restricts task
|
pkg_file="config/package-lists/livecd-rootfs.list.chroot_$pass"
|
||||||
# expansion to the native architecture.) We therefore restrict our
|
|
||||||
# search to stanzas with Architecture: $ARCH or all.
|
if [ $PASSES_TO_LAYERS = "true" ]; then
|
||||||
#
|
snap_file="config/package-lists/livecd-rootfs.snaplist.chroot_$pass.full"
|
||||||
# However, even this may not be accurate enough. At the moment I
|
else
|
||||||
# have no idea what happens if an Architecture: all package has
|
snap_file="config/seeded-snaps"
|
||||||
# different Task fields on different architectures. This is
|
fi
|
||||||
# probably a lurking timebomb that we need to fix. In the meantime,
|
|
||||||
# the Architecture restriction at least saves us from abject
|
|
||||||
# failure.
|
|
||||||
#
|
|
||||||
# We want as well to grab the snap list for each PASS. Resolve for all
|
|
||||||
# given task, and deduplicate them to generate snaps for the PASS.
|
|
||||||
|
|
||||||
for task; do
|
for task; do
|
||||||
# We need a ridiculous number of backslashes to protect
|
./config/expand-task config/germinate-output $FLAVOUR $task packages >> "$pkg_file"
|
||||||
# parentheses from eval.
|
./config/expand-task config/germinate-output $FLAVOUR $task snaps >> "$snap_file"
|
||||||
echo "!chroot chroot apt-cache dumpavail | grep-dctrl -nsPackage \\\\\\( -XFArchitecture $ARCH -o -XFArchitecture all \\\\\\) -a -wFTask $task" >> "config/package-lists/livecd-rootfs.list.chroot_$pass"
|
done
|
||||||
|
|
||||||
curseed=$(seed_from_task ${task})
|
for file in $pkg_file $snap_file; do
|
||||||
if [ -z "${curseed}" ]; then
|
if [ -s $file ]; then
|
||||||
echo "W: No seed matching task ${task}"
|
sort -u -o $file $file
|
||||||
continue
|
else
|
||||||
fi
|
rm -f $file
|
||||||
snap_list_file="config/package-lists/seed.${curseed}.snaplist.full"
|
|
||||||
snap_from_seed "${curseed}" $snap_list_file
|
|
||||||
if [ -e "$snap_list_file" ]; then
|
|
||||||
snap_list_files="${snap_list_files} $snap_list_file"
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
# The snap list is one line, and could be duplicated between seeds via inheritance.
|
|
||||||
# Uniquely sort them and store them back in one line.
|
|
||||||
if [ -n "${snap_list_files}" ]; then
|
|
||||||
cat ${snap_list_files}|xargs -n1|sort -u > "config/package-lists/livecd-rootfs.snaplist.chroot_${pass}.full"
|
|
||||||
rm ${snap_list_files}
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
add_package ()
|
add_package ()
|
||||||
@ -207,8 +189,13 @@ add_snap ()
|
|||||||
_check_immutable_passes_to_layers
|
_check_immutable_passes_to_layers
|
||||||
_register_pass "$pass"
|
_register_pass "$pass"
|
||||||
|
|
||||||
|
local channel=""
|
||||||
|
if [ -n "$CHANNEL" ] ; then
|
||||||
|
channel="=$CHANNEL"
|
||||||
|
fi
|
||||||
|
|
||||||
for pkg; do
|
for pkg; do
|
||||||
echo "$pkg" >> "config/package-lists/livecd-rootfs.snaplist.chroot_$pass.full"
|
echo "$pkg$channel" >> "config/package-lists/livecd-rootfs.snaplist.chroot_$pass.full"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -340,8 +327,9 @@ _get_live_passes ()
|
|||||||
if [ -z "${IMAGEFORMAT:-}" ]; then
|
if [ -z "${IMAGEFORMAT:-}" ]; then
|
||||||
case $PROJECT:${SUBPROJECT:-} in
|
case $PROJECT:${SUBPROJECT:-} in
|
||||||
ubuntu-cpc:*|ubuntu:desktop-preinstalled|ubuntu-wsl:*)
|
ubuntu-cpc:*|ubuntu:desktop-preinstalled|ubuntu-wsl:*)
|
||||||
case $SUBARCH in
|
case $ARCH+${SUBARCH:-} in
|
||||||
raspi|intel-iot)
|
*+raspi)
|
||||||
|
# All raspi images use ubuntu-image.
|
||||||
IMAGEFORMAT=ubuntu-image
|
IMAGEFORMAT=ubuntu-image
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@ -514,41 +502,20 @@ case $IMAGEFORMAT in
|
|||||||
else
|
else
|
||||||
# classic images
|
# classic images
|
||||||
|
|
||||||
# Certain models have different names but are built from the same source gadget tree
|
IMAGE_PROJECT=$PROJECT
|
||||||
case $MODEL in
|
[ "$IMAGE_PROJECT" = "ubuntu-cpc" ] && IMAGE_PROJECT="ubuntu-server"
|
||||||
pi-arm64|pi3-arm64)
|
DEFINITION="$IMAGE_PROJECT-$MODEL.yaml"
|
||||||
MODEL=pi
|
|
||||||
;;
|
|
||||||
intel-iot)
|
|
||||||
MODEL=pc
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
GADGET_TARGET="server"
|
git clone git://git.launchpad.net/ubuntu-images -b $SUITE image-definitions
|
||||||
if [ "$SUBPROJECT" = "desktop-preinstalled" ]; then
|
cp image-definitions/$DEFINITION "$PREFIX".yaml
|
||||||
GADGET_TARGET="desktop"
|
echo "Configured ubuntu-image for the following image-definition:"
|
||||||
fi
|
cat "$PREFIX".yaml
|
||||||
|
echo "----------------------------------------------------------"
|
||||||
UBUNTU_IMAGE_ARGS="$UBUNTU_IMAGE_ARGS${SUBPROJECT:+ --subproject \"$SUBPROJECT\"}"
|
|
||||||
UBUNTU_IMAGE_ARGS="$UBUNTU_IMAGE_ARGS${PROPOSED:+ --with-proposed}"
|
|
||||||
UBUNTU_IMAGE_ARGS="$UBUNTU_IMAGE_ARGS${EXTRA_PPAS:+ --extra-ppas \"$EXTRA_PPAS\"}"
|
|
||||||
|
|
||||||
# We need to look in two places for the gadget tree:
|
|
||||||
# - Launchpad hosted gadgets will be in the snap-gadget repo
|
|
||||||
# - Github hosted gadgets are mirrored into a github-mirror repo
|
|
||||||
BRANCH="classic"
|
|
||||||
git clone git://git.launchpad.net/~canonical-foundations/snap-$MODEL/+git/snap-$MODEL -b $BRANCH config/$PREFIX-gadget || git clone git://git.launchpad.net/~canonical-foundations/snap-$MODEL/+git/github-mirror -b $BRANCH config/$PREFIX-gadget || git clone git://git.launchpad.net/~canonical-foundations/snap-$MODEL/+git/github-mirror-$ARCH -b $BRANCH config/$PREFIX-gadget
|
|
||||||
|
|
||||||
echo "IMAGEFORMAT=$IMAGEFORMAT" >> config/common
|
|
||||||
echo "SUITE=$SUITE" >> config/common
|
|
||||||
echo "GADGET_TARGET=$GADGET_TARGET" >> config/common
|
|
||||||
echo "UBUNTU_IMAGE_ARGS=\"$UBUNTU_IMAGE_ARGS\"" >> config/common
|
|
||||||
|
|
||||||
echo "Configured ubuntu-image for the following gadget model: $MODEL"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Save the model name used for building, mostly for any model-specific hook execution
|
# Save the model name used for building, mostly for any model-specific hook execution
|
||||||
echo "MODEL=$MODEL" >> config/common
|
echo "MODEL=$MODEL" >> config/common
|
||||||
|
echo "IMAGEFORMAT=$IMAGEFORMAT" >> config/common
|
||||||
# Fake finished configuration for lb build
|
# Fake finished configuration for lb build
|
||||||
mkdir -p .build
|
mkdir -p .build
|
||||||
touch .build/config
|
touch .build/config
|
||||||
@ -567,7 +534,7 @@ case $IMAGEFORMAT in
|
|||||||
;;
|
;;
|
||||||
ubuntu-wsl)
|
ubuntu-wsl)
|
||||||
;;
|
;;
|
||||||
ubuntu)
|
ubuntu|ubuntu-budgie)
|
||||||
if [ "$SUBPROJECT" = "legacy" ]; then
|
if [ "$SUBPROJECT" = "legacy" ]; then
|
||||||
add_package live casper
|
add_package live casper
|
||||||
fi
|
fi
|
||||||
@ -638,35 +605,38 @@ fi
|
|||||||
|
|
||||||
mkdir -p config/germinate-output
|
mkdir -p config/germinate-output
|
||||||
case $PROJECT in
|
case $PROJECT in
|
||||||
|
edubuntu*)
|
||||||
|
FLAVOUR=edubuntu
|
||||||
|
;;
|
||||||
kubuntu*)
|
kubuntu*)
|
||||||
SEED=kubuntu.$SUITE
|
FLAVOUR=kubuntu
|
||||||
;;
|
;;
|
||||||
xubuntu*)
|
xubuntu*)
|
||||||
SEED=xubuntu.$SUITE
|
FLAVOUR=xubuntu
|
||||||
;;
|
;;
|
||||||
ubuntu-mate*)
|
ubuntu-mate*)
|
||||||
SEED=ubuntu-mate.$SUITE
|
FLAVOUR=ubuntu-mate
|
||||||
;;
|
;;
|
||||||
ubuntu-unity*)
|
ubuntu-unity*)
|
||||||
SEED=ubuntu-unity.$SUITE
|
FLAVOUR=ubuntu-unity
|
||||||
;;
|
;;
|
||||||
lubuntu*)
|
lubuntu*)
|
||||||
SEED=lubuntu.$SUITE
|
FLAVOUR=lubuntu
|
||||||
;;
|
;;
|
||||||
ubuntu-budgie*)
|
ubuntu-budgie*)
|
||||||
SEED=ubuntu-budgie.$SUITE
|
FLAVOUR=ubuntu-budgie
|
||||||
;;
|
;;
|
||||||
ubuntukylin*)
|
ubuntukylin*)
|
||||||
SEED=ubuntukylin.$SUITE
|
FLAVOUR=ubuntukylin
|
||||||
;;
|
;;
|
||||||
ubuntustudio*)
|
ubuntustudio*)
|
||||||
SEED=ubuntustudio.$SUITE
|
FLAVOUR=ubuntustudio
|
||||||
;;
|
;;
|
||||||
ubuntucinnamon*)
|
ubuntucinnamon*)
|
||||||
SEED=ubuntucinnamon.$SUITE
|
FLAVOUR=ubuntucinnamon
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
SEED=ubuntu.$SUITE
|
FLAVOUR=ubuntu
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -694,7 +664,7 @@ if ! [ -e config/germinate-output/structure ]; then
|
|||||||
GERMINATE_ARG="-c $(echo $COMPONENTS | sed -e's/ \+/,/g')"
|
GERMINATE_ARG="-c $(echo $COMPONENTS | sed -e's/ \+/,/g')"
|
||||||
fi
|
fi
|
||||||
(cd config/germinate-output && germinate --no-rdepends --no-installer \
|
(cd config/germinate-output && germinate --no-rdepends --no-installer \
|
||||||
-S $SEEDMIRROR -m $MIRROR -d $SUITE -s $SEED \
|
-S $SEEDMIRROR -m $MIRROR -d $SUITE -s $FLAVOUR.$SUITE \
|
||||||
$GERMINATE_ARG -a $ARCH)
|
$GERMINATE_ARG -a $ARCH)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -760,7 +730,7 @@ case $PROJECT in
|
|||||||
add_package minimal.standard.live linux-generic casper lvm2 mdadm cryptsetup
|
add_package minimal.standard.live linux-generic casper lvm2 mdadm cryptsetup
|
||||||
remove_package minimal.standard.live ubiquity-frontend-gtk
|
remove_package minimal.standard.live ubiquity-frontend-gtk
|
||||||
# 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 minimal.standard.enhanced-secureboot cryptsetup
|
add_package minimal.standard.enhanced-secureboot cryptsetup boot-managed-by-snapd
|
||||||
# now let's create the neccessary catalog files
|
# now let's create the neccessary catalog files
|
||||||
# TODO: make sure that we handle locale_support: langpack correctly
|
# TODO: make sure that we handle locale_support: langpack correctly
|
||||||
cat <<-EOF > config/minimal.catalog-in.yaml
|
cat <<-EOF > config/minimal.catalog-in.yaml
|
||||||
@ -857,13 +827,12 @@ case $PROJECT in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
edubuntu)
|
edubuntu)
|
||||||
add_task install minimal standard ubuntu-desktop-minimal edubuntu-desktop-gnome
|
add_task install minimal standard edubuntu-desktop-gnome
|
||||||
LIVE_TASK='edubuntu-live'
|
LIVE_TASK='edubuntu-live'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
ubuntucinnamon)
|
ubuntucinnamon)
|
||||||
add_task install minimal standard
|
add_task install minimal standard ubuntucinnamon-desktop
|
||||||
add_package install ubuntucinnamon-desktop
|
|
||||||
# XXX: Adding live packages manually temporarily until we have
|
# XXX: Adding live packages manually temporarily until we have
|
||||||
# the live task for ubuntucinnamon set up properly.
|
# the live task for ubuntucinnamon set up properly.
|
||||||
add_package live ubiquity-frontend-gtk
|
add_package live ubiquity-frontend-gtk
|
||||||
@ -915,18 +884,59 @@ case $PROJECT in
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
ubuntu-budgie)
|
ubuntu-budgie)
|
||||||
|
case ${SUBPROJECT:-} in
|
||||||
|
legacy)
|
||||||
add_task install minimal standard ubuntu-budgie-desktop
|
add_task install minimal standard ubuntu-budgie-desktop
|
||||||
LIVE_TASK='ubuntu-budgie-live'
|
LIVE_TASK='ubuntu-budgie-live'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# By default Ubuntu Budgie now ships the new installer.
|
||||||
|
PASSES_TO_LAYERS="true"
|
||||||
|
KERNEL_FLAVOURS='generic-hwe-22.04'
|
||||||
|
add_task minimal minimal standard ubuntu-budgie-desktop-minimal ubuntu-budgie-desktop-minimal-default-languages
|
||||||
|
add_task minimal.standard ubuntu-budgie-desktop ubuntu-budgie-desktop-default-languages
|
||||||
|
add_task minimal.standard.live ubuntu-budgie-live
|
||||||
|
add_package minimal cloud-init
|
||||||
|
remove_package minimal.standard.live ubiquity-frontend-gtk
|
||||||
|
add_snap minimal.standard.live ubuntu-budgie-installer/classic
|
||||||
|
|
||||||
|
seeded_langs="$(get_seeded_languages budgie-desktop-minimal budgie-desktop)"
|
||||||
|
echo "$seeded_langs" | tr ' ' ',' > config/seeded-languages
|
||||||
|
derive_language_layers minimal budgie-desktop-minimal budgie-desktop-minimal-default-languages "$seeded_langs"
|
||||||
|
derive_language_layers minimal.standard budgie-desktop budgie-desktop-default-languages "$seeded_langs"
|
||||||
|
cat <<-EOF > config/minimal.catalog-in.yaml
|
||||||
|
name: "Ubuntu Budgie Desktop (minimized)"
|
||||||
|
description: >-
|
||||||
|
A minimal but usable Ubuntu Budgie Desktop.
|
||||||
|
id: ubuntu-budgie-desktop-minimal
|
||||||
|
type: fsimage-layered
|
||||||
|
variant: desktop
|
||||||
|
locale_support: langpack
|
||||||
|
EOF
|
||||||
|
cat <<-EOF > config/minimal.standard.catalog-in.yaml
|
||||||
|
name: "Ubuntu Budgie Desktop"
|
||||||
|
description: >-
|
||||||
|
A full featured Ubuntu Budgie Desktop.
|
||||||
|
id: ubuntu-budgie-desktop
|
||||||
|
type: fsimage-layered
|
||||||
|
variant: desktop
|
||||||
|
locale_support: langpack
|
||||||
|
default: yes
|
||||||
|
EOF
|
||||||
|
/usr/share/livecd-rootfs/checkout-translations-branch \
|
||||||
|
https://git.launchpad.net/subiquity po config/catalog-translations
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
|
||||||
ubuntu-mate)
|
ubuntu-mate)
|
||||||
add_task install minimal standard ubuntu-mate-core ubuntu-mate-desktop
|
add_task install minimal standard ubuntu-mate-core ubuntu-mate-desktop
|
||||||
LIVE_TASK='ubuntu-mate-live'
|
LIVE_TASK='ubuntu-mate-live'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
ubuntu-unity)
|
ubuntu-unity)
|
||||||
add_task install minimal standard
|
add_task install minimal standard ubuntu-unity-desktop
|
||||||
add_package install ubuntu-unity-desktop
|
|
||||||
# XXX: Adding live packages manually temporarily until we have
|
# XXX: Adding live packages manually temporarily until we have
|
||||||
# the live task for ubuntu-unity set up properly.
|
# the live task for ubuntu-unity set up properly.
|
||||||
add_package live metacity ubiquity-frontend-gtk
|
add_package live metacity ubiquity-frontend-gtk
|
||||||
@ -957,8 +967,6 @@ case $PROJECT in
|
|||||||
add_task ubuntu-server-minimal server-minimal
|
add_task ubuntu-server-minimal server-minimal
|
||||||
add_package ubuntu-server-minimal lxd-installer
|
add_package ubuntu-server-minimal lxd-installer
|
||||||
add_task ubuntu-server-minimal.ubuntu-server minimal standard server
|
add_task ubuntu-server-minimal.ubuntu-server minimal standard server
|
||||||
# add_task really should do this itself but for now...
|
|
||||||
snap_from_seed server config/package-lists/livecd-rootfs.snaplist.chroot_ubuntu-server-minimal.ubuntu-server.full
|
|
||||||
add_package ubuntu-server-minimal.ubuntu-server cloud-init
|
add_package ubuntu-server-minimal.ubuntu-server cloud-init
|
||||||
|
|
||||||
add_package ubuntu-server-minimal.ubuntu-server.installer linux-firmware casper openssh-server
|
add_package ubuntu-server-minimal.ubuntu-server.installer linux-firmware casper openssh-server
|
||||||
@ -1181,33 +1189,23 @@ case $PROJECT:${SUBPROJECT:-} in
|
|||||||
xubuntu:minimal)
|
xubuntu:minimal)
|
||||||
;;
|
;;
|
||||||
edubuntu:*)
|
edubuntu:*)
|
||||||
BASE_SEED='desktop'
|
BASE_SEED='desktop-gnome'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
BASE_SEED='desktop'
|
BASE_SEED='desktop'
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ "$PASSES_TO_LAYERS" != "true" ] && [ -n "${BASE_SEED}" ]; then
|
|
||||||
snap_from_seed "${BASE_SEED}" config/seeded-snaps
|
|
||||||
fi
|
|
||||||
if [ "$PROJECT:${SUBPROJECT:-}" = ubuntu-cpc:minimized ]; then
|
if [ "$PROJECT:${SUBPROJECT:-}" = ubuntu-cpc:minimized ]; then
|
||||||
# We install a lxc script that installs the snap when invoked. We don't
|
# We install a lxc script that installs the snap when invoked and
|
||||||
# want any other snaps to come in without due consideration, so fail the
|
# don't want any other snaps.
|
||||||
# build if we see such a snap.
|
if [ -s config/seeded-snaps ]; then
|
||||||
for snap in `cat config/seeded-snaps`; do
|
echo "Unexpected seeded snaps for ubuntu-cpc:minimized build:"
|
||||||
case $snap in
|
cat config/seeded-snaps
|
||||||
lxd | lxd=*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unexpected seeded snap for ubuntu-cpc:minimized build: $snap"
|
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
fi
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# Truncate but don't delete to a) prevent any snaps from being seeded,
|
# Create an empty file to trigger initialization of assertions.
|
||||||
# while at the same time b) triggering initialization of assertions.
|
|
||||||
truncate --size 0 config/seeded-snaps
|
truncate --size 0 config/seeded-snaps
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -1346,6 +1344,7 @@ echo "LB_BINARY_HOOKS=\"$BINARY_HOOKS\"" >> config/binary
|
|||||||
echo "BUILDSTAMP=\"$NOW\"" >> config/binary
|
echo "BUILDSTAMP=\"$NOW\"" >> config/binary
|
||||||
echo "SUBPROJECT=\"${SUBPROJECT:-}\"" >> config/binary
|
echo "SUBPROJECT=\"${SUBPROJECT:-}\"" >> config/binary
|
||||||
echo "LB_DISTRIBUTION=\"$SUITE\"" >> config/binary
|
echo "LB_DISTRIBUTION=\"$SUITE\"" >> config/binary
|
||||||
|
echo "CHANNEL=\"${CHANNEL:-}\"" >> config/binary
|
||||||
|
|
||||||
if [ "${IMAGE_HAS_HARDCODED_PASSWORD:-}" = "1" ]; then
|
if [ "${IMAGE_HAS_HARDCODED_PASSWORD:-}" = "1" ]; then
|
||||||
echo IMAGE_HAS_HARDCODED_PASSWORD=1 >> config/binary
|
echo IMAGE_HAS_HARDCODED_PASSWORD=1 >> config/binary
|
||||||
|
@ -41,7 +41,7 @@ create_partitions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
create_and_mount_uefi_partition() {
|
create_and_mount_uefi_partition() {
|
||||||
uefi_dev="/dev/mapper${loop_device///dev/}p15"
|
uefi_dev="${loop_device}p15"
|
||||||
mountpoint="$1"
|
mountpoint="$1"
|
||||||
mkfs.vfat -F 32 -n UEFI "${uefi_dev}"
|
mkfs.vfat -F 32 -n UEFI "${uefi_dev}"
|
||||||
|
|
||||||
@ -102,19 +102,9 @@ install_grub() {
|
|||||||
--boot-directory=/boot \
|
--boot-directory=/boot \
|
||||||
--efi-directory=/boot/efi \
|
--efi-directory=/boot/efi \
|
||||||
--target=${efi_target} \
|
--target=${efi_target} \
|
||||||
--removable \
|
|
||||||
--uefi-secure-boot \
|
--uefi-secure-boot \
|
||||||
--no-nvram
|
--no-nvram
|
||||||
|
|
||||||
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${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
|
|
||||||
chroot mountpoint cp /boot/efi/EFI/BOOT/grub.cfg /boot/efi/boot/grub
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ARCH" = "amd64" ]; then
|
if [ "$ARCH" = "amd64" ]; then
|
||||||
# Install the BIOS/GPT bits. Since GPT boots from the ESP partition,
|
# Install the BIOS/GPT bits. Since GPT boots from the ESP partition,
|
||||||
# it means that we just run this simple command and we're done
|
# it means that we just run this simple command and we're done
|
||||||
|
86
live-build/expand-task
Executable file
86
live-build/expand-task
Executable file
@ -0,0 +1,86 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
p = argparse.ArgumentParser()
|
||||||
|
p.add_argument('output_dir')
|
||||||
|
p.add_argument('flavour')
|
||||||
|
p.add_argument('task')
|
||||||
|
p.add_argument('what', choices=['packages', 'snaps'])
|
||||||
|
args = p.parse_args()
|
||||||
|
|
||||||
|
if args.what == 'snaps':
|
||||||
|
ext = '.snaps'
|
||||||
|
else:
|
||||||
|
ext = ''
|
||||||
|
|
||||||
|
|
||||||
|
# begin copy/paste from ubuntu-archive-publishing's generate_extra_overrides.
|
||||||
|
def parseTaskHeaders(seedtext):
|
||||||
|
"""Parse a seed for Task headers.
|
||||||
|
|
||||||
|
seedtext is a file-like object. Return a dictionary of Task headers,
|
||||||
|
with keys canonicalised to lower-case.
|
||||||
|
"""
|
||||||
|
task_headers = {}
|
||||||
|
task_header_regex = re.compile(
|
||||||
|
r"task-(.*?):(.*)", flags=re.IGNORECASE)
|
||||||
|
for line in seedtext:
|
||||||
|
match = task_header_regex.match(line)
|
||||||
|
if match is not None:
|
||||||
|
key, value = match.groups()
|
||||||
|
task_headers[key.lower()] = value.strip()
|
||||||
|
return task_headers
|
||||||
|
|
||||||
|
def getTaskSeeds(task_headers, seedname):
|
||||||
|
"""Return the list of seeds used to generate a task from this seed.
|
||||||
|
|
||||||
|
The list of packages in this task comes from this seed plus any
|
||||||
|
other seeds listed in a Task-Seeds header.
|
||||||
|
"""
|
||||||
|
scan_seeds = set([seedname])
|
||||||
|
if "seeds" in task_headers:
|
||||||
|
scan_seeds.update(task_headers["seeds"].split())
|
||||||
|
return sorted(scan_seeds)
|
||||||
|
# end copy/paste from ubuntu-archive-publishing's generate_extra_overrides.
|
||||||
|
|
||||||
|
# This is not quite the same as the one in generate_extra_overrides,
|
||||||
|
# because for seeds that do not have flavour specific names, the Task
|
||||||
|
# override is only generated for the Ubuntu flavour rather than
|
||||||
|
# redundantly doing it for each flavour.
|
||||||
|
def getTaskName(task_headers, flavour, seedname):
|
||||||
|
"""Work out the name of the Task to be generated from this seed.
|
||||||
|
|
||||||
|
If there is a Task-Name header, it wins; otherwise, seeds with a
|
||||||
|
Task-Per-Derivative get put in an appropriate namespace. Other seeds
|
||||||
|
have a task name that matches the seed name.
|
||||||
|
"""
|
||||||
|
if "name" in task_headers:
|
||||||
|
return task_headers["name"]
|
||||||
|
elif "per-derivative" in task_headers:
|
||||||
|
return "%s-%s" % (flavour, seedname)
|
||||||
|
else:
|
||||||
|
return seedname
|
||||||
|
|
||||||
|
|
||||||
|
for seedtext in glob.glob(f'{args.output_dir}/*.seedtext'):
|
||||||
|
hs = parseTaskHeaders(open(seedtext))
|
||||||
|
if not hs:
|
||||||
|
continue
|
||||||
|
seedname = os.path.splitext(os.path.basename(seedtext))[0]
|
||||||
|
tn = getTaskName(hs, args.flavour, seedname)
|
||||||
|
if tn != args.task:
|
||||||
|
continue
|
||||||
|
for seed in getTaskSeeds(hs, seedname):
|
||||||
|
for line in open(f'{args.output_dir}/{seed}{ext}'):
|
||||||
|
if re.match('^[a-z0-9]', line):
|
||||||
|
name = line.split()[0]
|
||||||
|
if args.what == 'snaps' and '(classic)' in line:
|
||||||
|
name += '/classic'
|
||||||
|
print(name)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise Exception("did not find task %r" % (args.task,))
|
@ -12,16 +12,13 @@ loop_raw=
|
|||||||
backing_img=
|
backing_img=
|
||||||
|
|
||||||
clean_loops() {
|
clean_loops() {
|
||||||
local kpartx_ret
|
if [ -n "${loop_device}" ]; then
|
||||||
local kpartx_stdout
|
|
||||||
|
|
||||||
if [ -n "${backing_img}" ]; then
|
|
||||||
# If something just finished writing to the device or a
|
# If something just finished writing to the device or a
|
||||||
# partition (e.g. the zerofree in umount_partition) udev might
|
# partition (e.g. the zerofree in umount_partition) udev might
|
||||||
# still be processing the device.
|
# still be processing the device.
|
||||||
udevadm settle
|
udevadm settle
|
||||||
sync
|
sync
|
||||||
kpartx -v -d "${backing_img}"
|
losetup -v -d "${loop_device}"
|
||||||
unset backing_img
|
unset backing_img
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -65,10 +62,7 @@ mount_image() {
|
|||||||
trap clean_loops EXIT
|
trap clean_loops EXIT
|
||||||
backing_img="$1"
|
backing_img="$1"
|
||||||
local rootpart="$2"
|
local rootpart="$2"
|
||||||
kpartx_mapping="$(kpartx -s -v -a ${backing_img})"
|
loop_device=$(losetup --show -f -P -v ${backing_img})
|
||||||
# Find the loop device
|
|
||||||
loop_p1="$(echo -e ${kpartx_mapping} | head -n1 | awk '{print$3}')"
|
|
||||||
loop_device="/dev/${loop_p1%p[0-9]*}"
|
|
||||||
|
|
||||||
if [ ! -b ${loop_device} ]; then
|
if [ ! -b ${loop_device} ]; then
|
||||||
echo "unable to find loop device for ${backing_img}"
|
echo "unable to find loop device for ${backing_img}"
|
||||||
@ -76,7 +70,7 @@ mount_image() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Find the rootfs location
|
# Find the rootfs location
|
||||||
rootfs_dev_mapper="/dev/mapper/${loop_p1%%[0-9]}${rootpart}"
|
rootfs_dev_mapper="${loop_device}p${rootpart}"
|
||||||
if [ ! -b "${rootfs_dev_mapper}" ]; then
|
if [ ! -b "${rootfs_dev_mapper}" ]; then
|
||||||
echo "${rootfs_dev_mapper} is not a block device";
|
echo "${rootfs_dev_mapper} is not a block device";
|
||||||
exit 1
|
exit 1
|
||||||
@ -213,9 +207,10 @@ mount_disk_image() {
|
|||||||
mount_image ${disk_image} 1
|
mount_image ${disk_image} 1
|
||||||
mount_partition "${rootfs_dev_mapper}" $mountpoint
|
mount_partition "${rootfs_dev_mapper}" $mountpoint
|
||||||
|
|
||||||
local uefi_dev="/dev/mapper${loop_device///dev/}p15"
|
local uefi_dev="${loop_device}p15"
|
||||||
if [ -b ${uefi_dev} -a -e $mountpoint/boot/efi ]; then
|
if [ -b ${uefi_dev} -a -e $mountpoint/boot ]; then
|
||||||
mount "${uefi_dev}" $mountpoint/boot/efi
|
mount "${uefi_dev}" $mountpoint/boot
|
||||||
|
mount --bind $mountpoint/boot $mountpoint/boot/efi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# This is needed to allow for certain operations
|
# This is needed to allow for certain operations
|
||||||
@ -254,13 +249,18 @@ umount_partition() {
|
|||||||
umount_disk_image() {
|
umount_disk_image() {
|
||||||
mountpoint="$1"
|
mountpoint="$1"
|
||||||
|
|
||||||
local uefi_dev="/dev/mapper${loop_device///dev/}p15"
|
local uefi_dev="${loop_device}p15"
|
||||||
if [ -e "$mountpoint/boot/efi" -a -b "$uefi_dev" ]; then
|
if [ -e "$mountpoint/boot/efi" -a -b "$uefi_dev" ]; then
|
||||||
# zero fill free space in UEFI partition
|
# zero fill free space in UEFI partition
|
||||||
cat < /dev/zero > "$mountpoint/boot/efi/bloat_file" 2> /dev/null || true
|
cat < /dev/zero > "$mountpoint/boot/efi/bloat_file" 2> /dev/null || true
|
||||||
rm "$mountpoint/boot/efi/bloat_file"
|
rm "$mountpoint/boot/efi/bloat_file"
|
||||||
mount --make-private "$mountpoint/boot/efi"
|
|
||||||
umount --detach-loop "$mountpoint/boot/efi"
|
# unmount bind mount
|
||||||
|
umount "$mountpoint/boot/efi"
|
||||||
|
|
||||||
|
# unmount ESP
|
||||||
|
mount --make-private "$mountpoint/boot"
|
||||||
|
umount --detach-loop "$mountpoint/boot"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e $mountpoint/usr/sbin/policy-rc.d ]; then
|
if [ -e $mountpoint/usr/sbin/policy-rc.d ]; then
|
||||||
@ -770,56 +770,6 @@ snap_validate_seed() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
snap_from_seed() {
|
|
||||||
local base_seed=$1
|
|
||||||
local out=$2
|
|
||||||
local all_snaps
|
|
||||||
local seeds_expanded
|
|
||||||
|
|
||||||
seeds_expanded=$(inheritance ${base_seed})
|
|
||||||
for seed in ${seeds_expanded}; do
|
|
||||||
echo "snap: considering ${seed}"
|
|
||||||
file=config/germinate-output/${seed}.snaps
|
|
||||||
[ -e "${file}" ] || continue
|
|
||||||
# extract the first column (snap package name) from germinate's output
|
|
||||||
# translate the human-readable "foo (classic)" into a
|
|
||||||
# more machine readable "foo/classic"
|
|
||||||
seed_snaps=$(sed -rn '1,/-----/d;/-----/,$d; s/(.*) \|.*/\1/; s, \(classic\),/classic,; p' "${file}")
|
|
||||||
for snap in ${seed_snaps}; do
|
|
||||||
echo "snap: found ${snap}"
|
|
||||||
all_snaps="${all_snaps:+${all_snaps} }${snap}"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
if [ -n "${all_snaps}" ]; then
|
|
||||||
echo "${all_snaps}" > $out
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
seed_from_task ()
|
|
||||||
{
|
|
||||||
# Retrieve the name of the seed from a task name
|
|
||||||
local task=$1
|
|
||||||
local seed
|
|
||||||
local seedfile
|
|
||||||
local seedfiles
|
|
||||||
|
|
||||||
seedfile="$(grep -lE "^Task-Key: +${task}\$" config/germinate-output/*seedtext|head -1)"
|
|
||||||
if [ -n "$seedfile" ]; then
|
|
||||||
basename $seedfile .seedtext
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
seedfiles="$(grep -lE "^Task-Per-Derivative: *1\$" config/germinate-output/*seedtext)"
|
|
||||||
if [ -n "$seedfiles" ]; then
|
|
||||||
for seed in $(echo $seedfiles | xargs basename -s .seedtext); do
|
|
||||||
if [ ${PROJECT}-${seed} = $task ]; then
|
|
||||||
echo ${seed}
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
list_packages_from_seed () {
|
list_packages_from_seed () {
|
||||||
# Store all packages for a given seed, including its seed dependency
|
# Store all packages for a given seed, including its seed dependency
|
||||||
# $1: Name of the seed to expand to a package list
|
# $1: Name of the seed to expand to a package list
|
||||||
|
@ -49,7 +49,7 @@ GRUB_TIMEOUT=0
|
|||||||
# Set the default commandline
|
# Set the default commandline
|
||||||
GRUB_CMDLINE_LINUX_DEFAULT="console=hvc0 earlyprintk"
|
GRUB_CMDLINE_LINUX_DEFAULT="console=hvc0 earlyprintk"
|
||||||
EOF
|
EOF
|
||||||
prep_partition="/dev/mapper${loop_device///dev/}p2"
|
prep_partition="${loop_device}p2"
|
||||||
chroot mountpoint grub-install "${prep_partition}" \
|
chroot mountpoint grub-install "${prep_partition}" \
|
||||||
--no-nvram \
|
--no-nvram \
|
||||||
--boot-directory=/boot \
|
--boot-directory=/boot \
|
||||||
|
@ -25,13 +25,8 @@ case ${PROJECT:-}:${SUBPROJECT:-} in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ "$ARCH" = "amd64" ]; then
|
# 4G (4*1024**3)
|
||||||
IMAGE_SIZE=3758096384 # bump to 3.5G (3584*1024**2); Since Kinetic amd64 need more then the default 2.2G
|
IMAGE_SIZE=4294967296
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ARCH" = "armhf" ]; then
|
|
||||||
IMAGE_SIZE=3758096384 # bump to 3.5G (3584*1024**2); Since Jammy armhf need more then the default 2.2G
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Change image size for preinstalled generic images
|
# Change image size for preinstalled generic images
|
||||||
if [ -n "${SUBARCH:-}" ]; then
|
if [ -n "${SUBARCH:-}" ]; then
|
||||||
@ -55,7 +50,7 @@ create_partitions() {
|
|||||||
arm64|armhf)
|
arm64|armhf)
|
||||||
if [ "${SUBARCH:-}" = "generic" ]; then
|
if [ "${SUBARCH:-}" = "generic" ]; then
|
||||||
sgdisk "${disk_image}" \
|
sgdisk "${disk_image}" \
|
||||||
--new=15:0:204800 \
|
--new=15:0:+2G \
|
||||||
--typecode=15:ef00 \
|
--typecode=15:ef00 \
|
||||||
--attributes=15:set:2 \
|
--attributes=15:set:2 \
|
||||||
--new=14::+4M \
|
--new=14::+4M \
|
||||||
@ -63,7 +58,7 @@ create_partitions() {
|
|||||||
--new=1:
|
--new=1:
|
||||||
else
|
else
|
||||||
sgdisk "${disk_image}" \
|
sgdisk "${disk_image}" \
|
||||||
--new=15:0:204800 \
|
--new=15:0:+2G \
|
||||||
--typecode=15:ef00 \
|
--typecode=15:ef00 \
|
||||||
--new=1:
|
--new=1:
|
||||||
fi
|
fi
|
||||||
@ -77,7 +72,7 @@ create_partitions() {
|
|||||||
# cloud-image
|
# cloud-image
|
||||||
sgdisk "${disk_image}" \
|
sgdisk "${disk_image}" \
|
||||||
--set-alignment=2 \
|
--set-alignment=2 \
|
||||||
--new=15::+106M \
|
--new=15::+2G \
|
||||||
--typecode=15:ef00 \
|
--typecode=15:ef00 \
|
||||||
--new=1:: \
|
--new=1:: \
|
||||||
--attributes=1:set:2
|
--attributes=1:set:2
|
||||||
@ -97,7 +92,7 @@ create_partitions() {
|
|||||||
--change-name=14:loader2 \
|
--change-name=14:loader2 \
|
||||||
--typecode=14:F4FA3898-3478-4941-887D-FCEC4E9E3C05 \
|
--typecode=14:F4FA3898-3478-4941-887D-FCEC4E9E3C05 \
|
||||||
--attributes=14:set:0 \
|
--attributes=14:set:0 \
|
||||||
--new=15::+106M \
|
--new=15::+2G \
|
||||||
--typecode=15:ef00 \
|
--typecode=15:ef00 \
|
||||||
--change-name=15:ESP \
|
--change-name=15:ESP \
|
||||||
--new=12::+4M \
|
--new=12::+4M \
|
||||||
@ -112,7 +107,7 @@ create_partitions() {
|
|||||||
--change-name=13:loader \
|
--change-name=13:loader \
|
||||||
--typecode=13:ef02 \
|
--typecode=13:ef02 \
|
||||||
--attributes=13:set:0 \
|
--attributes=13:set:0 \
|
||||||
--new=15::+106M \
|
--new=15::+2G \
|
||||||
--typecode=15:ef00 \
|
--typecode=15:ef00 \
|
||||||
--change-name=15:ESP \
|
--change-name=15:ESP \
|
||||||
--new=12::+4M \
|
--new=12::+4M \
|
||||||
@ -123,7 +118,7 @@ create_partitions() {
|
|||||||
# VisionFive
|
# VisionFive
|
||||||
sgdisk "${disk_image}" \
|
sgdisk "${disk_image}" \
|
||||||
--set-alignment=2 \
|
--set-alignment=2 \
|
||||||
--new=15::+106M \
|
--new=15::+2G \
|
||||||
--typecode=15:ef00 \
|
--typecode=15:ef00 \
|
||||||
--change-name=15:ESP \
|
--change-name=15:ESP \
|
||||||
--new=12::+4M \
|
--new=12::+4M \
|
||||||
@ -162,7 +157,7 @@ create_partitions() {
|
|||||||
--change-name=14:loader2 \
|
--change-name=14:loader2 \
|
||||||
--typecode=14:2E54B353-1271-4842-806F-E436D6AF6985 \
|
--typecode=14:2E54B353-1271-4842-806F-E436D6AF6985 \
|
||||||
--attributes=14:set:0 \
|
--attributes=14:set:0 \
|
||||||
--new=15::+106M \
|
--new=15::+2G \
|
||||||
--typecode=15:ef00 \
|
--typecode=15:ef00 \
|
||||||
--new=12::+4M \
|
--new=12::+4M \
|
||||||
--change-name=12:CIDATA \
|
--change-name=12:CIDATA \
|
||||||
@ -176,7 +171,7 @@ create_partitions() {
|
|||||||
--new=14::+4M \
|
--new=14::+4M \
|
||||||
--typecode=14:ef02 \
|
--typecode=14:ef02 \
|
||||||
--attributes=14:set:2 \
|
--attributes=14:set:2 \
|
||||||
--new=15::+106M \
|
--new=15::+2G \
|
||||||
--typecode=15:ef00 \
|
--typecode=15:ef00 \
|
||||||
--new=13::+4M \
|
--new=13::+4M \
|
||||||
--change-name=13:CIDATA \
|
--change-name=13:CIDATA \
|
||||||
@ -184,7 +179,7 @@ create_partitions() {
|
|||||||
else
|
else
|
||||||
sgdisk "${disk_image}" \
|
sgdisk "${disk_image}" \
|
||||||
--new=14::+4M \
|
--new=14::+4M \
|
||||||
--new=15::+106M \
|
--new=15::+2G \
|
||||||
--new=1::
|
--new=1::
|
||||||
sgdisk "${disk_image}" \
|
sgdisk "${disk_image}" \
|
||||||
-t 14:ef02 \
|
-t 14:ef02 \
|
||||||
@ -197,15 +192,23 @@ create_partitions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
create_and_mount_uefi_partition() {
|
create_and_mount_uefi_partition() {
|
||||||
uefi_dev="/dev/mapper${loop_device///dev/}p15"
|
uefi_dev="${loop_device}p15"
|
||||||
mountpoint="$1"
|
mountpoint="$1"
|
||||||
mkfs.vfat -F 32 -n UEFI "${uefi_dev}"
|
mkfs.vfat -F 32 -n UEFI "${uefi_dev}"
|
||||||
|
|
||||||
mkdir -p "${mountpoint}"/boot/efi
|
mkdir -p "${mountpoint}"/boot/
|
||||||
mount "${uefi_dev}" "$mountpoint"/boot/efi
|
mount "${uefi_dev}" "$mountpoint"/boot/
|
||||||
|
|
||||||
cat << EOF >> "mountpoint/etc/fstab"
|
mkdir "$mountpoint/boot/efi"
|
||||||
LABEL=UEFI /boot/efi vfat umask=0077 0 1
|
mount --bind "$mountpoint/boot" "$mountpoint/boot/efi"
|
||||||
|
}
|
||||||
|
|
||||||
|
configure_chroot() {
|
||||||
|
mountpoint="$1"
|
||||||
|
|
||||||
|
cat << EOF >> "$mountpoint"/etc/fstab
|
||||||
|
LABEL=UEFI /boot vfat umask=0077 0 1
|
||||||
|
/boot /boot/efi vfat umask=0077,bind 0 0
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,7 +216,8 @@ install_grub() {
|
|||||||
mkdir mountpoint
|
mkdir mountpoint
|
||||||
mount_partition "${rootfs_dev_mapper}" mountpoint
|
mount_partition "${rootfs_dev_mapper}" mountpoint
|
||||||
|
|
||||||
create_and_mount_uefi_partition mountpoint
|
mount "${uefi_dev}" mountpoint/boot/
|
||||||
|
mount --bind mountpoint/boot mountpoint/boot/efi
|
||||||
|
|
||||||
echo "(hd0) ${loop_device}" > mountpoint/tmp/device.map
|
echo "(hd0) ${loop_device}" > mountpoint/tmp/device.map
|
||||||
mkdir -p mountpoint/etc/default/grub.d
|
mkdir -p mountpoint/etc/default/grub.d
|
||||||
@ -234,7 +238,7 @@ install_grub() {
|
|||||||
# Server preinstalled image
|
# Server preinstalled image
|
||||||
# Setup cidata sample data & nocloud fallback
|
# Setup cidata sample data & nocloud fallback
|
||||||
# Allows login on first boot with or without metadata
|
# Allows login on first boot with or without metadata
|
||||||
cidata_dev="/dev/mapper${loop_device///dev/}p14"
|
cidata_dev="${loop_device}p14"
|
||||||
setup_cidata "${cidata_dev}"
|
setup_cidata "${cidata_dev}"
|
||||||
setup_cinocloud mountpoint
|
setup_cinocloud mountpoint
|
||||||
fi
|
fi
|
||||||
@ -246,7 +250,7 @@ install_grub() {
|
|||||||
# Server preinstalled image
|
# Server preinstalled image
|
||||||
# Setup cidata sample data & nocloud fallback
|
# Setup cidata sample data & nocloud fallback
|
||||||
# Allows login on first boot with or without metadata
|
# Allows login on first boot with or without metadata
|
||||||
cidata_dev="/dev/mapper${loop_device///dev/}p14"
|
cidata_dev="${loop_device}p14"
|
||||||
setup_cidata "${cidata_dev}"
|
setup_cidata "${cidata_dev}"
|
||||||
setup_cinocloud mountpoint
|
setup_cinocloud mountpoint
|
||||||
fi
|
fi
|
||||||
@ -258,7 +262,7 @@ install_grub() {
|
|||||||
# Server preinstalled image
|
# Server preinstalled image
|
||||||
# Setup cidata sample data & nocloud fallback
|
# Setup cidata sample data & nocloud fallback
|
||||||
# Allows login on first boot with or without metadata
|
# Allows login on first boot with or without metadata
|
||||||
cidata_dev="/dev/mapper${loop_device///dev/}p13"
|
cidata_dev="${loop_device}p13"
|
||||||
setup_cidata "${cidata_dev}"
|
setup_cidata "${cidata_dev}"
|
||||||
setup_cinocloud mountpoint
|
setup_cinocloud mountpoint
|
||||||
fi
|
fi
|
||||||
@ -285,10 +289,10 @@ install_grub() {
|
|||||||
efi_target=riscv64-efi
|
efi_target=riscv64-efi
|
||||||
# The real U-Boot
|
# The real U-Boot
|
||||||
chroot mountpoint apt-get install -qqy u-boot-microchip
|
chroot mountpoint apt-get install -qqy u-boot-microchip
|
||||||
loader="/dev/mapper${loop_device///dev/}p13"
|
loader="${loop_device}p13"
|
||||||
dd if=mountpoint/usr/lib/u-boot/microchip_icicle/u-boot.payload of=$loader
|
dd if=mountpoint/usr/lib/u-boot/microchip_icicle/u-boot.payload of=$loader
|
||||||
# Provide end-user modifyable CIDATA
|
# Provide end-user modifyable CIDATA
|
||||||
cidata_dev="/dev/mapper${loop_device///dev/}p12"
|
cidata_dev="${loop_device}p12"
|
||||||
setup_cidata "${cidata_dev}"
|
setup_cidata "${cidata_dev}"
|
||||||
# Provide stock nocloud datasource
|
# Provide stock nocloud datasource
|
||||||
# Allow interactive login on baremetal board,
|
# Allow interactive login on baremetal board,
|
||||||
@ -330,10 +334,10 @@ install_grub() {
|
|||||||
chroot mountpoint apt-get install -qqy u-boot-nezha
|
chroot mountpoint apt-get install -qqy u-boot-nezha
|
||||||
# Since version 2022.10 U-Boot SPL and U-Boot are installed onto the same partition.
|
# Since version 2022.10 U-Boot SPL and U-Boot are installed onto the same partition.
|
||||||
# Package nezha-boot0 is not needed anymore.
|
# Package nezha-boot0 is not needed anymore.
|
||||||
loader1="/dev/mapper${loop_device///dev/}p13"
|
loader1="${loop_device}p13"
|
||||||
dd if=mountpoint/usr/lib/u-boot/${SUBARCH}/u-boot-sunxi-with-spl.bin of=$loader1
|
dd if=mountpoint/usr/lib/u-boot/${SUBARCH}/u-boot-sunxi-with-spl.bin of=$loader1
|
||||||
# Provide end-user modifyable CIDATA
|
# Provide end-user modifyable CIDATA
|
||||||
cidata_dev="/dev/mapper${loop_device///dev/}p12"
|
cidata_dev="${loop_device}p12"
|
||||||
setup_cidata "${cidata_dev}"
|
setup_cidata "${cidata_dev}"
|
||||||
# Provide stock nocloud datasource
|
# Provide stock nocloud datasource
|
||||||
# Allow interactive login on baremetal SiFive board,
|
# Allow interactive login on baremetal SiFive board,
|
||||||
@ -359,7 +363,7 @@ install_grub() {
|
|||||||
efi_target=riscv64-efi
|
efi_target=riscv64-efi
|
||||||
|
|
||||||
# factory u-boot requires a p3 partition with /boot/uEnv.txt file
|
# factory u-boot requires a p3 partition with /boot/uEnv.txt file
|
||||||
uenv_dev="/dev/mapper${loop_device///dev/}p3"
|
uenv_dev="${loop_device}p3"
|
||||||
mkfs.ext4 "${uenv_dev}"
|
mkfs.ext4 "${uenv_dev}"
|
||||||
uenv_mnt_dir=`mktemp -d uenvXXX`
|
uenv_mnt_dir=`mktemp -d uenvXXX`
|
||||||
mount "${uenv_dev}" "${uenv_mnt_dir}"
|
mount "${uenv_dev}" "${uenv_mnt_dir}"
|
||||||
@ -387,7 +391,7 @@ EOF
|
|||||||
umount "${uenv_mnt_dir}"
|
umount "${uenv_mnt_dir}"
|
||||||
rmdir "${uenv_mnt_dir}"
|
rmdir "${uenv_mnt_dir}"
|
||||||
# Provide end-user modifyable CIDATA
|
# Provide end-user modifyable CIDATA
|
||||||
cidata_dev="/dev/mapper${loop_device///dev/}p12"
|
cidata_dev="${loop_device}p12"
|
||||||
setup_cidata "${cidata_dev}"
|
setup_cidata "${cidata_dev}"
|
||||||
# Provide stock nocloud datasource
|
# Provide stock nocloud datasource
|
||||||
# Allow interactive login on baremetal SiFive board,
|
# Allow interactive login on baremetal SiFive board,
|
||||||
@ -406,7 +410,7 @@ EOF
|
|||||||
chroot mountpoint bash -c 'FK_FORCE=yes apt-get install -qqy grub-efi-riscv64 flash-kernel'
|
chroot mountpoint bash -c 'FK_FORCE=yes apt-get install -qqy grub-efi-riscv64 flash-kernel'
|
||||||
efi_target=riscv64-efi
|
efi_target=riscv64-efi
|
||||||
# Provide end-user modifyable CIDATA
|
# Provide end-user modifyable CIDATA
|
||||||
cidata_dev="/dev/mapper${loop_device///dev/}p12"
|
cidata_dev="${loop_device}p12"
|
||||||
setup_cidata "${cidata_dev}"
|
setup_cidata "${cidata_dev}"
|
||||||
# Provide stock nocloud datasource
|
# Provide stock nocloud datasource
|
||||||
# Allow interactive login on baremetal board,
|
# Allow interactive login on baremetal board,
|
||||||
@ -431,13 +435,13 @@ EOF
|
|||||||
fi
|
fi
|
||||||
chroot mountpoint apt-get install -qqy u-boot-sifive
|
chroot mountpoint apt-get install -qqy u-boot-sifive
|
||||||
# FSBL, which gets U-Boot SPL
|
# FSBL, which gets U-Boot SPL
|
||||||
loader1="/dev/mapper${loop_device///dev/}p13"
|
loader1="${loop_device}p13"
|
||||||
# The real U-Boot
|
# The real U-Boot
|
||||||
loader2="/dev/mapper${loop_device///dev/}p14"
|
loader2="${loop_device}p14"
|
||||||
dd if=mountpoint/usr/lib/u-boot/${u_boot_arch}/u-boot-spl.bin of=$loader1
|
dd if=mountpoint/usr/lib/u-boot/${u_boot_arch}/u-boot-spl.bin of=$loader1
|
||||||
dd if=mountpoint/usr/lib/u-boot/${u_boot_arch}/u-boot.itb of=$loader2
|
dd if=mountpoint/usr/lib/u-boot/${u_boot_arch}/u-boot.itb of=$loader2
|
||||||
# Provide end-user modifyable CIDATA
|
# Provide end-user modifyable CIDATA
|
||||||
cidata_dev="/dev/mapper${loop_device///dev/}p12"
|
cidata_dev="${loop_device}p12"
|
||||||
setup_cidata "${cidata_dev}"
|
setup_cidata "${cidata_dev}"
|
||||||
# Provide stock nocloud datasource
|
# Provide stock nocloud datasource
|
||||||
# Allow interactive login on baremetal SiFive board,
|
# Allow interactive login on baremetal SiFive board,
|
||||||
@ -517,16 +521,26 @@ EOF
|
|||||||
|
|
||||||
disk_image=binary/boot/disk-uefi.ext4
|
disk_image=binary/boot/disk-uefi.ext4
|
||||||
|
|
||||||
|
# create the disk
|
||||||
create_empty_disk_image "${disk_image}"
|
create_empty_disk_image "${disk_image}"
|
||||||
create_partitions "${disk_image}"
|
create_partitions "${disk_image}"
|
||||||
mount_image "${disk_image}" 1
|
mount_image "${disk_image}" 1
|
||||||
|
|
||||||
# Copy the chroot in to the disk
|
# create and mount the rootfs partition
|
||||||
make_ext4_partition "${rootfs_dev_mapper}"
|
make_ext4_partition "${rootfs_dev_mapper}"
|
||||||
mkdir mountpoint
|
mkdir mountpoint
|
||||||
mount "${rootfs_dev_mapper}" mountpoint
|
mount "${rootfs_dev_mapper}" mountpoint
|
||||||
cp -a chroot/* mountpoint/
|
|
||||||
umount mountpoint
|
# create and mount the ESP
|
||||||
|
create_and_mount_uefi_partition mountpoint
|
||||||
|
|
||||||
|
# Copy the chroot into the disk
|
||||||
|
cp -a chroot/* mountpoint
|
||||||
|
|
||||||
|
configure_chroot mountpoint
|
||||||
|
|
||||||
|
# cleanup the mount
|
||||||
|
umount -R mountpoint
|
||||||
rmdir mountpoint
|
rmdir mountpoint
|
||||||
|
|
||||||
install_grub
|
install_grub
|
||||||
|
@ -124,6 +124,21 @@ fi
|
|||||||
|
|
||||||
#### END COMMON ARCH FUNCTIONS
|
#### END COMMON ARCH FUNCTIONS
|
||||||
|
|
||||||
|
# For everything except s390x, disable kernel and initramfs symlinks
|
||||||
|
case $arch in
|
||||||
|
# On s390x the sipl.conf is static right now with just two boot options.
|
||||||
|
s390x)
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
find "${rootd}/boot" -type l -exec rm {} \;
|
||||||
|
kernel_img_conf="${rootd}/etc/kernel-img.conf"
|
||||||
|
if grep -q '^do_symlinks = ' "$kernel_img_conf" 2> /dev/null; then
|
||||||
|
sed -i 's/^do_symlinks = .*$/do_symlinks = no/g' "$kernel_img_conf"
|
||||||
|
else
|
||||||
|
echo "do_symlinks = no" >> "$kernel_img_conf"
|
||||||
|
fi
|
||||||
|
|
||||||
case $arch in
|
case $arch in
|
||||||
# ARM, ppc, riscv64 and s390x images are special
|
# ARM, ppc, riscv64 and s390x images are special
|
||||||
|
@ -107,7 +107,12 @@ Ekm0W8qT4AT0GSk5CY8kx+UvCn6FLxMuv8xjWoX3OLcQx31yO6Uy6c2LN6nSlovDghKP5V1KvlKl
|
|||||||
WiXM9CPKCZv/Es3uOp/ke0wWL7v0MZhzUJ+QhOtTNg==
|
WiXM9CPKCZv/Es3uOp/ke0wWL7v0MZhzUJ+QhOtTNg==
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
env SNAPPY_STORE_NO_CDN=1 snap prepare-image --classic config/classic-model.model chroot
|
channel=""
|
||||||
|
if [ -n "$CHANNEL" ]; then
|
||||||
|
channel="--channel $CHANNEL"
|
||||||
|
fi
|
||||||
|
env SNAPPY_STORE_NO_CDN=1 snap prepare-image \
|
||||||
|
--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
|
rsync -a chroot/system-seed/ chroot/var/lib/snapd/seed
|
||||||
rm -rf chroot/system-seed/
|
rm -rf chroot/system-seed/
|
||||||
|
@ -63,7 +63,12 @@ oPijs/y+KJ4DbdrmiwwWCxQZcx2T5GG4HB38eIsnmEWTyml02lOL9sWq6qKuk95a3DhF+Q02+zkG
|
|||||||
c3kEHr8kcSEkJtgwre/RjjlvGYhur1rZ4i0G6gGBLw==
|
c3kEHr8kcSEkJtgwre/RjjlvGYhur1rZ4i0G6gGBLw==
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
env SNAPPY_STORE_NO_CDN=1 snap prepare-image --classic config/classic-model-installer.model chroot
|
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
|
mv chroot/system-seed/systems/* chroot/system-seed/systems/classic-installer
|
||||||
rsync -a chroot/system-seed/ chroot/var/lib/snapd/seed
|
rsync -a chroot/system-seed/ chroot/var/lib/snapd/seed
|
||||||
rm -rf chroot/system-seed/
|
rm -rf chroot/system-seed/
|
||||||
|
@ -19,3 +19,10 @@ 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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user