Setting up Samsung 840 EVO SSDs on Linux

The Samsung 840 EVO SSD is a bit tricky to set up so here are some notes on the process.

Update the firmware

I first tried creating a bootable USB stick using Samsung’s .iso and unetbootin. This didn’t work, it threw an error “PANIC: mcb chain corrupted”. Then I found a great post which described how to use the standard FreeDOS to get it to work. After the update was complete the application warned “FIRMWARE UPDATE UNSUCCESSFUL!!!” although it had actually worked correctly 😀

Partition alignment

Apparently, it’s quite important to align the partitions, especially on SSDs. If it’s wrong the disks can perform poorly and wear out more quickly. This disk uses a new technology (TLC) which has an unusual erase block size of 1536kb. I can’t find anywhere online which explicitly says to use that as the value for the sector boundary, but I guess it would be OK.

I did find a question about aligning the partitions for these disks which explains how to use gdisk to do it. The answer suggests to use the lowest common multiple of 1.5 and 2 to be on the safe side: 6MiB. In brief, you use `gdisk /dev/sdX`, hit “X” for expert mode, “L” to set the sector alignment, and use 6144 as the value. Hit “m” to return to normal mode. Now “p” will show “Partitions will be aligned on 6144-sector boundaries” so you’re ready to create new partitions.

I also created a BIOS boot partition, since my machine uses BIOS rather than UEFI following the instructions from the Arch Linux wiki.