"Прошивка телефона Nokia N9 на сток в Docker"
Mon 10 November 2014
Сам по себе процес прошивки телефона на родную систему весьма тривиален, но в связи с тем, что больше не существует команды разработчиков ОС Meego, многие ресурсы, содержащие прошивки и программы, были заброшены. Я хочу восстановить справедливость и создать русскоязычный гайд по полному сбросу прошивки hartmattan на дефолтное состояние со всеми необходимыми ресурсами.
Во-первых, нам потребуется скачать саму прошивку. Я нашел её на сайте mrcrab. В скобках указан ID вашего устройства, и для того, чтобы найти вашу модель, нужно вытащить крышку с сим-картой. На обратной стороне вы найдёте заветные буквы и цифры. В моём случае это модель RM-696 NDT RUSSIA BLACK 16GB (059J208).
Чтобы прошить телефон используется утилита flasher (В ссылке указан DEB пакет, позже я покажу, как его распокавать и запустить бинарник).
Собирать и прошивать мы будем в контейнере docker, хостовая ОС ArchLinux, в качестве гостя я использовал CentOS (на данный момент ветка el7). В конце статьи я приведу пример готового Dockerfile, а пока, чтобы сохранить историю моих действий, буду производить их непосредственно в гостевой системе последовательно.
Все необходимые пакеты на момент запуска контейнера у нас есть, приступим:
Предположим, что прошивка и flasher будут лежать у нас в родительской системе в папке /tmp/flasher и запускаем контейнер
docker run -i -t --name flasher --privileged -v /dev/bus/usb:/dev/bus/usb -v /tmp/flasher/:/mnt/flasher centos /bin/bash
Теперь нужно установить все необходимые пакеты
yum install -y libusb glibc tar kmod usbutils
Распаковываем DEB пакет
cd /mnt/flasher
ar vx flasher_3.12.1_amd64.deb
tar xzvf data.tar.gz
После чего будет доступен бинарный файл ./usr/bin/flasher
# ./usr/bin/flasher -V
flasher 3.12.1 (Oct 5 2011) Harmattan
WARNING: This tool is intended for professional use only. Using it may result
in permanently damaging your device or losing the warranty.
На этом установка flasher закончена и можно приступать к прошивке.
Подключите ваш телефон или кирпич, если вас постигла неудача, как меня, к порту USB. В консоли докера запустите следующую команду
./usr/bin/flasher -i
И принудительно выключаем телефон по питанию (удержанием кнопки, если кто не знал)
В результате должны увидеть похожую картину
./usr/bin/flasher -i
flasher 3.12.1 (Oct 5 2011) Harmattan
WARNING: This tool is intended for professional use only. Using it may result
in permanently damaging your device or losing the warranty.
Suitable USB interface (bootloader/phonet) not found, waiting...
USB device found at bus 002, device address 033.
Device identifier: 357923045331966 (SN: N/A)
Found device RM-696, hardware revision 1603
NOLO version 2.3.6
Version of 'sw-release': DFL61_HARMATTAN_40.2012.21-3_PR_001
Success
Настоятельно рекомендую не приступать к следующему шагу, пока не добьётесь результата с командой выше. Это будет показателем того, что устройство корректно определилось и готово принять свежий дамп прошивки.
Как и с командой выше, аналогично запускаем прошивку телефона
FIRMWARE="DFL61_HARMATTAN_40.2012.21-3_PR_LEGACY_001-OEM1-958_ARM.bin" #тут укажите вашу прошивку
./usr/bin/flasher -F $FIRMWARE -f
Через некоторое время, если в консоли не будет каких-либо ошибок, телефон отключится, и его можно будет изъять из порта. После включения вы увидите свежую инсталяцию Meego.
Возможные ошибки:
Error claiming USB interface: Device or resource busy
Ядро некорректно определило и подключило наш кирпичик. Решение простое: отключить нафиг модули ядра
rmmmod cdc_phonet phonet
Или отключить их загрузку в modprobe.d
#cat /etc/modprobe.d/50-blacklist.conf
blacklist cdc_phonet
blacklist phonet