Сисадминам просьба не волноваться, это не про них. Описан процесс
установки и настройки FreeBSD на сугубо домашнем компе, не первой
свежести пеньке-133 причём с дохлым моником. Последнее обстоятельство
ограничивает меня рассмотрением только текстового режима работы.
Подготовка
Итак мы собираемся произвести установку на домашний комп
дополнительной ОС. Первые два вопроса, с которыми необходимо
определиться (кроме Что делать? и Кто виноват?) это Откуда ставить? и
Куда ставить? С первым более-менее ясно -- нет ничего удобнее CD. Я
пользовался четырехдисковым набором для версии 4.7. Первый диск
загрузочно-инсталляционный + коллекция пакетов. На втором -- живая
система, которая может пригодиться в пожарной ситуации. Ну например
вам срочно понадобилось завалить сервант, к которому возможен
физический доступ. Впрочем, в этом случае будет проще просто спихнуть
его со стола. Третий и четвертый диски содержат дополнительные
коллекции пакетов.
Для решения второго вопроса вам придётся помедитировать над своим
железным другом самостоятельно. Если вы не очень знакомы с принципами
размещения осей на винтах для архитектуры PC, почитайте доки с
http://www.symon.da.ru - это лучшее из того, что мне удалось найти.
Остановимся на ключевых моментах: 1) На каждом из физических дисков
может быть создано только четыре основных раздела. 2) Один из четырёх
разделов (обычно второй) может быть обозначен как расширенный
(extended). Внутри него можно создавать дополнительные разделы. 3)
BIOS PC, как правило не видит дальше 8 Gb. Поэтому начало загрузочного
раздела должно находится внутри этой области. 4) Наиболее безопасно
устанавливать незнакомую систему на никому не нужный комп.
Из моего опыта следует, что все доступные для PC оси можно поделить на
три сорта. К третьему сорту относятся все разновидности DOS и Win9x --
эти системы грузятся только с первого раздела первого винта, т.е. с
диска C:. Ко второму сорту относятся ортодоксальные Unix'ы (FreeBSD,
NetBSD, QNX RTP). Они грузятся с любого раздела, но о расширенном
разделе не хотят ничего знать. Системы первого сорта наиболее
дружелюбны и работают откуда угодно. Выявлены следующие особи:
WinNT(2K,XP), BeOS, Linux (опробовано на Mandrake).
Третьим судьбоносным вопросом является: Как грузить? Ведь настоящая
хацкерская тачка должна быть многоосной. Можно воспользоваться
загрузчиком одной из систем или выбрать независимый загрузчик. Я
выбрал SyMon и не разочаровался.
Итак, будем считать, что вы определились с означенными тремя вопросами
и ...стоп. Надо ещё выделить время. То есть когда вы будете ставить
систему в десятый раз, времени вам понадобится гораздо меньше, но
поначалу надо действовать вдумчиво, с чувством, толком, расстановкой.
Поэтому выделяйте не менее одного выходного. Я потратил оба.
Итак CD закуплены, компутер томиться в ожидании, пыво остывает в
холодильнике - можно начинать...
Установка
Берём CD#1 и загружаемся. После загрузки появляются текстовые менюшки,
немного сумбурные и крысой не цепляются, но при некоторой сноровке
пользоваться можно. Прямо с порога вам будет предложено
переконфигурировать ядро, на провокации не поддаёмся, чего его
ковырять без особой надобности. Далее попадаем в менюху проги
/stand/sysinstall. Запомните это слово. Вы можете запускать эту прогу
всю оставшуюся жизнь, подкручивая, полируя или ломая новым способом
уже установленную систему.
А сейчас выбираем стандартную инсталляцию. Далее надо выбрать диск,
если их больше одного, после чего запустится fdisk. Повторюсь, FreeBSD
относится к системам второго сорта, поэтому не пытайтесь ставить её в
расширенный раздел или на один раздел с виндовс. Эта система юная но
гордая и требует себе отдельного первичного раздела. Если такой раздел
уже выделен, рекомендуется его удалить и создать заново. Тип раздела
по умолчанию определяется номером 165 и лучше его не менять. Всё, жмём
Q и уходим.
Теперь вам будет предложено установить бутменеджер и записать MBR. На
это надо твёрдо отвечать, что ничего нам не надо и со своим MBR мы
разберёмся сами.
Далее запускается ещё одно лихо - Disklabel Editor. Эта штука
напоминает fdisk и служит для нарезания первичного раздела на слайсы.
Тут я доверяюсь вкусу и чувству меры разработчиков и жму кнопку A, что
значить "автоматически". Смотрим, шта палучилась. Раздел в 2 гектара
был нарезан следующим образом: корень (/) = 128M, swap = 240M, /var =
256M, /tmp = 256M, /usr = 1111M. Если что-то не устраивает можно
поправить ручками. Здесь же удобно добавить дополнительные точки
монтирования для существующих посторонних разделов, но только в
пределах данного диска.
С диском покончено, пора выбирать чего ставить. Кроме собственно
системы доступно огромное количество пакетов и их можно выбирать
индивидуально. Однако из экономии времени я пользуюсь "комплексными
обедами", а именно выбираю девелоперскую дистрибуцию и дело с концом.
Если вы не уверены, можно поставить минимальную дистрибуцию и
доставлять порты/пакеты по мере возникновения необходимости. Кроме
того я ставлю дерево портов. Постинсталяционные исследования диска
командой df (disk free) показали, что корневой слайс заполнился на 34
метра, слайс /usr на 680 метров, а /var и /tmp практически не
пострадали.
Наконец предлагают выбрать откуда ставить (9 вариантов!), неужели не
ясно? CD/DVD!
Вам может показаться, что система уже почти поставлена и настроена -
это не так. Ещё не поздно всё отменить, о чём и сообщает очередная
менюшка. Но мы её игнорируем и жмём OK! Побежали буковки и циферки,
процесс установки пошёл и это нормально. Обращает на себя внимание
ровное гудение блиновода, система шарашит не задумываясь. В моём
случае установка закончилась через 6 минут.
Далее следуют новые проявления врождённого любопытства системы в виде
вопросов. Можно отвечать на них сейчас или оставить на потом. Отмечу
лишь пару моментов: второго пользователя пока не добавляем, а пароль
для рута устанавливаем.
Что было отмечено сразу после установки, так это высокая скорость
загрузки. Фря грузится быстрее виндов в три раза и приближается к DOS,
оставляя позади остальные системы. Это может оказаться полезным если
вы торопитесь и вдруг понадобилось проверить почту. Впрочем,
торопливость не лучший помощник в зтой жизни.
Настройка
"Веришь ли ты в настройку после установки?" - пела Шер, видать она
сидит под виндами. Под никсами ("у них") настройка системы
обязательна. Перво-наперво надо определиться с редактором - без него,
как без рук, хотя некоторые умудряются и без рук...
Редактор
Система к счастью уже содержит два редактора - vi и ee. Если вы не
ищете лёгких путей - изучайте vi, я же выбрал ee. Во-первых проверим,
что он действительно стоИт:
# ee
потом сделаем его редактором по умолчанию:
# set EDITOR=ee
(позднее надо будет не забыть добавить соответствующую строчку в
.profile в домашней директории.(export EDITOR=ee;)
Монтируем блины
В процессе установки пакетов нам потребуется часто менять диски в
приводе, поскольку дисков много а привод - один. Лично у меня тачка
живёт под столом и нажимать кнопку привода мне неудобно. Поэтому я
сразу втыкаю парочку фирменных скриптов: /usr/local/bin/cdm отвечает
за установку блина (в /dev/skovoroda), а /usr/local/bin/cdu - за его
вытаскивание.
#!/bin/sh
#cdm - CD mount
cdcontrol -f /dev/acd0c close
mount /cdrom
#!/bin/sh
#cdu - CD unmount
umount /cdrom
cdcontrol -f /dev/acd0c eject
Далее делаем им chmod 770, и скрипты готовы к использованию. Первая
неприятность состоит в том, что cdcontrol не будет выдвигать лоток
если он пуст. Исследование исходников показало, что баг кроется в
архитектуре ATAPI-CD драйвера. Всё организовано по аналогии с IDE
винчестером -- если диска нет, значит девайс не сконфигурирован, его
номер не возвращается и отдать команду мы ему не можем. В общем,
можете пожаловаться разработчикам...
Другая неприятность заключается в том, что система позволяет
монтировать файловые системы только администратору aka руту. Похоже,
что эта паранойя угнездилась глубоко в ядре, пусть знатоки меня
поправят. Изучайте команду su господа!
bash
Далее будем ставить любимый шелл - bash. По умолчанию Фря ставит csh,
что мотивируется POSIX-совместимостью. Воспользуемся нашими свежими
скриптами:
# cdu
# put disk#1 -by /dev/hands
# cdm
# /stand/sysinstal
, далее по пунктам меню:
Configure-Pakages-CD/DVD-shells-bash...Нажимаем на кнопку - получаем
результат. Переходим в домашний каталог и делаем резервную копию
конфигурации:
# cd ~
# cp .profile .profile_orig
# ee .profile
Здесь вставляем следующие строки:
export EDITOR=ee
export PS1="u:W!!"; #печатать в приглашении bash имя юзера и путь
export PS2="t!!"; #в дополнительном приглашении печатать время
#для rootа я устанавливаю удобств по минимуму, чтоб не засиживаться
#позднее для пользователя устанавливаю более удобное
# export PS1="u:w>"; с указанием полного пути
alias ls='ls -aFG' #по команде ls: (-a) показывать все файлы,
# (-F) для директорий, ссылок и
# исполняемых файлов использовать спец. обозначения
# (-G) раскраска файлов
Далее необходимо сменить шелл для любимого админа. Набираем:
# chsh
и попадаем в ee, если все было сделано правильно. Меняем shell на
/usr/local/bin/bash. Теперь можно и перегрузиться (reboot), благо это
быстро. Проверяем как работает bash: стрелки вверх/вниз - прокрутка
истории команд, tab - автодополнение пути к файлам.
Русификация
Приступаем к русификации. Небольшое технологическое отступление.
Архитектура IBM PC предусматривает следующий способ отображения
информации в текстовом режиме. В специальную область видеопамяти
загружается таблица с начертаниями символов. Вывод информации
осуществляется указанием видеоадаптеру номеров соответствующих
символов. Большинство символов имеют по краю черную вертикальную
полоску шириной в один пиксель для предотвращения "слипания". Только
небольшой диапазон адресов, изначально предназначенный для хранения
символов псевдографики, не имеет этой особенности. Так вот, среди
наиболее известных русских кодировок, только альтернативная кодировка
ГОСТ (она же CP-866) сохраняет символы псевдографики на их родных
местах, позволяя наблюдать на экране гладенькие рамочки. Таким
образом, врач прописывает ставить шрифты в кодировке CP-866, но
использовать "родную" для Unix кодировку KOI8-R и соответствующую
перекодировочную таблицу для сопряжения этих двух. Что может быть
проделано как через /stand/sysinstall, так и руками. Опишем последнее.
Редактируем /etc/rc.conf
keymap="ru.koi8-r.shift"
#можно поставить просто ru.koi8-r, но тогда цифровые клавиши в
#русской раскладке переворачиваются, что мне было непривычно
scrnmap="koi8-r2cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"
Далее редактируем /etc/ttys
console none unknown off secure
#
ttyv0 "/usr/libexec/getty Pc" cons25r on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25r on secure
ttyv2 "/usr/libexec/getty Pc" cons25r on secure
ttyv3 "/usr/libexec/getty Pc" cons25r on secure
ttyv4 "/usr/libexec/getty Pc" cons25r on secure
ttyv5 "/usr/libexec/getty Pc" cons25r on secure
ttyv6 "/usr/libexec/getty Pc" cons25r on secure
ttyv7 "/usr/libexec/getty Pc" cons25r on secure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
Ну вот мы и русифицированы (слыхал, что можно перезапускать консоль
без перезагрузки. Не помню как и посему тупо перегружаюсь). Русская
клавиатура включается клавишей CapsLock и заявляет о себе свечением
соответствующего светодиода, что в принципе удобно. При переключении
между несколькими консолями (Alt+F1, F2..) состояние клавиатуры для
каждой из них сохраняется и диод CapsLocka загорается и гаснет
соответственно. Функции CapsLockа берёт на себя комбинация
Shift+CapsLock и Ctrl+CapsLock. Удерживая Alt, также можно печатать в
иной раскладке.
Midnight Commander
Bash bashем, но иногда хочется побродить по директориям в свободном,
так сказать, полёте. Будем ставить Midnight Commander. Обратите
внимание, что ставим мы всё из пакетов. Как было правильно подмечено
кем то из классиков, пакеты (packages) подобны готовым блюдам, в то
время как порты (ports) это полуфабрикаты. Установка софта из портов
требует дополнительного труда по скачиванию исходного кода, компиляции
и инсталляции, зато вы можете выковырять из пиццы лишний, по вашему
мнению, лук. Итак вставляем диск #4 и набираем знакомое
/stand/sysinstall, далее по знакомой дорожке:
Configure-Pakages-CD/DVD-misc-mc. OK, mc поставлен. Кстати если ваш mc
норовит стартовать в черно-белом настроении - добавьте в ~./profile
строку:
export COLORTERM=1
и он моментально посинеет.
Добавляем юзеров
Теперь, пожалуй пора и юзеров добавить. Для начала залезем в каталог
/usr/share/skel/ и покопаемся в тамошних dot-файлах. Особое внимание
следует уделить dot.profile. Это прототип для .profile, который будет
копироваться в домашний каталог для каждого нового юзера. Для
упрощения жизни можно скопировать сюда уже настроенный /root/.profile.
Далее набираем
root:skel!!adduser
Эта полезная утила предполагает, что вы будете создавать много юзеров
по одному шаблону. Поэтому сначала она будет задавать вопросы по
поводу параметров по умолчанию, будьте внимательны. Когда дойдёт дело
до создания вашего аккаунта, кроме логина/пароля необходимо задать
группу wheel. Только пользователям этой группы разрешено выполнять по
совместительству обязанности админа, т.е. команду su. Вы имеете
возможность пригласить себя и в другие группы, я записываюсь в
operator и network. Если понадобиться что-то поменять, можно
отредактировать /etc/group.
Dial-Up
Какой домашний компутер без интернету. Интернет способен удовлетворить
любые ваши фантазии, однако, прежде чем переходить к частностям, надо
бы установить ppp соединение с провом. Надеюсь у вас есть модем и
атрибуты провайдера для подключения. Для начала проверяем наличие
последовательных портов:
wintix:/dev>dmesg | fgrep sio
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
Видим, что в нашем распоряжении есть два порта поддерживающие
UART16550A, т.е. FIFO буферизацию, и это хорошо. А вот так я проверяю
работоспособность модема. Модем внешний, прицеплен на COM2. Работаем
из-под rootа, в данном примере юзерский ввод выделен жирным (набрано
жирными руками rootа).
root:/etc!!cu -l /dev/cuaa1
Connected.
atz
OK
ati
33600
OK
atdp #здесь раздался гудок и я выключил мопед
..cu: Got hangup signal
Disconnected.
root:/etc!!
OK. Мопед работает. Переходим к редактированию /etc/ppp/ppp.conf. Этот
файл содержит секцию default:, в которой прописывается порт и
параметры соединения. Ставим свой порт, выставляем время ожидания до
разрыва соединения и способ набора номера (ATDT меняем на ATDP).
Преходим к секции papchap:. Внутри неё может быть несколько
подразделов для разных провайдеров, например:
prov1:
set phone 1234567
set authname MyLogin
set authkey MyPassw0rd
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR # Add a (sticky) default route
Редактируем поля для телефона, логина и пароля, и можно звонить.
Никаких первичных/вторичных DNS или доменов вводить не надо! За это
отвечает строчка enable dns. Сразу после установления соединения
адреса DNS-срверов появляются в /etc/resolv.conf сами-собой. ppp может
быть запущен многими способами, я пускаю его в режиме демона:
wintix:~>ppp -auto prov1
В этом режиме он создаёт псевдо-девайс tun0, который ожидает запроса
на выход в сеть. При поступлении запроса происходит дозвон и
соединение. Если в течение timeoutа запросов не будет - соединение
разрывается. Если вам понадобиться прихлопнуть этого демона,
используйте команду:
wintix:~>kill `cat /var/run/tun0.pid`
Будьте внимательны, обе кавычки - левые.
Итак, дозвон свершился. Запускаем полуночного командира, пусть
потрудится FTP клиентом. Теперь у нас наконец появилась возможность
ставить софт не из пакетов а из портов. Для этого необходимо
установить дерево портов. Если вы не сделали этого при инсталляции -
то /stand/sysinstall-Configure-Distribution-ports.
Далее гуляем в /usr/ports и видим кучу директорий - это типа темы,
например тема www. Заходим в тему - видим ещё кучу директорий, это
типа приложения. От приложений там оставлены мейкфайлы и ещё кое-какая
дребедень. Файлы небольшие, но их много. Команда du (disk usage)
показала что деревце занимает 173 метра из 680, которые были залиты на
слайс /usr.
Lynx
Был недавно в зоопарке, обнаружил данную надпись на клетке с рысью и
никаких упоминаний о лицензии GNU. Посмотрел в словаре, и
действительно lynx это рысь. Рысь поставим для разнообразия из портов.
Итак,
root:/etc!!cd /usr/ports/www/lynx-current
root:/lynx-current!!make
>> lynx2.8.5dev.8.tar.bz2 doesn't seem to exist in
/usr/ports/distfiles/.
>> Attempting to fetch from http://lynx.isc.org/current/.
Receiving lynx2.8.5dev.8.tar.bz2 (2047916 bytes): 5%
. . .
root:/lynx-current!!make install
То есть всё скачивается автоматически и далее происходит компиляция и
сборка. Все зависимости естественно проверяются и удовлетворяются
посредством той же сети и без вашего участия. По окончании процесса вы
имеете установленную программу и все исходники, что может оказаться
полезным, если понадобится перекомпиляция с другими опциями или
какими-нибудь изменениями.
WWW сёрфинг в текстовом режиме вещь специфическая, но и к этому можно
привыкнуть. Зато быстро, поскольку вся графика вырезается в принципе.
Для просмотра порносайтов не очень удобно, зато ничего не отвлекает.
Ненастроенная рысь отображает русский текст латиницей, настраивается
это нажатием буквы o(ptions), кодировка отображения koi8-r и не забыть
записать настройки в файл. В домашней директории появится .lynxrc -
пожалуй первый, из встреченных мной, конфиг на русском.
Что там ещё из насущного? Почта. Это очень длинная история, может на
следующих выходных...
Пользуясь случаем спешу выразить признательность Андрею Лаврентьеву за
"Наброски по установке и настройке FreeBSD-4.x"
(http://www.opennet.ru/docs/BSD/FreeBSD_RELENG_4/index.html) и Virusу за
"Поднимаем FreeBSD" (http://www.xakep.ru/post/14829/default.asp).