Freebsd оновлення системи за допомогою freebsd-update, rtfm linux, devops і системне

Процес оновлення системи на новішу версію описаний в статті FreeBSD: оновлення 8.2 RELEASE до 8.3 RELEASE.
Перший спосіб більш простий, але він не буде працювати в тому випадку, якщо використовується нестандартне ядро. Точніше - можна на час встановити версію ядра GENERIC. провести оновлення world. після чого вручну пересобрать заново ваше ядро. У разі, якщо ви запускаєте freebsd-update на системі з нестандартним ядром - система виведе попередження:
WARNING: This system is running a «MYKERNEL» kernel, which is not a kernel configuration distributed as part of FreeBSD 9.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running »/ usr / sbin / freebsd-update install»
Але в в такому випадку буде простіше виконати оновлення з вихідних текстів, які можна отримати за допомогою SVN (яка прийшла на зміну застарілої CVS).
Розглянемо перший варіант, за допомогою freebsd-update.
Утиліта freebsd-update має всього кілька опцій:
fetch - отримує оновлення для поточної архітектури і конфігурації, наприклад - для установки нових патчів безпеки поточної версії,
cron - випадково, з проміжком від 1 до 3600 секунди виконує fetch для отримання оновлень, при наявності оновлення - відправить лист адміністратору;
upgrade - використовується для поновлення на новий реліз, наприклад - при оновленні 8. * на 9. *;
install - установка отриманих оновлень;
rollback - відкочується внесені зміни, видаляє оновлення.
Процес оновлення включає в себе 3 етапи - щоб отримувати оновлення, установка, і завершення установки.
Додаткову настройку оновлення можна виконати за допомогою файлу /etc/freebsd-update.conf.
Перевірити поточну версію вашої системи можна кількома способами:
# Grep -A 2 'TYPE = "' /usr/src/sys/conf/newvers.sh
TYPE = "FreeBSD"
REVISION = "9.0"
BRANCH = "RELEASE"
# Uname -srmi
FreeBSD 9.0-RELEASE i386 GENERIC
Для того, що б отримати оновлення - виконуємо:
# Freebsd-update fetch
Looking up update.FreeBSD.org mirrors ... 4 mirrors found.
Fetching public key from update5.freebsd.org ... done.
Fetching metadata signature for 9.0-RELEASE from update5.freebsd.org ... done.
...
Inspecting system ... done.
Preparing to download files ... done.
Fetching 221 patches ...
...
Після закінчення завантаження файлів - буде виведений список файлів і каталогів, які будуть оновлені:
The following files will be updated as part of updating to 9.0-RELEASE-p7:
...
Тепер можна приступити до установки оновлень:
# Freebsd-update install
Installing updates ... done.
Якщо оновлення торкнулися ядра або його модулів - необхідно перезавантажити сервер, і повторити установку оновлень.
Якщо оновлення проводиться в системі з нестандартним ядром - використовуйте nextboot для завантаження ядра GENERIC після перезавантаження системи:
# Nextboot -k GENERIC
Тепер перезавантажуємо систему:
Після перезавантаження запускаємо повторно установку:
Якщо система повідомляє, що:
# Freebsd-update install
No updates are available to install.
Значить оновлення завершено.
Перевіримо поточну версію:
# Uname -v
FreeBSD 9.0-RELEASE-p3
Для перевірки - можна ще раз запустити freebsd-update:
# Freebsd-update fetch
...
Inspecting system ... done.
Preparing to download files ... done.
No updates needed to update system to 9.0-RELEASE-p3.
У разі, якщо щось пішло не так - можна "відкотити" установку оновлень:
# Freebsd-update rollback
Uninstalling updates ... done.
Перезавантажуємо сервер і перевіряємо поточну версію:
# Uname -v
FreeBSD 9.0-RELEASE
Що б перевіряти наявність оновлень автоматично - в cron можна додати завдання:
@daily freebsd-update cron
У разі помилки "freebsd-update: not found" - міняємо рядок на:
@daily / usr / sbin / freebsd-update cron
Так, раз на добу, вночі, freebsd-update буде перевіряти наявність оновлень і, при їх наявності, завантажить їх на машину і повідомить листом адміністратора. Після чого необхідно вручну провести установку оновлень.
P.S. Ви могли помітити, що деякі висновки консолі містять версію 9.0-RELEASE-p7. в той час як uname виводить версію 9.0-RELEASE-p3. Пов'язано це з тим, що при цьому оновленні не було порушено ядро системи, саме тому інформація в uname не відповідає вмісту файлу /usr/src/sys/conf/newvers.sh.
Під час оновлення системи з вихідних текстів - такого спостерігатися не буде, тому що і world ( "світ") і саме ядро ( "kernel") будуть збирати заново.