On 08/01/08 15:46, Åsmund Grammeltvedt wrote:
> On Tuesday 08 January 2008 15:34:09 lurker wrote:
>> Greetings,
>>
>> Often when I build systems with catalyst I encounter the following
>>
>> kernel freeze after the boot loader has completed:
>>> [ ... lots of kernel loading stuff which seems ok ... ]
>>> Freeing unused kernel memory: 172k freed
>>> request_module: runaway loop modprobe binfmt-0000
>>> request_module: runaway loop modprobe binfmt-0000
>>> request_module: runaway loop modprobe binfmt-0000
>>> request_module: runaway loop modprobe binfmt-0000
>>> request_module: runaway loop modprobe binfmt-0000
> 
> I had an issue with the same symptoms. It turned out that after some builds, 
> the initramfs would contain empty files instead of links to busybox.
> 
> In my case, the only way I could get it to work consistently was to patch 
> genkernel to use symbolic links instead, when setting up the initramfs.
> 

Now I'm constantly plagued by this hickup. I did my homework and
investigated this in depth.

I'm not sure this is completely the same as what Åsmund described
elsewhere in this thread. For me the hard links in /bin (of the
initramfs) to /bin/busybox works. The problem is that /bin/busybox is empty.

I dived into the code, focusing on how genkernel and catalyst works
together, and especially how genkernel generate the initramfs. After
patching in some primitive print_info debugging I discovered that
genkernel fails to add busybox with cpio (this is with genkernel-3.4.9
and catalyst-2.0.6_pre6):

In append_busybox() in genkernel-3.4.9/gen_initramfs.sh:36, busybox is
appended to the initramfs on line 101, which looks like this:

find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}"

I added debug prints of the size of the current initramfs (i.e. ${CPIO})
both before and after the above command, and it turns out that only 2048
bytes of data is added. Since the busybox executable that _should_ be
added at that time is 1080 Kb big, it's obviously here everything goes
wrong which was confirmed by extracting it. /bin/busybox is just and
empty executable. This happens no matter if I use kerncache or not.
Also, I have confirmed that there is a good busybox executable in ./bin
from the directory the above command runs from.

But why? When I do the exact same series of commands manually myself it
works. Obviously most people doesn't experience this problem either so
it has to be something with my system. Add to this the randomness of the
problem, that it works sometimes.

I would _really_ appreciate any input on this. I will gladly do any sort
of debugging if you just give my a few pointers on where to look and
what to do cause I'm completely lost now.

Also, my system runs stable amd64 Gentoo, but I run catalyst in a i686
chroot to protect my main system. Could that have anything to do with this?

-- 
gentoo-catalyst@lists.gentoo.org mailing list

Reply via email to