bug-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Using PXE+GRUB to boot Linux on a Thinkpad T20


From: Patrick J. LoPresti
Subject: Using PXE+GRUB to boot Linux on a Thinkpad T20
Date: 29 Jul 2002 12:25:40 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Executive summary: I need some help from a Linux PCI/CardBus (or
possibly 3c59x) wizard.

I am trying to use PXE to boot a diskless Linux system on an IBM
Thinkpad T20 laptop.  Using pxegrub, I have a diskless Linux system
booting fine on our desktop machines, but I have hit some snags with
the T20.

First, the T20's onboard Ethernet card is a 3com 5c556B, which the
pxegrub network drivers do not support.  But by comparing the Linux
3c59x driver with the GRUB 3c50x driver, I was able to patch the
latter to work on the T20.

It works well enough to load menu.lst, read a kernel and initrd, boot
the kernel, mount the initrd, and give me a shell prompt, all from the
network alone.  What a nice feeling.

The real problem happens when I then try to start the network in
Linux.  When I load the Linux 3c59x driver, it (correctly) probes the
card as a 3c556B, but then prints this warning:

  ***WARNING*** No MII transceivers found!

All attempts to access the network fail, printing messages like these:

  eth0: command 0x3002 did not complete! Status=0xffff

"ifconfig eth0" shows that the driver thinks the MAC address of the
card is FF:FF:FF:FF:FF:FF, which is clearly wrong.

Note that the exact same kernel (2.4.18) and modules can access the
network just fine when I boot them from a floppy or a CD-ROM.  So this
is definitely some bad interaction between the network boot and the
the Linux drivers.  (Other kernels, like 2.2.21, behave similarly;
they work fine when booted locally, but when loaded by pxegrub they
complain while probing the network.)

I actually suspect the issue is with the Linux PCI support and not the
3c59x driver.  When I boot a working kernel (any kernel) on this
laptop, it shows the Ethernet card to reside at I/O address 0x1800.
But when I do the network boot, the 3c59x driver reports the I/O
address as 0x1400 (or 0x5800 in Linux 2.2.21).  Given that, and the
bogus MAC address, and the driver's inability to talk to the card, I
am guessing that the I/O address is just wrong.

At this point, I am hoping some Linux PCI/CardBus/3c59x wizard will be
kind enough to offer some assistance in tracking this down.  I am
pretty good at gathering information, but I do not know enough about
PCI or the Linux implementation to figure this out by myself.

Thanks!

 - Pat



reply via email to

[Prev in Thread] Current Thread [Next in Thread]