2012-12-06

Распределённая сборка ядра

Сколько уже бился над проблемой - куча проблем и решений.. Вроде бы нашёл простое решение :)

Цель - влить в дружную сборочную ферму (в перспективе под разные платформы - но пока только под i386-linux) машинки с виндой на борту. В отличие от кошерных никсовых серверов используются не 24/7 но зато гораздо свежее и многопроцессорнее. И используются, считай, почти впустую.

Первоначальное решение - rdp+coLinux было неплохим. Один образ подгружался разными машинами и вливал процессорную мощу в общее дело. Минусы - нет поддержки x64 и многопроцессорности.

Второе решение - VirtualBox. Требуется установка (через rdp) - и нельзя удобно управлять через ssh (решение этой проблемы есть - но пока не пробовал ибо это время и вроде нашёл другое решение о чём далее). Почти неплохо - ибо есть многопроцессорность и x64. Да и образ как в coLinux не перекинешь - надо ещё как-то конфиги тащить. Неудобно.

Решения со сборкой cygwin+cross+linux не выходило. Либо gcc/3.xx древняя сборка, либо cygwin/gcc что не годится для сборки под gcc4/linux. Из исходников собрать пару подходов попробовал - упирался в странности и оставлял затею.

И тут внезапно обнаружил порты cygwin. Нашлось про них упоминание в теме "как собрать ядро под cygwin", спасибо Яша :)
linux-i686-gcc-core and linux-x86_64-gcc-core are available in Ports
Портами после гугления оказались вот эти добрые люди.

  1. Выбираем зеркало sf, жмякнув эту ссылку, и выбрав "try another mirror".
  2. В итоге получаем URL вида http://MIRROR.dl.sourceforge.net/project/cygwin-ports/ - её и будем вводить дальше.
  3. Запускаем инсталлятор cygwin с ключиком:
    setup.exe -K http://cygwinports.org/ports.gpg
  4. Доходим до стадии ввода URL зеркал cygwin и вводим полученный в пункте 2 в поле "User URL", жмём "Add".
  5. Важно. Следим, чтобы в списке URL были одновременно выбраны зеркала sf и ваше любимое зеркало cygwin.
  6. Выбираем в списке пакетов distcc, xinetd, cygrunsrv, i686-linux-
to be continued..