Реклама ООО Таймвэб
Реклама ООО Таймвэб
Реклама ООО Таймвэб

Установка произвольной ОС на сервер Timeweb Cloud

1 комментарий
Установка произвольной ОС на сервер Timeweb Cloud

В этой статье рассмотрим способы установки собственной операционной системы на сервер в Timeweb Cloud.

Зачем?

Причин для ручной установки операционной системы много, начиная с необходимости использования конкретной ОС и заканчивая кастомной разметкой дисков или специфичных файловых систем.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

Обзор

Можно выделить несколько вариантов установки. В конечном итоге все зависит от того, в каких форматах поставляется операционная система. Итого у нас есть:

  • Установка ОС из 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-образов, однако иногда это не так, и вам придется прибегнуть к другим опциям установки, которые предлагает поставщик операционной системы.

Нам потребуется:

Примечание: размечать или форматировать дополнительный диск не нужно, просто добавьте его, этого хватит.

Ниже будет показан пример установки системы 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/vdb.

3. Записываем ISO на этот диск:

dd if=guix-system-install-1.3.0.x86_64-linux.iso of=/dev/vdb

В итоге на /dev/vdb должна появиться файловая система. Проверяем, что это так, командой:

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/vdb: 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/vdb1  *          0 1247275 1247276  609M  0 Empty
/dev/vdb2       1247276 1253035    5760  2.8M ef EFI (FAT-12/16/32)

Как можно видеть, появились разделы /dev/vdb1 и /dev/vdb2.

То, какие и сколько разделов появятся на диске vdb, зависит от содержимого образа 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

Здесь мы говорим GRUB использовать обозначение hd0 для диска /dev/vda (тут установлена «базовая система») и hd1 для /dev/vdb.

Автоматически сгенерировать /boot/grub/device.map можно командой grub-mkdevicemap, однако, если такой команды нет, то потребуется вручную отредактировать файл.

Выполните, чтобы быстро отредактировать файл:

cp /boot/grub/device.map{,.bak}; printf '(hd0)\t/dev/vda\n(hd1)\t/dev/vdb\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='hd1'
    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='hd1'
    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

Примечание: Обратите внимание, что в Timeweb виртуалки работают за NAT и имеют только один сетевой интерфейс с серым IP. Два интерфейса можно получить только на выделенном сервере.

Установку ОС будем производить через 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

На этом пока все.

echo -e "Все про серверы, сети, хостинг и еще раз серверы" >/dev/pts/0

Комментарии

Гамлиэль Фишкин +106
21 марта в 21:01
Разве невозможно загрузить (upload) ISO-файл и по VNC загрузить пустую VPS с этого файла?
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте