В жизни каждого программиста наступает момент когда он хочет совершить путешествие....
Ну, может быть, и не каждого, и, может даже и не вот путешествие: суть рассматриваемой задачи сводится обеспечению возможности оперативно поправить пару строчек в программе, перекомпилировать, и что то сделать с результатом.
Компиляторы для контроллеров: arm gcc, avr gcc, risc-v gcc, которые, в принципе, есть в виде собранных бинарников под x86-64 и aarch.
Либо же задача "поправить пару строчек в конфиге" - немножко другое, но тоже рядом. Для этого тоже нужно две железяки: 1) Железяка, которое обеспечивает непосредственное взаимодействие с пользователем, ввод команд и исходников, нечто с клавиатурой и экраном. 2) Железяка где будет исполнятся софт, компиляция, запуск, предположительно в среде Linux. Так сказать, фронтэнд и бэкенд.
В зависимости от ситуации, это может быть и одно устройство, либо два... возможны очень разные варианты, которые хотелось бы перечислить и обсудить.
А приоритет будет такой: железок с собой (в дороге) хочется таскать как можно меньше.
Рассмотрим варианты.
Ноутбук на Windows/Linux, скорее всего на архитектуре x86-64. Если это Ваш вариант - дальше можно не читать. Выбираем на свой вкус, и кошелек, ноутбуки есть очень разные. Однако это килограмм-полтора веса, которые могут показаться лишними. А там еще и зарядка. Есть, конечно, очень небольшие ноутбуки, с экранами 7-10 дюймов, но стоят они, как правило, далеко не так дешево как первые примитивные неттопы, с которых все начиналось когда-то. Сюда же можно отнести всяческие вариации SteamDesk, но у них нет встроенной клавиатуры. Отдельно стоит отметить исчезающий класс планшетов на Windows. Microsoft до сих пор предлагает новинки. Но вот варианты с экраном около 8 дюймов похоже остались в прошлом, только на вторичном рынке, да и памяти у них не густо. По весу выходит легче, чем ноутбук, но к этому весу надо добавить вес клавиатуры. И в том и другом случае можно попробовать использовать многочисленные дистрибутивы Linux, иногда остаются вопросы драйверов к сенсорным экранам, WiFi, различным аппаратным опциям. Да и Windows никто не запрещает, только стоит контролировать расход трафика, особенно в роуминге.
Девайс на Андройде: смартфон, планшет, даже игровая приставка. Плюс, вероятно, клавиатура. Для любителей - смартфон с клавиатурой, типа Blackberry Priv или Uniherz titan, но у них нет функциональных и курсорных клавиш, все равно придется управлять Midnight Commander при помощи сенсорного экрана. Портативная Bluetooth-клавиатура, казалось бы - не проблема, но пару нюансов стоит отметить. В крупных федеральных сетях выбор Bluetooth может быть весьма не широк, а ценник на фирменные клавиатуры для планшета такой, что в других местах за цену одной такой клавиатуры можно взять целый планшет, причем в комплекте с Bluetooth-клавиатурой (самый дешеман конечно, но тем не менее). А если клавиатура покупается отдельно, то могут возникнуть вопросы совместимости. Например, один смартфон на кастомной сборке AOSP вообще отказался работать с любыми клавиатурами (включая USB), что приводит к вопросу смены прошивки, а это хлопотно, да и без гарантий. На Android без проблем можно запустить SSH клиент, а помимо этого есть и другие возможности для запуска софта локально (об этом далее), так же при этом куча всякого софта рассчитанного на сенсорное управление и не только для работы. Который, иногда, тоже любит передавать всякую телеметрию, но похоже все уже привыкли. И, если говорить про вес, то более стоит рассмотреть устройства с экраном размером менее обычных 10 дюймов, однако выбор таких устройств не слишком велик.
Девайс от Apple. Командная строка конечно есть, вопрос скорее - есть ли нужный софт. Гуглинг показал что все не просто, нет ответа на вопрос
Девайс на AuroraOS (есть смартфоны и планшеты). Это же по сути Linux, предусмотрен terminal из коробки, правда надо зарегистрироваться как разработчик, и софт придется самому компилировать (готовые бинарники под arm7h не всегда есть). Большое неудобство - клавиатура в AuroraOS 4 работает только на ввод текста, системой ей управлять нельзя. А подключенная мышка не отображает курсор, нажатия - виртуальные.
Девайс на Ubuntu Touch или сборке Kali Linux. Ну да, у нас есть почти обычная Ubuntu arm под некоторые планшеты и довольно большой спектр смартфонов, которые пока что можно найти в продаже, в основном на вторичке. Правда, уже не совсем свежая, но под нее вполне можно запустить необходимый софт. Вопрос в поддержке оборудования, ну и в целом - необходимо сыскать нужный девайс и его прошить. А девайс этот будет на Android, с которым и так можно сделать многое, не заморачиваясь Ubuntu touch.
Nintendo Switch Устройство на неслабом процессоре, для которого есть свежайшая Ubuntu, Fedora, а так же Android. Последний, впрочем - как и на огромном числе других приставок на Android. Опять же вопрос только в клавиатуре.
Экзотика по типу Clockwork uConsole и некоторых (полу)самодельных устройств ориентированных быть именно небольшим девайсом с Linux, только по сравнению с планшетами - не такие уж они и компактные.
Собственно говоря, на любом из перечисленных устройств можно запустить какой-нибудь компилятор. Но есть и другие варианты.
Одноплатник, в очень широком смысле слова: (очень) небольшая платка в типоразмере 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.
Удаленный сервер, чтобы не таскать его с собой. Дома, на работе, арендованный. Этот вариант является более чувствительным как в плане организации безопасного доступа, так и доступности и стабильности. Начиная с того, что гостиничный WiFi запросто может резать протокол SSH. Ну и чувствительные данные лучше держать в зашифрованном виде, не только на арендованном vps, но и в любом перечисленном здесь случае. Стоит отметить возможность запускать VS Code в качестве сервера, оно может дистанционно, например через SSH. Официально в качестве клиента для этого сервера необходимо использовать так же VS Code, который существует под Windows/Linux/MacOS, но не под Andoid/IPad. Однако, как подсказали в комментариях эту штуку можно запускать как обычный вебсервер и работать удаленно, в браузере.
-
Гибридный вариант: использовать 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, да и не только.
Какие будут мысли?