Встановлюємо linux-дистрибутив на телефон і планшет під управлінням android

Перенести Linux на Android дійсно просто, і головну роль тут відіграє ядро ​​Linux. Будь-Linux-дистрибутив являє собою набір додатків і бібліотек, що працюють поверх ядра Linux, а так як Android сам заснований на майже незмінному ядрі Linux, ці програми, але бібліотеки можна без будь-яких проблем запустити всередині середовища Android. Достатньо лише підшукати дистрибутив, для якого існує порт на платформу ARM (не забуваємо, що 99% всіх Android-девайсів працюють на ARM), встановити його за допомогою ARM-емулятора на віртуальний жорсткий диск (тобто в файл), скинути цей файл на SD-карту пристрою, відкрити термінал, змонтувати образ в якості loopback-пристрої і зробити chroot всередину. Усе! Це так само просто, як запуск FTP-сервера в chroot-оточенні - простий і перевірений десятиліттями метод.

Єдиний камінь спотикання, коли ти вирішуєш запустити дистрибутив Linux всередині Android, - графічне середовище. У той час як з доступом до консолі ніяких труднощів не виникає завдяки наявності повноцінного емулятора терміналу, з графічними додатками починаються проблеми - нативного X-сервера для Android немає, а запустити звичайний X-сервер всередині самого дистрибутива неможливо через корінних відмінностей в архітектурі графічної підсистеми зеленого робота. Незважаючи на те що в основі вона використовує стандартний Linux Framebuffer, поверх якого можна запустити X-сервер, ексклюзивне право його використання спочатку належить більш високорівневих бібліотекам Android, тому залишається або завантажувати Linux-дистрибутив замість Android (що зовсім непрактично), або придумувати обхідні шляхи .

Перевірка роботи необхідних модулів

Єдине вузьке місце при використанні віддаленого робочого стола - це продуктивність. Навіть працюючи локально, VNC не може забезпечити належний її рівень, якого б вистачило для плавної прокрутки або переміщення вікон без лагів. Вирішити цю проблему поки не вдалося, проекти розробки нативного X-сервера, який би використовував графічну підсистему Android, ще дуже сири і не можуть бути використані для запуску повноцінних графічних середовищ. Втім, ніхто не забороняє їх використовувати; наприклад, X Server від Darkside Technologies Pty Ltd (goo.gl/ap3uD) цілком згодиться для запуску простого софта.

альтернативні варіанти

Зазвичай на пристрій, спочатку працює під управлінням Android, так звана нативная версія Linux-дистрибутива встановлюється наступним чином. На внутрішньому NAND-накопичувачі планшета створюється додатковий розділ, на який копіюється Linux-дистрибутив. Потім завантажувач U-Boot (він застосовується в більшості планшетів) налаштовується таким чином, щоб використовувати цей розділ як завантажувальний. В результаті планшет буде автоматично завантажувати Linux-систему після включення живлення.

Щоб залишити можливість завантаження Android, завантажувач U-Boot перенастроюють таким чином, щоб розділ з Linux-системою був не основним, а виконував функцію «розділу для відновлення» (Recovery Mode), доступного за допомогою включення пристрою з затиснутою клавішею гучності (той самий, який використовується для перепрошивки пристрою і виконання різних відновлювальних операцій). Таким чином вдається отримати пристрій з подвійним завантаженням: Android за замовчуванням і дистрибутив Linux при завантаженні в режимі відновлення. Сам Recovery Mode при цьому залишається доступним тільки за допомогою спеціальних інструментів.

У разі якщо NAND-пам'яті виявляється недостатньо для розміщення повноцінної Linux-системи, її частини (зазвичай розділ / usr) виносять в образ або розділ на SD-карті. До речі, ext2-розділ на карті пам'яті також можна використовувати для установки Linux, що запускається в chroot-оточенні.

Встановити нативний Linux-дистрибутив складніше, ніж працює в chroot-оточенні, але це варто того, якщо у тебе є планшет і OTG-кабель, за допомогою якого можна підключити клавіатуру і мишу.

Практичне заняття

Як я вже говорив, для запуску під управлінням Android придатні тільки дистрибутиви, портований на архітектуру ARM. Перш за все це Ubuntu і Debian, причому перший із зрозумілих причин користується набагато більшим інтересом серед роботоводов. Також можна встановити Gentoo і кілька спеціалізованих дистрибутивів, наприклад Backtrack. Розглянемо найтиповіший випадок, тобто установку Ubuntu за стандартною схемою, без використання будь-яких автоматизованих інсталяторів і іншого.

Встановлюємо linux-дистрибутив на телефон і планшет під управлінням android

Встановлюємо linux-дистрибутив на телефон і планшет під управлінням android
BackTrack, запущений на планшеті

Далі треба змонтувати образ і зробити chroot в оточення дистрибутива. Для цього потрібні права root, прошивка з підтримкою блокових loopback-пристроїв і встановлений busybox (шукаємо в Маркеті за запитом «busybox installer», в CyanogenMod є за замовчуванням). Послідовність дій:

Не забуваємо, що режим налагодження в цьому випадку повинен бути включений: «Налаштування -> Для розробників -> Налагодження Android».
  • Отримуємо права root:
  • Створюємо блочне loopback-пристрій, підключаємо до нього образ диска і монтуємо його: Вміст образу має з'явитися в каталозі / sdcard / ubuntu. Перевір, щоб це було так.
  • Підключаємо всі необхідні для роботи дистрибутива віртуальні ФС:
  • Налаштовуємо так, щоб з chroot-оточення можна було отримати повноцінний доступ в Мережу:
  • Переходимо в chroot-оточення:
  • Власне, на цьому установка закінчується. Тепер можна запускати консольний софт, виробляти оновлення системи, стартувати мережеві сервіси та робити майже все, що можна зробити зі звичайною деськтопной Linux-системою, не забуваючи, звичайно, що деякий софт, безпосередньо взаємодіє з залізом і різними спеціалізованими псевдодевайсамі, працювати не буде. Також не забуваємо, що віртуальні ФС після завершення роботи слід демонтувати.

    Тепер нам необхідно встановити і запустити X-сервер Xvnc, що експортує дисплей і пристрої введення з використанням протоколу VNC. TightVNCserver вже є в представленому образі і навіть налаштований, але, щоб ти краще зрозумів процес і зміг вирішити виниклі проблеми, я детально опишу процес його установки і запуску.

    1. Оновлюємося і встановлюємо TightVNCserver:
    2. Створюємо файл /root/.vnc/xstartup і пишемо в нього наступне:
    Третя команда тут потрібна, щоб пофиксить проблеми, які можуть виникнути через фізичну відсутність на пристрої клавіатури.
  • Запускаємо Xvnc за допомогою врапперов vncserver з правами root:

    Щоб не морочитися з ручним введенням всіх команд, можна використовувати скрипт ubuntu.sh, розташований тут: goo.gl/xSpK4. Просто поклади його і образ ubuntu.img в каталог ubuntu на SD-карті і запусти скрипт командою sh ubuntu.sh, а через 5-10 секунд підключися до робочого столу за допомогою AndroidVNC. Май на увазі, що скрипт монтує образ до каталогу / data / local / mnt.

    Встановлюємо linux-дистрибутив на телефон і планшет під управлінням android
    AndroidVNC - підключаємося до робочого столу

    Установка Gentoo на ext2-розділ

    Отже, ми встановили Ubuntu за допомогою образу з файлової системою і шаманств з loopback-пристроєм і chroot-оточенням. Зробити це виявилося нескладно, а із застосуванням скриптів так і взагалі дуже легко, але що, якщо піти далі і встановити більш хардкорних дистрибутив, і не з використанням образів, а на виділений ext2-розділ на карті пам'яті? Так ми зможемо вирішити проблему деяких прошивок і ядер без підтримки loopback-пристроїв і до того ж зможемо насолодитися нормальним дистрибутивом, встановленим за всіма правилами.

    Встановлюємо linux-дистрибутив на телефон і планшет під управлінням android
    Проект «Ubuntu for Android» в дії

    Відразу редагуємо конфіги і все, що потрібно, за смаком, включаючи правку /etc/resolv.conf за зразком з попереднього розділу.
  • Запускаємо емулятор терміналу (або виконуємо «adb shell»), монтуємо все необхідне і переходимо в chroot (майже так само, як у випадку з Ubuntu):
  • Встановлюємо linux-дистрибутив на телефон і планшет під управлінням android
    Ubuntu на Galaxy Tab 10.1

    нативная установка

    Встановлюємо linux-дистрибутив на телефон і планшет під управлінням android
    Нативний X-сервер для Android

    На щастя, процес установки нативной версії дистрибутива добре описаний для багатьох пристроїв в російськомовних форумах, тому знайти інструкцію буде нескладно. Варто, проте, відразу звернути увагу на кілька особливостей такого типу установки:

    • Окремий або основний NAND-розділ. Linux-дистрибутив може бути встановлений як в завчасно створений розділ в NAND-пам'яті, так і в основний завантажувальний розділ. У першому випадку розробник прошивки зазвичай залишає можливість завантаження Android за допомогою спеціального скрипта або через завантаження Linux-дистрибутива в режимі відновлення, у другому він буде встановлений замість Android і для повернення можливості завантаження робота доведеться заново перепрошивати пристрій.
    • Можливість подвійного завантаження. Якщо Linux-дистрибутив буде встановлений на окремий розділ, розробник може залишити можливість завантаження Android. Однак варто відразу звернути увагу, як ця завантаження відбувається: за допомогою режиму відновлення або скрипта, що запускається з звичайного компа. Все-таки другий спосіб буде незручний в дорозі.
    • Підтримка обладнання. Оригінальна Linux-ядро Android-прошивки вже включає в себе всі необхідні драйвери, які можуть знадобитися для роботи повноцінної Linux-системи, проте далеко не у всіх Linux-прошивках все заведеться само собою. Часто виникають проблеми з Wi-Fi-адаптером і сенсорним екраном, який неадекватно реагує на дотики. Тому перед установкою прошивки варто уважно прочитати про можливі ускладнення.

    У будь-якому випадку будь готовий до того, що під час установки Linux-дистрибутива всі твої дані будуть знищені. Без цього ніяк.

    Встановлюємо linux-дистрибутив на телефон і планшет під управлінням android
    Запуск Ubuntu за допомогою стартового скрипта

    Що далі

    goo.gl/UGDe3 - опис процесу підготовки образу Ubuntu власними силами (англійською).