Привет, читатель!

Ни для кого не секрет, что в марте 2022 года был подписан приказ, согласно которому для безопасности и технологической независимости требуется перейти на отечественное ПО, в частности операционные системы. На основном месте работы происходит массовый "переезд" ноутбуков и системных блоков на AstraLinux с последующей установкой Российского или открытого ПО, которое замещает санкционные или неподдерживаемые решения на аналогичные отечественные или свободно распространяемые. Мне стало интересно, если я переведу домашний ПК на AstraLinux, смогу ли продолжить полноценно заниматься хобби по созданию различных устройств? С одной стороны преграды нет, с другой стороны - установятся ли все нужные пакеты?

С данной статьей будет полезно ознакомиться, если вы хотите попробовать или на вашем предприятии происходит переход на новую ОС, а понимания будет ли работать то или иное приложение, нет. Также, здесь есть полезные заметки по установке приложений (python, kicad), на которые можно опираться при самостоятельной установке приложений. 

Установка системы

Операционная система находится в свободном доступе (ссылка на загрузку). При необходимости ОС можно также поставить в систему виртуализации, для чего на сайте вендора есть инструкция. В целом, ставится как и любой другой linux дистрибутив. Уточняю, что я не указывал никаких дополнительных параметров безопасности. Если будете ставить на устройство с Astra SE, то могут отличаться некоторые шаги.

Python

Данный ЯП и его интерпретатор позволяют разрабатывать минимальные интерфейсы связи с прибором для управления ими или снятия измерений. Дополнительно периодически возникает задача сделать графический интерфейс с кнопками, для чего предпочитаю использовать pyQt. Также kicad использует python для формирования некоторых файлов, например BOM. Позже планирую попробовать эмулятор цепей pySpice.

Из коробки доступна версия 3.5, из стандартного репозитория - 3.7.3. В целом оно работает, но некоторые новшества хотелось бы использовать. Скачиваем и распаковываем архив с официального сайта python, проводим ручную сборку и установку. В моем случае успешно взлетела версия 3.10.13, тогда как 3.11 не удалось установить. 

Для загрузки, распаковки и установки вбиваем следующие команды:

sudo apt install build-essential zlib1g-dev \ 
     libncurses5-dev libgdbm-dev libnss3-dev \
     libssl-dev libreadline-dev libffi-dev wget
wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz
tar -zxf Python-3.10.13.tgz
cd Python-3.10.13
./configure
sudo make altinstall

Примечание: для сборки kicad с помощью этой версии python необходимо запустить скрипт конфигурации со следующими флагами:

CFLAGS=-fPIC ./configure --enable-shared=yes --enable-optimizations

Далее наладим выбор нужной версии интерпретатора. Следующими командами добавляем каждую версию:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2  
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 0

Для выбора версии по умолчанию выполнить:

sudo update-alternatives --config python3  

Вместо 3.10.13 можете использовать практически любую доступную версию. После установки проверил  некоторые библиотеки (pyqt, openpyxl, numpy) и стандартные приложения (venv, pip) - работает в штатном режиме.

IDE

PyCharm

Данная среда  хоть и занимает много места на диске, но позволяет быстро и удобно отлаживать приложения, создавать проекты и всё это красиво обновлять в гите. Ставится и запускается как и на других linux системах (инструкция).

VSCode

Достаточно удобная среда для разработки. Существенный плюс - множество плагинов для конфигурирования под разработчика. Установка достаточно простая и описана в базе знаний от Группа Астра

После установки приступил к настройке среды, чтобы собирать проекты с помощью avr gcc по инструкции от @jogick

Приложение для компиляции кода для 8-ми битных микроконтроллеров avr-gcc не является стандартным и отсутствует в репозитории astra, так что так же скачиваем исходный код, конфигурируем и устанавливаем. Я устанавливал с помощью следующего скрипта: avr-gcc-10.2-freestanding.sh.

Далее ставлю следующий минимальный набор плагинов:

  • Arduino с дополнительной настройкой для менеджера плат;

  • VS Code Icons - удобная визуализация папок и файлов;

  • Prettier - универсальный линтер, делает красивые отступы во всем файле;

  • Better comments - цветные комментарии, мелочь, но делает навигацию немного удобнее;

  • GitLens - удобная навигация по репозиторию проекта.

Arduino IDE 2

Преимущественно использую vscode, но иногда быстро подцепить отладочную плату и отладить небольшой код удобнее как раз в этой среде. После релиза второй версии среды, пользоваться arduino ide стало сильно удобнее.

Скачиваем обновленную версию в архиве (appimage не сработал). Распаковываем архив, переносим в удобную папку и добавляем ее в PATH для запуска среды из консоли или переносим ярлык на рабочий стол.

 

Для указания прав интерфейса подключаемым платам, прописываем правила в конфигурацию согласно инструкции

KiCAD

Этот открытый САПР понравился за счет своей простоты, удобства и кроссплатформенности. Сейчас схемы и платы разрабатываю именно в этой среде и переходить к другому инструменту не считаю целесообразным для себя.

Некоторые пользователи отметят: kicad есть в репозитории для школ и колледжей (ссылка на скачивание репозитория). Да, есть, но для версии SE. При попытке запуска на CE получаем отсутствующие зависимости, которые установлены не будут (отсутствуют в общем репозитории астры). Помимо этого, хотел использовать версию ПО наиболее близкую к той, что уже установлена на других ПК, так что займемся старой - доброй сборкой из исходников.

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

Подробно про установку

Подготовка

Устанавливаем git, чтобы далее клонировать все необходимые репозитории для установки. Так же доставляем компоненты, необходимые для сборки проекта

sudo apt install git
sudo apt install \
    libgl1-mesa-dev libglew-dev libglm-dev zlib1g-dev\
    libcurl4-openssl-dev libcairo2-dev libgit2-dev \
    libboost-all-dev gir1.2-harfbuzz-0.0 libgraphite2-dev -y

Рекомендую создать временную папку, в которой будут проводиться все сборки следующих приложений.

CMake

Для установки kicad требуется свежая версия cmake, качаем и устанавливаем:

wget https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-linux-x86_64.sh
chmod +x cmake-3.28.1-linux-x86_64.sh

В качестве пути указать /usr/local

Boost 

Не смотря на то, что libboost-all-dev уже установлен, необходимо его обновить минимум до версии 1.71, для этого скачиваем исходники нужной версии и собираем следующим образом:

tar -xf boost_1_71_0.tar.gz
cd boost_1_80_0
sudo ./bootstrap.sh
sudo ./b2
sudo ./b2 install

wxWidgets 

Это графический интерфейс, используемый kicad. С версии kicad 7 нужен wxWidgets не ниже 3.2. Устанавливается следующим образом:

sudo apt install libgtk-3-0 libgtk-3-dev 
wget https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.4/wxWidgets-3.2.4.tar.bz2
tar -xjf wxWidgets-3.2.4.tar.bz2 wxWidgets-3.2.4/
mkdir wxWidgets-3.2.4/gtk-build
cd wxWidgets-3.2.4/gtk-build/
../configure --with-opengl \
   --with-gtk=4 \
   --prefix=/opt/wxWidgets-3.2.4
make -j4
sudo make install

Здесь и далее make используется с флагом -j4 для ограничения выполнения джоб. Данный флаг можно опустить.

Чтобы wxWidgets загружался и работал, добавляем конфигурационный файл с ссылкой на библиотеки для gui. Для этого открываем файл /etc/ld.so.conf.d/wxWidgets-3.2.4.conf и добавляем строку /opt/wxWidgets-3.2.4/lib. Далее выполняем:

export PATH=$PATH:/opt/wxWidgets-3.2.4/bin
sudo ldconfig

NGSPICE

Для установки этого приложения разработчики kicad 6 позаботились и добавили скрипт get_libngspice, однако в 7 версии его убрали. Команду wget можно пропустить если вы уже скачали репозиторий и выбрали нужную версию среды (ниже по тексту)

sudo apt install  autoconf automake byacc bison flex -y
wget https://gitlab.com/kicad/code/kicad/-/raw/f9a2dced07acac97c62eef0931269fea6bcfb828/scripting/build_tools/get_libngspice_so.sh
chmod +x get_libngspice_so.sh
./get_libngspice_so.sh
sudo ./get_libngspice_so.sh install

OpenCascade

Если хотите включить 3D просмотр плат и компонентов, то дополнительно нужно поставить OpenCascade, в противном случае указать при конфигурировании kicad флаг -DKICAD_USE_OCC=OFF, иначе необходимо собирать следующим образом:

wget https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.tar.gz
tar -zxf V7_6_0.tar.gz
mkdir OCCT-7_6_0/build
cd OCCT-7_6_0 /build
cmake -DINSTALL_DIR=/opt/OCCT-7_6_0 -DBUILD_MODULE_Draw:BOOL=FALSE ..
..make -j4
sudo make install

 SWIG

Используется для выполнения скриптов, расширяющих функционал kicad (например, генерация bom по шаблону).

wget https://github.com/swig/swig/archive/refs/tags/v4.0.2.tar.gz
tar -zxf v4.0.2.tar.gz
cd swig-4.0.2
./autogen.sh
./configure
make -j4
sudo make install
sudo ln -s /usr/local/bin/swig /usr/bin/swig

Теперь сам kicad!

git clone https://gitlab.com/kicad/code/kicad.git
cd kicad
git checkout 6.0.11

Переключаемся на предыдущую версию  6.0.11. Почему? Для более новой требуется сборка библиотеки clipper2, а для этого необходим gcc версии от 7 (C++ 17) (обсуждение на форуме) , но тратить еще пару вечеров на установку обновления gcc не хотелось.

Создаем папку, в которой будут собираться установочные файлы и запускаем сборку программы:

mkdir build
mkdir build/release
cd build/release

При сборке у меня возникла проблема с переменными типа atomic_int64_t. Если это не исправят в собираемой Вами версией приложения, то можно исправить в файле dialog_pcm_progress.h:

строки для корректировки

Далее производим сборку и установку приложения:

cmake -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_TESTING=OFF \
    -DOCC_LIBRARY_DIR=/opt/OCCT-7_6_0 \
    -DOCC_INCLUDE_DIR=/opt/OCCT-7_6_0/include/opencascade \
    -DCMAKE_INSTALL_PREFIX=/opt/KiCad-7 \
    -DDEFAULT_INSTALL_PATH=/opt/KiCad-7/kidata \
    -DwxWidgets_CONFIG_EXECUTABLE=/opt/wxWidgets-3.2.4/bin/wx-config \
    -DwxWidgets_ROOT_DIR=/opt/wxWidgets-3.2.4 \
    -DwxWidgets_LIBRARIES=/opt/wxWidgets-3.2.4/lib \
    -DwxWidgets_INCLUDE_DIRS=/opt/wxWidgets-3.2.4/include/wx-3.0/wx \
    -DKICAD_SCRIPTING_WXPYTHON=OFF \
    -DKICAD_BUILD_I18N=ON \
    -DKICAD_INSTALL_DEMOS=ON \
    -DKICAD_PCM=ON \
    -DKICAD_SPICE=ON \
    -DKICAD_STDLIB_DEBUG=OFF \
    -DKICAD_USE_EGL=ON \
    -LIBS='-ldl'
    -DKICAD_VERSION_EXTRA=custom \
    ../../

make -j4
sudo make install
export PATH=$PATH:/opt/KiCad-7/bin/

Результатом установки является рабочее ПО, в котором включены и работают все компоненты. По желанию можете вынести ярлык на рабочий стол парой кликов.

Опыт эксплуатации

Немного опробовал данную систему при реализации pet проекта. По ощущениям - очень похоже на другие linux дистрибутивы, но с менее привычным и плоским kde. Касательно установки приложений - всё запустилось и работает стабильно, но как и с другими unix системами иногда нужно запариться для установки. На некоторые вопросы есть ответы в базе знаний Astra Linux

Изначально хотел написать раздел с плюсами и минусами, но как было сказано ранее - тот же линукс, соответственно те же преимущества и недостатки. Можно ли считать astra полной замены windows для электронщиков - возможно, но только если задаться задачей и плотно работать над перемещением, установкой и стабилизацией нужных версий приложений из исходников или настраивая эмуляторы под приложения.

В планах - установка дополнительного софта, который использую реже, такие как avrdude_prog gui и компас 3D.

Кстати, Аскон активно перерабатывает приложение для запуска на linux (дорожная карта миграции), но до перехода есть вариант как самостоятельно поставить и настроить wine (инструкция от @kompas_3d) так и использовать готовое решение (настройка компаса в wine @Etersoft)