Does it make sense to put your operating system on a SD card?

A friend suggested putting the whole operating system on a SD card, arguing that access time delays where much shorter than a regular hard drive, which needs to spin up first.

Wikipedia, however, states that the slowest SATA provides a 1.5 gigabit/s read rate (here), when the fastest SD card permits 90 megabyte/s (there). Even if the 2 read speeds seems to be no match, nothing is said about the delay before the data is actually read.

Any idea?


Actually there is another important parameter that is faster on SD than a HDD, it is called "seek time", it means the time to a information be found and read from your device.

Considering that the boot phase of a operational system reads a lot(really lot) of small files that could be spread on HDD area, SD gets it main advantage because it is based on a random-access memory(it means that you can access any region of the memmory with the same time, not as a HDD where a phisical sharp nedle must seek the disk surface for the information, spending a lot of seek time).

It would improve your OS speed in many ways(boot time for example), but keep in mind that it is still not possible to do this on Windows(it will only be available on Windows 8) you may only test and use it on Linux distributions.

Also, if you want to test reading speed or the seek time of a device(HDD or SD) I wuld recommend you to use HDTune. And if you want to use a SD card to use your OS, be aware of it's class(the higher it is, faster will be read and seek time on it)


You may also want to look at hybrid drives which have hybrid platter/SSD mechanisms, giving you much of the added speed without all the cost.

Downsides with SSD:

SSD blocks can only be written a fixed number of times, and your OS page file had a lot of writes. The SSD electronics scatter these writes to different blocks to help this a bit, but overall this needs to be thought of.

SSDs are also a lot more expensive byte for byte, relative to hard drive platters. If you can get much of the performance boost with a hybrid drive, you'll save some cash.


I had Linux running from an 8GB SD card on a GuruPlug. The GuruPlug exposes the SD card slot as a permanently connected USB mass storage device.

Worked great for about a year of near continuous uptime (the card was already a year old by then, being previously and occasionally used in a Blackberry - only interruptions were due to one extended power outage and several kernel upgrades), then the card died suddenly without warning. The GuruPlug runs hot and I'm sure that didn't help the card's longevity.

As far as the actual operation, when a lot of writing was going on to the SD card at times "disk" I/O would tend to be unresponsive.

Trying this on actual PCs with USB to SD card readers did not yield good results on some machines. I would run into the problem where suddenly the SD card would become disconnected and Linux would find its root volume and all other volumes based on partitions of that SD card unexpectedly gone. Tended to be an issue on old Dell machines but I haven't done any scientific testing to confirm for sure.


tl;dr the fastest SD cards are just catching up to standard 7200rpm spinning hard drives performance-wise. If you're used to SSD performance, prepare to be disappointed. Heat is still going to be the biggest killer, and SD cards are neither rated nor warrantied for constant use.

With some of the newer SD cards approaching 95 MBps, it's becoming more feasible though, and a lot of embeddable computers (e.g. Raspberry Pi) usually rely on SD cards for their OS. If you had a laptop with one drive that you wanted to use as a home partition, you could easily swap through multiple Linux distros via the SSD card while still maintaining a majority of your settings between them.

Mathwise, keep in mind 1 Gbps (gigabit per second) is the equivalent of 125 MBps (megabyte per second) -- 1 byte consists of 8 individual bits grouped together, which can represent 256 different binary values.

You note that the specs for SATA (revision 1) are a 1.5 Gbps data link (so, around 185 MBps). That's the theoretical maximum that a drive would have to saturate before the link becomes the bottleneck. Most 7200rpm drives do fairly well to hit 100 MBps, while SSDs are roughly half an order to a full order of magnitude better (500 MBps - 1 GBps).

That's why when SATA III got released, SSDs were still in their infancy, and spinning drives were still king, everybody scoffed since the max transfer rate was 600 MBps and seemed like overkill. Now we're starting to see the generation of SSDs that are saturating that -- what a time to be alive :)


Generally not. It's no faster when it works, and it isn't reliable enough for day-to-day use. It makes sense only for recovery or installation, or other occasional use.

The reason is that SD cards were always designed for 'tape like' use - as in digital cameras, where the data is copied on in one big transfer, or one transfer per file until the whole card is full, and later all copied off at once.

Even with the faster transfer speeds becoming available, the technology that SD cards are based on: "flash-EEPROM memory" - Isn't a very good fit for the random access and piece-wise updates that makes up the majority of use of an operating system disk.

It's actually quite unreliable, accessed directly. The data need to have 'error correction coding' applied because individual bits fail quite often. And blocks of data even need to be 'whitened / scrambled', because any big clear patterns in the data - like many nearby '1's or '0's - will cause flash-eeprom to malfunction.

SD cards deal with the above so that the SD card at least appears reliable -- the data is written down with some redundancy, and it's checked, corrected and unscrambled when it's accessed before it's sent to the computer.

But even reading one random piece of the data from a flash chip can cause surrounding stored data to become corrupt. Flash memory controllers thus have to re-write the surrounding data again, somewhere else, so it doesn't get lost -- and this happens even if the card is set 'read only'.

Worse, each individual flash memory cell can only be written to a limited number of times -- so the controller also has to spread the writes across the disk -- called 'wear levelling' -- so that any one part doesn't wear out too soon.

So now consider what happens with an OS disk.

Just booting up off it reads a bunch of little files which are spread here there and everywhere across the chip -- and generates a heap of extra writes which are 'invisible' to the computer, even if the "read only" switch is set on the SD card!

There's also no way in the SD card electrical connection specification for the SD card to tell the computer "I'm busy writing, please don't power off yet" -- or even for the computer to warn the SD card "we're about to shut down, get ready".

So even with a proper shutdown, the operating system can still be corrupted!

SSD's get around this by having much better controllers, and more flash chips. They don't connect via the SD card interface, so there are ways they can signal to the computer that they're not finished, and disks are always given a warning by the computer to get ready for power down.

Enterprise-grade SSD's also often have enough power storage built in to give them an extra fraction of a second to finish what they were doing even if power is suddenly unplugged -- but there literally isn't space in an SD card for this, much less a mini- or micro-SD.

Some small computers have begun using even micro SD cards for their OS anyway -- the Raspberry Pi comes to mind in particular -- but this is done purely because it's so cheap.

It's not very reliable - Expect OS boot failure after only a few hundred boots from any one SD card.

You are much better off using an SSD -- even a USB connected SSD -- than an SD card.

Also, consider the distinction between SD cards and SSD's also applies to most 'thumbdrives' and USB SSD's. Most cheap USB sticks use exactly the same chips as SD cards do. You should buy one meant for the job if you want to boot off it day-to-day.

You can get SBC's like the Raspberry Pi, but that come with 'built-in flash' or an 'eMMC card slot'. Both of which are very much like a small cheap SSD, and better than an SD card for booting from.

You can also boot a Raspberry Pi from a USB card, or just keep your root partition (the OS disk) of the system separate from the boot partition -- on a different USB spinning or solid state disk, or over the network on a nfs server.

It's ok to leave the /boot partition on an SD card, since it only gets read once, in one burst, at boot time -- to read the linux kernel before it is loaded.