Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) 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
Опционально. Для наглядности поменял приглашение коммандной строки, будет легче ориентироваться по структуре системы
export PS1="\s-\v(\W)#"
Определимся с диском на который будем устанавливать Venom Linux, используем следующую команду, я буду часто использовать ее для наглядности.
lsblk
В данном случае один накопитель, так как это виртуальная машина, перейдем к подготовке накопителя. Создадим соответствующие разделы с помощью утилиты cfdisk используем структуру разделов GPT
cfdisk /dev/vda
- /dev/vda1 - boot-раздел(EFI) для установки загрузчика. Достаточно 100Мб
- /dev/vda2 - root-раздел для установки самой системы, займет большую часть накопителя
- /dev/vda2 - swap-раздел, в данном случае он чисто для формальности. Опять же на реальном железе стоит продумать размер swap исходя из объемов оперативной памяти.
Отформатируем созданные разделы /dev/vda1 в fat32 /dev/vda2 в btrfs и /dev/vda3 swap выполнив следующие команды
mkfs.vfat -F32 /dev/vda1
mkfs.btrfs -f /dev/vda2
mkswap /dev/vda3
Включаем 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
Переходим в корень подраздела будущей системы и скачиваем с репозитория tarball-архив
cd /mnt
venom-bootstrap
вы получите предупреждение о том что контрольная сумма tarball не совпадает, проигнорируем, видимо разработчик не обновил файл с контрольной суммой. Переходим к распаковке архива, параметры команды взяты из статьи установки gentoo, так как на Venom Wiki указаны не правильно и права на файлы при распаковке летят в Вальхаллу
tar xpvf venomlinux-*.tar.xz --xattrs --numeric-owner
давайте разберем что за параметры у нас
-x, --extract – распаковывает файлы из архива
-p, --bzip2 – сохраняет все права доступа
-v --verbose выводит всю информацию о текущем процессе и показывает сведения об уже завершенном процессе.
-f file, --file – выводит результат в file (или на устройство)
--xattrs - Расширенные атрибуты представляют собой пары имя:значение, которые постоянно связаны с файлами и каталогами, подобно тому как строки окружения связаны с процессом.
--numeric-owner - опция позволяет восстановить пользователей файлов по числовому дескриптору, а не по имени, во избежании ошибок.
переходим к монтированию файловых систем которые потребуются для 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}"
синхронизируем систему с репозиторием и обновим пакеты до актуальной версии
scratch sync
scratch sysup
Нюанс. В дальнейшем при обновлении системы после синхронизации репозитория первым делом обнавляем пакет scratchpkg иначе при различии в версиях обновление не будет выполнено, Venom заботливо сообщит об предварительном апгрейде выше упамянутого пакета. То есть последовательность команд будет выглядить так
scratch sync
scratch upgrade scratchpkg
scratch sysup
Опционально. Так как не все владеют vim'ом, самое время установить nano думаю многим он по душе. Так как после выполнения предыдущих команд у нас появляется такая возможность.
scratch install nano
переходим к конфигурации будущей системы
nano /etc/rc.conf
...
HARDWARECLOCK="UTC"
TIMEZONE="Europe/Moscow"
KEYMAP="ru"
FONT="cyr-sun16"
DEAMONS="sysklogd"
...
Думаю параметры не требуют пояснений
настроим кириллицу в консоли
nano /etc/vconsole.conf
...
KEYMAP=ru
FONT=cyr-sun16
...
заполним /etc/fstab и приведем его в надлежащее состояние закомментировав все лишнее
cp /proc/mounts /etc/fstab
nano /etc/fstab
Далее раскоментируем нужные локали и сгенерируем
nano /etc/locales
...
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
...
genlocales
установим пароль на root
passwd
создадим пользователя john, добавим в группы и установим пароль
useradd -m -G users,wheel,audio,video -s /bin/bash john
passwd john
установим ядро, модули ядра со всевозможными прошивками устройств и основные пакеты для дальнейшей работы, процесс не быстрый так как происходит компиляция
scratch install linux grub grub-efi efibootmgr dhcpcd
установим 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
Что бы запустить сеть надо написать скрипт(почему то при установке dhcpcd его не было в системе) его можно взять с GitHub
nano /etc/rc.d/dhcpcd
...
# исправьте в нем эту строку, убрав параметр -z с ним не хотел запускаться
OPTS="--waitip -h $(/bin/hostname) $DEV"
...
далее если скрипт назвали dhcpcd, то его надо внести в rc.conf в параметр DEAMONS
Нюанс. При использовании самописного скрипта во время обновления пакета dhcpcd может случится конфликт обновления скрипта. Если это произошло удалите(можно на всякий случай переименовать) скрипт и запустить обновление заново.
выходим из chroot переходим в корень и рекурсивно отмонтируем что было при монтировано и перезапускаем
exit
cd /
umount -R /mnt
reboot
Если все выполнено без ошибок, то после перезагрузки вас встретит grub
Как ни банально прозвучит во времена гигабайтов (даже десятки) оперативной память, все же ради спортивного интереса посмотрим сколько же потребляет голая ОС. Ну скажем так, результат ожидаем.
Так же запустим screenfetch, привычного neofetch'а в репозитории увы нет.
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 и переписаны под себя
За сим откланиваюсь...