В этой статье рассмотрим способы установки собственной операционной системы на сервер в Timeweb Cloud.
Зачем?
Причин для ручной установки операционной системы много, начиная с необходимости использования конкретной ОС и заканчивая кастомной разметкой дисков или специфичных файловых систем.
Обзор
Можно выделить несколько вариантов установки. В конечном итоге все зависит от того, в каких форматах поставляется операционная система. Итого у нас есть:
- Установка ОС из ISO-образа установочного диска.
- Установка из сырого (raw) образа диска, обычно файл имеет расширение .img.
- Установка через подключение образа ядра ОС.
Процесс может отличаться в деталях в зависимости от конкретной операционной системы. Все варианты в этой статье покрыть невозможно, разберем только наиболее популярные кейсы.
Здесь будут рассмотрена установка операционных систем на базе Linux и BSD, однако, если очень хочется, вы можете попробовать установить более экзотическую ОС.
Подход
Нам прежде всего надо знать, что:
- Виртуализация аппаратная – QEMU/KVM.
- Все серверы работают с Legacy BIOS, поэтому не пытайтесь ставить UEFI.
- Со стороны клиента нет доступа к BIOS, мы ограничены функционалом панели управления.
Задача сводится к тому, чтобы запустить установщик ОС. Для этого нам, грубо говоря, надо эмулировать загрузку с LiveCD.
Поскольку у нас нет способа инициализировать «пустой» сервер, то первоначально потребуется установить сервер с любой доступной к установке операционной системой. В этой статье в качестве примера «базовой системы» будет использован Debian 11.
Запуск установщика будем делать через GRUB, он есть в большинстве ОС. На установочных дисках обычно содержится собственный загрузчик для инициализации с диска программы установки. Мы воспользуемся функцией GRUB chainloader, чтобы запустить этот загрузчик из «базовой системы».
Постнастройка
В Timeweb для многих операций с сервером через панель управления используется qemu-guest-aget. После установки операционной системы желательно установить и при необходимости сконфигурировать его. Настройка qemu-ga выходит за рамки данной статьи. Обычно это несложно, и хватает настроек по умолчанию.
Установка ОС из ISO с использованием дополнительного диска
Этим способом можно установить большинство операционных систем из ISO-образов, однако иногда это не так, и вам придется прибегнуть к другим опциям установки, которые предлагает поставщик операционной системы.
Нам потребуется:
- Сервер с установленной операционной системой. В нашем случае – Debian 11.
- Прямая ссылка на образ ISO.
- Подключенный дополнительный диск.
Ниже будет показан пример установки системы GNU Guix System.
Запись ISO
1. Скачиваем ISO на сервер:
wget https://ftp.gnu.org/gnu/guix/guix-system-install-1.3.0.x86_64-linux.iso
2. Добавляем в ПУ дополнительный диск. Он будет подключен к системе как устройство /dev/vdc.
3. Записываем ISO на этот диск:
dd if=guix-system-install-1.3.0.x86_64-linux.iso of=/dev/vdc
В итоге на /dev/vdc должна появиться файловая система. Проверяем, что это так, командой:
fdisk -l
Disk /dev/vda: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x5569f8be Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 20971519 20969472 10G 83 Linux Disk /dev/vdc: 10 GiB, 10737418240 bytes, 20971520 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x00000000 Device Boot Start End Sectors Size Id Type /dev/vdc1 * 0 1247275 1247276 609M 0 Empty /dev/vdc2 1247276 1253035 5760 2.8M ef EFI (FAT-12/16/32)
Как можно видеть, появились разделы /dev/vdc1 и /dev/vdc2.
То, какие и сколько разделов появятся на диске vdc, зависит от содержимого образа ISO.
Подготовка к настройке меню GRUB
Мы будем добавлять в меню GRUB дополнительный пункт, который позволит нам запустить установщик ОС.
Чтобы при загрузке системы увидеть меню GRUB и успеть выбрать нужный пункт, зададим ожидание 60 секунд. Выполните следующую команду:
sed -e 's%GRUB_TIMEOUT=.*%GRUB_TIMEOUT=60%' -i.bak /etc/default/grub
Также нам нужно отредактировать конфигурационный файл /boot/grub/device.map. Относительно параметров в этом файле, GRUB будет определять диски. Нужно привести содержимое файла к следующему виду:
(hd0) /dev/vda (hd1) /dev/vdb (hd2) /dev/vdc
Здесь мы говорим GRUB использовать обозначение hd0 для диска /dev/vda (тут установлена «базовая система») и hd2 для /dev/vdc.
Автоматически сгенерировать /boot/grub/device.map можно командой grub-mkdevicemap, однако, если такой команды нет, то потребуется вручную отредактировать файл.
Выполните, чтобы быстро отредактировать файл:
cp /boot/grub/device.map{,.bak}; printf '(hd0)\t/dev/vda\n(hd2)\t/dev/vdc\n' > /boot/grub/device.map
Применим изменения:
grub-mkconfig -o /boot/grub/grub.cfg
Теперь можем приступать к конфигурации загрузчика. Ниже описано два варианта, предпочтителен chainloader.
Загрузка через chainloader
Команда GRUB chainloader позволяет запустить другой загрузчик. Можно по цепочке загрузить GRUB -> GRUB или другой загрузчик ОС.
Приведите файл /etc/grub.d/40_custom к следующему виду:
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Guix ISO" { set root='hd2' chainloader +1 }
После запустите команду для применения настроек:
grub-mkconfig -o /boot/grub/grub.cfg
Пункт меню GRUB будет называться Guix ISO.
Загрузка через configure
Этот способ сложнее и годится только для тех случаев, когда на установочном диске также установлен GRUB и по какой-либо причине chainloader не работает.
Также вам придется найти файл конфигурации GRUB на диске, чтобы указать верный путь до него. Поискать конфиг можно, погуляв по файловой системе в ISO, примонтируйте файл и посмотрите, что внутри:
mount guix-system-install-1.3.0.x86_64-linux.iso /mnt
Команда configure загружает конфигурационный файл с диска. При этом в отличие от chainloader, GRUB не запускает другой загрузчик, а применяет конфигурацию «к себе».
Вот фрагмент кода, который нужно добавить в /etc/grub.d/40_custom:
menuentry "Guix ISO" { set root='hd2' configure /boot/grub/grub.cfg }
Загрузка и установка системы
После выполнения команды grub-mkconfig можно произвести перезагрузку сервера. Ее следует выполнить через панель управления, чтобы иметь быстрый доступ к веб-консоли VNC.
Вся дальнейшая установка будет проходить через веб-консоль.
1. Выберите в меню GRUB пункт Guix ISO.
2. Вы попадете в установочную программу. Выполните установку.
В процессе:
- Установщик предложит вам определить диск для установки ОС, выбирайте диск /dev/vda.
- Cогласитесь на установку SSH-сервера и DHCP-клиента. Последнее важно, поскольку иначе на сервере не будет работать сеть.
3. Когда программа установки сообщит о том, что все готово, выполните перезагрузку сервера.
4. Проверьте, что вы можете авторизоваться в свежеустановленной системе, что сеть и демон SSH работают. Если все хорошо, то вы можете удалить дополнительный диск.
На этом установка завершена, однако вам может потребоваться установка пакета qemu-guest-agent.
Установка OpenBSD через образ ядра
Здесь не нужно подключать к серверу дополнительный диск. Вместо этого установка ОС будет производиться через загрузку из GRUB образа ядра BSD.
Потребуется:
- Сервер с установленной операционной системой.
- Внимательность.
Здесь стоит внимательно читать гайд по установке: https://ftp.openbsd.org/pub/OpenBSD/7.1/amd64/INSTALL.amd64
Итак:
1. Подключаемся к существующему серверу и скачиваем образ ядра BSD:
wget https://mirror.yandex.ru/pub/OpenBSD/7.1/amd64/bsd.rd -O /boot/bsd.rd
Дальнейшие действия выполняются через VNC-консоль в ПУА.
2. Нажать в ПУА кнопку перезагрузки сервера. При этом в консоли надо успеть воспользоваться функцией вставки текста и вставить букву С (латинская буква С).
3. Откроется консоль загрузчика GRUB. В нее надо последовательно ввести и выполнить следующие команды:
set root=(hd0,msdos1) kopenbsd /boot/bsd.rd boot
4. Начнется загрузка ядра и установщика OpenBSD. Далее надо внимательно читать подсказки на экране и вводить ответы. Следуйте инструкции.
На большинство вопросов установщика можно отвечать простым нажатием Enter.
- На вопросе настройке сети (the IPv4 settings) следует ответить dhcp.
- Согласиться на установку sshd (по умолчанию yes).
- Создание обычного пользователя можно пропустить. В таком случае необходимо ответить yes на вопрос о доступе root по ssh.
- По завершении согласиться на reboot.
Первый запуск сервера будет долгим из-за применения патчей (будет висеть текст в консоли: Checking for available binary patches).
На этом все. Дальнейшую настройку системы можно выполнить по SSH.
Установка Mikrotik Cloud Hosted Router
Установку ОС будем производить через raw-образ диска. Получить ссылку на образ можно на странице https://mikrotik.com/download. Ищите Raw disk image.
Потребуется:
- Сервер с установленной операционной системой.
- Смирение.
Итак:
1. Загрузите сервер в режиме восстановления. Это нужно для того, чтобы полностью остановить запись на диск /dev/vda. В качестве диска восстановления (LiveCD) используется SystemRescue.
Дальнейшая работа будет выполняться через веб-консоль.
2. Скачаем образ Mikrotik CHR:
wget https://download.mikrotik.com/routeros/6.49.6/chr-6.49.6.img.zip
3. Нужно проверить контрольную сумму, чтобы убедиться, что образ не поврежден. Найдите на странице https://mikrotik.com/download строку Checksum и отыщите там сумму для выбранной версии ОС и формата файла. В моем случае это строки:
MD5 chr-6.49.6.img.zip: 484ba7de7f71b8672ca76ceaf46b0d27 SHA256 chr-6.49.6.img.zip: dc0a70dc806ef068c54b5541c9668270b058dda11307d958d059a7c292320003
Проверим sha256, хэш-сумма должна совпасть:
sha256sum chr-6.49.6.img.zip
4. Распакуем образ и запишем его на диск /dev/vda:
unzip chr-6.49.6.img.zip dd if=/tmp/chr-6.49.6.img of=/dev/vda
5. Возвращаем серверу стандартный режим загрузки. При первом старте ОС автоматически выполнит ресайз файловой системы.
Готово. Таким способом можно попробовать установить многие другие ОС, которые поставляются в виде raw-дисков. Обратите внимание, что места на LiveCD может не хватить. Можно загрузить образ прямо в оперативную память. Потребуется инициализировать RAM-диск:
mount -t tmpfs tmpfs /tmp
На этом пока все.
Комментарии