Переселение души: linux на android планшете
Моя история начинается с прочтения данной статьи, после которой я и решился приобрести чудо китайского планшетостроения: superpad. Данный планшет брался как игрушка для «поковырять немного», по совместительству, читалка, игралка на пары и смотрелка в долгую дорогу… Сразу отмечу, что у меня два usb винчестера на 500 гб и 1тб, на которых и хранится все самое важное для веселой жизни, и разбиты они в ntfs и ext4. И, естественно, планшет их не видит.
Вот и первая причина поковыряться. После просмотра 200 страниц форума на xda-developers.com очертились определенные
минусы | плюсы |
---|---|
нужны соответствующие модули ядра linux | обновление прошивки до 2.2, заботливо собранную народными умельцами из стекла и картона + прошивки superpad 2 |
ушлые китайцы исходных кодов ядра под данный девайс не дают и всячески препятствуют их получению… |
На данном этапе все попытки вскрытия данного планшета отложились в долгий ящик. До славного времени для студента – сессии. А так как на сессии студенты делают абсолютно все, лишь бы не по предмету, то веселые ночные посиделки в интернете на заведомо буржуйских сайтах возобновились. И пришла гениальная идея поставить на данный планшет православный linux, в моем случае – ubuntu.
Что из этого вышло, смотрим ниже.
Понятно, что просто так взять и установить не получится… ну что же, где наша не пропадала…
нам понадобятся:
- Linux – у меня kubuntu
- windows – xp проще всего
- хорошее усвоение сознанием двух фраз: «just for fun!» и «спокойствие, только спокойствие».
- образ linux, тут смотреть, как создать свой ; созавать образ нужно под свою архитектура процессора, у меня процессор семейства arm11 с архитектурой arm6, так что ubuntu выше 9.10 – мечта…
Если у вас arm cortex – то вам повезло и для вас открываются славные возможности последней ubuntu и заточенной под планшеты unity. - microsd флэшкарта, отформатированная в три раздела: fat, ext2, куда записывается образ, и swap
рассмотрим основные этапы загрузки android и linux
1. Power on and boot ROM code execution | Power on and boot ROM code execution |
2. The boot loader | The boot loader |
3. The Linux kernel | The Linux kernel |
4. The init process | The init process |
5. Zygote and Dalvik | console(bash, zsh. ) / wm(kde, gnome. ) |
6. The system server | Boot completed |
7. Boot completed |
Как видно, отличия начинаются с этапа выполнения init.
Его-то и проще всего поменять.
Честно напишу, думал, что можно использовать только адроидовский инит и что он намертво прикручен к ядру. И даже получив пример рабочего ramdiskа от другого планшета, не думал, что он заведется…
содержимое ramdiska
bin dev etc home init init.rc lib linuxrc mnt newroot opt proc root sbin sys tmp usr var
В /bin лежит busybox, в /sbin – switch_root ссылкой на него.
Код init из ramdiskа от zt-180
#!/bin/sh echo Starting from initram image. Echo Waiting for SD-CARD wake up. sleep 3 echo "Mounting new rootfs" mount -t ext2 /dev/mmcblk0p2 /newroot && echo OK echo Hold on, switching root. exec switch_root /newroot /sbin/init echo hrm, have a shell instead exec /bin/ash
Остается прошить ramdisk в память (я использовал burntool под xp) и — вуаля, этап загрузки. Да, прошивал я вместо recovery, так что для запуска Linux приходится зажимать клавиши при старте.
Так, этап загрузки пройден и стоит запастись терпением, так как консоль не подает признаков жизни, а все грузится достаточно медлительно.
Настраиваем автологин на первую консоль
В /etc/init/tty1.conf заменяем последнюю строчку на exec /bin/login -f Yor_Login < /dev/tty1 >/dev/tty1 2>&1 потом в своем ~/.bashrc можно прописать команды, которые будут стартовать при автоматическом логине.
Боремся с икс-сервером
У меня он определенно не дружил с тачскрином, xorg.conf и xterm… удалил драйвер synaptic, закинул в ~/.xinitrc следующее:
#!/bin/bash # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ # /etc/X11/xinit/xinitrc # # global xinitrc file, used by all X sessions started by xinit (startx) # invoke global X session script #. /etc/X11/Xsession xclock -geometry 50x50-1+1 & exec xterm -geometry 80x66+0+0 -name login
Боремся с рабочей средой
Я захотел поставить kde, так как мне безумно нравится отрисовка графики библиотекой qt. Сразу скажу: да, поставилось и завелось, но КАК…
Во-первых, сразу настроил автологин:
в /etc/kde4/kdm/kdmrc находим и меняем под себя следующее
AutoLoginEnable=true # If true, auto-login after logout. If false, auto-login is performed only # when a display session starts up. # Default is false #AutoLoginAgain=true # The delay in seconds before automatic login kicks in. # Default is 0 AutoLoginDelay=3 # The user to log in automatically. NEVER specify root! # Default is "" AutoLoginUser=Login # The password for the user to log in automatically. This is NOT required # unless the user is logged into a NIS or Kerberos domain. If you use this # option, you should "chmod 600 kdmrc" for obvious reasons. # Default is "" AutoLoginPass=Password
и, как написано, делаем chmod 600 kdmrc в консоли под рутом, чтобы нехорошие личности не подсмотрели наш пароль.
Во-вторых, при входе подозрительно долго висела заставка, и я, засомневавшись, вызвал startkde из консоли. После долгого и нудного показа всевозможных ошибок наконец загрузилась плазма в режиме нетбука. Графические эффекты выключены, так как мы сидим под framebufferом, и наблюдаются местами дичайшие тормоза, но все же это kde и оно загрузилось!
Тонкая подстройка всего и вся под себя
У каждого своя, оптимизацию я пока что не проводил, а сделать предстоит очень многое: ускорить загрузку, оптимизировать рабочее пространство. Посматриваю в сторону более легковесного wm – e16 – но пока основным не сделал. так же нужно откалибровать тачскрин, благо что виртуальная клавиатура уже есть в kde.
Посматриваю в сторону openbox + razor-qt .
«Наслаждаемся!»
Итоги
Подключил репозитории debian 6. Не работает в упор звук, не настроен тач и рабочее пространство. Очень не хватает модулей ядра, так что попытаюсь собрать и прикрутить…
Сбиты многие службы и политики, в интернет ходит только под root, но интернет настроен и это радует.
Ps: Да, без модулей ядра подключается только разделы в fat и ext2, что не радует.
usb клавиатура + мышь будут очень ценными при отладке и настройке.
AnLinux: простой способ установить Linux-окружение на Android-телефон без рута
Любой телефон или планшет, работающий на Android, — это устройство, которое управляется ОС Linux. Да, очень модифицированной ОС, но все же основа Android — ядро Linux. Но, к сожалению, для большинства телефонов опция «снести Android и поставить дистрибутив по своему вкусу» недоступна.
Поэтому, если хочется Linux на телефоне, приходится покупать специализированные гаджеты вроде PinePhone, о котором мы уже писали в одной из статей. Но есть еще один способ получить Linux-окружение практически на любом смартфоне, причем без root-доступа. Поможет в этом инсталлятор, который называется AnLinux.
Что такое AnLinux?
Это специализированное ПО, которое дает возможность использовать Linux на телефоне при помощи монтирования образа, содержащего root-файловую систему любого из дистрибутивов, включая Ubuntu, Kali, Fedora, CentOS, OpenSuse, Arch, Alpine и многих других. Инсталлятор использует PRoot для эмуляции root-доступа.
PRoot перехватывает все выполняемые пользователем вызовы, которые требуют в обычной ситуации root-доступа, и обеспечивает их работоспособность в обычных условиях. В PRoot используется системный вызов ptrace для отладки ПО, который помогает достичь цели. С PRoot все это можно сделать как с chroot, но без root-прав. Кроме того, PRoot предоставляет фейковый доступ пользователю для пседвофайловой системы.
AnLinux — небольшая программа. Но этого достаточно, ведь единственное ее предназначение — установка образов систем и запуск скриптов, поднимающих пользовательское окружение. Когда все сделано, пользователь получает вместо смартфона Linux-ПК, причем Android продолжает работать на фоне. Подключаемся к устройству при помощи VNC-вьювера или терминала, и можно работать.
Конечно, это не идеальный вариант «завести» Linux на смартфоне, но он вполне рабочий.
С чего начать?
Основное — Android-смартфон с версией ОС не ниже Lollipop. Кроме того, пойдет и 32-битное или 64-битное ARM или x86-устройство. Кроме того, потребуется солидный объем свободного файлового пространства. Для этого можно использовать карту памяти или просто устройство с большим объемом внутренней памяти.
- AnLinux (вот ссылка на Google Play).
- Termux (снова понадобится Google Play).
- VNC Client (VNC Viewer — хороший вариант).
- Bluetooth-клавиатура (опционально).
- Bluetooth-мышь (опционально).
- HDMI кабель для мобильного телефона (опционально).
Что же, приступим
Как только установлен Termux, получаем полноценную консоль. Да, рута нет (если телефон не рутован), но ничего страшного. Следующий шаг — установка образа для дистрибутива Linux.
Теперь нужно открыть AnLinux и затем — выбрать Dashboard из меню. Всего есть три кнопки, но выбрать можно лишь одну, первую. После этого появляется меню выбора дистрибутива. Можно выбрать даже не один, а несколько, но в этом случае понадобится большой объем свободного файлового пространства.
После выбора дистрибутива активируются две другие кнопки. Вторая позволяет загрузить в буфер обмена команды, необходимые для загрузки и установки Linux. Обычно это pkg, wget команды и скрипт для их выполнения.
Третья кнопка запускает Termux, так что команды можно вставлять в консоль. Как только все сделано, запускается скрипт, позволяющий загрузить окружение дистрибутива. Для вызова дистрибутива нужно каждый раз запускать скрипт, но установку проводим только один раз.
А что с графической оболочкой?
Если она нужна, то следует лишь выбрать меню для десктопного окружения и использовать больше кнопок — появится не три, а больше. Кроме самого дистрибутива, нужно выбрать еще и оболочку, например, Xfce4, Mate, LXQt или LXDE. В целом, ничего сложного.
Потом кроме скрипта, который запускает дистрибутив, потребуется еще один — он активирует сервер VNC. В целом, весь процесс простой и понятный, он вряд ли способен вызвать затруднения.
После запуска сервера VNC подключаемся со стороны клиента, воспользовавшись вьювером. Требуется знать порт и localhost. Все это сообщает скрипт. Если все сделано правильно, то пользователь получает доступ к своей виртуальной Linux-системе. Производительность современных телефонов на высоте, так что особых проблем не будет. Конечно, вряд ли смартфон сможет полностью заменить десктоп, но, в целом, все это работает.
Этот способ может пригодиться, если вдруг нужно срочно подключиться к серверу, а вы в машине, без ноутбука (конечно, в этом случае все описанные выше операции с AnLinux уже должны быть выполнены). Виртуальная Linux-машина позволяет подключиться к рабочему или домашнему серверу. А если в автомобиле по какой-то причине оказался дисплей и беспроводная клавиатура, то за считанные секунды в салоне можно организовать рабочий кабинет.