5. Заметки по обновлению с FreeBSD 4.X

Для пользователей системы FreeBSD этот раздел предоставляет несколько заметок по обновлению FreeBSD 4.X до 5.X. Как и при любом обновлении FreeBSD, необходимо прочесть информацию о релизе и список исправлений к новому релизу, а также src/UPDATING при обновлении из исходных текстов.

5.1. Бинарные обновления

Возможно наиболее прямой способ это ``сохранить все, переформатировать, переустановить, и восстановить данные пользователя''. Это исключает проблемы с несовместимыми или отсутствующими в новой версии исполняемыми файлами и файлами настройки, захламляющими новую систему. Это позволяет создать новые файловые системы с новой функциональностью (наиболее значимая -- UFS2 по умолчанию).

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

Некоторые изменения могут быть интересны пользователям, которые знакомы с загрузочными дискетами FreeBSD 4.X. Загрузочные дискеты (на платформах, которые их поддерживают, например на i386), организованы несколько по-другому, чем в предыдущих релизах. В релизах 4.X набор дискет включал урезанное ядро, достаточное лишь для того, чтобы установить систему. Это позволяло ядру уместиться на одну дискету, но не позволяло поместить в него драйверы, необходимые для определенных аппаратных конфигураций. Начиная с 5.3-RELEASE, на установочных дискетах находится стандартное ядро GENERIC, распределенное на несколько дискет, с гораздо большим набором драйверов и возможностей. Загрузчик просит вставить дополнительные диски по мере необходимости. Пользователям, загружающим образы дискет (возможно для установки по сети), необходимо обратить внимание на то, что набор теперь включает три дискеты: boot.flp, kern1.flp, и kern2.flp.

Установочные CDROM для архитектуры i386™ теперь используют ``не-эмулирующий'' загрузчик. Это позволяет, помимо прочего, использовать GENERIC ядро вместо урезанного ядра на дискетах предыдущих версий. Как правило, любая система, способная загрузиться с установочных компакт дисков Microsoft® Windows NT® 4, Windows® 2000, или Windows XP должна быть способна загрузиться с компакт дисков 5.X.

Расположение файлов дистрибутива на CDROM было изменено по сравнению с серией релизов 4.X. Начиная с 5.4-RELEASE, установочный образ и ``live filesystem'' теперь находятся на первом диске для всех архитектур, за исключением ia64 (в релизах ia64 используются отдельные диски для установки и для live filesystem, поскольку они не помещаются на один диск). Широко используемые пакеты размещаются на втором и последующих дисках релиза.

5.2. Обновление из исходных текстов

Замечание: Многие и пользователи обнаружили, что проще всего сделать резервное копирование данных и файлов настройки (благоразумное предостережение для любого случая), выполнить обычную установку и восстановить данные. В отличие от обновления из исходных текстов, в этом случае не требуется заботиться об оставшихся на диске файлах и программах, и позволяет воспользоваться преимуществами новой файловой системы UFS2.

Пользователи, не знакомые с процедурами buildworld/installworld обновления FreeBSD из исходных текстов, не должны пытаться выполнить такое обновление, вместо этого рекомендуется выполнить обычную установку после резервного копирования всех данных.

При обновлении из исходных текстов на локальной машине собираются и устанавливаются бинарные файлы. Это обновление основано на процедуре buildworld/installworld, часто используемой опытными пользователями FreeBSD для отслеживания изменений в ветви разработки (такой как FreeBSD-STABLE или FreeBSD-CURRENT). Как правило, это более сложная процедура, чем бинарное обновление, но она может быть полезна если файлы настройки системы сложны или серьезно модифицированы под имеющуюся установку. Обновление из исходных текстов также может быть полезно, когда у администратора есть удаленный доступ к консоли, но нет физического доступа (и следовательно нет возможности вставить установочный диск).

Прочтение src/UPDATING абсолютно необходимо. Раздел, озаглавленный ``To upgrade in-place from 4.x-stable to current'' содержит пошаговую процедуру обновления, которая должна быть в точности выполнена, без ``сокращений'', которые зачастую применяют некоторые пользователи. Сокращенный список этих шагов приведен ниже:

  1. Сделайте резервные копии.

    Важность этого шага невозможно переоценить. Необходимо сделать резервные копии всех данных пользователя и файлов настройки. Прекрасно подходит для этого dump(8) нулевого уровня, хотя конечно существует множество работоспособных альтернатив.

  2. Убедитесь, что в файловой системе / присутствует около 30MB свободного места.

    FreeBSD 5.X требуется больше места, чем FreeBSD 4.X. Если каталог /tmp расположен в файловой системе / (а зачастую это так), удаление всего содержимого этого каталога может помочь высвободить место.

  3. Подправьте /etc/fstab если необходимо.

    Этот пункт возможно относится только к старым системам FreeBSD/i386. В системах, где используются дисковые слайсы в MBR стиле, FreeBSD поддерживает ``слайсы совместимости'', где имена дисковых разделов могут принимать форму /dev/ad0a (без явного указания имени слайса). Это более не поддерживается, дисковые разделы должны быть именованы в форме /dev/ad0s1a. Другими словами, дисковые разделы теперь должны указываться полностью: дисковое устройство, номер слайса и буква раздела.

    Обратите внимание, что ``слайсы совместимости'' обычно не используются по умолчанию начиная с FreeBSD 2.2.6-RELEASE. Этот пункт не относится к FreeBSD/alpha вообще, как и к системам, использующим режим ``dangerously dediated''.

  4. Используя cvs(1) или другие способы, получите копию исходных текстов базовой системы FreeBSD (модуль src/). Для извлечения 5.4-RELEASE из CVS репозитория FreeBSD, используйте тег RELENG_5_4_0_RELEASE. Для ветви 5.4 с исправлениями, используйте тег RELENG_5_4. Для отслеживания ветви разработки FreeBSD 5-STABLE, используйте тег ветви RELENG_5. При использовании CVS для извлечения исходных текстов, важно установить для CVS флаг -P, чтобы пустые каталоги удалялись.

  5. FreeBSD 5.X требуются некоторые новые записи в системных файлах паролей и групп, соответствующие различным системным сервисам. Они должны быть добавлены командой:

    # mergemaster -p
    

    Этот шаг необходимо выполнить, чтобы установить пользователя и группу на некоторые новые файлы.

    Обратите внимание, что в FreeBSD 5.X файл утилиты nologin(8) переместился из /sbin/nologin в /usr/sbin/nologin. Поскольку у многих псевдо-пользователей nologin(8) указана в качестве оболочки, это изменение создаст дополнительные различия в /etc/passwd.

  6. Соберите новую систему с помощью:

    # cd /usr/src
    # make buildworld
    

    Если переменная CPUTYPE определена в /etc/make.conf, она должна быть задана оператором ?=, чтобы процесс buildworld мог переписать ее при необходимости.

    Обратите внимание, что MAKEOBJDIRPREFIX нельзя определять в /etc/make.conf.

    Как правило, большая часть ``установок'', определенных в /etc/make.conf, должна быть закомментирована или удалена. Это особенно важно для тех переменных, которые непосредственно влияют на сборку или основные операции FreeBSD, такие как NO_TOOLCHAIN.

  7. Соберите и установите новое ядро командой:

    # make buildkernel
    

    Обратите внимание, что необходимо использовать make(1) buildkernel, чтобы убедиться, что ядро будет собрано компилятором, собранным в предыдущем действии. Использование config(8) вручную и последующая сборка ядра не будут работать.

    Хотя сборка (и последующая установка) собственного ядра в данный момент возможна, обновление с использованием ядра GENERIC и установка собственного ядра позже предпочтительнее, поскольку вероятность ошибок ниже. При сборке собственного ядра в первый раз настоятельно рекомендуется в качестве основы использовать ядро GENERIC из FreeBSD 5.X, поскольку многие устройства и параметры были добавлены или изменены по сравнению с 4.X. В любом случае, включение параметра конфигурации COMPAT_FREEBSD4 необходимо для успешного обновления.

  8. Настройте хинты устройств для устройств ISA с помощью одного из варианта нижеприведенной команды. Подставьте соответствующее имя архитектуры (например i386) вместо MACHINE.

    # cp sys/MACHINE/conf/GENERIC.hints /boot/device.hints
    

    Хотя пустой файл хинтов может быть достаточен для современного оборудования, хинты ISA необходимы для систем с ISA не-PNP картами (где хинты должны быть настроены), для не-PNPBIOS систем, или для флоппи дисков, чтобы корректно работать на PNPBIOS системах.

  9. Установите новое ядро командой:

    # make installkernel
    

    Обратите внимание, что в FreeBSD 4.X ядро по умолчанию устанавливается в /kernel, а в FreeBSD 5.X ядро устанавливается в /boot/kernel/kernel. Модули ядра в 4.X обычно устанавливаются в каталог /modules, а в 5.X они устанавливаются в /boot/kernel.

  10. Установите загрузчик FreeBSD 5.X командой:

    # cd /usr/src/sys/boot
    # make STRIP="" install
    

    Хотя этот шаг опционален, он настоятельно рекомендуется.

  11. Отключите модули сторонних разработчиков (такие как VMware) для предотвращения падений, вызванных изменениями в ABI ядра или другими несовместимостями.

  12. Перезагрузитесь в однопользовательский режим. Перезагрузка абсолютно необходима, поскольку для установки новой системы должно быть запущено новое ядро. Однопользовательский режим практически устранит различные случайности, которые могут возникнуть во время обновления, так как другие программы не будут запущены.

  13. Смонтируйте необходимые файловые системы:

    # fsck -p
    # mount -uw /
    # mount -at ufs
    

    Обратите внимание, что вызов fsck(8) необходим для обновления определенный полей в суперблоке файловой системы для FreeBSD 5.X. Если системные часы работают в локальном времени, а не в UTC, выполните также:

    # adjkerntz -i
    

    Во время этого шага на консоли может появиться следующее сообщение (множество раз).

    WARNING: userland calling deprecated sysctl, please rebuild world
    

    Оно может быть спокойно проигнорировано.

  14. Удалите заголовки файлов C++:

    # rm -rf /usr/include/g++
    

    Этот шаг предотвратит использование старых файлов заголовков, оставшихся от компилятора GCC 2.95 C++, при дальнейших компиляциях.

  15. Установите новую систему:

    # cd /usr/src
    # make installworld
    
  16. На системах, где установлен named(8), его файлы настройки должны быть перемещены в chroot(8), в каталог /var/named. Если какие-либо файлы уже находятся в /var/named, необходимо предварительно сделать их резервную копию.

    # cd /etc
    # mv named named.bak
    # mkdir -p /var/named/etc/namedb
    # cp -Rp named.bak/* /var/named/etc/namedb
    

    Если в конфигурации использованы автоматически созданные файлы localhost, для их автоматической пересборки потребуется следующее:

    # cd /var/named/etc/namedb
    # /bin/sh make-localhost
    # rm -f localhost-v6.rev localhost.rev
    

    Наконец, нужно удалить два устаревших бинарных файла от предыдущих версий BIND:

    # rm /usr/sbin/nslookup
    # rm /usr/sbin/nsupdate
    
  17. Обновите конфигурацию системы, запустив:

    # mergemaster -i
    

    Этот шаг не опционален. Он необходим для приведения стартовых файлов и файлов настройки из /etc в соответствие новому ядру и системе.

    После вызова mergemaster(8), неплохо будет проверить (и возможно изменить) /etc/rc.conf. Значения по умолчанию многих переменных, определяемых в этом файле, изменились; в частности, некоторые сервисы, которые были включены по умолчанию в 4.X, теперь отключены по умолчанию в 5.X.

  18. Удалите оставшиеся файлы BIND 8:

    # rm /usr/bin/dnskeygen /usr/bin/dnsquery
    # rm /usr/libexec/named-xfer
    # rm /usr/sbin/named.restart /usr/sbin/ndc
    
  19. Перезагрузитесь.

После обновления базовой системы, обычно требуется обновление некоторых компонент, не входящих в базовую систему, для восстановления нормальной функциональности. Perl более не является частью базовой системы и должен быть установлен из коллекции портов (а именно, из порта lang/perl5.8) или из пакета. После этой установки все порты и/или пакеты, зависящие от Perl, нуждаются в переустановке.

Для запуска бинарных файлов FreeBSD 4.X требуется набор библиотек, поддерживающих совместимость. Он доступен после установки пакета/порта misc/compat4x.

Как было упомянуто в предыдущем разделе, Xorg это реализация X Window System по умолчанию. Коллекция портов (а также пакеты) соответствуют этому изменению, чтобы учесть зависимости. Для замены установленной графической системы с XFree86 на Xorg, обратитесь к разделу Установка X11 Руководства FreeBSD.

Этот файл и другие документы, относящиеся к данной версии FreeBSD, могут быть найдены по адресу http://www.FreeBSD.org/snapshots/.

Если у вас возник вопрос, касающийся FreeBSD, прочтите документацию, прежде чем написать письмо в <questions@FreeBSD.org>.

Всем пользователям FreeBSD 5-STABLE рекомендуется подписаться на список рассылки <stable@FreeBSD.org>.

Вопросы, касающиеся этого документа, вы можете направить по адресу <doc@FreeBSD.org>.