Вместо введения
Последние лет 10 на рабочем десктопе использую исключительно операционные системы семейства Linux.
Был RHL, Слака, Debian, Gentoo, пробовал SuSE, даже собирал свой дистрибутив с нуля из исходников, тягая исходники гнушного софта откуда только можно. В итоге пришел конечно же к Ubuntu - минимум головной боли, все из коробки, поставил и забыл.
Сидя на Ubuntu постепенно начал забывать корни, а за эти годы они ушли от корней настолько далеко, что руками уже и не принято ничего делать, монолитные ядра чужды идеологии современных дистрибутивов, все работает как-то само, а если не работает то не работает.
От дистрибутива к дистрибутиву постоянно меняется софт... то syslogd, то syslog-ng, то rsyslog. Unity, Gnome-shell — вроде работает, а вроде и нет. До последнего держался за Gnome Classic, но с этим все сложнее.
Последней каплей стало понимание того, что 64-х битную убунту походу никто и не тестит... банально может не работать драйвер видюхи или какая-нибудь галочка в настройках терминала. 32-х битная — все ОК.
И решился я на эксперимент по полной смене ориентации, точнее захотелось примкнуть к армии бздунов и лично убедиться есть ли жизнь на той стороне?
Для экспериментов взял FreeBSD 10.1 и NetBSD 6.1.5.
Начну с NetBSD... судя по истории развития BSD систем, она наиболее породистая (чего нельзя сказать о Linux который без корней и истории).
В NetBSD все стройно, красиво и минималистично. Рабочая система без иксов — 300 метров, с иксами 600, а с портами и исходниками ядра порядка 1.5 гигов.
Простой загрузчик, rc.local, ядро прям в корне и т. п. В ядре масса твиков под разные ноуты и древнюю экзотику, но конфигурить его новичку на порядок сложнее чем в той же фре.
Пакетный менеджер и pkgsrc не могут не порадовать. Но минимум софта (банально просто так не поставишь chromium и slim, не говоря о драйверах nvidia), проблемы с документацией и гемор с нарезкой дисков руками отбили всю охоту продолжать эксперименты. NetBSD безусловно достойна внимания, но она осталась на уровне FreeBSD 2001-го года.
Теперь FreeBSD... однозначно с 2001 года фря сильно прогрессировала, там тебе и модули ядра и драйвера для железа и безумное количество софта в портах.
Процесс установки хоть и не такой красивый как в убунте, зато минимум вопросов, очень быстро, а главное на выходе получаем те же 300-600 метров без портов и исходников.
Что радует во фре:
- Русскоязычная документация начиная с handbook (https://www.freebsd.org/doc/ru/books/handbook/), заканчивая man где описан каждый модуль ядра, как его вкомпилить в ядро и как настраивать (man 4) — это реально круто.
- Исходники ядра с базовой системой и менеджером пакетов это один тарбол из одного места от одних разработчиков. Этого достаточно что бы собрать работающую базу с ядром вместо использования бинарных снепшотов (об этом ниже), все остальное можно получить извне так же из исходников, используя систему портов (тоже один тарбол с сайта).
- Наличие полноценного менеджера пакетов pkg который позволяет ставить бинарные сборки софта вообще не имея на машине портов. При чем порты и pkg можно миксовать, а pkg отлично справляется, например, с удалением пакетов собранных из портов как со своими собственными.
- Минималистичность конфигов — все буквально в нескольких файлах: /boot/loader.conf, /etc/rc.conf (сердце вообще всего), /etc/sysctl.conf и make.conf — не надо лазить по всей файловой системе, все в одном месте которое легко перенести на другую систему.
- Умный загрузчик который находит корень читая прямо /etc/fstab, а модули грузит прямо из файловой системы еще до загрузки ядра (пользователи Linux поймут от чего я так рад).
- Система отлично живет без модулей ядра, а ядро можно уменьшить до 6-ти метров без потери функциональности.
- От devfs никуда не уйти, но, например, procfs фре больше не нужен (все через sysctl), clang вместо gcc, запуск демонов через service, старый добрый syslogd и inetd.
- Все конфиги для человека и нигде не написано — генерится само, не трогать.
- Никто тебя не ограничивает в выборе путей и ничего не навязывает. Можно сделать просто - поставить gnome или KDE, а можно копнуть глубже и ничего за это не будет.
Продолжать можно долго, но фря это идеальный компромисс между функционалом Линуксов и Unix традициями с уникальной лаконичностью, ясностью и прозрачностью системы — понятно как все работает и откуда все берется, хэндбук в помощь и не нужны никакие форумы. Все включается одной строчкой в rc.conf, а сборка ядра это 3 минуты на старом Core 2 Duo. Фря идет своим путем не пытаясь угодить всем вокруг, занимаются развитием одни люди которые делают и ядро и окружение, от версии к версии не меняют все и везде, а нововведения строго дозированы — всего в меру и по необходимости.
Как следствие - не надо каждый день ловить обновление ядра, как это любят в Убунте (ее и это не спасает).
Из-за этого от фри складывается очень положительное впечатление — это действительно самодостаточная, полноценная операционная система с идеологией и корнями, а не гнушный зоопарк, подрывающий веру в Open source.
Теперь попытаюсь расписать как раскатать FreeBSD 10.1 с нуля и без инсталлятора.
Это полезно знать что бы понимать как оно работает т. к. в итоге имеем массу рецептов на разные случаи жизни.
На изучение и эксперименты ушло порядка недели, до этого никакого опыта с BSD, только Linux.
Подготовка носителя
Основа любой ОС это носитель на котором она располагается и загрузчик который вдыхает жизнь в компьютер при каждом включении питания.
Соответственно сначала необходимо узнать как подготовить диск для новой системы и установить загрузчик.
Бздя использует свою систему разделов, отличную от Linux и Windows и разделов этих может быть много. Она умеет использовать диск в монопольном режиме, но тогда диск будет полностью испорчен для других систем т. к. там не будет ни одной BIOS партиции (которых 4 штуки). Поэтому обычно FreeBSD партиции помещают в одну специально созданную BIOS партицию с типом 165 aka 0xa5 (FreeBSD/NetBSD/386BSD). BIOS партиции в терминах FreeBSD — слайс (что б не было путаницы).
Это накладывает отпечаток и на принцип именования файлов устройств, например: /dev/ada0s1a - это физическое устройство ada0, слайс 1 (т. е. Первая BIOS партиция), раздел 'a' (т. е. первая FreeBSD партиция).
Инструментарий для работы с разделами в FreeBSD тоже свой. Например, fdisk, который работает с BIOS партициями совсем другой и не такой простой в освоении как в DOS и Linux. Он умеет бить диск и устанавливать стандартный MBR в нулевой сектор, который сможет загрузить не только FreeBSD, но и другие ОС.
Если захочется установить MBR родной для FreeBSD, то для этого есть команда boot0cfg, но это не лучшая идея.
Для работы с FreeBSD разделами (монопольно или внутри BIOS слайса) используется bsdlabel.
Теперь к практике...
Данный этап предполагает наличие работающей FreeBSD на машине. Если ее нет или нет желания возиться самому смело пропускаем этот этап и ставим систему инсталлятором из ISO образа с сайта freebsd.org.
Для примера я буду использовать memory disk но в реале вместо md0 будет, например, ada0.
Подготовка md0 на 4 гига (этот шаг только для демонстрации и не требуется):
dd if=/dev/zero of=disk.img bs=1M count=4000
mdconfig -f disk.img
После этого появится /dev/md0 который для системы является физическим диском, но реально находится в файле disk.img.
Создаем слайс для FreeBSD на весь диск (подробности в мануале: https://www.freebsd.org/doc/ru/books/handbook/boot-blocks.html):
fdisk -I md0
Записываем на диск стандартный MBR (для установки родного MBR, как я уже писал, можно использовать boot0cfg):
fdisk -B md0
Создаем на только что созданном первом и единственном слайсе дефолтную разметку FreeBSD:
bsdlabel -w md0s1
Устанавливаем в первый слайс загрузчик FreeBSD (т. к. слайс активный MBR с легкостью найдет его и передаст управление загрузчику FreeBSD):
bsdlabel -B md0s1
Теперь разбиваем слайс в интерактивном режиме на один или несколько разделов FreeBSD:
bsdlabel -e md0s1
Запустится текстовый редактор (скорее всего VI). Размер указывается в секторах по 512 байт,
соответственно прежде чем менять цифры желаемую длину делим на 512 и получаем количество секторов для bsdlabel.
Тип раздела для корня должен иметь тип 4.2BSD, для свопа: swap.
Вместо длины и/или смещения можно использовать '*' - значит на всю длину после последнего раздела (bsdlabel сам вычислит нужные значения).
Вот пример файла:
# /dev/md0s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 7177006 16 4.2BSD 0 0
b: * * swap
c: 8177022 0 unused 0 0 # "raw" part, don't edit
После сохранения и выхода из редактора bsdlabel сделает все что мы заказывали. Теперь форматируем и монтируем корень (вместо mkfs используется newfs):
newfs md0s1a
mount /dev/md0s1a /mnt/
Настало время раскатать базовую систему, ядро и порты с исходниками. Взять необходимое можно из дистрибутива на диске (ISO образа) или скачать с сайта.
Необходимые файлы (бинаные снепшоты) для 10.1 под amd64 находятся тут:
ftp.freebsd.org/pub/FreeBSD/snapshots/amd64/10.1-STABLE/
На диске с дистрибутивом искать тут:
/usr/freebsd-dist/
Так же можно скомпилировать всю базовую систему с ядром прямо из исходных текстов (src.txz).
Для справки делается это так - в /usr/src/ делаем:
make buildkernel
make buildworld
make installworld DESTDIR=/mnt/
make installkernel DESTDIR=/mnt/
Предположим что решили использовать дистрибутив, для этого монтируем диск в /mnt_dist/ и раскатываем базовую систему:
tar -C /mnt/ -zxf /mnt_dist/usr/freebsd-dist/base.txz
Распаковываем стандартное ядро в /boot/kernel либо копируем наше с модулями или без из существующей системы:
tar -C /mnt/ -zxf /mnt_dist/usr/freebsd-dist/kernel.txz
либо:
cp -r /boot/kernel/* /mnt/boot/kernel/
По желанию распаковываем исходники системы для сборки ядра:
tar -C /mnt/ -zxf /mnt_dist/usr/freebsd-dist/src.txz
Порты можно взять из дистрибутива:
tar -C /mnt/ -zxf /mnt_dist/usr/freebsd-dist/ports.txz
либо скачать актуальный снепшот с ftp.freebsd.org (например, http://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz).
Перед chroot монтируем devfs в новую систему (procfs хоть и есть но больше не требуется):
mount -t devfs devfs /mnt/dev/
Теперь можно делать chroot в новую систему для начальной настройки:
chroot /mnt /bin/sh
Внутри ставим утилиты первой необходимости (нужна сеть, поэтому если есть прокси, то придется установить переменные окружения HTTP_PROXY и HTTPS_PROXY):
pkg install bash mc vim wget sudo (тут все по желанию).
Устанавливаем пароль суперпользователя и по желанию меняем шелл:
passwd root
chsh -s /usr/local/bin/bash root
Устанавливаем часовой пояс:
tzsetup
Создаем /etc/fstab для монтирования корня и подкачки следующего содержания:
/dev/md0s1a / ufs rw,noatime 1 1
/dev/md0s1b none swap sw 0 0
# это для Linux
#linproc /compat/linux/proc linprocfs rw 0 0
#/dev/ada0s2 /u01 ext2fs ro 1 2
Создаем /etc/host.conf следующего содержания:
hosts
dns
На случай последующей сборки монолитного ядра можно сразу создать /etc/make.conf с дефолтными настройками:
KERNCONF=MYKERNEL
NO_MODULES=TRUE
Создаем /etc/rc.conf с:
hostname="mynewhost" # имя хоста
keymap="ru.win"
ifconfig_em0="DHCP" # настройка сетевого интерфейса, где em0 его имя (ищем подходящий командой ifconfig)
sshd_enable="YES" # включаем sshd
dumpdev="AUTO"
hald_enable="YES" # нужно для xorg
dbus_enable="YES" # нужно для xorg
#linux_enable="YES" # для совместимости с Linux
slim_enable="YES" # для запуска менеджера дисплея slim
#wlans_urtwn0="wlan0" # пример для WiFi с USB донглом
#ifconfig_wlan0="WPA DHCP" # пример для WiFi, потребуется создать
# /etc/wpa_supplicant.conf командой wpa_passphrase
sendmail_enable="NO" # отключаем sendmail
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
cron_enable="NO" # отключаем cron
Создаем /etc/resolv.conf с:
search mydomain.com # имя нашего домена
nameserver 192.168.1.1 # адрес DNS сервера
В /etc/sysctl.conf добавляем:
kern.ipc.shm_allow_removed=1 # для chrome
#compat.linux.osrelease=2.6.18 # если будут проблемы с эмуляцией Linux
В /boot/loader.conf по желанию добавляем:
nvidia_load="YES" # загрузка драйвера nvidia который установим позже
kern.vty=vt # переключаем консоль на VT драйвер с поддержкой UTF-8 и графики
# (должна быть поддержка в ядре)
#ext2fs_load="YES" # для Linux и если ядро не монолит
#linux_load="YES" # для Linux и если ядро не монолит
В /root/.profile можно указать адрес прокси и локаль:
export HTTP_PROXY=http://login:password@192.168.1.1:8080
export HTTPS_PROXY=http://login:password@192.168.1.1:8080
export LANG=ru_RU.UTF-8
Добавляем не root пользователей командой:
adduser
По желанию меняем им шелл на bash:
chsh -s /usr/local/bin/bash ИМЯ_ПОЛЬЗОВАТЕЛЯ
Что бы работал su добавляем нашего не root пользователя в группу wheel (руками правим /etc/group или прям при добавлении приглашаем его в группу).
Если ставим sudo, то в /usr/local/etc/sudoers (лучше командой visudo) раскомментируем строку:
%wheel ALL=(ALL) ALL
В домашней директории пользователей в .profile тоже можно указать локаль и прокси (см. выше).
Если нужен tsocks ставим его из портов или через pkg, а в /usr/local/etc/tsocks.conf указываем адрес socks прокси:
server = 192.168.1.1
server_type = 5
server_port = 1080
Все, если я нигде не ошибся базовая система готова, делаем:
umount /mnt/dev
umount /mnt/
и можно попробовать перегрузиться, выбрав для загрузки наш новый диск.
При желании перед этим можно пересобрать ядро. Если кратко:
1) В /usr/src/sys/amd64/conf создаем копию GENERIC и называем ее MYKERNEL (имя платформы в пути не обязательно amd64).
2) Правим MYKERNEL как нам хочется: добавляем то, что упоминается в dmesg и kldstat и выключаем все что не надо, мое ядро в итоге 5.9 мегов.
3) Поднимаемся в /usr/src/ и делаем 'make buildkernel KERNCONF= MYKERNEL'
4) Если все ОК то делаем 'make installkernel' - в /boot/kernel новое ядро, в /boot/kernel.old старое.
Т.к. в /etc/make.conf мы указали дефолтное имя ядра, в make его указывать не обязательно, а модулей на выходе не будет за счет NO_MODULES.
Если все верно, то после логина под root мы попадаем в новую чистую систему и имеем консоль на русском языке, рабочую сеть и vim с mc.
Настраиваем иксы
Устанавливаем xorg, hal, dbus и slim, а из портов /usr/ports/x11-fonts/webfonts и для nvidia /usr/ports/x11/nvidia-driver.
При сборке драйверов nvidia отключаем совместимость с Linux.
В /etc/rc.conf мы уже включили hald и dbus ранее, поэтому теперь только запускаем руками:
service hald start
service dbus start
Загружаем руками драйвер nvidia (после перезагрузки подцепится сам благодаря /boot/loader.conf):
kldload nvidia
Запускаем Xorg с ключом -configure и получаем в /root/xorg.conf.new дефолтный конфиг иксов.
Переносим его в /etc/X11/xorg.conf и правим.
В секции "Module" нужны 'Load "glx"' и 'Load "freetype"'.
В "Files" если нет добавляем FontPath для:
/usr/local/lib/X11/fonts/TTF/
/usr/local/lib/X11/fonts/Type1/
/usr/local/lib/X11/fonts/cyrillic/
/usr/local/lib/X11/fonts/dejavu/
/usr/local/lib/X11/fonts/LinLibertineG/
/usr/local/lib/X11/fonts/Liberation/
/usr/local/lib/X11/fonts/GentiumBasic/
/usr/local/lib/X11/fonts/Carlito/
/usr/local/lib/X11/fonts/Caladea/
/usr/local/lib/X11/fonts/bitstream-vera/
/usr/local/lib/X11/fonts/webfonts/
Для nvidia в "Device" прописываем:
Driver "nvidia"
Option "RenderAccel" "true"
Option "AllowGLXWithComposite" "true"
И не забываем добавить:
Section "Extensions"
Option "Composite" "Enable"
Option "RENDER" "Enable"
EndSection
Конфиг slim в /usr/local/etc/slim.conf
Можно поискать для него темы в Инете и положить распакованные директории с ними в:
/usr/local/share/slim/themes/
После этого в slim.conf в current_theme указываем имя темы. Больше ничего трогать не требуется.
Иксы готовы.
Переходим к оконному менеджеру и оформлению
Рассмотрим вариант с openbox, но не менее интересны awesome и evilwm.
Ставим (pkg install или /usr/ports/): openbox, openbox-themes, obconf, obmenu, xrandr, xbindkeys, feh, xcompmgr, trayer и alltray.
По желанию: pcmanfm, lxpanel, gnome-ssh-askpass2, rox, xscreensaver или xlockmore, gkrellm, transset, tint2 и conky.
Скорее всего понадобится: thunderbird, pidgin, chromium, putty и libreoffice с пакетом локализации ru-libreoffice и ru-hunspell, vlc, gqview, mupdf или xpdf.
В домашней директории не root пользователя создаем .xinitrc:
Там можно указать адрес прокси как в .profile и прописываем локаль:
export LANG=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8
Если хотим что б пароль от ssh ключей спрашивался не в консоли:
export SSH_ASKPASS=/usr/local/bin/gnome-ssh-askpass2
Опять же для ssh лучше запустить это:
killall ssh-agent
eval `ssh-agent`
Если мониторов несколько, то можно указать кто где и установить основной (в примере основной DVI-I-1 и он слева):
xrandr --output DVI-I-1 --primary --left-of VGA-0
Выключаем бип в терминале если напрягает писк:
xset b 0
Раскладка клавиатуры и форма указателя мыши:
setxkbmap -layout "us,ru" -option "grp:ctrl_shift_toggle,grp_led:scroll"
xsetroot -cursor_name left_ptr
Устанавливаем фон рабочего стола:
feh --bg-center $HOME/Pictures/background.png
Либо стартуем pcmanfm для отображения иконок на столе, там же настраивается фон. К сожалению пропадает меню openbox по правой кнопке (для evilwm не страшно):
pcmanfm --desktop &
Если нужна панелька:
lxpanel &
Горячие клавиши из .xbindkeysrc:
xbindkeys &
Плавное затухание окошек и тени (теней у меня не появилось):
xcompmgr -cfCF -D 3 &
Лоток с уведомлениями в правом нижнем углу:
trayer --expand true --edge bottom --align right --widthtype request --transparent true --tint black --SetDockType true --alpha 256 &
Хранитель экрана если не хотим обычный xlock (xlock'а достаточно и он быстрее):
xscreensaver -no-splash &
Монитор при желании (для evilwm делаем позднее):
gkrellm &
Загрузка ssh ключей при старте:
ssh-add < /dev/null &
Важные приложения в трее:
alltray thunderbird &
pidgin &
И в финале:
exec openbox
либо:
exec awesome
Если evilwm то немного не так:
evilwm -snap 10 -bw 2 -fg red -app gkrellm/Gkrellm -dock -app Pidgin/Pidgin -dock -app Mail/Thunderbird -dock &
exec gkrellm (либо exec xterm)
В .Xdefaults делаем красивым xterm:
XTerm*foreground: green
XTerm*cursorColor: green
XTerm*background: black
XTerm*SaveLines: 1000
XTerm*faceName: xft:Terminus:pixelsize=20:antialias=true
XTerm*utf8: 1
В .xbindkeysrc вешаем горячие клавиши на блокировку экрана и запуск терминала:
"xlock"
Control+Alt + Delete
"xlock"
Control+Alt + l
"xterm"
Control+Alt + Return
"putty"
Control+Alt + p
Вместо xlock можно указать "xscreensaver-command -lock", но тогда в .xinitrc не забываем про xscreensaver.
Меню openbox меняем в .config/openbox/menu.xml (за основу можно взять дефолтное из /usr/local/etc/xdg/openbox/). Редактировать можно руками или командой obmenu.
Рестрат, логин и мы в иксах с красотой.
Последний штрих - в obconf можно выбрать оформление окон и поведение openbox.
У меня тема: spiffe.
Ну вот и все, дольше писал :)
Фрю моно взять тут:
https://www.freebsd.org/where.html
Мануал на русском тут:
https://www.freebsd.org/doc/ru/books/handbook/
Ниже примеры моих конфигов.
Примеры конфигов
/etc/X11/xorg.conf
===
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
# Screen 2 "Screen2" RightOf "Screen1"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
Option "AllowEmptyInput" "off"
EndSection
Section "Files"
ModulePath "/usr/local/lib/xorg/modules"
FontPath "/usr/local/lib/X11/fonts/misc/"
FontPath "/usr/local/lib/X11/fonts/TTF/"
FontPath "/usr/local/lib/X11/fonts/OTF/"
FontPath "/usr/local/lib/X11/fonts/Type1/"
FontPath "/usr/local/lib/X11/fonts/100dpi/"
FontPath "/usr/local/lib/X11/fonts/75dpi/"
FontPath "/usr/local/lib/X11/fonts/Droid/"
FontPath "/usr/local/lib/X11/fonts/cyrillic/"
FontPath "/usr/local/lib/X11/fonts/dejavu/"
FontPath "/usr/local/lib/X11/fonts/encodings/"
FontPath "/usr/local/lib/X11/fonts/util/"
FontPath "/usr/local/lib/X11/fonts/LinLibertineG/"
FontPath "/usr/local/lib/X11/fonts/Liberation/"
FontPath "/usr/local/lib/X11/fonts/GentiumBasic/"
FontPath "/usr/local/lib/X11/fonts/Carlito/"
FontPath "/usr/local/lib/X11/fonts/Caladea/"
FontPath "/usr/local/lib/X11/fonts/bitstream-vera/"
FontPath "/usr/local/lib/X11/fonts/webfonts/"
EndSection
Section "Module"
Load "glx"
Load "freetype"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Monitor"
Identifier "Monitor2"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Device"
Identifier "Card0"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "RenderAccel" "true"
Option "AllowGLXWithComposite" "true"
EndSection
Section "Device"
Identifier "Card1"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "RenderAccel" "true"
Option "AllowGLXWithComposite" "true"
EndSection
Section "Device"
Identifier "Card2"
Driver "vesa"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "Monitor1"
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "Screen2"
Device "Card2"
Monitor "Monitor2"
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Extensions"
Option "Composite" "Enable"
Option "RENDER" "Enable"
EndSection
$HOME/.xinitrc
===
#!/usr/local/bin/bash
#session=$1
session="openbox"
export HTTP_PROXY=http://192.168.1.1:8080
export HTTPS_PROXY=http://192.168.1.1:8080
export LANG=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8
export SSH_ASKPASS=/usr/local/bin/gnome-ssh-askpass2
killall ssh-agent
eval `ssh-agent`
xrandr --output DVI-I-1 --primary --left-of VGA-0
xset b 0
setxkbmap -layout "us,ru" -option "grp:ctrl_shift_toggle,grp_led:scroll"
xsetroot -cursor_name left_ptr
feh --bg-center $HOME/Pictures/background.png
#pcmanfm --desktop &
xbindkeys &
xcompmgr -cfCF -D 3 &
trayer --expand true --edge bottom --align right --widthtype request --transparent true --tint black --SetDockType true --alpha 256 &
#xscreensaver -no-splash &
ssh-add < /dev/null &
if [ "$session" != "evilwm" ]
then gkrellm &
fi
alltray thunderbird &
pidgin &
case "$session" in
openbox)
exec openbox
;;
awesome)
exec awesome
;;
evilwm)
evilwm -snap 10 -bw 2 -fg red -app gkrellm/Gkrellm -dock -app Pidgin/Pidgin -dock -app Mail/Thunderbird -dock &
exec gkrellm
;;
*)
exec openbox
;;
esac
MYKERNEL
===
cpu HAMMER
ident MYKERNEL
options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options TCP_OFFLOAD # TCP offload
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed.
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options SMP # Symmetric MultiProcessor Kernel
device cpufreq
device acpi
options ACPI_DMAR
device pci
device ahci # AHCI-compatible SATA controllers
device scbus # SCSI bus (required for ATA/SCSI)
device da # Direct Access (disks)
device cd # CD
device pass # Passthrough device (direct ATA/SCSI access)
device vt
device vt_vga
device em # Intel PRO/1000 Gigabit Ethernet Family
device re # RealTek 8139C+/8169/8169S/8110S
device loop # Network loopback
device random # Entropy device
device ether # Ethernet support
device md # Memory "disks"
device bpf # Berkeley packet filter
device uhci # UHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
device uhid # USB generic HID support
device ukbd # Keyboard
device ums # Mouse
device umass # Disks/Mass storage - Requires scbus and da
device sound # Generic sound driver (required)
device snd_hda # Intel High Definition Audio