Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) Void Linux с библиотекой glibc (условия таковы: установка на чистый накопитель с использованием UEFI и файловой системы BTRFS) с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности.
Я не буду рассматривать скрипт для автоматической установки, это не имеет ни какого смысла.
Приступим, грузимся с предварительно подготовленной флешки(тут уже не ваше усмотрение я обычно использую ventoy), для проверки верно ли загрузились, надо воспользоваться командой:
ls /sys/firmware/efi/efivars
выхлоп данной команды на скрине ниже. Определимся с диском на который будем устанавливать Void Linux, используем следующую команду, я буду часто использовать ее для наглядности.
lsblk
в данном случае у меня один накопитель, так как это виртуальная машина, перейдем к подготовке накопителя для установки с помощью следующей команды:
cfdisk /dev/vda
выбираем структуру разделов GPT, далее создадим три раздела
- /dev/vda1 - boot-раздел для установки загрузчика. Достаточно 128Мб
- /dev/vda2 - root-раздел для установки самой системы, займет большую часть накопителя
- /dev/vda3 - swap-раздел, в данном случае он чисто для формальности. Опять же на реальном железе стоит продумать размер swap исходя из объемов оперативной памяти.
lsblk
переходим к форматированию разделов boot в fat32, root в btrfs
mkfs.vfat -F32 /dev/vda1
mkfs.btrfs -f /dev/vda2
mkswap /dev/vda3
переходим к монтированию только что отформатированных разделов. Включаем swap
swapon /dev/vda3
монтируем корневой раздел в /mnt
mount /dev/vda2 /mnt
переходим в него и создаем подразделы (subvolume)
cd /mnt
btrfs su cr @
btrfs su cr @home
после выше выполненных команд переходим в корень загруженной системы и размонтируем /mnt
cd /
umount /mnt
для дальнейшего монтирования подразделов корня(@) и home (@home) будущей системы, выполняем следующие команды. Монтируем корень системы
mount -o noatime,compress=zstd:6,space_cache=v2,discard=async,subvol=@ /dev/vda2 /mnt
создаем директорию для монтирования подраздела home и монтируем, выполнив следующие команды
mkdir /mnt/home
mount -o noatime,compress=zstd:6,space_cache=v2,discard=async,subvol=@home /dev/vda2 /mnt/home
так же создадим директорию /mnt/boot/efi для монтирования boot раздела
mkdir -p /mnt/boot/efi
mount /dev/vda1 /mnt/boot/efi
выполним следующую команду (для наглядности) что бы увидеть точки монтирования
lsblk
Для указания репозитория и архитектуры для удобства воспользуемся переменными REPO и ARCH они нам потребуются для установки базового метапакета системы
REPO=https://repo-default.voidlinux.org/current
ARCH=x86_64
создадим директорию и скопируем ключи, выполнив следующие команды
mkdir -p /mnt/var/db/xbps/keys
cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/
теперь самое время заняться установкой базового метапакета системы
XBPS_ARCH=$ARCH xbps-install -S -r /mnt -R "$REPO" base-system
немного разберем команду для ясности и понимания
- XBPS_ARCH=$ARCH данная конструкция говорит xbps что надо явно использовать ахитектуру из переменной $ARCH то есть x86_64
- -S --sync Синхронизирует файлы индекса удаленного репозитория
- -r --rootdir сообщаем xbps что корень системы /mnt
- -R --repository сообщаем xbps использовать репозиторий из переменной $REPO то есть https://repo-default.voidlinux.org/current
Вероятно теперь более или менее понятно
После переходим в chroot с помощью команды ниже
xchroot /mnt /bin/bash
Опционально, я предпочитаю текстовый редактор nano, далее /etc/hostname пишем имя машины, например VoidLinux
xbps-install -S nano
nano /etc/hostname
создадим симлинк на часовой пояс, мой Europe/Moscow вы же указывайте свой
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
правим следующий конфиг, раскоментируем пару локалей
nano /etc/default/libc-locales
...
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
...
генерируем локали следующей командой
xbps-reconfigure -f glibc-locales
раскомментируем следующие параметры и исправим их значения в /etc/rc.conf
nano /etc/rc.conf
...
keymap="ru"
font="cyr-sun16"
...
Это позволит использовать в консоли кириллицу, переключения языков shift+ctrl
исправим в /etc/locale.conf параметр LANG
nano /etc/locale.conf
...
LANG="ru_RU.UTF-8"
...
Устанавливаем пароль для root
passwd
Заполним файл /etc/fstab точками монтирования методом копирования /proc/mounts в нем содержится все что смонтировано на текущий момент
cp /proc/mounts /etc/fstab
Далее приведем в порядок /etc/fstab, закомментировав или удалив лишнее точки монтирования
nano /etc/fstab
так же рекомендуется добавить в /etc/fstab точку монтирования директории для временных файлов в оперативную память.
...
tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
...
Небольшой нюанс. Так как используем UEFI то для установки grub используем пакет grub-x86_64-efi
xbps-install grub-x86_64-efi
далее установка и конфигурирование grub
grub-install
grub-mkconfig -o /boot/grub/grub.cfg
если заметили grub-install указывается без устройства, прекрасно сам находит куда ему установится.
далее запускаем утилиту из пакета XBPS для настройки установленных пакетов, за одно сгенерирует initramfs
xbps-reconfigure -fa
для синхронизации времени с ntp серверами используем chrony
xbps-install -S chrony
Так как dhcpcd входит в метапакет системы, для автоматического запуска процесса(демона) надо создать симлинк, аналогично и для chronyd
ln -s /etc/sv/dhcpcd /etc/runit/runsvdir/default/
ln -s /etc/sv/chronyd /etc/runit/runsvdir/default/
Нюанс. Так как в режиме chroot то симлинки на демоны делаются именно в директорию /etc/runit/runsvdir/default/ На загруженом Void Linux работаем исключительно с /var/service/
Далее создаем пользователя например john, добавляя в группу wheel, задаем пароль и в /etc/sudoers разрешаем группе wheel использовать sudo
useradd -G wheel -s /bin/bash john
passwd john
nano /etc/sudoers
раскомментировав строку в /etc/sudoers
...
%wheel ALL=(ALL:ALL) ALL
...
в завершении процесса установки Void Linux выходим из chroot, размонтируем все что примонтировано и перезагружаем машину
exit
umount -R /mnt
reboot
Если все действия выполнены верно то система запустится без проблем
А теперь давайте что нибудь установим
У чистого Void'а достаточно скромный аппетит, вспоминая только что установленный чистый Arch с systemd потребление оперативной памяти было чуть больше на 20-50Мб, но не будем считать миллиметры.
ну и конечно же neofetch
В заключение могу сказать, Void Linux использует модель развивающегося выпуска (Rolling Release) то бишь пользователи всегда получают последние обновления, не дожидаясь крупных релизов дистрибутива. Это обеспечивает более актуальную и безопасную среду. Void использует runit вместо традиционных systemd, что делает систему более легковесной и быстрой в загрузке. Это также позволяет пользователям избежать некоторой сложности, связанной с systemd. Void применяет собственную систему управления пакетами, называемую xbps, которая отличается высоким уровнем производительности и простотой. Она поддерживает бинарные пакеты и позволяет делать обновления и установки быстро и эффективно. Void Linux предлагает возможность выбора между двумя библиотеками C: Musl и Glibc. Это позволяет пользователям оптимизировать свою систему для специфических задач и архитектур. Подводя итог данный дистрибутив имеет не малый порог вхождения (примерно как у Arch), можно рекомендовать более опытным пользователям.
За основу взято Void Linux Handbook, так же несколько инструкций от других пользователей и переписаны под себя.
За сим откланиваюсь...