Adding a hook to shutdown.c & halt (reboot.c) to call a script.

Warner Losh imp at bsdimp.com
Fri Jul 5 16:04:51 UTC 2013


On Jul 5, 2013, at 7:04 AM, Jilles Tjoelker wrote:

> On Fri, Jul 05, 2013 at 02:52:04PM +0200, Julian H. Stacey wrote:
>> Hi mobile@
>> I need ** my laptop to call a script before shutdown, 
>> (perhaps automaticaly too with something like 'test -e ` etc,
>> though perhaps the default should remain with no test)
> 
>> I dont see any hooks in man shutdown or halt ?  
>> I could hack
>> 	/usr/src/sbin/shutdown/shutdown.c	&
>> 	/usr/src/sbin/reboot/reboot.c		# (source of halt)
>> or does someone have a better idea ?
> 
>> FreeBSD has a mass of scripts etc for system start up, but seems light
>> on close down hooks ?  I seem to recall on system 5 there were table
>> entries for up & down for lots of things, (though I never got
>> on with 5, not lots of others here either, & am not advocating that route), 
>> but is there a better way than adding a hook to system("/some_path"); ?
> 
>> BTW ** What I'm calling manually before halt is my
>> 	  http://www.berklix.com/~jhs/bin/.sh/umountusb
>> A combo of umounts of USB sticks/disks with plain dos & ufs + also
>> mdconfig -d & gbde detach for encrypted file system on both hard
>> disk & USB sticks.  (When I forget to call it before halt, the
>> laptop hangs on USB.)
> 
> shutdown(8) signals init (unless -o is given), which will run
> /etc/rc.shutdown from multi-user mode. The same applies to ctrl+alt+del,
> kernel-controlled overheating shutdown, etc.
> 
> reboot(8) and halt(8) do not involve init and do not run any shutdown
> scripts. I think they should be changed to signal init (except reboot
> -q, halt -q) and should not be used until then. However, there are
> apparently some problems with that.

I think so too. fasthalt/fastreboot is what I'd call it, but I've come around to thinking that you're right here. It will be a small hassle for some people to adapt to the new system, but I think it will be worth it.

> The incorrect umount order should perhaps be fixed in the kernel.

Agreed.

Warner



More information about the freebsd-mobile mailing list