Где-то с неделю назад мой смартфон под Cyanogenmod 7 совершил ритуальное самоубийство...

А дело было так: я зачем-то полез в настройки разработчика, телефон подтормозил, и я случайно попал пальцем по настройке "show running processes". Телефону этого хватило, чтобы уйти в reboot и никогда из него не выйти. Он догружался до этапа ввода pin-кода, и перезагружался снова и снова. Попытки обогнать падающий процесс и снять настройку успехом не увенчались.

Только потом я понял, что у меня есть shell доступ к телефону, так как adb я не выключал.

Google помочь с ходу не смог, пока я не нашёл, случайно, вот этот текст: http://forum.xda-developers.com/showpost.php?p=10695052.

Дальнейшее было делом техники:

sqlite3 /data/data/com.android.providers.settings/databases/settings.db
# sqlite3 /data/data/com.android.providers.settings/databases/settings.db
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE bluetooth_devices (_id INTEGER PRIMARY KEY,name TEXT,addr TEXT,channel INTEGER,type INTEGER);
CREATE TABLE bookmarks (_id INTEGER PRIMARY KEY,title TEXT,folder TEXT,intent TEXT,shortcut INTEGER,ordering INTEGER);
CREATE TABLE secure (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
CREATE INDEX bookmarksIndex1 ON bookmarks (folder);
CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut);
CREATE INDEX secureIndex1 ON secure (name);
CREATE INDEX systemIndex1 ON system (name);
sqlite> select * from system where name = "show_processes";
1376|show_processes|0
sqlite> update system set value = 0 where _id = 1376;
sqlite> # 

И система была вылечена.

(Вру, на самом деле пришлось вытащить карточку памяти, так как система была на ней и править это руками с картридера. Дело в том, что телефон упорно жаловался на то что он не может записать эту базу данных.)