I also read this at Ladyada.
First of all, use the newest Arduino 1.0.1, and use the examples provided with it.
And I initialize the SD card before I initialize the Ethernet W5100.
So this is my code:
// With the ethernet shield, the chip select for the
// SD card is not SS (in use for ethernet), but pin 4.
const int chipSelectSD = 4;
...
// make sure that the default chip select pin is set to
// output for the SD, even if you don't use it:
pinMode(10, OUTPUT);
// According to this:
// http://www.ladyada.net/learn/arduino/ethfiles.html
// The SS (pin 10) has to be high to disable the W5100
digitalWrite(10, HIGH);
// Initializing the SD before the ethernet W5100.
if (!SD.begin(chipSelectSD))
{
// The SD card can't be found.
Serial.println(F("SD.begin failed"));
}
Ethernet.begin ...
server.begin ....
So I don't use the "card.init", but I use SD.open().