четверг, 1 июля 2010 г.

Запуск linux приложений в *BSD - системах


Существует устоявшееся мнение о том, что применение FreeBSD в качестве настольной системы затрудняется недостаточным (по сравнению, скажем, с Linux) количеством приложений общего назначения. При этом забывают часто, что база пользовательских программ этих систем практически одинакова. И почти все приложения, доступные в исходных текстах на условиях свободных лицензий, можно найти если не в коллекции пакетов FreeBSD, то уж в системе ее портов - точно (недавно прошло сообщение, что число портированных под FreeBSD программ дошло до 9 тысяч - не каждый дистрибутив Linux может похвастаться таким числом прекомпилированных специально для него пакетов). Если же некая по зарез необходимая программа случайно не попала в этот неслабый, согласитесь, список, - ее, как правило, можно скомпилировать для работы во FreeBSD руками.

      Разумеется, проделать такую процедуру можно только в том случае, если исходные тексты нужной программы доступны. И тут выступает оборотная сторона медали популярности Linux, привлекшей к ней внимание производителей проприетарного софта. Каковые распространяют свои достижения, пусть подчас и бесплатно (при некоторых ограничениях), но - только в прекомпилированном специально под Linux виде (а иногда и под конкретный его дистрибутив, чаще всего - RedHat и его клоны).

      Однако на самое хитрое ухо всегда найдется палец с левой резьбой. И в данном случае таким инструментом оказывается режим бинарной совместимости с Linux, реализованный во FreeBSD, который позволяет запустить минимум 90% всех Linux-приложений. Он основывается, насколько я понимаю, на подмене системных вызовов ядра Linux соответствующими вызовами ядра FreeBSD. И, в отличие от большинства эмуляторов (и, тем более, виртуальных машин типа VMWare), практически не приводит к снижению производительности. Высказывается даже мнение, что Linux-программы в режиме совместимости во FreeBSD выполняются быстрее, чем в родной среде. Впрочем, количественные данные на этот предмет мне не известны.

      Доступ к режиму совместимости требует двух действий - установки пакета linux-base и внесения изменений в конфигурационный файл /etc/rc.conf. Самый простой путь к этому - программа sysinstall. Запустив оную, следует отправиться в меню Configure, перейти в пункт Packages и в списке доступных (на CD, ftp- или http-сервере) пакетов выбрать в разделе emulators тот, который называется linux_base.

      После установки пакета нужно будет подняться до пункта Startup в том же меню Configure и отметить опцию Linux (расшифровывающуюся как This host wants to be able to run Linux binaries). Все, теперь после перезапуска машины режим Linux-совместимости будет доступным.

      Можно поступить еще проще - сразу отправиться в пункт Configure->Startup и отметить опцию Linux. По выходе из него будет автоматически предложено установить пакет linux_base, с чем, естественно, следует согласиться.

      Другой путь - установить linux_base посредством системы портов, для чего нужно перейти в каталог /usr/ports/emulators/linux_base и дать команду:

make install clean  

      А затем в любом текстовом редакторе добавить в файл /etc/rc.conf строку:

linux_enable="YES" 

и перезагрузить машину.  

Комментариев нет:

Отправить комментарий