Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Красиво, но придётся испортить.
Для начала надо было придумать, как загрузиться с ядром от седьмой версии.
При первых же тренировках обнаружилось, что loader от четвёрки седьмое ядро загрузить не в состоянии, а наоборот - запросто.
Возиться с всякими MFS было не менее лениво, но, на счастье, на диске имелся раздел, на который можно было установить систему и который не жалко было стереть - это был отдельный раздел для сквидового кэша.
|
Положим систему с диска куда-нибудь, где есть место.
У меня место было на /var и, не мудрствуя лукаво, я создал директорий под именем "1" (сейчас понимаю, что единица выглядит в этом шрифте как буква l, но поздно)
Для промежуточной перезагрузки с диска нам понадобится только base и boot. Но, поскольку место было достаточно, я положил туда ещё man, src и свежесобранные пакаджи.
Разворачиваем систему руками в очищенный сквидовый слайс.
|
В процессе распаковки будет некоторая ругань на невозможность развернуть некоторые файлы.
Это не страшно, всего-лишь вместо флагов, которые нам пока несущественны, появится несколько директорий под названием PaxHeader, которые можно удалить потом (или вообще не удалять).
Cтавим загрузчик от седмой версии, предварительно сбэкапив старый
|
Поскольку в четвёрке ядро тупо валялось в корне, а в загрузчик седьмой версии хочет его видеть в /boot/kernel, то, чтоб не править никаких конфигов, не менее тупо копируем ядро туда, куда ему надо.
|
Копируем новое ядро с модулями в наш промежуточный слайс
|
Перетаскиваем rc.conf и редактируем его
|
Выключаем в нём все ненужные демоны, оставляем sshd и firewall.
Контролируем название сетевого интрефейса, так как некоторые драйверы в четвёртой и седьмой версиях имеют разные названия.
Копируем ещё несколько необходимых для сетевого доступа вещей
|
А теперь ещё более необходимая для загрузки штука - fstab
|
Меняем следующие вещи
/dev/ad0s1g теперь у нас должен быть /
/dev/ad0s1a положим в /mnt/oldroot
А /usr и /var переименуем в /mnt/oldusr и /mnt/oldusr.
Создаём директории для этого всего
|
Перетаскиваем юзеров и группы
|
Там удаляем пустую по умолчанию рутовую запись и системных юзеров из старого файла.
Обращаем внимание на то, какой шелл установлен у того пользователя, каким мы собираемся туда логиниться.
В том смысле, что у нас имеется в наличии только sh, csh и tcsh, соответственно, если записан bash, то мы не попадём никуда при логине.
|
В результате всех этих действий мы получили новый загрузчик со старым ядром и рабочую седьмую версию
на другом разделе. То есть, для установленной системы мы изменили пока только загрузчик.
Reboot!
Если после перезагрузки всё нормально - мы наблюдаем всю ту же четвёрку, какая и была.
Продолжаем.
Сейчас попробуем загрузиться в седьмую версию. Для этого подсунем загрузчику новое ядро и попробуем перегрузиться.
|
Если железо у вас старое и вызывает подозрение, то acpi.ko можно не копировать.
Воспользуемся полезной фичей загрузчика
|
Запишем в этот файл указание включить эту фичу, указание на директорий с новым ядром и слайс, который должен быть рутом для него.
|
В процессе следующей загрузки системы, если загрузка не дойдёт до режима multiuser, а конкретнее - до скрипта /etc/rc, который удалит nextboot.conf, то можно нажать ресет, или дёрнуть питание, и следующая загрузка будет прежней. Разумеется, это потребует наличие кого-нибудь, кто этот ресет нажмёт.
Итак, reboot!
Если всё удачно - мы наблюдаем свежепоставленную седьмую версию на бывшем сквидовом разделе (прости, друг кальмар, мы тебе его вернём позже).
Старая система у нас смонтирована в /mnt/oldroot
Начинаем её методично удалять. После этого, конечно, обратного пути уже нет.
|
В процессе удаления некоторые файлы могут не удалиться по той же причине, что и ядро.
Помогаем себе командой chflags
Копируем новую систему
|
|
Тут тоже может потребоваться помощь chflags
После всех этих действий мы имеем ту же самую свежепоставленную систему, но уже на настоящем рутовом слайсе.
Пробуем делать reboot.
Если всё удачно и на сервер удалось залогиниться, продолжаем.
Теперь надо поставить систему по-человечески.
Набираем
|
Там выбираем Upgrade.
В качестве Media Type выбираем File System, указываем место, где лежат файлы с сидюка, а именно /var/1
В процессе установки программа сообщит две важные штуки.
Первое - что текущее ядро оно снесло в /boot/kernel.prev, поэтому по выходу из программы вернём его обратно
|
Второе - что она забэкапила /etc. Впрочем, она спросит, куда его класть. Выбираем сами.
Reboot!
Получаем свеженькую седьмую версию.
Далее - ставим заготовленные пакаджи, правим конфиги и пр. рутинные работы.
Не забываем вернуть сквиду его кэш.
В процессе тренировок на виртуальной машине был испробован способ загрузки седьмого ядра старым загрузчиком. Для этого в / надо положить файл boot.config следующего содержания
|
то есть, вместо ядра ему подсовывается новый загрузчик, что вполне успешно происходит.
размещено: 2009-04-21,
последнее обновление: 2009-04-21,
автор: Ivanko
coool, 2010-01-11 в 1:13:36
Красиво, спасибо:)
Gendalf, 2010-03-04 в 14:59:03
:) блин... сразу не увидел эту статью. Два дня бился с обновлением системы с 5,4 до 6,2 путем обновления мира по здешней статье. Ну ничего, еще есть три сервака которым предстоит обновление.
^-^ автору респект.
222, 2010-06-19 в 4:28:35
Бредятина
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [3 шт.]