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

в 6:18, , рубрики: Google, google summer of code, gsoc, gsoc 2014, kolibrios, open source, Блог компании KolibriOS Project Team, колибри, операционные системы, метки: , , , , , ,

Предлагаем Вашему вниманию статью, написанную 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 nasm
Fasmdep придется собирать из исходников при помощи 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="$PROGRAMFILESMicrosoft Visual Studio 10.0"
WPSDK="$PROGRAMFILESMicrosoft SDKsWindowsv7.0A"
WDXSDK="$PROGRAMFILESMicrosoft DirectX SDK (August 2006)"
export WINEPATH="c:windows;c:windowssystem32;$WSDKCommon7IDE;$WSDKVCbin"
export INCLUDE="$WSDKVCinclude;$WPSDKInclude;$WDXSDKInclude"
export LIB="$WSDKVClib;$WPSDKLib;$WDXSDKLibx86"
$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="$PROGRAMFILESMicrosoft Visual Studio 10.0"
WPSDK="$PROGRAMFILESMicrosoft SDKsWindowsv7.0A"
WDXSDK="$PROGRAMFILESMicrosoft DirectX SDK (August 2006)"
export WINEPATH="c:windows;c:windowssystem32;$WSDKCommon7IDE;$WSDKVCbin"
export INCLUDE="$WSDKVCinclude;$WPSDKInclude;$WDXSDKInclude"
export LIB="$WSDKVClib;$WPSDKLib;$WDXSDKLibx86"
$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 или любую другую виртуальную машину.

Автор: KolibriOS

Источник

Поделиться

* - обязательные к заполнению поля