Перезборка ядра для тунелей

Итак приступим…

# cd /usr/src/
# make -j4 buildworld

 Построение мира занимает много времени, поэтому запаситесь пивом и терпением. Обратите также внимание на то, что запуск был сделан с ключем -j4 (сборка в несколько потоков), что должно ускорить процесс сборки.

Итак… Свершилось чудо:

—————————————————————
>>> World build completed on Sat Aug 8 03:48:39 EEST 2009
—————————————————————

Теперь можно приступать к сборке и установки ядра. Пропускать эти шаги НЕЛЬЗЯ, даже мотивируя тем, что «я когда-то уже собирал ядро…»
Чтобы запустить сборку со стандартным ядром GENERIC, достаточно набрать «make kernel» в директории «/usr/src». Ну а поскольку мы легких путей не ищем, то будем собирать свой вариант ядра.
Для начала скопируем стандартный конфиг ядра в свой:

# cp /usr/src/sys/amd64/conf/GENERIC /usr/src/sys/amd64/conf/Web0

Обратите внимание на «amd64» – это платформа в моем частном случае. В вашем случае может отличаться. Чтобы определить какая у вас платформа, воспользуйтесь командой «uname –a»
Приступим к редактированию созданного нами файла:

# ee /usr/src/sys/amd64/conf/Web0

 Не буду расписывать каждую опцию, а приведу только свой конфиг (документации по сборке ядра более чем достаточно, возможно даже будет частично доступна на этом ресурсе)

# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.484.2.21 2009/07/15 08:32:19 ed Exp $

cpu             HAMMER
ident           Web0

options         SCHED_ULE               # ULE scheduler
options         PREEMPTION              # Enable kernel thread preemption
options         INET                    # InterNETworking
options         FFS                     # Berkeley Fast Filesystem
options         SOFTUPDATES             # Enable FFS soft updates support
options         UFS_ACL                 # Support for access control lists
options         UFS_DIRHASH             # Improve performance on big directories
options         UFS_GJOURNAL            # Enable gjournal-based UFS journaling
options         GEOM_PART_GPT           # GUID Partition Tables.
options         GEOM_LABEL              # Provides labelization
options         COMPAT_43TTY            # BSD 4.3 TTY compat [KEEP THIS!]
options         COMPAT_IA32             # Compatible with i386 binaries
options         COMPAT_FREEBSD4         # Compatible with FreeBSD4
options         COMPAT_FREEBSD5         # Compatible with FreeBSD5
options         COMPAT_FREEBSD6         # Compatible with FreeBSD6
options         KTRACE                  # ktrace(1) support
options         STACK                   # stack(9) support
options         SYSVSHM                 # SYSV-style shared memory
options         SYSVMSG                 # SYSV-style message queues
options         SYSVSEM                 # SYSV-style semaphores
options         P1003_1B_SEMAPHORES     # POSIX-style semaphores
options         _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options         KBD_INSTALL_CDEV        # install a CDEV entry in /dev
options         ADAPTIVE_GIANT          # Giant mutex is adaptive.
options         STOP_NMI                # Stop CPUS using NMI instead of IPI
options         AUDIT                   # Security event auditing
#options        KDTRACE_FRAME           # Ensure frames are compiled in
#options        KDTRACE_HOOKS           # Kernel DTrace hooks

# Make an SMP-capable kernel by default
options         SMP                     # Symmetric MultiProcessor Kernel

# CPU frequency control
device          cpufreq

# Bus support.
device          acpi
device          pci

# ATA and ATAPI devices
device          ata
device          atadisk         # ATA disk drives
options         ATA_STATIC_ID   # Static device numbering

# atkbdc0 controls both the keyboard and the PS/2 mouse
device          atkbdc          # AT keyboard controller
device          atkbd           # AT keyboard
device          kbdmux          # keyboard multiplexer

device          vga             # VGA video card driver

device          splash          # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device          sc

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the ‘device miibus’ line in order to use these NICs!
device          miibus          # MII bus support
device          nfe             # nVidia nForce MCP on-board Ethernet
device          sk              # SysKonnect SK-984x & SK-982x gigabit Ethernet

# Pseudo devices.
device          loop            # Network loopback
device          random          # Entropy device
device          ether           # Ethernet support
device          pty             # Pseudo-ttys (telnet etc)
device          firmware        # firmware assist module
device          vlan            # 802.1Q VLAN

# The `bpf’ device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that ‘bpf’ is required for DHCP.
device          bpf             # Berkeley packet filter

# My options
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_FORWARD
options         DUMMYNET
options         QUOTA
options         ACCEPT_FILTER_HTTP

 Исходя из «/usr/src/Makefile», шаги 3 и 4 можно совместить в одну команду, что мы и делаем:

# make kernel KERNCONF=Web0

Если процесс сборки и установки ядра прошел без ошибок, пускаем сервер в ребут:

# shutdown -r now

Если никаких ошибок не допустили, то через некоторое время, необходимое серверу для перезагрузки, можно опять приконектиться к серверу и продолжить начатое.
Если же ядро почему-то не загрузилось, то вам сюда:
http://www.freebsd.org/doc/ru/books/handbook/kernelconfig-trouble.html

Теперь начинаются различия обновления локального и удаленного серверов. Рассмотрим два этих варианта:

Локальный сервер
Для безопасного и корректного обновления необходимо ввести машину в single mode:

Перезагрузкой и выбором в стартовом меню загрузку в single user mode (номер 4).

# shutdown -r now

Удаленный сервер
Вам необходимо отключить в /etc/rc.conf все службы, в которых нет необходимости для запуска системы (sshd не выключать!). Это СУРБД, FTP, Apache и т.д. и перезагрузится. Можно и самим остановить эти службы без перезагрузки системы.

Продолжаем обновление
При запуске системы, если это локальный сервер, необходимо смонтировать корневой каталог и остальные разделы. А так же запустим mergemaster для создания начальной точки работы:

# /sbin/mount -u /
# /sbin/mount -a
# su
# mergemaster –p

Установим мир.

# cd /usr/src
# make installworld

Запустим mergemaster для синхронизации файлов, библиотек, конфигурационных файлов с новыми версиями.

# mergemaster -cv 

(c-контекстный diffs вместо унифицированного)
mergemaster сравнивает существующие конфигурационные файлы с теми, которые предлагаются новой версией FreeBSD. И если существуют отличия, то появляется сообщение об этом. Первой строкой в нем идет имя файла, который не соответствует новым требованиям, а ниже сами отличия.
Знаки:
— — этим знаком помечаются строки, которые mergemaster собирается удалить.
+ — этим знаком помечаются строки, которые будут добавлены.
Есть несколько вариантов управления и в низу mergemaster предлагают следующие варианты работы с текущим файлом:
d — удалить предлагаемый вариант оставить старый.
i — установить предлагаемый вариант, удалив старый.
m — сравнить и объединить при необходимости построчно старый и новый вариант.
v — посмотреть отличия в файлах снова.
При построчном сравнивании экран делится на две части, слева строки из старого файла, а справа из предлагаемого. При нажатии на «Enter» выводятся возможные варианты последующих действий:
l — использовать вариант с левой стороны.
r — использовать вариант с правой стороны.
и т.д. После того как сравнение файла закончилось, предлагаются следующие варианты:
i — установить получившийся файл.
r — повторить сравнение снова.
v — просмотреть получившийся файл.
Бывает, что с новой версией системы появляются новые файлы, которых до этого не было. В таком случае предлагается 2 варианта:
d — удалить предлагаемый вариант и оставить старый.
i — установить предлагаемый вариант, удалив старый.
И так сравниваются все файлы.
В конце mergemaster предложить удалить все, что осталось в /var/tmp/temproot – соглашаемся («yes»), а также, напоследок, обновить базу aliases – соглашаемся («yes»).
Закончив с mergemaster, перезапускаем систему и удаляем старые библиотеки.

# shutdown -r now
# cd /usr/src/
# make delete-old-libs

Проверяем версию системы:

# uname -aFreeBSD web0.domain.ua 7.2-STABLE FreeBSD 7.2-STABLE #0: Sat Aug 8 04:58:58 EEST 2009     [email protected]:/usr/obj/usr/src/sys/Web0 amd64

Теперь осталось еще закачать новые версии портов…

# csup -g -L 2 /etc/csup/ports-all
Shutting down connection to server
Finished successfully

Порты установлены. Можно приступать к установке софта.
Источник : muff.kiev.ua/node/16

Запись опубликована в рубрике *Lan&Wan, *Unix,*Linux, FreeBSD. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91