Posted by: Sue Loh
Today I was describing what "warm boot," "cold boot," and "clean boot" mean to someone, and it turned out that it was a more complicated topic to understand than I had realized. So I figured I should share it. Luckily that "someone" was on the documentation team, so I expect this information will make its way into our docs too! Let’s see if I can make it clear. It’s not a trivial description.
Here’s part of the terminology problem. The word “RAM” is overloaded.
Here is what is technically going on underneath. This is why we distinguish between 3 boots instead of 2:
What this maps to in terms of data persistence is,
An end user should only care about two kinds of boots: “boots that persist their data” and “boots that wipe their data.” An OEM may care about the 3 kinds of boots, to make sure that their device maps the underneath stuff to the 2 types of boots users care about.
In Windows Mobile before 5.0, the data was stored in the object store. So warm boots kept user data alive, and cold boots lost their data. So cold boots were the same as clean boots.
For Windows Mobile 5.0, we switched from storing data in the object store to storing the data in the persistent store. And switched from warm booting to cold booting. 99.9% of the time Windows Mobile 5.0 devices cold boot. If for some reason some awful problem has occurred and they need to wipe all of their data back to a factory reset, then they might pull some kind of CTRL-ALT-DELETE 3-finger salute to make the device clean boot. (There is no standard for such a thing, and of course CTRL, ALT, and DELETE don’t exist on a WM device.) I think most OEMs will build in a way to wipe if necessary. Otherwise the device will clean-boot on its very first boot, and cold boot forever after that unless the user does something special to force another clean boot. To a user it will look exactly the same as warm boots did back in the pre-Magneto days, because their data persists.
For general embedded (Windows CE devices that are not running Windows Mobile), all three options (clean, cold, warm) are still possible. It all comes down to whether there is any user data stored in the object store. If not, then they are the same as Windows Mobile 5.0, and only ever clean-boot or cold-boot. If yes, then they should be the same as Windows Mobile before 5.0, and only ever clean-boot or warm-boot. If they do all 3 kinds of boots then they have a wacky device and may be confused.
When I say “persistent” I just mean stuff that doesn’t go away when you turn off power. So removable storage cards also count as persistent. But you usually don’t – actually never, not without some serious finagling – put the registry onto a storage card, or use it as the root file system for your device. Because if you remove the card, the device can’t function. The “persistent store” is generally a non-removable storage device. I can imagine people doing crazy things like swap in a different flash card and get a different persistent store, but that is not for the faint of heart.
I’d expect a clean boot not to wipe removable storage, but in some cases people might want to. For example if they want to delete all data from the device for security purposes, to prevent it from falling into the wrong hands. In that case you might want to also wipe the storage card, if there was one. That is more of a special case though. Typically when we care about clean boot, we care about whether all the settings and files that the OS uses go back to factory-default.
When you clean-boot, you wipe all registry changes, total. Back to what was built into ROM when the device left the factory floor. Actually with Image Update that changes a bit, because Image Update updates the ROM. So to be truly correct, I can only say that clean-boot goes back to what is built into ROM.