Автоматизация портирования ОС «Альт» на новые аппаратные платформы (Глеб Фотенгауэр-Малиновский, OSSDEVCONF-2017)
Материал из 0x1.tv
- Докладчик
- Глеб Фотенгауэр-Малиновский
Альт несколько раз был портирован на различные аппаратные платформы.
Среди них x86_64, PowerPC, разные версии архитектуры ARM.
Существовал даже экспериментальный порт на x32. Все эти порты делались без учёта того, что опыт этого портирования может пригодиться в будущем.
На самом деле такой опыт можно не просто записывать, но и оформлять в виде сценариев для автоматического портирования. Такие сценарии можно исполнять не только тогда, когда нужно получить ОС для новой аппаратной платформы, но и по мере изменения основного репозитория для поддержания инструментов автоматического портирования в работоспособном состоянии.
Содержание
Видео[править вики-текст]
Презентация[править вики-текст]
Thesis[править | править вики-текст]
Стадии портирования[править | править вики-текст]
Портирование ОС «Альт» на новую платформу можно разделить на следующие стадии:
- минимальная сборочная среда (toolchain, shell, make);
- сборщик пакетов (rpmbuild);
- сборочная среда в виде пакетов (для сборки в изолированном сборочном окружении);
- массовая сборка пакетов;
- пересборка всех собранных пакетов;
- интеграция новой архитектуры в общую систему сборки пакетов (возможно, в «догоняющем» режиме);
Способы портирования[править | править вики-текст]
Есть два основных способа ручного портирования ОС на базе GNU/*/Linux на новую аппаратную платформу:
- на основе существующего порта другого дистрибутива;
- с помощью кросс-компилятора под целевую архитектуру.
Первый способ кажется самым простым, потому что позволяет пропустить стадию 1 и сразу перейти к стадии 2, а сборку toolchain отложить до стадии 3. Второй способ кажется более сложным, но позволяет собирать порт без зависимости от других дистрибутивов, или если порт на эту архитектуру вообще отсутствует.
Сложность портирования[править | править вики-текст]
Бoльшая часть проблем в процедуре портирования, как ни странно, касается не особенностей конкретной архитектуры, а устройства программных компонентов, которые часто требуют других компонентов, которые ещё не собраны. Такие зависимости часто образуют циклы, которые приходится «разрывать» для каждого продукта по-своему.
Автоматизация портирования[править | править вики-текст]
Всю работу, проделываемую при портировании, которая касается сложности портирования, а не особенностей конкретной архитектуры, можно автоматизировать. В таком случае можно будет поддерживать систему автоматического портирования в работоспособном состоянии, а при необходимости сделать порт на новую платформу решать уже только проблемы конкретной платформы.
Результаты[править | править вики-текст]
На данный момент готов набор скриптов, который позволяет полностью автоматически собрать среду для кросс-компиляции, стадию 1 и стадию 2.
Примечания и ссылки[править вики-текст]
Plays:118 Comments:0

