GPS(EM-406A) + SPI SD card module

My bad. I see the pins are numbered differently on the two schematics. The shield numbers the pins 1-8, and the Uno is 0-7. So you should be right.

Add:

** The pin 10 set as output (Not sure why, the SD example sketch says that it's needed)

Normally, the SD reader does use pin 10 (default slave select). But on the ethernet shield, the SD slave select pin was moved to pin 4 because pin 10 is used by the ethernet SPI interface. The pin 10 as an output on the Uno is required by the SPI. The default pin must remain an output for the SPI interface to work.

The comment in the source code (spi.cpp) states the default slave select (SS) must remain an output for the SPI to remain a master.

// Warning: if the SS pin ever becomes a LOW INPUT then SPI
// automatically switches to Slave, so the data direction of
// the SS pin MUST be kept as OUTPUT.