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

ТРУДНОЩІ 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-розділ для впровадження вторинного завантажувача (якщо відбувається оновлення основної прошивки).