Руководство по миграции на FreeBSD 5.5-STABLE

Группа подготовки релизов FreeBSD

$FreeBSD: src/release/doc/ru_RU.KOI8-R/early-adopter/article.sgml,v 1.5.2.4 2005/04/01 13:11:04 den Exp $

FreeBSD это зарегистрированная торговая марка FreeBSD Foundation.

Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime и TrueType это торговые марки Apple Computer, Inc., зарегистрированные в Соединенных Штатах и других странах.

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390 и ThinkPad это торговые марки International Business Machines Corporation в Соединенных Штатах, других странах, или по всему миру.

IEEE, POSIX и 802 это зарегистрированные торговые марки Institute of Electrical and Electronics Engineers, Inc. в Соединенных Штатах.

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium и Xeon это торговые марки или зарегистрированные торговые марки Intel Corporation или ее дочерних компаний в Соединенных Штатах и других странах.

Microsoft, FrontPage, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media и Windows NT это или зарегистрированные торговые марки или торговые марки Microsoft Corporation в Соединенных Штатах и/или других странах.

Sparc, Sparc64, SPARCEngine, и UltraSPARC это торговые марки SPARC International, Inc в Соединенных Штатах и других странах. Продукты с торговой маркой SPARC основаны на архитектуре, разработанной Sun Microsystems, Inc.

Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве торговых марок. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о торговой марке, к обозначению добавляется знак ``™'' или ``®''.

Эта статья описывает основные отличия между FreeBSD 4.X и FreeBSD 5.5-STABLE с точки зрения пользователей или администраторов, обновляющих существующую систему. В ней дан краткий обзор процесса подготовки релизов FreeBSD. Кроме того, описаны некоторые новые возможности FreeBSD 5.X, а также некоторые изменения, которые могут быть интересны пользователям, привыкшим работать с серией релизов 4.X. Эта статья описывает также процедуры обновления существующих систем, как бинарного, так и из исходных текстов. Более ранние версии этой статьи публиковались в предыдущих релизах FreeBSD 5.X. До FreeBSD 5.3-RELEASE эта статья называлась ``Руководство для новых пользователей FreeBSD''.


1. Введение

FreeBSD 5.5-STABLE это самая свежая версия ``FreeBSD-STABLE''. Этот и последующие релизы серии 5.X предназначены для применения в реальных задачах практически так же, как и предыдущая серия релизов 4.X.

Эта статья затрагивает многие темы и вопросы, связанные с обновлением 4.X до 5.5-STABLE. Она начинается с краткого обзора существующей практики подготовки релизов, а затем описывает некоторые из новых возможностей, доступных в серии FreeBSD 5.X. В возможно наиболее важном разделе приводятся основные изменения, видимые пользователю, или изменения во внешних интерфейсах программ. Наконец, приводятся заметки по обновлению установленной системы FreeBSD 4.X до FreeBSD 5.5-STABLE, бинарному или из исходных текстов.


2. Обзор процесса выпуска релизов FreeBSD

FreeBSD использует модель разработки, основанную на наличии множества ветвей в репозитории исходных текстов. Основная ветвь называется ``CURRENT'', и в репозитории CVS она означает тег HEAD. Новые возможности сначала вносятся в эту ветвь; хотя CURRENT первой получает новую функциональность, это также означает, что она периодически страдает от нарушений работоспособности при добавлении и отладке новых возможностей.

Большинство релизов FreeBSD выпускаются из одной или нескольких ветвей ``STABLE''. В эти ветви возможности добавляются только после некоторого тестирования в CURRENT. Последние два года только одна ветвь STABLE, известная как ``4-STABLE'', находилась в активной разработке, и все релизы FreeBSD 4.X были выпущены из нее. В репозитории CVS тег этой ветви RELENG_4.

Последние две стабильные ветви (3-STABLE and 4-STABLE) были созданы на самых ранних стадиях цикла разработки (при выпуске 3.1 и 4.0 соответственно). Эта практика не дает достаточно времени для стабилизации CURRENT перед созданием новых ветвей. Это приводит к потере времени на усилия по портированию исправлений между ветвями, а также на внесение некоторые архитектурных изменений, которые вообще не могут быть портированы между ветвями.

Поэтому группа подготовки релизов создаст ветвь 5-STABLE в репозитории CVS только после достижения относительно стабильного состояния. Перед этим будет выпущено несколько релизов из серии 5.X; мы ожидаем создания 5-STABLE приблизительно во время выпуска 5.3-RELEASE.

С релизами 5.X произошло несколько иначе. FreeBSD 5.0, 5.1, и 5.2 были основаны на ветви CURRENT. Первый из этих релизов был выпущен после двух лет разработки (до него последним релизом из HEAD была FreeBSD 4.0 в марте 2000 года).

В отличие от предыдущих ветвей ``STABLE'', ветвь ``5-STABLE'' (с тегом ветви RELENG_5) была создана в CVS более чем через год после первого релиза 5.X (а именно, в процессе подготовки релиза 5.3). Эта задержка дала команде разработчиков время для завершения необходимых архитектурных изменений, стабилизацию системы, завершения работы над различными интерфейсами, и создания хорошей основы для последующих релизов 5.X.

Помимо общих улучшений и исправлений ошибок, основной приоритет для разработки ветви 5-STABLE это сохранение совместимости Application Binary Interface (ABI) и Application Program Interface (API). Любые изменения, которые могут нарушить обратную совместимость (включая интерфейсы ядра или библиотек), не приветствуются и не принимаются, за исключением случаев, когда они необходимы для решения критической проблемы.

Следующим релизом из CURRENT скорее всего станет 6.0-RELEASE, созданный из CVS HEAD. Еще не существует определенной даты для 6.0, но на момент написания этого текста ожидаемая дата находится в третьем квартале 2005 года. В дальнейшем планируется начинать выпуск релизов из основной ветви каждые восемнадцать месяцев, при этом выпуская обычные релизы каждые четыре месяца.

Последним запланированным релизом из ветви разработки 4-STABLE стал 4.11-RELEASE, анонс которого состоялся в январе 2005 года. На данный момент больше не планируется выпуск релизов из ветви 4-STABLE, и вся дальнейшая работа будет ограничена исправлением ошибок и проблем с безопасностью. Для особо консервативных пользователей возможно имеет смысл продолжить использование релизов 4.X еще некоторое время. Группа Офицеров Безопасности продолжит поддержку релизов, выпущенных из ветви 4-STABLE в соответствии с опубликованными политиками, которые можно найти на странице безопасности веб сайта FreeBSD.

Дополнительную информацию по процессу создания релизов FreeBSD можно найти на веб страницы выпуска релизов и в статье ``Выпуск релизов FreeBSD''.


3. Новые возможности

FreeBSD 5.X привлекает большим количеством новых возможностей, которые обычно вызывают серьезные архитектурные изменения, которые не могут быть портированы обратно в ветвь разработки FreeBSD 4-STABLE (напротив, множество автономных расширений, таких как новые драйвера устройств или обновления утилит пользователя, уже были портированы). Краткий, но не исчерпывающий список включает:

Более полный список новых возможностей можно найти в информации о различных релизах FreeBSD 5.X.


4. Наиболее заметные изменения

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

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


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.


6. Итоги

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

Примечания

[1]

Обратите внимание, что выполнение файлов a.out все еще поддерживается на i386 и pc98 с параметром ядра COMPAT_AOUT. Некоторые из компиляторов коллекции портов (например, lang/gcc28) все еще поддерживают создание исполняемых файлов стандарта a.out.


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

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

Всем пользователям FreeBSD 5-STABLE рекомендуется подписаться на список рассылки <[email protected]>.

Вопросы, касающиеся этого документа, вы можете направить по адресу <[email protected]>.