Всем привет! Представляю вашему вниманию перевод статьи «Coding without a laptop – Two weeks with AR glasses and Linux-On-Android». Перевод сделал человек с помощью мозга, а не LLM.
Недавно я сделал открытие, которое взорвало мой мозг! Полноценный Линукс десктоп можно запустить на смартфоне. И это не какая-нибудь неуклюжая виртуалка и не полная замена операционной системы типа Ubuntu One или postmarketOS. А нативная сборка arm64, работающая внутри chroot контейнера на Android.
Наверняка вы скажете: «Хорошо – это классно, но для чего?». Поэтому я пока опустил подробности, как это устроено. Справедливое замечание: это что-то новенькое, но, очевидно, бесполезное.
Дело было так: на подходе была 2-х недельная поездка и мне нужно было продолжить работать в этот период. Я был слегка одержим мыслью, что я смогу оставить свой ноутбук дома и работать со смартфона. Так, а что если дополнить его складной клавиатурой и AR-очками?
Самое приятное — это то, что и очки, и клавиатура спокойно помещаются в карманах. Поскольку телефон я всё равно беру с собой, это не будет большим дополнением.
Железо
Клавиатура. На маркет-плейсах достаточно небольших складных клавиатур, и я просмотрел всего 5, пока нашёл что-то подходящее. Я пробовал несколько вариантов с трекпадом, но они были либо слишком большими, либо их клавиши были плотно прижаты друг к другу ради компактности. Приложение Termux: X11 позволяет использовать экран для перемещения курсора мыши, и этого оказалось вполне достаточно. Я в любом случае пользуюсь преимущественно клавиатурой, так что большую часть времени не нуждаюсь в мыши.
Очки. Хотите верьте, хотите нет, но очки дополненной реальности уже довольно хороши. Приставка AR вводит в заблуждение. На самом деле это просто маленький OLED дисплей, прикреплёный к внутренней стороне линзы очков. Мне выпала возможность купить слегка б/у Xreal Air 2 Pros на ebay. Они дают картинку в 1080p с углом обзора в 46°. Некоторые новые модели могут образовывать большой виртуальный дисплей вместо прикреплёного к голове изображения, как в моём случае. Я к такой конфигурации отношусь довольно скептично. По крайней мере, пока разрешение и угол обзора не улучшаться.
Смартфон. К сожалению, мне пришлось обновить и телефон, потому что для очков нужна поддержка альтернативного режима DisplayPort. В моём старом потрёпаном телефоне такой нет.
Начиная с Pixel 8, Гугл пошёл по пути наименьшем зла и не стал программно блокировать режим DisplayPort (что заставляет людей покупать Chromecast? Не знаю.). Так что я купил б/у Pixel 8 Pro на eBay.
Затраты составили:
-
б/у Pixel 8 Pro – $350
-
б/у Xreal Air 2 Pro – $260
-
Складная клавиатура Smaers – $18
Всего: $628. Хотя телефон я мог бы не считать, потому что мне всё равно пора его обновить.
После пары послеобеденных экспериментов я почувствовал уверенность, что наверняка справлюсь с работой в течении 2-х недель. Имея такую конструкцию.
Мои выводы:
Что ж, после использования этой конструкции в самолёте, кафе, в гостях у разных родственников, в парках, в конце-концов, сидя в машине. Думаю, у меня есть несколько аргументов в ответ на фразу: «Зачем тебе это понадобилось, если существует ноутбук?»
-
Этот набор действительно влазит в карманы. Никакого багажа, ничего лишнего.
-
Я могу пользоваться этим на улице при ярком солнце. Я написал большую часть этого поста, сидя в парке за столиком для пикника. Нет проблем с бликами и яркостью экрана.
-
Я могу расположиться в узком пространстве. В самолёте такая конструкция гораздо удобнее ноутбука. В некоторых кофейнях так же узкие барные стойки. Они слишком малы для ноутбука, но не для этого.
-
У телефона есть мобильная сеть. Так что я больше не завишу от Wi-Fi.
Иначе говоря, есть чувство свободы, которое не получить с ноутбуком. И я могу чаще бывать на свежем воздухе. Как разработчик ПО я устал от одной вещи — чувство, что ты всё время проводишь взаперти перед экраном. Но, используя такую конструкцию, я могу прогуляться в кофейню, поработать там час-другой, а потом прогулятся в парк и поработать там пару часов. Это потрясающее чувство свободы.
Но должен признать, всё не так радужно. Были и свои особенности во всём этом. Что ж, вот мой опыт:
The Linux Environment
Linux-on-android в конечном счёте, великолепен, но я не хочу скрыть факт, что сделать это было не просто. В моём понимании достаточной укомплектованности дистрибутив должен включать Neovim, lsp-серверы (Nim, Python, Dart, Js), Node и Flutter (с поддержкой сборки и для десктопа, и для веба, запуск и отладку).
Не буду описывать все свои действия по сборке (но, если кому-нибудь интересно, я могу), ограничусь лишь ссылками по теме [приме. переводчика: в конце раздела]. Обрисую картину в целом, исходя из полученного опыта.
Вот 4 совершенно разных подхода к Linux-on-Android:
-
Виртуальная машина с эмулятором x86_64.
-
Termux: Android-приложение, сочетающее в себе эмулятор терминала, облегчённый userland и набор портированных программ.
-
Бинарный дистрибутив для Arm64, запущенный в chroot. По сути, это обычная папка с програмами, которые будут запущены в изолированной от основной файловой системы среде. Подчеркну, что для этого требуется рутануть устройство.
-
Proot. Это тот же chroot, но он не использует системные вызовы, требующие права root, как chroot.
Потратив много времени на эксперименты, я остановился на chroot-подходе*. На самом деле мне не хотелось рутить телефон, но иначе я не мог реализовать задуманное. Виртуальная машина оказалась медленной и не уклюжей, как и proot. Я был удивлён, сколько всего можно запустить прямо в Termux. Но в Android испольуется C-библиотека Bionic, и большинство программ требует перекомпиляции под эту платформу для запуска. Это и другие различия в окружении сильно ограничивают возможности. Насколько я могу судить, chroot не сказывается на производительности, и (по большей части) всё, что собрано под Arm64, будет работать.
Касаемо дистрибутива (а я перелопатил много). важно следующее:
-
Легковесность, всё таки это телефон.
-
Очевидно, поддержка Amr64.
-
Отсутствие Systemd. (я никогда не мог заставить это работать в chroot. Не ясно, возможно ли это).
-
Должен быть обкатан и спокойно работать в chroot. Arch Linux для Arm, например, имеет ряд странных причуд. Например, fakeroot не работает.
-
Построен на Glibc. Я думал, что Alpine станет моим решением, но мне нужен Flutter/Dart для работы, и я не смог запустить их с musl. Для кого-то это может быть не существенно.
В итоге мне подошёл тарбол Void Linux с Glibc, и он прекрасно работает.
Я использую i3 (тайловы менеджер окон, ориетированный на управление с клавиатуры), но я так же пробовал Xface. Он работает без проблем.
Ссылки по теме:
AR Очки
Качество изображения просто фантастическое. Вы видите яркие пиксели на красивом OLED дисплее. Но поскольку каждый пиксель отражается от линзы, чёрный пиксель выглядит просто прозрачно. Так что белый текст в терминале с чёрным фоном будет выглядеть, будто он парит в пространстве. На сам деле, если вы хотите ощущать меньше экрана и больше мира вокруг себя, это то, что нужно, но так же это может и отвлекать.
Однако модель, которую я купил, имеет электрохроматическое затеменениее, так что можно затемнить саму часть солнечных очков и снизить попадание света. Без этой фишки работать при ярком солнце не получится, так как изображение будет размываться. Так что я очень рекомендую выбирать очки с такой опцией.
Мне немного неловко надевать их на людях, но в целом меня это не сильно смущает. Они более менее сойдут за солнцезащитные очки. Так что более странно сидеть в солнцезащитных очках в помещении и что-то печатать на клавиатуре, когда перед тобой ничего нет. Несколько человек спрашивали меня, но, похоже, они просто посчитали, что это круто выглядит. Один парень сказал, что подумывал купить такие же.
Возможно, я себя накручиваю, но мне кажется, что некоторые люди посчитали меня идиотом.
Наибольший недостаток очков в том, что FOV действительно большой. Чтобы увидеть нижний и верхний угол экрана, нужно перемещать глаза под немного неудобными углами. И на самом деле трудно установить линзы в правильном положении, чтобы они обе были в фокусе одновременно.
Мой оконный менеджер позволил добавить дополнительные отступы сверху и снизу, что немного облегчило проблему.
Так же отмечу: я пробовал настроить мульдисплейный режим Андроида, и это был кошмар. В конечном счёте, я использовал это приложение: изменил разрешение на 1080p и отзеркалил вывод на очки. Это оказалось очень удобно, потому что вы можете снять очки и продолжить работать с телефоном, если устанете от них.
Фокусная плоскость очков – 10 футов (3.048 метров). Если вы используете скринридер для ноутбука, то, скорее всего, он вам не потребуется.
Клавиатура
Вздох. Кто-нибудь мог бы сделать нормальную складную клавиатуру? Этот кусок пластика за 18$ не стоит большего. И это самое слабое звено конструкции, что слегка не ожиданно. Клавиатура выглядит более дешмански и громоздко, чем должна быть. Её нельзя заблокировать в разложенном сотоянии (это означает, что не получится положить её на колени и поработать), у неё нет программного переопределения клавиш.
Наверное, я бы мог продолжить поиски на Alibaba и, возможно, нашёл бы что-то получше. Но я бы точно заплатил в 10 раз больше за что-то стоящее.
Производительность
В качестве примитивного бенчмарка я компилировал Nim из исходников:
-
Мой Framework 13 Core Ultra 5 125H собрал его за 4:15 минут
-
Мой Thinkpad T450s с Intel Core i5-5300U – 14:20 минут
-
Pixel 8 Pro – 11:20 минут
Я бы сказал, что опыт подтверждает эти числа. Быстрее, чем Thinkpad, но определённо медленее, чем Framework.
Кстати, я не пожалел, что слегка переплатил за Pixel Pro, потому что в нём 12 Гб рамки, а в обычном Pixel 8, всего 8 Гб. Это важно, потому что расход RAM часто заполняет все 12 Гб.
Батарея
В очках и с затемнённым экраном, телефон потребляет немного больще 3 Ватт в простое, и от 5 до 10 при компиляции или серьёзной нагрузке. В среднем я разряжал батарею на 15% в час. Так, что 4-5 часов думать о подзарядке не придётся, но я уверен, что вам в любом случае не захочется находиться в очках дольше.
Продолжу ли я этим пользоваться?
Я благополучно прошёл стадию непривычности, и как ни странно, мой ответ —да. Конечно, если у меня будет с собой ноутбук, я не потянусь за телефоном, но и в тоже время я не потянусь за ноутбуком, если есть возможность работать за десктопным компьютером. Но я возьму с собой такую конструкцию с телефоном, когда не смогу взять с собой ноутбук или когда мне долгое время будет не хватать свободы и не будет другого пути её достичь.
Меня так же потрясает дешивизна этого решения, особенно в сравнении, например, с Apple Visio Pro. При этом довольно забавно, что он не соответствует моим требованиям. Он не влезет в карман и поможет программировать не больше, чем iPhone. Полагаю, его можно использовать на природе, но глаза будут заперты в ящик, так что это не имеет значения.
Думаю, в действительности это и есть будущее ультра-мобильной разработки ПО. Особенно с учётом, что AR очки подолжают совершенствоваться, а Linux остаётся гибким и функциональным. Несмотря на трудности, теперь я могу бывать в разных местах, чего раньше не мог. И я счастлив от этого.
Примечания переводчика:
*Когда автор говорит про chroot, он имеет в виду что запустил его в приложении Termux.
P.S. Спасибо за внимание :)
Автор: hypermachine


