The ubuntu-core-installer image is an installer that installs ubuntu core. The environment the installer runs in is similar to the server installer but it has a source catalog entry that points to the model created in ubuntu-core-installer/hooks/05-prepare-image.binary, which subiquity knows how to install.ubuntu/noble
parent
2215660a7d
commit
0df4234c28
@ -0,0 +1,5 @@
|
||||
#!/bin/sh -x
|
||||
|
||||
set -e
|
||||
|
||||
mkdir -p /lib/modules
|
@ -0,0 +1,17 @@
|
||||
#!/bin/bash -ex
|
||||
# vi: ts=4 noexpandtab
|
||||
|
||||
if [ "${PASS}" != "base.live" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Make sure NoCloud is last
|
||||
values=$(echo get cloud-init/datasources | debconf-communicate | sed 's/^0 //;s/NoCloud, //;s/None/NoCloud, None/')
|
||||
printf "%s\t%s\t%s\t%s\n" \
|
||||
cloud-init cloud-init/datasources multiselect "$values" | debconf-set-selections
|
||||
dpkg-reconfigure --frontend=noninteractive cloud-init
|
||||
|
||||
if [ `dpkg --print-architecture` = s390x ]; then
|
||||
# because z/VM x3270 is just ttyS0
|
||||
cp -r /usr/lib/systemd/system/serial-getty@sclp_line0.service.d /usr/lib/systemd/system/serial-getty@ttyS0.service.d
|
||||
fi
|
@ -0,0 +1,19 @@
|
||||
#!/bin/bash -ex
|
||||
# vi: ts=4 noexpandtab
|
||||
|
||||
case $PASS in
|
||||
base.live)
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
cat <<EOF > /etc/initramfs-tools/conf.d/casperize.conf
|
||||
export CASPER_GENERATE_UUID=1
|
||||
EOF
|
||||
|
||||
cat <<EOF > /etc/initramfs-tools/conf.d/default-layer.conf
|
||||
LAYERFS_PATH=${PASS}.squashfs
|
||||
EOF
|
@ -0,0 +1,17 @@
|
||||
#!/bin/bash -eux
|
||||
# vi: ts=4 noexpandtab
|
||||
|
||||
case $PASS in
|
||||
base.live)
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
PROJECT=$PROJECT${SUBARCH:+-$SUBARCH}
|
||||
|
||||
# Fish out generated kernel image and initrd
|
||||
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
|
@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eux
|
||||
|
||||
case ${PASS:-} in
|
||||
base.live)
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
. config/binary
|
||||
. config/functions
|
||||
|
||||
env SNAPPY_STORE_NO_CDN=1 snap known --remote model series=16 brand-id=canonical model=ubuntu-core-24-amd64 > config/ubuntu-core-24-amd64.model
|
||||
|
||||
env SNAPPY_STORE_NO_CDN=1 snap prepare-image \
|
||||
config/ubuntu-core-24-amd64.model --snap console-conf chroot
|
||||
mv chroot/system-seed/systems/* chroot/system-seed/systems/ubuntu-core-24-amd64
|
||||
rsync -av chroot/system-seed/{systems,snaps} chroot/var/lib/snapd/seed
|
||||
rm -rf chroot/system-seed
|
||||
|
||||
cat <<-EOF > config/edge.catalog-in.yaml
|
||||
name: "Ubuntu Core 24"
|
||||
description: >-
|
||||
Ubuntu Core.
|
||||
id: ubuntu-core
|
||||
type: null
|
||||
variant: core
|
||||
locale_support: none
|
||||
snapd_system_label: ubuntu-core-24-amd64
|
||||
EOF
|
||||
PROJECT_FULL=$PROJECT${SUBARCH:+-$SUBARCH}
|
||||
usc_opts="--output livecd.${PROJECT_FULL}.install-sources.yaml \
|
||||
--template config/edge.catalog-in.yaml \
|
||||
--size 0"
|
||||
/usr/share/livecd-rootfs/update-source-catalog $usc_opts
|
@ -0,0 +1,117 @@
|
||||
# The top level settings are used as module
|
||||
# and system configuration.
|
||||
|
||||
# A set of users which may be applied and/or used by various modules
|
||||
# when a 'default' entry is found it will reference the 'default_user'
|
||||
# from the distro configuration specified below
|
||||
users:
|
||||
- default
|
||||
|
||||
# If this is set, 'root' will not be able to ssh in and they
|
||||
# will get a message to login instead as the default $user
|
||||
disable_root: true
|
||||
|
||||
# This will cause the set+update hostname module to not operate (if true)
|
||||
preserve_hostname: true
|
||||
|
||||
ssh_pwauth: yes
|
||||
chpasswd:
|
||||
expire: false
|
||||
|
||||
# This is the initial network config.
|
||||
# It can be overwritten by cloud-init or subiquity.
|
||||
network:
|
||||
version: 2
|
||||
ethernets:
|
||||
zz-all-en:
|
||||
match:
|
||||
name: "en*"
|
||||
dhcp4: true
|
||||
zz-all-eth:
|
||||
match:
|
||||
name: "eth*"
|
||||
dhcp4: true
|
||||
|
||||
# We used to have a custom final_message here. Just use the default instead.
|
||||
|
||||
# Example datasource config
|
||||
# datasource:
|
||||
# Ec2:
|
||||
# metadata_urls: [ 'blah.com' ]
|
||||
# timeout: 5 # (defaults to 50 seconds)
|
||||
# max_wait: 10 # (defaults to 120 seconds)
|
||||
|
||||
# The modules that run in the 'init' stage
|
||||
cloud_init_modules:
|
||||
- bootcmd
|
||||
- write-files
|
||||
- ca-certs
|
||||
- rsyslog
|
||||
- users-groups
|
||||
- ssh
|
||||
|
||||
# The modules that run in the 'config' stage
|
||||
cloud_config_modules:
|
||||
# Emit the cloud config ready event
|
||||
# this can be used by upstart jobs for 'start on cloud-config'.
|
||||
- ssh-import-id
|
||||
- set-passwords
|
||||
- timezone
|
||||
- disable-ec2-metadata
|
||||
- runcmd
|
||||
|
||||
# The modules that run in the 'final' stage
|
||||
cloud_final_modules:
|
||||
- scripts-per-once
|
||||
- scripts-user
|
||||
- ssh-authkey-fingerprints
|
||||
- keys-to-console
|
||||
- phone-home
|
||||
- final-message
|
||||
|
||||
# System and/or distro specific settings
|
||||
# (not accessible to handlers/transforms)
|
||||
system_info:
|
||||
# This will affect which distro class gets used
|
||||
distro: ubuntu
|
||||
# Default user name + that default users groups (if added/used)
|
||||
default_user:
|
||||
name: installer
|
||||
lock_passwd: false
|
||||
gecos: Ubuntu
|
||||
groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video]
|
||||
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
|
||||
shell: /usr/bin/subiquity-shell
|
||||
# Automatically discover the best ntp_client
|
||||
ntp_client: auto
|
||||
# Other config here will be given to the distro class and/or path classes
|
||||
paths:
|
||||
cloud_dir: /var/lib/cloud/
|
||||
templates_dir: /etc/cloud/templates/
|
||||
upstart_dir: /etc/init/
|
||||
package_mirrors:
|
||||
- arches: [i386, amd64]
|
||||
failsafe:
|
||||
primary: http://archive.ubuntu.com/ubuntu
|
||||
security: http://security.ubuntu.com/ubuntu
|
||||
search:
|
||||
primary:
|
||||
- http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/
|
||||
- http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/
|
||||
- http://%(region)s.clouds.archive.ubuntu.com/ubuntu/
|
||||
security: []
|
||||
- arches: [arm64, armel, armhf]
|
||||
failsafe:
|
||||
primary: http://ports.ubuntu.com/ubuntu-ports
|
||||
security: http://ports.ubuntu.com/ubuntu-ports
|
||||
search:
|
||||
primary:
|
||||
- http://%(ec2_region)s.ec2.ports.ubuntu.com/ubuntu-ports/
|
||||
- http://%(availability_zone)s.clouds.ports.ubuntu.com/ubuntu-ports/
|
||||
- http://%(region)s.clouds.ports.ubuntu.com/ubuntu-ports/
|
||||
security: []
|
||||
- arches: [default]
|
||||
failsafe:
|
||||
primary: http://ports.ubuntu.com/ubuntu-ports
|
||||
security: http://ports.ubuntu.com/ubuntu-ports
|
||||
ssh_svcname: ssh
|
@ -0,0 +1,4 @@
|
||||
output: {all: '>> /var/log/cloud-init-output.log'}
|
||||
no_ssh_fingerprints: true
|
||||
ssh:
|
||||
emit_keys_to_console: false
|
@ -0,0 +1,2 @@
|
||||
[Journal]
|
||||
RateLimitIntervalSec=0
|
@ -0,0 +1,4 @@
|
||||
# systemd in 23.04+ uses a newer "compact" format by default which is not
|
||||
# understood by the systemd libraries from jammy used in the subiquity snap.
|
||||
[Service]
|
||||
Environment="SYSTEMD_JOURNAL_COMPACT=0"
|
@ -0,0 +1,4 @@
|
||||
# systemd in 22.04+ uses "hash table hardening" by default which is not
|
||||
# understood by the systemd libraries from focal used in the subiquity snap.
|
||||
[Service]
|
||||
Environment="SYSTEMD_JOURNAL_KEYED_HASH=0"
|
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
exec sudo snap run subiquity
|
||||
|
@ -0,0 +1,3 @@
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=-/sbin/agetty --noclear -n --autologin ubuntu-core-installer %I $TERM
|
@ -0,0 +1 @@
|
||||
/dev/null
|
@ -0,0 +1 @@
|
||||
../media-filesystem.mount
|
@ -0,0 +1,8 @@
|
||||
[Unit]
|
||||
Description=Subiquity, the installer for Ubuntu Server %I
|
||||
StartLimitInterval=0
|
||||
|
||||
[Service]
|
||||
Environment=SNAP_REEXEC=0
|
||||
ExecStart=
|
||||
ExecStart=/usr/bin/snap run subiquity.subiquity-service %I
|
@ -0,0 +1,4 @@
|
||||
[Service]
|
||||
StandardOutput=tty
|
||||
ExecStart=
|
||||
ExecStart=/usr/bin/snap run subiquity --ssh
|
@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
IgnoreOnIsolate=yes
|
||||
|
||||
[Service]
|
||||
Environment=SNAP_REEXEC=0
|
||||
UtmpIdentifier=tty1
|
||||
TTYPath=/dev/tty1
|
||||
TTYReset=yes
|
||||
TTYVHangup=yes
|
||||
TTYVTDisallocate=yes
|
||||
KillMode=process
|
||||
IgnoreSIGPIPE=no
|
||||
SendSIGHUP=yes
|
@ -0,0 +1,2 @@
|
||||
[Service]
|
||||
Environment=SNAP_REEXEC=0
|
@ -0,0 +1 @@
|
||||
/bin/true
|
@ -0,0 +1 @@
|
||||
/lib/systemd/system/systemd-networkd.service
|
@ -0,0 +1 @@
|
||||
/lib/systemd/system/systemd-networkd-wait-online.service
|
@ -0,0 +1 @@
|
||||
/lib/systemd/system/systemd-networkd.socket
|
Loading…
Reference in new issue