Встановлюємо 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 за стандартною схемою, без використання будь-яких автоматизованих інсталяторів і іншого.


Далі треба змонтувати образ і зробити chroot в оточення дистрибутива. Для цього потрібні права root, прошивка з підтримкою блокових loopback-пристроїв і встановлений busybox (шукаємо в Маркеті за запитом «busybox installer», в CyanogenMod є за замовчуванням). Послідовність дій:
Не забуваємо, що режим налагодження в цьому випадку повинен бути включений: «Налаштування -> Для розробників -> Налагодження Android».Власне, на цьому установка закінчується. Тепер можна запускати консольний софт, виробляти оновлення системи, стартувати мережеві сервіси та робити майже все, що можна зробити зі звичайною деськтопной Linux-системою, не забуваючи, звичайно, що деякий софт, безпосередньо взаємодіє з залізом і різними спеціалізованими псевдодевайсамі, працювати не буде. Також не забуваємо, що віртуальні ФС після завершення роботи слід демонтувати.
Тепер нам необхідно встановити і запустити X-сервер Xvnc, що експортує дисплей і пристрої введення з використанням протоколу VNC. TightVNCserver вже є в представленому образі і навіть налаштований, але, щоб ти краще зрозумів процес і зміг вирішити виниклі проблеми, я детально опишу процес його установки і запуску.
- Оновлюємося і встановлюємо TightVNCserver:
- Створюємо файл /root/.vnc/xstartup і пишемо в нього наступне:
Щоб не морочитися з ручним введенням всіх команд, можна використовувати скрипт ubuntu.sh, розташований тут: goo.gl/xSpK4. Просто поклади його і образ ubuntu.img в каталог ubuntu на SD-карті і запусти скрипт командою sh ubuntu.sh, а через 5-10 секунд підключися до робочого столу за допомогою AndroidVNC. Май на увазі, що скрипт монтує образ до каталогу / data / local / mnt.

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


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

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

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