1. Введение
В этом документе описывается, как собрать программное обеспечение LinuxCNC из исходного кода. Это в первую очередь полезно, если вы разработчик, модифицирующий LinuxCNC. Это также может быть полезно, если вы являетесь пользователем, тестирующим ветки разработчиков, хотя в этом случае у вас также есть возможность просто установить пакеты Debian из buildbot (http://buildbot.linuxcnc.org) или как обычный пакет из вашего Дистрибутив Linux (https://tracker.debian.org/pkg/linuxcnc). Следует признать, что этот раздел также существует, поскольку LinuxCNC — это работа сообщества, и вам предлагается внести свой вклад в развитие LinuxCNC. Как правило, вы хотите скомпилировать LinuxCNC самостоятельно для немедленного функционального доступа * к новой разработке LinuxCNC или * новая разработка вы возможно хотите внести вклад в LinuxCNC или помочь другим завершить его.
Например, вы можете переносить LinuxCNC на какой-то новый дистрибутив Linux или, что часто бывает, разработчик реагирует на ваш отчет о проблеме, исправление которой вы хотите протестировать. Любое такое изменение не увидит buildbot, который мог бы помочь, или эта помощь будет отложена, ожидая чьего-то обзора, которого вы не хотите ждать, или вы единственный человек с определенным оборудованием для тестирования кода.
Помимо программ, управляющих вашим компьютером и созданных на основе исходного дерева, вы также можете создавать те же файлы PDF и/или HTML, которые вы, вероятно, встречали в сети по адресу https://linuxcnc.org/documents/.
Если вы хотите внести свой вклад в LinuxCNC, но не уверены, с чего начать, пожалуйста, серьезно рассмотрите возможность внесения вклада в документацию. Каждый всегда находит что-то, что можно улучшить - и если вы просто оставите "FIXME: with a comment" в тексте в качестве ссылки для себя и других, чтобы вернуться к разделу позже. Кроме того, переводы на языки, отличные от английского, скорее всего, выиграют от вашего пристального внимания на https://hosted.weblate.org/projects/linuxcnc/ .
2. Скачивание дерева исходников
Репозиторий git проекта LinuxCNC находится по адресу https://github.com/LinuxCNC/linuxcnc. GitHub — популярный сервис хостинга git и сайт для обмена кодом.
Для получения исходного дерева у вас есть два варианта:
- Скачать архив
-
На странице проекта LinuxCNC в GitHub найдите ссылку на "релизы" или "теги", щелкните гиперссылку на страницу архива и загрузите последний файл .tar. Вы найдете этот файл, сжатый как файл .tar.xz или .tar.gz. Этот файл, обычно называемый "tarball", является архивом, очень похожим на .zip. Ваш рабочий стол Linux будет знать, как обращаться с этим файлом, если дважды щелкнуть по нему.
- Подготовьте локальную копию репозитория LinuxCNC
-
Сначала вам следует установить инструмент "git" на свой компьютер, если он еще не доступен (
sudo apt install git
). Затем подготовьте локальный экземпляр исходного дерева следующим образом: .
$ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir
Первый аргумент команды git выдает это: Это называется "clone" репозитория LinuxCNC. Преимущество в том, что этот локальный клон поддерживает связь об изменениях, которые вы можете решить выполнить в исходном дереве.
GitHub — это инфраструктура сама по себе, и подробно она описана в другом месте. Просто чтобы мотивировать вас, если вы еще этого не знаете, предлагается выполнить клонирование для вас и сделать этот экземпляр общедоступным. GitHub называет такой дополнительный экземпляр другого репозитория "fork". Вы можете легко (и бесплатно) создать форк репозитория git LinuxCNC на GitHub и использовать его для отслеживания и публикации своих изменений. После создания собственного форка GitHub LinuxCNC клонируйте его на свой компьютер для разработки и продолжайте заниматься хакингом как обычно.
Мы из проекта LinuxCNC надеемся, что вы поделитесь с нами своими изменениями, чтобы сообщество могло извлечь пользу из вашей работы. GitHub делает этот обмен очень простым: после того, как вы отшлифуете свои изменения и отправите их в свой форк github, отправьте нам запрос Pull Request.
2.1. Быстрый старт
Для нетерпеливых попробуйте следующее:
$ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-source-dir
$ cd linuxcnc-source-dir/src
$ ./autogen.sh
$ ./configure --with-realtime=uspace
$ make
Это, вероятно, не удастся! Это не делает вас плохим человеком, это просто означает, что вы должны прочитать весь этот документ, чтобы узнать как решить свои проблемы. Особенно раздел удовлетворение зависимостей сборки.
Если вы работаете в системе с поддержкой реального времени (например, при установке из образа LinuxCNC Live/Install Image, см. раздел В реальном времени ниже), в настоящее время требуется один дополнительный шаг сборки:
$ sudo make setuid
После того, как вы успешно собрали LinuxCNC, пришло время запустить тесты:
$ source ../scripts/rip-environment
$ runtests
Это тоже может не получиться! Прочтите весь этот документ, но особенно раздел Настройка среды тестирования.
3. Поддерживаемые платформы
Проект LinuxCNC нацелен на современные дистрибутивы на основе Debian, включая Debian, Ubuntu и Mint. Мы постоянно тестируем на платформах, перечисленных на http://buildbot.linuxcnc.org.
LinuxCNC собирается на большинстве других дистрибутивов Linux, хотя управление зависимостями будет более ручным и менее автоматическим. Всегда приветствуются исправления для улучшения переносимости на новые платформы.
3.1. В реальном времени
LinuxCNC — это контроллер станка, и ему требуется платформа реального времени для этой работы. Эта версия LinuxCNC поддерживает следующие платформы. Первые три в списке являются операционными системами реального времени:
- RTAI
-
С сайта https://www.rtai.org. Ядро Linux с патчем RTAI доступно в архиве Debian по адресу https://linuxcnc.org. Инструкции по установке см. Получение LinuxCNC.
- Xenomai
-
С сайта https://xenomai.org. Вам придется скомпилировать или получить ядро Xenomai самостоятельно.
- Preempt-RT
-
С https://rt.wiki.kernel.org. Ядро Linux с патчем Preempt-RT иногда доступно в архиве Debian по адресу https://www.debian.org и в интернет-архиве по адресу https://snapshot.debian.org.
- Не в реальном времени
-
LinuxCNC can also be built and run on non-realtime platforms, such as a regular install of Debian or Ubuntu without any special realtime kernel.
In this mode LinuxCNC is not useful for controlling machine tools, but it is useful for simulating the execution of G-code and for testing the non-realtime parts of the system (such as the user interfaces, and some kinds of components and device drivers).
To make use of the realtime capabilities of LinuxCNC, certain parts of LinuxCNC need to run with root privileges. To enable root for these parts, run this extra command after themake
that builds LinuxCNC:
$ sudo make setuid
4. Режимы сборки
Существует два способа сборки LinuxCNC: удобный для разработчиков режим «запуска на месте» (run in place) и удобный для пользователя режим создания пакетов Debian.
4.1. Сборка для запуска на месте (RIP)
При сборке Run-In-Place программы LinuxCNC компилируются из исходного кода, а затем запускаются непосредственно из каталога сборки. Ничего не устанавливается за пределами каталога сборки. Это быстро и легко и подходит для быстрого внесения изменений. Набор тестов LinuxCNC работает только в сборке Run-In-Place. Большинство разработчиков LinuxCNC в основном используют этот режим.
Сборка для запуска на месте делается по шагам, описанным в разделе Быстрый старт в верхней части этого документа, возможно, с разными параметрами для src/configure
и make
.
4.1.1. src/configure
параметры
Скрипт src/configure
настраивает способ компиляции исходного кода. Он принимает много необязательных параметров. Вывести все аргументы src/configure
запуском этого:
$ cd linuxcnc-source-dir/src
$ ./configure --help
Наиболее часто используемые параметры:
-
--with-realtime=uspace
-
Создавайте для любой платформы реального времени или для не-реального времени. Полученные исполняемые файлы LinuxCNC будут работать как на ядре Linux с патчами Preempt-RT (обеспечивающими управление машиной в реальном времени), так и на обычном (непропатченном) ядре Linux (обеспечивающем симуляцию G-кода, но без управления машиной в реальном времени).
Если установлены файлы разработки для Xenomai (обычно из пакета libxenomai-dev) или RTAI (обычно из пакета с именем, начинающимся с "rtai-modules"), поддержка этих ядер реального времени также будет включена.
-
--with-realtime=/usr/realtime-$VERSION
-
Сборка для платформы реального времени RTAI с использованием более старой модели "ядро реального времени". Для этого необходимо, чтобы у вас было ядро и модули RTAI, установленные в
/usr/realtime-$VERSION
. Полученные исполняемые файлы LinuxCNC будут работать только на указанном ядре RTAI. Начиная с LinuxCNC 2.7, это обеспечивает наилучшую производительность в реальном времени. -
--enable-build-documentation
-
Сборка документации в дополнение к исполняемым файлам. Эта опция значительно увеличивает время, необходимое для компиляции, так как сборка документации занимает довольно много времени. Если вы не активно работаете над документацией, вы можете опустить этот аргумент.
-
--disable-build-documentation-translation
-
Отключить сборку переведенной документации для всех доступных языков. Сборка переведенной документации занимает огромное количество времени, поэтому рекомендуется пропустить это, если в этом нет особой необходимости.
4.1.2. Параметры make
Команда make принимает два полезных опциональных параметра.
- Параллельная компиляция
-
make
принимает опциональный параметр-j
N (где N — число). Это позволяет выполнять параллельную компиляцию с N одновременными процессами, что может значительно ускорить вашу сборку.Полезным значением N является количество ЦП в вашей системе сборки.
Вы можете узнать количество процессоров, запустив nproc
.
- Сборка только конкретного элемента
-
Если вы хотите собрать только определенный компонент LinuxCNC, вы можете указать на то, что хотите собрать, в командной строке
make
. Например, если вы работаете над компонентом с именемfroboz
, вы можете собрать его исполняемый файл, запустив:$ cd linuxcnc-source-dir/src $ make ../bin/froboz
4.2. Сборка Debian пакетов
При сборке пакетов Debian программы LinuxCNC компилируются из исходного кода и затем сохраняются в пакете Debian вместе с информацией о зависимостях. Этот процесс по умолчанию также включает сборку документации, которая занимает время из-за всех операций ввода-вывода для многих языков, но ее можно пропустить. Затем LinuxCNC устанавливается как часть этих пакетов на тот же компьютер или на любой другйо компьютер такой же архитектуры, на которую копируются файлы .deb. LinuxCNC нельзя запустить, пока пакеты Debian не будут установлены на целевом компьютере, а затем исполняемые файлы не будут доступны в /usr/bin и /usr/lib, как и другое обычное программное обеспечение системы.
Этот режим сборки в первую очередь полезен при упаковке программного обеспечения для доставки конечным пользователям, а также при сборке программного обеспечения для компьютера, на котором не установлена среда сборки или нет доступа к Интернету.
Сборка пакетов в первую очередь полезна при упаковке программного обеспечения для доставки конечным пользователям. Разработчики между собой обмениваются только исходным кодом, который, вероятно, поддерживается репозиторием LinuxCNC GitHub, указанным ниже. Кроме того, при создании программного обеспечения для машины, на которой не установлена среда сборки или нет доступа к Интернету, можно с радостью принять готовый пакет.
Сборка пакетов Debian выполняется с помощью инструмента dpkg-buildpackage
, который предоставляется пакетом dpkg-dev
. Его выполнение сопровождается рядом предварительных условий, которые подробно описаны ниже:
* Должна быть установлена общая инфраструктура сборки, т.е. компиляторы и т.д.
* должны быть установлены зависимости на момент сборки, т.е. заголовочные файлы для используемых внешних библиотек кода, как описано в разделе Удовлетворение зависимостей сборки.
* файл в папке Debian должен быть полным и описывать пакет
Инструменты сборки были собраны в виртуальный пакет с именем build-essential
. Чтобы установить его, выполните:
$ sudo apt-get install build-essential
Как только эти предварительные условия соблюдены, сборка пакетов Debian состоит из двух шагов.
Первым шагом является создание скриптов пакета Debian и метаданных из репозитория git, путем запуска:
$ cd linuxcnc-dev
$ ./debian/configure
Note
|
Скрипт`debian/configure` отличается от скрипта Скрипт |
После конфигурации скриптов и метаданных пакета Debian соберите пакет, запустив dpkg-buildpackage
:
$ dpkg-buildpackage -b -uc
Note
|
|
4.2.1. LinuxCNC’s debian/configure
параметры
В исходном дереве LinuxCNC есть каталог Debian со всей информацией о том, как должен быть собран пакет Debian, но некоторые ключевые файлы в нем распространяются только как шаблоны. Скрипт debian/configure
подготавливает эти инструкции по сборке для обычных утилит упаковки Debian и поэтому должен быть запущен до dpkg-checkbuilddeps
или dpkg-buildpackage
.
Скрипт debian/configure
принимает один аргумент, который определяет базовую платформу реального или не реального времени, для которой будет выполняться сборка. Обычные значения этого аргумента:
-
no-docs
-
Пропустить сборку документации.
-
uspace
-
Настройте пакет Debian для режима Preempt-RT в реальном времени или для режима не в реальном времени (эти два варианта совместимы).
-
noauto
-
rtai
-
xenomai
-
Обычно списки ОСРВ для поддержки uspace realtime определяются автоматически. Однако, если вы хотите, вы можете указать одну или несколько из них после
uspace
, чтобы включить поддержку этих ОСРВ. Чтобы отключить автоопределение, укажитеnoauto
.Если вам нужен только традиционный «модуль ядра» RTAI в реальном времени, используйте вместо этого
-r
или$KERNEL_VERSION
. -
rtai=<package name>
-
Если пакет разработки для RTAI lxrt не запускается с "rtai-modules", или если первый такой пакет, указанный поиском apt-cache, не является нужным, тогда явно укажите имя пакета.
-
-r
-
Настройте пакет Debian для работающего в данный момент ядра RTAI. Чтобы это работало, на вашей сборочной машине должно быть запущено ядро RTAI!
-
$KERNEL_VERSION
-
Настройте пакет Debian для указанной версии ядра RTAI (например, «3.4.9-rtai-686-pae»). На компьютере, на котором производится сборка, должен быть установлен пакет Debian с совпадающими заголовками ядра (например, «linux-headers-3.4.9-rtai-686-pae»). Обратите внимание, что вы можете собирать LinuxCNC в этой конфигурации, но если вы не используете соответствующее ядро RTAI, вы не сможете запустить LinuxCNC, включая набор тестов.
4.2.2. Удовлетворение зависимостей сборки
На платформах на основе Debian мы предоставляем метаданные о пакетах , которые знают, какие внешние программные пакеты необходимо установить для сборки LinuxCNC. Это называется зависимостями сборки LinuxCNC. Они называются зависимостями сборки LinuxCNC, т.е. теми пакетами, которые должны быть доступны * сборка прошла успешно и * сборка может быть сделана воспроизводимо.
Вы можете использовать эти метаданные для легкого перечисления требуемых пакетов, отсутствующих в вашей системе сборки. Сначала перейдите в исходное дерево LinuxCNC и инициируйте его самонастройку по умолчанию, если она еще не выполнена:
$ cd linuxcnc-dev
$ ./debian/configure
Это подготовит файл debian/control, содержащий списки пакетов Debian, которые необходимо создать, с зависимостями времени выполнения для этих пакетов, а для нашего случая также и зависимости сборки для этих пакетов, которые необходимо создать.
Самый простой способ установить все зависимости сборки — просто выполнить (из того же каталога):
sudo apt-get build-dep .
которая установит все требуемые зависимости, еще не установлены, но доступны. . является частью командной строки, т.е. инструкцией по извлечению зависимостей для исходного дерева, а не для зависимостей другого пакета. Это завершает установку build-dependencies.
Оставшаяся часть этого раздела описывает полуручной подход. Список зависимостей в debian/control длинный, и сравнивать с ним текущее состояние уже установленных пакетов утомительно. В системах Debian есть программа под названием dpkg-checkbuilddeps, которая анализирует метаданные пакета и сравнивает пакеты, перечисленные как зависимости сборки, со списком установленных пакетов, а также сообщает вам, чего не хватает.
Сначала установите программу dpkg-checkbuilddeps
, запустив:
$ sudo apt-get install dpkg-dev
Это создает файл debian/control
в формате yaml, доступном для чтения пользователем, в котором перечислены зависимости сборки ближе к началу. Вы можете использовать эти метаданные для простого перечисления требуемых пакетов, отсутствующих в вашей системе сборки. Вы можете решить вручную проверить эти файлы, если у вас есть хорошее представление о том, что уже установлено.
В качестве альтернативы системы Debian предоставляют программу dpkg-checkbuilddeps
, которая анализирует метаданные пакета и сравнивает пакеты, перечисленные как зависимости сборки, со списком установленных пакетов и сообщает вам, чего не хватает. Кроме того, dpkg-buildpackage
сообщит вам о том, чего не хватает, и это должно быть нормально. Однако она сообщает об отсутствующих зависимостях сборки только после того, как исправления в каталоге debian/patches
были автоматически применены (если таковые имеются). Если вы новичок в Linux и управлении версиями git, чистый старт может быть предпочтительнее, чтобы избежать осложнений.
Программу dpkg-checkbuilddeps
(также из пакета dpkg-dev, который устанавливается как часть зависимостей build-essential) можно попросить выполнить свою работу (обратите внимание, что ее нужно запустить из каталога linuxcnc-source-dir
, не из linuxcnc-source-dir/debian
):
$ dpkg-checkbuilddeps
Он выдаст список пакетов, которые требуются для сборки LinuxCNC на вашей системе, но пока не установлены. Теперь вы можете установить отсутствующие зависимости сборки
- вручную
-
Установите их все с помощью
sudo apt-get install
, а затем имена пакетов. Вы можете повторно запуститьdpkg-checkbuilddeps
в любое время, чтобы получить список отсутствующих пакетов, что не повлияет на исходное дерево. - автоматизированный
-
Запустите
sudo apt build-dep .
.
Если вы сомневаетесь в том, что может предоставлять конкретный пакет build-dep, проверьте описание пакета с помощью ``apt-cache show`` packagename.
4.2.3. Варианты для dpkg-buildpackage
Для сборки типичного пакета Debian вам нужно запустить dpkg-buildpackage без каких-либо аргументов. Как было указано выше, команде переданы две дополнительные опции. Как и для всех хороших инструментов Linux, на странице руководства есть все подробности с помощью man dpkg-buildpackage
.
-
-uc
-
Не подписывайте цифровыми подписями полученные двоичные файлы. Вам следует подписывать пакеты своим ключом GPG только в том случае, если вы хотите распространять их среди других. Если эта опция не установлена, а затем пакет не подписан, это не повлияет на файл .deb.
-
-b
-
Компилирует только архитектурно-зависимые пакеты (например, двоичные файлы
linuxcnc
и GUI). Это очень полезно, чтобы избежать компиляции того, что не зависит от оборудования. Для LinuxCNC это документация, которая в любом случае доступна онлайн.
Если у вас возникли трудности при компиляции, посетите онлайн-форум LinuxCNC.
В настоящее время появляется поддержка переменной среды DEB_BUILD_OPTIONS. Установите ее в
-
nodocs
-
чтобы пропустить сборку документации, лучше использовать флаг
-B
для dpkg-buildpackage. -
nocheck
-
для пропуска самотестирования процесса сборки LinuxCNC. Это экономит время и снижает потребность в нескольких программных пакетах, которые могут быть недоступны для вашей системы, например, в xvfb. Не следует устанавливать эту опцию, чтобы получить дополнительную уверенность в том, что ваша сборка будет работать так, как ожидается, если только вы не сталкиваетесь с чисто техническими трудностями с зависимостями программного обеспечения, специфичными для тестирования.
Переменная окружения может быть установлена вместе с выполнением команды, например:
DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -uc -B
объединит все варианты, представленные в этом разделе.
4.2.4. Установка самостоятельно собранных пакетов Debian
Пакет Debian можно распознать по его расширению .deb. Инструмент, устанавливающий его, dpkg
, является частью каждой установки Debian. Файлы .deb, созданные dpkg-buildpackage
, находятся в каталоге выше linuxcnc-source-dir, т. е. в ..
. Чтобы увидеть, какие файлы предоставляются в пакете, запустите
dpkg -c ../linuxcnc-uspace*.deb
Версия LinuxCNC будет частью имени файла, которое должно соответствовать звездочке. Возможно, в списке слишком много файлов, чтобы поместиться на экране. Если вы не можете прокрутить вверх в своем терминале, добавьте | more
к этой команде, чтобы ее вывод прошел через так называемый "pager". Выйдите, нажав "q".
Чтобы установить пакеты, запустите
sudo dpkg -i ../linuxcnc*.deb
5. Настройка среды
В этом разделе описываются специальные шаги, необходимые для настройки станка для запуска программ LinuxCNC, включая тесты.
5.1. Увеличьте лимит заблокированной памяти
LinuxCNC пытается улучшить свою задержку в реальном времени, блокируя используемую память в ОЗУ. Это делается для того, чтобы не дать операционной системе выгрузить LinuxCNC на диск, что может плохо сказаться на задержке. Обычно блокировка памяти в ОЗУ не приветствуется, и операционная система устанавливает строгие ограничения на объем памяти, который пользователь может заблокировать.
При использовании платформы реального времени Preempt-RT LinuxCNC запускается с достаточными привилегиями, чтобы самостоятельно повысить свой лимит блокировки памяти. При использовании платформы реального времени RTAI у него недостаточно привилегий, и пользователь должен повысить лимит блокировки памяти.
Если LinuxCNC при запуске отображает следующее сообщение, проблема заключается в установленном в вашей системе ограничении заблокированной памяти:
RTAPI: ERROR: failed to map shmem
RTAPI: Locked memory limit is 32KiB, recommended at least 20480KiB.
Чтобы исправить эту проблему, добавьте файл с именем /etc/security/limits.d/linuxcnc.conf
(как root) с помощью вашего любимого текстового редактора (например, sudo gedit /etc/security/limits.d/linuxcnc.conf
). Файл должен содержать следующую строку:
* - memlock 20480
Выйдите из системы и войдите снова, чтобы изменения вступили в силу. Убедитесь, что предел блокировки памяти повышен, используя следующую команду:
$ ulimit -l
6. Сборка на Gentoo
Сборка на Gentoo возможна, но не поддерживается. Убедитесь, что вы используете профиль рабочего стола. Этот проект использует Tk Widget Set, asciidoc и имеет некоторые другие зависимости. Они должны быть установлены как root:
~ # euse -E tk imagequant
~ # emerge -uDNa world
~ # emerge -a dev-libs/libmodbus dev-lang/tk dev-tcltk/bwidget dev-tcltk/tclx
~ # emerge -a dev-python/pygobject dev-python/pyopengl dev-python/numpy
~ # emerge -a app-text/asciidoc app-shells/bash-completion
Вы можете переключиться обратно на обычного пользователя для большей части оставшейся части установки. Как этот пользователь, создайте виртуальную среду для pip, затем установите пакеты pip:
~/src $ python -m venv --system-site-packages ~/src/venv
~/src $ . ~/src/venv/bin/activate
(venv) ~/src $ pip install yapps2
(venv) ~/src $
Затем вы можете продолжить как обычно:
(venv) ~/src $ git clone https://github.com/LinuxCNC/linuxcnc.git
(venv) ~/src $ cd linuxcnc
(venv) ~/src $ cd src
(venv) ~/src $ ./autogen.sh
(venv) ~/src $ ./configure --enable-non-distributable=yes
(venv) ~/src $ make
Нет необходимости запускать "make suid", просто убедитесь, что ваш пользователь находится в группе "dialout". Чтобы запустить linuxcnc, вы должны находиться в виртуальной среде Python и настроить среду linuxcnc:
~ $ . ~/src/venv/bin/activate
(venv) ~ $ . ~/src/linuxcnc/scripts/rip-environment
(venv) ~ $ ~/src/linuxcnc $ scripts/linuxcnc
7. Варианты проверки репозитория git
Инструкции Quick Start в верхней части этого документа клонируют наш репозиторий git с https://github.com/LinuxCNC/linuxcnc.git. Это самый быстрый и простой способ начать. Однако есть и другие варианты, которые стоит рассмотреть.
7.1. Форкните нас на GitHub
Git-репозиторий проекта LinuxCNC находится по адресу https://github.com/LinuxCNC/linuxcnc. GitHub — популярный сервис хостинга git и сайт для обмена кодом. Вы можете легко (и бесплатно) создать форк (второй экземпляр, содержащий копию, которую вы контролируете) git-репозитория LinuxCNC на GitHub. Затем вы можете использовать этот форк для отслеживания и публикации своих изменений, получения комментариев к своим изменениям и принятия патчей от сообщества.
После создания собственного форка LinuxCNC на GitHub клонируйте его на свой компьютер для разработки и продолжайте заниматься хакингом как обычно.
Мы из проекта LinuxCNC надеемся, что вы поделитесь с нами своими изменениями, чтобы сообщество могло извлечь пользу из вашей работы. GitHub делает этот обмен очень простым: после того, как вы отшлифуете свои изменения и отправите их в свой форк GitHub, отправьте нам запрос на Pull Request.