Ãœðù - 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 />
Эмулятор Sony PlayStation во FreeBSD Добавляем необходимые строки в конфигурационный файл ядра<br />
Пространство ядра<br />
Для того чтобы научить ядро FreeBSD понимать исполняемые файлы<br />
Linux, достаточно подгрузить модуль linux.ko (kldload linux), содержащий<br />
все необходимые обработчики и альтернативную таблицу системных<br />
вызовов. После этого операционная система фактически будет готова к<br />
принятию «чужого» кода. Для закрепления результата следует добавить<br />
строку «linux_load="YES"» в /boot/loader.conf (загрузка одновременно<br />
с ядром), либо «linux_enable="YES"» в /etc/rc.conf (загрузка во время<br />
инициализации системы).<br />
Поклонники монолитной модели ядра могут избежать необходимости<br />
ручной загрузки модуля, просто включив код совместимости в ядро. Конфигурационный<br />
файл ядра должен содержать следующие строки:<br />
# vi /sys/i386/conf/GENERIC<br />
option COMPAT_LINUX<br />
option PSEUDOFS<br />
option LINPROCFS<br />
option LINSYSFS<br />
Если сборка будет происходить для архитектуры amd64, то вместо<br />
COMPAT_LINUX следует указать строку COMPAT_LINUX32. Последние две<br />
строки указывают на то, что код Linux-реализаций файловых систем proc и<br />
sys также должен быть включен в ядро. Делать это не обязательно, каждая<br />
из них может быть собрана модулем.<br />
На этом настройка ядра заканчивается, и мы переходим к конфигурированию<br />
Linux-окружения.<br />
Пространство пользователя<br />
Как уже было сказано ранее, исполнение бинарных файлов Linux происходит<br />
в изолированном окружении, которое располагается в каталоге<br />
/compat/linux. Чтобы программы могли работать в таком окружении, им<br />
требуется доступ ко всем необходимым библиотекам, конфигурационным<br />
файлам и специальным файлам, вроде тех, что находятся в каталоге /proc.<br />
Есть несколько способов обеспечить наличие этих файлов, мы рассмотрим<br />
их все.<br />
Вариант первый. Классический<br />
Первый и самый правильный прием, рекомендуемый разработчиками<br />
FreeBSD, заключается в установке окружения через коллекцию портов.<br />
Существует несколько портов, воссоздающих окружение времени исполнения<br />
различных дистрибутивов Linux. В современных версиях FreeBSD<br />
средой исполнения по умолчанию является набор пакетов из дистрибутива<br />
Fedora Core 4 (emulators/linux_base-fc4), также доступны коллекции<br />
пакетов из дистрибутива Gentoo 2006.0 (linux_base-gentoo-stage1,<br />
Переменные sysctl<br />
Существует три переменные ядра, напрямую относящихся к уровню совместимости<br />
с Linux: compat.linux.osname — имя имитируемой операционной<br />
системы; compat.linux.osrelease — версия ядра Linux, стабильные<br />
версии FreeBSD поддерживают только совместимость с ядром версии<br />
2.4.2 (во FreeBSD 7 была добавлена поддержка ядра 2.6.19); compat.linux.<br />
oss_version — версия интерфейса OSS (Open Sound System).<br />
linux_base-gentoo-stage2 и linux_base-gentoo-stage3). По большому<br />
счету неважно, какой из них использовать. Необходимость в переключении<br />
на окружение другого дистрибутива может возникнуть только в<br />
случае, если программа откажется работать в среде, установленной в<br />
данный момент.<br />
В случае если Linux-окружение не было установлено во время инсталляции<br />
операционной системы, необходимо воспользоваться командой<br />
pkg_add /cdrom/packages/All/linux_base-fc-4_9.tbz (имя пакета может<br />
отличаться в зависимости от версии FreeBSD), либо пройти в каталог<br />
/usr/ports/emulators/linux_base-fc4 и набрать «make install clean». После<br />
того как одна из этих операций будет проделана, каталог /compat/linux<br />
превратится в локальную версию дистрибутива Linux.<br />
Теперь необходимо обеспечить доступ к виртуальным файловым системам,<br />
без этого действия некоторые программы Linux откажутся работать.<br />
Открываем файл /etc/fstab и добавляем в него следующие строки:<br />
# vi /etc/fstab<br />
none /compat/linux/proc linprocfs rw 0 0<br />
none /compat/linux/sys linsysfs rw 0 0<br />
none /compat/linux/dev devfs rw 0 0<br />
Первые две строки указывают на то, что к каталогам proc и sys, находящимся<br />
внутри окружения Linux, необходимо подключить Linux-версии<br />
файловых систем procfs и sysfs. Последняя же строка говорит о том, что<br />
к каталогу dev также должна быть примонтирована родная файловая<br />
система devfs. Это может показаться абсурдом, так как практически ни<br />
один специальный файл этого каталога не совпадает по имени у FreeBSD<br />
и Linux. На самом деле, файловая система devfs нужна только для того,<br />
чтобы Linux-программы смогли выводить звук, ведь интерфейс OSS,<br />
используемый в обеих операционных системах, является стандартом и<br />
одинаков в Linux и FreeBSD.<br />
После того как операция по модификации файла /etc/fstab будет закончена,<br />
набираем «mount-a», чтобы изменения вступили в силу. Это все, теперь<br />
внутри твоей FreeBSD поселился самый настоящий Linux. Ты даже можешь<br />
переместиться в него, набрав от имени суперпользователя команду chroot<br />
xàêåð 05 /101/ 07<br />
/<br />
117