Навигация
Главная
Поиск
Новости
Статьи
Ссылки
Об авторе
Контакты
FFQs
 
Главная arrow FFQs arrow Вопросы FreeBSD arrow Пересборка мира - обновление версии ОС
Пересборка мира - обновление версии ОС Версия для печати Отправить на e-mail

Исходные данные

# uname -a FreeBSD freebsd.turbogaz.net 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Sun May  8 10:21:06 UTC 2005 
 Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
 :/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:  
 Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
  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, как правило на серверах он и не нужен.
Параметр -L 2 указывает CVSup выводить информацию о каждом производимом обновлении. Есть три уровня протоколирования, от -L 0 до -L 2. Уровень по умолчанию 0, что означает полное отсутствие сообщений, за исключением сообщений об ошибках.
Параметр -h указываем зеркало для синхронизации, которое мы получили с помощью fastest_cvsup.

После того, как вы синхронизировали ваше локальное дерево исходных текстов с некоторой версией 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, которое должно поддерживать широкий спектр аппаратного обеспечения, собственное ядро содержит поддержку аппаратного обеспечения только вашего компьютера. Это может давать следующие преимущества:

  • Меньшее время загрузки. Поскольку ядро будет пытаться определить только то аппаратное обеспечение, которое установлено в вашем компьютере, время, которое потребуется системе для загрузки, может значительно уменьшиться.
  • Уменьшение использования памяти. Собственное ядро часто использует меньше памяти, чем ядро GENERIC, что очень важно, поскольку ядро всегда находится в физической памяти. Именно по этой причине собственное ядро особенно полезно при использовании систем с малым объемом оперативной памяти.
  • Поддержка дополнительного аппаратного обеспечения. Собственное ядро позволяет вам добавить поддержку устройств, отсутствующих в ядре 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 

Как видно из вывода система у нас успешно обновилась.


По материалам с сайта: http://www.sys-adm.org.ua/security/world.php
Последнее обновление ( 14.11.2008 )
 
crider.rork.ru © 2018