Автосборка загрузочных образов 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 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="$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 или любую другую виртуальную машину.
    KolibriOS Project Team
    69,62
    Быстрая операционная система для бизнеса и хобби
    Поделиться публикацией

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое