Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Nov 2022 09:45:26 -0600
From:      Mike Karels <mike@karels.net>
To:        John-Mark Gurney <jmg@funkthat.com>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: adding swap when expanding root filesystem
Message-ID:  <21BE16D1-0E58-4771-B6DD-7B2EAC6665C5@karels.net>
In-Reply-To: <20221118010348.GG3414@funkthat.com>
References:  <202211071610.2A7GAcHl090048@mail.karels.net> <20221118010348.GG3414@funkthat.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 17 Nov 2022, at 19:03, John-Mark Gurney wrote:

> 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 be=
tter
>> 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 install=
ing,
>> there is no option to add swap space on the install image.  I have add=
ed
>> swap space on a USB disk, but this is often not an option.  It occurre=
d
>> 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.

Right, that=E2=80=99s what my prototype does (as part of the growfs scrip=
t).

>> 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 di=
sk
>> if the disk is at least 15 GB and the initial root partition is no mor=
e
>> 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 someon=
e
> 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 loo=
ks
> on the fat file system that most arm images have.
>
> with this, it wouldn't be too hard to gin up some commands to automatic=
ally
> add the swap partition on first boot, but until something like this is
> done, it has to be done manually.

I like the config script idea, but it runs after the root file system is
mounted read/write, and growfs runs before that.  Meanwhile, I have added
the ability to suppress swap space, or set its size, via either /etc/rc.c=
onf
or kernel environment.  I will probably have something ready for review s=
oon.
Meanwhile, if anyone wants to test (especially on GPT), let me know.

		Mike

> --=20
>   John-Mark Gurney				Voice: +1 415 225 5579
>
>      "All that I will do, has been done, All that I have, has not."



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?21BE16D1-0E58-4771-B6DD-7B2EAC6665C5>