- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF136:FreeBSD
Материал из Linuxformat.
- Hardcore Linux Проверьте себя на крутом проекте для продвинутых пользователей Категории:Учебники
Содержание |
FreeBSD: Есть разница
- Ваш дистрибутив уже не тешит ваше хакерское эго? Добавьте в вашу жизнь немного Unix с помощью руководства, написанного Бобом Моссом.
Итак, вы освоили Linux и узнали все его слабости и причуды. Разработчик вы или конечный пользователь, но Linux пляшет под вашу дудку, и вы можете задуматься: почему мы подстрекаем вас нарушить неписаное правило «Не сломалось – не чини»?
Ну, Linux – не единственная свободная операционная система в мире открытого ПО, и у нее есть серьезные Unix-соперники. Ближайшая из этих альтернатив известна как BSD, она с нами с 70‑х годов.
И если, по-вашему, все, что родом из 70‑х, обязано быть медленным, раздутым и одряхлевшим, вы сильно ошибаетесь. Изначально свободно распространяясь на территории кампуса Беркли Калифорнийского университета вплоть до 1995 года, BSD развилась в высоко безопасную и стабильную систему, способную-таки заставить Linux (сравнительного новичка) попотеть. BSD также применялась на стандартных рабочих станциях, где цена лицензии Unix была запретительно высока.
Все команды разработчиков BSD славятся дотошным вниманием к деталям. «Хаки» и обходные пути – здесь вещи неслыханные: разработчики всегда ищут самое элегантное решение. Короче, BSD – тонкий и мощный предок, и его расцвет отнюдь не позади.
Если это раздразнило ваш интерес (или вы, как альпинист Джордж Мэллори [George Mallory], стремитесь покорить Эверест просто потому, что он существует), вам будет приятно узнать, что мы не только рассмотрим FreeBSD в этом номере, но в следующий раз расскажем и об OpenBSD и приведем новые советы по подстройке системы к вашим нуждам.
Прежде чем начать, предупреждаем, что наш урок – для бывалых: подразумевается, что вы хорошо знакомы с командной строкой Linux и уверенно пользуетесь текстовыми установщиками. Поэтому мы рассмотрим только достойные особого внимания скользкие разделы, включая начальную установку и настройку рабочего стола, и как управлять пакетами, не давая подробное пошаговое руководство для этих процессов.
Ну, поехали
Установщик преподносит вам сюрприз. Он работает в текстовом режиме, но вовсе не сводится к нажатию клавиш Y и N. Вы увидите цветное текстовое меню с набором опций. Большая часть установки интуитивно ясна; большинство ответов будет «No». Один из этапов установки, на который мы предлагаем не пожалеть времени – настройка сети. Он идет в самом начале, и мы рекомендуем не беспокоиться пока об IPv6, а затем просто взять установки DHCP по умолчанию. Пропустите этап настройки шлюза и опции, появляющиеся за ним в меню настройки сети, и переходите к следующему шагу. При установке часового пояса просто выберите континент, затем свою страну. Если BSD попытается установить BST вместо GMT – это приемлемо; только перед тем, как продолжить, убедитесь, что разница во времени верна.
На данном уроке предполагается, что вы используете образ установочного CD для FreeBSD, однако на http://www.freebsd.org/where.html доступен ISO DVD, с добавочными пакетами.
Пройдя начальные шаги, установите и настройте пакеты. Если для установки вы скачали ISO-образ CD, вы сможете только установить дополнительные языковые пакеты, а вот те, кто не поленится скачать DVD, найдут там дополнительное ПО. На нашем уроке мы будем полагать, что у вас первый вариант, и поэтому расскажем, как настроить вашу систему на сетевую установку пакетов. А вот обладатели DVD смогут поглядеть все те пакеты, которые им могут понадобиться, и это ускорит процесс установки (хотя вам все же придется пройти другие этапы, о которых мы расскажем ниже).
Можете просто выбрать «All», и будут установлены все пакеты. Обладатели DVD могут отмечать пакеты для установки клавишей пробела, и тем же способом мы потом будем настраивать GUI.
Затем рекомендуем создать обычного пользователя, попутно с учетной записью root. Если при этом вы оставите поле group пустым, автоматически создастся новая группа. После задания пароля root можно ответить «No» на последующие вопросы. Затем сохранитесь, выйдите и перезагрузите компьютер, чтобы изменения возымели эффект.
Философия BSD
BSD и Linux во многом похожи, однако за ними стоят разные мировоззрения. Linux, например, развивает модульную архитектуру: все, что не входит в ядро, является дополнением к костяку системы. Поэтому вы получаете самые передовые функции, и система как целое развивается очень быстро, но иногда появляются безалаберные хаки для истребления ошибки или добавления новой приятной функции.
Это не всегда плохо, ведь Linux возглавляет мир открытого ПО и вводит инновации быстрее, чем какой-либо другой программный проект, но ставит под угрозу стабильность, так как изменения одного пакета теоретически могут повредить работе другого. Это решается мощной поддержкой со стороны разработчиков ядра, создателей дистрибутивов и конечных пользователей. Одно неуместное обновление или недостаток координации между двумя командами, разрабатывающими различные компоненты – и система может стать нестабильной или небезопасной. Мы видели это на примере проблем с OpenSSL в системах на базе Debian, описанных здесь: http://lwn.net/Articles/282038/. Их не замечали чуть ли не два года, но сейчас исправили.
Чистота — залог здоровья
Подход BSD совершенно другой. Существует базовый пакет, содержащий ядро и все существенные дополнения, которые разработчики посчитали абсолютно необходимыми для системы. Все они поддерживаются одновременно, и вы можете быть уверены, что костяк вашей системы всегда будет «просто работать». Это, правда, приводит к потере возможностей отделить одно от другого и снижает скорость инноваций, зато вы получаете огромную компенсацию в виде стабильности.
Пользователи BSD даже не ведают о безалаберных хаках: разработчики BSD нацелены на чистоту кода. То есть не нужно спешно применять заплатки, не заботясь о стабильности и безопасности системы в целом, и вы не обойдете стороной самое элегантное решение проблемы. Разработчик Linux может налепить временную заплатку и более к ней не возвращаться, но в BSD так не бывает. Опять-таки, это замедляет инновации и частоту появления исправлений, но в результате мы имеем систему, которая работает куда стабильнее остальных, так как здесь нет места компромиссам. Для сравнения скажем, что типичная машина с Linux дает вам несколько месяцев работы без перезагрузки, а ее аналоги с BSD спокойно трудятся год, а то и два. Неудивительно, что FreeBSD и NetBSD так любят хостеры.
Лицензии
Ядро Linux и самые главные программы распространяются по лицензии GNU General Public Licence (версии 2 или 3). Это значит, что вы можете делиться и распространять программу (даже продавать ее); но если вы сделаете в ней какие-либо изменения, вы должны отослать изменения автору, чтобы в будущем программа работала лучше. Также вы должны предоставить исходный код для всех созданных вами бинарников.
В лицензии BSD таких оговорок нет. Пока вы признаете авторство исходного кода, вы можете делать с ним все что угодно. Это не так сильно воодушевляет сообщество, как GPL, и частично из-за этого разработка BSD иногда напоминает закрытую секту хакеров ядра. Однако с точки зрения конечного пользователя вы имеете больше прав – за счет тех, от которых отказались разработчики.
Лицензии отвечают культурам, окружающим разработчиков этих двух ядер, и выбор той, что вам больше подходит, с учетом всех за и против, личное дело каждого.
FreeBSD: Cтавим себе BSD
- Настройка BSD не такая, как у Linux, однако за несколько приемов вы сможете получить рабочий стол Gnome.
Если вы предпочли бы такую BSD, где вся работа по GUI уже проделана, посмотрите PC-BSD на http://www.pcbsd.org.
Выполнив установку на жесткий диск, можно посмотреть, какие выкрутасы есть в командной строке BSD по сравнению с Linux. Например, введя команду
pwd
вы заметите, что домашний каталог расположен не там, где он находится в стандартной структуре каталогов Linux. Также вы увидите подкаталоги, как и в Linux. Рекомендуем погулять по системе каталогов BSD и осмотреться: ведь это одно из главных различий между двумя системами.
Система готова к работе, однако следующим шагом стоит настройка CVSup (произносится «сив-сап») – утилиты, с помощью которой обновляется дерево портов (посмотрите врезку «Вопросы растениеводства», где разъясняется, что это и как оно работает). Вам нужно зайти от имени root и запустить sysinstall следующими командами:
login root sysinstall
После первой команды потребуется ввести пароль root, как и в любом другом терминале. Появляющееся текстовое меню будет вам знакомо, ведь оно почти такое же, что было в установщике на CD. Для установки CVSup надо перейти в Configure > Packages > FTP Server, выбрать ближайший сервер и убедиться, что в следующем меню выбрано «Yes».
Сидим на дереве!
Теперь перейдем в Net > cvs-without-gui, нажмем пробел и выберем «OK» клавишей табуляции, нажмем Enter два раза (при установке с DVD было бы так же). По завершении выйдите из установщика и перезагрузитесь, чтобы ваши настройки были сохранены. Затем, чтобы установить и заполнить дерево портов, выполните в сеансе терминала root команду
cvsup -h cvsup.freebsd.org /usr/share/examples/cvsup/ portssupfile
где cvsup.freebsd.org – сервер, выбранный вами на предыдущем этапе. В этой строке вписан адрес центрального сервера FreeBSD, а если вы не нашли адреса в текстовом установщике, обратитесь к списку доступных серверов на http://http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html#CVSUP-MIRRORS .
Если все идет правильно, на этой стадии вы увидите, как скачивается огромное количество файлов, и имена многих пакетов пользователям Linux покажутся знакомыми. Хотя большая часть BSD-систем имеет эмуляцию двоичных файлов Linux, на дерево портов перенесена большая библиотека открытых программ. Для применения изменений перезагрузите машину.
Автоматизируй и обновляй
Любой пользователь Linux знает, что запускать команду в терминале каждый раз, когда потребуется обновить дерево портов –не самая дружелюбная к пользователю задача. К счастью, мы можем автоматизировать это в BSD примерно так же, как в Linux.
Те, кто знаком с Vi, могут сразу редактировать нужные файлы. Всех прочих обрадует весть, что редактором по умолчанию можно сделать Nano.
Для установки Nano воспользуемся исходниками, чтобы показать вам, что вы не ограничены программами из пакетов BSD. Для установки из исходного кода применим следующие команды:
cd /usr/ports/editors/nano make install
Как видите, здесь не нужно выполнять команды configure и make, так как все заголовочные файлы и портирование сделаны до вас. Просто запустите make install, и эти этапы (включая даже Autoconf) при необходимости запустятся сами. Нажмите «OK», когда появится окно libiconf. И снова, для применения изменений придется перезагрузиться.
Установив Nano, установите его как текстовый редактор по умолчанию, прежде чем мы начнем составлять расписание задач. Пользователи Vi могут пропустить этот этап, а если вы выбрали Nano, выполните следующие команды:
cd /root nano .cshrc
В этом файле спуститесь до строки
setenv EDITOR vi
и смените vi на nano. Нажмите Ctrl+O, чтобы изменения записались на диск (перезагрузка не нужна), а потом Ctrl+X, чтобы выйти.
Теперь нужно отредактировать crontab, с помощью следующих строк:
cd /var/cron/tabs ln -s /usr/share/examples/cvsup/ports-supfile /updatedir crontab -e -u root
Они переместят вас в папку crontab, и откроется редактирование файла с правами root. Символьная ссылка нужна из-за того, что Nano заламывает строки, потихоньку вставляя символ перевода строки. Поскольку все это появится в команде, которую мы намерены выполнять (а crontab учитывает символ перевода строки при интерпретации команд), у вас будут странные ошибки. Если вы пользуетесь Vi, вас это не затронет, но при желании можете тоже воспользоваться этой возможностью.
Отредактируйте файл crontab, добавив такие строки:
15 3 * * * /usr/local/bin/cvsup -h cvsup.freebsd.org /updatedir
Будет запускаться обновление с того же сервера, что вы использовали ранее, с правами root каждый день в 3.15 утра. Сохранитесь, выйдите и перезагрузитесь, чтобы изменения вступили в силу.
Приятные излишества
Теперь базовая система приведена в рабочее состояние, и следующий шаг (если вы планируете использовать FreeBSD в качестве рабочей станции) – установка рабочего стола. Чтобы установить X-сервер, выполните команды
pkg_add -r perl pkg_add -r xorg
Если запуск startx выдает окна странного вида, значит, установка успешна. Если на этом этапе у вас возникли проблемы, то подписчики смогут найти некоторые решения типовых проблем в LXF125.
После перезагрузки системы можно ставить рабочий стол. В этом руководстве мы выбрали Gnome, а в следующем номере, когда будем рассказывать об OpenBSD, остановимся на KDE, чтобы нас не обвинили в пристрастности. В терминале введите команду
pkg_add -r gnome2 pkg_add -r gnome2-fifth-toe
Затем откройте /etc/rc.conf и добавьте в конец файла такую строку:
gnome_enable=’YES’
Сохранитесь и выйдите из редактора, как раньше, после чего запустите в терминале xorgconfig. Сейчас уже можно, наконец, запустить GDM без помощи startx, а строка, прописанная нами в /etc/rc.conf, гарантирует, что основные службы Gnome, такие как GDM, HAL, D-BUS и Avahi, будут запускаться при загрузке системы.
Ну вот, вы обзавелись исправно функционирующей установкой FreeBSD с рабочим столом Gnome. Не пропустите урок следующего номера, где мы продвинемся на новый этап и возьмем в качестве примера установки BSD родственную систему, OpenBSD.
Вопросы растениеводства
Почти все мыслимые дистрибутивы Linux имеют свой менеджер пакетов и хотя бы один связанный с ним репозиторий. FreeBSD не является исключением, однако его способ может сперва показаться инопланетным.
Во-первых, FreeBSD использует репозиторий CVS, называемый «дерево портов» – с целью сэкономить время пользователей. Им незачем самим менять заголовочные файлы и портировать существующие исходники пакетов в BSD – система делает это за них.
На нашем уроке мы пользовались утилитой CVSup. Ее главная цель – скачивать пакеты исходников, однако ее можно применять и для обновления существующих версий пакетов при запуске обновления системы. Таким образом, ваша система может иметь самые свежие версии программ, портированных в проект BSD.
Установить заранее скомпилированный двоичный пакет из дерева портов довольно легко. Просто введите в сеансе root следующую команду:
pkg_add -r packagename
где packagename – название требуемого пакета.
Переключатель -r скачивает пакет из сети и выполняет его установку. Чтобы удалить пакет, используйте обратную команду:
pkg_delete package-x.x.x
где package-x.x.x – полное имя пакета и его версия. Если вы не уверены в номере версии, просто воспользуйтесь, как обычно, grep, но с командой pkg_info:
pkg_info | grep package
Опять-таки, здесь package – название программы, которую нужно удалить. В следующем номере мы расскажем о процессе ручного обновления пакетов с хитрым трюком, и о том, как находить и заменять любые па-кеты с неразрешенными проблемами с безопасностью.