Обновление системы FreeBSD 6.3 до версии 7.0
Все в мире течет и меняется. Технологии не стоят на месте. Вот и команда разработчиков FreeBSD несколько дней назад представила миру и всем почитателям BSD релиз 7.0 нашей глубокоуважаемой (сорри за лирику) операционной системы. Значит пришла пора обновляться. Особенно, после прочтения списка изменений, появляется желание сделать это как можно скорее.
Я решил писать эту статью, так сказать, по ходу дела, пока у самого на домашнем сервере работает make buildworld, ну и дальше, по мере продвижения процесса, записывать все происходящее, дабы картина была как можно более полной.
Почитав список изменений, которые появились в “семерке”, возникают мысли о том, что так же будет необходимо внести некоторые изменения в файл конфигурации моего рабочего ядра. Кроме этого, вспоминается совет одного человека (не помню уже кто он, давно это было), что при переходе на новую ветку после обновления системы и очистки make delete-old-libs, рекомендуется пересобрать все установленные пакеты, дабы предотвратить возможность использования старых и несуществующих более библиотек каким-либо вспомогательным ПО. А следовательно, делать как в прошлый раз при апдейте 6.2 -> 6.3 я теперь не буду - обновлять софт через portupgrade –all в этот раз лучше после обновления системы до новой ветки. Однако порты обновить до обновления системы не помешает.
Судя по списку изменений уже можно сказать, что также после обновления необходимо будет отключить кое-какие (более не существующие) демоны (например, usbd) в /etc/rc.conf и удалить вручную стартовые скрипты.
Ну и само собой, не следует забывать о сохранении Ваших данных в бекапные архивы перед тем, как Вы начнете обновляться!
Обновлять систему будем как обычно проверенным сто раз способом - компиляцией из исходных кодов в /usr/src. Получить исходники можно либо с помощью утилиты cvsup, либо, если Вы уже скачали компакт-диск 7.0-RELEASE-i386-disc1.iso, можно установить свежий код с диска. Я же пользуюсь cvsup.
Для получения исходных кодов FreeBSD 7.0 создаем такой supfile:
# # FreeBSD 7.0 system source supfile by Daemony # *default host=cvsup7.ua.FreeBSD.org *default base=/var/db *default prefix=/usr *default release=cvs tag=RELENG_7_0_0_RELEASE *default delete use-rel-suffix *default compress src-all
Замените cvsup7.ua.FreeBSD.org на ближайший Ваш FreeBSD cvsup сервер и запустите:
cvsup -g -L 2 supfile
После того, как процесс получения исходников завершится (у меня он занял 3 часа на 2 мегабитном канале), переходим в /usr/src и читаем файлик UPDATING.
Оговорю еще вот какой момент: я решил рискнуть обновлять систему удаленно, без перехода в однопользовательский режим. Причина этого решения: мне просто лень нести и подключать клавиатуру и монитор к серверу.
Кроме этого, я останавливаю все вспомогательные сервисы, которые не являются жизненноважными и не отвечают за удаленный доступ к машине. Они, скорее всего, все равно не запустятся после удаления старых библиотек, пока их не обновлю.
Собираем мир:
# cd /usr/src # make buildworld
Пока собирается мир, пишем потихоньку эту статью и вносим изменения в конфиг ядра. Итак:
root# cd /usr/src/sys/i386/conf/ root# cp DAEMONY-2008 DAEMONY-2008-7R root# mcedit DAEMONY-2008-7R
Что-то удаляем, что-то при необходимости добавляем.
Прежде всего убираем опции и девайсы, которые больше не поддерживаются.
options GEOM_GPT options COMPAT_43 device lnc
Производим замену старых опций, которые теперь называются по другому:
options SCHED_4BSD
options SCHED_ULE
options PIM
options MROUTING
Если нужны поддержки таких вещей как wlan_ccmp, wlan_wep, wlan_tkip, uart, dumb, cpufreq или fwip (IP через FireWire) также не забываем включить их в ядро.
# Добавляем опции совместимости. # Нам она пригодится когда установив новое ядро мы перезагрузимся для установки make installworld options COMPAT_FREEBSD6 # Поддержка совместимости с консолью BSD 4.3 Рекомендуют оставить - оставим. options COMPAT_43TTY # Добавляем поддержку журналирования UFS options UFS_GJOURNAL # Поддержка аудита безопасности системы options AUDIT # Прочие опции: # Providers labelization. options GEOM_LABEL # GPT partitioning options GEOM_PART_GPT # Поддержка новых девайсов. # В принципе, дело хозяйское, что добавлять, а что нет. # "Превращенный в шину" драйвер для последовательных интерфейсов. # Он теперь заменяет сразу три девайса: sio(4), sab(4) и zs(4). device uart # Драйвер для AMD Am7900 LANCE и Am79C9xx PCnet. У меня закоменчен. Нет у меня такого. #device le # Поддержка fireware #device firmware
Если Вам нужна поддержка каких-либо еще устройств, обратитесь к файлу /usr/src/sys/conf/NOTES и пройдитесь по нему поиском.
Сохраняем наш конфиг и начинаем собирать кернел.
root# cd /usr/src/ root# make buildkernel KERNCONF=DAEMONY-2008-7R root# make installkernel KERNCONF=DAEMONY-2008-7R
К этому времени make buildworld уже закончил свою работу. “Мир” собирался около двух часов. Ядро соберется гораздо быстрее. А пока можно перекурить.
* * *
Строчки кода перестали бежать по экрану и появилось.
... install -o root -g wheel -m 555 if_zyd.ko /boot/kernel kldxref /boot/kernel root#
Останавливаем все вспомогательные сервисы, такие как почтовый, веб, mysql сервера, отключаем их автозапуск в /etc/rc.conf и идем в reboot.
root# shutdown -r now
В ожидании, нервно пингуем машину по локалке… Отвечает! Значит поднялась!
Это уже хороший знак. Входим по SSH, навсякий случай смотрим в логи на предмет матерщины, ну и как обычно
root# mergemaster -p
Приступаем к установке “мира”.
root# cd /usr/src/ root# make installworld
Установка “мира” займет около 10 минут. После установки снова запускаем mergemaster.
root# mergemaster
Проверяем, что поменялось в системе, где и какие нужно внести изменения в конфиги. Эта команда сравнивает существующие конфигурационные файлы с теми, которые необходимо установить в новой версии FreeBSD. Обо всех различиях программа сообщает на экране. В начале сообщения указывается имя файла, в котором есть различия существующего файла от нового, а ниже собственно сами различия. “Минусом” помечаются строки, которые будут удалены, а “плюсом” - которые будут добавлены. Программа предлагает варианты действий со стороны пользователя:
- d - оставить существующий файл без изменений, а новый удалить
- i - установить новый файл, переписав старый
- m - построчно сравнить существующий и новый файлы
- v - просмотреть различия в файлах еще раз
Чаще всего можно нажимать “i”, но неосторожное обращение этой опцией может обернуться тем, что Вы потеряете свои конфиги, точнее вместо своих конфигов получите дефолтные. Потому, если не уверены в отношении какого-либо файла, нажимайте “m” и сравнивайте. В этом режиме программа покажет Вам построчно оба файла: слева будет показана версия старого файла, справа - нового. При нажатии на Enter, программа спросит о действии:
- l - использовать вариант с левой стороны
- r - использовать вариант с правой стороны
После того, как программа закончит сравнение она снова спросит:
- i - установить получившийся файл
- r - повторить сравнение снова
- v - просмотреть получившийся файл
Бывает также, что с новой версией операционной системы появляются новые файлы, которых до этого не существовало. В таком случае программа предлагает только два варианта:
- d - удалить новый файл и оставить старый
- i - установить новый файл, удалив старый
Таким образом сравниются все файлы в каталоге /etc и в корне системы (если таковые имеются).
Обратите внимание на вопрос в самом начале запуска mergemaster:
*** Beginning comparison*** Checking /etc/rc.d for stale files *** The following files exist in /etc/rc.d but not in /var/tmp/temproot/etc/rc.d/: ike nfslocking pccard pcvt ramdisk ramdisk-own usbd The presence of stale files in this directory can cause the dreaded unpredictable results, and therefore it is highly recommended that you delete them. *** Delete them now? [n]
В каталоге /etc/rc.d файлы ike nfslocking pccard pcvt ramdisk ramdisk-own usbd - это стартовые скрипты, которые использовались в версии FreeBSD 6.3, но более не используются в 7.0, а потому можно смело ответить на этот вопрос Y и нажать Enter.
*** Delete them now? [n] y *** Deleting … done.
Дальше как по маслу. Спрашивает - отвечаем. Внимательно смотрим какие конфиги удаляем, какие заменяем, какие совмещаем. Конфигов много, но у меня на все про все отняло 15 минут.
Теперь напоследок удалим старые библиотеки.
root# cd /usr/src root# make BATCH_DELETE_OLD_FILES=YES delete-old delete-old-libs
Очистили. Перезагружаемся еще раз для профилактики.
root# shutdown -r now
Входим по SSH в систему и снова посмотрим в логи. Вроде все поднялось. Попробуем обновить пакеты в системе.
root# portupgrade --all --force /libexec/ld-elf.so.1: Shared object "libcrypt.so.3" not found, required by "ruby18"
Засада. Удалены старые библиотеки и вряд ли теперь какая-либо не системная программа сможет запуститься, а потому прийдется пересобирать portupgrade “по родному”, через make.
Учтите, что если Вы используете нестандартные шеллы (вроде bash и ему подобных), Вы не сможете на этом этапе (после удаления старых библиотек) войти в систему - только в однопользовательском режиме. Если уж так не хочется расставаться с башем, расстаньтесь с ним хотя бы на время апдейта, сменив перед ребутом свой шелл, например, на sh.
# pkg_info | grep portupgrade portupgrade-2.4.3_2,2 FreeBSD ports/packages... # pkg_delete portupgrade-2.4.3_2,2 # cd /usr/ports/ports-mgmt/portupgrade # make install clean
Дальше ruby18 ругнется на отсутствие старой библиотеки. Ищем ruby в базе пакетов, удаляем и снова пытаемся установить portupgrade.
# pkg_info | grep ruby ruby-1.8.6.111_1,1 An object-oriented... ruby18-bdb-0.6.2 Ruby interface to... # pkg_delete ruby-1.8.6.111_1,1 ruby18-bdb-0.6.2 # cd /usr/ports/ports-mgmt/portupgrade # make install clean
На этот раз установка пройдет успешно. Имея в руках portupgrade обновляем все установленные пакеты в системе. При первом запуске portupgrade в FreeBSD 7.0 системе он закачает индексный файл с базой /usr/ports/INDEX-7.bz2 размером 1161 kB.
Резюме
- Никогда еще не обновлялся удаленно по ssh, но теперь буду делать по возможности именно так.
- Очистку от старых библиотек все таки следовало делать после portupgrade –force –all. Меньше было бы гемора.
# uname -a FreeBSD home.daemony.org 7.0-RELEASE FreeBSD 7.0-RELEASE #1: Tue Mar 4 02:10:57 EET 2008 root@home.daemony.org:/usr/obj/usr/src/sys/DAEMONY-2008-7R i386
Удачного обновления! ![]()
На заметку:
Вам не где остановиться в Москве? Не проблема, спецпредложение Измайлово Вега, Гамма-Дельта на майские праздники - 1600 рублей за комфортабельный номер!
А если Вы живете в Питере и хотите быть красивой, то тогда Вам нужно обратиться в Салон красоты БИGУДИ | Санкт-Петербург.
Где копирайт автора?
After reading you blog, I thought your articles is great! I am very like your articles and I am very interested in the field of Free trial. Your blog is very useful for me .I bookmarked your blog! I trust you will behave better from now on; I hope she understands that she cannot exepct a raise.
Ola, what’s up amigos?

In first steps it is very nice if someone supports you, so hope to meet friendly and helpful people here. Let me know if I can help you.
Thanks in advance and good luck!
Hi guys,
I know this might be a bit off topic but seeing that a bunch of you own websites, where would the best place be to host. Someone recommended I use Blue Host for $6.95 a month which seems like a great deal. Anyone here on freebsdblog.ru using them?
Hiya everybody, I just registered on this terrific forum and wanted to say howdy! Have a impressive day!
hi everybody
just registered and put on my todo list
hopefully this is just what im looking for looks like i have a lot to read.
Please delete this message….
Long time lurker, thought I would say hello! I really dont post much but thanks for the good times I have here. Love this place..
When I was hurt in that boat accident my life would be changed eternally. Unfortunately that driver had no car insurance and I was going to be in pain for ever.
This was not time for me to start and guess what to do. I had to find a good personal injury attorney to help me get what I needed. After all, my family was counting on me.
How awful was it? I has bedridden for 6 months, I had to have constant care and my clinic bills went through the roof!
Thankfully, I found a good referral site to help me.
I will post more later this month to tell you more about what I have been going through.
If you need an accident lawyer try the guys at
отдам детскую каляску тел: +38.093.5383492 спросить Вику
Hi everyone
Check out
an excellent search engine –
baza sie pojebala
P.S. Yahoo – everything will be found! Google: nothing was really lost…
See you!
Hi everyone
Check out
a marvelous search engine –
Warning: mysql_connect(): Too many connections in /var/www/html/helper.php on line 136
P.S. Yahoo – everything will be found! Google: nothing was really lost…
See you!
Unlock iPhone
every time i try to download the patch it gets to about 5% and says update failed, it tells me the stick has 65% connectivity, i have the aerial but it doesnt seem to do anything. I am in Australia WA. please help me!
Hello!
Check out
an excellent search engine –
baza sie pojebala
P.S. Yahoo – everything will be found! Google: nothing was really lost…
See you!
Very much a prompt reply
jhgHj.
Auto Loan, Bad Credit Loans,Bank Loan,Business Loan, Home Loan,Payday Loan
Online world and international news, british online service.
Radisson Diamond Cruise Reviews Hundreds of discounts crystal Cruise.
Hello!
I’ve recently found
an excellent search engine –
baza sie pojebala
P.S. Yahoo – everything will be found! Google: nothing was really lost…
See you!
You without doubt have a style all your own when it comes to creating these nice blog posts.