Pull to refresh

Comments 37

Автор же написал это в первом абзаце.

Да нет, в oracle cloud можно спокойно добавить свой образ и использовать его. Для чего нужен столь странный процесс (кроме собственного развлечения) — непонятно.

UFO just landed and posted this here
Тоже самое как LFS скриптом собирать, никакого удовольствия.

Интереснее собрать gentoo в chroote по взрослому, потом на живой системе заменить корень на новую систему и ядро. С ораклом это довольно безопасно, у них терминал по типу kvm есть, хотя бы можно будет увидеть в чём косяк, если с ядром накосячить.
можно ссылку на этот терминал? ищу и никак не найду
Я думал о таком, но к сожалению у этой виртуалки слишком мало памяти, чтобы провернуть подобное если строить новый корень в tmpfs. Или вы предлагаете откусить кусок диска и строить новый корень там?
Ничего не надо откусывать и никакой tmpfs. Gentoo классическим путём устанавливается — распаковка stage3 в каталог, chroot, минимальная настройка — make.conf, профиль, локализация, fstab (можно подглядывать в «оригинальный»), пользователь. Дальше ядро, можно попробовать бинарное (в Gentoo теперь так можно), а можно и собрать по конфигу из оригинальной системы. А ещё лучше оригинальное оставить, никакого профита от своего ядра не будет, по идее в нём есть всё что нужно.

А теперь самое интересное, в оригинальной системе гасим все сервисы (если что-то успели запустить), кроме своей ssh-сессии, и начинаем потихоньку, по каталогам (удаляем каталог и копируем), заменять корень на новый из каталога с Gentoo, например используя mc. Последними меняем /bin, /sbin. И перезагружаемся.

Что может пойти не так? Только игры с ядром, если всё-таки собирали своё есть совсем ненулевая вероятность, что что-нибудь важное не включено.
Исходно скрипт to-gentoo именно это и делал: распаковывал stage3 в новый корень, монтировал туда /proc, /dev итд, выполнял там всю настройку и после этого копировал все в старый корень. Посмотрев на это мне показалось, что шаг с chroot лишний. Попробовал — и все сработало как надо. Можно попросить вас уточнить почему подход с chroot лучше подхода без него?
Мой первый комментарий:
Тоже самое как LFS скриптом собирать, никакого удовольствия.

Вариант с chroot даёт понимание как оно там «унутре» работает, что например можно запустить любое окружение независимо от базовой системы.
Так в данном случае нет разницы, так как мы уже подменили исходную систему.
но команда reboot не поможет
а не пробовали systemctl reboot?
На момент перезагрузки systemctl от исходной ubuntu уже не в путях, так что вот прямо так не получится. Сработает ли если дать абсолютный путь к systemctl честно говоря не знаю, не пробовал.
Подскажите как в oracle cloud создать вторую машину — копию первой?
docs.oracle.com/en-us/iaas/Content/Block/Tasks/cloningabootvolume.htm

как я понимаю, с этого клона можно создать новый инстанс (раздел «Next Steps»)
в отличие от бэкапа, который можно лишь подключить к другому инстансу в качестве несистемного диска
Да, все именно так и сработало.
Как раз пытался с бэкапа подключить и ничего не получалось.
Благодарствую.
Я не планирую использовать на этой машине systemd, так что маскирую его и udev:

Что бы что?
Маскировка sytemd нужна, чтобы он не был установлен как зависимость другого пакета.
Я имел ввиду, с какой целью надо отказываться от systemd?
О, это персональный выбор конкретно для этого проекта. Разумеется, можно не маскировать systemd если он предпочтителен для ваших задач.
Меня просто всегда интересовало, отчего люди отказываются от, как минимум, неплохих инструментов.
Вы затрагиваете очень холиварную тему. В интернете можно найти много материалов с критикой systemd. Причин не использовать его достаточно много.

Я откзался от systemd потому, что мне хотелось минималистическую систему, которая была бы проста для понимания. systemd тянет за собой слишком много зависимостей, так что использующую его систему сложно назвать минималистичной. Лично мне проще разобраться в скриптах openrc, чем в случае каких-то вопросов смотреть в исходники systemd.
Основа systemd, это сам демон systemd, journald и udevd. Все остальные части systemd, так или иначе, можно менять (например на большинстве десктопных дистрибутивов вместо штатных networkd и resolved используется NetworkManager), хотя как по мне, лучше просто почитать маны, тем более что по качеству, систематизации и подачи материала редко какие маны можно с ними сравнить. А головняка systemd снимает очень много.
Ну и? Порядка 30 зависимостей. При этом ничего монструозного.
Примерно так-же как в Arch / Manjaro.
image

Причём половину, как минимум, так и так придётся ставить, в не зависимости от системы инициализации.
Как я уже сказал — вопрос личных предпочтений. Я хочу использовать openrc.
rm /etc/resolv.conf && echo 'nameserver 8.8.8.8' > /etc/resolv.conf

Может придирка, но зачем rm /etc/resolv.conf?
Потому что ubuntu 20.04 использует systemd-resolved и /etc/resolv.conf это симлинка на /run/systemd/resolve/stub-resolv.conf После перезагрузки этот файл не будет найден, что создаст проблемы для dhcp скрипта.
Вопрос есть ли разница между
rm /etc/resolv.conf && echo 'nameserver 8.8.8.8' > /etc/resolv.conf
и
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
Во втором случае мы обновим файл /run/systemd/resolve/stub-resolv.conf, который после перезагрузки исчезнет. Но симлинка останется, будет указывать на не существующий файл и при получении адреса по dhcp конфигурация днс не будет обновлена и как следствие днс не будет работать.
А чего бы просто не запустить новое ядро с initrd с помощью kexec, таким образом отвалившись от ФС и взяв под контроль всю машину сразу? ;)
Sign up to leave a comment.

Articles