|
Пересборка мира
Содержание
Исходные данные# uname -a FreeBSD freebsd.turbogaz.net 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Sun May 8 10:21:06 UTC 2005 root@harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 Установка исходных текстов системыДля начала установим исходные тексты системы, которые находятся на первом установочном диске. Для этого воспользуемся утилитой sysinstall
sysinstall --> Configure --> Distributions --> src --> All
Cинхронизация (обновление) исходных текстов системыДалее нам необходимо синхронизировать локальное дерево исходных текстов с некоторой версией FreeBSD (FreeBSD-RELEASE, FreeBSD-STABLE, FreeBSD-CURRENT) Примечание !!!
Ветки FreeBSD-STABLE и FreeBSD-CURRENT по своей природе являются изменяющимися. В разработке FreeBSD участвуют люди, и время от времени случаются ошибки.
Иногда эти ошибки достаточно безобидны и приводят к выводу нового диагностического сообщения. Бывает, что изменение оказывается катастрофическим, и система не может загрузиться или разрушаются файловые системы (или что-нибудь ещё хуже).
Для этого воспользуемся программой CVSup. CVSup - это пакет программного обеспечения для распространения и обновления исходных текстов с основного репозитория CVS на удаленном сервере. Исходные тексты FreeBSD поддерживаются в репозитории CVS на центральной машине разработки в Калифорнии. С помощью CVSup пользователи FreeBSD легко могут поддерживать собственные исходные тексты в актуальном состоянии. CVSup использует так называемую опрашивающую (pull) модель обновления. Работая по этой модели, каждый клиент запрашивает обновления с сервера, если и когда они нужны. Сервер пассивно ожидает запросы на обновление от своих клиентов. Таким образом, все обновления инициируются клиентами. Сервер никогда не высылает не запрошенные обновления. Пользователь для получения обновлений должен либо запустить CVSup клиента вручную, либо добавить задание в cron для настройки периодических обновлений в автоматическом режиме. Простейший способ установки CVSup это использование прекомпилированного пакета net/cvsup из коллекции пакетов FreeBSD. Если вы предпочтете собрать CVSup из исходных текстов, можете использовать вместо этого порт net/cvsup. Но имейте ввиду: порт net/cvsup зависит от системы Modula-3, которой потребуется существенный объем времени и пространства на диске для загрузки и установки. Примечание !!!
Если вы собираетесь использовать CVSup на компьютере, где нет установленного XFree86 или Xorg, например, на сервере, используйте порт, не включающий CVSup GUI, net/cvsup-without-gui.
# cd /usr/ports/net/cvsup-without-gui/ # make install clean Работа CVSup контролируется файлом настройки, называемым supfile. В каталоге /usr/share/examples/cvsup/ находится несколько примеров supfile. supfile - это текстовый файл. Комментарии, начинающиеся с #, продолжаются до конца строки. Пустые строки и строки, содержащие только комментарии, игнорируются. После ознакомления с примерами, а также прочтения соответствующей главы в handbook, составляем следующий supfile # # /usr/local/etc/src-update.sup # # Ветвь релиза для FreeBSD-5.4, используется только для исправлений # безопасности и других критических исправлений. *default tag=RELENG_5_4 # Сообщаем cvsup откуда забирать обновления. Подойдет любое из CVSup # зеркал, хотя вы должны попробовать выбрать ближайшее к вам зеркало. *default host=cvsup2.ua.FreeBSD.org # Поле prefix указывает cvsup где размещать получаемые файлы. # В этом примере, мы поместим файлы непосредственно в главное дерево # исходных текстов, /usr/src. Каталог src уже подразумевается # в коллекциях, которые мы собираемся получить *default prefix=/usr # Клиент CVSup поддерживает определенные файлы статуса в так # называемом 'base' каталоге. Эти файлы помогают CVSup работать более # эффективно путем поддержки истории уже полученных обновлений. # Мы будем использовать стандартный каталог base. # Клиент cvsup не запустится, если base каталог не существует. *default base=/var/db # release=cvs означает, что сервер должен получать информацию из # главного репозитория FreeBSD CVS. # delete дает CVSup возможность удалять файлы. Вы должны всегда # указывать этот параметр, чтобы CVSup мог поддерживать дерево # исходных текстов полностью актуальным. CVSup удалит только те # файлы, за которые отвечает. Все другие файлы останутся нетронутыми. # use-rel-suffix это ... мистика ;). Если вы действительно хотите # узнать о нем, обратитесь к странице справочника cvsup. Просто # укажите это поле и не беспокойтесь о нем больше. # compress включает использование gzip сжатия при передаче данных. *default release=cvs delete use-rel-suffix compress # Файлы, доступные через CVSup, организованы в именованные группы, # называемые 'коллекциями'. В этом примере мы получим все дерево # исходных текстов системы FreeBSD. Существует одиночная большая # коллекция src-all, которая позволит нам сделать это. src-all ВНИМАНИЕ !!!
Хотя имеется возможностью обновлять только часть дерева исходных текстов (src-bin, src-include, src-kerberos5 и т.д.), настоятельно советую обновлять все дерево и производить перекомпиляцию пользовательских программ (то есть тех, которые работают в пространстве имен пользователя, например те, что находятся в каталогах /bin и /sbin) и ядра. Обновление только части дерева исходных текстов, только текстов ядра или только текстов пользовательских программ часто приводит к возникновению проблем. Эти проблемы могут варьироваться от ошибок компиляции до аварийных остановов системы или порчи данных.
Выбор оптимального зеркала
Если вы не знаете, какое из зеркал наиболее оптимально для вас, то можно воспользоваться специальной утилитой - fastest_cvsup. Как видно из описания, она позволяет найти наиболее быстрый CVSup сервер.
Спасибо Docal за совет :)
# cd /usr/ports/sysutils/
# make search name=cvsup
Port: fastest_cvsup-0.2.9_2
Path: /usr/ports/sysutils/fastest_cvsup
Info: Finds fastest CVSup server
Maint: ports@FreeBSD.org
B-deps: perl-5.8.7_2
R-deps: perl-5.8.7_2
WWW: http://fastest-cvsup.sourceforge.net/
# cd fastest_cvsup
# make install clean
# fastest_cvsup -с ua
>> Querying servers in countries: ua
--> Connecting to cvsup.ua.freebsd.org [194.125.227.6]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 34.34 ms
...
--> Connecting to cvsup7.ua.freebsd.org [194.125.227.6]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 27.09 ms
>> Speed Daemons:
- 1st: cvsup2.ua.freebsd.org
- 2nd: cvsup5.ua.freebsd.org
- 3rd: cvsup6.ua.freebsd.org
После определения наиболее оптимального сервера для синхронизации можно приступить непосредственно к самой синхронизации. # cvsup -g -L 2 -h cvsup2.ua.freebsd.org /usr/local/etc/src-update.sup Parsing supfile "/usr/local/etc/src-update.sup" Connecting to cvsup2.ua.freebsd.org Connected to cvsup2.ua.freebsd.org Server software version: SNAP_16_1h Negotiating file attribute support Exchanging collection information Establishing multiplexed-mode data connection Running Updating collection src-all/cvs Edit src/UPDATING Add delta 1.342.2.24.2.20 2006.02.01.19.43.09 cperciva Edit src/sys/conf/newvers.sh Add delta 1.62.2.18.2.16 2006.02.01.19.43.09 cperciva Edit src/sys/netinet/tcp_sack.c Add delta 1.3.2.5.2.1 2006.02.01.19.43.10 cperciva Shutting down connection to server Finished successfully Параметр -g указывает CVSup не использовать GUI, как правило на серверах он и не нужен. После того, как вы синхронизировали ваше локальное дерево исходных текстов с некоторой версией FreeBSD, то можно использовать эти исходные тексты для перестроения системы. Сборка "МИРА"Внимание !!!
Перед началом каких-либо действий внимательно читаем следующие файлы
/usr/src/Makefile /usr/src/UPDATING /usr/src/sys/i386/conf/NOTES После этого создаем и редактируем make.conf # cp /usr/share/examples/etc/make.conf /etc # # /etc/make.conf # # Тип процессора # Intel x86 architecture: # (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4 # athlon-tbird athlon k8 k6-3 k6-2 k6 k5 nocona # # (Intel CPUs) pentium4[m] prescott pentium3[m] pentium2 # penitumpro pentium-mmx pentium i486 i386 # # Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4 # # AMD64 architecture: opteron, athlon64, nocona # # Intel ia64 architecture: itanium2, itanium # CPUTYPE=athlon-xp # Флаги, использующиеся при компиляции кода, написанного на с. # Использовать флаги оптимизации кроме -O и -O2, например -O3, # не рекомендуется. CFLAGS=-O2 -pipe # Флаги, использующиеся при компиляции кода, написанного на с++ CXXFLAGS+=-fconserve-space # Определяет тип оболочки, используемый make, для обработки скриптов # в make файлах. Поддерживаемые оболочки - sh, ksh, csh. Рекомендуют # использовать sh. MAKE_SHELL=sh # Флаги, использующиеся только для компиляции ядра # со специальной оптимизацией COPTFLAGS=-O2 -pipe # Для того, чтобы не пересобирать различные части системы, необходимо # раскомментировать соответствующие строки. Что именно пересобирать, # а что нет, зависит от самой системы и дать общие рекомендации # практически невозможно :(. Хотя игры вряд ли пригодятся на сервере, # так что их смело можно не пересобирать. # Не собирать поддержку Bluetooth NO_BLUETOOTH=true # Не собирать поддержку фортрана (язык программирования) NO_FORTRAN=true # Не собирать поддержку isdn NO_I4B=true # Не собирать поддержку NIS (Network Information System) NO_NIS=true # Не собирать поддержку ATM (Asynchronous Transfer Mode) NOATM=true # Не собирать поддержку игр NOGAMES=true # Не собирать поддержку протокола IPv6 NOINET6=true # Не компилировать профилирующие библиотеки, как правило # они очень редко необходимы. NOPROFILE=true # Поддержка IDEA (128 bit symmetric encryption) разрешается для # любого некоммерческого использования MAKE_IDEA=YES # Определяет, как долго система будет ждать нажатие клавиши # перед тем, как начать загрузку ядра по умолчанию. # Время задается в миллисекундах. BOOTWAIT=3000 # The default serial console speed is 9600. # Set the speed to a larger value # for better interactive response. # BOOT_COMCONSOLE_SPEED=115200 # Документация # # Список языков и кодировок, которые необходимо собрать и установить DOC_LANG=en_US.ISO8859-1 ru_RU.KOI8-R Примечание !!!
Это лишь небольшая часть возможных параметров, весь список можно посмотреть в /usr/share/examples/etc/make.conf, а также man make.conf.
После того, как мы закончили редактировать make.conf можно непосредственно начать пересборку мира. Для этого выполняем следующие команды. # cd /usr/src/ # make buildworld -------------------------------------------------------------- >>> Rebuilding the temporary build tree -------------------------------------------------------------- rm -rf /usr/obj/usr/src/i386 mkdir -p /usr/obj/usr/src/i386/legacy/usr/bin mkdir -p /usr/obj/usr/src/i386/legacy/usr/games ... gzip -cn /usr/src/usr.sbin/zic/zdump/../zdump.8 > zdump.8.gz ===> usr.sbin/zzz gzip -cn /usr/src/usr.sbin/zzz/zzz.8 > zzz.8.gz ===> etc Компиляция ядраЯдро - это основная часть операционной системы FreeBSD. Оно ответственно за управление памятью, параметры безопасности, работу с сетью, доступ к дискам и многое другое. Несмотря на то, что FreeBSD становится всё более динамически конфигурируемой, иногда приходится собирать собственное ядро. Сборка собственного ядра - один из наиболее важных ритуалов, через который должен пройти практически любой пользователь BSD. Несмотря на длительность этого процесса, ваша FreeBSD останется только в выигрыше. В отличие от ядра GENERIC, которое должно поддерживать широкий спектр аппаратного обеспечения, собственное ядро содержит поддержку аппаратного обеспечения только вашего компьютера. Это может давать следующие преимущества:
Примечание !!!
В примерах этой статьи подразумевается, что вы используете архитектуру i386. Если это не так, измените каталоги, указанные в примерах, в соответствии с архитектурой вашей системы.
Создаем свой конфигурационный файл ядра. # cd /usr/src/sys/i386/conf/ # cp GENERIC kernel-`date '+%Y%m%d'` Примечание !!!
Не редактируйте непосредственно GENERIC, он может быть также перезаписан при следующем обновлении дерева исходных текстов, и изменения ядра будут потеряны.
Теперь необходимо отредактировать конфигурационный файл в любом текстовом редакторе. Формат конфигурационного файла достаточно прост. Каждая строка представляет собой ключевое слово и один или более аргументов. Для простоты большинство строк содержат только один аргумент. Всё, что следует, за символом # является комментарием и игнорируется. Следующие разделы описывают каждый параметр, в порядке, в котором они появляются в GENERIC. За полным списком архитектурно-зависимых параметров и устройств обратитесь к файлу NOTES в том же каталоге, что и GENERIC. Архитектурно независимые параметры находятся в /usr/src/sys/conf/NOTES. Получить список всех возможных опций можно, выполнив следующую команду # cd /usr/src/sys/i386/conf # make LINT cat ../../conf/NOTES NOTES | sed -E -n -f ../../conf/makeLINT.sed > LINT После выполнения этой команды в /usr/src/sys/i386/conf буден создан файл LINT.
#
# /usr/src/sys/i386/conf/kernel-04.03.2006
#
# Это архитектура машины. Она должна быть одной из следующих:
# alpha, amd64, i386, ia64, pc98, powerpc, или sparc64
machine i386
# Эта опция указывает тип процессора, который используется в вашей
# системе. В конфигурационном файле может быть несколько вхождений
# этой опции, но для собственного ядра лучше указывать только тот
# тип процессора, который установлен в вашей системе.
cpu I686_CPU
# Этот параметр определяет 'метку' ядра. Необходимо, чтобы она
# соответствовала названию файла конфигурации ядра. Значение,
# которое вы присвоите параметру ident будет выводиться в
# процессе загрузки
ident "kernel-04.03.2006"
# В FreeBSD 5.X и более поздних device.hints используются для
# настройки параметров драйверов устройств. Используя опцию hints
# вы можете вкомпилировать эти параметры статически в ваше ядро.
# В этом случае не требуется создавать файл device.hints
# в каталоге /boot.
hints "GENERIC.hints"
# Традиционный планировщик FreeBSD. В зависимости от загруженности
# системы, вы можете повысить производительность, используя новый
# планировщик FreeBSD ULE, который был специально разработан для SMP,
# но отлично работает также и на однопроцессорных системах. Если вы
# хотите попробовать этот планировщик, замените SCHED_4BSD на
# SCHED_ULE в файле конфигурации ядра.
options SCHED_4BSD
# Поддержка сетевых возможностей. Оставьте эту опцию включенной,
# даже если вы не планируете подключаться к сети. Большинство
# программ требуют, чтобы работал хотя бы интерфейс обратной связи
# (loopback) так что эта опция в принципе является обязательной.
options INET
# Включает поддержку коммуникационных протоколов IPv6.
# options INET6
# Включает поддержку основной файловой системы. Не удаляйте
# эту опцию, если вы планируете загружаться с жесткого диска.
options FFS
# Этот параметр включает в ядре технологию Soft Updates, которая
# повышает скорость записи на диски.
options SOFTUPDATES
# Этот параметр, присутствующий только в FreeBSD 5.X, включает в
# ядре поддержку списков управления доступом (ACL). ACL включены
# по умолчанию и не должны выключаться в случае, если они ранее
# использовались на файловой системе, так как это удалит списки
# управления доступом и изменит то, как защищены файлы,
# непредсказуемым образом.
options UFS_ACL
# Эта опция включает функциональность, которая повышает скорость
# дисковых операций на больших каталогах в обмен на использование
# дополнительной памяти.
options UFS_DIRHASH
# Этот параметр включает поддержку использования дисков в памяти
# для корневой файловой системы.
options MD_ROOT
# Поддержка NFS (Network File System). Если вы не планируете
# монтировать разделы с файлового сервера UNIX® через TCP/IP,
# вы можете исключить этот параметр из конфигурационного файла ядра.
# options NFSCLIENT
# options NFSSERVER
# options NFS_ROOT
# Если вы не собираетесь монтировать форматированный в DOS
# раздел жесткого диска в момент загрузки, вы можете безопасно
# закомментировать этот параметр.
# options MSDOSFS
# Если у вас нет привода CDROM или вы будете лишь изредка
# монтировать компакт-диски с данными, закомментируйте эту строку,
# так как необходимый модуль будет загружен автоматически при первом
# монтировании компакт-диска с данными. Для использования звуковых
# компакт-дисков эта файловая система не потребуется (хотя зачем они
# на сервере могут понадобится?).
options CD9660
# Файловая система процессов. Это виртуальная файловая система
# монтируемая в /proc, которая позволяет таким приложениям,
# как ps выдавать вам больше информации о запущенных процессах.
# В FreeBSD 5.X и выше, использование PROCFS не требуется.
options PROCFS
# PSEUDOFS недоступна в FreeBSD 4.X.
options PSEUDOFS
# Этот параметр делает возможным наличие большого количества
# разделов на одном диске.
# options GEOM_GPT
# Совместимость с 4.3BSD. Не выключайте эту опцию, некоторые
# приложения будут вести себя странно, если этой опции не
# будет в ядре.
options COMPAT_43
# Эта опция требуется в FreeBSD 5.X для платформ i386™ и Alpha для
# поддержки приложений, собранных на более старых версиях FreeBSD,
# которые используют старые интерфейсы вызовов.
options COMPAT_FREEBSD4
# Этот параметр заставляет ядро приостановиться на 15 секунд
# перед тем, как идентифицировать каждое устройство SCSI в вашей
# системе. Если у вас установлены только жесткие диски IDE,
# вы можете игнорировать эту опцию.
# options SCSI_DELAY=15000
# Включает поддержку трассировки процессов, очень удобно при отладке
options KTRACE
# Этот параметр предоставляет поддержку разделяемой памяти
# System V. В основном используется приложениями, интенсивно
# работающих с графикой. Если вы используете X, эта опция
# будет необходима.
# options SYSVSHM
# Поддержка сообщений System V. Этот параметр добавляет в ядро
# всего лишь несколько сотен байт.
options SYSVMSG
# Поддержка семафоров System V. Этот параметр добавляет в ядро
# всего лишь несколько сотен байт.
options SYSVSEM
# Расширения реального времени, добавленные 1993 POSIX®. Определенные
# приложения из коллекции используют их, например StarOffice™.
options _KPOSIX_PRIORITY_SCHEDULING
# Этот параметр относится к клавиатуре. Он добавляет CDEV в /dev.
options KBD_INSTALL_CDEV
# Распечатка регистров для облегчения отладки.
# options AHC_REG_PRETTY_PRINT
# options AHD_REG_PRETTY_PRINT
# Giant - имя механизма защиты ('спящего' мьютекса) для крупных
# наборов ресурсов ядра. Параметр ADAPTIVE_GIANT включает Giant
# в число адаптивных мьютексов. Если вы не уверены, то лучше оставьте
# этот параметр в покое.
options ADAPTIVE_GIANT
# Устройство apic разрешает использование набора I/O APIC для
# распределения прерываний
device apic
# Все компьютеры, поддерживаемые FreeBSD, имеют хотя бы одно
# устройство ISA. Не удаляйте эту строку, даже если в вашем
# компьютере нет слотов ISA
device isa
# Включите эту опцию если у вас материнская плата поддерживает EISA.
# device eisa
# Включите этот параметр, если у вас материнская плата с
# поддержкой PCI. Это включит автоопределение карт PCI.
device pci
# Контроллер флоппи-диска
device fdc
# Этот драйвер поддерживает все устройства ATA и ATAPI.
# Вам необходима только одна строка device ata в ядре
# для того, чтобы обнаружить все PCI устройства ATA/ATAPI
# в современных машинах.
device ata
# Эта строка необходима вместе с device ata для поддержки
# дисков ATA
device atadisk
# Эта строка необходима вместе с device ata для поддержки
# дисков ATA RAID
# device ataraid
# Поддержка приводов ATAPI CDROM.
device atapicd
# Поддержка флоппи-приводов ATAPI
# device atapifd
# Поддержка ленточных приводов ATAPI (стримеров).
# device atapist
# Заставляет драйвер нумеровать устройства статически, в противном
# случае происходит динамическая нумерация.
options ATA_STATIC_ID
# Поддержка различных SCSI контроллеров. Если у вас в системе
# исключительно IDE устройства, то можно удалить все эти строки.
# device ahb # EISA AHA1742 family
# device ahc # AHA2940 and onboard AIC7xxx devices
# device ahd # AHA39320/29320 and onboard AIC79xx devices
# device amd # AMD 53C974 (Tekram DC-390(T))
# device isp # Qlogic family
# device mpt # LSI-Logic MPT-Fusion
# device ncr # NCR/Symbios Logic
# device sym # NCR/Symbios Logic (newer chipsets)
# device trm # Tekram DC395U/UW/F DC315U adapters
# device adv # Advansys SCSI adapters
# device adw # Advansys wide SCSI adapters
# device aha # Adaptec 154x SCSI adapters
# device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
# device bt # Buslogic/Mylex MultiMaster SCSI adapters
# device ncv # NCR 53C500
# device nsp # Workbit Ninja SCSI-3
# device stg # TMC 18C30/18C50
# Различные перефирийные устройства SCSI. USB драйвер umass
# (и некоторые другие драйверы) используют подсистему SCSI,
# хотя и не являются настоящими SCSI устройствами. Следовательно,
# вам необходимо сохранить поддержку SCSI, если какой-либо из этих
# драйверов включен в конфигурацию ядра.
device scbus
# device ch # SCSI media changers
device da
# device sa # Sequential Access (tape etc)
# device cd # CD
# device pass # Passthrough device (direct SCSI access)
# device ses # SCSI Environmental Services (and SAF-TE)
# Поддерживаемые RAID-контроллеры.
# device amr # AMI MegaRAID
# device arcmsr # Areca SATA II RAID
# device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
# device ciss # Compaq Smart RAID 5*
# device dpt # DPT Smartcache III, IV
# device hptmv # Highpoint RocketRAID 182x
# device iir # Intel Integrated RAID
# device ips # IBM (Adaptec) ServeRAID
# device mly # Mylex AcceleRAID/eXtremeRAID
# device twa # 3ware 9000 series PATA/SATA RAID
# device aac # Adaptec FSA RAID
# device aacp # SCSI passthrough for aac (requires CAM)
# device ida # Compaq Smart RAID
# device mlx # Mylex DAC960 family
# device pst # Promise Supertrak SX6000
# device twe # 3ware ATA RAID
# Контроллер клавиатуры предоставляет средства ввода/вывода для
# клавиатуры AT и PS/2 устройств. Этот контроллер необходим драйверу
# клавиатуры (atkbd) и PS/2 устройств (psm)
device atkbdc
# Драйвер вместе с контроллером atkbdc предоставляет доступ к
# клавиатуре AT 84 или улучшенной клавиатуре AT, которая подключена
# к контроллеру AT клавиатуры.
device atkbd
# Используйте это устройство, если ваша мышь включается в порт PS/2.
device psm
# Драйвер VGA видеокарты.
device vga
# Заставка при загрузке. Хранители экрана также
# требуют это устройство
# device splash
# Это драйвер консоли по умолчанию, который имитирует консоль SCO
device sc
# VT220-совместимый драйвер консоли, обратно совместимый с VT100/102
# device vt
# options XSERVER
# options FAT_CURSOR
# Включите эту опцию, если у вас есть AGP карта в системе
device agp
# Поддержка FPU. Этот параметр является обязательным.
device npx
# Поддержка Advanced Power Management.
# Чаще всего используется в лэптопах.
# device apm
# Устройство таймера для управления энергопотреблением, APM и ACPI
device pmtimer
# Поддержка PCMCIA. Включите ее, если вы используете лэптоп.
# device cbb
# device pccard
# device cardbus
# Поддержка COM портов
device sio
# Интерфейс параллельного порта на шине ISA.
# device ppc
# Поддержка шины параллельного порта
# device ppbus
# Поддержка принтеров на параллельном порту.
# device lpt
# Драйвер TCP/IP через параллельный порт
# device plip
# Поддержка ввода/вывода общего назначения
# device ppi
# Драйвер привода Iomega Zip. Требует наличия scbus и da
# device vpo
# Раскомментируйте это устройство, если у вас есть 'простая'
# последовательная или параллельная PCI карта, поддерживаемая
# драйвером puc
# device puc
# Драйвера для различных сетевых карт PCI.
# device de # DEC/Intel DC21x4x (``Tulip'')
# device em # Intel PRO/1000 adapter Gigabit Ethernet Card
# device ixgb # Intel PRO/10GbE Ethernet Card
# device txp # 3Com 3cR990 (``Typhoon'')
# device vx # 3Com 3c590, 3c595 (``Vortex'')
# Поддержка шины MII требуется для некоторых PCI 10/100 Ethernet
# карт, которые используют MII-совместимые передатчики или реализуют
# интерфейс управления передатчиком, который имитирует MII
# device miibus
# Драйвера, которые используют контроллер шины MII
# device bfe # Broadcom BCM440x 10/100 Ethernet
# device bge # Broadcom BCM570xx Gigabit Ethernet
# device dc # DEC/Intel 21143 and various workalikes
# device fxp # Intel EtherExpress PRO/100B (82557, 82558)
# device lge # Level 1 LXT1001 gigabit ethernet
# device nge # NatSemi DP83820 gigabit ethernet
# device pcn # AMD Am79C97x PCI 10/100
# device re # RealTek 8139C+/8169/8169S/8110S
# device rl # RealTek 8129/8139
# device sf # Adaptec AIC-6915
# device sis # Silicon Integrated Systems SiS 900/SiS 7016
# device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
# device ste # Sundance ST201 (D-Link DFE-550TX)
# device ti # Alteon Networks Tigon I/II gigabit Ethernet
# device tl # Texas Instruments ThunderLAN
# device tx # SMC EtherPower II
# device vge # VIA VT612x gigabit ethernet
# device vr # VIA Rhine, Rhine II
# device wb # Winbond W89C840F
# device xl # 3Com 3c90x
# Драйвера сетевых карт ISA. Чтобы узнать, какие сетевые карты
# каким драйвером поддерживаются. Ознакомьтесь с файлом
# /usr/src/sys/i386/conf/NOTES
# device cs # Crystal Semiconductor CS89x0 NIC
# device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
# device ex # Intel EtherExpress Pro/10 and Pro/10+
# device ep # Etherlink III based cards
# device fe # Fujitsu MB8696x based cards
# device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device lnc # NE2100, NE32-VL Lance Ethernet cards
# device sn # SMC's 9000 series of Ethernet chips
# device xe # Xircom pccard Ethernet
# Устройства ISA, использующие старую шину ISA
# devices that use the old ISA shims
#device le
# Поддержка различных беспроводных карт.
# device wlan # 802.11 support
# device an # Aironet 4500/4800 802.11 wireless NICs.
# device awi # BayStack 660 and others
# device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
# device wl # Older non 802.11 Wavelan wireless NIC.
# Стандартное устройство обратной связи для TCP/IP, т.н. петлевой интерфейс
# Этот параметр обязателен
device loop
# Устройства системной памяти.
device mem
# Этот параметр позволяет процессу получение привилегий ввода/вывода.
# Он полезен для написания пользовательских программ, работающих с
# оборудованием непосредственно. Необходим для работы X Window system.
device io
# Генератор случайных чисел для криптографической защиты.
device random
# Необходим в случае, если у вас есть сетевая карта. Он включает
# поддержку стандартного кода протокола Ethernet
device ether
# Поддержка SLIP. SLIP был практически вытеснен PPP, который легче
# настраивается, лучше подходит для соединений модем-модем и имеет
# больше возможностей
# device sl
# Поддержка PPP в ядре для соединений dial-up
device ppp
# Используется пользовательским программным обеспечением PPP
device tun
# 'псевдо-терминал' или имитированный порт для входа
device pty
# Псевдо-устройства дисков в памяти.
device md
# Поддержка туннелирования IPv6 через IPv4, IPv4 через IPv6,
# IPv4 через IPv4 и IPv6 через IPv6
device gif
# Это псевдо-устройство захватывает пакеты, которые были посланы
# ему и перенаправляет их даемону трансляции IPv4/IPv6
device faith
# Фильтр пакетов Berkeley. Это псевдо-устройство позволяет
# переводить сетевые интерфейсы в promiscuous режим. Если вы
# используете DCHP, не удаляйте эту опцию.
device bpf
# Поддержка различных USB устройств.
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
# device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # "Human Interface Devices"
# device ukbd # Keyboard
# device ulpt # Printer
# device umass # Disks/Mass storage
# device ums # Mouse
# device urio # Diamond Rio 500 MP3 player
# device uscanner # Scanners
# USB Ethernet, необходимо чтобы была включена поддержка miibus
# device aue # ADMtek USB Ethernet
# device axe # ASIX Electronics USB Ethernet
# device cdce # Generic USB over Ethernet
# device cue # CATC USB Ethernet
# device kue # Kawasaki LSI USB Ethernet
# device rue # RealTek RTL8150 USB Ethernet
# Поддержка FireWire
# device firewire # FireWire bus code
# device sbp # SCSI over FireWire
# device fwe # Ethernet over FireWire
Узнать тип процессора можно с помощью следующей команды # dmesg | grep 86-class CPU: AMD Athlon(tm) XP 1700+ (1579.35-MHz 686-class CPU) После того, как вы закончили редактировать конфигурационный файл ядра, начинаем сборку ядра. # cd /usr/src # make buildkernel KERNCONF=kernel-04.03.2006 -------------------------------------------------------------- >>> Kernel build for kernel-04.03.2006 started on Sat Mar 04 19:02:40 EET 2006 -------------------------------------------------------------- ===> kernel-04.03.2006 mkdir -p /usr/obj/usr/src/sys -------------------------------------------------------------- >>> stage 1: configuring the kernel -------------------------------------------------------------- ... ... ... -------------------------------------------------------------- >>> Kernel build for kernel-04.03.2006 completed on Sat Mar 04 19:29:07 EET 2006 -------------------------------------------------------------- Инсталляция нового ядраПосле того, как ядро успешно собралось необходимо его установить. Для этого необходимо выполнить следующую команду # make installkernel KERNCONF=kernel-04.03.2006 -------------------------------------------------------------- >>> Making hierarchy -------------------------------------------------------------- cd /usr/src; MAKEOBJDIRPREFIX=/usr/obj MACHINE_ARCH=i386 MACHINE=i386 CPUTYPE=athlon-xp GROFF_BIN_PATH=/usr/obj/usr/src/i386/legacy/usr/bin GROFF_FONT_PATH=/usr/obj/usr/src/i386/legacy/usr/share/groff_font GROFF_TMAC_PATH=/usr/obj/usr/src/i386/legacy/usr/share/tmac PATH=/usr/obj/usr/src/i386/legacy/usr/sbin:/usr/obj/usr/src/i386/legacy/usr/bin :/usr/obj/usr/src/i386/legacy/usr/games:/usr/obj/usr/src/i386/usr/sbin: /usr/obj/usr/src/i386/usr/bin:/usr/obj/usr/src/i386/usr/games:/sbin:/bin: /usr/sbin:/usr/bin make -f Makefile.inc1 hierarchy ... ... ... ===> wlan install -o root -g wheel -m 555 wlan.ko /boot/kernel ===> xe install -o root -g wheel -m 555 if_xe.ko /boot/kernel ===> xl install -o root -g wheel -m 555 if_xl.ko /boot/kernel kldxref /boot/kernel Установка мираПосле того, как мы установили новое ядро, нам осталось выполнить всего одно действие, а именно, установить мир. Но для этого мы должны перегрузиться в так называемый однопользовательский режим (single mode). Что мы собственно сейчас и сделаем. # shutdown -r now При появлении экрана приветствия (Welcome to FreeBSD!) выбираем 4й пункт - "Boot FreeBSD in single user mode". В этом режиме файловые системы не монтируются автоматически, поэтому нам надо самим сделать это. # mount -u / # mount -a -t ufs # swapon -a При перестроении системы не будут обновляться некоторые каталоги (в частности, /etc, /var и /usr) с конфигурационными файлами. Самым простым способом обновить такие файлы является запуск утилиты mergemaster, хотя можно сделать это и вручную, если вам так больше нравится. Вне зависимости от выбранного вами способа обязательно сделайте резервную копию каталога /etc на случай, если произойдёт что-то непредвиденное. Утилита mergemaster является скриптом для оболочки Боурна, которая поможет вам в определении разницы между вашими конфигурационными файлами в каталоге /etc и конфигурационными файлами из дерева исходных текстов /usr/src/etc. Это является рекомендуемым способом синхронизации системных конфигурационных файлов с теми, что размещены в дереве исходных текстов. # mergemaster -p Данная команда будет сравнивать только те файлы, которые необходимы для успешного выполнения целей buildworld или installworld, включая /etc/make.conf Теперь производим непосредственно установку нового мира # cd /usr/src # make installworld Ну и теперь осталось только сравнить конфигурационные файлы. Для этого выполните следующую команду. # mergemaster mergemaster построит временное окружение для пользователя root, начиная от /, а затем заполнит его различными системными конфигурационными файлами. Эти файлы затем будут сравниваться с теми, что установлены в вашей системе. В этот момент файлы, которые имеют отличия, будут выданы в формате diff, где знак + будет означать добавленные или изменённые строки, а знак - будет означать строки, которые были либо полностью удалены, либо заменены на новые. Обратитесь к страницам справочной системы по команде diff для получения более полной информации о синтаксисе команды diff и формате выдачи отличий в файлах. Затем mergemaster выдаст вам каждый файл, в котором есть изменения, и в этот момент у вас есть возможность либо удалить новый файл (который будем считать временным), установить временный файл в его неизменённом виде, объединить временный файл с установленным на данный момент, либо просмотреть выдачу diff ещё раз. Выбор удаления временного файла укажет mergemaster на то, что мы хотим оставить наш текущий файл без изменений и удалить его новую версию. Делать это не рекомендуется, если только у вас нет причин вносить изменения в текущий файл. Вы можете получить помощь в любое время, набрав ? в приглашении mergemaster. Если пользователь выбирает пропуск файла, запрос появится снова после того, как будут обработаны все остальные файлы. Выбор установки немодифицированного временного файла приведёт к замене текущего файла новым. Для большинства немодифицированных файлов это является подходящим вариантом. Выбор варианта с объединением файла приведёт к вызову текстового редактора, содержащего текст обоих файлов. Теперь вы можете объединить их, просматривая оба файла на экране, и выбирая те части из обоих, что подходят для окончательного варианта. Когда файлы сравниваются на экране, то нажатие l выбирает содержимое слева, а нажатие r выбирает содержимое справа. В окончательном варианте будет файл, состоящий из обеих частей, который и будет установлен. Этот вариант используется для файлов, настройки в которых изменялись пользователем. Выбор повторного просмотра diff-разниц выдаст вам разницы между файлами, как это делала утилита mergemaster до того, как запросила вас о выборе. После того, как утилита mergemaster закончит работу с системными файлами, она выдаст запрос относительно других параметров. mergemaster может запросить вас относительно перестроения файла паролей и/или запуска MAKEDEV при использовании FreeBSD версий, меньших, чем 5.0, и завершит запросом на удаление оставшихся временных файлов. Ну вот и все, теперь перегружаем систему и делаем проверку. # uname -a FreeBSD freebsd.turbogaz.net 5.4-RELEASE-p11 FreeBSD 5.4-RELEASE-p11 #0: Sat Mar 4 17:38:23 EET 2006 root@:/usr/obj/usr/src/sys/kernel-04.03.2006 i386 Как видно из вывода система у нас успешно обновилась. [1] handbook
|