C Linux в кармане

В жизни каждого программиста наступает момент когда он хочет совершить путешествие....
Ну, может быть, и не каждого, и, может даже и не вот путешествие: суть рассматриваемой задачи сводится обеспечению возможности оперативно поправить пару строчек в программе, перекомпилировать, и что то сделать с результатом.
Компиляторы для контроллеров: ARM GCC, AVR GCC, RISC-V GCC, которые, в принципе, есть в виде собранных бинарников под x86-64 и aarch.
Либо же задача "поправить пару строчек в конфиге" - немножко другое, но тоже рядом. Для этого тоже нужно две железяки: 1) Железяка, которое обеспечивает непосредственное взаимодействие с пользователем, ввод команд и исходников, нечто с клавиатурой и экраном. 2) Железяка где будет исполнятся софт, компиляция, запуск, предположительно в среде Linux. Так сказать, фронтэнд и бэкенд.
В зависимости от ситуации, это может быть и одно устройство, либо два... возможны очень разные варианты, которые хотелось бы перечислить и обсудить.
А приоритет будет такой: железок с собой (в дороге) хочется таскать как можно меньше.

Рассмотрим варианты.

  1. Ноутбук на Windows/Linux, скорее всего на архитектуре x86-64. Если это Ваш вариант - дальше можно не читать. Выбираем на свой вкус, и кошелек, ноутбуки есть очень разные. Однако это килограмм-полтора веса, которые могут показаться лишними. А там еще и зарядка. Есть, конечно, очень небольшие ноутбуки, с экранами 7-10 дюймов, но стоят они, как правило, далеко не так дешево как первые примитивные неттопы, с которых все начиналось когда-то. Сюда же можно отнести всяческие вариации SteamDesk, но у них нет встроенной клавиатуры. Отдельно стоит отметить исчезающий класс планшетов на Windows. Microsoft до сих пор предлагает новинки. Но вот варианты с экраном около 8 дюймов похоже остались в прошлом, только на вторичном рынке, да и памяти у них не густо. По весу выходит легче, чем ноутбук, но к этому весу надо добавить вес клавиатуры. И в том и другом случае можно попробовать использовать многочисленные дистрибутивы Linux, иногда остаются вопросы драйверов к сенсорным экранам, WiFi, различным аппаратным опциям. Да и Windows никто не запрещает, только стоит контролировать расход трафика, особенно в роуминге.

  2. Девайс на Android: смартфон, планшет, даже игровая приставка. Плюс, вероятно, клавиатура. Для любителей - смартфон с клавиатурой, типа Blackberry Priv или Uniherz titan, но у них нет функциональных и курсорных клавиш, все равно придется управлять Midnight Commander при помощи сенсорного экрана. Портативная Bluetooth-клавиатура, казалось бы - не проблема, но пару нюансов стоит отметить. В крупных федеральных сетях выбор Bluetooth может быть весьма не широк, а ценник на фирменные клавиатуры для планшета такой, что в других местах за цену одной такой клавиатуры можно взять целый планшет, причем в комплекте с Bluetooth-клавиатурой (самый дешеман конечно, но тем не менее). А если клавиатура покупается отдельно, то могут возникнуть вопросы совместимости. Например, один смартфон на кастомной сборке AOSP вообще отказался работать с любыми клавиатурами (включая USB), что приводит к вопросу смены прошивки, а это хлопотно, да и без гарантий. На Android без проблем можно запустить SSH клиент, а помимо этого есть и другие возможности для запуска софта локально (об этом далее), так же при этом куча всякого софта рассчитанного на сенсорное управление и не только для работы. Который, иногда, тоже любит передавать всякую телеметрию, но похоже все уже привыкли. И, если говорить про вес, то более стоит рассмотреть устройства с экраном размером менее обычных 10 дюймов, однако выбор таких устройств не слишком велик.

  3. Девайс от Apple. Командная строка конечно есть, вопрос скорее - есть ли нужный софт. Гуглинг показал что все не просто, нет ответа на вопрос

  4. Девайс на AuroraOS (есть смартфоны и планшеты). Это же по сути Linux, предусмотрен terminal из коробки, правда надо зарегистрироваться как разработчик, и софт придется самому компилировать (готовые бинарники под arm7h не всегда есть). Большое неудобство - клавиатура в AuroraOS 4 работает только на ввод текста, системой ей управлять нельзя. А подключенная мышка не отображает курсор, нажатия - виртуальные.

  5. Девайс на Ubuntu Touch или сборке Kali Linux. а так же возможно  LibreMobileOS с надстройкой Lindroid. Ну да, у нас есть почти обычная Ubuntu arm под некоторые планшеты и довольно большой спектр смартфонов, которые пока что можно найти в продаже, в основном на вторичке. Правда, уже не всегда совсем свежая, но под нее вполне можно запустить необходимый софт. Вопрос в поддержке оборудования, ну и в целом - необходимо сыскать нужный девайс и его прошить. А девайс этот будет на Android, с которым и так можно сделать многое, не заморачиваясь Ubuntu touch.

  6. Nintendo Switch Устройство на неслабом процессоре, для которого есть свежайшая Ubuntu, Fedora, а так же Android. Последний, впрочем - как и на огромном числе других приставок на Android. Опять же вопрос только в клавиатуре.

  7. Экзотика по типу Clockwork uConsole и некоторых (полу)самодельных устройств ориентированных быть именно небольшим девайсом с Linux, только по сравнению с планшетами - не такие уж они и компактные.

Собственно говоря, на любом из перечисленных устройств можно запустить какой-нибудь компилятор. Но есть и другие варианты.

  1. Одноплатник, в очень широком смысле слова: (очень) небольшая платка в типоразмере Raspberry Pi 2w (Orange Pi 2W, Radxa Zero и др.), нечто в формате "свисток", небольшой коробочки на x86 (мини пк) либо ARM (компактный ТВ-бокс). Т.е. небольшой отдельный компьютер с собой. Плюсов и минусов у такого решения много. Нужен монитор/ТВ: либо он есть на месте пребывания (не всегда), либо нужно тащить с собой еще и монитор, и любимую клавиатуру, либо использовать SSH подключение по WiFi/RNDIS USB (и одноплатник должен это уметь) с устройств из первого перечня, экзотичный вариант - использовать видеозахват USB-HDMI, подключенный к смартфону/планшету. Есть несколько видео где Raspberry Pi питают и получают SSH с iPad через USB кабель, собственно эта идея стала базой для данной статьи. В сессии SSH можно запустить столь "любимый"/любимый многими vim, или более "привычный" Midnight Commander (editor). В качестве бонуса из такого решения получаем медиаплеер для коллективного просмотра всякого медиа, а так же возможности роутера. И да, опять это лишний вес, хотя размеры и масса некоторых коробочек просто восхищает, при этом мы получаем полноценный компьютер, даже с SSD NVME.

  2. Удаленный сервер, чтобы не таскать его с собой. Дома, на работе, арендованный. Этот вариант является более чувствительным как в плане организации безопасного доступа, так и доступности и стабильности. Начиная с того, что гостиничный WiFi запросто может резать протокол SSH. Ну и чувствительные данные лучше держать в зашифрованном виде, не только на арендованном vps, но и в любом перечисленном здесь случае. Стоит отметить возможность запускать VS Code в качестве сервера, оно может дистанционно, например через SSH. Официально в качестве клиента для этого сервера необходимо использовать так же VS Code, который существует под Windows/Linux/MacOS, но не под Andoid/IPad. Однако, как подсказали в комментариях эту штуку можно запускать как обычный вебсервер и работать удаленно, в браузере.

  3. Гибридный вариант: использовать Termux + AnLinux, либо Linux Deploy от @meefik - под Android. Этот вариант вполне работает при наличии любого из перечисленных устройств на Andoid. Termux по сути почти обычный пользовательский терминал Linux в рамках ядра Android, в котором даже есть свой менеджер пакаджей, только пакаджей немного, поскольку они требуют некоторой адаптации. Чтобы все было попроще можно использовать виртуальную среду которая имитирует корневую систему распространенных дистрибутивов Linux, таких как Debian, Ubuntu, Arch, Suse. В результате на устройствах с Android можно запускать консольные утилиты, ставить пакаджи, включая разные компиляторы. AnLinux это небольшая GUI надстройка над Termux, генерирующая готовые командные строки для скачивания, установки и запуска дистрибутивов. Их виртуальные файловые системы на самом деле хранятся в папке данных приложения Termux. Так же Termux предоставляет свой терминал с командной строкой и дополнительной виртуальной клавиатуры - там как раз курсорные клавиши, и отключить это, похоже, нельзя. Linux Deploy дает примерно тоже самое, но позволяет хранить виртуальную среду как на отдельном разделе накопителя, так и в файле-образе, так же автоматически настраивать встроенный ssh сервер и работать не только в консоли, но и в режиме графического окружения - только для всего этого нужны root-права. Запускать его можно из командной строки Android Terminal либо пользоваться SSH - своей терминальной консоли Linux Deploy не предоставляет. Оба приложения не очень активно развиваются, но, по крайней мере, авторы актуализируют скрипты и дистрибутивы. Некоторые пентестеры так же используют Termux для работы в полевых условиях Таким образом, для запуска компиляторов и других Linux приложений вполне достаточно устройства с Android, при этом можно сделать выбор на свой вкус и кошелек. Конкретную комбинацию софта стоит проверить заранее. Например для компилятор avr gcc v7.3 из состава Arduino под голый Termux не запускается, пришлось инсталлировать среду Debian. А вот новый AVR GCC v.14.1 требует свежих библиотек, которых изначально нет под старыми Debian/Ubuntu. Проще всего инсталлировать более объемистый дистрибутив ARCH, для которого есть свежий пакет AVR GCC, да и не только.

    Какие будут мысли?

@NutsUnderline
24.05.2024 10:00 UTC
Первоисточник

Комментарии

@VRyabchevsky
24.05.2024 05:09 UTC
+1

Для себя выбрал вариант с сервером + vscode с плагином удаленной работы. С любого ноута с vsc цепляюсь к серверу, где одинаковая рабочая среда. Пробовал с планшета работать (как автор этого ролика) - лично мнеине зашло. Старенький мак эир оказался легче и удобнее

@NutsUnderline
24.05.2024 07:40 UTC
0

а у кого я почерпнул эту ideю ;) вот только у меня во всех браузерах ссылка "этот ролик" почему то не кликабельна

24.05.2024 08:15 UTC
+1

почему то не кликабельна

Мой косяк, не вставил. Вот корректная ссылка

У меня был один из проектов, по реализации стенда разработки для сотрудников, там примерно такой же подход с vscode, т.к. с vscode dev была проблема с авторизацией. Коллеги, кстати, советовали попробовать онлайн редактор в gitlab

24.05.2024 10:25 UTC
+1

Добавил по тексту, выглядит красиво, но повышает требования к каналу.

@Dmitri-D
24.05.2024 05:09 UTC
+1

Apple идет с clang, который очень хорошо справляется с С. Работаю по возможности с ним. А когда надо чуть больше, то или HomeBrew или запускаю Fusion в котором бежит Debian. Windows тоже ставится под Fusion и прекрасно работает, впрочем, мне он пока не нужен там.

@NutsUnderline
24.05.2024 07:36 UTC
0

тут на самом деле интересно, так как старенький ipad в наличии. я задал гуглу простой вопрос по типу "how to run avr gcc on ipad" и в ответ не получил особо внятной информации

@aik
24.05.2024 06:19 UTC
+5

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

@lv333
24.05.2024 08:00 UTC
+4

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

Кстати в статье не упомянуто почему то, стимдек - как по мне отличная замена довольно компактному и мощному ПК с линукс. Легче ноута, но места, объемного, по сути занимает больше чем какой нить мак аир.

@NutsUnderline
24.05.2024 08:14 UTC
+1

стимдек что то не вписался между ноутбуками и приставками на android, но тема интересная потому что линукс из коробки

24.05.2024 08:29 UTC
+1

Ну к тому же это х86 и мощнее куда приставок на андроид...

@aik
25.05.2024 04:21 UTC
+1

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

Но вот как замена стационарному компу стимдек отнюдь не худший вариант.

26.05.2024 10:24 UTC
0

Но вот как замена стационарному компу стимдек отнюдь не худший вариант

а это как? на столе расположить (как то) и перед ним клавиатуру? Так экран мелковат, миникомп и экран по вкусу, да и обычный ноут будет как минимум не дороже и удобнее

26.05.2024 10:29 UTC
+2

Внешний монитор использовать, само собой. Стационарному же компу замена.

А на ноуте за сравнимые деньги играть будет не особо весело.

@NutsUnderline
26.05.2024 10:58 UTC
0

в порядке эксперимента попробовал linux deploy в качестве headless сервера на тв боксе под андройд, поскольку казалось бы он рассчитан на такую работу, автор предлагает использовать не только под андройд. но chroot накладывает свои ограничения: systemd не работает толком, даже ssh проще перезапустить локально. т.е. для администрирования требуется либо локальный доступ либо ssh на хост систему

@ptr128
29.05.2024 10:11 UTC
+1

Мои эксперименты показали, что если не ноут, то только планшет с клавиатурой. В противном случае или по RDP/VNC ничего не разглядишь, или кодить на тачскрине замучаешся.

С учётом того, что планшет с клавиатурой по объему и весу не сильно отличается от ноута, преимуществ у него перед ноутом тоже мало.

@NutsUnderline
29.05.2024 15:46 UTC
0

8 дюймовый планшет, да и какой нить субноут могут быть гораздо компактнее, да и так грамм 200-300 разницы есть

29.05.2024 16:12 UTC
+1

Во-первых, я писал исключительно о собственном опыте. На 8 дюймовом планшете я по RDP/VNC физически мало что увижу. Что-то разглядеть удается только начиная с 11 дюймов.

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

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

@Rerium
29.05.2024 15:34 UTC
+1

Есть ещё вариант перешить какое-то устройство на linux. Можно посмотреть проекты halium, postmarketOS, Droidian, может быть ещё что-то найдется. Или упороться и самому собрать без проектов свой дистрибутив.

К экзотике можно добвить какой-нибудь pine tab или Lichee Console 4A

@NutsUnderline
29.05.2024 15:44 UTC
0

от Halium похоже произрастает ubuntu touch, uports, LunaOS, WebOS и Droidian вопрос только какие устройства они поддерживают и где их взять. Для uport я приобрел совместимый планшет на вторичке относительно недорого. pine tab там не купить, да и Lichee Console 4A вопрос но там большая проблема архитектура RISC-V - под нее надо все собирать самому, а мой энтузиазм так далеко не распространяется, а вот под aarch64 уже есть много готовых бинарников.

@Rerium
31.05.2024 20:37 UTC
+1

Halium это минимальная сборка android поверх которого уже все работает. По поводу вторички... Я видел pine phone, покупал через перекура паяльник(года назад ещё доставка была в РФ). Конкретно планшеты не видел.

Для risc-v как минимум у дебиана довольно большой репозиторий. Да и собрать пакет не так тяжело. В основном они собираются на свежих версиях gcc.

Я лично сейчас собираю пингвина на планшет на базе allwinner a13, но действие очень вяло идёт, хотя остаётся собрать ядро только с нужными драйверами и прикрутить rootfs...

@mnnoee
30.05.2024 03:46 UTC
+1

Как человек ломающий себе жизнь в степени-n самый оптимальный вариант это ноут. Дальше андроид, через chroot, желательно планшет. Полноценный линукс десктоп можно уже настроить с хорошим программным ускорением, есть куча пакетов для aarch64/arm64. Есть и минусы, андроид это андроид, и если нужен дополнительный функционал начинаются костыли на костылях, но если знать где искать патчи, можно завести полноценный докер, а ещё лучше прослойку под андроидом в виде полноценной среды linux. Но даже если костылить рано или поздно это надоест.

@NutsUnderline
05.06.2024 19:43 UTC
0

Kali NetHunter - вариант который все таки ближе к Termux/Linux Deploy (можно даже и их использовать) поскольку работает практически под Android, но подразумевает также модифицированное ядро системы, что позволяет делать всякое пентестерское с телефона. Что для просто запуска компилятора в общем то излишне.

@DarkTiger
08.06.2024 21:06 UTC
+1

Как все сложно... Я беру загрузочную флешку с настроенным под себя Линуксом и ключами VPN для входа в офисную сеть. Если попасть в такую дыру, что там нельзя сесть на пару часов за комп в игровом зале, то и сотовая связь там будет такая, что особо не поработаешь (те же острова Phi-Phi в Тае).
Если по теме статьи - я лет 10 назад резиновую клаву брал (в трубочку сворачивается, удобно), мышку и RPi. Цепляешься к телеку в номере отеля по HDMI и связь через телефон. Тормоза, правда, страшные - только хардкор, только консоль с vim.
А вообще в отпуске работать не тянет совсем, предпочитаю коллег по телефону консультировать, как поправить, если что.

@NutsUnderline
05.07.2024 18:15 UTC
0

Это если есть коллеги ;) и доступ по сети (или заморачиваться на синхронизацию рабочих материалов). У меня такой вариант всегда с собой, но ситуации когда прямо таки нет компа или нельзя флешки всякие выткать - мне кажутся вполне реальными.

@NutsUnderline
05.07.2024 18:19 UTC
0

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

@lv333
05.07.2024 20:27 UTC
0

А конкретнее?

06.07.2024 10:58 UTC
0

ну так как бы https://wiki.termux.com/wiki/Main_Page

внутри самого termux есть текстовый файл ~/.termux/termux.properties, его можно редактировать при помощи mc например

там есть настройка которая должна будет отредактирована так

extra-keys = []

после чего дополнительные виртуальные кнопки внизу экрана исчезнут совсем. Так же там можно включить fullscreen

для аппаратной клавиатуры доступны комбинации клавиш https://wiki.termux.com/wiki/Hardware_Keyboard

забрасывать рабочие файлы в виртуальную среду termux требует некоторых телодвижений но варианты есть и не один https://wiki.termux.com/wiki/Internal_and_external_storage

https://wiki.termux.com/wiki/Sharing_Data

ну и сервисы в termux можно запускать но ограничено

https://wiki.termux.com/wiki/Remote_Access

@asolokha
16.07.2024 06:08 UTC
0

Аналоги samsung dex и Nix-on-Droid - желательно на планшете. Не изобретайте лисапеты