Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Apr 2000 20:43:55 +0300
From:      Ruslan Ermilov <ru@ucb.crimea.ua>
To:        Bernd Luevelsmeyer <bernd.luevelsmeyer@heitec.net>
Cc:        freebsd-questions@FreeBSD.ORG, Sheldon Hearn <sheldonh@uunet.co.za>, Gustavo V G C Rios <kernel@lince.tdnet.com.br>
Subject:   Re: nlist failed in 4.0
Message-ID:  <20000405204355.D33946@relay.ucb.crimea.ua>
In-Reply-To: <38EB6291.6B7BFB75@heitec.net>; from Bernd Luevelsmeyer on Wed, Apr 05, 2000 at 05:58:09PM %2B0200
References:  <5291.954944534@axl.ops.uunet.co.za> <38EB6291.6B7BFB75@heitec.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--/9DWx/yDrRhgMJTb
Content-Type: text/plain; charset=us-ascii

On Wed, Apr 05, 2000 at 05:58:09PM +0200, Bernd Luevelsmeyer wrote:
> Sheldon Hearn wrote:
> > 
> > On Tue, 04 Apr 2000 09:01:39 GMT, Gustavo V G C Rios wrote:
> > 
> > > boot into single user and:
> > >
> > > cd /usr/src
> > > make -DNOINFO installworld
> > > make installworld
> > > exit
> > 
> > This will not solve the problem.
> > 
> > Ciao,
> > Sheldon.
> 
> Indeed it doesn't. Using a version 3.anything will work without
> /boot/loader; for versions 4.release and 5.yesterday you must let
> /boot/loader do its thing.
> 
Or apply the following two patches by Bruce Evans (see attached).
By the way, there is an open PR kern/17422 on this issue.


-- 
Ruslan Ermilov		Sysadmin and DBA of the
ru@ucb.crimea.ua	United Commercial Bank,
ru@FreeBSD.org		FreeBSD committer,
+380.652.247.647	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

--/9DWx/yDrRhgMJTb
Content-Type: message/rfc822

Received: (from ru@localhost)
	by relay.ucb.crimea.ua (8.9.3/8.9.3/UCB) id SAA44626;
	Tue, 28 Mar 2000 18:14:30 +0300 (EEST)
	(envelope-from ru)
Date: Tue, 28 Mar 2000 18:14:30 +0300
From: Ruslan Ermilov <ru@ucb.crimea.ua>
To: Mikhail Teterin <mi@kot.ne.mediaone.net>
Cc: stable@freebsd.org, Bruce Evans <bde@freebsd.org>
Subject: Re: top, systat )-: (all rebuilt!)
Message-ID: <20000328181430.A41307@relay.ucb.crimea.ua>
Mail-Followup-To: Mikhail Teterin <mi@kot.ne.mediaone.net>,
	stable@freebsd.org, Bruce Evans <bde@FreeBSD.org>
References: <20000328100840.B7725@relay.ucb.crimea.ua> <200003281453.JAA01102@rtfm.newton>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="tThc/1wpZn/ma/RB"
X-Mailer: Mutt 0.95.3i
In-Reply-To: <200003281453.JAA01102@rtfm.newton>; from Mikhail Teterin on Tue, Mar 28, 2000 at 09:53:20AM -0500


--tThc/1wpZn/ma/RB
Content-Type: text/plain; charset=us-ascii

On Tue, Mar 28, 2000 at 09:53:20AM -0500, Mikhail Teterin wrote:
> Ruslan Ermilov once stated:
>
> =Do you use loader(8), or directly boot your kernel from boot blocks?
>
> Directly... Is that what it is?!?
>
Yes, starting from the following files/revisions:

peter       1999/12/26 23:14:59 PST

  Modified files:
    lib/libkvm           kvm.c kvm_alpha.c kvm_file.c
                         kvm_getloadavg.c kvm_getswapinfo.c
                         kvm_i386.c kvm_nlist.3 kvm_private.h
                         kvm_proc.c kvm_sparc.c
  Log:
  Use kldsym(2) to lookup symbol values.  This avoids the kvm_mkdb juggling
  and is module aware.  Yes, this means that kvm_nlist(3) will find symbols
  in loaded modules.  The emulation of the nlist struct is pretty crude but
  seems to work well enough for all the users in the tree that I found.

  Revision  Changes    Path
  1.12      +22 -113   src/lib/libkvm/kvm.c
  1.4       +1 -2      src/lib/libkvm/kvm_alpha.c
  1.9       +5 -0      src/lib/libkvm/kvm_file.c
  1.3       +5 -1      src/lib/libkvm/kvm_getloadavg.c
  1.10      +1 -2      src/lib/libkvm/kvm_getswapinfo.c
  1.11      +5 -1      src/lib/libkvm/kvm_i386.c
  1.5       +7 -9      src/lib/libkvm/kvm_nlist.3
  1.5       +1 -1      src/lib/libkvm/kvm_private.h
  1.25      +7 -2      src/lib/libkvm/kvm_proc.c
  1.3       +5 -1      src/lib/libkvm/kvm_sparc.c


Could you please try the following two patches (kindly provided by
Bruce Evans), and tell us whether they help you.

There is a kern/17422 on this issue, please follow-up to it.



Cheers,
--
Ruslan Ermilov		Sysadmin and DBA of the
ru@ucb.crimea.ua	United Commercial Bank,
ru@FreeBSD.org		FreeBSD committer,
+380.652.247.647	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

--tThc/1wpZn/ma/RB
Content-Type: message/rfc822

Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16])
	by relay.ucb.crimea.ua (8.9.3/8.9.3/UCB) with ESMTP id EAA76938
	for <ru@ucb.crimea.ua>; Tue, 14 Mar 2000 04:52:39 +0200 (EET)
	(envelope-from bde@zeta.org.au)
Received: from bde.zeta.org.au (bde.zeta.org.au [203.2.228.102])
	by mailman.zeta.org.au (8.8.7/8.8.7) with ESMTP id NAA05065;
	Tue, 14 Mar 2000 13:58:35 +1100
Date: Tue, 14 Mar 2000 13:51:49 +1100 (EST)
From: Bruce Evans <bde@zeta.org.au>
X-Sender: bde@alphplex.bde.org
To: Ruslan Ermilov <ru@ucb.crimea.ua>
cc: Jordan Hubbard <jkh@FreeBSD.org>, committers@FreeBSD.org
Subject: Re: [4.0-ERRATA candidate?] loader(8)/kvm(3) interoperability issue
In-Reply-To: <20000313194345.A52651@relay.ucb.crimea.ua>
Message-ID: <Pine.BSF.4.21.0003141325520.2522-100000@alphplex.bde.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Mon, 13 Mar 2000, Ruslan Ermilov wrote:

> One thing that should IMHO be pointed out in the upcoming 4.0-RELEASE's
> ERRATA (or some more appropriate place), is the fact that the loader(8)
> is now a prerequisite for certain programs using kvm(3) interface.
> Obvious examples are top(1) and swapinfo(8).
> 
> If you boot your kernel without loader(8), directly through bootblocks,
> these programs will not work.

I don't user loader(8), and finally got around to fixing this.  The
problem is that the kernel linker wants module data for the kernel.
It defaults to using incomplete data if none is present.  The following
supplies slightly less incomplete data:

diff -c2 machdep.c~ machdep.c
*** machdep.c~	Tue Feb 29 19:18:29 2000
--- machdep.c	Mon Mar  6 10:05:52 2000
***************
*** 1809,1812 ****
--- 1799,1816 ----
  		preload_metadata = (caddr_t)bootinfo.bi_modulep + KERNBASE;
  		preload_bootstrap_relocate(KERNBASE);
+ 	} else {
+ 		static u_int32_t oldmoduledata[] = {
+ 			1, sizeof("kernel"), 0, 0,
+ 			2, sizeof("elf kernel"), 0, 0, 0,
+ 			0x8004, 4, 0,
+ 			0x8003, 4, 0,
+ 			0, 0,
+ 		};
+ 
+ 		preload_metadata = (caddr_t)&oldmoduledata[0];
+ 		strcpy((char *)&oldmoduledata[2], "kernel");
+ 		strcpy((char *)&oldmoduledata[6], "elf kernel");
+ 		oldmoduledata[11] = roundup2(bootinfo.bi_esymtab, 4);
+ 		oldmoduledata[14] = bootinfo.bi_symtab;
  	}
  	if (bootinfo.bi_envp)

Bruce


--tThc/1wpZn/ma/RB
Content-Type: message/rfc822

Received: from gidora.zeta.org.au (gidora.zeta.org.au [203.26.10.25])
	by relay.ucb.crimea.ua (8.9.3/8.9.3/UCB) with SMTP id QAA33103
	for <ru@ucb.crimea.ua>; Wed, 22 Mar 2000 16:34:11 +0200 (EET)
	(envelope-from bde@zeta.org.au)
Received: (qmail 25547 invoked from network); 22 Mar 2000 14:33:30 -0000
Received: from bde.zeta.org.au (203.2.228.102)
  by gidora.zeta.org.au with SMTP; 22 Mar 2000 14:33:30 -0000
Date: Thu, 23 Mar 2000 01:33:15 +1100 (EST)
From: Bruce Evans <bde@zeta.org.au>
X-Sender: bde@alphplex.bde.org
To: Ruslan Ermilov <ru@ucb.crimea.ua>
Subject: Re: [4.0-ERRATA candidate?] loader(8)/kvm(3) interoperability issue
In-Reply-To: <20000321213700.A64137@relay.ucb.crimea.ua>
Message-ID: <Pine.BSF.4.21.0003230126570.275-100000@alphplex.bde.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

> Hmm, the kernel with this patch panics with fatal trap 12 earlier,
> right after it reports the amount of available memory, if I boot
> without loader(8), but works perfectly, if I do use loader(8).

The symbol addresses in struct bootinfo were garbage when the symbol
table was loaded but DDB was not configured.

diff -c2 locore.s~ locore.s
*** locore.s~	Mon Dec  6 11:12:51 1999
--- locore.s	Thu Mar 23 01:11:57 2000
***************
*** 45,51 ****
  
  #include "opt_bootp.h"
- #include "opt_ddb.h"
  #include "opt_nfsroot.h"
- #include "opt_userconfig.h"
  
  #include <sys/syscall.h>
--- 45,49 ----
***************
*** 751,756 ****
  	movl	$R(_end),%esi
  
! /* include symbols if loaded and useful */
! #ifdef DDB
  	movl	R(_bootinfo+BI_ESYMTAB),%edi
  	testl	%edi,%edi
--- 749,753 ----
  	movl	$R(_end),%esi
  
! /* Include symbols, if any. */
  	movl	R(_bootinfo+BI_ESYMTAB),%edi
  	testl	%edi,%edi
***************
*** 761,765 ****
  	addl	%edi,R(_bootinfo+BI_ESYMTAB)
  over_symalloc:
- #endif
  
  /* If we are told where the end of the kernel space is, believe it. */
--- 758,761 ----

Bruce


--tThc/1wpZn/ma/RB--

--/9DWx/yDrRhgMJTb--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000405204355.D33946>