PXEboot problem - boots w/ 2.4.31, not 2.6.13.
I apologize in advance if I've posted this to the wrong forum.
I'm having difficulty upgrading a pxebooted (syslinux) linux kernel from
version 2.4.31 to 2.6.13. Any 2.4.x kernel works fine, but nothing in the
2.6.x line does.
Here's how my pxebooted system boots:
1. PXE client loaded off boot rom DHCPs, gets ip configuration,
TFTP server address, and pxelinux bootloader filename.
2. PXE client TFTPs pxelinux.0, loads it into memory and jumps to it.
3. pxelinux.0 TFTPs syslinux config file, reads it, TFTPs an initrd
image specified in the kernel append line, loads the kernel and the
initrd image into memory, does more magic, then boots the linux kernel.
4. The linux kernel mounts it's /usr filesystem off the exported
read-only Debian /usr filesystem served from an NFS server.
5. The linux kernel mounts the initrd image as it's root filesystem, then
execs /linuxrc. linuxrc, a bash script, creates a tmpfs filesystem,
mounts it, uncompresses/untars a tarball out of /usr called
root.tar.gz. This is the client's root filesystem.
6. pivot_root is called to make the new tmpfs (dynamically sizeable
ramdisk) the new root filesystem. It is mounted read-write.
7. Booting continues (init scripts are called, etc.).
Between steps six and seven, within the linuxrc script, the following
lines are run:
1. # Switch roots and run init
2. cd /ram
3. echo 1 > /ram/fastboot
4. pivot_root . initrd
5. exec sbin/init "$@" <> /dev/console 2>&1
After line five is run w/ kernel v. 2.6.13 it hangs with the
following message on the console:
/linuxrc: /dev/console: Device not configured
Kernel panic - not syncing: Attempted to kill init!
Both the `stub' dev filesystem in my initrd has a /dev/console and so
does the NFS mounted root filesystem. FWIW, I config'd the 2.6.13 kernel
using `make oldconfig' from my 2.4.31 kernel, all drivers are compiled
into the kernel, and the Debian distro is Sarge.