Статьи

Міграція з i386 на amd64

  1. Дистанційна міграція з i386 на amd64

www.lissyara.su -> статті -> FreeBSD -> налаштування -> i386 => amd64

Дистанційна міграція з i386 на amd64

Автор: serge .


& nbsp Для написання цієї замітки використовувалося безліч різного матеріалу, знайденого в глобальній мережі Internet. Вказати конкретно, що і звідки брав не представляеться можливим, так як іноді це була просто наводка в потрібному напрямку. Так що авторам, які помітили будь-які збіги зі своїми роботами, прохання написати і я додам вас до списку джерел інформації. Окреме спасибі товаришу lissyara, який півночі консультував мене по ходу міграції.
& Nbsp Все почалося з того, що сервер переїхав з dedicated (орендованого) на colocation (розміщений). На Дедик стояла дешева "залізяка" на базі одноядерного Intel Pentium IV з 1Гб оперативної пам'яті, а під colocation був куплений чотирьохядерний AMD Phenom з 4 Гб оперативної пам'яті. Відповідно хотілося отримати всі принади 64-бітного процесора AMD. Завдання ускладнювалося тим, що сервер був перенесений за допомогою стандартних утиліт dump / restore і був повністю налаштований. Варіант з установкою нової ОС FreeBSD amd64 з подальшою установкою і налаштуванням всього програмного забезпечення не вражав, так як мороки там було багато, та й призабув я вже деякі важливі дрібниці. Тому було прийнято рішення мігрувати з-під діючої, робочої ОС.
& Nbsp У підсумку маємо: сервер з процесором amd64, двома жорсткими дисками, 4 Гб ОЗУ, встановленої ОС FreeBSD 6.3-stable i386 без SMP і PAE. На виході потрібно отримати ОС FreeBSD 6.3-stable amd64 з SMP.
& Nbsp Приступимо.
& Nbsp ОС встановлена ​​на першому жорсткому диску hdd (ім'я диска ad4), другий жорсткий диск (ad5) соответствено залишився незадіяним (планувався під gmirror). Ось на нього (ad5) і будемо ставити нову ОС. Через sysinstall створюємо розділи і монтуємо їх в / mnt.

Part Mount Size Newfs ---- ----- ---- ----- ---- ad5s1a / mnt 232GB UFS2 + SY

& Nbsp У результаті повинно вийти приблизно наступне:

# 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

& Nbsp Збирати ядро ​​будемо відразу з необхідними нам опціями, тому створюємо файл конфігурації. У нього вписуємо тільки ті директиви, які нам потрібні і не присутні в конфігурації за замовчуванням. Все інше підключаємо з 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

& Nbsp При складанні ядра (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

& Nbsp При наповненні каталогу / 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 /

& Nbsp Якщо все пройшло успішно, на другому 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

& Nbsp Для того, щоб можна було підключитися до нової ОС віддалено (і не тільки), копіюємо файли для користувача учеток і інші настройки зі старої ОС:

# Cd / etc # cp -rp host.conf ssh passwd group master.passwd pwd.db / spwd.db resolv.conf / mnt / etc

& Nbsp Створюємо в новій ОС файл 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

& Nbsp Створюємо файл конфігурації ОС 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"

& Nbsp На цьому підготовка нової ОС закінчена. Тепер, схрестивши пальці, перезавантажується.

& Nbsp Якщо все було зроблено правильно, то перед вами постане FreeBSD amd64. Якщо десь помилилися, то доведеться дзвонити / писати в службу підтримки вашого дата-центру і замовляти kvm. Ось тут-то і виявляється перевага утиліти nextboot. Вона намагається запустити ОС в новій конфігурації тільки один раз. Якщо ОС була перезавантажена, то ви повернетеся до старого ядра.
& Nbsp Але, тим не менше, навіть якщо все було зроблено правильно, є можливість не побачити свій сервер в мережі. У мене, наприклад, нове ядро ​​перепризначити нумерацію другого hdd (було ad5, стало ad8) і, відповідно, в автоматичному режимі ядро ​​не завантажили. Довелося замовляти kvm і запускати ядро ​​вручну.

mountroot> ufs: / dev / ad8s1a

& Nbsp Після цього все піднялося нормально і я зміг підключитися до сервера по ssh.
& Nbsp Перевіряємо:

# Uname -a FreeBSD myhosting.ru 6. 3 -STABLE FreeBSD 6. 3 -STABLE # 0: Fri Apr 25 00:25:35 MSD 2008 [email protected]: / usr / obj / amd64 / usr / src / sys / MYKRN amd64

& Nbsp Трохи поясню, що у нас вийшло. Ми завантажилися з нового ядра і з новим світом з другого hdd. Стару ОС (перший hdd) ми змонтували в каталог / mnt.
& Nbsp Тепер нам необхідно зібрати і встановити мир і ядро ​​в стару ОС. Дії аналогічні тим, що були раніше, тільки відрізняється кількістю потоків (опція -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

& Nbsp Коментуємо все зайве в rc.conf, залишивши лише найпотрібніше: настройки мережі, запуск демона sshd, перевірку файлової системи. Видаляємо конфігураційний файл nextboot і перезавантажуємося:

# Vi /mnt/etc/rc.conf # rm /mnt/boot/nextboot.conf # shutdown -r now

& Nbsp Таким чином ми отримали ОС, успішно мігрувала з архітектури i386 на amd64. Але для повного щастя ще необхідно пересобрать все раніше встановлене програмне забезпечення і видалити старі бібліотеки. Щиро вам бажаю, щоб ваше програмне забезпечення було встановлено з портів.

# Portupgrade -fca # cd / usr / src && make delete-old-libs

& Nbsp Хотілося б зауважити, що Перезбірка портів зайняла повний робочий день, тоді як сама міграція близько 3-4 годин. Все через те, що при складанні якого-небудь порту випадали помилка, яку доводилося виправляти вручну, найчастіше шляхом індивідуальної пересборки потрібного порту. Тому повну перезбирання портів доводилося запускати більше 5 раз. Можливо, я тут щось робив не оптимально, але в підсумку все встало на свої місця.
& Nbsp Коли закінчили з портами, прибираємо коментарі в rc.conf і робимо контрольну перезавантаження:

# Vi /etc/rc.conf # shutdown -r now
Посилання на обговорення: php?f=14&t=8352> http://forum.lissyara.su/viewtopic.php?f=14&t=8352 .

розміщено: 2008-04-28,
останнє оновлення: 2008-05-03,
автор: serge





Php?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то