Автосборка загрузочных образов KolibriOS в Linux на отдельно взятой машине

Предлагаем Вашему вниманию статью, написанную righthearted, одним из наших четырёх студентов на Google Summer of Code в этом году. Статья рассказывает о том, как он настраивал автосборку KolibriOS в Linux на своём компьютере. Задача не совсем тривиальная.imageЭтот пост будет полезен для тех, кто хочет проверить возможность добавления своей программы в официальную автосборку KolibriOS, при этом не ломая сервер. Наглядным примером этому является сам автор этой статьи. При попытках сдать квалификационное задание для Google Summer of Code, многократно ломалась итальянская версия автосборки, и один раз даже завис сервер, на котором хранятся исходники всей системы. Чтобы такое не повторялось, в данной статье приводится инструкция по настройке автосборки загрузочных образов KolibriOS. Всё описанное проверялось на 64-разрядной версии Ubuntu. Для остальных дистрибутивов процедура не должна сильно отличаться. По возможности, я буду расписывать каждый шаг, чтобы не упустить ничего важного.

Подготовка исходниковИтак, для начала нам нужно будет установить систему контроля версий Subversion. Это делается простой командой в терминале:  apt-get install subversionДалее можно подготовить папку, куда будем скачивать все исходники. В моём случае, я решил создать папку по пути /home/user/kolibrios:  mkdir ~/kolibriosПерейдя в свежеиспечённую папку, говорим subversion скачать исходники системы в данную папку. Этот шаг может занять какое-то время, в зависимости от скорости вашего интернет-соединения:  cd ~/kolibrios svn co svn://kolibrios.orgПосле того, как скачаются все файлы, можете попробовать перейти в папку kolibrios/data/rus и сказать make, авось соберётся 0_о. А если нет, читаем дальше.Всё для Ассемблера Колибри разрабатывается в основном на ассемблере, поэтому нам понадобятся fasm, nasm и fasmdep.Fasm можно скачать с официального сайта и установить ручками в папку /usr/bin.Если по порядку, то распаковав скачанный архив в папку fasm, переходим в нее и копируем бинарник в /usr/bin/fasm cd ~/Downloads/fasm cp fasm /usr/binВозможно придется включить возможность запускать этот бинарник:  chmod +x /usr/bin/fasmТак же для копирования могут потребоваться права администратора, так что можно использовать sudo (в терминале), или gksu и kdesudo (в GTK и KDE соответственно). Внимание, будьте очень осторожны при действиях с правами суперпользователя.Nasm установить гораздо проще. Просто устанавливаем используя apt-get apt-get install nasmFasmdep придется собирать из исходников при помощи fasm’а cd ~/kolibrios/data/common/fasmdep fasm fasmdep.asmПосле этого, готовый fasmdep тоже нужно скопировать в /usr/bin cp ~/kolibrios/data/common/fasmdep/fasmdep /usr/bin/Танцы с бубном и линковка Хоть KolibriOS и разрабатывается в основном на языке ассемблера, есть возможность писать программы и на языках высокого уровня.Чтобы кросс-компилировать значительную часть кода на Си, нам предстоит установить mingw32 (или toolchain от Serge). За одно установим утилиты-архиваторы kpack и kerpack.Mingw32 устанавливается так же, как и nasm:  apt-get install mingw32После установки нам нужно создать алиасы win32-ar, win32-as, win32-gcc, win32-g++, win32-ld, win32-objcopy. Делается это следующим образом:  ln -s /usr/i586-mingw32msvc/bin/ar /usr/bin/win32-ar ln -s /usr/i586-mingw32msvc/bin/as /usr/bin/win32-as ln -s /usr/i586-mingw32msvc/bin/gcc /usr/bin/win32-gcc ln -s /usr/i586-mingw32msvc/bin/g++ /usr/bin/win32-g++ ln -s /usr/i586-mingw32msvc/bin/ld /usr/bin/win32-ld ln -s /usr/i586-mingw32msvc/bin/objcopy /usr/bin/win32-objcopyЕсли вы хотите использовать готовый инструментарий кросс-компиляции, вам сначала придется его скачать, а затем распаковать в папку /home/autobuild/tools. После этого нужно будет добавить /home/autobuild/tools/win32/bin к $PATH:  export PATH=$PATH:/home/autobuild/tools/win32/bin«Чтобы не писать тоже самое каждый раз при запуске системы и терминала, можно добавить эту команду в файл .bashrc. В случае с текстовым редактором nano делается это так:  nano ~/.bashrcМожно использовать и любой другой текстовый редактор. В конец файла просто добавляем вышеуказанную команду.Kpack собирается из исходников в ~/kolibri/programs/other/kpack/linux, но до этого нам необходимо будет скачать и установить пакет build-essential (если вы, конечно, не установили этот пакет заранее):  apt-get install build-essentialПосле чего уже переходим в необходимую папку и запускаем скрипты:  cd ~/kolibri/programs/other/kpack/linux sh ./build.sh cp ./kpack /usr/bin/Исходники kerpack находятся в ~/kolibri/programs/other/outdated/kerpack. Но перед тем как собирать его, поправьте путь в файле kerpack.asm. А именно, строку «include »…/…/…/macros.inc» на «include »…/…/…/…/macros.inc» sh ./build.sh cp ./kerpack /usr/bin/

Можно установить msvc и c—, а можно не устанавливать, а просто обновлять скомпилированные бинарники, скачанные с сервера builds.kolibrios.org, при помощи команды touch. Например:  touch kolibrios/data/ru/shellЛично я пошел вторым путем, но если у вас есть время и нервы, то вам надо будет установить wine:  apt-get install wine export WINEARCH=win32В wine следует установить msvc 2010 при помощи winetricks. Запускаем winetricks, выбираем раздел install an app. В появившемся списке выбираем vc2010express и жмём OK. Таким же образом надлежит установить dxsdk_nov2006. В основном установка автоматическая, разве что время от времени придется «клацать» мышкой: «Далее», «Далее», «Готово». После завершения установки необходимо создать скрипт, который будет запускать win32-cl и win32-link.Запускаем nano или любой другой текстовый редактор:  nano /usr/bin/win32-clи вставляем нижеприведенный скрипт.

#!/bin/sh WINE=${WINE:-wine} WINEPREFIX=${WINEPREFIX:-$HOME/.local/share/wineprefixes/vc2010express} export WINEPREFIX PROGRAMFILES=«c:\Program Files» WSDK=»$PROGRAMFILES\Microsoft Visual Studio 10.0» WPSDK=»$PROGRAMFILES\Microsoft SDKs\Windows\v7.0A» WDXSDK=»$PROGRAMFILES\Microsoft DirectX SDK (August 2006)» export WINEPATH=«c:\windows; c:\windows\system32;$WSDK\Common7\IDE;$WSDK\VC\bin» export INCLUDE=»$WSDK\VC\include;$WPSDK\Include;$WDXSDK\Include» export LIB=»$WSDK\VC\lib;$WPSDK\Lib;$WDXSDK\Lib\x86» $WINE cl.exe $@ Точно так же создаем скрипт для win32-link nano /usr/bin/win32-link

#!/bin/sh WINE=${WINE:-wine} WINEPREFIX=${WINEPREFIX:-$HOME/.local/share/wineprefixes/vc2010express} export WINEPREFIX PROGRAMFILES=«c:\Program Files» WSDK=»$PROGRAMFILES\Microsoft Visual Studio 10.0» WPSDK=»$PROGRAMFILES\Microsoft SDKs\Windows\v7.0A» WDXSDK=»$PROGRAMFILES\Microsoft DirectX SDK (August 2006)» export WINEPATH=«c:\windows; c:\windows\system32;$WSDK\Common7\IDE;$WSDK\VC\bin» export INCLUDE=»$WSDK\VC\include;$WPSDK\Include;$WDXSDK\Include» export LIB=»$WSDK\VC\lib;$WPSDK\Lib;$WDXSDK\Lib\x86» $WINE link.exe $@ Пути могут немного отличаться, поэтому рекомендую проверить все тщательно пару раз.В Колибри используется версия C-- Sphinx. После установки следует создать скрипт, запускающий c—.exe, и назвать его win32-c--.

Есть и третий, ленивый путь. Можно просто убрать из Makefile в автосборке некоторые программы, которые собираются при помощи C-- и MSVC.

Теперь нам сталось лишь установить mtools и mkisofs. apt-get install mtools apt-get install mkisofs

Сборка Сама сборка осуществляется простой командой make в папке kolibrios/data/«язык системы«Например cd ~/kolibrios/data/rus makeЕсли все установлено правильно, вы должны получить полноценный загрузочный образ KolibriOS — в форматах iso и img. Проверить работоспособность образа можно, например, смонтировав iso или img в virtualbox или любую другую виртуальную машину.

© Habrahabr.ru