Запуск Linux-додатків з FreeBSD, Linux, Операційні системи, статті

Олексій Федорчук

Але на кожну тітку з різьбленням

Виявиться дядько з гвинтом.

Тимур Шаов

Існує усталена думка про те, що застосування FreeBSD в якості настільної системи ускладнюється недостатнім (у порівнянні, скажімо, з Linux) кількістю додатків загального призначення. При цьому забувають часто, що база користувацьких програм цих систем практично однакова. І майже все додатки, доступні у вихідних текстах на умовах вільних ліцензій, можна знайти якщо не в колекції пакетів FreeBSD, то вже в системі її портів – точно (недавно пройшло повідомлення, що число портірованних під FreeBSD програм дійшло до 9000 – не кожен дистрибутив 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 (у версії 5.1 це буде linux_base-7.1_X).

Після установки пакета потрібно буде піднятися до пункту 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"

і перезавантажити машину.

Результат в будь-якому випадку буде однаковий – поява в каталозі / usr / compat підкаталогу linux (і символічної посилання на нього в кореневому каталозі – / Compat / linux. Він являє собою звичайне дерево файлової системи Linux, з підкаталогами bin, etc, libs і так далі, який може бути зроблений кореневим за допомогою настільки ж звичайною команди chroot. Втім, в режимі Linux-сумісності виконані файли автоматично шукаються у відповідних гілках каталогу / usr / compat / linux, і необхідності в зміні кореня в більшості випадків не виникає.

Встановлюючи linux_base за замовчуванням, ми отримуємо свого роду тіньову Linux-систему, що відповідає (у поточній гілці FreeBSD) приблизно RedHat 7.X. Додатковий до чого бонус – отримання можливості роботи з rpm-пакетами взагалі (хоча сам rpm можна встановити і незалежно). Однак з портів можна при необхідності встановити сумісність з більш старим RedHat (версій 6.X) або навіть Debian (порти для них знаходяться в каталогах / Usr/ports/emulators/linux_base-6 та / usr / ports / emulators / linux_base-debian, / Відповідно.

Отримавши доступ до режиму Linux-сумісності, справа залишається за малим – встановити самі Linux-програми. Робиться це різними, іноді не зовсім тривіальними, способами, деякі з яких описані в FreeBSD Handbook. Однак для деяких Linux-програм установка під FreeBSD проста, як граблі. Прикладом чого – RealPlayer.

Звичайно, формат Real і для аудіо, і для відео, – далеко не верх досконалості, особливо враховуючи його закритий характер. Однак нічого не поробиш – краща на Русі (і не тільки) добірка авторської пісні існує тільки в цьому форматі, і до доведення до розуму вільних альтернатив (тип Hylix) припадає слухати її за допомогою пропрієтарного RealPlayer’а.

Благо, для установки його Linux версії під FreeBSD досить завантажити ону (У мене під рукою виявилася версія rp8_linux20_libc6_i386_cs2.bin), перевірити, чи має цей файл біт виконання (при скачуванні, наприклад, з під Windows він втрачається), а потім просто запустити його (з-під root’а) в термінальному вікні X-сесії:

$ ./rp8_linux20_libc6_i386_cs2.bin

Далі відповідаємо на ряд звичайних занудних питань (типу адреси електронної пошти, країни, поштового коду – навіщо б він? – Швидкості з’єднання, після чого виявляємо в каталозі / usr / local підкаталог RealPlayer8. З якого його можна запускати на виконання (від імені вже звичайного користувача) з зазначенням повного шляху

$ /usr/local/RealPlayer8/realplay

або створити символічне посилання в будь-якому охопленому змінної PATH каталозі.

Як я вже говорив, встановлюючи linux_base за замовчуванням, ми одночасно отримуємо можливість прямої установки прекомпилированном для Linux rpm-пакетів. Робиться це точно так само, як в RedHat, ASP-або Altlinux – командою rpm-i (hv при необхідності). Проте вона потребує деяких додаткових опцій – вказівки нового кореня (очевидно, що їм має бути / Usr / compat / linux), шляхи до бази даних rpm-пакетів і ігнорування ОС:

$ rpm -i --ignoreos --root /usr/compat/linux 
	--dbpath /var/lib/rpm package_name.rpm

Встановлені таким чином пакети повинні запускатися із зазначенням повного шляху – / usr / compat / linux / usr / bin, наприклад.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*