livecd-rootfs/live-build/ubuntu/hooks/099-ubuntu-image-customization.chroot
Dave Jones 4a4e2924c8 Tidy up fstab mods on preinstalled desktop images
The UNCONFIGURED FSTAB warning was being left in the result, the discard
option wasn't included, and the fsck flag was 0 (all in marked contrast
to the preinstalled server images).
2022-02-15 16:26:29 +00:00

86 lines
2.4 KiB
Bash

#!/bin/bash -ex
. /root/config/chroot
# Specific ubuntu-image chroot configuration goes here.
if [ "$IMAGEFORMAT" == "none" ]; then
if [ "$SUBPROJECT" == "desktop-preinstalled" ]; then
# Create files/dirs Ubiquity requires
mkdir -p /var/log/installer
touch /var/log/installer/debug
touch /var/log/syslog
chown syslog:adm /var/log/syslog
# Create the oem user account
/usr/sbin/useradd -d /home/oem -G adm,sudo -m -N -u 29999 oem
/usr/sbin/oem-config-prepare --quiet
touch "/var/lib/oem-config/run"
# Update the fstab to include the "discard" option, and
# "x-systemd.growfs" to ensure the root partition is expanded on first
# boot
awk \
-v root_fs_label="writable" \
-v root_fs_options="discard,x-systemd.growfs" \
'
BEGIN { OFS="\t"; count=0; }
# Omit the "UNCONFIGURED" warning if it is still present
/^# UNCONFIGURED FSTAB/ { next; }
# Only modify the first non-comment line where the second field is the
# root and omit multiple root definitions
/^[^#]/ && $2 == "/" {
if (!count) {
$1="LABEL=" root_fs_label;
$4=root_fs_options;
$6="1";
}
count++;
if (count > 1) next;
}
{ print; }
# If we reach the end without seeing a root mount line, add one
END {
if (!count) {
print "LABEL=" root_fs_label, "/", "ext4", root_fs_options, "0", "1";
}
}
' /etc/fstab > /etc/fstab.new
mv /etc/fstab.new /etc/fstab
# Add units for a 1GiB swapfile, generated on first boot
cat << EOF > /lib/systemd/system/mkswap.service
[Unit]
Description=Create the default swapfile
DefaultDependencies=no
Requires=local-fs.target
After=local-fs.target
Before=swapfile.swap
ConditionPathExists=!/swapfile
[Service]
Type=oneshot
ExecStartPre=fallocate -l 1GiB /swapfile
ExecStartPre=chmod 600 /swapfile
ExecStart=mkswap /swapfile
[Install]
WantedBy=swap.target
EOF
cat << EOF > /lib/systemd/system/swapfile.swap
[Unit]
Description=The default swapfile
[Swap]
What=/swapfile
EOF
mkdir -p /lib/systemd/system/swap.target.wants
ln -s ../mkswap.service /lib/systemd/system/swap.target.wants/
ln -s ../swapfile.swap /lib/systemd/system/swap.target.wants/
fi
fi