Вступление
Стоит понимать что услуги виртуальных приватных серверов довольно специфичны. И в целом устройства серверов очень узкое направление. Постоянно нужно укладываться в заданные лимиты. Пример установки будет произведён на виртуальной машине общего назначения со следующими характеристиками:
- 1 ядро cpu
- 500 мегабайт оперативной памяти
- 20 гигабайт дискового пространства
- поддержка 3D видео отсутсвует
- Виртуализация KVM
Настройки сети нужно скопировать из текущего дистрибутива поставляемого хостинг-провайдером.
Приступаем
Загружаем дистрибутив с официального сайта:
https://voidlinux.org/download/
Live image glibc. musl ни какого преимущества на VDS не даёт. Монтируем и загружаем ISO образ согласно панели управления провайдера.
Стоит помнить что DHCP в подобных услугах не включено. По этому разумнее всего будет скачать xfce Live image, чтобы первоначально настроить сеть через nm-applet. А не долго и мучительно через консоль.
Авторизуемся пароль root логин voidlinux
Сходу смотрим какие диски есть командой fdisk -l
У меня есть:
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Я не могу использовать сразу потому что не знаю что было на нём записано. По этому обнуляю первые 10 гигабайт чтобы точно уничтожить таблицу данных.
dd if=/dev/zero of=/dev/sda bs=1M count=10240 conv=sync
Иначе grub может не записаться на диск, это часто бывает если была установлена отличная от этой операционная система.
Запускаем инсталлятор командой sudo void-installer
Переходим в раздел Source
И выбираем Network Base system only, downloaded from official repository.
Он сразу предложит настроить сетевой интерфейс по которому будет скачивать пакеты из сети. У меня это enp0s3.
Далее идёт диалог автоопределение IP
Do you want to use DHCP for enp0s3?
Нужно отказаться, после чего появится окно настройки ip v4
IP адрес самого сервера и шлюз. ip адрес роутера с выходом в интернет. DNS адреса можно оставить по умолчания или ввести адреса Cloudflare 1.1.1.1 и 1.0.0.1
В случае удачной настройки Void выдаст сообщение
Network is working properly!
Далее идут пункт Hostname Set system hostname
Это имя сервера оно может быть любым.
Locale Set system locale выбор языка. Не нужно сразу выбирать национальный язык, ищите en_US.UTF-8 English (United States of America).
Национальный язык можно установить позднее. Иначе консоль будет показывать не читаемые символы.
Timezone это ваш часовой пояс.
Устанавливаем root пароль и переходим к UserAccount Set primary user name and password
Два раза вводим своё имя и пароль одинаково.
Особое внимание стоит обратить наличие группы wheel у пользователя. Она необходима для получения прав супер пользователя root в будущем.
BootLoader Set disk to install bootloader указываем с какого диска будет загружаться Void Linux у меня это /dev/sda size:20GB;sector_size:512
Далее он задаёт вопрос Use a graphical terminal for the boot loader?
Будете ли вы использовать графический загрузчик со сплеш скринами. Я отказываюсь, потому что это сервер. И я не успею его увидеть при загрузке.
Partition Partition disk(s) Разметка диска. Проще всего разметить выбрав cfdisk Easy to use. Так как обнулил диск, он спрашивают какую таблицу установить на диск. Select label type. Я выбираю dos. На производительность это не влияет. Создаём новый linux раздел Partition type: Linux (83). Не забываем помечать его как загрузочный Bootable.
Записываем и выходим.
Далее Filesystems Configure filesystems and mount points создание файловой системы и монтирование. Я выбираю ext4 Linux ext4 (journal). Потому что виртуальные машины часто мигрируют между площадками. Провайдер делает снимки и перенос. От этого не журналируемая файловая система может получить повреждения. В следующем сообщении просто слеш.
Подтверждаем создание файловых систем и нажимаем Done. Выбираем последний пункт Install Start installation with saved settings
Получаем сообщение WARNING: data on partitions will be COMPLETELY DESTROYED for new filesystems.
Соглашаемся, если сеть настроена верно запустится установка.
После перезагрузки авторизуемся как root.
В void linux система инициализации runit.
Это значит чтобы запустить демон. Его ссылка из /etc/sv должна быть создана в /var/service/
Запустим ssh:
ln -s /etc/sv/sshd /var/service/
sv restart sshd
После чего можно подключиться к серверу по ssh с рабочей станции.
Чтобы устранить несовместимость терминала рабочей станции. В файл .bashrc юзера, а потом и root добавим строку
export TERM=xterm-256color
Зaтем от пользователя root установим оболочку по умолчанию.
chsh -s /usr/bin/bash root
Фиксируем файл /etc/sudoers от изменений в будущем. Чтобы не потерять контроль над сервером.
chattr +i /etc/sudoers
Затем аннулируем пароль пользователю root, чтобы он не мог авторизоваться.
passwd -dl root
Дальнейшее получение прав супер пользователя будет путём авторизации пользователя состоящего в группе wheel. И вводом команды
sudo -i
Установим дополнительные репозитории. Выполним их поиск
xbps-query -Rs void-repo
На текущий момент у меня :
- [-] void-repo-debug-9_5 Void Linux drop-in file for the debug repository
- [-] void-repo-multilib-6_3 Void Linux drop-in file for the multilib repository
- [-] void-repo-multilib-nonfree-6_3 Void Linux drop-in file for the multilib/nonfree repository
- [-] void-repo-nonfree-9_5 Void Linux drop-in file for the nonfree repository
Я установлю не свободный
xbps-install -S void-repo-nonfree
И базовый набор утилит
xbps-install -S linux-firmware dkms htop mc nano ntp
После установки DKMS, динамической загрузки модулей ядра. Нужно сконфигурировать пакет ядра заново. Ищем установленное ядро из доступных
xbps-query --regex -Rs '^linux[0-9.]+-[0-9._]+'
У меня это на текущий момент [*] linux5.15-5.15.14_1
xbps-reconfigure --force linux5.15-5.15.14_1
Синхронизируем время, для этого в /etc/rc.conf раскомментруем строку
HARDWARECLOCK="UTC"
UTC если значение в bios записать не возможно. Например на виртуальной машине. Или если на разделе рядом установлена MS Windows.
HARDWARECLOCK="localtime"
Если значения в биос записать возможно.
Для синхронизации выполним
ntpd -gq && hwclock --systohc
Для локализации на национальный язык откроем /etc/default/libc-locales
И раскомметируем нужные локализации, у меня это ru_RU.UTF-8 UTF-8
xbps-reconfigure -f glibc-locales
echo "LANG=ru_RU.UTF-8" > /etc/locale.conf
В принципе базовую настройку можно считать оконченной.
Потребление ресурсов довольно скромно.