Подвійна прошивка андроїд

Подвійна прошивка андроїд

ТРУДНОЩІ DUAL BOOT

Почнемо з того, що спробуємо розібратися, що ж таке горезвісний dual boot і чому він прекрасно працює на ПК, але не може бути реалізований на мобільному пристрої без милиць
і перекладин. Як відбувається завантаження декількох ОС на звичайному ПК? В MBR прошивається спеціальний завантажувач, що дозволяє вибирати розділ, з якого буде продовжена завантаження
системи. Включивши комп'ютер, користувач вибирає в меню потрібний пункт меню, і завантажувач виконує код, прописаний на початку розділу; зазвичай там розташовується власний завантажувач ОС, який передає управління ядру ОС, і далі відбувається завантаження самої ОС.

На ділі все може бути трохи складніше. Наприклад, завантажувач Linux не передає управління коду на початку розділу, а самостійно завантажує ядро ​​з потрібного розділу в пам'ять і передає йому управління, але в нашому випадку це не має значення.
А важливо те, що для настільної ОС зазвичай достатньо всього одного розділу, розмір і наявність якого в системі визначає сам користувач. Потрібні три ОС на одному диску - розбивши диск на три розділи і ставиш в кожен з них потрібну операційну систему (для нікс зазвичай відводять по три-чотири розділи, але можна встановити і на один).

СПОСІБ НОМЕР 1. МОДИФІКОВАНИЙ RECOVERY + SD-КАРТА

У звичайній ситуації завантаження Android відбувається наступним чином. Юзер натискає кнопку включення, активується первинний завантажувач, який перевіряє таблицю розділів і передає управління коду, розташованому на початку розділу boot.
Цей код робить бутстрап ядра; отримавши управління, воно підключає розташований в тому ж розділі boot RAM-диск, з якого запускається процес init, підключає інші розділи, описані в спеціальному файлі всередині ram-диска, і завантажує ОС.

Здавалося б, все просто, але є тут одна особливість: якщо первинний завантажувач виявить, що разом з кнопкою включення була натиснута кнопка зменшення гучності (або інша кнопка, в різних пристроях по-різному) або що в розділ misc прописана спеціальна мітка, він передасть управління не boot, а recovery! Останній, як ти знаєш, містить консоль відновлення, але сіль не в цьому, а в тому, що і за розміром, і за вмістом розділ recovery дуже схожий на boot.

Подвійна прошивка андроїд

Що це нам дає? Правильно, в recovery можна залити образ boot-розділу іншої прошивки і змусити її підключити інші розділи системи не з внутрішньої пам'яті пристрою, а з попередньо розбитою на розділи SD-карти. Це найпростіший і дуже древній спосіб настройки dual boot, який з'явився ще за часів перших версій Android, а сьогодні використовується для організації подвійний завантаження Android / Ubuntu (настільної версії) на планшетах і в інсталятор Ubuntu Touch (підтримуються тільки Нексус).

Плюс даного способу в надзвичайній простоті реалізації. Все, що потрібно зробити, - це розбити SD-карту на розділи (два у випадку з Android - system і data, розділ cache використовується стандартний) з файлової системою ext4, розпакувати образ boot-розділу другий прошивки, змінити кілька рядків у файлі fstab всередині RAM-диска, запакувати образ і прошити в розділ recovery. А от мінусів у способу безліч. Це і неможливість отримати доступ до recovery
(Насправді можливо, якщо прошити образ recovery прямо з працюючої системи, але це збочення), обмеження на одну сторонню ОС і необхідність наявності слота для карт пам'яті в пристрої. На щастя, є більш зручна модифікація даного способу.

MultiROM не вміє працювати з зашифрованим розділом data ( «Опції Зашифрувати дані»).

СПОСІБ НОМЕР 2. Динамічна перезапис BOOT

У розділу boot є одна особливість, яка вже мала б бути зрозумілою по ходу розповіді: весь його вміст завантажується в оперативну пам'ять на етапі ініціалізації, тому після закінчення першого етапу завантаження необхідність в ньому відпадає рівно до наступного перезавантаження.
Завдяки цій особливості ми можемо реалізувати модифікований варіант першого способу, яка не потребуетперезапісі recovery.

Цей спосіб хоч і не ідеальний, але досить популярний. Однак більшість рішень все-таки використовують наступну його модифікацію.

СПОСІБ НОМЕР 3. ВІДМОВА ВІД КАРТИ ПАМ'ЯТІ

СПОСІБ НОМЕР 4.KEXEC + ВТОРИННИЙ завантажувач

І ось ми підійшли до самого правильному і адекватному методом подвійного завантаження з усіх, що ентузіасти змогли придумати. По суті, це все той же третій спосіб, але з одним дуже і дуже важливим доповненням - задіянням механізму kexec замість перезапису boot-розділу. Kexec - це одна з функцій ядра Linux, яка дозволяє завантажити інше ядро, без перезавантаження всю систему. Працює цей метод приблизно так. В розділ boot основний прошивки вбудовується спеціальний код, який містить в собі так званий вторинний завантажувач.

СПОСІБ НОМЕР 5. MULTIROM

MultiROM - найкраща реалізація механізму подвійного завантаження з доступних для Android. Система являє собою реалізацію четвертого методу і складається з трьох компонентів: вторинного завантажувача, модифікованого recovery, який дозволяє правильно оновлювати основну прошивку і встановлювати додаткові роми, автоматично модифікуючи їх для роботи в режимі dual boot, і спеціального інсталятора у вигляді Android-додатки, який все це встановлює.

Подвійна прошивка андроїд

Основний екран MultiROM Manager після установки ядра

На жаль, MultiROM доступний тільки для Nexus 4, 5 і 7 (обидві версії планшета), а також у вигляді неофіційних портів для HTC One, HTC One X, Galaxy S4 і Droid DNA, тому буде корисний тільки для власників даних пристроїв.

Подвійна прошивка андроїд

Закінчення установки компонентів MultiROM

Подвійна прошивка андроїд

Інтерфейс установки Ubuntu Touch

Отже, після того як ми обзавелися новим ядром (або не обзавелися) і ZIP-архівами з прошивками, запускаємо MultiROM Manager і чекаємо, поки він перевірить наявність своїх компонентів в системі. Якщо ти вже встановив ядро, то невстановленими будуть тільки завантажувач MultiROM (перший рядок в плашки «Статус установки») і модифікований recovery (другий рядок). Обидва цих компонента можна встановити, натиснувши кнопку «Встановити» в плашки «Установка / Оновлення» (опції відзначати не треба, додаток вже саме поставило потрібні галочки).

Подвійна прошивка андроїд

Завантажувач MultiROM автоматичному
скі завантажує основну прошивку через
п'ять секунд

Після цього додаток відправить девайс в перезавантаження, і при завантаженні замість звичного логотипу прошивки ти побачиш екран завантажувача MultiROM. У списку доступних прошивок буде тільки одна - Internal. Це основна прошивка, для завантаження якої досить тапнуть по її імені. Однак поки завантажувати прошивку ще рано і необхідно встановити додаткові прошивки. Для цього відкриваємо вкладку Misc в засобі завантаження і натискаємо Reboot to Recovery.

Тепер на екрані повинен з'явитися TWRP, озаглавлений MultiROM TWRP. Це стандартний TWRP з набором функцій для установки і управління додатковими прошивками.

Всі ці функції знаходяться в розділі Advanced Щоб встановити додаткову прошивку, переходимо в цей розділ і натискаємо Add ROM, з'явиться екран вибору опцій: тип прошивки (Android, Ubuntu Touch або MultiROM Installer, це для прошивок в форматі MultiROM), шаринг ядра між прошивками ( завжди слід вибирати «Ні») і тип пам'яті для установки (внутрішня або карта пам'яті). Ми залишаємо все як є і натискаємо кнопку Next, а далі ZIP
file. З'явиться стандартний діалог вибору файлу з прошивкою. Знаходимо один з раніше завантажених ZIP-файлів з прошивкою, Тапа по ньому і погоджуємося з прошивкою за допомогою свайпа зліва направо. В кінці натискаємо Reboot і чекаємо, поки з'явиться екран завантажувача. Тепер в ньому має бути два рядки: Internal а ймення другій встановленої прошивки. Вибираємо другий пункт і дивимося, як працює прошивка. Далі знову перезавантажуємося і вибираємо Internal.
Все повинно працювати як годинник.

Подвійна прошивка андроїд

Вкладка Misc в засобі завантаження MultiROM

MultiROM повністю сумісний з системами OTA-оновлення стічних і кастомних прошивок. Оновлювати по повітрю можна будь-які встановлені прошивки, система сама подбає про їх модифікації для роботи в режимі dual boot (якщо мова йде про оновлення додаткових прошивок) і модифікує boot-розділ для впровадження вторинного завантажувача (якщо відбувається оновлення основної прошивки).

ІНШІ РІШЕННЯ