Linux lhjmq-records 5.15.0-118-generic #128-Ubuntu SMP Fri Jul 5 09:28:59 UTC 2024 x86_64
Your IP : 3.141.201.46
#!/bin/sh
#
# This script will try to find a suiteable snapd snap and start
# snapd and its associated services from it.
set -eux
# run_on_unseeded will mount/run snapd on an unseeded system
run_on_unseeded() {
SNAPD_BASE_DIR="/run/mnt/snapd"
# We need to initialize /snap/snapd/current symlink so that the
# dynanic linker
# /snap/snapd/current/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
# is available to run snapd.
[ -d /snap/snapd ] || mkdir -p /snap/snapd
ln -sf "${SNAPD_BASE_DIR}" /snap/snapd/current
# snapd will write all its needed snapd.{service,socket}
# units and restart once it seeded the snapd snap. We create
# a systemd socket unit so that systemd own the socket, otherwise
# the socket file would be removed by snapd on exit and the snapd.seeded
# service will fail because it has nothing to talk to anymore.
systemd-run --unit=snapd-seeding --service-type=notify --socket-property ListenStream=/run/snapd.socket --socket-property ListenStream=/run/snapd-snap.socket "$SNAPD_BASE_DIR"/usr/lib/snapd/snapd
# we need to start the snapd service from above explicitly, systemd-run
# only enables the socket but does not start the service.
systemctl start --wait snapd-seeding.service
# at this point the snapd.socket is available
systemctl stop snapd-seeding.socket
# At this point snap is available and seeding is at the point where
# were snapd to installed and restarted successfully. Show progress
# now. Even without showing progress we *must* wait here until
# seeding is done to ensure that console-conf is only started
# after this script has finished.
# (redirect stdin because that is what snap checks for pty)
/usr/bin/snap watch --last=seed < /dev/console | tee -a /dev/console
}
# Unseeded systems need to be seeded first, this will start snapd
# and snapd will restart itself after the seeding.
set +e
# systemctl status returns exit code 4 for missing services, and 3 for disabled
# services
systemctl status snapd.service
snapdExists=$?
if [ ! -e /var/lib/snapd/state.json ] || [ $snapdExists = 4 ] ; then
set -e
if ! run_on_unseeded; then
echo "cannot run snapd from the seed"
exit 1
fi
exit 0
fi
set -e
|