І чи можна це виправити?
ТРУДНОЩІ DUAL BOOT
Почнемо з того, що спробуємо розібратися, що ж таке горезвісний dual boot і чому він прекрасно працює на ПК, але не може бути реалізований на мобільному пристрої без милиць і перекладин. Як відбувається завантаження декількох ОС на звичайному ПК? В MBR прошивається спеціальний завантажувач, що дозволяє вибирати розділ, з якого буде продовжена завантаження системи. Включивши комп'ютер, користувач вибирає в меню потрібний пункт меню, і завантажувач виконує код, прописаний на початку розділу; зазвичай там розташовується власний завантажувач ОС, який передає управління ядру ОС, і далі відбувається завантаження самої ОС.
На ділі все може бути трохи складніше. Наприклад, завантажувач Linux не передає управління коду на початку розділу, а самостійно завантажує ядро з потрібного розділу в пам'ять і передає йому управління, але в нашому випадку це не має значення. А важливо те, що для настільної ОС зазвичай достатньо всього одного розділу, розмір і наявність якого в системі визначає сам користувач. Потрібні три ОС на одному диску - розбивши диск на три розділи і ставиш в кожен з них потрібну операційну систему (для нікс зазвичай відводять по три-чотири розділи, але можна встановити і на один).
У гаджетах, заснованих на Android, все інакше. Розмітка внутрішньої NAND-пам'яті пристрою зазвичай визначається ще на етапі проектування планшета і зашивається разом з первинним загрузчиком в постійну пам'ять. За правилами пам'ять повинна містити як мінімум шість названих розділів: boot, system, data, cache, mise і recovery, кожен з яких, за винятком двох останніх, необхідний для коректної роботи Android.
Щоб отримати можливість коректної установки на таку систему двох різних ОС, необхідно, по-перше, перерозбити пам'ять на розділи, що можливо, тільки якщо перезаписати первинний завантажувач, а по-друге, створити ще кілька розділів для інших ОС, не кажучи вже про те , що доведеться знайти спосіб перемикання між ОС. Однак виконати ні той ні інший пункт не вийде, так як первинний завантажувач в більшості випадків змінити неможливо, а якщо навіть і можливо, робити це вкрай не рекомендується: найменша помилка в засобі завантаження окірпічіт планшет так, що його доведеться нести в сервісний центр.
Як же бути і чому тоді існують системи, що дозволяють вантажити кілька систем на одному гаджеті? Правильно, вся справа в хаках.
МОДИФІКОВАНИЙ RECOVERY + SD-КАРТА
У звичайній ситуації завантаження Android відбувається наступним чином. Юзер натискає кнопку включення, активується первинний завантажувач, який перевіряє таблицю розділів і передає управління коду, розташованому на початку розділу boot. Цей код робить бутстрап ядра; отримавши управління, воно підключає розташований в тому ж розділі boot RAM-диск, з якого запускається процес init, підключає інші розділи, описані в спеціальному файлі всередині гат-диска, і завантажує ОС.
Здавалося б, все просто, але є тут одна особливість: якщо первинний завантажувач виявить, що разом з кнопкою включення була натиснута кнопка зменшення гучності (або інша кнопка, в різних пристроях по-різному) або що в розділ mise прописана спеціальна мітка, він передасть управління не boot, a 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 прямо з працюючої системи, але це збочення), обмеження на одну сторонню ОС і необхідність наявності слота для карт пам'яті в пристрої. На щастя, є більш зручна модифікація даного способу.
ДИНАМІЧНА перезапис BOOT
У розділу boot є одна особливість, яка вже мала б бути зрозумілою по ходу розповіді: весь його вміст завантажується в оперативну пам'ять на етапі ініціалізації, тому після закінчення першого етапу завантаження необхідність в ньому відпадає рівно до наступного перезавантаження. Завдяки цій особливості ми можемо реалізувати модифікований варіант першого способу, який не зажадає перезапису recovery.
Основна ідея тут залишається тією ж: карта пам'яті з потрібними розділами і модифікований образ boot-розділу. Однак замість перманентного розміщення boot в розділі recovery застосовується наступний трюк. Карта пам'яті розбивається, і на неї встановлюється потрібна система, а у вільний простір на карті кладеться образ boot-розділу цієї системи. У самому планшеті при цьому нічого не змінюється, але, якщо виникає потреба завантаження другий ОС, образ boot-розділу другої системи записується в розділ boot прямо під час роботи Android і відбувається перезавантаження. Як результат, в наступний раз система завантажує boot-розділ другий системи і, відповідно, завантаження ОС відбувається з карти пам'яті. Для повернення до першої системі застосовується зворотна операція (запис образу boot першої системи).
Цей спосіб хоч і не ідеальний, але досить популярний. Однак більшість рішень все-таки використовують наступну його модифікацію.
БЕЗ КАРТИ ПАМ'ЯТІ
KEXEC + ВТОРИННИЙ завантажувач
І ось ми підійшли до самого правильному і адекватному методом подвійного завантаження з усіх, що ентузіасти змогли придумати. По суті, це все той же третій спосіб, але з одним дуже і дуже важливим доповненням - задіянням механізму kexec замість перезапису boot-розділу. Kexec - це одна з функцій ядра Linux, яка дозволяє завантажити інше ядро, без перезавантаження всю систему.
Проблема перша: для коректного оновлення основної прошивки потрібен спеціальний recovery, який запровадить в boot-розділ вторинний завантажувач після прошивки оновлення. Проблема друга: додаткові прошивки досі необхідно модифікувати, тобто змінювати файл fstab в їх boot-розділах, щоб вони монтували файлові системи не з розділів NAND-пам'яті, а з образів, розташованих на карті пам'яті або в розділі data.
На щастя, і та і інша проблеми вже вирішені.
MultiROM - найкраща реалізація механізму подвійного завантаження з доступних для Android. Система являє собою реалізацію четвертого методу і складається з трьох компонентів: вторинного завантажувача, модифікованого recovery, який дозволяє правильно оновлювати основну прошивку і встановлювати додаткові роми, автоматично модифікуючи їх для роботи в режимі dual boot, і спеціального інсталятора у вигляді Android-додатки, який все це встановлює.
На жаль, MultiROM доступний тільки для Nexus 4, 5 і 7 (обидві версії планшета), а також у вигляді неофіційних портів для НТС One, НТС One X, Galaxy S4 і Droid DNA, тому буде корисний тільки для власників даних пристроїв. У наступному розділі я розповім про інший реалізації механізму dual boot для різних девайсів, а поки розглянемо, як працює MultiROM і що потрібно для його установки.
Після цього додаток відправить девайс в перезавантаження, і при завантаженні замість звичного логотипу прошивки ти побачиш екран завантажувача MultiROM. У списку доступних прошивок буде тільки одна - Internal. Це основна прошивка, для завантаження якої досить тапнуть по її імені. Однак поки завантажувати прошивку ще рано і необхідно встановити додаткові прошивки. Для цього відкриваємо вкладку Mise в засобі завантаження і натискаємо Reboot to Recovery.
Тепер на екрані повинен з'явитися TWRP, озаглавлений MultiROM TWRR. Це стандартний TWRP з набором функцій для установки і управління додатковими прошивками. Всі ці функції знаходяться в розділі Advanced - MultiROM. Щоб встановити додаткову прошивку, переходимо в цей розділ і натискаємо Add ROM, з'явиться екран вибору опцій: тип прошивки (Android, Ubuntu Touch або MultiROM Installer, це для прошивок в форматі MultiROM), шаринг ядра між прошивками (завжди слід вибирати «Ні») і тип пам'яті для установки (внутрішня або карта пам'яті). Ми залишаємо все як є і натискаємо кнопку Next, а далі ZIP file.
З'явиться стандартний діалог вибору файлу з прошивкою. Знаходимо один з раніше завантажених ZIP-файлів з прошивкою, Тапа по ньому і погоджуємося з прошивкою за допомогою свайпа зліва направо. В кінці натискаємо Reboot і чекаємо, поки з'явиться екран завантажувача. Тепер в ньому має бути два рядки: Internal а ймення другій встановленої прошивки. Вибираємо другий пункт і дивимося, як працює прошивка. Далі знову перезавантажуємося і вибираємо Internal. Все повинно працювати як годинник.
Повернемося до додатка MultiROM Manager. Крім установки компонентів MultiROM, він також має дві інші корисні функції. Перша - можливість швидкої установки Ubuntu Touch (остання плашка на головному екрані). Тут взагалі нічого робити не треба, достатньо натиснути «Встановити», і додаток само викачає останню версію Ubuntu з Мережі і встановить її другий системою. Друга - можливість перемикатися на іншу прошивку без необхідності самостійно перезавантажувати пристрій і вибирати її в засобі завантаження. Просто відкриваємо вкладку «Керування. прошивками », Тапа по потрібному пункту і погоджуємося з перезавантаженням. Все просто і зручно.
MultiROM повністю сумісний з системами ОТА-поновлення стічних і ка-СТОМН прошивок. Оновлювати по повітрю можна будь-які встановлені прошивки, система сама подбає про їх модифікації для роботи в режимі dual boot (якщо мова йде про оновлення додаткових прошивок) і модифікує boot-розділ для впровадження вторинного завантажувача (якщо відбувається оновлення основної прошивки).
ІНШІ РІШЕННЯ
Деякий час назад був популярний проект RomSwitcher, який реалізує третій спосіб подвійний завантаження, але, схоже, він остаточно помер, залишивши після себе лише застарілі порти на кілька різних пристроїв. У тому чи іншому вигляді від різних розробників він доступний для Galaxy S4, НТС One, Xperia Z і Xperia ZL.
Інших скільки-небудь виразних готових рішень мені знайти, на жаль, не вдалося.
Схожі матеріали:
Привіт Шановний Читачу!
У зв'язку з відсутністю фінансування проект planshet-info.ru залишився без контент менеджера. Якщо наш ресурс чимось Вам став корисним, ми будемо вдячні за будь-яке Ваше внесок (Webmoney Z667342162966, R290774558293). Всі зібрані кошти будуть витрачені на оплату контент менеджера.
Команда planshet-info.ru робить все, що б донести до своїх читачів максимально достовірну інформацію про планшетах. Але якщо Ви вже користуєтеся їм, ми будемо дуже вдячні, якщо Ви напишіть свій відгук, адже саме думка користувачів ціннішим за будь огляду і тесту!
Заздалегідь дякую!