В этом репозитории вы найдете мой набор конфигураций sway и artix (openrc). Скорее это все одна большая инструкция по сборки системы, подобной моей.
Все необходимые компоненты вы найдете в файлах или в соответствующих репозиториях в моем профиле.
Основные положения:
- Минималистичная система (меньше компонентов = меньше звеньев отказа)
- Простое администрирование (
openrc,btrfs) - Нейтральный, единообразный дизайн/стиль
- Атомарность приложений (все пользовательские приложения в
flatpak) - LUKS
Для установки системы нам потребуется USB накопитель с предварительно записанным artix linux.
После загрузки с USB откроем терминал и перейдем под ROOT
sudo suВ первую очередь необходимо создать разметку FS (в нашем случае GPT).
Установку системы будем производить на ssd, в качестве корневой системы используем btrfs.
Ориентировочная структура разделов:
0. efi = 512M
1. lvm = lvm (luks)
2. free = 1-5% disk size
Для создания разметки воспользуемся командой
cfdisk /dev/nvme0n1Форматируем разделы, создаем файл подкачки
cryptsetup --verbose --type luks1 --cipher aes-xts-plain64 --key-size 256 --hash sha256 --iter-time 1000 --use-random --verify-passphrase luksFormat /dev/nvme0n1p2
# Are you sure? (Type 'yes' in capital letters): YES
# Key slot 0 created.
cryptsetup luksOpen /dev/nvme0n1p2 lvm-system
# vgdisplay
vgcreate lvmSystem /dev/mapper/lvm-system
lvcreate --contiguous y --size 64G lvmSystem --name volSwap
lvcreate --contiguous y --extents +100%FREE lvmSystem --name volRoot
# lvdisplay
mkfs.fat -n ESP -F 32 /dev/nvme0n1p1
# OR mkfs.vfat /dev/nvme0n1p1
mkswap -L SWAP /dev/lvmSystem/volSwap > tmp.txt
# OR mkswap /dev/sda3 -L "swap"
mkfs.btrfs /dev/lvmSystem/volRoot
mount /dev/lvmSystem/volRoot /mnt
cd /mnt
btrfs subvolume create _active
btrfs subvolume create _active/rootvol
btrfs subvolume create _active/homevol
btrfs subvolume create _active/docker
btrfs subvolume create _active/libvirt
btrfs subvolume create _active/data
btrfs subvolume create _active/log
btrfs subvolume create _snapshotsМонтируем рабочие разделы
cd /home/artix
umount /mnt
swapon /dev/lvmSystem/volSwap
mount -o subvol=_active/rootvol /dev/lvmSystem/volRoot /mnt
mkdir /mnt/{home,boot,var}
mkdir /mnt/media
mkdir /mnt/media/data
mkdir /mnt/boot/efi
mkdir /mnt/var/log
mkdir /mnt/var/lib/docker
mkdir /mnt/var/lib/libvirt
mkdir /mnt/media/data
mkdir /mnt/mnt/defvol
mount /dev/nvme0n1p1 /mnt/boot/efi
mount -o subvol=_active/data /dev/lvmSystem/volRoot /mnt/media/data
mount -o subvol=_active/docker /dev/lvmSystem/volRoot /mnt/var/lib/docker
mount -o subvol=_active/log /dev/lvmSystem/volRoot /mnt/var/log
mount -o subvol=_active/libvirt /dev/lvmSystem/volRoot /mnt/var/lib/libvirt
mount -o subvol=_active/homevol /dev/lvmSystem/volRoot /mnt/home
mount -o subvol=/ /dev/lvmSystem/volRoot /mnt/mnt/defvolВ качестве системы инициализации используем openrc.
В качестве системы управления сеансами будет использоваться elogind, можно заменить его на seatd. Стоит отметить seatd не поддерживает polkit, это может стать серьезной проблемой при запуске GUI приложений требующих привилегированного доступа. В таком случае придется запускать GUI приложения от root, что не безопасно и неудобно.
В зависимости от архитектуры целевой машины выберите ucode.
basestrap /mnt base base-devel openrc
basestrap /mnt elogind-openrc polkit polkit-qt5 polkit-qt6 polkit-gnome
# OR seatd-openrc #NOT support polkit
basestrap /mnt btrfs-progs linux linux-headers linux-firmware
basestrap /mnt amd-ucode iucode-tool
# OR basestrap /mnt intel-ucode iucode-tool
basestrap /mnt vulkan-radeon radeontopСоздание файла с информацией о разделах
fstabgen -U /mnt >> /mnt/etc/fstabПерейдем в корневой каталог будущей нашей системы
artix-chroot /mntКонфигурация часового пояса.
В данном примере hwclock позволит установить время по аппаратным часам
# ln -sf /usr/share/zoneinfo/Asia/ГОРОД /etc/timezone
# hwclock --systohcУстановим базовое ПО (необязательно)
pacman -S vi nano htop wgetУстановим пакеты для управления сетевым соединением
pacman -S dhcpcd dhclient networkmanager networkmanager-openrc
rc-update add networkmanager sysinitНастройка языковых пакетов
sed '/en_US\.UTF-8/s/^#//' -i /etc/locale.gen
sed '/ru_RU\.UTF-8/s/^#//' -i /etc/locale.gen
#echo "LANG=ru_RU.UTF-8" > /etc/locale.conf
locale-genОпределение сетевого имени машины
echo "ИМЯХОСТА" > /etc/hostname
echo "127.0.0.1 localhost" > /etc/hosts
echo "::1 localhost" >> /etc/hosts
# echo "127.0.1.1 ИМЯХОСТА.localdomine ИМЯХОСТА" >> /etc/hostsУстановим поддержку ArchLinux репозиториев и AUR.
pacman -S artix-archlinux-supportПропишешь в конфигурации pacman новые репозитории. Добавить в /etc/pacman.conf
# Arch
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[multilib]
Include = /etc/pacman.d/mirrorlist-archОбновим репозитории
# pacman -Sy archlinux-keyring artix-keyring
# rm -r /etc/pacman.d/gnupg
# pacman-key --init
pacman-key --populate archlinux artix
pacman -Scc
pacman -SyyuТак же данными командами можно исправить ошибку Invalid or corrupted packages (PGP signature)
sudo pacman -S go
wget https://aur.archlinux.org/cgit/aur.git/snapshot/yay.tar.gz
tar -xvf yay.tar.gz
cd yay
makepkg -i
cd ..
rm -rf yay
За hibernation отвечает параметр resume
pacman -S device-mapper-openrc lvm2-openrc cryptsetup-openrc
pacman -S lvm2 cryptsetup glibc mkinitcpio
pacman -S openssl openssl-1.1
rc-update add dmeventd sysinit
# rc-update add lvm2
# rc-update add cryptsetupДобавим HOOK в /etc/mkinitcpio.conf
HOOKS=( ......... encrypt, lvm2, resume)mkinitcpio -p linuxpacman -S grub os-prober efibootmgr grub-btrf
blkid -s UUID -o value /dev/nvme0n1p1Редактируем /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT
# GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=UUID=ИЗ_blkid:lvm-system loglevel=3 quiet resume=UUID=ИЗ_FSTAB_SWAP"
GRUB_ENABLE_CRYPTODISK="y"
GRUB_COLOR_NORMAL="yellow/black"
GRUB_COLOR_HIGHLIGHT="black/yellow"grub-mkconfig -o /boot/grub/grub.cfg
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=artix --removable --recheck /dev/nvme0n1Не забываем задать пароль root
passwdСоздаем пользователя
useradd -m -G wheel -s /bin/bash ИМЯ
passwd ИМЯПозволим повышать привилегии пользователям состоящим в wheel.
sed '/%wheel ALL=(ALL:ALL) ALL/s/^#//' -i /etc/sudoers' >> /etc/sudoersНа данном этапе можно считать установку оконченной. Далее завершаем работу, перезагружаемся в установленную систему.
exit
umount -R /mnt
rebootmkdir -m 700 /etc/cryptsetup-keys.d
dd bs=512 count=4 if=/dev/random of=/etc/cryptsetup-keys.d/cryptlvm.key iflag=fullblock
chmod 600 /etc/cryptsetup-keys.d/cryptlvm.key
cryptsetup -v luksAddKey /dev/sda3 /etc/cryptsetup-keys.d/cryptlvm.keyДобавим в /etc/mkinitcpio.conf
FILES=(/etc/cryptsetup-keys.d/cryptlvm.key)
Добавим в /etc/default/grub
GRUB_CMDLINE_LINUX="... cryptkey=rootfs:/etc/cryptsetup-keys.d/cryptlvm.key"
Обновим GRUB и ramfs
mkinitcpio -p linux
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=artix --removable --recheck /dev/nvme0n1
grub-mkconfig -o /boot/grub/grub.cfg
Запустим сервис обеспечивающий авторизацию в системе
#IF elogind
rc-update add elogind
rc-service elogind start
usermod -aG video ИМЯ
#IF seatd
rc-update add seatd
rc-service seatd start
#usermod -aG seat $USERПропишем в системный enviroment выбранный в прошлом пункте LM
echo "LIBSEAT_BACKEND=logind" >> /etc/environmentДобавим возможность использовать .profile для пользовательских env. А так же возможность добавлять пользовательские бинарные приложения.
echo 'export PATH="$HOME/.local/bin:$PATH"' > /etc/profile.d/home-local-bin.sh
echo -e '# Load profile from home\n[[ -f $HOME/.profile ]] && . $HOME/.profile' >> /etc/profileУстановим sway и терминал foot
Стоит отметить что jq используется в некоторых скриптах WM, по этой причине он внесет список необходимых.
sudo pacman -S git curl micro
sudo pacman -S foot mako wl-clipboard jq sway swaybg xdg-utils
yay -S swaylock-effects
sudo pacman -S xcursor-breeze
yay -S matcha-gtk-themeЕсли вам требуется поддержка xorg приложений. Удалить ее будет невозможно!
sudo pacman -S xorg-xwaylandДалее необходимо произвести распаковку ваших или моих dotfiles в домашнюю папку пользователя.
git clone https://github.com/MuratovAS/dotfiles.git
cp -r dotfiles/.* ~/ && rm -rf ~/.git ~/designУстановка zsh
sudo pacman -Syu zsh
chsh -s $(which zsh)Настройка zsh (выполнять не требуется, если скопировали мой dotfiles)
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-.config/oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-.config/oh-my-zsh/custom}/plugins/zsh-autosuggestionsТонкая настройка
mkdir .config
mv ~/.oh-my-zsh ~/.config/oh-my-zsh
sed -i 's@\.oh-my-zsh@\.config/oh-my-zsh@g' ~/.zshrc
sed -i 's@plugins=(git)@plugins=(git zsh-autosuggestions zsh-syntax-highlighting)@g' ~/.zshrc
sed -i 's@robbyrussell@agnoster@g' ~/.zshrc
sed -i '/mode disabled/s/^#//' ~/.zshrc
sed -i '/ prompt_context/s/^/#\ /' ~/.config/oh-my-zsh/themes/agnoster.zsh-themeУстановим утилиты xdg, это позволит обеспечить ассоциацию файлов и добавить поддержку ярлыков. Пакет xdg-user-dirs необходим некоторым приложениям для доступа к стандартным каталогом. От него можно отказаться, вручную создав каталоги.
sudo pacman -S xdg-utils xdg-user-dirs
mkdir ~/Share ~/Download ~/Documents ~/Media ~/Templates
xdg-user-dirs-update --set DESKTOP ~/Media
xdg-user-dirs-update --set DOCUMENTS ~/Documents
xdg-user-dirs-update --set DOWNLOAD ~/Download
xdg-user-dirs-update --set MUSIC ~/Media
xdg-user-dirs-update --set PICTURES ~/Media
xdg-user-dirs-update --set PUBLICSHARE ~/Share
xdg-user-dirs-update --set TEMPLATES ~/Templates
xdg-user-dirs-update --set VIDEOS ~/MediaУстановим pipewire с базовыми дополнениями и TUI менеджер pulsemixer
sudo pacman -S pipewire-alsa pipewire pipewire-jack pipewire-pulse pipewire-media-session pamixer pulsemixersudo pacman -S xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gtk
# mkdir .config/xdg-desktop-portal/
# cp /usr/share/xdg-desktop-portal/gtk-portals.conf .config/xdg-desktop-portal/portals.confsudo pacman -S wqy-microhei ttf-dejavu ttf-roboto ttf-roboto-mono #system
sudo pacman -S ttf-carlito ttf-caladea ttf-liberation #base text
sudo pacman -S ttf-nerd-fonts-symbols #icon
sudo pacman -S ttf-font-awesome #emojiОбновление кэша шрифтов
fc-cache -f -v
#fc-listУстановка chrony, позволит синхронизировать время с NTP сервером
sudo pacman -S chrony chrony-openrc
sudo rc-update add chronyПо моим предположениям AppImage должен работать из коробки, но встречаются случаи когда приложение не запускается. У меня решилась проблема установкой недостающих компонентов fuse.
sudo pacman -S fuse-common fuse3 fuse2sudo pacman -S tlp tlp-openrc # менеджер питания
sudo rc-update add tlp
#yay -S tlpui
yay -S poweralertd # Уведомляет о состоянии питания
sudo pacman -S bluez bluez-utils bluez-openrc
yay -S bluetuith-bin # TUI bluetooth
sudo usermod -aG rfkill $USER
sudo usermod -aG lp $USER
sudo rc-update add bluetoothd
sudo rc-service bluetoothd restart
yay -S light # Управляет подсветкойДанные пакеты используются в текущей конфигурации sway, но установка не обязательна
sudo pacman -S playerctl # Управление медиа плиром из waybar
sudo pacman -S wf-recorder
sudo pacman -S slurp grim swappy # Инструменты для снимков экрана
sudo pacman -S wlsunset # Ночный режим, фильтр синего цвета
# sudo pacman -S khal # Календарь
# khal configure
sudo pacman -S gnome-keyring # Систума управления ключами (необходима для многих приложений)sudo pacman -S flatpak flatpak-builder
flatpak install flathub com.github.tchx84.Flatseal
flatpak install flathub io.github.flattool.Warehousesudo pacman -S xcursor-breeze
yay -S matcha-gtk-themeБольшинство приложений по умолчанию работают через xwayland, что не очень правильно. Так же это ограничивает разрешения изображения, и на HiDPI мониторе будет выглядеть печально. Данную проблему можно исправить файлом конфигурации, принудительно запускающий wayland версию приложения. В некоторых случаях требуется вручную создать файл для вашей версии electron.
ln -s ~/.config/electron-flags.conf ~/.config/electron18-flags.confДобавить /etc/conf.d/agetty.tty1
agetty_options="-J -a ИМЯ"Создай /lib/elogind/system-sleep/50-wifi-sleep с правами на запуск
#!/bin/sh
case $1/$2 in
pre/hibernate)
exec rmmod ath11k_pci
;;
post/hibernate)
exec modprobe ath11k_pci
;;
esac
/etc/elogind/logind.conf.d/10-elogind.conf
[Login]
# elogind is not a system manager, so it does not remove IPC-items by default
#RemoveIPC=no
HandlePowerKey=poweroff
HandleLidSwitch=suspendsudo pacman -S fprintdДобавить в /etc/pam.d/system-local-login
auth sufficient pam_fprintd.sofprintd-delete "$USER"
$ for finger in {left,right}-{thumb,{index,middle,ring,little}-finger}; do fprintd-enroll -f "$finger" "$USER"; done
fprintd-verifyПолезные GUI приложения
sudo pacman -S pamac
sudo pacman -S seahorse
sudo pacman -S gnome-disk-utility
sudo pacman -S nautilus
sudo pacman -S file-roller
sudo pacman -S gnome-calculator
yay -S buttermanager #lagacy
# yay -S syncthingtray
sudo pacman -S syncthing
flatpak install flathub io.github.martchus.syncthingtrayПолезные TUI приложения
sudo pacman -S micro mc fzf neofetch
sudo pacman -S bat glow chafa
sudo pacman -S pass cmus
sudo pacman -S netcatНабор приложений для просмотра медиа файлов
smbclient
sudo pacman -S mpv mpv-mpris imv zathura
sudo pacman -S zathura-pdf-poppler zathura-djvu
sudo pacman -S ffmpeg ffmpegthumbnailerРасширение поддержки устройств и форматов файлов
sudo pacman -S exfat-utils
# sudo pacman -S dosfstools
# yay -S ntfsprogs-ntfs3
sudo pacman -S p7zip unrar
sudo pacman -S gvfs-mtp
sudo pacman -S gvfs-smb smbclientПользовательские приложения
flatpak install flathub org.gnome.Evolution
flatpak install flathub org.gnome.Evince
flatpak install flathub org.libreoffice.LibreOffice
flatpak install flathub com.github.marktext.marktext
flatpak install flathub com.jgraph.drawio.desktop
flatpak install flathub io.github.f3d_app.f3d
flatpak install flathub org.telegram.desktop
flatpak install flathub com.github.Murmele.Gittyup
flatpak install flathub org.chromium.Chromium
flatpak install flathub org.mozilla.firefox
flatpak install flathub io.gitlab.librewolf-community
flatpak install flathub io.github.ungoogled_software.ungoogled_chromium
sudo pacman -S kdeconnect
sudo pacman -S tailscale tailscale-openrc
sudo rc-update add tailscaled
yay -S trayscale
sudo tailscale set --operator=$USERБраузер по умолчанию
xdg-settings set default-web-browser org.mozilla.firefox.desktopsudo pacman -S docker docker-compose docker-openrc
sudo rc-update add libvirtd
sudo usermod -aG docker $(whoami)
yay -S lazydockersudo pacman -S virt-manager virt-viewer qemu qemu-arch-extra edk2-ovmf vde2 dnsmasq libvirt-openrc
sudo rc-update add libvirtd
sudo usermod -a -G libvirt $(whoami)cp -r /usr/share/themes/ .themes/
cp -r /usr/share/icons/ .icons/
flatpak install flathub org.gtk.Gtk3theme.Breeze Так же следует добавить env для всех flatpak приложений
GTK_THEME=Matcha-dark-sea
ICON_THEME=AdwaitaLegacyПодробнее:
