Установка на Nexus 7

Материал из ALT Linux Wiki
(перенаправлено с «Nexus7»)
Внимание! Касается варианта 2012 года, с 2013 google сменил чипсет tegra на qualcomm без линуксовых драйверов (и по слухам -- "рекомендовал" поставщикам подобных SoC таковые драйверы не поставлять).


SDK

Установите пакет android-tools[1]. Проверка[2]:

host# adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
xxxxxxxxxxxxxxxx        recovery

host$ adb shell
#

Разблокировка

  • запустите загрузчик (bootloader) Android. Для этого выключите устройство, затем зажмите кнопку уменьшения громкости и нажмите кнопку питания. Держите обе кнопки, пока не увидите интерфейс загрузчика.
  • подключите устройство к компьютеру с помощью USB-кабеля.
  • проверьте[3] список устройств с помощью утилиты fastboot:
$ sudo fastboot devices
1234567891234567        fastboot
  • разлочьте устройство — на его экране появится предупреждение о последствиях разблокировки и инструкция по её произведению. Внимание: данная операция удалит все персональные данные с устройства!
$ sudo fastboot oem unlock
(bootloader) erasing userdata...
(bootloader) Bootloader is unlocked now.
  • перезагрузите устройство:
$ sudo fastboot reboot-bootloader
rebooting into bootloader...

...или просто нажмите на кнопку питания.

Поддержка множественной загрузки

Внимание! Не исключена потеря работоспособности устройства, будьте бдительны и осторожны!


NB: опытным пользователям обычного Linux предстоит некоторый культурный шок от процедуры скачивания zip с файлообменника по ссылкам с форума и просмотра документации на youtube... YHBW

Дальнейшие действия предполагают выполнение в каталоге, где будут сохраняться загруженные файлы, которые могут пригодиться в будущем -- наверное, стоит создать отдельный каталог и перейти в него.

  • скачайте по ссылкам из этого сообщения:
    • MultiROM (например, multirom_v10_n7-signed.zip)
    • Modified recovery TWRP (например, TWRP_multirom_n7_20130416.img)
    • Kernel w/ kexec-hardboot patch (например, kernel_kexec_422.zip для Android 4.2.2 или kernel_kexec_42-2.zip для Android 4.2.1)
  • сверьте контрольные суммы с указанными в сообщении:
$ md5sum multirom_v*_n7-signed.zip TWRP_multirom_n7_*.img
bc79ae7e5e4f1543375e7870a1d9b909  multirom_v10_n7-signed.zip
fafa2d33f2d967b9c7eebc759c4e0462  TWRP_multirom_n7_20130416.img
  • прошейте TWRP_multirom_n7_дата.img:
$ sudo fastboot flash recovery TWRP_multirom_n7_дата.img
  • скопируйте multirom_vX_n7-signed.zip и kernel_kexec_4Y.zip на устройство:
$ sudo adb push multirom_vX_n7-signed.zip /data/media/0/Download/
$ sudo adb push kernel_kexec_4Y.zip /data/media/0/Download/
  • снова запустите на планшете загрузчик (bootloader), как описано выше
  • при помощи кнопок громкости и питания выберите Recovery и загрузите его
  • прошейте[4] multirom_vX_n7-signed.zip с помощью раздела Install меню TWRP — файл будет находиться в /data/media/0/Download/:
    • выбираем раздел Install
    • переходим из /sdcard в корень файловой системы при помощи пункта "Up a level"
    • идём в data ▷ media ▷ 0 ▷ Download
    • выбираем multirom_vX_n7-signed.zip
    • подтверждаем прошивание
  • аналогично прошейте новое ядро kernel_kexec_4Y.zip из того же каталога

Подготовка ROM info

Сохраните следующий текст в файл rom_info.txt, он подойдёт для всех образов ALT Linux для Nexus 7 и нужен для того, чтобы мультизагрузчик нашёл образ ОС:

type="kexec"
root_dir="%m/root"
kernel_path="%r/boot/vmlinuz"
initrd_path="%r/boot/initrd.img"
base_cmdline="%b root=%d rootflags=data=writeback,discard ro console=tty1 fbcon=map:0 fbcon=vc:1-4 fbcon=rotate:1"
dir_cmdline="rootsubdir=%s"

Установка образов

  • Скачайте отсюда, если хотите обновляться далее из Sisyphus, или здесь, если предпочитаете стабильный бранч p7, тарбол с подходящей вам средой окружения. Например (и далее), для образа с kde4 Sisyphus:
$ wget -c http://nightly.altlinux.org/sisyphus-arm/current/regular-nexus7-kde4-latest-armh.tar.gz
  • Залейте тарбол на устройство.
$ adb push regular-nexus7-kde4-latest-armh.tar.gz /data/media/0/multirom/roms/ 
  • Создайте каталог для инсталляции образа. Например, так:
$ adb shell mkdir -p /data/media/0/multirom/roms/kde4-latest/root
  • Распакуйте тарбол в только что созданный каталог:
$ adb shell tar -C /data/media/0/multirom/roms/kde4-latest/root -xf /data/media/0/multirom/roms/regular-nexus7-kde4-latest-armh.tar.gz
  • Залейте файл rom_info.txt:
$ adb push rom_info.txt /data/media/0/multirom/roms/kde4-latest/

Возможно держать несколько корней параллельно в разных каталогах.

Загрузка ALT Linux

После перезагрузки должно появиться меню MultiROM, где возможно выбрать раздел Internal и в нём, например. kde4-latest (имена пунктов совпадают с именами каталогов, в которых расположены развёрнутые чруты). Остаётся нажать Boot :)

Устранение неисправностей

Ядро загружается, при проверке корневой ФС происходит сбой

К сожалению, на разных устройствах нужный раздел может оказаться /dev/mmcblk0p9 либо /dev/mmcblk0p10; в регулярных сборках за апрель-май 2013 предполагается первый вариант, если при загрузке образа наблюдается подобное сообщение:

*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.

— придётся скорректировать /etc/fstab в чруте. Для этого:

  • принудительно выключите устройство десятисекундным удержанием кнопки питания
  • загрузитесь в Recovery
  • подключите USB-шнур к компьютеру
  • выполните команду:
$ sudo adb shell sed -i 's/blk0p9/blk0p10/' /data/media/0/multirom/roms/kde4-latest/root/etc/fstab
  • ...и можно загружаться.

root login

Пароли для root и пользователя altlinux заданы в mkimage-profiles:

root:altlinux
altlinux:root

Рекомендуется сменить их на свои. При изготовлении производных сборок может пригодиться alterator-setup, позволяющий организовать шаг обязательной настройки этих параметров, и соответствующая фича use/oem в m-p.

Включение USB Debugging

http://www.youtube.com/watch?v=mp07dPusJNA

Примечания

  1. ...либо скачайте и разверните ADT bundle
  2. если adb "задумывается" и сообщает "no permissions", запустите его один раз с правами root, после запуска фонового процесса с ним можно работать с пользовательскими правами
  3. Здесь и далее вывод утилит может приводиться в сокращённом виде
  4. эти две операции производятся на самом Nexus