Статьи

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

  1. Зміст статті Минуло зовсім небагато часу з моменту випуску перших смартфонів під управлінням ОС Android...
  2. Як?
  3. Перевірка роботи необхідних модулів
  4. альтернативні варіанти
  5. Практичне заняття
  6. Установка Gentoo на ext2-розділ
  7. нативная установка
  8. Що далі
  9. WWW

Зміст статті

Минуло зовсім небагато часу з моменту випуску перших смартфонів під управлінням ОС Android до того, як ентузіасти навчилися запускати на них повноцінні дистрибутиви Linux. Сьогодні методики установки Linux-дистрибутивів на Android-пристрої широко відомі, а в репозиторії Google Play є навіть автоматизовані системи установки і запуску Linux. У цій статті я спробую акумулювати весь накопичений досвід роботи з Linux на смартфонах, розповім, навіщо це потрібно, і покажу, як уникнути можливих підводних каменів при перенесенні Linux на смартфон або планшет.

Навіщо?

На перший погляд може здатися дивним, що хтось намагається запустити на мобільному пристрої операційну систему, в принципі не призначену для роботи з екраном невеликих розмірів і без досить точного маніпулятора (миша) і клавіатури. Однак не варто робити поспішних висновків. Дистрибутив Linux може дати власникові смартфона досить багато переваг, серед яких набір старих перевірених інструментів, таких як утиліти командного рядка, просунуті редактори, FTP- і SSH-сервери, мережеві інструменти і засоби розробки додатків. Запустивши Linux без графічної оболонки на смартфоні з хардварний клавіатурою (Motorola Droid, наприклад), можна досить комфортно всім цим користуватися прямо на ходу без необхідності залишати сам Android. Всі інструменти доступні в будь-який момент, а смартфон продовжує залишатися смартфоном, дозволяючи приймати дзвінки і слухати інтернет-радіо.

Другий аргумент за установку Linux на смартфоні - це можливість використовувати його в якості переносної робочої станції, яку можна підключити до будь-якого ПК і тут же отримати доступ до терміналу за допомогою SSH / Telnet-клієнта або клієнта VNC / RDesktop. Це за визначенням краще, ніж флешки з встановленим Linux, так як немає необхідності, по-перше, перезавантажувати машину, а по-друге, ганяти туди-сюди дані; результати твоєї роботи будуть доступні відразу після того, як відключити смартфон від компа.

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

Як?

Перенести 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 (що зовсім непрактично), або придумувати обхідні шляхи .

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

Май на увазі, що підтримка loopback-пристроїв і файлових систем ext2 / ext3, необхідних для підключення образу, є далеко не у всіх ядрах Linux, встановлених на смартфонах під управлінням Android. Перевірити наявність підтримки можна за допомогою команди lsmod | grep -e loop -e ext2.

Ентузіасти вийшли з цієї ситуації, використовуючи простий метод «віддаленого» підключення до робочого столу за допомогою будь-якого доступного для Android VNC-клієнта. Усередині chroot-оточення запускається X-сервер Xvnc, і всі програми працюють під його керівництвом. Користувачеві залишається лише встановити VNC-клієнт, вбити локальну адресу - і вуаля, на екрані з'являється повноцінний робочий стіл.

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

Спочатку Linux для Android існував тільки у вигляді образу з вже встановленою системою, а також пояснювальної інструкції, як цей образ підключити і використовувати. Потім з'явилися скрипти, які автоматизували процес підключення образу і запуску Linux, але і вони вимагали деякої роботи головою. Нарешті, останнім часом з'явилися інсталятори, доступні в Google Play (наприклад, goo.gl/RSA1j ), В деякій мірі автоматизують процес запуску дистрибутива, хоча, по суті, це все той же керівництво по установці, але інтерактивне, з прямими посиланнями на скачування образів і скриптів.

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

Вище я вже згадав про те, що дистрибутив Linux цілком може бути завантажений замість Android, завдяки чому вдасться задіяти Framebuffer для прямого доступу до відеоадаптера і істотно прискорити роботу графічного інтерфейсу. Однак робити це на смартфоні практично безглуздо - Linux непридатний в якості основної системи на невеликих екранах, до того ж приймати дзвінки і користуватися інтернетом буде неможливо. А ось на планшеті Linux буде виглядати цілком гідно.

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

BackTrack, запущений на планшеті

Для початку нам потрібен образ жорсткого диска з встановленим дистрибутивом. Його можна створити самому, скориставшись емулятором QEMU, проте в зв'язку з тим, що процедура установки абсолютно стандартна і типова, описувати її я не буду, а просто направлю тебе за адресою goo.gl/9nvBi . Тут лежить архів з образом, на який встановлено Ubuntu 12.04 з графічним оточенням LXDE (було б нерозумно запускати Unity / Gnome на телефоні / планшеті). Архів слід розпакувати і покласти файл ubuntu.img на карту пам'яті.

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

  1. Відкриваємо емулятор терміналу в Android (якщо немає, можна встановити з Маркета Terminal Emulator). Або підключаємо смартфон / планшет до комп'ютера і отримуємо доступ до терміналу за допомогою adb: $ cd шлях-до-Android-SDK / platform-tools $ sudo ./adb shell

    Не забуваємо, що режим налагодження в цьому випадку повинен бути включений: «Налаштування -> Для розробників -> Налагодження Android».

  2. Отримуємо права root: $ su
  3. Створюємо блочне loopback-пристрій, підключаємо до нього образ диска і монтуємо його: # mknod / dev / block / loop255 b 7 255 # mount -o remount, rw / # mkdir / mnt / ubuntu # mount -o loop, noatime -t ext2 \ /sdcard/ubuntu.img / mnt / ubuntu

    Вміст образу має з'явитися в каталозі / sdcard / ubuntu. Перевір, щоб це було так.

  4. Підключаємо всі необхідні для роботи дистрибутива віртуальні ФС: # mount -t proc proc / mnt / ubuntu / proc # mount -t sysfs sysfs / mnt / ubuntu / sys # mount -o bind / dev / mnt / ubuntu / dev
  5. Налаштовуємо так, щоб з chroot-оточення можна було отримати повноцінний доступ в Мережу: # sysctl -w net.ipv4.ip_forward = 1 # echo "nameserver 8.8.8.8"> /mnt/ubuntu/etc/resolv.conf # echo "nameserver 8.8.4.4 ">> /mnt/ubuntu/etc/resolv.conf # echo" 127.0.0.1 localhost "> / mnt / ubuntu / etc / hosts
  6. Переходимо в chroot-оточення: # chroot / mnt / ubuntu

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

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

  1. Оновлюємося і встановлюємо TightVNCserver: # apt-get update # apt-get install tightvncserver
  2. Створюємо файл /root/.vnc/xstartup і пишемо в нього наступне: #! / Bin / sh xrdb $ HOME / .Xresources xsetroot -solid grey export XKL_XMODMAP_DISABLE = 1 icewm & lxsession

    Третя команда тут потрібна, щоб пофиксить проблеми, які можуть виникнути через фізичну відсутність на пристрої клавіатури.

  3. Запускаємо Xvnc за допомогою врапперов vncserver з правами root: # export USER = root # vncserver -geometry 1024x800

    В результаті виконання останньої команди на екран буде виведений запит на пароль для доступу до VNC-сервера, краще вказати що-небудь просте кшталт «123». Дозвіл можна встановити фактично будь-яке, однак краще, якщо воно буде збігатися з фізичним дозволом екрану пристрою.

  4. Встановлюємо на смартфон додаток AndroidVNC, запускаємо його, вказуємо IP-адреса і порт 5901, підключаємося. На екрані повинен з'явитися робочий стіл LXDE.

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

Май на увазі, що скрипт монтує образ до каталогу / data / local / mnt

AndroidVNC - підключаємося до робочого столу

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

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

Так ми зможемо вирішити проблему деяких прошивок і ядер без підтримки loopback-пристроїв і до того ж зможемо насолодитися нормальним дистрибутивом, встановленим за всіма правилами

Проект «Ubuntu for Android» в дії

Візьмемо в якості піддослідного системи Gentoo. Щоб встановити його на ext2-розділ, нам знадобиться карта пам'яті обсягом не менше 2 Гб і рутованних смартфон з встановленим busybox. Послідовність дій така.

  1. Робимо бекап даних з карти пам'яті і створюємо на ній додатковий розділ, обсягом не менше двох гігабайт. Зробити це можна за допомогою будь-якої програми для розбивки дисків, проте май на увазі, що якщо ти хочеш продовжувати використовувати SD-карту за прямим призначенням, то створювати FAT32-розділ слід на початку карти, так, щоб він став першим, а додатковий розділ для установки дистрибутива повинен бути другим.
  2. Форматуємо розділи SD-карти: $ sudo mkfs.vfat / dev / sdc1 $ sudo mkfs.ext2 / dev / sdc2
  3. Беремо телефон, заходимо в «Налаштування -> Про телефон» і дивимося, який встановлений процесор. Далі переходимо на сторінку goo.gl/PRfux і викачуємо stage3 для потрібної архітектури, наприклад stage3 для ARM v7 лежить в каталозі current-stage3-armv7a.
  4. Монтуємо ext2-розділ карти пам'яті на комп'ютері і розпаковуємо в нього вміст отриманого архіву: $ sudo mount / dev / sdc2 / mnt $ sudo tar -xxpf stage3 - *. Bz2 -C / mnt

    Відразу редагуємо конфіги і все, що потрібно, за смаком, включаючи правку /etc/resolv.conf за зразком з попереднього розділу.

  5. Запускаємо емулятор терміналу (або виконуємо «adb shell»), монтуємо все необхідне і переходимо в chroot (майже так само, як у випадку з Ubuntu): # mount -o remount, rw / # mkdir / mnt / gentoo # mount / dev / block / mmcblk0p2 / mnt / gentoo # mount -t proc proc / mnt / ubuntu / proc # mount -t sysfs sysfs / mnt / ubuntu / sys # mount -o bind / dev / mnt / ubuntu / dev # sysctl -w net. ipv4.ip_forward = 1 # chroot / mnt / gentoo

Доступ до робочого столу проводиться таким же способом, як в Ubuntu, за винятком того, що тепер прямо на телефоні доведеться зібрати купу софта :). Втім, можна налаштувати середовище для крос-компіляції на компі, але це вже тема для окремої статті.

Втім, можна налаштувати середовище для крос-компіляції на компі, але це вже тема для окремої статті

Ubuntu на Galaxy Tab 10.1

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

Запустивши Ubuntu з використанням VNC-сервера, ти помітиш неквапливість його роботи, яка пов'язана з витратами протоколу VNC на передачу картинки «по мережі». Щоб уникнути цієї проблеми, можна встановити Ubuntu в якості основної системи поряд з Android, так, щоб вона змогла використовувати відеоадаптер безпосередньо. На жаль, універсального способу зробити це не існує. Кожен пристрій по-своєму унікальне, включаючи різні таблиці розділів NAND-пам'яті, на яку проводиться установка, різні пристрої та драйвери для їх роботи.

Кожен пристрій по-своєму унікальне, включаючи різні таблиці розділів NAND-пам'яті, на яку проводиться установка, різні пристрої та драйвери для їх роботи

Нативний X-сервер для Android

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

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

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

Без цього ніяк

Запуск Ubuntu за допомогою стартового скрипта

Що далі

Linux-дистрибутив, встановлений поруч з орігінальною Android-системою, может стать дуже зручне робочим інструментом, проти на Сейчас «Linux Всередині Android» вважається швідше іграшкою и способом покрасуватіся перед друзями, чем серйозно рішенням. Упевнений, що незабаром, коли для Android з'явиться повноцінна реалізація графічного сервера Wayland, ситуація почне змінюватися і ми побачимо дистрибутиви з адаптованим для невеликих екранів інтерфейсом, а також повноцінні Linux-додатки, поширювані в формі звичайних APK-пакетів. Також не варто забувати про проект «Ubuntu for Android» - в його рамках триває робота над офіційним портом Ubuntu для Android, який дозволить використовувати смартфон в якості переносного системника, що підключається до будь-якого монітора.

WWW

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

Як?
Навіщо?
Як?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то