Re: Single-user actions on reboot
- In reply to: Guido Falsi : "Re: Single-user actions on reboot"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 30 Sep 2023 14:48:51 UTC
On 9/29/23 08:49, Guido Falsi wrote: > On 29/09/23 15:21, Jason Bacon wrote: >> >> I'm wondering if there's a canonical way to schedule a command to run >> automatically during the next boot cycle, but before going multiuser. >> >> This would be useful, for example, to run certain tunefs commands on >> /, which can only be done in single-user mode, on remotely managed >> systems. >> >> Running things after going multiuser is easy, of course, but not >> sufficient for tunefs commands that cannot be performed on a >> filesystem mounted rw. >> >> Thanks... >> > > AFAIK there is no ready made tool in base (or ports) for that. > > But ezjail uses this trick with rc scripts (removing itself): > > https://erdgeist.org/gitweb/ezjail/tree/examples/example/etc/rc.d/ezjail.flavour.example > > This is effective but requires the disk mounted r/w which maybe is not > enough for you. > > Problem is, without any writable media mounted, how can any script > register it has already ran? > > One idea that comes to mind is adding some hook to the main rc script, > before mounting disk r/w, and a second script that removes existing > hooks once disks are r/w. > Thanks for the brainstorming, gents. This helped narrow my direction, and I implemented what I need by creating a /etc/rc.d/local_early based on the standard /etc/rc.d/local: https://github.com/outpaddling/auto-admin/blob/master/Data/local_early https://github.com/outpaddling/auto-admin/blob/master/Data/rc.local_early The only real difference is when it runs. As an example of how to use it, to toggle the soft-updates journal using tunefs, I generate a script like the following and drop it in /etc/rc.local_early.d. It runs on the next reboot and removes itself. for fs in /dev/ada0s1a /dev/da0p1; do tunefs -j disable $fs mount -u -o rw / rm -f /etc/rc.local_early.d/auto-su+j-toggle.sh done reboot This is now integrated into auto-su+j-toggle (WIP version), part of sysutils/auto-admin. -- Life is a game. Play hard. Play fair. Have fun.