[GSoC] beastie.4th problem
Patrick Georgi
patrick.georgi at coresystems.de
Tue Aug 19 02:24:22 PDT 2008
Louisa Luciani schrieb:
> + dup bootsmpkey @ = if
> + s" /kernel.smp/modules" s" module_path" setenv
> + s" /kernel.smp/kernel" boot
> + then
> + dup bootsmpnoapickey @ = if
> + s" /kernel.smp/modules" s" module_path" setenv
> + 0 s" /kernel.smp/kernel.noapic" boot
> + then
what works for me is:
0 1 unload drop
s" kernel.foo" s" kernel" setenv
1 boot
seems like the "kernel" variable can only be changed if the kernel is
unloaded, hence the "unload" directive. boot automatically loads the
kernel based on that variable if no kernel is loaded already.
I'm not sure if the constants in front of "unload" are strictly
necessary, I merely copied that line from somewhere else.
What you were definitely missing was the "interpreted or not" flag on
the top-of-stack when entering boot: the first line of boot starts with
0= if ( interpreted ) .... then
The comment thankfully gives a hint what is tested here. The point is,
you ran boot with the following stack layout: (addr/len is what s" returns)
address-of-string length-of-string
where boot expects (unfortunately that isn't documented, so that's
reconstructed from the code):
addr1 len1 .. addrN lenN N interpreted-flag
with N the number of addr/len pairs.
If addrN/lenN points to a string that doesn't start with "-", it's
considered a path (to kernel and modules, or filename of the kernel, so
the following might work, too - warning: untested!):
s" /kernel.smp/kernel.noapic" 1 1 boot
Regards,
Patrick Georgi
More information about the Users
mailing list