Next Previous Contents

4. Troubleshooting

4.1 Normal boot proceedure and terminology

This section describes the stages that the NetWinder goes through when booting up, from the moment the power is applied until the login prompt appears. It also covers the common things that can go wrong.

NeTTrom / BIOS

When power is first applied, the first block of flash memory (64k) gets mapped in and executed. The first visible action is a quick probe of video ram, to determine how much memory there is. The screen is then cleared and the firmware version number and build date are displayed. Any logos that might be found are also rendered, along with the NetWinder logo animation if it is enabled. Meanwhile, the remainder of flash memory is read into RAM and the code therein is decompressed. There is a red progress meter shown at the bottom of the screen during this time. When the decompression is completed successfully, the screen fades to black, then the decompressed code is executed.

If the progress meter stops, then flash memory has been corrupted (or bad data was written to it). The only way to boot the NetWinder in this case is to hook up a serial terminal and to download a kernel via the serial port. For more details, see section 3.7 of the Firmware-HOWTO.html.

Minikernel

The system now boots into a small linux kernel. The screen clears and reverts back to text mode. In older versions, the full boot-up messages were displayed as the minikernel boots. In recent versions, only selected messages are shown to describe the hardware found. This kernel has the ability to mount a root filesystem in a variety of ways, as well as to fetch the main kernel in a variety of ways. There is a `firmware control menu' available here.

Normally, the minikernel loads a real kernel from the hard disk. The parameters kerndev and kernfile specify the actual file in this case (default values are /dev/hda1 and /boot/vmlinux respectively).

If an invalid kernel filename is given, the firmware will stop with an error message. The root filesystem however is a different matter: since it is not mounted until the kernel boots, the firmware cannot report if an invalid value is specified. So you won't find out until later, when the kernel says VFS: Unable to mount root fs and proceeds to try booting from the non-existent floppy disk.

Second stage NeTTrom

After loading the main kernel into RAM, a reset is performed. Execution once again starts in the first block of flash code. However, this time it notices that its the second boot. Quickly, the RAM refresh is turned on and we jump directly to the main kernel.

If the main kernel is not bootable, the screen will stay dark at this point. This can also be caused by having inappropriate args passed from firmware to the main kernel (in particular, the amount of RAM on the system). Using old firmware with a new kernel will generally trigger this condition. Please see http://netwinder.org/~ralphs/compat.html for details on this.

Main kernel

The main kernel, generally loaded from disk, then goes through its normal boot sequence. Hardware is probled, devices are reported, and eventually the root filesystem gets mounted. This could fail, particularly if an NFS root is being used, for a variety of reasons.

Once the root filesystem is mounted, the kernel tries to start the init program, which will then run through the SysV-style init process. It will source /etc/inittab, which in turn sources /etc/rc.d/rc.sysinit and then all of the /etc/rcN.d/S* scripts (where N is the current runlevel, as defined in inittab). Finally, getty's are launched on the various virtual consoles.


Next Previous Contents