updating to 7.1 with a small root slice

Michael Powell nightrecon at verizon.net
Wed Jan 14 07:25:16 PST 2009


Zbigniew Szalbot wrote:

> Hello,
> 
> On Wed, Jan 14, 2009 at 08:13, Zbigniew Szalbot <zszalbot at gmail.com>
> wrote:
>> Dear all,
>>
>> I am looking for your advice. Due to a very stupid design decision my
>> / slice is only 256 MB. It seems too little so whenever I compile a
> Actually it is 242MB

I have one box with only 200MB for /. I had already displaced out
GENERIC with highly stripped down kernel which made for space. I
did at one point run out of space and the stuff mentioned further
down saved the day for me.

>> new kernel, I need to move the kernel.old to a different slice to
>> install the new one. Then I pray, hope for the best and reboot.
>> However, I read that if I want to update to 7.1 I will need to boot a
>> generic kernel at some point. What option do I have?
> 
> I found the problem. My oh my - I had
> makeoptions    DEBUG=-g
> uncommented.
> 
> When I commented it out, the new compiled kernel is only 32MB whereas
> the old one was 128 or so MB.
> 
> So I am happy about it now. However, I do not have a GENERIC kernel in
> /boot and I will need it to do nextboot when I upgrade to 7.1.
> 
> I thought I'd use the procedure described here
> http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/updating-upgrading-freebsdupdate.html
> to compile a generic kernel
> 
> # cd /usr/src
> # env DESTDIR=/boot/GENERIC make kernel
> # mv /boot/GENERIC/boot/kernel/* /boot/GENERIC
> # rm -rf /boot/GENERIC/boot

Never tried any of that. I do the make buildkernel KERNCONF=xxxxxxx.
Realize you should not be running out of space on / during this
procedure as the build is occurring in /usr/obj. You will only run
out of space on / if the make installkernel KERNCONF=xxxxxx won't
fit.

> When I make the GENERIC kernel, I again run out of space (I still have
> about 60MB free in /). So I guess the system is probably using the
> same "makeoptions    DEBUG=-g" settings for the generic kernel. So my
> question is where is the kernel conf file based on which the generic
> kernel is compiled?
> 
> Is it in /usr/src/sys/i386/conf/GENERIC ?
> 
Yes - and it has in it by default:

makeoptions	DEBUG=-g	# Build kernel with gdb(1) debug symbols

So if you're not building a developer kernel you can comment this out. 

I don't remember for sure if this truly matters, or not, but I seem to
recall the size of my kernel directories decreased dramatically when I
placed  STRIP= -s in /etc/make.conf. It seemed a favorable thing to do
once upon a time and it's been there ever since. I thought the system
variables had migrated to src.conf and the make.conf only applied to ports.

In addition I also have in make.conf NO_PROFILE= true and in src.conf is
WITHOUT_PROFILE= true. My stripped down kernels are 3.1MB for a 1 NIC
driver and 3.4MB for a 2 NIC kernel. Of course, you won't get these small
sizes for GENERIC!

-Mike





More information about the freebsd-questions mailing list