На грани отвала eMMC - или как работает Android на SD карте 2006 года
Всем привет! Наконец то дошли руки написать новую статью по моддингу очередного аппарата. Но в этот раз моддинг вынужденный. Кому интересно - залетайте. Фоток не будет - слишком мыльно получилось :(
Когда-то давно, я выполнив первый фриланс заказ, запилив гиперкеж на юнити заказал дешман смартфон с али. Основное требование было от 1гб ОЗУ и относительно свежий проц. Взор мой пал на Xgody Y20 - обычный одм смартфон, который собирается на условном фоксконе, а платформу делит с сотней таких же собратьев. Однако у него за 4 тысячи рублей был здоровый 6 дюймовый IPS дисплей, 1гб ОЗУ(с некоторой хитростью) и относительно бодрый 4х ядерник. Ходил я с ним не особо долго - где-то полгода, затем я ушатал прелоадер, забыв снять галку. Опыт с нормальными смартфонами на мтк, где родной прелоадер от родной ревизии всегда лежит в прошивке тогда расслабил мою бдительность. Прелоадер - первичный загрузчик процессоров MTK, который инициализирует eMMC(внутрення память) и ОЗУ. В прелоадере хранятся настройки EMI(тайминги, тип памяти и.т.д), и список поддерживаемых emmc. Поэтому аппарат стал кирпичем, и отправился на целый год на полку. Затем, кто-то откликнулся на зов и скинул прелоадер моей ревизии, который я успешно зашил и поднял смартфон... на первые минут 5. Телефон регулярно зависал во сне или в процессе работы с косяками на дисплее. Меня это смутило, я подумал возможно прелоадер с косячными настройками, так и забил на него и занялся другими мобилками. Сейчас руки добрались до него, и я нашел причину косяков - умирающая eMMC. Дело в чем - есть крупные заводы памяти - Hynix, Samsung, Kingston и.т.д. А есть мелкие - ForeSee, Barum и.т.д. И вот они считаются "отбраковкой" - они очень дешевые и у них очень низкий ресурс. Поэтому китайцы их и ставят в очень дешевые телефоны и особенно в планшеты - они ходят 4-5 месяцев, затем память надо накатывать другую. В моем девайсе оказалась именно флешка производства Leahkinn, тоже из той же оперы. И я понял что флешка дышит на ладан и осталось ей недолго, поэтому надо действовать. После смерти emmc переходит в режим readonly - с нее можно только что-то считать, и то не всегда. Система очевидно так работать не может.
Интереса ради я решил перекинуть Android на микросд флешку, и посмотреть буду ли зависания еще. При этом речь шла не только о перенесении раздела /system/, но и /data/ вместе с dalvik-cache. т.е я почти полностью(кроме /cache/) перенес систему на сдкарту, и без сдкарты смартфон не загрузится.
Процесс перенесения
Я не стал как-то скринить процесс перенесения системы на SD-карту. В целом вообще операция перенесения системы на SD карту ооочень редкая, максимум ее можно увидить в топиках на 4pda про какие нибудь легенадрные Samsung Galaxy Ace 2/Galaxy Ace/Galaxy Gio - где тупо поджимало место. Но в общем случае нужно распаковать родной бут, переразметить карту на два раздела, изменить точки монтирования в fstab с mmc, на микросд(предварительно подсмотрев физические имена разделов в системе), скопировать /system/ из emmc на первый раздел микросд(я делал это с dd, чтобы не ломать симлинки), собрать бут и прошить. По итогу система загружается - смотрит logcat, загрузка идет! Ждем минут 5 и видим рабочий стол.
Производительность
Микросд гораздо медленнее даже чем очень китайская emmc. Для сравнения - про-сть родной еммс была 60Мб/с, в то время как Microsd - 6Мб/c. Забавно, да? И на системе это тоже сказалось, однако всё не так критично.
Системе надо дать "пропердется" - затем всё работает очень шустро. Заходим в shell, пишем cat /proc/meminfo и узнаем что памяти у нас... 512МБ ОЗУ) Производитель нас надул, но зато подкинул своп на 300мб)) т.е ОЗУ как бы 1гб, только часть берется из eMMC - что гораздо медленнее) Анимации плавные, но на большинство действий в системе(открытие приложений, навигация в браузере) есть некоторая задержка. В целом, не доставляет особого дискомфорта, девайс все еще можно юзать. Браузер работает адекватно, не прям плавно - но ОК, музыку можно слушать, видео - вот тут не знаю честно) Как смартфон юзать его можно.
Проц весьма бодрый для андроида 5.1 - MT6580, вытягивает систему на все сто. На родной mmc смартфон вполне себе летал. Старые игры он тоже тянет нормально - Asphalt 8 не пойдет, но NFS MW 2012, более старые асфальты и.т.д легко. С таким то дисплеем(пусть и не высокого разрешения - 480x800) и IPS матрицей - играть норм.
Зачем это всё?
На этот раз я не буду говорить, что аппарат можно юзать как NAS файлопомойку, или как плеер, или консоль для старых эмуляторов - это итак очевидно. Но, увы, были аппараты с "слабой" памятью с завода - у которой был пониженный ресурс. И это были флагманы и просто дорогие модели. Например Samsung Galaxy S3 и Galaxy S4 Mini, которые в один момент просто зависали, и без перепайки флешки больше не работали. Если у вас есть девайс с слабой памятью, и некоторые навыки в сисадминстве - не поленитесь закинуть систему на микросд. Старые версии андроида вообще на них летают.