determine hardware configuration using command line
dmidecode will tell you how the RAM etc. reports itself, by decoding information in a table. There's an Ubuntu package of it already too. The relevant parts of an example output might be:
Handle 0x0005, DMI type 5, 22 bytes
Memory Controller Information
Error Detecting Method: 64-bit ECC
Error Correcting Capabilities:
None
Supported Interleave: One-way Interleave
Current Interleave: One-way Interleave
Maximum Memory Module Size: 1024 MB
Maximum Total Memory Size: 3072 MB
Supported Speeds:
Other
Supported Memory Types:
Other
DIMM
SDRAM
Memory Module Voltage: 3.3 V
Associated Memory Slots: 3
0x0006
0x0007
0x0008
Enabled Error Correcting Capabilities:
Unknown
Handle 0x0006, DMI type 6, 12 bytes
Memory Module Information
Socket Designation: DIMM 1
Bank Connections: 0 1
Current Speed: Unknown
Type: Other DIMM SDRAM
Installed Size: 256 MB (Double-bank Connection)
Enabled Size: 256 MB (Double-bank Connection)
Error Status: OK
Be careful though, some BIOS implementations are faulty and/or outright lie in this data.
A tool named
lshw
can tell exactly what you need.
It actually uses dmidecode for the memory, but provides more information about the hardware in overall.
There are enough quirks (for example, in 18-bank HP xeon motherboards, you can only use 12 for unbuffered memory) that your best bet is really to find out the board and ask the manufacturer. For example, HP has a memory configuration website. Dmidecode and other software solutions don't tell the full story. Not even the BIOS can tell yo all of the pitfalls.