[Настройка Linux] Oracle cloud: превращаем ubuntu 20.04 в gentoo
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Oracle cloud предлагает некоторые ресурсы совершенно бесплатно. В частности на халяву можно получить 2 виртуальные машины. При создании машины у вас есть выбор из centos, Ubuntu или oracle linux. С учетом ограниченности ресурсов витруальной машины мне стало интересно нельзя ли использовать на этой машине gentoo?
В документации gentoo описано как можно на лету превратить любой линукс в gentoo. К сожалению инструкция последний раз обновлялась в 2014 и если ее применять в лоб скорее всего у вас возникнут проблемы. Однако на гитхабе можно найти скрипт, который по утверждению автора может в автоматическом режиме превратить любой линукс в gentoo. Скрипт давно не обновлялся, но после небольших изменений отработал как надо. Автор исходного скрипта решил не применять мой пулл реквест, но модифицировал свой скрипт базируясь на моих предложениях. Мой вариант скрипта можно найти тут.
Итак, давайте осуществим превращение ubuntu 20.04 в gentoo. Для этого создаем виртуальную машину используя образ ubuntu 20.04 minimal и логинимся на него как пользователь ubuntu. После этого переключаемся на юзера root:
sudo -i
Переходим в режим single user:
systemctl rescue
В нормальных условиях при этом отваливается сеть. В oracle cloud этого не происходит, однако завершается процесс systemd-resolved и как следствие перестает работать dns. Давайте это исправим:
rm /etc/resolv.conf && echo 'nameserver 8.8.8.8' >/etc/resolv.conf
Теперь можно запустить скрипт миграции и пойти выпить чаю, это займет какое-то время:
wget -qO- https://raw.githubusercontent.com/kt97679/to-gentoo/master/to-gentoo|bash
Когда выполнения скрипта закончится он предложит вам перезагрузиться. Прежде чем это делать надо убедиться, что вы не потеряете root доступ после перезагрузки. Для этого надо разрешить доступ root по ssh:
sed -i -e '/^PermitRootLogin.*/d' /etc/ssh/sshd_config && echo -e "\nPermitRootLogin without-password" >>/etc/ssh/sshd_config
И поправить файл /root/.ssh/authorized_keys:
sed -i -e 's/.*\(ssh-rsa.*\)/\1/' /root/.ssh/authorized_keys
Теперь можно перезагружаться, но команда reboot не поможет, так что давайте привлечем тяжелую артиллерию:
sync && echo 1 > /proc/sys/kernel/sysrq && echo b > /proc/sysrq-trigger
Машина уходит в перезагрузку и через пару минут вы сможете залогиниться на нее по ssh как root. Вы находитесь в gentoo окружении, но по прежнему используете старые ядро и initrd. Давайте это исправим.
Включим swap, без этого вам не хватит памяти скомпилировать новое ядро.
fallocate -l2G /var/tmp/swap && chmod 0600 /var/tmp/swap && mkswap /var/tmp/swap && swapon /var/tmp/swap
Я не планирую использовать на этой машине systemd, так что маскирую его и udev:
echo -e 'sys-apps/systemd\nsys-fs/udev'> /etc/portage/package.mask/systemd
После этого можно установить пакеты необходимые для компиляции ядра:
emerge gentoo-sources app-arch/lz4
Теперь можно перейти в директорию с исходниками ядра,
cd /usr/src/linux
сгенерировать конфиг нового ядра используя конфиг загруженного ядра,
yes ""|make oldconfig
и оставить в конфиге только те модули, которые используются в настоящий момент.
yes ""|make localmodconfig
Я планирую не использовать на этой машине initrd, так что все модули будут вкомпилированы в ядро:
yes ""|make localyesconfig
Запускаем компиляцию и установку ядра:
make && make INSTALL_MOD_STRIP=1 modules_install && make install
Наша машина весьма маломощна, так что этот процесс займет много времени. Когда компиляция закончится надо обновить конфигурацию загрузчика. Я добавил параметры ядра, которые применялись в исходной ubuntu.
cat >/boot/grub/grub.cfg <<EOF
set timeout=1
menuentry 'gentoo' {
linux $(ls -t /boot/vmlinuz-*|head -n1) root=/dev/sda1 console=tty1 console=ttyS0 nvme.shutdown_timeout=10 libiscsi.debug_libiscsi_eh=1
}
EOF
Имеет смысл разрешить логин на последовательной консоли если будут проблемы с сетью:
sed -i -e 's/^#\(.*ttyS0.*\)/\1/' /etc/inittab
Осталось немного. После перезагрузки сетевой интерфейс будет называться не ens3, а eth0. Надо удалить скрипт инициализации старого интерфейса и добавить инициализацию нового:
cd /etc/init.d && rm net.ens3 && ln -s net.lo net.eth0
На случай необходимости залогиниться через последовательную консоль надо задать пароль для пользователя root:
passwd
Все готово, можно перезагружаться.
Если после перезагрузки вам не удастся залогиниться на машину по ssh создайте консольное подключение и используйте его для отладки.
Теперь у вас есть базовая установка gentoo которую можно модифицировать под ваши нужды. В системе остались артефакты от исходной ubuntu. Они больше не нужны и их можно удалить. Скрипты с командами миграции можно найти тут.
===========
Источник:
habr.com
===========
Похожие новости:
- Релиз минималистичного дистрибутива Alpine Linux 3.12
- [Настройка Linux, Информационная безопасность, Сетевые технологии, Разработка под Linux] Быстрый туториал по установке и эксплуатации системы фильтрации IP-адресов CrowdSec v.1.0.x
- [Настройка Linux, Системное администрирование, *nix, Серверное администрирование, CRM-системы] Как установить SSL сертификат на Onlyoffice docker сборки
- [Настройка Linux, Системное администрирование, *nix] Systemd для продолжающих. Part 2 — Триггеры на различные события
- [Настройка Linux] Linux=Terminal?
- Компания CloudLinux выпустит альтернативу CentOS 8 под именем AlmaLinux
- [Настройка Linux, Информационная безопасность, Open source] Linux exploits
- [Настройка Linux, DevOps, Kubernetes] Kubernetes или с чего начать, чтобы понять что это и зачем он нужен
- [C, Разработка под Linux] Давайте напишем Linux терминал
- [Настройка Linux, Open source, Разработка под Linux] Разработчики Linux рассматривают отказ от поддержки старых процессоров
Теги для поиска: #_nastrojka_linux (Настройка Linux), #_linux, #_gentoo, #_nastrojka_linux (
Настройка Linux
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:30
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Oracle cloud предлагает некоторые ресурсы совершенно бесплатно. В частности на халяву можно получить 2 виртуальные машины. При создании машины у вас есть выбор из centos, Ubuntu или oracle linux. С учетом ограниченности ресурсов витруальной машины мне стало интересно нельзя ли использовать на этой машине gentoo? В документации gentoo описано как можно на лету превратить любой линукс в gentoo. К сожалению инструкция последний раз обновлялась в 2014 и если ее применять в лоб скорее всего у вас возникнут проблемы. Однако на гитхабе можно найти скрипт, который по утверждению автора может в автоматическом режиме превратить любой линукс в gentoo. Скрипт давно не обновлялся, но после небольших изменений отработал как надо. Автор исходного скрипта решил не применять мой пулл реквест, но модифицировал свой скрипт базируясь на моих предложениях. Мой вариант скрипта можно найти тут. Итак, давайте осуществим превращение ubuntu 20.04 в gentoo. Для этого создаем виртуальную машину используя образ ubuntu 20.04 minimal и логинимся на него как пользователь ubuntu. После этого переключаемся на юзера root: sudo -i
Переходим в режим single user: systemctl rescue
В нормальных условиях при этом отваливается сеть. В oracle cloud этого не происходит, однако завершается процесс systemd-resolved и как следствие перестает работать dns. Давайте это исправим: rm /etc/resolv.conf && echo 'nameserver 8.8.8.8' >/etc/resolv.conf
Теперь можно запустить скрипт миграции и пойти выпить чаю, это займет какое-то время: wget -qO- https://raw.githubusercontent.com/kt97679/to-gentoo/master/to-gentoo|bash
Когда выполнения скрипта закончится он предложит вам перезагрузиться. Прежде чем это делать надо убедиться, что вы не потеряете root доступ после перезагрузки. Для этого надо разрешить доступ root по ssh: sed -i -e '/^PermitRootLogin.*/d' /etc/ssh/sshd_config && echo -e "\nPermitRootLogin without-password" >>/etc/ssh/sshd_config
И поправить файл /root/.ssh/authorized_keys: sed -i -e 's/.*\(ssh-rsa.*\)/\1/' /root/.ssh/authorized_keys
Теперь можно перезагружаться, но команда reboot не поможет, так что давайте привлечем тяжелую артиллерию: sync && echo 1 > /proc/sys/kernel/sysrq && echo b > /proc/sysrq-trigger
Машина уходит в перезагрузку и через пару минут вы сможете залогиниться на нее по ssh как root. Вы находитесь в gentoo окружении, но по прежнему используете старые ядро и initrd. Давайте это исправим. Включим swap, без этого вам не хватит памяти скомпилировать новое ядро. fallocate -l2G /var/tmp/swap && chmod 0600 /var/tmp/swap && mkswap /var/tmp/swap && swapon /var/tmp/swap
Я не планирую использовать на этой машине systemd, так что маскирую его и udev: echo -e 'sys-apps/systemd\nsys-fs/udev'> /etc/portage/package.mask/systemd
После этого можно установить пакеты необходимые для компиляции ядра: emerge gentoo-sources app-arch/lz4
Теперь можно перейти в директорию с исходниками ядра, cd /usr/src/linux
сгенерировать конфиг нового ядра используя конфиг загруженного ядра, yes ""|make oldconfig
и оставить в конфиге только те модули, которые используются в настоящий момент. yes ""|make localmodconfig
Я планирую не использовать на этой машине initrd, так что все модули будут вкомпилированы в ядро: yes ""|make localyesconfig
Запускаем компиляцию и установку ядра: make && make INSTALL_MOD_STRIP=1 modules_install && make install
Наша машина весьма маломощна, так что этот процесс займет много времени. Когда компиляция закончится надо обновить конфигурацию загрузчика. Я добавил параметры ядра, которые применялись в исходной ubuntu. cat >/boot/grub/grub.cfg <<EOF
set timeout=1 menuentry 'gentoo' { linux $(ls -t /boot/vmlinuz-*|head -n1) root=/dev/sda1 console=tty1 console=ttyS0 nvme.shutdown_timeout=10 libiscsi.debug_libiscsi_eh=1 } EOF Имеет смысл разрешить логин на последовательной консоли если будут проблемы с сетью: sed -i -e 's/^#\(.*ttyS0.*\)/\1/' /etc/inittab
Осталось немного. После перезагрузки сетевой интерфейс будет называться не ens3, а eth0. Надо удалить скрипт инициализации старого интерфейса и добавить инициализацию нового: cd /etc/init.d && rm net.ens3 && ln -s net.lo net.eth0
На случай необходимости залогиниться через последовательную консоль надо задать пароль для пользователя root: passwd
Все готово, можно перезагружаться. Если после перезагрузки вам не удастся залогиниться на машину по ssh создайте консольное подключение и используйте его для отладки. Теперь у вас есть базовая установка gentoo которую можно модифицировать под ваши нужды. В системе остались артефакты от исходной ubuntu. Они больше не нужны и их можно удалить. Скрипты с командами миграции можно найти тут. =========== Источник: habr.com =========== Похожие новости:
Настройка Linux ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:30
Часовой пояс: UTC + 5