Ethernet & SD - SD working once.

#1 - The board you select on the IDE determines what pins are SPI lines. However, on newer ethernet shields, the digital pins are not used for the ethernet shield/SD interfaces. The ICSP pins are used.

#2 - Only if you did not initialize them correctly as suggested above.

#3 - HIGH = disabled, LOW = enabled

#4 - If the default SS pin is not set to OUTPUT, the SPI becomes a slave rather than master.

#5 - and it does, trust me. The SS pins are handled in the low level library routines if the setup was correct. Here is the code for the w5100 write routine. The setSS enables the SPI, and resetSS disables the SPI. The SD library function operates the same way.

uint8_t W5100Class::write(uint16_t _addr, uint8_t _data)
{
  setSS();  
  SPI.transfer(0xF0);
  SPI.transfer(_addr >> 8);
  SPI.transfer(_addr & 0xFF);
  SPI.transfer(_data);
  resetSS();
  return 1;
}