Найти в Дзене

Установка Artix Linux часть 1 с системой инициализации dinit, runit, openrc, s6

Добрый день дорогой читатель, данное повествование не является
истиной в последней инстанции, это некая инструкция по установке (в
основном для собственного пользования) Artix Linux с системами инициализации dinit, runit, openrc и s6 (условия таковы, установка с использованием UEFI на файловую систему BTRFS) с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности. Установка Artix Linux практически детально рассмотрена с учетом его систем инициализаций. Загружаемся с предварительно скаченного образа, тут небольшой нюанс выбираем либо From CD/DVD/ISO: Artix_x86_64 либо From Stick/HDD: Artix_x86_64. По сути разницы я не увидел (может быть из за виртуальной машины). Выбрал второй вариант. Обратите внимание, требуется логин (root или artix) пароль (artix), далее, что бы убедиться запуска в UEFI выполним до более знакомую команду: ls /sys/firmware/efi/efivars определимся с накопителем, выполнив команду lsblk у меня это /dev/vda, и переходим к разметк

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

Установка Artix Linux практически детально рассмотрена с учетом его систем инициализаций.

Загружаемся с предварительно скаченного образа, тут небольшой нюанс выбираем либо From CD/DVD/ISO: Artix_x86_64 либо From Stick/HDD: Artix_x86_64. По сути разницы я не увидел (может быть из за виртуальной машины). Выбрал второй вариант.

Обратите внимание, требуется логин (root или artix) пароль (artix), далее, что бы убедиться запуска в UEFI выполним до более знакомую команду:

ls /sys/firmware/efi/efivars

определимся с накопителем, выполнив команду

lsblk

у меня это /dev/vda, и переходим к разметке накопителя

cfdisk /dev/vda
-2

так как в режиме UEFI то тип таблицы выбираем GPT

-3

для демонстрации вполне годятся такие объемы разделов, boot -128M root-30G, swap-1.9G, на железе стоит отнестись более ответственно к разметке.

-4

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

fdisk -l /dev/vda

отформатируем разделы в соответствующие файловые таблицы и активируем swap, выполнив следующую последовательность команд

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

далее создадим subvolume на btrfs разделе иначе зачем нам btrfs

fdisk -l /dev/vda # для того что бы видеть разделы
mount /dev/vda2 /mnt
cd /mnt
btrfs su cr @
btrfs su cr @home
cd /
umount /mnt

и смонтируем все необходимое для установки

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
mkdir -p /mnt/boot/efi
mount /dev/vda1 /mnt/boot/efi

последними двумя командами можно убедится в монтировании

lsblk
mount | grep vda
-6

Опционально. Это ускорит процесс скачивания пакетов, в /etc/pacman.conf раскоментируем строку ParallelDownloads=5

nano /etc/pacman.conf
-7

опционально, можно раскоментировать репозиторий 32-битных пакетов

[lib32]
include=/etc/pacman.d/mirrorlist
-8

далее определимся с ядрами они те же что и у Arch Linux, то бишь linux, linux-lts или linux-zen следовательно пакеты:

  • linux - пакеты linux linux-headers
  • linux-lts - пакеты linux-lts linux-lts-headers
  • linux-zen - пакеты linux-zen linux-zen-headers

не забываем по linux-firmware, а так же про пакеты с микрокодами для процессоров:

  • amd-ucode - если процессор AMD
  • intel-ucode - если процессор Intel

далее

base, base-devel - базовые пакеты системы

btrfs-progs, e2fsprogs, f2fs-tools, dosfstools - пакеты утилит файловых систем, они рекомендуются к установке, так как при формировании initramfs включен хук [fsck] если они не установлены будут warning'и и соответственно в образ не попадут.

далее система инициализации и пакеты с механизмами управления одноименных процессов/демонов.

  • для dinit
    dinit, elogind-dinit, dhcpcd-dinit, chrony-dinit
  • для runit
    runit, elogind-runit, dhcpcd-runit, chrony-runit
  • для openrc
    openrc, elogind-openrc, dhcpcd-openrc, chrony-openrc
  • для s6
    s6-base elogind-s6 dhcpcd-s6 chrony-s6

и за одно поставим все остальные не мало важные (на мой взгляд) пакеты

grub, efibootmgr, sudo, nano, elogind, dhcpcd, chrony - думаю о них нет смысла говорить что за пакеты, можно еще добавить например mc, htop и fastfetch. В итоге у нас получается такая команда с учетом всех систем инициализаций

для dinit

basestrap /mnt linux linux-headers linux-firmware base base-devel btrfs-progs e2fsprogs f2fs-tools dosfstools grub efibootmgr sudo nano elogind dhcpcd chrony dinit elogind-dinit dhcpcd-dinit chrony-dinit
установка пакетов и системы инициализации dinit
установка пакетов и системы инициализации dinit

для runit

basestrap /mnt linux linux-headers linux-firmware base base-devel
btrfs-progs e2fsprogs f2fs-tools dosfstools grub efibootmgr sudo nano
elogind dhcpcd chrony runut elogind-runut dhcpcd-runut chrony-runut
-10

для openrc

basestrap /mnt linux linux-headers linux-firmware base base-devel
btrfs-progs e2fsprogs f2fs-tools dosfstools grub efibootmgr sudo nano
elogind dhcpcd chrony openrc elogind-openrc dhcpcd-openrc chrony-openrc
-11

для s6

basestrap /mnt linux linux-headers linux-firmware base base-devel
btrfs-progs e2fsprogs f2fs-tools dosfstools grub efibootmgr sudo nano
elogind dhcpcd chrony s6-base elogind-s6 dhcpcd-s6 chrony-s6
-12

после установки всего необходимого (на мой взгляд) с генерируем fstab и перейдем в chroot выполнив эти команды

fstabgen -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab # для проверки fstab
artix-chroot /mnt
-13

проведем те же манипуляции с pacman.conf это для будущей системы

nano /etc/pacman.conf
...
ParallelDownloads=5
-14
lib32]
include=/etc/pacman.d/mirrorlist
...

не забываем сохранять

-15

так как поставили sudo поправим конфиг

nano /etc/sudoers
...
%wheel ALL=(ALL:ALL) ALL
...

дадим права на использование sudo группе wheel так как будущий пользователь будет находится в ней

-16

настраиваем часовой пояс

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
hwclock --systohc

раскоментируем локали в /etc/locale.gen

nano /etc/locale.gen
...
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
...
-17

генерируем локали

locale-gen

проверим /etc/hosts должен быть заполнен

nano /etc/hosts
-18

следующим содержимым

-19

для dinit, runit и s6 пропишем hostname

nano /etc/hostname

для наглядности в имя добавил название системы инициализации (например Artix(DInit), Artix(RunIt), Artix(S6), Artix(OpenRC)) вы же назовите как вам удобно

-20

для openrc пропишем hostname

nano /etc/conf.d/hostname
-21

пропишем в /etc/locale.conf

nano /etc/locale.conf
...
LANG=ru_RU.UTF-8
...
-22

для dinit, runit и s6 вносим следующие

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

для openrc

пропишем шрифт для консоли в файле /etc/conf.d/consolefont

nano /etc/conf.d/consolefont
...
consolefont="cyr-sun16"
...
-24

для openrc

пропишем раскладку клавиатуры в файле /etc/conf.d/keymaps

nano /etc/conf.d/keymaps
...
keymaps="ru"
...
-25

далее добавим в автозапуск dhcp и chrony выполнив следующие команды:

для dinit

ln -s /etc/dinit.d/dhcpcd /etc/dinit.d/boot.d
ln -s /etc/dinit.d/chronyd /etc/dinit.d/boot.d

Важный нюанс: В chroot для системы инициализации DInit что бы добавить симлинк на автозапуск процесса/демона делается именно в директорию /etc/dinit.d/boot.d в рабочей системе используем команду dinitctl enable service_name. Напоминат SystemD не правда ли...

-26

для runit

ln -s /etc/runit/sv/dhcpcd /etc/runit/runsvdir/default/
ln -s /etc/runit/sv/chrony /etc/runit/runsvdir/default/

Важный нюанс: В chroot для системы инициализации RunIt что бы добавить симлинк на автозапуск процесса/демона делается именно в директорию
/etc/runit/runsvdir/default/ в рабочей системе для симлинков используется путь
/run/runit/service/ помните это.

-27

для openrc
добавим в автозапуск помимо dhcp и chrony, еще и keymaps и consolefont (чуть выше мы их правили) выполнив следующие команды:

rc-update add dhcpcd default
rc-update add chrony default
rc-update add keymaps default
rc-update add consolefont default
-28

для s6

touch /etc/s6/adminsv/default/contents.d/dhcpcd
touch /etc/s6/adminsv/default/contents.d/chronyd
s6-db-reload
-29

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

passwd
useradd -mG wheel -s /bin/bash john
passwd john
-30

установка и конфигурация grub

lsblk # посмотреть диски выполнено для наглядности
grub-install /dev/vda
grub-mkconfig -o /boot/grub/grub.cfg

если все прошло гладко выходим из chroot от монтируем разделы и перезагружаемся

exit
umount -R /mnt
lsblk # выполнено для наглядности что разделы от монтированы
reboot
-31

после перезагрузки нас встречает grub

-32

на этом базовая часть установки закончена.

-33

ну и конечно же по традиции пару скринов с красивыми циферками

-34

Artix Linux с runit

-35
-36

Artix Linux с openrc

-37
-38

Artix Linux с s6

-39

-40

Далее перейдем к установке оболочки, но это уже в следующех статьях:

За основу взята информация из ArtixWiki и ArchWiki, собственный опыт и наработки.

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