FreeBSD: установка и базовая настройка.

Для интернет-общественности операционная система FreeBSD сейчас находится в тени более популярного Linux. Что ни в коей мере не означает её ущербность. Так сложилось, что она считается "системой для серверов", но и это не совсем верно. Она не более серверная ОСь, чем тот же Linux. Так же бытует мнение, что эта система весьма сложна в настройке и использовании. Что касается настройки - частично соглашусь. FreeBSD требует от пользователя понимания своих действий, но и Linux не прощает пользователей, любящих пользоваться
одной лишь мышью;) Как и к Linux, к FreeBSD нужно применять клавиатуру и, что более важно, голову. Мнимая сложность настройки заключается в том, что ОСь действительно приходится настраивать. Причем практически с нуля. Но это
не занимает очень много времени и не требует сильного напряжения. Что же касается использования - оно практически ничем не отличается от использования Linux. Синтаксис некоторых команд отличается от таковых в Linux, а так же есть различия в конфигурационных файлах. Но скажите, во всех ли дистрибутивах Linux всё одинаково? Они порой отличаются друг от друга так сильно, что непросто назвать их всего-лишь разными реализациями одной операционной системы. Но у FreeBSD есть некоторое премущество перед многими дистрибутивами Linux. Она очень быстра. Она очень просто и логично устроена. Она обладает великолепной системой пакетного менеджмента. Это так называемые Ports и производные от них Packages. Поспорить с ней могут лишь portages из Gentoo Linux. Пожалуй, portages более гибки и, частично, удобнее. Но ports позволяет устанавливать ПО как из исходников, так и из прекомпилированных пакетов с помощью packages. В Gentoo эта возможность только начала развиваться и пока не очень удобна. Итак, попробуем установить FreeBSD на компьютер. Для начала необходимо получить дистрибутив. Это множно сделать несколькими путями. Скачать, купить, попросить копию у добрых людей - выбор имеется;) Установка текущей версии(6.1) проходит довольно быстро, у меня она не занимает и десяти минут. После загрузки с диска система задаст несколько вопросов. Первый из них - о вашем регионе. Вопросов возникнуть не должно - ведь вы наверняка знаете, в какой стране живете?;) Следующий вопрос - о некоем keymap. Основываесь на вашем выборе страны система сама предложит оптимальный keymap. В моем случае это Russia koi8-r. Его и оставляю. Следом появляется основное меню инсталлятора и, по совместительству, конфигуратора системы. После установки FreeBSD он по прежнему будет доступен по команде sysinstall. Меню состоит из 12 пунктов, но пока для нас интересны верхние четыре. Самый первый - Usage - содержит небольшой мануал по sysinstall. А вот второй, третий и четвертый пункты являются вариантами установки системы. Standart и Express нас не интересует. Выбираем Custom, поскольку он, хоть и "for experts", позволит установить систему так, как хочется пользователю. Выбираем и получаем следующее меню. Сразу переходим к третьему пункту - размечать диск. В FreeBSD физические разделы диска обзываются слайсами, а логические - партициями. Первая неожиданность - название разделов. В отличие от Linux, тут они обозначаются совсем по другому. Имя первому разделу на первом диске - ad0s1. Что означает первый слайс(s1) на первом ata-диске(ad0). Создайте раздел для новой оси, если заранее не создали его другими способами(с помощью PartitionMagic, например). В случае, если на жестком диске присутствует другая операционная система PartitionMagic кажется мне более удобным и надежным методом. К слову, более одного слайса создавать ни к чему, ибо сохранность данных от этого выше не станет. После выхода из программы разметки диска появится предложение установить загрузчик. Без стеснения выбираем Standard. Загрузчик будет проинсталлирован в MBR и атоматически подхватит установленную уже Windows или Linux. Теперь необходимо создать файловую систему на готовом слайсе. Следующий раздел меню - Label - как раз для этого и предназначен. О количестве логических разделов можно спорить сколь угодно долго, но простому домашнему пользователю ни к чему создавать их много. Достаточно трех - под своп, под корень и под каталог /home. Их и создаем, не мучая себя философскими размышлениями;) Под своп рекомендуется объем в два раза больший объема оперативной памяти. Хотя при нынешних объемах оперативки без свопа вообще можно легко обойтись. Но на всякий случай создадим. Я делаю его равным количеству памяти. Далее - корень. Под него я выдаю не менее 10 гигабайт, а остальное - под домашний каталог. Там у меня хранится музыка, фильмы и прочее барахло, кушающее довольно много места. Заодно нужно выставить опцию S = Toggle Softupdates. Эта опция повышает скорость работы с файлами и увеличивает стрессоустойчивость файловой системы. Softupdates не рекомендуется включать в корень, но я на это благополучно забиваю и до сих пор не пожалел=) Когда с разметкой покончено можно переходить к пятому пункту меню - Distributions. При всем многообразии вариантов установки ПО рекомендую выбрать пункт Minimal и перейти в Custom. Там к уже выбанным пунктам нужно прибавить Man и в разделе src выбрать Sys(это исходники ядра, они пригодятся при настройке системы). Более ничего для начала нам не понадобится, поэтому возвращаемся в меню Custom и в пункте Media отмечаем источник для установки. В случае выбора источника ftp необходимо еще настроить сеть. Это делается В меню Sysinstall->Configure->Networking. Осталось только выбрать пункт Commit в предыдущем меню и согласиться с разметкой диска. Теперь "откиньтесь на спинку кресла";) и подождите сообщения об окончании инсталляции. Согласитесь вернуться в sysinstall - осталось еще немного настроить систему. Отправляемся в пункт Sysinstall->Configure->Networking. Устанавливайте пароль рута, настраивойте сеть - тут вопросов возникнуть не должно. Пользователей пока создавать не нужно, поэтому пункт User Management оставляем в покое. А вот подраздел Console представляет большой интерес, поэтому переходим туда. Пункт первый - Font. Отсюда начинается русификация консоли. Выбираем пункт IBM 866. Далее - keymap. Хоть мы его уже и выбирали, но подтверждение не повредит, как минимум.=) Выбираем Russia KOI8-R. Пункт Repeat - скорость повтора нажатия на клавишу. Я обычно выставляю Fast. Пункт Saver - на свое усмотрение:) Пункт Screenmap - KOI8-R to IBM866. Пункт Ttys - KOI8-R. После этого консоль может считаться русифицированной, а раскладка переключается клавишей CapsLock. Возвращаемся в меню Configure и сразу же переходим в подраздел Mouse. В пунктах Type и Port выбираем PS2, если, конечно, мышь тоже PS2. После этого выбираем пункт Enable и все - должен появиться курсор мыши. Мышь в консоли Linux и FreeBSD служит не для привычных вещей, типа прокрутки, а для переноса информации из приложения в приложения. Для этого нужно сначала выделить нужную часть текста, затем перейти в требуемую консоль и нажать среднюю кнопку мыши. После этого выделенный текст будет скопирован туда, где находится курсор. Но курсор не мыши(его местоположение совсем не важно), а курсор "клавиатуры", если можно так выразиться;) Вернемся к настройке. Следующий пункт, который нам интересен - Statrtup. При наличии usb-мыши нужно выбрать пункт usbd - мышь заработает после перезагрузки. Остальные пункты разобрать на свое усмотрение - я без зазрения совести отключаю всё. Теперь возвращаемся в меню Sysinstall и выбираем Exit Install. Компьютер будет перезагружен и мы получим работующую систему FreeBSD. Которая, тем не менее, все еще нуждается в доведении до ума. А доводить до ума будем редактированием немногочисленных конфигов с помощью основного инструмента настройки системы - текстового редактора. Простой и удобный текстовый редактор - ee - сразу присутствует в системе и проблем с этим не возникнет. Наравне с ним в системе присутствует классический инструмент - vi. Он весьма сложен сам по себе(в рунете можно встретить рассказы о начинающих пользователях, перезагружаюих свой комп для того, что бы выйти из vi. Да что там говорить - я и сам однажды так сделал, когда еще не привык к нескольким доступным консолям=)) Первое, чем стоит заняться - пересборка ядра. Почему первое? Объясню. Во FreeBSD ядро, устанавливаемое с системой, содержит очень много лишних и не содержит достаточно необходимых в повседневной жизни вещей. Оно сконфигурировано таким образом, чтобы стартовать на машинах с любой конфигурацией и напичкано поддержкой таких устройств, которых вы никогда не видели и вряд-ли увидите;) Поэтому все лишнее нужно убрать для уменьшения размеров ядра и добавить некоторые полезные вещи. А заодно оптимизировать ядро по типу процессора, что так же должно прибавить производительности. Если вам удобно делать это все в среде sh - пропустите пару абзацев. А я предпочитаю bash и поэтому займусь его установкой. Сначала нужно установить систему портов. Это можно сделать с инсталляционного диска через sysinstall или скачать актуальную версию дерева портов из интернета с помощью portsnap. Эта утилита присутствует в установленной системе и поэтому сразу вводим:
#portsnap fetch
и после того, как архив скачается(примерно 44 мегабайта):
#portsnap extract
В дальнейшем нужно будет периодически обновлять дерево портов:
#portsnap fetch update
в результате чего скачаются установятся обновления дерева портов. Теперь bash. Переходим в нужный каталог дерева портов:
#cd /usr/ports/shells/bash
и затем
#make install clean
После ввода этой команды исходники bash будут скачаны, пропатчены, скомпилированы и установлены. Баш готов к использованию! Можно запустить его командой 'bash' и сразу установить оболочкой по-умолчанию: #pw usermod _USER_LOGIN_ -s /usr/local/bin/bash Хорошо бы еще немного настроить bash. Сначала нужно изменить приглашение командной строки. За это отвечает переменная PS1. Можно установить ее глобально в файле /etc/profile и для каждого пользователя отдельно - в файле .profile в домашних каталогах пользователей. У меня эта переменная обозначена так:
PS1='[\u@\w]#'; export PS1
Приглашение теперь выглядит следующим образом: [_USER_LOGIN_@_WORKDIR_]# Поскольку я нахожусь за прокси, то ранее пришлось обозначить еще две переменные в файле /etc/profile: HTTP_PROXY=http://proxy_adress:port/; export HTTP_PROXY FTP_PROXY=http://proxy_adress:port/; export FTP_PROXY #Http-прокси должен #подерживать ftp-проксирование Так же можно прописать dns-сервера в файле /etc/resolv.conf, если не хочется лезть лишний раз в sysinstall:
nameserver server_ip
Кстати, обычно я собираю все из исходников, поэтому я настроил файл /etc/make.conf:
CPUTYPE=pentium4 NO_CPU_CFLAGS=true NO_CPU_COPTFLAGS=true CFLAGS=-O2 -pipe COPTFLAGS=-O2 -pipe NO_INET6=true NO_INFO=true NO_IPFILTER=true NO_SENDMAIL=true DOC_LANG=en_US.ISO8859-1 ru_RU.KOI8-R
В файле /usr/share/examples/etc/make.conf содержатся параметры make.conf с комментариями. Отредактируйте свой make.conf в соответствии с ним. Но хочу заметить, что не стоит злоупотреблять оптимизацией. Некоторые программы, даже если и соберутся, то не запустятся, а если и запустятся, то не будут особенно быстры. А ядро вообще лучше не стоит оптимизировать - быстрее не станет, но зато могут появиться проблемы. Хотя, встречал я рекомендации к использованию оптимизации при сборке ядра. Сложно сказать - кто прав. Но я на медлительность системы пожаловаться не могу, причем ядро собиралось без оптимизации. А ПО лучше собирать с умеренной оптимизацией во избежание ненужных проблем. Теперь можно вплотную заняться конфигурацией будущего ядра;) Проще всего отредактировать имеющийся конфиг дефолтного ядра GENERIC. Он находится тут: /usr/src/sys/ваша_архитектура/conf/GENERIC. В том же каталоге находится файл NOTES, в котором есть все большое количество параметров конфига. Если есть необходимость добавить что-то особенное - смотрим его и ищем необходимый параметр. Весь GENERIC я разбирать не буду - это есть и в FreeBSD Handbook, и на просторах рунета. Остановлюсь на самых важных моментах. Сначала о структуре файла. Конфиг ядра - это обычный текстовый файл, настраивается он с помощью любого текстового редактора. Он перечисляет всё, что определяет функциональность ядра. Это разнообразные устройства и опции. Причем, они все совершенно не обязательны в конфиге - многие из них(если не все) можно так или иначе подгрузить модулями или просто настроив тот же /etc/rc.conf. Но, безусловно, проще раз и навсегда обозначить необходимые устройства в ядре и забыть об этом;) Итак, сначала нужно перейдем в каталог с конфигами:
#cd /usr/src/sys/i386/conf
Теперь нужно скопировать GENERIC под другим именем:
#cp GENERIC MYKERNEL
Затем
#ee MYKERNEL
и можно приступать. В соседней консоли можно открыть NOTES и поглядывать туда в случае отсутствия в GENERIC необходимых опций. По большей части настройка конфига заключается в комментировании(или удалении, если есть желание в случае ошибки разыскивать по сопутствующим докам нужную опцию) ненужных строк. Но несколько придется добавить. Для начала, определитесь с вашим процессором. В моем случае и в случае обладателей современных процессоров Intel и Athlon это будет I686_CPU. Об этом пишется во время загрузкимашины, так что можно просто последить за логом загрузки или поискать его в/var/log. Если с процессором все, тогда обратимся к следующей строке. Ident должен совпадать с именем конфига. В нашем случае будет MYKERNEL. Дальше нужно удалять все строки, которые не являются обязательными(об этом в хандбуке) и не относятся к вашей системе. Все, что касается Raid я у себя убил подчистую. Ибо его никогда на моем рабочем компе не было и вряд ли будет. То же я проделал с остальными ненужными строками. За исключением нескольких. Не торопитесь удалять isa(eisa). Пусть разъема на плате нет, но шина все-равно имеется и через нее работает клавиатура. Поэтому строка эта необходима. Так же не торопитесь удалять все подряд связанное с SCSI. Дело в том, что и usb-накопители, и пишущие приводы работают как SCSI-устройства. Поэтому оставляем следующие строки:
# SCSI peripherals device scbus # SCSI bus (required for SCSI) device da # Direct Access (disks) device cd # CD device pass # Passthrough device (direct SCSI access) device ses # SCSI Environmental Services (and SAF-TE) И добавляем к ним строку
device atapicam
которая отвечает, если я не ошибаюсь, за эмуляцию SCSI и без нее пишущий привод никогда не запишет ни одной болванки. Далее уже проще - удаляем все, что не очень нужно(руководствуюясь Handbook, естественно). В самом конце я дописал необходимые мне опции:
#MY_OPTIONS options SC_DISABLE_REBOOT #запрет на ctrl+alt+del options SC_NORM_ATTR=(FG_GREEN|BG_BLACK) #консоль черно-зеленая, options SC_KERNEL_CONS_ATTR=(FG_YELLOW|BG_BLACK) #сообщения системы, #ядра и загрузка - черно-желтые. options SC_PIXEL_MODE #красивости консоли options SC_HISTORY_SIZE=1000 #увеличить историю консоли до 1000 строк options VGA_WIDTH90 #ширина консоли 90. options MSDOSFS_LARGE options MSDOSFS_ICONV options NTFS_ICONV options NTFS options VESA #framebuffer
После завершения конфигурирования ядра нужно сделать несколько завершающих пассов;) В каталоге с конфигом:
#config MYKERNEL
В случае ошибок в конфиге появится сообщение об ошибке, поэтому нужно снова открыть и отредактировать его. Затем нужно перейти в /usr/src/sys/i386/compile/MYKERNEL и написать следующее:
#make cleandepend; make depend
а после завершения(5 минут на быстрой машине):
#make
После удачной сборки ядра(10-15 минут) нужно его установить:
#make install
Старое ядро при этом переименовывается в /boot/kernel.old, а новое помещается в /boot/kernel. В случае отказа ядра при загрузке системы можно выбрать в пункт, отправляющий в командную строку загрузчика(обычно он самый последний) и прописать там путь к старому ядру. Но при последующей пересборке и установке ядра ваше неудачное ядро будет переименовано в kernel.old, а рабочее попросту исчезнет, поэтому рекомендуется сохранить его под другим именем и тогда оно будет доступно в любой ситуации. Предположим, что все прошло удачно и порадуемся новым цветам консоли;) Теперь неплохо бы немного увеличить ее размер. Прямая дорога в очередной конфигурационный файл - /etc/rc.conf:
allscreens_flags=VGA_90x30
После внесения этих строк консоль будет побольше(по умолчанию она 80x25). Так же можно подправить в rc.conf еще кое-какие параметры.
font8x16=cp866-8x16 font8x14=cp866-8x14 font8x8=cp866-8x8 usbd_enable="YES"
По умолчанию шрифты предлагаются не очень приятные глазу(в их названиях присутствует буква 'b'), но после их смены становится легче=) А четвертая строка отвечает за включение демона usb - это на тот случай, если параметр не появился после установки системы и usb-мышь так и не заработала. С шрифтами и прочим разобрались, теперь стоит подправить следующую смущающую нас вещь - а именно keymap. Многим(и мне в том числе) не нравится, что в дефолтном кеймапе многие символы расположены совсем не там, где обычно находятся в MS Windows или Linux. Для этого стоит скачать архив по этому адресу: http://posix.ru/download/keymaps-ru.tar.bz2 и вытащить из него нужную раскладку. После чего ее необходимо поместить в /usr/share/syscons/keymaps/. Так же нужно в rc.conf изменить параметр keymap и просто написать там имя файла кеймапа, который вы скачали(но только без расширения .kbd).
keymap=ru.koi8-r.win.ctrl_shift
Изменить переключатель раскладки на что-нибудь более привычное можно еще немного отредактировав файл раскладки. Для переключения по ctrl+shift следует изменить его так:
029 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O 042 lshift lshift alock lshift lshift lshift lshift lshift O 054 rshift rshift alock rshift rshift rshift rshift rshift O 058 clock clock clock clock clock clock clock clock O 090 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O 157 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O 170 lshift lshift alock lshift lshift lshift lshift lshift O 182 rshift rshift alock rshift rshift rshift rshift rshift O 186 clock clock clock clock clock clock clock clock O 218 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
В левой колонке указаны номера строк, так что не потеряетесь. По образу и подобию можно настроить себе переключение по alt+shift. Это совсем не сложно, так что предлагаю поэкспериментировать=) Теперь можно создать пользователя, ибо под рутом работать - плохая привычка:
#adduser
Утилита задаст несколько вопросов и ответы на них совершенно просты. Единственное - нужно добавить пользователя помимо основной его группы в группу wheel - только членый этой группы могут брать права администратора с помощью su. А в поле class нужно вписать russian. Если вы планируете в дальнейшем слушать музыку и смотреть видео, то стоит обратить внимание на одну тонкость. Дело в том, что в FreeDSD по умолчанию звук работает одновременно лишь с одним каналом. Для того, что бы это изменить требуется внести несколько строк в файл /etc/sysctl.conf:
hw.snd.pcm0.vchans=4 hw.snd.maxautovchans=4
Так же в этом файле можно разрешить монтирование пользователям:
vfs.usermount=1
К слову, совсем не обязательно каждый раз открывать конфигурационные файлы текстовым редактором - если нужно внести одну строку, то это легко делается с помощью echo:
#echo vfs.usermount=1 >> /etc/sysctl.conf
В результате этой команды нужный параметр будет добавлен в конфиг. Теперь нужно отредактировать /etc/devfs.conf и выставить на файлы устройств соответствующие права:
perm /dev/cd0 0666 perm /dev/acd0 0666 perm /dev/xpt0 0666 perm /dev/pass0 0666 perm /dev/fd0 0666 perm /dev/da0 0666
Далее нужно отредактировать /etc/fstab с тем, чтобы прописать там точки монтирования:
/dev/acd0 /mnt/cdrom cd9660 ro,noauto,-C=koi8-r 0 0 /dev/fd0 /mnt/floppy msdosfs rw,noauto,-L=ru_RU.KOI8-R,-D=CP866 0 0 /dev/da0 /mnt/flash msdosfs rw,noauto,-L=ru_RU.KOI8-R,-D=CP866 0 0
и так далее. На указанные точки монтирования должны быть выданы права пользователям:
#cmod 666 /mnt/cdrom
Теперь осталось установить suid-бит на утилиты монтирования:
#chmod +s /sbin/mount_cd9660
И так же с другими необходимыми вариантами mount. Umount, к счастью, всего один;) Наконец система может считаться пригодной к использованию и даже довольно удобной и комфортной. Не хватает только графики. Можно воспользоваться поддержкой framebuffer у некоторых приложений - тогда можно будет смотреть фильмы и путешестовать по интернету не пугаясь консоли. Но можно поступить по-другому - установить иксы. Просто перейдите в каталог /usr/ports/x11/xorg и наберите:
#make install clean
после чего самая свежая версия xorg будет скачана, собрана и установлена на ваш компьютер. Или же можно сделать так:
#pkg_add -r xorg
что приведет к тому же результату, только минуя стадию сборки. После установки стоит запустить xorgconfig для настройки графической подсистемы. Потребуется ответить на несколько вопросов о вашем железе, после чего иксы должны запуститься командой startx. Но ничего интересного вы не увидите. Xorg - это только база для дальнейших действий. На ващ выбор довольно внушительное количество оконных менеджеров - начиная от легких(1.5-2мб) и заканчивая полновесными монстрами kde и gnome. Все зависит от ваших предпочтений, я же остановился на xfce4 - небольшом и быстром, но в то же время похожем на kde или gnome по функциональности. Дальнейшие ваши действия зависят от выбранного оконного менеджера и менеджера входа в систему(коих я знаю три - kdm, gdm, xdm) - общих советов по этим вопросов быть не может, а рассмотрение каждого по отдельности займет неоправданно много места. Практически любые вопросы рассмотрены в рунете - достаточно только поискать. Так же многое есть на официальных сайтах. Тот же xfce легко устанавливается и настраивается по небольшому мануалу на официальном сайте. Пожалуй, осталось только локализовать xorg. Основной конфигурационный файл иксов - /etc/X11/xorg.conf - содержит достаточное количество готовых настроек настроек, но он все же не локализован. Для начала из портов или из пакетов нужно установить кириллические шрифты, ttf-шрифты и шрифты dejavu. Так же стоит поискать ttf-шрифты MS Windows и поместить их в папку /usr/X11R6/lib/X11/fonts/TTF. Если вы создали этот каталог вручную, то перейдите в него и сделайте следующее:
#mkfontdir #mkfontscale
Теперь нужно отредактировать /etc/X11/xorg.conf. Следует добавить или раскомментировать нужные строки, посвященные шрифтам. Например, так:
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"
FontPath "/usr/X11R6/lib/X11/fonts/TTF/"
Только следите, что бы шрифты misc стояли первыми - иначе иксы могут не запуститься. Так же проверьте наличие других строк - напрмер dejavu. Теперь находим раздел Section "InputDevice" и делаем его вот таким:
Section "InputDevice"
Identifier "Keyboard1"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru(winkeys)" Option "XkbOptions" "grp:ctrl_shift_toggle,led:scroll"
EndSection
С xorg.conf все, осталось отредактировать файл /usr/share/locale/locale.alias
меняем строку
russian ru_RU.UTF8 ru_RU.ISO8559-5
на
russian ru_RU.KOI8-R
После чего выполняем
#fc-cache -f -v
и иксы должны стать полностью русифицироваными. Вот и все. Дальнейшая, более тонкая, настройка системы зависит уже от предпочтений пользователя и потому среди этих, относительно универсальных советов я ее описывать не буду. На этом можно вообще закончить и приступить к установке софта и т. д. Кто-то может захотеть обновить систему. Это делается через cvsup и метод описан в FreeBSD Handbook. А кто-то может придумать что-нибудь еще более интересное;) Но базовая настройка системы может считаться законченной, как мне кажется. Если же вы найдете неточности или ошибки в тексте или же захотите дополнить имеющееся или предложить новое решение описанных вопросов - пишите на dd2kmb@gmail.com