Как стать автором
Обновить

Комментарии 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 зарутить).
Мне уже выше эту ссылку давали
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории