Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Jun 2002 02:48:12 +0000
From:      W Gerald Hicks <gehicks@gehicks.dyndns.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        Ian Dowse <iedowse@maths.tcd.ie>, freebsd-small@FreeBSD.org
Subject:   [patch] use ld(1) to build kernel with linked-in md(4) filesys
Message-ID:  <3D1E716C.3E8DDC5F@gehicks.dyndns.org>

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

> The patch seems to remove rather than deprecate the MD_ROOT_SIZE code.

Oops, wrong choice of words.  Yes, it's intended to replace the
MD_ROOT_SIZE
feature and any need for a write_mfs_in_kernel program.  

I wasn't clear about what this patch is for right now.  I don't want to
ask to have it committed right away.  It is one of a few prerequisite
patches I
am preparing to do some work on PicoBSD and needed to post this so
others
will be able to get the subsequent patches to build.

> Is there a good reason not just leave it there and add the new option.

I suppose I could have set a -DMD_ROOT_IMAGE when 'makeoption
MD_ROOT_IMAGE='
is specified but otherwise it seems hard to relate 'options' with
'makeoptions'.  

> The new approach requires that you have the image available at the time
that the kernel is compiled, so for some applications it is less
flexible (...)

Well, not exactly.  This patch is only the first piece of a scheme :-)

kern/40017 is related to this effort.  It allows us to use modified
kernel
build metadata (sys/conf) for specialized applications.  Using this
facility
I am going to provide further patches which allow incremental linking.

These changes are pretty far-reaching and I was afraid of taking them
straight to src/sys/conf directly. kern/40017 allows us to use something
like
/usr/local/src/picobsd/conf to implement extra build steps from private
specialized versions of the kern.pre.mk and kern.post.mk files.

The picobsd/conf example will implement another couple of makeoptions:

makeoptions RLINK_KERNEL="/mykernels/kernel-foo-v1.rel"
makeoptions RLINK_KERNEL_OBJS="/tmp/foo.o"

There are two new kernel build targets used for these options:

make prelim   # build a partially linked-kernel
make final    # produce a bootable kernel

This has all been tested successfully in a src/conf patch.  I hesitated
submitting them there in favor of an "outboard" approach using
kern/40017

I'd really rather avoid bringing the objcopy step into the kernel build
process.

Being able to build a kernel with a two-step process allows us to
trivally
wrap everything into a little shell script or other makefile fragment. 
The
'make final' step can be run as often as one requires while changing
filesystem
images.

Cheers,

Jerry Hicks
gehicks@gehicks.dyndns.org

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




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