Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Feb 2001 10:41:41 -0800 (PST)
From:      "Duane H. Hesser" <dhh@androcles.com>
To:        Randell Jesup <rjesup@wgate.com>
Cc:        (Bruce Bauman) <bbauman@wgate.com>, (Mike Sinz) <msinz@wgate.com>, Alfred Perlstein <bright@wintelcom.net>, arch@FreeBSD.ORG
Subject:   RE: ELF and diskless boot
Message-ID:  <XFMail.010224104141.dhh@androcles.com>
In-Reply-To: <ybur90pxjwo.fsf_-_@jesup.eng.tvol.net.jesup.eng.tvol.net>

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

On 23-Feb-01 Randell Jesup wrote:
> FYI, is there a reason that we've set up our kernel interface to top, etc
> to fail unless the kernel (in this case 4.x) is loaded with _debugging_
> symbols?  I.e. if you strip a kernel, top (and a bunch of other stuff)
> doesn't work because they can't find certain kernel structures.  To make
> this worse, they also fail if you etherboot (because debug symbols aren't
> loaded).
> 
> Is there a reason for this behavior?  Perhaps some benefit we don't see?
> Any chance of getting this fixed?  I believe this appears sometime since
> 3.x, i.e. after we'd already moved to ELF, but I'm not sure.
> 
> (Note: I'm not the primary person investigating this; Mike is.  I think
> he's looking at modding etherboot to work around the problem.)
> 
> -- 
> Randell Jesup, Worldgate Communications, ex-Scala, ex-Amiga OS team ('88-94)
> rjesup@wgate.com
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-arch" in the body of the message
> 

Is the following pertinent?
(from the archives, almost a year ago...included without shifts)

======= Start included message ========
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 +0
200
References:  <5291.954944534@axl.ops.uunet.co.za> <38EB6291.6B7BFB75@heitec.net>

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

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


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


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


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


-------------------------------------------------------------------------------
======== End include message ========
--------------
Duane H. Hesser
dhh@androcles.com

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




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