Поиск по сайту:

Установка Alpine или другого Linux на VPS или Bare Metal Server


Поставщики VPS и облачных серверов предлагают узкий выбор дистрибутивов Linux. Вот как я установил выбранный мной дистрибутив на свой сервер OVH.

Когда вы получаете VPS или выделенный (голый) сервер, хостинг-провайдер позволяет вам выбрать операционную систему, которую вы хотите установить.

Обычно вы можете выбрать из списка около десяти систем. Что, если ваша любимая система Linux не включена в этот список?

Возможно, существует несколько способов установить конкретный дистрибутив Linux по вашему выбору на удаленный сервер.

Я хотел использовать сверхлегкий Alpine Linux. Он доступен в качестве опции для Linode, но не для OVH. В основном я использую OVH, поэтому использовал этот метод, чтобы установить Alpine на свой сервер.

Это может подойти и для других дистрибутивов других провайдеров серверов:

  1. Установите «ОС по умолчанию», ту, которую предлагает ваш провайдер серверов.

  2. Используйте эту систему для загрузки образа нужной ОС; это изображение должно быть пригодным для использования в качестве живой среды.

  3. Перезагрузитесь в эту живую среду.

  4. Установите новую ОС (рядом с ОС по умолчанию).

Шаги 3 и 4 аналогичны установке ОС на ноутбук или настольный компьютер через «живой носитель», за исключением того, что физический носитель заменяется файлом ISO.

Ключевые инструменты, которые будут использоваться в этом уроке:

  • IPMI/KVM через IP или любой аналогичный инструмент.

  • GNU GRUB, известный загрузчик.

Первый должен поддерживаться провайдером (в противном случае не применять следующие инструкции!) и позволяет отслеживать и контролировать процесс загрузки машины.

Последняя обычно уже установлена вместе с ОС по умолчанию, но ее можно (пере) установить и настроить в соответствии с вашими потребностями.

В любом случае, пожалуйста, внимательно прочитайте это руководство и убедитесь, что вы его поняли, прежде чем что-либо делать. Поэкспериментируйте на непроизводственном сервере, для которого вы можете в любой момент выполнить перезагрузку и переустановку через веб-сервис провайдера. Этот метод работает не для всех систем; Я пробовал использовать Void Linux, но мне это не удалось, вероятно, из-за моего относительного отсутствия знаний о схемах запуска Linux. Я делюсь этим руководством, потому что, по моему опыту, при такой установке Alpine Linux работает просто великолепно.

Шаг 1. Установите ОС по умолчанию на новый сервер.

Обычно выбирают Debian GNU/Linux, но что бы вы ни выбрали, лучше оставить его после установки Alpine (мы будем использовать двойную загрузку).

Таким образом, Debian станет вашей настроенной «спасательной» системой, доступ к которой будет быстрее, чем к обычному режиму восстановления, предлагаемому провайдером. Поскольку такой способ установки ОС выглядит несколько «экспериментальным», возможно, вам понадобится альтернативная система.

В оставшейся части статьи предполагается, что основной ОС по умолчанию является Debian.

Как только Debian будет готов и запущен, подключитесь к нему по SSH. Вам не нужно подключаться к учетной записи root, но вам может понадобиться sudo, поскольку вы загрузите новую ОС и, возможно, захотите сохранить ее в месте, принадлежащем root (например, /boot/ или даже /).

И если вам нужно выполнить шаг 3.1, вам снова потребуются права root.

Убедитесь, что GRUB установлен. Если существует такой каталог, как /boot/grub/, можете быть уверены, что все в порядке!

Шаг 2: Получите желаемую ОС (в нашем случае Alpine Linux)

Давайте получим последнюю версию Alpine! Посетите страницу загрузки, чтобы скопировать ссылку на нужный аромат. Обычно вы выбираете образ x86_64. Для VPS, который напоминает сервер без ОС, но на самом деле является виртуальной машиной (как указано в букве «V»), вам, вероятно, понадобится ISO-файл «virtual».

В примерах в этой статье показан виртуальный вариант, но, конечно, замените его тем, который соответствует вашим потребностям.

Загрузите Alpine Linux, используя ссылку, которую вы скопировали ранее.

cd /
sudo wget https://dl-cdn.alpinelinux.org/alpine/v3.14/releases/x86_64/alpine-virt-3.14.2-x86_64.iso

Проверьте, в порядке ли файл или поврежден: вы можете запустить sha256sum...

sha256sum alpine-virt-3.14.2-x86_64.iso
fcba6ecc8419da955d326a12b2f6d9d8f885a420a1112e0cf1910914c4c814a7  alpine-virt-3.14.2-x86_64.iso

…и сравните хеш-значение с тем, которое вы можете найти на странице загрузки. Если две строки совпадают, все в порядке.

Шаг 3. Загрузите файл образа

Настоящая игра начинается прямо сейчас!

3.1: Посмотрите на структуру ISO

Во-первых, вам нужно найти расположение двух важных файлов в только что загруженном ISO-файле: kernel и initramfs (или initrd). .

Одно из решений — смонтировать ISO и проверить его:

$ sudo mount -o loop alpine-virt-3.14.2-x86_64.iso /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
$ ls -l /mnt/
total 6
dr-xr-xr-x 1 root root 2048 August  27 11:11 apks
dr-xr-xr-x 1 root root 2048 August  27 11:11 boot
dr-xr-xr-x 1 root root 2048 August  27 11:11 efi
$ ls -l /mnt/boot/
total 28554
-r--r--r-- 1 root root   123781 August  27 11:11 config-virt
dr-xr-xr-x 1 root root     2048 August  27 11:11 dtbs-virt
dr-xr-xr-x 1 root root     2048 August  27 11:11 grub
-r--r--r-- 1 root root  6022546 August  27 11:11 initramfs-virt
-r--r--r-- 1 root root 13258752 August  27 11:11 modloop-virt
dr-xr-xr-x 1 root root     2048 August  27 11:11 syslinux
-r--r--r-- 1 root root  3632749 August  27 11:11 System.map-virt
-r--r--r-- 1 root root  6194624 August  27 11:11 vmlinuz-virt

Мы их нашли: boot/vmlinuz-virt и boot/initramfs-virt. Теперь вы можете sudo umount /mnt.

Неочевидно, что vmlinuz — это ядро Linux. Если вы не видели его раньше, знайте, что это обычное имя файла ядра, где буква «z» (где вы ожидаете увидеть «x») означает, что файл сжат.

3.2: Перезагрузка

Закройте сеанс(ы) SSH. Пришло время использовать KVM (или аналогичную технологию), ее обычно можно найти в веб-интерфейсе:

Это приведет вас к чему-то вроде консоли, показанной на скриншоте ниже. Это тот экран, который был бы у вас, если бы вы находились перед монитором, физически подключенным к серверу.

Здесь есть кнопка «Отправить CtrlAltDel», достаточно просто нажать на нее. Но вы также можете войти в систему и перезагрузить sudo.

После того, как вы используете KVM для входа в учетную запись на сервере, я бы рекомендовал сменить пароль как можно скорее, используя обычное SSH-соединение. Кто знает, через сколько уровней программного обеспечения проходит ваш незашифрованный пароль, от веб-браузера до удаленной ОС.

3.3: Используйте файл ISO

После перезагрузки машина отображает меню GRUB. Быстро щелкните консоль, чтобы убедиться, что этот элемент веб-страницы находится в фокусе, затем нажмите клавишу со стрелкой, чтобы остановить обратный отсчет GRUB.

Если вы хотите остановить выполнение этого руководства и снова запустить Debian, выберите первый вариант. Чтобы продолжить работу с этим руководством, нажмите c, чтобы получить доступ к приглашению командной строки GRUB.

Возможно, вам придется выбрать раздел, в котором вы сохранили загруженный образ ОС (файл ISO). Когда это возможно, GRUB монтирует первый раздел первого диска и неявно выбирает его в качестве корневого устройства.

Если ваш раздел Debian является первым разделом и вы сохранили на нем ISO-файл (как мы это делали на шаге 2), вам нечего делать. В противном случае вам придется переопределить корневое устройство с помощью такой команды, как set root=(hd0,2). Пожалуйста, ознакомьтесь с руководством по GRUB для получения дальнейших объяснений.

Сообщите GRUB смонтировать файл ISO как виртуальное блочное устройство:

grub> loopback l /alpine-virt-3.14.2-x86_64.iso

Здесь я выбрал простой идентификатор l, но вы можете использовать все, что захотите, что не конфликтует ни с чем другим (имя команды GRUB или имя файла). Обратите внимание, что на шаге 2 я решил поместить файл в корень файловой системы, поэтому пишу /alpine….

Затем определите объекты linux (ядро) и initrd, используя результаты, полученные на шаге 3.1:

grub> linux (l)/boot/vmlinuz-virt
grub> initrd (l)/boot/initramfs-virt

Круглые скобки вокруг объекта обратной связи являются обязательными. (l)/ выступает в качестве корневого каталога внутренней файловой системы файла ISO.

Запустите определенную систему, то есть среду initrd, основанную на ядре linux. Все это представляет собой временную мини-систему init для загрузки и запуска «настоящей» работающей системы.

grub> boot
С этого момента может появиться настоящий кошмар. В зависимости от целевой ОС вы можете столкнуться с несколькими проблемами. Помните, что вы всегда можете перезагрузить свой сервер (по умолчанию используется Debian); на данный момент данные на диске(ах) по-прежнему не изменены (за исключением наличия загруженного вами образа). Описанные шаги будут специфичны для Alpine, но они дадут вам представление о том, с чем вы, вероятно, столкнетесь при установке других систем Linux.

Через несколько секунд после ввода команды boot система инициализации останавливается с сообщением об ошибке, например «Монтирование загрузочного носителя: сбой».

Это связано с тем, что для этого процесса необходимо загрузить живую среду Alpine, но образ ISO больше не монтируется (вы вышли из GRUB, чтобы войти в другую систему). Вам предоставляется аварийная оболочка  с помощью которой вы можете снова смонтировать образ:

Способ А. Если вы не планируете изменять размер или перемещать раздел, содержащий файл ISO.

Если вы уже изменили размер раздела и освободили место для Alpine, вы можете перемонтировать работающую систему самым простым способом:

$ mount /dev/sda1 /media/sda1
$ mount -o loop -t iso9660 /media/sda1/alpine-virt-3.14.2-x86_64.iso /media/cdrom

На шаге 4 вы не сможете изменить размер sda1 (по крайней мере, это сложно).
Конечно, замените sda1 на соответствующее имя устройства, если Файл ISO не хранится в первом разделе первого диска. Каталоги точек монтирования /media/sdXN уже созданы в соответствии с обнаруженными разделами.

Вы должны добавить параметр -t iso9660 и указать /media/cdrom в качестве целевого каталога, иначе это не будет работать.

Способ Б. Если вы хотите изменить размер или переместить раздел, содержащий файл ISO.

Если раздел Debian занимает все доступное дисковое пространство или по какой-либо другой причине вам необходимо изменить раздел, содержащий файл ISO, тот факт, что файл ISO сам содержит живую систему, не позволит вам размонтировать файловую систему раздела.

Одно из решений — скопировать файл ISO в ОЗУ, а затем повторно смонтировать эту копию:

На вашем компьютере должно быть достаточно оперативной памяти для обработки как файла ISO, так и работающей системы. Alpine имеет очень маленький размер, поэтому 1G вполне достаточно. Для более крупных систем 4G памяти вполне подойдет.
# mount /dev/sda1 /media/sda1
# cp /media/sda1/alpine-virt-3.14.2-x86_64.iso /dev/shm
# umount /dev/sda1
# mount -o loop -t iso9660 /dev/shm/alpine-virt-3.14.2-x86_64.iso /media/cdrom

Применяются те же замечания, что и для метода А (о деталях командной строки). Здесь мы временно монтируем sda1, просто чтобы получить копию файла ISO.

Независимо от того, использовали ли вы метод A или B, ввод команды exit (или нажатие ^D) продолжит процесс загрузки работающей системы Alpine.

По крошечным буквам на скриншоте выше вы можете догадаться, что живая система Alpine работает правильно и ожидает входа в систему, хотя произошла незначительная ошибка.

Шаг 4. Установите новую ОС (Alpine Linux)

Вы почти там.

4.1: Используйте установщик

Точный процесс установки операционной системы выходит за рамки данного руководства. Используйте установщик и другие инструменты, предлагаемые рабочей средой, для управления разделами (вам может понадобиться LVM) и установки ОС.

Для Alpine войдите в систему как root (по умолчанию без пароля) и попробуйте команды setup-*. Вы можете apk add parted e2fsprogs e2fsprogs-extra, чтобы получить полезные инструменты для управления файловыми системами и разделами. Дополнительная информация на Alpine Wiki.

В любом случае:

  • Помните, что вы все еще используете KVM; выберите временные пароли для root и обычных пользователей.

  • Убедитесь, что сеть правильно настроена не только для работающей системы, но и для системы, устанавливаемой на диск. Кроме того, вместе с ОС должен быть установлен SSH-сервер.

  • Если вы не знаете, что делаете, не переустанавливайте GRUB и не меняйте его конфигурацию. Проще изменить конфигурацию GRUB из альтернативной «спасательной» установки Debian.

Допустим, вы установили Alpine на sda2. Теперь вы можете указать работающей системе перезагрузить сервер или выйти из системы и нажать кнопку Отправить CtrlAltDel (если есть).

4.2: Добавьте запись GRUB

Загрузите Дебиан. Вы можете оставить окно KVM открытым, но вам следует войти в систему, используя обычное SSH-соединение из вашей локальной оболочки. Вам понадобится корневой доступ.
Теперь нужно сообщить GRUB, что в другом разделе доступна другая операционная система, поэтому мы добавим запись в меню GRUB.

Сначала смонтируйте /dev/sda2 /mnt и проверьте /mnt/boot. Проверьте имя ядра и initrd для новой ОС, которую вы только что установили. Они должны быть такими же, как те, которые вы обнаружили при проверке загрузочной папки файла ISO на шаге 3.1, но это не обязательно. umount /mnt.
Запустите blkid и запишите UUID, связанный с /dev/sda2.

Отредактируйте /etc/grub.d/40_custom. Добавьте раздел «Alpine Linux» с только что полученной информацией (замените {UUID на конкретную строку UUID):

#!/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 "Alpine Linux" {
    search --no-floppy --fs-uuid --set=root {UUID}
    linux /boot/vmlinuz-virt root=UUID={UUID} modules=sd-mod,ext4
    initrd /boot/initramfs-virt
}

Это минимальный пункт меню, и вы, вероятно, добавите другие параметры и модули в строку linux по мере уточнения установки. Вам понадобится модуль sd-mod, чтобы ядро могло читать ваши диски, и модуль ext4, если вы установили Alpine в файловую систему Ext4.

"Alpine Linux" — это заголовок, который появится в меню GRUB. Вы можете изменить его на что угодно.

Кроме того, возможно, вы захотите, чтобы Alpine был выбором по умолчанию при перезагрузке сервера. Отредактируйте /etc/default/grub и измените строку GRUB_DEFAULT. По умолчанию для этого параметра установлено значение 0 и он относится к первой записи. В нашем примере Alpine — третья запись, поэтому установите для нее значение 2.

Чтобы принять во внимание изменения в этих файлах, вам необходимо заново создать /boot/grub/grub.cfg. В Debian для этого есть простой инструмент: просто запустите update-grub. Проверьте свои изменения, перезагрузив сервер и наблюдая за происходящим через KVM.

Запустите Alpine (если вы сделали это выбором записи по умолчанию, он должен запускаться автоматически) и посмотрите, загружается ли он и ведет себя правильно или требует изменений в записи GRUB. Если вы хотите протестировать изменения в записи GRUB, не делая их постоянными, нажмите e вместо Enter, как только в меню загрузки будет выбрана запись Alpine:

4.3: Заключительные соображения

Как только вновь установленная ОС заработает правильно, вы сможете подключиться к ней по SSH и изменить пароли, которые вы ранее определили через KVM. Закройте инструмент KVM в веб-браузере. Используйте KVM только для перезагрузки Debian или мониторинга процесса запуска Alpine.

Теперь вы можете устанавливать программы и настраивать свою систему. Удачи!

Информация об авторе: Поль Депланк на 100% самоучка в вопросах, связанных с компьютерами. Имея за плечами 8-летний опыт разработки PHP, Пол прекрасно разбирается в самостоятельном хостинге.

Статьи по данной тематике: