Ãœðù - Xakep Online
Ãœðù - Xakep Online
Ãœðù - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
unixoid<br />
i<br />
Для тех отважных<br />
юниксоидов,<br />
что идут в ногу<br />
с прогрессом и<br />
используют последний<br />
срез CVS<br />
седьмой версии<br />
FreeBSD, рекомендую<br />
переключить<br />
режим совместимости<br />
на имитацию<br />
ядра Linux<br />
версии 2.6.19:<br />
sysctl compat.linux.<br />
osrelease=2.6.19.<br />
Версия 2.4.2,<br />
имитируемая по<br />
умолчанию, уже<br />
не удовлетворяет<br />
потребностям<br />
современных<br />
Linux-программ.<br />
Коллекция портов<br />
FreeBSD насчитывает<br />
несколько<br />
десятков так<br />
называемых Linuxпортов.<br />
Чтобы<br />
найти их, находясь<br />
в каталоге /usr/<br />
ports, набери команду<br />
make search<br />
name=linux-.<br />
Раздел Linux подключен к каталогу /compat/linux<br />
Развеиваем миф о драйверах<br />
nVidia<br />
Среди пользователей широко распространено мнение о том, что<br />
фирменные драйверы nVidia для FreeBSD — это не что иное, как<br />
драйверы Linux, работающие в режиме совместимости с Linux.<br />
Это, конечно же, неправда, на данный момент FreeBSD способна<br />
имитировать только ABI Linux, а не постоянно изменяющийся<br />
интерфейс между ядром и драйверами. Модуль совместимости<br />
с Linux, который так «любят» драйверы nVidia, нужен только<br />
для того, чтобы позволить пользователю играть в Linux-версии<br />
коммерческих игр.<br />
/compat/linux /bin/bash. Все программы Linux теперь должны запускаться<br />
и корректно работать. Это относится не только к простым<br />
программам, вроде xcalc, но и к комплексным, вроде Quake4 или<br />
UT2004. При этом гарантируется, что программа будет работать с такой<br />
скоростью, как если бы она была запущена в настоящем Linux.<br />
Вариант второй. Грязный<br />
Второй вариант настройки среды исполнения заключается в<br />
ручном копировании необходимых файлов в каталог /compat/<br />
linux, без использования коллекции портов или пакетов.<br />
Достоинство подхода в том, что он не требует выкачивания<br />
из сети сотен мегабайт данных и позволяет использовать уже<br />
имеющееся дерево файлов Linux (например, взятое с дистрибутивного<br />
диска). Описывать способ нет смысла, потому что<br />
подробности совершаемых операций зависят от дистрибутива<br />
Linux и не универсальны. В общем случае все, что требуется<br />
сделать, — это скопировать базовый комплект дистрибутивных<br />
пакетов и распаковать их в каталог /compat/linux. Это не<br />
так трудно, как кажется на первый взгляд. Следует установить<br />
FreeBSD-версию пакетного менеджера подопытного дистрибутива<br />
(например, archivers/rpm4 или archivers/dpkg) и с его помощью<br />
накатить нужные пакеты. Впоследствии недостающие<br />
пакеты можно добавить, используя уже родные Linux-версии<br />
этих программ:<br />
Установка дополнительных пакетов<br />
Red Hat/Fedora Core<br />
# /compat/linux/bin/rpm -ihv --root=/compat/<br />
linux пакет.rpm<br />
Debian/Ubuntu<br />
# /compat/linux/usr/bin/dpkg -i --root=/compat/<br />
linux пакет.dpkg<br />
man linux<br />
Вариант третий. Простой<br />
Процесс создания среды исполнения существенно упростится,<br />
если дистрибутив Linux уже установлен на смежном разделе. В<br />
этом случае не потребуется даже копирование, останется только<br />
подключить Linux-раздел к каталогу /compat/linux, и среда исполнения<br />
готова. Конечно, чтобы использовать этот прием, придется<br />
расместить Linux на файловой системе, поддерживаемой FreeBSD<br />
хотя бы в режиме чтения.<br />
Вариант четвертый. Радикальный<br />
Четвертый и последний вариант довольно радикальный и издевательский<br />
по своей задумке. Он применим в тех случаях, когда<br />
Linux-программе необходимо обеспечить доступ к корневой<br />
файловой системе (например, если программа должна обращаться<br />
к «настоящей» версии каталога /etc). Chroot-окружение,<br />
в которое помещается любой процесс Linux, не предоставляет<br />
такой возможности (в этом и заключается смысл «песочницы»).<br />
Но есть выход: можно просто создать ссылку /compat/linux,<br />
указывающую на корень (rm -rf /compat/linux && ln -s / /compat/<br />
linux), и тогда chroot-окружение станет идентичным корню.<br />
Проблема только в том, что Linux-программы не смогут работать<br />
с библиотеками FreeBSD, им нужны их нативные версии. Просто<br />
скопировать эти библиотеки в корень не удастся по причине<br />
пересечения имен, поэтому следует переименовать их по определенной<br />
схеме (например, libc.so.6 в libc-linux.so.6). После<br />
этого в файл /etc/libmap.conf можно добавить такие строки:<br />
# vi /etc/libmap.conf<br />
[/home/username/linux]<br />
libc.so.6 libc-linux.so.6<br />
libdl.so.2 libdl-linux.so.2<br />
И так для всех библиотек, необходимых программе. Сами же Linuxпрограммы<br />
следует положить в каталог /home/username/linux,<br />
именно для него будет действовать приведенное переназначение<br />
имен. Описанный способ может показаться слишком грубым, но он<br />
действительно работает и может помочь в определенных<br />
обстоятельствах. z<br />
/ 118<br />
xàêåð 05 /101/ 07