Как стать автором
Обновить

Комментарии 21

Это всё интересно, но…
Можно ли поставить арч/что-нибудь вместо андроида? Чисто теоретически.
Теоретически да.
Если systemd удастся запустить, то и оставшаяся часть не составит проблем.
Большой вопрос как это сделать в условиях разметки Android.
Эта тема конечно хороша, но там нет решения проблемы драйверов.
Можно собрать libhybris, но даже с ним нет никакого способа подружить Xorg андроидом (имеется ввиду с графическим ускорителем, framebuffer, XServer XSDL и VNC не считаются). Glamor пробовали запустить напрямую на EGL, глючит не по-детски. Использование Wayland+Xwayland пока не опробовал, но я слышл что там какие-то проблемы с GLX.
Звук можно вывести даже без драйверов, в связке PulseAudio/Alsa и прогой, которая читает звук из pipe и выводит через OpenSL ES. У меня уже несколько версий лежит. В том числе можно выводить через SimpleProtocol. Есть несколько приложений на Java.
Нет поддержки многих SysV механизмов в ядре, в том числе shared memory, RPC и прочего. Взамен там есть ashmem и binder, но чтобы заменить использовать их в glibc-дистрибутиве придется писать библиотеку, в которой shmget, shmctl и функции RPC будут использовать ashmem и binder.

И таких нюансов очень много. Тем, что уже есть (Linux Deploy, GnuRoot) пользоваться уже можно, но везде выскакивают разные косяки.
Звук можно вывести даже без драйверов, в связке PulseAudio/Alsa и прогой, которая читает звук из pipe и выводит через OpenSL ES. У меня уже несколько версий лежит. В том числе можно выводить через SimpleProtocol. Есть несколько приложений на Java.

Уже есть версия pulseaudio которая поддерживает вывод через OpenSL ES. Должна компилироваться при помощи Android NDK.
github.com/twaik/pulseaudio-sles-ndk

А чем Вам не угодило chroot окружение, что потребовалось так поиздеваться над "хост" системой? Вычистить этого мутанта будет та ещё проблема, если вдруг что-то пойдёт не так, да и если новую прошивку ставить, то гораздо проще использовать chroot, который может даже на SD карте жить, чем как-то это дело бекапить. Кстати, гораздо удобнее сделать раздел с ext2/3/4 файловой системой вместо использования файла в качестве root раздела, но если карта памяти не поддерживается, то да, файловый "раздел" очень выручит.

chroot окружение не позволит работать с systemd, так как systemd «знает» о том, что мы в chroot и отказывается работать.
«Подружить» Android и ArchLinux ARM на одном root — первый шаг к запуску systemd парралельно с андроидом.
Плюс не нужно переключатся между консолью chroot и самим андроидом.
По поводу проблем — они маловероятны, во всяком случае я их не заметил.
Все основные бинарнки находятся в /system/bin, а арч его не трогает.
Раздел действительно более лучший вариант в плане производительности, однако моя карта памяти имеет лишь 1 FAT раздел, весь занятый данными. Об этом в статье упоминается.
Всё же — чем вам не угодил chroot, кроме как «Плюс не нужно переключатся между консолью chroot и самим андроидом»? Systemd вы всё равно не завели.

Ну и ставить лучше на отдельный раздел, согласен с предыдущим комментатором, производительность всё же не высокая.
Инит может быть только один. Так что шаг первый и он же последний. Не выйдет запустить systemd и андроидовский инет, не выйдет и подменить один другим.
Если уж хочется поиграть с Linux-based OS на АРМе, то можно купить за 15 евро какой-нибудь Orange Pi Zero и на нем играть, а попутно упражняться на нем в поднятии любых сервисов, ибо будет полноценная система.
Мне не нужен чистый ArchLinux ARM на устройстве без Android'а и Android приложений. Смысл как раз в парралельной работе Android и ArchLinux на одном root.
PID 1 только один, не больше. Вариантов как такое сделать много, и это тема для отдельной статьи. Возможно эти попытки будут успешны. Возможно и нет.
Попытки не будут успешными. Это я вам обещаю. Все же 20 лет опыта за плечами ;)
Почитайте про lxc, lxc под андроид был, чем загаживать / бедного андроида лучше попробуйте в lxc-тазу систему поднять, хоть рач, хоть нормальный Debian/Ubuntu.
не выйдет и подменить один другим.
А вот это спорное утверждение. Можно пересобрать Android Init и потом в init.rc добавить что-то вроде service systemd /bin/systemd
#class main
oneshot

Когда система загрузится и примонтируется выполнить команду
setprop ctl.start systemd

Тогда запустится systemd. Но андроидовые сервисы похоже нельзя будет запустить/остановить с помощью «start/stop/setprop ctl.start/setprop ctl.stop». Я не знаю, использует ли андроид этот функционал после полной загрузки.
Эммм… Не могу отредактировать коммент. Там, в описании service systemd должен быть exec /bin/systemd. Или может я то-то не совсем правильно понимаю.

А вместо systemd классический инит или другие использовать?

Если тебе 16 и ты хочешь разбираться с Linux-based OS, то мой совет: не пытайся делать это на гибриде Андроида и Рача. Андроид — Linux-based, но он имеет слабое отношение к реальным десктопным и серверным системам, общего только ядро, а все остальное отличается. Поставь Debian/Ubuntu, разбирайся с настройками сервисов, учись. Ты — молодец, что попробовал сделать то, что сделал, но к реальной работе это отношения не имеет. Учись тому, что будет нужно в реальной жизни. Ставь Debian/Ubuntu, настраивай nginx, настраивай к нему php-fpm, поднимай какой-нибудь сайт, пусть у себя в локалке. Это будет полезно тебе в жизни. Когда клавиатура упадет из рук моего поколения кто-то должен ее поднять и админить сервера, интернету нужны сервера, а серверам нужны админы. Желание учиться это прекрасно, но ты тратишь время на бесполезные глупости. Остановись, посмотри что реально нужно и учись.
Удачи в твоих начинаниях.
Если нужна помощь админа с большим опытом, то стучись в личку. Я начинал админить, когда ты еще не родился и опыта накопилось много, чем-нибудь поделюсь.
Спасибо за такой приятный комментарий, и за предложение помочь. В своей поседневной работе за ПК я использую ArchLinux. Установил я его задолго до того, как написал эту статью, и опыт, полученный при работе с арчем помог решить несколько проблем, описанных в статье. Моей первой Linux-based ОС была Ubuntu, и в процессе поисков и проб остановился на арче.
Задолго до этой статьи я успел посмотреть и nginx, и php, и mysql, и еще много всего. Этот «гибрид» Android и арча не является средством изучения Linux-based ОС, и тем более не первая моя Linux-based ОС.
Рач используется сугубо для того, что бы с ним играться. Ты никогда его не встретишь в реальной жизни. В реальной жизни будут Debian/Ubuntu и RHEL/CentOS, потому использовать нужно их и учиться нужно на их. А рач, генту и прочие слаквари оставить для тех, кто хочет играться с системой и чесать ЧСВ.
Сейчас есть один плюс, что даже рач использует systemd, как настоящие рабочие дистрибутивы, таким образом не придется переучиваться к новым условиям, когда окажешься в реальной жизни. Но все остальное, включая расположение конфигов, нужно знать из настоящих систем.

Еще раз могу пожелать удачи, молодец, что учишься и развиваешься. Рад, что такие как ты есть и будут, так спокойней жить, зная, что наши сервера будет кому принять, когда нас понесут на кладбище.

Никогда не говори "никогда" :-)


Тоже думал что рач в вакансии это прикол такой, тем более что собеседование это вроде бы неявно подтверждало. Но нет, кучка рачей в продуктиве и (квалифицированный) человек понаставивший их ушел т.к. ему перестало быть интересно. Не надо так.


Да, системд унифицирует, но рачу это не помогает не разваливаться от дуновения ветра. Всё не доходят руки расформировать последний экземпляр.

Рач используется сугубо для того, что бы с ним играться. Ты никогда его не встретишь в реальной жизни.

Можете объяснить? Использовал Арч для разработки, использую дома, не играюсь с системой. По вашему «реальная жизнь» — это только сервера?
Простите, зацепило, в Вашей формулировке выглядело, что Arch не совсем недосистема только потому, что использует systemd? Вы эдаким макаром холиварную тему поднимаете. А то, что по многим проблемам и вопросам одной из первых всплывает в поисковиках арчевики, в которой уже многие вопросы поднимались и решения описываемые там помогают не только в Arch'еподобных дистрибутивах, в плюс не идёт, так? Не надо принижать одни дистрибутивы и превозносить другие, масса инструментов работает вполне одинаково и в первых и во вторых, больший вопрос качества владения именно этими инструментами, а не конкретным дистрибутивом. Для обучения Linux подойдёт любой, хоть LFS пусть мучает — главное знания полученные в процессе. Пока что своей формулировкой о ЧСВ, Вы чесали только своё. Ещё прошу прощения, понимаю, что Debian и RHEL — это бизнес уровень и стандарт, но не надо к этому ещё и Ubuntu приписывать, но при этом плеваться от Arch. С какими задачами по Вашему мнению не справится Arch?
настраивай nginx, настраивай к нему php-fpm, поднимай какой-нибудь сайт
не привязаны к дистрибутиву.
Уважаемый, не надо загаживать голову молодому бойцу :)

Проблема нашего поколения как раз в том, что мы за свои 20-30 лет опыта слишком хорошо узнали, что возможно, а что нет. А вот головастая молодёжь иной раз делает сногсшибательные вещи просто потому, что ещё не знает, что это невозможно. Им ещё никто этого не сказал.

Людей, способных настроить nginx с php-fpm на рынке — навалом. А вот умеющих поставить линукс на андроид — крайне мало. При этом вот лично у меня есть задачи, требующие именно таких решений (а не линукса на арме за $15).

Этот чувак — он примерно как тульский Левша. А Вы ему предлагаете превратиться в ремесленника, которых и так навалом. Да чёрт побери, я таких, как он, днём с огнём не могу найти, потому что все кругом старые и умные и достоверно знающие, с какой стороны у бутерброда масло.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации