This chapter documents some known issues with the kernels, particularly the recent ones. I don't know how useful it will be to most readers, but for lack of a better place, this info is here. It also tells you how to get a cutting-edge(tm) kernel from our CVS repository.
Those of you who really want to live on the cutting edge can retreive the latest kernel from the CVS repository on netwinder.org (module name is `armlinux'). This source is not guaranteed to be stable or even buildable, and it could have lots of nasty side-effects (for example, if you tried to update your flash using version 2.2.7, it would erase the first block and then crash - leaving the machine unbootable). Please don't bug the developers about these kernels - use an officially blessed kernel!
The `armlinux' module contains two main branches - one is called
`armlinux-2_2' and holds the 2.2.x kernel development, while
the other (main) branch contains 2.3.x development. To get the latest
stable 2.2.x kernel you'd use these commands in
export CVSROOT=:pserver:USERID@netwinder.org:/cvs cvs login ... enter your password for netwinder.org ... cvs co -rarmlinux-2_2 armlinux
-rarmlinux-2_2 tag to retrieve the current 2.3.x kernel
If you don't have a developer account, you can register for one on the web site. (In the future we'll use SSH for write-access and there will be an anonymous pserver account for retrievals, right now you have to register).
The 2.2 kernel series, and for that matter, the 2.0.35 series after 99/01/21, use a new method for receiving boot-time arguments. In the old days, all the settings (such as which device to use for root filesystem) were passed on a command line - just a plain text string. This is a pain to parse and as the number of options grows, so must the text buffer. The new method defines a structure where the data can be encoded in binary (rather than plain text) which makes parsing much quicker and there's lots of room to grow. Like it or not this "param struct" is here to stay.
What this means practically is that you need to run firmware which knows of the parameter structure, and passes a properly initialized structure to the main kernel. If you use older firmware, the kernel will not recognize the structure, and will revert to a default command line instead. Most of the time the default command line isn't right (for example, it might say you only have 16 MB of RAM, when you have more, or it might try to boot from the wrong partition). The values you select in the firmware won't get passed to the kernel in this case.
So which firmware should you use? Something after 2.0.8h, such as 2.1.16 or 2.1.24, are the recommended choices. Have a look at http://www.netwinder.org/~ralphs/compat.html for more details on the various firmware versions.
If you install a 2.2 kernel onto an older build (dm-12 for example), a
number of user-space services won't work right anymore. First off, consult
Documentation/Changes in the kernel source - it points out
most of the things that will go wrong.
Many of the daemons (ftp, telnet, etc) need to be recompiled before they work. Some need to be updated to newer versions. It's kind of ugly... Much easier would be to get the current developer disk image (dm-3.1-15) or the base image (base-3.1-15) and install that instead.
Older X servers won't run with the 2.2 kernel. A more recent version of the
SVGA server can be fetched from netwinder.org, and you'll need to create a
/dev/fb0current device node with major=29, minor=0.
Alternatively, the old XF68_FB server can be used as well (just remember
that it pretty much ignores etc/XF86Config).
/dev entries must be updated. Most notably, tty and pty
entires are needed so that remote login (and xterms) can run. Take a newer
/dev/MAKEDEV script and run it on the NetWinder.
Ultimately, I hope to have convinced you to just download the dm-3.1-15 image if you've still got a system with kernel-2.0.x on it. If you cannot download it, you can send me a few dollars to cover my costs and I will send you a CD (please, only ask if you have no other way of getting it!).
If you see a lot of the above message in your
file, rest assured there is nothing wrong. It's a piece of debugging code
that I forgot to take out, because I thought it wouldn't happen very often.
Turns out that any decent amount of ethernet traffic causes the error. It
will go away in a future version.
This is a warning that Russell put in to try and track a suspected bug in the CPU. Both messages refer to the same condition; it was reworded because too many people got worried about the "buggy" part of it. Russell has a nice description on his website, and the error message will direct you there if you see it. Essentually, the CPU is flagging an error condition that it can't possibly have encountered, so the suspicion is that it's a bug in the silicon.
The (suspected) bug is harmless (other than the message) and will not cause any programs to burst into flames or otherwise fail. If you see the message (especially, if you can reliably reproduce it) then please mail the details to Russell and myself. Otherwise just ignore the message if you see it.
trying to free non-small page
This message occurs frequently upon shutdown of an officeserver system running the latest 2.2.13 kernel. It's related to virtual memory system, and it kind of scares me, but so far I've not been able to track down what it really means. I've also not seen any adverse effects (it only happens on shutdown, and the system starts up fine despite it). Hopefully it will just "go away"...
task can't get free slot
This message is generated by the NFS subsystem from time to time (usually when there is or has been extended periods of network trouble). Not sure what to do about it at this time.