Как получить рут-доступ с помощью Magisk


На многих ТВ-боксах с Android отсутствуют штатные средства для предоставления рут-прав, поэтому для них актуально использование технологиии Magisk, предполагающей установку на устройстве приложения Magisk, а также patching (исправление, модификацию) boot.img - загрузочного образа Android. Обычно эту процедуру условно называют "пропатчить ядро".

Образ boot.img содержит ядро (kernel) и виртуальный загрузочный диск (ramdisk).

Существует достаточно много способов для выполнения этих действий. Здесь мы расскажем об использовании Magisk для рутирования ТВ-бокса на примере приставки T95Z Plus на SoC Allwinner H618 с Android 12 на борту.

ВНИМАНИЕ ! Для ТВ-боксов других моделей в приведенной ниже пошаговой инструкции необходимо учитывать два изменения:

  • 1) файл образа boot.img нужно извлекать из прошивки своего устройства
  • 2) для прошивок с Android 10 (без AB-разделов) имя раздела будет просто boot (без суфффикса '_a'), и в командах DD номер раздела будет не 5, а 3 (например, mmcblk0p3)


    1. Получение пропатченного образа boot.img


  • 1. Скачать на приставку с форума 4pda приложение Magisk.apk ( Скачать Magisk.apk )

  • 2. Установить приложение Magisk.apk

  • 3. Извлечь из образа прошивки файл boot_a.fex и переименовать его в boot.img, в этом случае файл образа будет находиться на ПК.

  • 3а. Или сделать бекап-копию раздела boot_a в консоли терминала через UART или по ADB командой:

    cd storage/emulated/0/download

    dd if=/dev/block/mmcblk0p5 of=boot.img conv=fsync

    В этом случае файл образа будет находится в текущей папке download на приставке.

  • 4. Скопировать любым способом файл boot.img в папку, например, download на приставке

  • 5. Запустить приложение Magisk, на его главной странице появится два окна (Magisk и Приложение):

  • 6. Щелкнуть по кнопке 'Установка' в окне 'Magisk'

  • 7. В меню Способ отметить флажком 'Пропатчить boot образ'

  • 8. Выбрать в выпадающем списке файловый менеджер и с его помощью найти и отметить файл boot.img в папке download

  • 9. По завершению процесса в папке download появится файл magisk_patched-xxxx.img (лог процесса приведен в конце этой страницы).

  • 10. Переименовать этот файл в boot_patched.img, который будет использоваться для записи в раздел boot_a.

    Примечание. Вместо выполнения перечисленных выше пунктов 1-10 можно просто скачать готовый файл в zip-архиве по ссылке: Скачать boot_patched


    2. Запись пропатченного файла boot_patched.img в раздел boot_a


    Внимание Нужно подчеркнуть, что команда DD - инструмент обоюдоострый: "одно неосторожное движение - и у тебя кирпич". Поэтому на приставках с H618 нужно обязательно всё проделать на загруженной карточке, и лишь потом на встроенной памяти. И ещё: лучше все команды заранее записать в текстовый файл и с него переносить в окно консоли копи-пастом, а не вводить с клавиатуры (легко ошибиться). В окне консоли CMD Windows ввод скопированной в буфера обмена команды - это правая кнопка мышки.


    Вариант 1. В консоли терминала UART

  • 1) Перейти к папке download (сделать её текущей) :

    console:/ $ cd storage/emulated/0/download

  • 2) Поверить наличие файла в папке

    console:/storage/emulated/0/download $ ls
    boot.img boot_patched.img

  • 3) Выполнить команду su:

    console:/storage/emulated/0/download $ su
    Должен появиться символ '#'

  • 4) Записать файл в раздел командой dd

    dd if=boot_patched.img of=/dev/block/mmcblk0p5 conv=fsync


    Вариант 2. В консоли терминала приставки по ADB

  • 1) Скопировать (любым способом) файл пропатченного boot в папку download на приставке

  • 2) на ПК открыть консольное окно командой Windows cmd

  • 3) в консольном окне выполнить команду (указав реальный IP-адрес устройства):

    adb connect 192.168.0.106

    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    connected to 192.168.0.100:5555

  • 4) проверить правильность подключения

    adb devices

    C:\adb>adb devices
    List of devices attached
    192.168.0.100:5555 device

  • 5) войти в консоль (командную оболочку) приставки :

    adb shell

  • 6) Перейти к папке download (сделать её текущей) :

    console:/ $ cd storage/emulated/0/download

  • 7) Поверить наличие файла в папке

    console:/storage/emulated/0/download $ ls
    boot.img boot_patched.img

  • 8) Выполнить команду su:

    console:/storage/emulated/0/download $ su
    Должен появиться символ '#'

  • 9) Записать файл в раздел boot_a командой dd

    dd if=boot_patched.img of=/dev/block/mmcblk0p5 conv=fsync


    Вариант 3. В режиме fastboot на ПК c Windows

  • 1) скопировать файл пропатченного boot в текущую папку на ПК, например, adb (или любую другую, из которой запускается adb.exe)

  • 2) на ПК открыть консольное окно командой Windows cmd

  • 3) в консольном окне выполнить команду (указав реальный IP-адрес устройства):

    adb connect 192.168.0.106

  • 4) проверить правильность подключения

    adb devices

  • 5) перевести приставку в режим fastboot:

    adb reboot bootloader На экране монитора - "друид в реанимации "

  • 6) подключить кабель от USB ПК к USB-OTG приставки

  • 7) запустить в командном окне Windows утилиту fastboot.exe

  • 8) выполнить команду:

    fastboot flash boot_a boot_patched.img

    Примечание. Описанный выше способ перевода устройства в режим fastboot - не единственный. Например, можно сделать это из меню Recavery, но в нём для навигации потребуется подключение физической клавиатуры, что не всегда удобно (или нет свободных USB-портов).


    3. Использование root-прав на приставке


    После загрузки системы при первом запуске любого приложения, требующего root-права, будет появляться всплывающее окно с запросом на подтверждение предоставления прав суперпользователя.

    Для проверки наличия на устройстве рута можно воспользоваться приложением rootcheck ( Скачать rootcheck ), которое показывает (после подтверждения запроса), что рут есть:


    Для доступа к системным папкам рекомендуется пользоваться файловым менеджером RootExplorer ( Скачать rootexplorer )


    Приложение. Лог процесса исправления boot.img в приложении Magisk

      - Device platform: armeabi-v7a
    - Installing: 25.2 (25200)
    - Copying image to cache
    - Unpacking boot image
    Parsing boot image: [/data/user_de/0/com.topjohnwu.magisk/install/boot.img]
    HEADER_VER      [3]
    KERNEL_SZ       [23160840]
    RAMDISK_SZ      [12693527]
    OS_VERSION      [12.0.0]
    OS_PATCH_LEVEL  [2022-02]
    PAGESIZE        [4096]
    CMDLINE         []
    KERNEL_FMT      [raw]
    RAMDISK_FMT     [lz4_legacy]
    VBMETA
    - Checking ramdisk status
    Loading cpio: [ramdisk.cpio]
    - Stock boot image detected
    - Patching ramdisk
    Loading cpio: [ramdisk.cpio]
    Add entry [init] (0750)
    Create directory [overlay.d] (0750)
    Create directory [overlay.d/sbin] (0750)
    Add entry [overlay.d/sbin/magisk32.xz] (0644)
    Patch with flag KEEPVERITY=[true] KEEPFORCEENCRYPT=[false]
    Loading cpio: [ramdisk.cpio.orig]
    Backup mismatch entry: [init] -> [.backup/init]
    Record new entry: [overlay.d] -> [.backup/.rmlist]
    Record new entry: [overlay.d/sbin] -> [.backup/.rmlist]
    Record new entry: [overlay.d/sbin/magisk32.xz] -> [.backup/.rmlist]
    Create directory [.backup] (0000)
    Add entry [.backup/.magisk] (0000)
    Dump cpio: [ramdisk.cpio]
    - Repacking boot image
    Parsing boot image: [/data/user_de/0/com.topjohnwu.magisk/install/boot.img]
    HEADER_VER      [3]
    KERNEL_SZ       [23160840]
    RAMDISK_SZ      [12693527]
    OS_VERSION      [12.0.0]
    OS_PATCH_LEVEL  [2022-02]
    PAGESIZE        [4096]
    CMDLINE         []
    KERNEL_FMT      [raw]
    RAMDISK_FMT     [lz4_legacy]
    VBMETA
    Repack to boot image: [new-boot.img]
    HEADER_VER      [3]
    KERNEL_SZ       [23160840]
    RAMDISK_SZ      [12945685]
    OS_VERSION      [12.0.0]
    OS_PATCH_LEVEL  [2022-02]
    PAGESIZE        [4096]
    CMDLINE         []
    
    ****************************
     Output file is written to
     /storage/emulated/0/Download/magisk_patched-25200_z3FyG.img
    ****************************
    cp: can't preserve ownership of 'busybox': Operation not permitted
    cp: can't preserve ownership of 'magisk32': Operation not permitted
    cp: can't preserve ownership of 'magiskboot': Operation not permitted
    cp: can't preserve ownership of 'magiskinit': Operation not permitted
    cp: can't preserve ownership of 'magiskpolicy': Operation not permitted
    - All done!