Files
Colin Percival 22c4099b04 EC2: Enable autogrowing filesystems post-boot
Enable the new growfs_postboot mechanism.  Note that this also implies
disabling automatic allocation of swap space on the root disk, since we
cannot grow the root filesystem if swap space is allocated after it.

This will not be MFCed since it is a significant behavioural change.

Sponsored by:	Amazon
Relnotes:	yes
2026-08-23 22:06:06 -07:00

64 lines
2.3 KiB
Bash

#!/bin/sh
. ${WORLDDIR}/release/tools/ec2.conf
# Build with a 4.9 GB partition; the growfs rc.d script will expand
# the partition to fill the root disk after the EC2 instance is launched.
# Note that if this is set to <N>G, we will end up with an <N+1> GB disk
# image since VMSIZE is the size of the filesystem partition, not the disk
# which it resides within. (This overrides the default in ec2.conf.)
export VMSIZE=5000m
# Flags to installworld/kernel: We don't want debug symbols (kernel or
# userland), 32-bit libraries, or tests.
export INSTALLOPTS="WITHOUT_DEBUG_FILES=YES WITHOUT_KERNEL_SYMBOLS=YES \
WITHOUT_LIB32=YES WITHOUT_TESTS=YES"
# Equivalent to INSTALLOPTS for pkgbase
vm_extra_filter_base_packages() {
grep -v \
-e '.*-dbg$' \
-e '.*-lib32$' \
-e '^FreeBSD-set-tests'
}
# Packages to install into the image we're creating. In addition to packages
# present on all EC2 AMIs, we install:
# * ec2-scripts, which provides a range of EC2ification startup scripts,
# * firstboot-pkg-upgrade, to install security updates at first boot,
# * firstboot-pkgs, to install packages at first boot, and
# * isc-dhcp44-client, used for IPv6 network setup.
export VM_EXTRA_PACKAGES="${VM_EXTRA_PACKAGES} ec2-scripts \
firstboot-pkg-upgrade firstboot-pkgs isc-dhcp44-client"
# Services to enable in rc.conf(5).
export VM_RC_LIST="${VM_RC_LIST} ec2_configinit ec2_ephemeral_swap \
ec2_fetchkey ec2_loghostkey firstboot_pkg_upgrade \
growfs growfs_postboot sshd"
vm_extra_pre_umount() {
# Limit firstboot_pkg_upgrade to the base system.
echo 'firstboot_pkg_upgrade_repos="FreeBSD-base"' >> ${DESTDIR}/etc/rc.conf
# Don't allocate swap space when we first boot; that makes it
# impossible to grow the root filesystem later.
echo 'growfs_swap_size=0' >> ${DESTDIR}/etc/rc.conf
# Any EC2 ephemeral disks seen when the system first boots will
# be "new" disks; there is no "previous boot" when they might have
# been seen and used already.
touch ${DESTDIR}/var/db/ec2_ephemeral_diskseen
metalog_add_data ./var/db/ec2_ephemeral_diskseen
# Configuration common to all EC2 AMIs
ec2_common
# Standard FreeBSD network configuration
ec2_base_networking
# Add files from packages which weren't recorded in metalog
metalog_add_data ./usr/local/etc/dhclient.conf
return 0
}