Comments 25
В пятницу утром знакомый обратился с вопросом «Как пересобрать мир в single-mode на удалённом сервере без KVM?»
Я бы задал сначала встречный вопрос: зачем делать это в single-моде?

Сам я лично уже давно забил на переход в sinlge-user при пересборке (точнее, установке) ядра+мира, ибо всё и так работает.
Я бы задал более важный вопрос: какого, простите, черта на удаленном сервере делают пересборку мира? Сборочный сервер хотя-бы в виде чрута отменили?
Получив новый сервер в ДЦ, где есть только предустановленные образы и смонтировать свой нельзя первым делом качаю исходники и пересобираю ядро и мир, ибо кто их знает чего они там наконфигурили, так что не вижу в этом ничего необычного.
Если ДЦ не предоставляет KVM, то можно загрузившись в предустановленный Линукс, записать в начало диска образ MfsBSD, возможно, чуть модифицированный для поддержки сети. И дальше через liveCD засетапить FreeBSD по своему вкусу.
Я бы задал сначала встречный вопрос: зачем делать это в single-моде?

Ну рекомендации хэндбука вероятнее всего связаны с тем, что проблемно заменить висящие в памяти файлы. Но тот же init по
install -s -o root -g wheel -m 555  -b -B.bak -fschg -S init /sbin/init
меняется без проблем, т.е. скорее всего установка в мультимоде пройдёт корректно.
Но если есть возможность сделать это в сингле, то я ей пользуюсь
Я уже и не вспомню сейчас, откуда эта рекомендация изначально там взялась. Возможно, это имеет смысл для того, чтобы изменения в сервисах (rc) вступили в силу без перезагрузки (при выходе из сингла по ^D). Но так как обычно вместе с миром пересобирают заодно и ядро, ребут в любом случае понадобится. Так что имхо в 99% случаев можно смело говорить make installworld в обычном (многопользовательском) режиме.
Так что имхо в 99% случаев можно смело говорить make installworld в обычном (многопользовательском) режиме.

Полностью поддерживаю и если не академический интерес, то врядли я бы стал задумываться об этом одном проценте. Но сам факт отсутствия изначально некоего "/etc/rc.singleuser" из коробки несколько удручает.
Нет, эта рекомендация для securelevel инсталляций (иначе просто не даст перезаписать файлы с schg)
Для пересборки мира и ядра не обязательно загружаться в single-mode, правда понадобятся две перезагрузки.
Простите, а зачем две перезагрузки? На старой системе (multi-user mode): make -jX buildworld buildkernel ; su ; make installkernel ; (возможно, понадобится mergemaster -p, но обычно нет) ; make installworld ; mergemaster -Fi ; reboot. И мы в новой системе (в single-user нигде не переходим, ребутимся один раз в самом конце).
Я не использую margemaster, у меня свой скрипт. Вторая перезагрузка нужна для подстраховки, что с новым ядром все хорошо.
Я не использую mergemaster, у меня свой скрипт.
Страшный человек! :-)
Вторая перезагрузка нужна для подстраховки, что с новым ядром все хорошо.
А можете привести пример ситуации/проблемы, которую бы не отловила первая перезагрузка?
Вы меня просите вспомнить, с какими приключениями было связано одновременное обновление мира и ядра?
За 10 лет использования своей методики помню о нескольких случаях.

1) После make installworld; mergemaster не всегда корректно отрабатывает /etc/rc.shutdown — в паре случаев система зависает и требуется нажимать кнопку reset на сервере.
Поэтому аналог margemaster я запускаю после первого ребута, предварительно почитав логи.

2) Были проблемы с новым zfsloader. После обновления приходилось грузится в рискрежим и возвращать старую копию.

3) Был конфликт при переходе маркировки дисков с ad в ada. device ahci конфликтовал с RAID контролером device siis. В итоге пришлось выгружать модуль ahci. Потом, через какое-то время, конфликт исчез.

4) В мае-июне 2014 после обновления мира-ядра перестал грузится системный пул ZFS. После длительного шаманства пришлось пересоздать пул и перенести файлы со старого пула.

Вы меня просите вспомнить, с какими приключениями было связано одновременное обновление мира и ядра?
Нет, я спрашивал, для чего нужна вторая перезагрузка, т.к. вы выше говорили, «что не обязательно загружаться в single-mode, правда понадобятся две перезагрузки.»
За 10 лет использования своей методики помню о нескольких случаях. [...]
Я понимаю, да, случается, к сожалению, что система с новыми ядром и/или миром не встает. Но это ведь отлавливается сразу же (после первой перезагрузки), нет?

Понятное дело, что если что-то пошло не так, дополнительного шаманства и перезагрузок может понадобиться даже больше одной, однако речь изначально шла про штатную (обычную) ситуацию.
В общем случае, с одной перезагрузкой легко получить не до конца выключенный сервер.
Так как у меня нет возможности перегрузить по питанию, то снижаю риски, и обновляюсь в два этапа.
<не холивара ради>
Никогда не понимал ради чего люди идут на использование source-based ОСей на продакшен системе.
Особенно имеющих такие специфические проблемы. Да и вообще, наличие компилятора на сервере это +еще немного шансов врагу собрать эксплоит.

Когда уже Фря перейдёт на бинарные пакеты…
</не холивара ради>
man freebsd-update
man pkg

От компилятора в системе не избавит, он входит в базовую поставку, но в целом бинарные обновления как базовой системы, так и дополнительного софта — пожалуйста. Всё зависит от вкусов. <irony>И от количества раз, которое freebsd-update убил систему при обновлении со сменой версии ОС.</irony>
Про базовую систему то всё понятно, я имел в виду именно дерево портов.

И от количества раз, которое freebsd-update убил систему при обновлении со сменой версии ОС

Вот почему так? У меня есть дебианы обновляемые еще с 5 версии, а то и раньше (сейчас 7) — всё обновлялось достаточно гладко.
Другие дистрибутивы линуксов аналогично.
я имел в виду именно дерево портов

pkg умеет в том числе и устанавливать/удалять бинарные сборки пакетов: www.freebsd.org/doc/ru/books/handbook/pkgng-intro.html

Ну, например после перехода на 14.10, если не ошибаюсь, при использовании проприенатрых драйверов nvidia мой тачпад стал время от времени фризить иксы, для восстановления работоспособности приходится переключаться в консоль и потом возвращаться назад в иксы. Так что странные эффекты при обновлении и у линуксов случаются, хоть тут речь и не о десктопной системе.
На лине у меня synclient зависал последнее время превращая тачпад в монстра.
pkgng это интересно, спасибо, буду знать. Но, как видно, его еще мало юзают, все заняты пересборкой мира :)

Да, я тут именно про серверные системы, с десктнопами всё бывает иначе.
Еще как юзают; многие от портов уже практически совсем отказались, даже те, кому нужны кастомные пакеты (для этого есть poudriere). Благо, pkg уже давно не «ng». ;-)

Все поддерживаемые системы, включая восьмёрку, на него перевели. И оно действительно работает и вполне пригодно для продакшна. Обо всех проблемах и пожеланиях сообщайте, пожалуйста, в трекер на гитхабе.
rm -rf /usr/ports

Проблема решается в одну комманду. И при установке их можно не ставить.

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

Соответственно poudriere для сборки пакетов. Остальное как хотите. Свобода (можно вообще все через nullfs зарутить).
Only those users with full accounts are able to leave comments. Log in, please.