Re: adding swap when expanding root filesystem

From: John-Mark Gurney <jmg_at_funkthat.com>
Date: Fri, 18 Nov 2022 01:03:49 UTC
Mike Karels wrote this message on Mon, Nov 07, 2022 at 10:10 -0600:
> This question is not really arm-specific, but I couldn't think of a better
> mailing list for it.
> 
> There are peridic issues reported on small systems like Raspberry Pi
> where people are running buildworld or poudriere and running out of
> memory.  As the user gets no control over the disk layout when installing,
> there is no option to add swap space on the install image.  I have added
> swap space on a USB disk, but this is often not an option.  It occurred
> to me that it might be reasonable to add swap space before expanding
> the root filesystem if there is sufficient space.  I have a prototype,

So, if you boot to single user mode, before growfs runs on first boot,
you can manually add a swap partition at the end of the disk.

You'll need to gpart recover the disk first, so that the gpt (iirc)
covers the remaining disk, and then add a swap partition at the end.
This'll take a bit of math, but isn't too hard.

> and wondered if this is a good thing to do.  Granted, this will often
> create swap on microSD, which is not optimal, but probably better than
> nothing.

The other option is to use a swap file as outlined in the handbook:
https://docs.freebsd.org/en/books/handbook/config/#create-swapfile

> The current prototype creates a swap partition which is 1/10 of the disk
> if the disk is at least 15 GB and the initial root partition is no more
> than 1/3 of the disk, but only up to 1.5x of physical memory.  I would
> probably enable this by default, but provide a way to disable it via a
> kenv variable and/or a variable in /etc/rc.conf.

I would like to see the ability to drop a file on the FAT file system
so that the system can be configured at first boot w/o requiring someone
to either boot to single user mode, or have a FreeBSD system.  This isn't
too hard, as I have a review already open for it:
https://reviews.freebsd.org/D26713

It makes use of cpercival's cloud init, but slightly modified so it looks
on the fat file system that most arm images have.

with this, it wouldn't be too hard to gin up some commands to automatically
add the swap partition on first boot, but until something like this is
done, it has to be done manually.

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."