Using PXE+GRUB to boot Linux on a Thinkpad T20

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

 



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
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux