svn commit: r223917 - head/etc/rc.d

John Baldwin jhb at freebsd.org
Mon Jul 11 15:14:50 UTC 2011


On Sunday, July 10, 2011 8:53:31 pm Doug Barton wrote:
> On 07/10/2011 17:42, Pan Tsu wrote:
> > Doug Barton <dougb at FreeBSD.org> writes:
> > 
> >> Author: dougb
> >> Date: Sun Jul 10 23:47:03 2011
> >> New Revision: 223917
> >> URL: http://svn.freebsd.org/changeset/base/223917
> >>
> >> Log:
> >>   Make sure we load kernel modules from the same path as the running 
kernel
> >>
> >> Modified:
> >>   head/etc/rc.d/kld
> >>
> >> Modified: head/etc/rc.d/kld
> >> 
==============================================================================
> >> --- head/etc/rc.d/kld	Sun Jul 10 22:09:53 2011	(r223916)
> >> +++ head/etc/rc.d/kld	Sun Jul 10 23:47:03 2011	(r223917)
> >> @@ -41,11 +41,24 @@ kld_start()
> >>  {
> >>  	[ -n "$kld_list" ] || return
> >>  
> >> -	local _kld
> >> +	local _kernel_path _module_path _kld _path
> >> +
> >> +	_kernel_path=`$SYSCTL_N kern.bootfile`
> >> +	_kernel_path="${_kernel_path%/*}"
> >> +
> >> +	_module_path=`$SYSCTL_N kern.module_path`
> >> +	_module_path="${_module_path#*\;}"
> >> +	_module_path="$_kernel_path `ltr $_module_path \; ' '`"
> > [...]
> > 
> > Doesn't /boot/support.4th already populates kern.module_path with
> > the path of successfully booted kernel? How is this different?
> 
> When you test it, what happens?

If you do 'boot foo' at the loader prompt you get 
/boot/foo;/boot/kernel;/boot/modules.

It is arguably broken that the old /boot/kernel is still in the list, but that 
bug should be fixed in the loader, not here.  However, I've never had a 
problem with kldload doing the wrong thing when using 'boot foo'.  Do you have 
an actual use case that is broken?

Oh, and if you use 'nextboot -k foo' or set 'kernel=foo' in loader.conf then 
it will DTRT.  However, I would expect this script to be equivalent to a for 
loop of 'kldload foo', but now it isn't since you are using a divergent 
algorithm.  That violates POLA IMO.

-- 
John Baldwin


More information about the svn-src-all mailing list