|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> настройка
—> i386=>amd64
Удаленная миграция с i386 на amd64
Автор: serge.
  Для написания этой заметки использовалось множество различного материала, найденного в глобальной сети Internet. Указать конкретно, что и откуда брал не представляеться возможным, так как иногда это была просто наводка в нужном направлении. Так что авторам, заметившим какие-либо совпадения со своими работами, просьба написать и я добавлю вас в список источников информации. Отдельное спасибо товарищу lissyara, который полночи консультировал меня по ходу миграции.
  Все началось с того, что сервер переехал с dedicated (арендуемого) на colocation (размещенный). На дедике стояла дешевая "железка" на базе одноядерного Intel Pentium IV с 1Гб оперативной памяти, а под colocation был куплен четырехядерный AMD Phenom с 4Гб оперативной памяти. Соответственно хотелось получить все прелести 64-битного процесора AMD. Задача осложнялась тем, что сервер был перенесен с помощью стандартных утилит dump/restore и был полностью настроен. Вариант с установкой новой ОС FreeBSD amd64 с последующей установкой и настройкой всего программного обеспечения не впечатлял, так как мороки там было много, да и подзабыл я уже некоторые важные мелочи. Поэтому было принято решение мигрировать из-под действующей, рабочей ОС.
  В итоге имеем: сервер с процессором amd64, двумя жесткими дисками, 4Гб ОЗУ, установленной ОС FreeBSD 6.3-stable i386 без SMP и PAE. На выходе нужно получить ОС FreeBSD 6.3-stable amd64 с SMP.
  Приступим.
  ОС установлена на первом жестком диске hdd (имя диска ad4), второй жесткий диск (ad5) соответствено остался незадействованным (планировался под gmirror). Вот на него (ad5) и будем ставить новую ОС. Через sysinstall создаем разделы и монтируем их в /mnt.
Part Mount Size Newfs
---- ----- ---- ----- ----
ad5s1a /mnt 232GB UFS2+S Y
|   В итоге должно получиться примерно следующее:
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad4s1a 480M 107M 335M 24% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad4s1d 1.9G 20K 1.8G 0% /tmp
/dev/ad4s1e 9.7G 1.1G 7.8G 13% /var
/dev/ad4s1f 19G 11G 7.3G 59% /usr
devfs 1.0K 1.0K 0B 100% /var/named/dev
/dev/ad4s1g 192G 2.5G 174G 1% /home
/dev/ad5s1a 232G 10K 456M 0% /mnt
|   Собирать ядро будем сразу с необходимыми нам опциями, поэтому создаем файл конфигурации. В него вписываем только те директивы, которые нам нужны и не присутствуют в конфигурации по умолчанию. Все остальное подключаем из SMP (в свою очередь SMP подключает директивы из GENERIC).
# rm -rf /usr/obj/
# cat > /usr/src/sys/amd64/conf/MYKRN
include SMP
ident MYKRN-SMP
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
options QUOTA
|   При сборке ядра (kernel) и мира (world) указываем, что нам нужна архитектура amd64, ну и, конечно же, файл конфигурации ядра. Местом для установки является каталог /mnt, в котором смонтирован второй hdd.
# cd /usr/src
# make -j4 -s buildworld TARGET_ARCH=amd64
# make -j4 -s buildkernel TARGET_ARCH=amd64 KERNCONF=MYKRN
# make installworld TARGET_ARCH=amd64 DESTDIR=/mnt
# cd etc && make distribution DESTDIR=/mnt
# cd ../ && make installkernel TARGET_ARCH=amd64 DESTDIR=/mnt KERNCONF=MYKRN
|   При наполнении каталога /etc дистрибутивов у меня вылезла неожиданная мелкая проблема - для sendmail'а не хватило файлов конфигурации. Разбираться, почему и из-за чего так получилось, времени не было, поэтому я их просто скопировал со старой ОС. После этого make distribution отработал без ошибок.
install: freebsd.cf: No such file or directory
*** Error code 71
Stop in /usr/src/etc/sendmail.
*** Error code 1
Stop in /usr/src/etc.
# ll sendmail/
total 16
-rw-r--r-- 1 root wheel 2,9K 22 янв 2004 Makefile
-rw-r--r-- 1 root wheel 4,0K 24 фев 04:03 freebsd.mc
-rw-r--r-- 1 root wheel 899B 22 ноя 19:20 freebsd.submit.mc
-rw-r--r-- 1 root wheel 2,2K 14 июн 2005 freefall.mc
# cp /etc/mail/freebsd.cf sendmail/
# cp /etc/mail/freebsd.submit.cf sendmail/
|   Если все прошло успешно, на втором hdd вы должны получить установленную ОС FreeBSD 6.3 adm64. Теперь необходимо все подготовить для ее загрузки. Для этого копируем новое ядро в каталог /boot первого hdd и переименовываем в kernel64. Для разовой загрузки FreeBSD в другую конфигурацию будем использовать утилиту nextboot. Ее можно просто вызвать с необходимыми параметрами, а можно вручную создать для нее файл конфигурации nextboot.conf в каталоге /boot. Второй вариант мне приглянулся больше. В этом файле указываем, какое ядро загружать и какой раздел считать корневым.
# cp -r /mnt/boot/kernel /boot/kernel64
# echo 'nextboot_enable="YES"' > /boot/nextboot.conf
# echo 'kernel="kernel64"' >> /boot/nextboot.conf
# echo 'vfs.root.mountfrom="ufs:/dev/ad5s1a"' >> /boot/nextboot.conf
|   Для того, чтобы можно было подключиться к новой ОС удаленно (и не только), копируем файлы пользовательских учеток и прочие настройки из старой ОС:
# cd /etc
# cp -rp host.conf ssh passwd group master.passwd pwd.db /
spwd.db resolv.conf /mnt/etc
|   Создаем в новой ОС файл fstab в соответствии с имеющимися разделами:
# cat > /mnt/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad5s1a / ufs rw 1 1
/dev/ad4s1b none swap sw 0 0
/dev/ad4s1a /mnt ufs rw 2 2
/dev/ad4s1e /mnt/var ufs rw 2 2
/dev/ad4s1f /mnt/usr ufs rw 2 2
|   Создаем файл конфигурации ОС rc.conf. В него записываем только самое необходимое: настройки сети, запуск демона sshd и проверку файловой системы. Все остальное отключаем.
# cat > /mnt/etc/rc.conf
defaultrouter="xxx.xxx.xxx.xxx"
hostname="myhosting.ru"
ifconfig_xl0="inet xxx.xxx.xxx.xxx netmask 255.255.255.xxx"
sshd_enable="YES"
sendmail_enable="NONE"
firewall_enable="NO"
inetd_enable="NO"
fsck_y_enable="YES"
background_fsck="NO"
|   На этом подготовка новой ОС закончена. Теперь, скрестив пальцы, перезагружаемся.
  Если все было сделано правильно, то перед вами предстанет FreeBSD amd64. Если где-то ошиблись, то придется звонить/писать в службу поддержки вашего дата-центра и заказывать kvm. Вот тут-то и проявляется преимущество утилиты nextboot. Она пытается запустить ОС в новой конфигурации только один раз. Если ОС была перезагружена, то вы вернетесь к старому ядру.
  Но, тем не менее, даже если все было сделано правильно, есть возможность не увидеть свой сервер в сети. У меня, например, новое ядро переназначило нумерацию второго hdd (было ad5, стало ad8) и, соответственно, в автоматическом режиме ядро не загрузилось. Пришлось заказывать kvm и запускать ядро вручную.
mountroot> ufs:/dev/ad8s1a
|   После этого все поднялось нормально и я смог подключиться к серверу по ssh.
  Проверяем:
# uname -a
FreeBSD myhosting.ru 6.3-STABLE FreeBSD 6.3-STABLE #0: Fri Apr 25 00:25:35 MSD 2008
serge@myhosting.ru:/usr/obj/amd64/usr/src/sys/MYKRN amd64
|   Немного поясню, что у нас получилось. Мы загрузились с нового ядра и с новым миром со второго hdd. Старую ОС (первый hdd) мы смонтировали в каталог /mnt.
  Теперь нам необходимо собрать и установить мир и ядро в старую ОС. Действия аналогичные тем, что были ранее, только отличается количеством потоков (опция -j8), так как новое ядро поддерживает SMP (симметричную многопроцессорность). Вообще сборка в несколько потоков имеет сомнительную выгоду, так как есть риск появления ошибок сборки. Но я еще не разу не огребал таких проблем, поэтому продолжаю использовать эту опцию на свой страх и риск.
# cd /mnt/usr/src
# make -j8 -s buildworld
# make -j8 -s buildkernel KERNCONF=MYKRN
# make installworld DESTDIR=/mnt
# make installkernel DESTDIR=/mnt KERNCONF=MYKRN
|   Комментируем все лишнее в rc.conf, оставив только самое нужное: настройки сети, запуск демона sshd, проверку файловой системы. Удаляем конфигурационный файл nextboot и перезагружаемся:
# vi /mnt/etc/rc.conf
# rm /mnt/boot/nextboot.conf
# shutdown -r now
|   Таким образом мы получили ОС, успешно мигрировавшую с архитектуры i386 на amd64. Но для полного счастья еще необходимо пересобрать все ранее установленное программное обеспечение и удалить старые библиотеки. Искренне вам желаю, чтобы ваше программное обеспечение было установлено из портов.
# portupgrade -fca
# cd /usr/src && make delete-old-libs
|   Хотелось бы заметить, что пересборка портов заняла полный рабочий день, тогда как сама миграция около 3-4 часов. Все по причине того, что при сборке какого-нибудь порта вываливалась ошибка, которую приходилось исправлять вручную, чаще всего путем индивидуальной пересборки нужного порта. Поэтому полную пересборку портов приходилось запускать более 5 раз. Возможно, я тут что-то делал не оптимально, но в итоге все встало на свои места.
  Когда закончили с портами, убираем комментарии в rc.conf и делаем контрольную перезагрузку:
# vi /etc/rc.conf
# shutdown -r now
|
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=8352.
размещено: 2008-04-28,
последнее обновление: 2008-05-03,
автор: serge
|
|
|
|
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
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
|
Комментарии пользователей [23 шт.]