Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  начальная настройка
  Установка FreeBSD
  DUMMYNET
  Сборка ядра
  IPFW
  обновление
  portsnap
  CP1251 на FreeBSD
  loader.conf
  defaults/rc.conf
  jail
  Ntpdate/Ntpd
  diskless
  Обновление мира ("world")
  PBR & PF
  bsnmpd
  newsyslog
  if_bridge
  make.conf
  PBR & IPFW
  Работа с HDD
  sshd & AD
  Удаленное разбиение HDD
  Заметки об IPFW
  FreeBSD на VDS
  CVSUP и софт через Proxy
  i386=>amd64
  ALTQ в IPFW
  Виртуальный свитч
  VPN сервер по средствам mpd5.
  NTP
  sysupdate
  mpd5 L2TP
  freebsd + webcamera
  IPFW policy (PBR)
  RAID1 via LAN
  зеркальный RAID1 на ОС FreeBSD
  4.x => 7.x
  portdowngrade
  Быстрое обновление портов
  ipfw nat
  Использование csup
  UTF-8 console
  dump/restore
  hast carp zfs ucarp cluster
  ng_nat
  Wi-FI роутер + DHCP + DNS
  backup/restore & ZFS
  Обновление ОС и портов через SVN.
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> настройка —> обновление

Обновление ядра и мира

Автор: lissyara.


    Про обновление много написано на сайте FreeBSD - однако, по просьбам трудящихся, решил сам вкратце пробежаться по этой теме. Несмотря на наличие этой инструкции и работоспособность предложенных тут телодвижений - советую делать так, как предложено в хандбуке, а не следовать моим советам :)
   Немного про то, почему я делаю не так. Я никогда не обновлялся радикально - с переходом из ветки в другую (4.x->5.x или 5.x->6.x) - ибо не вижу чего-то радикально нового в новых фрях, чтобы к этому стремиться. Для однопроцессорных машин лучше 4.11 ничё не придумали :) А при смене оборудования - да, приходится ставить новые версии - ради 64-х разрядности и дров. Ну, а при обновлении в пределах одной ветки (не считая 5-ки - там были вроде коренные изменения какие-то между 5.0 и 5.2), не стоит заморачиваться насчёт точного следования инструкции - отличия обычно именно в дровах и в исправлениях ошибок. Конечно, что-то по мелочи меняется (типичный пример - при обновлении с 6.0 до 6.1 нехочет инсталлится мир - ибо в 6.1 добавили новую группу пользователей. Правда я и тут не стал следовать выводиммым при этом инструкциям, а добавил её руками :)), но в общем и целом эта одна и таже система.
   Итак. Имеем, для примеру (абсолютно реальный пример - обновлял пару дней назад фряху - ошибся в синтаксисе конфига cvsup и вместо того, чтобы обновиться - откатился.) FreeBSD 4.11 такой версии:
/usr/home/lissyara/>uname -r
4.11-STABLE
/usr/home/lissyara/>

Для начала ставим cvsup из портов - это описано тут. после чего имеем такой набор файлов:
/usr/home/lissyara/>cd /usr/share/examples/cvsup/
/usr/share/examples/cvsup/>ll
total 36
-r--r--r--  1 root  wheel  1180  9 май 19:43 README
-r--r--r--  1 root  wheel  5274  9 май 19:43 cvs-supfile
-r--r--r--  1 root  wheel  2773  9 май 19:43 doc-supfile
-r--r--r--  1 root  wheel  2427  9 май 19:43 gnats-supfile
-r--r--r--  1 root  wheel  3903  9 май 19:43 ports-supfile
-r--r--r--  1 root  wheel   349  9 май 19:43 refuse
-r--r--r--  1 root  wheel  1918  9 май 19:43 refuse.README
-r--r--r--  1 root  wheel  4013  9 май 19:43 stable-supfile
-r--r--r--  1 root  wheel  3172  9 май 19:43 standard-supfile
-r--r--r--  1 root  wheel  2498  9 май 19:43 www-supfile
/usr/share/examples/cvsup/>

После чего берём какой-нить stable-supfile и приводим к такому виду (для 4.11):
# конфиг для обновления исходных кодов:
*default host=cvsup4.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_4_11
*default delete use-rel-suffix
*default compress
src-all

или к такому - для 6.1
# конфиг для обновления исходных кодов:
*default host=cvsup4.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_6_1
*default delete use-rel-suffix
*default compress
src-all

Проверяем, а есть ли у нас исходные коды? :)
/usr/home/lissyara/>cd /usr/src/
/usr/src/>ll
total 142
-rw-r--r--    1 root  wheel   6117  2 янв  2005 COPYRIGHT
-rw-r--r--    1 root  wheel   8480 16 апр  2003 Makefile
-rw-r--r--    1 root  wheel  24306 11 май 10:48 Makefile.inc1
-rw-r--r--    1 root  wheel   9761 28 авг  1999 Makefile.upgrade
-rw-r--r--    1 root  wheel   2699 26 апр  2002 README
-rw-r--r--    1 root  wheel  46655 19 апр 11:03 UPDATING
drwxr-xr-x   32 root  wheel    512 20 окт  2005 bin
drwxr-xr-x   45 root  wheel   1024 20 окт  2005 contrib
drwxr-xr-x    7 root  wheel    512 20 окт  2005 crypto
drwxr-xr-x   14 root  wheel   2048 11 май 10:49 etc
drwxr-xr-x   41 root  wheel   1024 20 окт  2005 games
drwxr-xr-x    6 root  wheel    512 20 окт  2005 gnu
drwxr-xr-x    6 root  wheel   1536 20 окт  2005 include
drwxr-xr-x    7 root  wheel    512 20 окт  2005 kerberos5
drwxr-xr-x    8 root  wheel    512 20 окт  2005 kerberosIV
drwxr-xr-x   57 root  wheel   1536 20 окт  2005 lib
drwxr-xr-x   35 root  wheel   1024 20 окт  2005 libexec
drwxr-xr-x   10 root  wheel    512 11 май 10:49 release
drwxr-xr-x   82 root  wheel   1536 20 окт  2005 sbin
drwxr-xr-x    6 root  wheel    512 20 окт  2005 secure
drwxr-xr-x   23 root  wheel    512 20 окт  2005 share
drwxr-xr-x   49 root  wheel   1024 20 окт  2005 sys
drwxr-xr-x    8 root  wheel    512 20 окт  2005 tools
drwxr-xr-x  221 root  wheel   3584 20 окт  2005 usr.bin
drwxr-xr-x  158 root  wheel   3072 20 окт  2005 usr.sbin
/usr/src/>

Если нету - надо поставить. (Если быстрый и халявный инет - то cvsup это сам сделает при попытке обновиться - но учтите - это будет стоит прилично траффику - для 6.1 попробовал - 104 мега входящего, и час времени - но тут в канал упёрлось. Как оказалось он неплохо жмёт - всего получилось 418 мегабайт исходников. На 4.11 их поменьше - 338Mb, соответственно и траффику будет меньше). После чего запускаем обновление:
/usr/share/examples/cvsup/>cvsup -g -L 2 stable-supfile
Parsing supfile "stable-supfile"
Connecting to cvsup4.ru.FreeBSD.org
Connected to cvsup4.ru.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
 Checkout src/COPYRIGHT
 Edit src/Makefile.inc1
  Add delta 1.141.2.70.2.1 2004.12.17.13.41.58 kensmith
 Checkout src/UPDATING
 .............
 .............
 Checkout src/usr.sbin/syslogd/syslogd.c
Shutting down connection to server
Finished successfully
/usr/share/examples/cvsup/>

Ну и всё. Имеем обновлённые исходные коды системы. Можно собирать `мир` (вкратце - мир - это то, что не ядро :) - пользовательские программы - типа grep, awk, sh, chmod и прочего. Короче всё, что не входит в ядро и модули ядра.). Перед сборкой рекомендуется вернуть взад все нестандартные опции из /etc/make.conf - у меня там, например налеплена оптимизация O3, тип CPU да ещё кое какие мелочи. Я ничё не убираю. Хотя в случае проблем - если что-то не собирается или не инсталлится - стоит посмотреть, что там и убрать лишнее (на 4.x по-дефолту этого файла вообще нет, в 6.x в нем тока пара строк про версию перла. На это и ориентируйтесь).
/usr/home/lissyara/>cd /usr/src/
/usr/src/>rm -R /usr/obj/* && make cleandir && make cleandir && \
? make buildworld && make installworld && shutdown -r now

make cleandir делать дважды рекомендует хандбук (я ещё make clean делаю... На всякий случай...). Сборка достаточно длительный процесс - на AMD64 3200+ на сборку мира от FreeBSD 6.1 у меня уходило чуть больше часа. Для 4.11 соответственно намного быстрей - раза в два-три (на PII-266 уходит порядка 5-ти часов - для мира 4.11). На этой машине, на которой щас мучаем (AMD K7, Duron 1100MHz, FreeBSD 4.11) ушло час и десять минут, и минут 10 на инсталляцию.
После чего перезагрузка, и собираем ядро. Собсно частенько бывает проблемой вспомнить - а какое ядро у меня стоит щас? :) это можно легко проверить:
/usr/home/lissyara/>uname -v
FreeBSD 4.11-STABLE #0: Wed May 10 23:59:44 MSD 2006
lissyara@mx.lissyara.su:/usr/obj/usr/src/sys/router.acpi
/usr/home/lissyara/>

Сборку ядра я уже описывал, но тут пробегусь ещё разок.
/usr/home/lissyara/>cd /usr/src/
/usr/src/>rm -R /usr/obj/* && make clean && make clean \
? make buildkernel KERNCONF=router.acpi && \
? make installkernel KERNCONF=router.acpi && shutdown -r now

Ядро собралось бодренько - за 14 минут. После перезагрузки получилось:
/usr/home/lissyara/>uname -r
4.11-RELEASE-p17
/usr/home/lissyara/>

Вот и всё.



размещено: 2006-05-11,
последнее обновление: 2006-05-11,
автор: lissyara

оценить статью:

creativ, 2006-05-11 в 18:15:29

Это у вас на серверах make.conf с 03 или на десктопе? Если на серверах то как со стабильностью?

lissyara, 2006-05-11 в 22:51:36

раньше на серверах было :) Игрался. Щас прошло... В паре мест -O2 есть (на 4.11 - на 6.0 оно штатно), а так по дефолту везде оставляю...
====
насчёт стабильности - некоторые вещи просто не собирались. Если собиралось - работало.

northern, 2006-05-13 в 19:58:02

сенкс! приятно, что пожелания народа учитываются.

Чингиз, 2007-03-11 в 6:54:55

а вот чем в принципе отличаются способы обновлением МИРа и ядра, от данной статьи и http://www.lissyara.su/?id=1270, помимо того что способы немного разнятся.

Чингиз, 2007-03-11 в 6:56:16

тоесть способом реализации.

nikola93, 2007-10-17 в 8:23:09

Пасиб тебе класная статья
сначало ошибки были потом стал разбиратся оказывается дата старая стояла вобщем дату поменял и все заработало

toughcat, 2008-02-01 в 11:32:37

похоже тут "... && make clean \
? make buildkernel KERNCONF=router.acpi && ...
"
одна "&&" пропущена

user, 2008-02-28 в 22:22:59

хз, лично я для обновления p юзаю freebsd-update

VVD, 2008-03-21 в 4:28:57

А чем не устраивает путь более близкий к классическому?
make buildworld
make buildkernel KERNCONF=router.acpi
make installkernel KERNCONF=router.acpi
make installworld
reboot

К тому же даже для близких версия (типа с 6.2 до 6.3) mergemaster я бы не стал исключать.
Ну а в single user mode для installworld в данном случае можно не входить. Но если вдруг что не так пойдёт "пиняйте на себя". :-D

Vagner, 2008-04-14 в 14:58:08

Зачетная статья! Сенкс! Доделаю сайт поставлю линку на ентот ресурс;)

sas, 2008-04-29 в 0:07:46

ребята а вы в статье забыли указать что нужно делать mergemaster после make installworld и mergemaster -p после make installkernel.или я не прав???

a-i, 2008-05-12 в 18:35:43

прав, статью надо переписать однозначно...
т.к. посмотри на дату написания )
с тех пор много воды утекло ))) и cvsup тоже надо не забыть заменить на csup

eGuru, 2008-06-20 в 23:35:19

Странно, что описанный способ вообще сработал. Видимо, различия версий системы были несущественные. В хендбуке настоятельно рекомендуют сначала ставить новое ядро, потом мир.

Добавлю немного своего опыта по апгрейду с 6.2 на 7.0.
Действовоал по сценарию из Makefile, сборка ядра и мира нормально. Пришлось заново изготовить конфиг ядра, так как некоторые опции из 6.2 вызывали ошибку при компиляции ядра 7.0. Далее инсталлкернел, и ребут в однопользовательский режим. В однопользовательском режиме первым делом надо дать команду mount -a, чтобы смонтировать необходимые файловые системы. Далее mergemaster-ы. При объединении конфигов надо быть очень внимательным, с одной стороны желательно поставить новый конфиг, с другой стороны надо сохранить свои настройки из старых. Тут без ручной правки не обойтись. После завершения mergemaster можно перезагрузиться в нормальный режим, если все стартовала сразу - вы счастливый человек. Последний шаг, указанный в инструкции - make delete-old-libs. Выполнить его надо, однако перед этим необходимо пересобрать ВСЕ установленные в системе приложения. Если этого не сделать, и сразу удалить старые библиотеки, приложения перестанут запускаться.

Вкратце так.

shaggy, 2008-11-02 в 8:01:14

К написанному eGuru я бы добавил установку из портов
/usr/ports/misc/compat6x дабы избежать проблем с библтотеками.

shaggy, 2008-11-02 в 8:03:08

Помимо mount -a надо бы еще mount -rw сделать

vihlun82, 2009-05-30 в 23:06:10

Статья супер =) тока мне пришлось чуться прееиграть на 7.2 не делать мейк слин 2 раза =) зато понял что такое world и ядро =)))))))))))

NecAway, 2009-07-28 в 20:33:08

Господа.. статья, конечное, хорошая, но может её стоит подновить? Вместо cvsup давно нужно csup пользовать...

Чел, 2011-01-11 в 22:11:39

а как вам этот метод?
http://server-help.ru/?p=17


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 48 чел.
За последние 30 мин было: 134 человек
За сегодня было
2609 показов,
639 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0511 секунд
Из них PHP: 30%; SQL: 70%; Число SQL-запросов: 77 шт.
Исходный размер: 126494; Сжатая: 22316