Найти в Дзене

Установка Venom Linux часть 1 (UEFI, BTRFS)

Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) Venom Linux (условия таковы установка с использованием UEFI и на файловую систему BTRFS на чистый накопитель) с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности Venom Linux - молодой и независимый Rolling-дистрибутив с системой инициализации SysVinit и S6, в качестве программных пакетов используются BSD-подобные порты, которые управляются специальным инструментом управления пакетами ScratchPkg Я не буду рассматривать скрипт для автоматической установки, это не имеет ни какого смысла. Приступим, грузимся с предварительно подготовленной флешки (тут уже на ваше усмотрение я обычно использую ventoy), либо же подключаем к загрузочный образ к виртуальной машине. Обратите внимание, тут подобие Void используем учетную запись root(логин: root пароль: venom). Нюанс. Проверьте соед

Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) Venom Linux (условия таковы установка с использованием UEFI и на файловую систему BTRFS на чистый накопитель) с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности

Venom Linux - молодой и независимый Rolling-дистрибутив с системой инициализации SysVinit и S6, в качестве программных пакетов используются BSD-подобные порты, которые управляются специальным инструментом управления пакетами ScratchPkg

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

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

Обратите внимание, тут подобие Void используем учетную запись root(логин: root пароль: venom).

Нюанс. Проверьте соединение с интернетом, если соединение отсутствует запустите dhcpcd выполнив команду:

dhcpcd

Для проверки верно ли загрузились, воспользуемся командой:

ls /sys/firmware/efi/efivars
-2

Опционально. Для наглядности поменял приглашение коммандной строки, будет легче ориентироваться по структуре системы

export PS1="\s-\v(\W)#"

Определимся с диском на который будем устанавливать Venom Linux, используем следующую команду, я буду часто использовать ее для наглядности.

lsblk

В данном случае один накопитель, так как это виртуальная машина, перейдем к подготовке накопителя. Создадим соответствующие разделы с помощью утилиты cfdisk используем структуру разделов GPT

cfdisk /dev/vda
-3
  • /dev/vda1 - boot-раздел(EFI) для установки загрузчика. Достаточно 100Мб
  • /dev/vda2 - root-раздел для установки самой системы, займет большую часть накопителя
  • /dev/vda2 - swap-раздел, в данном случае он чисто для формальности. Опять же на реальном железе стоит продумать размер swap исходя из объемов оперативной памяти.
-4

Отформатируем созданные разделы /dev/vda1 в fat32 /dev/vda2 в btrfs и /dev/vda3 swap выполнив следующие команды

mkfs.vfat -F32 /dev/vda1
mkfs.btrfs -f /dev/vda2
mkswap /dev/vda3
-5

Включаем swap-раздел, далее монтируем в /mnt root-раздел для создания подразделов

swapon /dev/vda3
mount /dev/vda2 /mnt

Создадим подразделы на root-разделе для корня (/) и директории home (/home) предварительно переместившись в директорию /mnt

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
mkdir /mnt/home
mount -o noatime,compress=zstd:6,space_cache=v2,discard=async,subvol=@home /dev/vda2 /mnt/home

давайте разберем опции монтирования:

noatime - не обновлять время доступа к файлу

compress=zstd:6 - включает алгоритм прозрачного сжатия zstd (есть еще lzo и zlib) 6 это степень сжатия

space_cache=v2 - Кэширование данных о свободных блоках, чтобы не искать их перед записью в данном примере использую 2 версии

discard=async - Незанятые блоки, группируются и освобождаются позже в отдельном потоке, что улучшает задержки при записи на диск (так скажем более бережное отношение к ssd в плане перезаписи) можно добавит параметр ssd (хотя она включается автоматически) так же есть еще ssd_spread вынуждает драйвер использовать для записи преимущественно не занятые области диска, что специально вызывает сильную фрагментацию. Может значительно ускорить недорогие ssd. autodefrag - дефрагментация на «лету», не применять для SSD. Не использовал эти параметры, вычитал на просторах инета.

subvol=@home - Монтирует подраздел @home (аналогично @). Увлекся, продолжаем дальше.

Создадим директории для монтирования EFI-раздела

mkdir -p /mnt/boot/efi
mount /dev/vda1 /mnt/boot/efi
-6

Переходим в корень подраздела будущей системы и скачиваем с репозитория tarball-архив

cd /mnt
venom-bootstrap

вы получите предупреждение о том что контрольная сумма tarball не совпадает, проигнорируем, видимо разработчик не обновил файл с контрольной суммой. Переходим к распаковке архива, параметры команды взяты из статьи установки gentoo, так как на Venom Wiki указаны не правильно и права на файлы при распаковке летят в Вальхаллу

-7
tar xpvf venomlinux-*.tar.xz --xattrs --numeric-owner

давайте разберем что за параметры у нас

-x, --extract – распаковывает файлы из архива

-p, --bzip2 – сохраняет все права доступа

-v --verbose выводит всю информацию о текущем процессе и показывает сведения об уже завершенном процессе.

-f file, --file – выводит результат в file (или на устройство)

--xattrs - Расширенные атрибуты представляют собой пары имя:значение, которые постоянно связаны с файлами и каталогами, подобно тому как строки окружения связаны с процессом.

--numeric-owner - опция позволяет восстановить пользователей файлов по числовому дескриптору, а не по имени, во избежании ошибок.

-8

переходим к монтированию файловых систем которые потребуются для chroot

mount -v --bind /dev /mnt/dev
mount -vt devpts devpts /mnt/dev/pts -o gid=5,mode=620
mount -vt proc proc /mnt/proc
mount -vt sysfs sysfs /mnt/sys
mount -vt tmpfs tmpfs /mnt/run
mkdir -pv /mnt/$(readlink /mnt/dev/shm)

обязательно копируем файл resolv.conf иначе не будет работать сеть

cp -L /etc/resolv.conf /mnt/etc/

переходим в chroot

chroot /mnt /bin/bash

чисто для эстетики поправим приглашение

export PS1="(chroot) ${PS1}"
-9

синхронизируем систему с репозиторием и обновим пакеты до актуальной версии

scratch sync
scratch sysup

Нюанс. В дальнейшем при обновлении системы после синхронизации репозитория первым делом обнавляем пакет scratchpkg иначе при различии в версиях обновление не будет выполнено, Venom заботливо сообщит об предварительном апгрейде выше упамянутого пакета. То есть последовательность команд будет выглядить так

scratch sync
scratch upgrade scratchpkg
scratch sysup
-10

Опционально. Так как не все владеют vim'ом, самое время установить nano думаю многим он по душе. Так как после выполнения предыдущих команд у нас появляется такая возможность.

scratch install nano
-11

переходим к конфигурации будущей системы

nano /etc/rc.conf
...
HARDWARECLOCK="UTC"
TIMEZONE="Europe/Moscow"
KEYMAP="ru"
FONT="cyr-sun16"
DEAMONS="sysklogd"
...

Думаю параметры не требуют пояснений

-12

настроим кириллицу в консоли

nano /etc/vconsole.conf
...
KEYMAP=ru
FONT=cyr-sun16
...
-13

заполним /etc/fstab и приведем его в надлежащее состояние закомментировав все лишнее

cp /proc/mounts /etc/fstab
nano /etc/fstab
-14

Далее раскоментируем нужные локали и сгенерируем

nano /etc/locales
...
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
...
genlocales
-15

установим пароль на root

passwd

создадим пользователя john, добавим в группы и установим пароль

useradd -m -G users,wheel,audio,video -s /bin/bash john
passwd john
-16

установим ядро, модули ядра со всевозможными прошивками устройств и основные пакеты для дальнейшей работы, процесс не быстрый так как происходит компиляция

scratch install linux grub grub-efi efibootmgr dhcpcd
-17

установим grub и сконфигурируем предварительно создав директорию locale, некий костылик для установки grub, да обратите внимания на параметры --force --removable без них grub-install не хочет устанавливаться, так же ругается на параметр --target=x86_64.

Сложно сказать будет ли данная проблема на реальном железе или же это только на KVM/QEMU так как не проверял.

mkdir /usr/share/locale
grub-install --efi-directory=/boot/efi --bootloader-id="venomlinux" --force --removable
grub-mkconfig -o /boot/grub/grub.cfg
-18

Что бы запустить сеть надо написать скрипт(почему то при установке dhcpcd его не было в системе) его можно взять с GitHub

nano /etc/rc.d/dhcpcd
...
# исправьте в нем эту строку, убрав параметр -z с ним не хотел запускаться
OPTS="--waitip -h $(/bin/hostname) $DEV"
...
-19

далее если скрипт назвали dhcpcd, то его надо внести в rc.conf в параметр DEAMONS

-20

Нюанс. При использовании самописного скрипта во время обновления пакета dhcpcd может случится конфликт обновления скрипта. Если это произошло удалите(можно на всякий случай переименовать) скрипт и запустить обновление заново.

выходим из chroot переходим в корень и рекурсивно отмонтируем что было при монтировано и перезапускаем

exit
cd /
umount -R /mnt
reboot
-21

Если все выполнено без ошибок, то после перезагрузки вас встретит grub

-22

Как ни банально прозвучит во времена гигабайтов (даже десятки) оперативной память, все же ради спортивного интереса посмотрим сколько же потребляет голая ОС. Ну скажем так, результат ожидаем.

-23

Так же запустим screenfetch, привычного neofetch'а в репозитории увы нет.

-24

P.S. В целом интересный дистрибутив, но все же "сыроват" надеюсь разработчики не бросят и допилят. Задумка не плоха. Есть небольшие сложности в плане работы с SysVInit, думаю разобраться можно, но порог вхождения достаточно высок (это ни Arch и Void), всему виной скудность Wiki. Заметил такой нюанс после перезагрузки история команд сбрасывается (фича!?!). Сравнивать с подобными rolling-дистрибутивами, но как?

Arch? дата выхода 11.03.2002 огромный репозиторий, плюс AUR, пакеты уже скомпилированы, скорость установки в разы выше, ArchWiki где есть ответы на все, как бы не совсем корректно сравнивать.

Gentoo? дата выхода 31.03.2002 так же компилируются пакеты, но система portage с ее флагами максимально настраеваема под себя, достаточно большой репозиторий плюс сторонние оверлеи. Хотя у SysVinit есть некое то сходство с системой инициализации OpenRC. Venom этим врядли может похвастаться, аналогично дела обстаят и с Handbook'ом, опять же спишем на "молодость" Venom.

Void? выход 2008, аналогично стоят дела с репозиторием и handbook'ом по сравнению с Venom. Пакетный менеджер достаточно шустрый в плане установки так как пакеты скомпилированы. Система инициализации RunIt более понятна, опять же это мое субъективное мнение. "Молодость" Venom.

За основу взято VenomWiki, так же из других Wiki и переписаны под себя

За сим откланиваюсь...