Установка Alpine или другого Linux на VPS или Bare Metal Server
Поставщики VPS и облачных серверов предлагают узкий выбор дистрибутивов Linux. Вот как я установил выбранный мной дистрибутив на свой сервер OVH.
Когда вы получаете VPS или выделенный (голый) сервер, хостинг-провайдер позволяет вам выбрать операционную систему, которую вы хотите установить.
Обычно вы можете выбрать из списка около десяти систем. Что, если ваша любимая система Linux не включена в этот список?
Возможно, существует несколько способов установить конкретный дистрибутив Linux по вашему выбору на удаленный сервер.
Я хотел использовать сверхлегкий Alpine Linux. Он доступен в качестве опции для Linode, но не для OVH. В основном я использую OVH, поэтому использовал этот метод, чтобы установить Alpine на свой сервер.
Это может подойти и для других дистрибутивов других провайдеров серверов:
Установите «ОС по умолчанию», ту, которую предлагает ваш провайдер серверов.
Используйте эту систему для загрузки образа нужной ОС; это изображение должно быть пригодным для использования в качестве живой среды.
Перезагрузитесь в эту живую среду.
Установите новую ОС (рядом с ОС по умолчанию).
Шаги 3 и 4 аналогичны установке ОС на ноутбук или настольный компьютер через «живой носитель», за исключением того, что физический носитель заменяется файлом ISO.
Ключевые инструменты, которые будут использоваться в этом уроке:
IPMI/KVM через IP или любой аналогичный инструмент.
GNU GRUB, известный загрузчик.
Первый должен поддерживаться провайдером (в противном случае не применять следующие инструкции!) и позволяет отслеживать и контролировать процесс загрузки машины.
Последняя обычно уже установлена вместе с ОС по умолчанию, но ее можно (пере) установить и настроить в соответствии с вашими потребностями.
Шаг 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
.
3.2: Перезагрузка
Закройте сеанс(ы) SSH. Пришло время использовать KVM (или аналогичную технологию), ее обычно можно найти в веб-интерфейсе:
Это приведет вас к чему-то вроде консоли, показанной на скриншоте ниже. Это тот экран, который был бы у вас, если бы вы находились перед монитором, физически подключенным к серверу.
Здесь есть кнопка «Отправить CtrlAltDel», достаточно просто нажать на нее. Но вы также можете войти в систему и перезагрузить sudo
.
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
Через несколько секунд после ввода команды 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 в ОЗУ, а затем повторно смонтировать эту копию:
# 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, Пол прекрасно разбирается в самостоятельном хостинге.