Linux
  •     Как зарежда Linux

  • DEBIAN

  •   Debian 9
  •     Инсталиране на Debian 9
  •     Първоначални настройки (мрежа, VIM, Кирилизация)
  •     Инсталиране и настройка на SSH
  •     Инсталиране и настройка на DNS
  •     Инсталиране и настройка на NTP
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на MySQL (MariaDB)
  •     Инсталиране и настройка на PHPMyAdmin
  •     Инсталиране и настройка на собствен облак
  •     Инсталиране и настройка на SAMBA
  •     Инсталиране и настройка на FTP сървър
  •     Инсталиране и настройка на OSCAM
  •     Инсталиране и настройка на Mail server
  •       Първоначално конфигуриране на базата данни
  •       Инсталиране и конфигуриране на PostFix
  •       Инсталиране и конфигуриране на Dovecot
  •       PostFix дефинира Dovecot да удостоверява
  •       RoundCube
  •       Тестване доставката на поща
  •       Създаване на TLS криптиран ключ и сертификат
  •       WEB администриране
  •       Антиспам със SpamAssassin
  •       Антиспам с RSpmad
  •   Debian 11
  •     Разпределение на диска при BIOS и UEFI
  •     Debian 11 на BIOS върху LVM и RAID
  •     Инсталиране на Debian 11 на BIOS и ZFS
  •     Инсталиране на Debian 11 на BIOS и ZFS-1
  •     Инсталиране на Debian 11 на UEFI и ZFS
  •     ZFS Замяна на развален огледален диск
  •     Ремонт на GRUB и INITRAMFS
  •   Debian 12
  •     Първоначални настройки
  •     DNS Сървър
  •     Добавяне на втори диск
  •     SAMBA + WEBMIN
  •     SAMBA
  •     Инсталиране и настройка на Apache
  •     MySQL и PHPMyAdmin
  •     Инсталиране и настройка на Nginx
  •       Директиви location в Nginx
  •       MYSQL,PHP и PHPMyAdmin в Nginx
  •     Елементарен MAIL сървър
  •       Подобрение SSL/TLS, Maildir, LMTP
  •       Подобрение ВИРТУАЛИЗАЦИЯ без MySQL
  •       Подобрение ВИРТУАЛИЗАЦИЯ и MySQL
  •       Подобрение Антиспам - SpamAssasin
  •       Подобрение Антиспам - RSpamd
  •     Пълноценен MAIL сървър
  •     Пощенски сървър с iRedMail
  •       CertBot 1 домейн
  •       Виртуални хостове, CertBot 2 домейна
  •       DKIM, SPF и DMARK
  •       Допълнителни настройки (спам и т.н.)
  •     MAIL сървър за вътрешна мрежа
  •     NextCloud
  •     Сървър за отдалечен достъп - RustDESK

  • UBUNTU
  •   Ubuntu SERVER 22.04
  •     Инсталиране на Ubuntu 22.04 Server
  •     Първоначални настройки на Ubuntu 22.04 Server

  • ARCH
  •     Минимална базова инсталация на Arch
  •        Настройка на базовата система
  •        Инсталиране на OpenBOX
  •     Инсталиране на Arch на UEFI и ext4
  •     Инсталиране на Arch на UEFI и btrfs
  •       Резервно копиране в Arch
  •     Инсталиране на Arch на UEFI и DualBoot
  •     Инсталиране на Arch с DualBoot и archinstall
  •     KDE в Arch
  •     Инсталиране на KDE1 в Arch
  •     Инсталиране на LXQt върху Arch

  • RAID
  •     BIOS RAID1+MSDOS
  •     BIOS RAID1+MSDOS+LVM
  •     UEFI RAID1
  •     UEFI LVM RAID1

  • ZFS
  •     ZFS теория и малко практика

  • BTRFS
  •     BTRFS - създаване монтиране fstab размер
  •     BTRFS - RAID
  •     BTRFS - subvolume и snapshot

  • КОНТЕЙНЕРИ
  •     Инсталиране на LXC/LXD
  •     Образи (image) в LXC/LXD
  •     Контейнери в LXC/LXD
  •     Команди в LXC/LXD

  • ОТСТРАНЯВАНЕ НА ГРЕШКИ
  •     SWAP
  •     InitRAMFs

  • PROGRAMS
  •   Conky
  •   Sublime Text
  •   PiHole
  •   AdGuard

  • BGPOST
  •     Tar-App-01 SAMBA

  • Инсталиране на Arch на UEFI и btrfs

    Ако не сте чели предната статия за инсталиране на Arch на UEFI и ext4, непременно го направете. Това по-опростен вариант на това което ще правим тук. Ето и линк: https://tlan.net/menu/linux/arch/install_ext4/install_ext4.php Тук ще усложним задачата. Ще използваме файлова система BTRFS. Много спорна, казват не много надеждна но лично аз съм нямал проблеми с нея, а и работи много бързо. Разбира се изисква по здрава машина и диск който да е SSD. Ако имате SATA то няма смисъл да използвате BTRFS. Отново трябва да имате ISO образа за да можете да направите инсталация. Ако нямате, изтеглете го примерно от: https://mirror.telepoint.bg/archlinux/iso/, или от оригиналния сайт на:https://archlinux.org/download/. В оригиналния има линкове към множество сайтове на различни държави и всички могат да се ползват. Но да се върнем на нашия. Гледате коя е последната версия. В моя случай на текущия момент е 2025.05.01. Влизаме там и теглим https://mirror.telepoint.bg/archlinux/iso/2025.05.01/archlinux-2025.05.01-x86_64.iso. Имаме ISO файла и го правим на инсталационна флашка, диск или там каквото ползвате. В случая ще го ползвам във виртуална машина. Виртуалната машина е със следните параметри: CPU: 4 ядра RAM: 4096MB HDD: 55GB BIOS: UEFI Стартираме виртуалната машина.

    1

    Първото меню е за стартиране на инсталацията.

    2

    От горния екран виждаме, че трябва да имаме Интернет на системата за да може да продължим с инсталацията. За целта можем да ползваме iwctl, ако ползваме WiFi за връзка или mmcli, ако ползваме модем. В нашия случай ползваме Ethernet с DHCP и не трябва да настройваме нищо, но проверка ще направим чрез ping.

    ping dir.bg Pinging dir.bg [172.67.71.201] with 32 bytes of data: 64 bytes from 172.67.71.201: icmp_seq=1 ttl=06 time=13.5 ms 64 bytes from 172.67.71.201: icmp_seq=2 ttl=06 time=14.2 ms 64 bytes from 172.67.71.201: icmp_seq=3 ttl=06 time=14.5 ms 64 bytes from 172.67.71.201: icmp_seq=4 ttl=06 time=13.7 ms

    Интернет имаме, може да продължим с инсталацията. Между другото да сменим шрифта, че е много ситен.

    cd /usr/share/kbd/consolefonts ls setfont ter-128n setfont ter-v32n setfont ter-v22n find / |grep ter-128n

    Инсталиране през терминал

    Ще покажа начин как да инсталирате системата ползвайки терминален прозорец. Проблема е, че root няма парола и не може да се достигне през него до машината която инсталираме.

    ### Даваме парола на главния потребител passwd New password: NewPa$$ Retype new password: NewPa$$ passwd: password updated successfully ### Проверяваме IP адреса на мрежовия интерфейс. ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:f7:16:ce brd ff:ff:ff:ff:ff:ff altname enx080027f716ce inet 192.168.11.83/24 metric 100 brd 192.168.11.255 scope global dynamic enp0s3 valid_lft 84948sec preferred_lft 84948sec inet6 fe80::a00:27ff:fef7:16ce/64 scope link proto kernel_ll valid_lft forever preferred_lft forever

    Вече можем да се подключим към системата през SSH.

    Разделяне на диска за инсталация

    Да проверим какви дискове имаме и какви дялове.

    lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 846.7M 1 loop /run/archiso/airootfs sr0 11:0 1 1.2G 0 rom /run/archiso/bootmnt nvme0n1 259:0 0 55G 0 disk

    Имаме 1 диск nvme0n1 с размер 55GB. Да го занулим. Да премахнем всичко от него, примерно ако е имал някакви дялове и тип на диска.

    wipefs --all /dev/nvme0n1

    Да го проверим сега.

    fdisk -l /dev/nvme0n1 Disk /dev/nvme0n1: 55 GiB, 59055800320 bytes, 115343360 sectors Disk model: VMware Virtual NVMe Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes

    Освен размера на диска, нищо друго не се вижда. Значи е чист. Да го дефинираме. Диска трябва да бъде във формат GPT. Ще му създадем следните дялове: EFI: 523MB ОСНОВЕН: всичкото свободно останало място

    cfdisk /dev/nvme0n1

    3

    Дефинираме диска като gpt. Все пак ползваме UEFI.

    4

    Създаваме първи дял.

    5

    Размера му е 512MB.

    6
    7

    Дяла ще се ползва за EFI.

    8

    Създаваме втори дял за SWAP.

    9

    Размера му е 6GB. Ако ползвате хибернация, то SWAP дяла трябва да е 1.5 пъти по-голям от оперативната памет (4G x 1.5 = 6G).

    10
    11

    Дефинираме дяла да е за SWAP.

    12

    Останалото свободно място го дефинираме за самата операционна система. Всички основни файлове ще са тук.

    13
    14

    Оставяме дяла да бъде Linux filesystem. Записваме текущата конфигурация на диска.

    15

    Съгласяваме се с това което сме създали и пишем yes за потвърждение на конфигурацията.

    16

    Излизаме от конфигурацията на диска. Тук повече няма какво да правим. Да проверим какво имаме до тук.

    fdisk -l /dev/nvme0n1 Disk /dev/nvme0n1: 55 GiB, 59055800320 bytes, 115343360 sectors Disk model: VMware Virtual NVMe Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 0FC7659E-2C1A-4DE7-A53B-DDBA126F8AD7 Device Start End Sectors Size Type /dev/nvme0n1p1 2048 1050623 1048576 512M EFI System /dev/nvme0n1p2 1050624 13633535 12582912 6G Linux swap /dev/nvme0n1p3 13633536 115341311 101707776 48.5G Linux filesystem lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 846.7M 1 loop /run/archiso/airootfs sr0 11:0 1 1.2G 0 rom /run/archiso/bootmnt nvme0n1 259:0 0 55G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part ├─nvme0n1p2 259:2 0 6G 0 part └─nvme0n1p3 259:3 0 48.5G 0 part

    Всичко правилно е дефинирано. Да форматираме дяловете за да можем да ги ползваме. Започваме отзад и ще продължим до EFI. Казахме, че ще ползваме файлова система btrfs.

    mkfs.btrfs -f /dev/nvme0n1p3 btrfs-progs v6.14 See https://btrfs.readthedocs.io for more information. Performing full device TRIM /dev/nvme0n1p3 (48.50GiB) ... NOTE: several default settings have changed in version 5.15, please make sure this does not affect your deployments: - DUP for metadata (-m dup) - enabled no-holes (-O no-holes) - enabled free-space-tree (-R free-space-tree) Label: (null) UUID: f9c7549c-214d-4667-a9d2-d76677627558 Node size: 16384 Sector size: 4096 (CPU page size: 4096) Filesystem size: 48.50GiB Block group profiles: Data: single 8.00MiB Metadata: DUP 256.00MiB System: DUP 8.00MiB SSD detected: yes Zoned device: no Features: extref, skinny-metadata, no-holes, free-space-tree Checksum: crc32c Number of devices: 1 Devices: ID SIZE PATH 1 48.50GiB /dev/nvme0n1p3

    Втория дял казахме, че ще е за SWAP.

    mkswap /dev/nvme0n1p2 Setting up swapspace version 1, size = 6 GiB (6442446848 bytes) no label, UUID=3d869a39-117c-4ab9-866a-45348b5adf78

    Да активираме SWAPA.

    swapon /dev/nvme0n1p2

    Забележете, създадохме цял дял за SWAP. Можехме да ползваме и други варианти, примерно да е файл или ZRAM. Ако ползваме последните два метода няма да можем да правим моментни снимки на системата. По-точно ще можем, но се усложнява задачата. Когато SWAP-a е във вид на дял то моментната снимка става много лесно при BTRFS. Накрая да форматираме първия дял за EFI.

    mkfs.vfat -F32 /dev/nvme0n1p1 mkfs.fat 4.2 (2021-01-31)

    Всички дялове са форматирани и готови за употреба. Сега трябва да монтираме някъде дяловете които създадохме за да ги ползваме. Започваме с /dev/nvme0n1p3. Да го монтираме в папка /mnt.

    mount /dev/nvme0n1p3 /mnt lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 846.7M 1 loop /run/archiso/airootfs sr0 11:0 1 1.2G 0 rom /run/archiso/bootmnt nvme0n1 259:0 0 55G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part ├─nvme0n1p2 259:2 0 6G 0 part [SWAP] └─nvme0n1p3 259:3 0 48.5G 0 part /mnt

    До тук всичко е наред. В папката /mnt трябва да създадем няколко под тома. Под томовете също се наричат subvolume. Единия ще е за системата а другия за потребителите и последния за моментни снимки.

    btrfs subvolume create /mnt/@ Create subvolume '/mnt/@' btrfs subvolume create /mnt/@home Create subvolume '/mnt/@home' btrfs subvolume create /mnt/@snapshots Create subvolume '/mnt/@snapshots' btrfs su li /mnt ID 256 gen 10 top level 5 path @ ID 257 gen 10 top level 5 path @home ID 258 gen 10 top level 5 path @snapshots

    Връщаме се обратно в папката по подразбиране. В случая е /root.

    cd

    Размонтирваме папка /mnt.

    umount /mnt -R

    Сега вече ще монтираме в /mnt subvolume които създадохме. Първо монтираме subvoluma на корена, след това този за потребителите и накрая за моментните снимки.

    mount -o rw,noatime,compress=zstd:3,ssd,ssd_spread,discard=async,space_cache=v2,subvol=/@ /dev/nvme0n1p3 /mnt mount |grep mnt /dev/sr0 on /run/archiso/bootmnt type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048,iocharset=utf8,x-initrd.mount) /dev/nvme0n1p3 on /mnt type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=256,subvol=/@) mount |grep /mnt /dev/nvme0n1p3 on /mnt type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=256,subvol=/@)

    Основния субволюм е монтиран. В него ще се намират /@home и @snapshots Да създадем папки където ще се монтират горе указаните субволюми.

    mkdir /mnt/{home,.snapshots}

    Вече можем да монтираме и другите два субволюма.

    mount -o rw,noatime,compress=zstd:3,ssd,ssd_spread,discard=async,space_cache=v2,subvol=/@home /dev/nvme0n1p3 /mnt/home mount -o rw,noatime,compress=zstd:3,ssd,ssd_spread,discard=async,space_cache=v2,subvol=/@snapshots /dev/nvme0n1p3 /mnt/.snapshots mount |grep /mnt /dev/nvme0n1p3 on /mnt type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=256,subvol=/@) /dev/nvme0n1p3 on /mnt/home type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=257,subvol=/@home) /dev/nvme0n1p3 on /mnt/.snapshots type btrfs (rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvolid=258,subvol=/@snapshots)

    Да създадем папка boot. В нея ще монтираме EFI дяла.

    mkdir -p /mnt/boot mount /dev/nvme0n1p1 /mnt/boot

    Да проверим.

    lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 846.7M 1 loop /run/archiso/airootfs sr0 11:0 1 1.2G 0 rom /run/archiso/bootmnt nvme0n1 259:0 0 55G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part /mnt/boot ├─nvme0n1p2 259:2 0 6G 0 part [SWAP] └─nvme0n1p3 259:3 0 48.5G 0 part /mnt/.snapshots /mnt/home /mnt

    Всички дялове които ни трябват са монтирани. Готови сме да инсталираме системата на указаните от нас дялове.

    Инсталиране на системата на оразмерения диск

    pacstrap /mnt base linux linux-firmware btrfs-progs bash-completion nano ==> Initcpio image generation successful (13/15) Reloading system bus configuration... Skipped: Running in chroot. (14/15) Checking for old perl modules... (15/15) Updating the info directory file... pacstrap /mnt base linux linux-firmware nano btrfs-progs 22.25s user 48.13s system 63% cpu 1:50.95 total

    base - базови компоненти на системата linux - ядро на linux linux-firmware - файлов фърмуер на Linux, драйвери на ядрото за мрежови устройства, видеокарти и т.н. btrfs-progs - за нормална работа на файловата система btrfs bash-completion - автоматично допълване на командите в шела BASH nano - конзолен текстов редактор Генерираме точки на монтиране и ги записваме във файла fstab.

    genfstab -U /mnt # /dev/nvme0n1p3 UUID=f9c7549c-214d-4667-a9d2-d76677627558 / btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@ 0 0 # /dev/nvme0n1p3 UUID=f9c7549c-214d-4667-a9d2-d76677627558 /home btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@home 0 0 # /dev/nvme0n1p3 UUID=f9c7549c-214d-4667-a9d2-d76677627558 /.snapshots btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@snapshots 0 0 # /dev/nvme0n1p1 UUID=96FD-9224 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2 # /dev/nvme0n1p2 UUID=3d869a39-117c-4ab9-866a-45348b5adf78 none swap defaults 0 0 genfstab -U /mnt >> /mnt/etc/fstab cat /mnt/etc/fstab # Static information about the filesystems. # See fstab(5) for details. # <file system> <dir> <type> <options> <dump> <pass> # /dev/nvme0n1p3 UUID=f9c7549c-214d-4667-a9d2-d76677627558 / btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@ 0 0 # /dev/nvme0n1p3 UUID=f9c7549c-214d-4667-a9d2-d76677627558 /home btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@home 0 0 # /dev/nvme0n1p3 UUID=f9c7549c-214d-4667-a9d2-d76677627558 /.snapshots btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@snapshots 0 0 # /dev/nvme0n1p1 UUID=96FD-9224 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2 # /dev/nvme0n1p2 UUID=3d869a39-117c-4ab9-866a-45348b5adf78 none swap defaults 0 0

    Системата е инсталирана. Точките за монтиране са описани.

    Първоначални настройки на системата

    Сменяме корена на системата. Вече няма да е /mnt/, а ще е /

    arch-chroot /mnt

    Вече корена на системата ни е /. Да проверим.

    ls bin dev home lib64 opt root sbin sys usr boot etc lib mnt proc run srv tmp var lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 846.7M 1 loop sr0 11:0 1 1.2G 0 rom nvme0n1 259:0 0 55G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part /boot ├─nvme0n1p2 259:2 0 6G 0 part [SWAP] └─nvme0n1p3 259:3 0 48.5G 0 part /.snapshots /home /

    Забележете, точките на монтиране вече не са в /mnt

    Дефиниране на локални настройки, време, зона, език за ползване

    Първо ще покажа как да се направи от командния ред, после ще покажа как се прави през текстовия редактор. Дефиниране часовия пояс и синхронизиране на локалния часовник.

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

    Да проверим:

    date Sat May 31 16:53:42 UTC 2025

    Дефиниране езика за ползване в системата.

    echo "bg_BG.UTF-8 UTF-8" >> /etc/locale.gen echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen cat /etc/locale.gen ................................. #zh_TW BIG5 #zu_ZA.UTF-8 UTF-8 #zu_ZA ISO-8859-1 bg_BG.UTF-8 UTF-8 en_US.UTF-8 UTF-8

    Дефинирахме езика който ще ползва системата. Да генерираме локалните настройки които указахме по-горе.

    locale-gen Generating locales... bg_BG.UTF-8... done en_US.UTF-8... done Generation complete.

    Да създадем конфигурационен файл указващ езика който ще показва системата ни.

    echo LANG=en_US.UTF-8 > /etc/locale.conf export LANG=en_US.UTF-8

    Ползваме език за показване на системата Английски, Българския понякога прави проблеми. Сега да покажем горните команди чрез текстов редактор. Започваме с регионалните настройки. Указваме регион и език на системата.

    nano /etc/locale.gen #bg_BG.UTF-8 UTF-8 bg_BG.UTF-8 UTF-8 #en_US.UTF-8 UTF-8 en_US.UTF-8 UTF-8 ### Генерираме локалните настройки locale-gen Generating locales... bg_BG.UTF-8... done en_US.UTF-8... done Generation complete. ### Указваме системата на кой език да работи. Аз ползвам английски. nano /etc/locale.conf LANG=en_US.UTF-8 export LANG=en_US.UTF-8

    Мрежови настройки

    Отново първо ще настроим мрежата през конзола, а след това ще покажа и през текстов редактор. Дефинираме хоста.

    echo My-PC >> /etc/hostname

    Поправяме файла /etc/hosts.

    echo "127.0.1.1 My-PC.localdomain My-PC" >> /etc/hosts cat /etc/hosts # Static table lookup for hostnames. # See hosts(5) for details. 127.0.0.1 localhost ::1 localhost 127.0.1.1 My-PC.localdomain My-PC

    Да видим как става чрез текстов редактор. Даваме име на хоста и го обвързваме с IP.

    nano /etc/hostname My-PC nano /etc/hosts # Static table lookup for hostnames. # See hosts(5) for details. 127.0.0.1 localhost ::1 localhost 127.0.1.1 My-PC.localhostdomain My-PC

    Не сме приключили с мрежовите настройки. Примерно ако рестартираме системата няма да имаме мрежа. Мрежовия интерфейс няма да получи IP, шлюз по подразбиране DNS и т.н. На по-късен етап ще оправим проблема.

    Дефиниране на потребителите

    Започваме със създаване на парола за главния потребител root.

    passwd root New password: Pa$$ Retype new password: Pa$$ passwd: password updated successfully

    Следва създаване на втори потребител, различен от root. Не е добра практика да се работи с главния потребител.

    useradd -m -g users -G wheel -s /bin/bash cccp

    Създадохме потребител cccp, който е член на групата users със шел bash. Също така го присъединихме към групата wheel. Последната група е специална, използвайки sudo може да изпълнява команди с права на главния потребител. Да дадем парола на новия потребител.

    passwd cccp New password: Pa$$ Retype new password: Pa$$ passwd: password updated successfully

    Да проверим новия потребител.

    id cccp uid=1000(cccp) gid=984(users) groups=984(users),998(wheel)

    Потребителя е член на групите users и wheel Ако по някаква причина се налага да добавите потребителя към нова група, то командата е:

    usermod -aG audio,games,video,storage,power cccp id cccp uid=1000(cccp) gid=984(users) groups=984(users),50(games),98(power),998(wheel),996(audio),987(storage),985(video)

    Остана новия потребител да има sudo права. Добавяме права sudo за групата wheel.

    echo "%wheel ALL=(ALL:ALL) ALL" >> /etc/sudoers cat /etc/sudoers ........................ ## Read drop-in files from /etc/sudoers.d @includedir /etc/sudoers.d %wheel ALL=(ALL:ALL) ALL ### Или чрез текстов редактор EDITOR=nano visudo ## User privilege specification ## root ALL=(ALL:ALL) ALL ## Uncomment to allow members of group wheel to execute any command # %wheel ALL=(ALL:ALL) ALL %wheel ALL=(ALL:ALL) ALL

    Дефинирахме cccp да е групата на SUDO. Сега да инсталираме и самия пакет.

    pacman -S sudo

    Почти сме готови. Остава да оправим зареждащия модул.

    GRUB и допълнителни настройки

    За зареждане на системата ще ползваме GRUB. Има и други варианти но този е много гъвкав и стабилен. За да го ползваме обаче първо трябва да се инсталират няколко пакета, чрез които може на по-късен етап да се настрои.

    pacman -S grub efibootmgr

    grub - буут мениджър (софтуерът, който се изпълнява преди операционната система и който ви позволява да избирате измежду няколко операционни системи на вашия компютър) efibootmgr - помощна програма за управление на UEFI. Това не е зареждащ модул, а помощна програма

    Инсталиране на GRUB

    След като сме инсталирали пакетите можем да инсталираме GRUB на нашите дялове за зареждане, както и да го конфигурираме. Започваме с BTRFS. По подразбиране ядрото не разпознава файловата система btrfs. Тя трябва да се зареди като драйвер.

    nano /etc/mkinitcpio.conf # vim:set ft=sh # MODULES # The following modules are loaded before any boot hooks are # run. Advanced users may wish to specify all system modules # in this array. For instance: # MODULES=(usbhid xhci_hcd) MODULES=(btrfs) mkinitcpio -p linux ==> Generating module dependencies ==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-fallback.img' -> Early uncompressed CPIO image generation successful ==> Initcpio image generation successful

    Да инсталираме GRUB.

    grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot Installing for x86_64-efi platform. Installation finished. No error reported.

    Генерираме конфигурацията на GRUB. За сега нищо не сме променяли в GRUB, просто генерираме конфигурацията.

    grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux.img Found fallback initrd image(s) in /boot: amd-ucode.img initramfs-linux-fallback.img Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. Adding boot menu entry for UEFI Firmware Settings ... done

    Мрежови настройки

    Вариант 1

    За мене това е по-иновативен вариант. Да инсталираме пакета networkmanager и да го стартираме като демон. На по-късен етап когато ще ползваме графична среда в системата това ще ни е от полза. Да го инсталираме и активираме.

    ### Първво го инсталираме pacman -Sy networkmanager ### След това го активираме systemctl enable NetworkManager Created symlink '/etc/systemd/system/multi-user.target.wants/NetworkManager.service' → '/usr/lib/systemd/system/NetworkManager.service'. Created symlink '/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service' → '/usr/lib/systemd/system/NetworkManager-dispatcher.service'. Created symlink '/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service' → '/usr/lib/systemd/system/NetworkManager-wait-online.service'.

    Вариант 2

    Това е по-твърдия вариант, съответно и по-лекия. За целта е необходимо да се инсталира демона dhcpcd, отговарящ за DHCP клиентската част.

    pacman -S dhcpcd

    Демона е инсталиран но след рестарта няма да е активен. За да го активираме първо трябва да определим на кой интерфейс ще работи демона.

    ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000 link/ether 08:00:27:d3:4b:42 brd ff:ff:ff:ff:ff:ff altname enx080027d34b42 inet 192.168.11.87/24 brd 192.168.11.255 scope global dynamic noprefixroute enp0s3 valid_lft 454sec preferred_lft 379sec inet6 2a01:5a8:328:915a:5d3:ec02:22e8:a7b0/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 86390sec preferred_lft 3590sec inet6 fe80::6d1b:b70:beed:7b78/64 scope link valid_lft forever preferred_lft forever

    След като определихме интерфейса да активираме демона.

    systemctl enable dhcpcd@enp0s3 Created symlink '/etc/systemd/system/multi-user.target.wants/dhcpcd@enp0s3.service' → '/usr/lib/systemd/system/dhcpcd@.service'.

    Допълнителни настройки

    Системата зареди но нямаме достъп до нея през SSH. За целта:

    pacman -S openssh systemctl enable sshd

    Да проверим дали SSH "слуша" на порт 22.

    ss -tulpn | grep 22 udp UNCONN 0 0 127.0.0.54:53 0.0.0.0:* users:(("systemd-resolve",pid=759,fd=22)) tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1066,fd=6)) tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1066,fd=7))

    Готиви сме с инсталацията. Излизаме от режима arch-chroot /mnt и след това се рестартираме.

    exit reboot

    След рестарта системата зарежда нормално.

    Всичко е точно.

    SWAP във вид на файл

    Ако по някаква причина не харесвате SWAP-а да е във вид на дял, то можете да го генерирате във вид на файл.

    Вариант 1

    Ръководел съм се от: https://nwb.sh/btrfs_swapfile_hibernation/ За начало да деактивираме Btrfs COW за swap подтом. Това може да се постигне чрез добавяне на +C атрибута към директорията за монтиране.

    mkdir /swap chattr +C /swap

    Да проверим:

    lsattr -d /swap ---------------C------ /swap

    За следващата стъпка ни е необходим btrfs-progs. Ние по-рано сме го инсталирали но, ако липсва да го инсталираме.

    pacman -S btrfs-progs

    Имаме btrfs-progs, да генерираме свап файла.

    btrfs filesystem mkswapfile --size 6G /swap/swapfile create swapfile /swap/swapfile size 6.00GiB (6442450944)

    Ако възнамерявате да хибернирате, препоръчвам размерът на swap файла да е поне равен на този на вашата памет, а още по-добре е swap-a да е 1.5 пъти по-голям от оперативната памет. Тъй като моята виртуална машина тук има 4GB RAM, моят swap ще бъде 6GB. Да добавим новия swap файл към fstab, така че системата да го използва автоматично.

    echo "/swap/swapfile none swap defaults 0 0" | tee -a /etc/fstab swap/swapfile none swap defaults 0 0 cat /etc/fstab # Static information about the filesystems. # See fstab(5) for details. # <file system> <dir> <type> <options> <dump> <pass> # /dev/nvme0n1p2 UUID=07b412e3-3c23-4325-a1d3-bf2026ea0653 / btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@ 0 0 # /dev/nvme0n1p2 UUID=07b412e3-3c23-4325-a1d3-bf2026ea0653 /home btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@home 0 0 # /dev/nvme0n1p2 UUID=07b412e3-3c23-4325-a1d3-bf2026ea0653 /swap btrfs rw,noatime,compress=zstd:3,ssd_spread,discard=async,space_cache=v2,subvol=/@swap 0 0 # /dev/nvme0n1p1 UUID=6ECA-5068 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2 /swap/swapfile none swap defaults 0 0

    Вариант 2

    Ако по някаква причина не желаете да имате дял за SWAP, то може да го създадете във вид на файл. Създаваме SWAP файл с размер 2GB.

    mkswap -U clear --size 2G --file /swapfile

    Активираме SWAP-a.

    swapon /swapfile

    След рестарта за да е активен SWAP-а трябва да се добави в /etc/fstab.

    nano /etc/fstab ### Най-отдолу добавяме /swapfile none swap defaults 0 0

    Моментни снимки

    Свойства на подтома

    Да проверим какви подтомове имаме.

    su - btrfs su li / ID 256 gen 53 top level 5 path @ ID 257 gen 51 top level 5 path @home ID 258 gen 10 top level 5 path @snapshots ID 259 gen 27 top level 256 path var/lib/portables ID 260 gen 27 top level 256 path var/lib/machines

    Да проверим свойствата на подтома снапшот.

    btrfs su sh /.snapshots @snapshots Name: @snapshots UUID: 25148939-de35-c944-9fdf-be38b97a6a0b Parent UUID: - Received UUID: - Creation time: 2025-06-08 19:38:04 +0300 Subvolume ID: 258 Generation: 10 Gen at creation: 10 Parent ID: 5 Top level ID: 5 Flags: - Send transid: 0 Send time: 2025-06-08 19:38:04 +0300 Receive transid: 0 Receive time: - Snapshot(s): Quota group: n/a

    Моментна снимка

    btrfs subvolume snapshot -r /path/to/subvol /path/to/snapshot

    -r - заключваме моментната снимка за промени. Моментната снимка също е подтом, но просто има разширени свойства. Основната им разлика е, че моментната снимка има записи за това от кой подтом е създадена. Това са полетата Parent UUID и Received UUID . Подтомът също има тези полета, но те винаги са празни. Така че по същество моментна снимка и подотом са едно и също нещо. Още няколко полезни команди.

    sudo btrfs su get-default / ID 5 (FS_TREE) sudo btrfs su li / ID 256 gen 79 top level 5 path @ ID 257 gen 77 top level 5 path @home ID 258 gen 9 top level 5 path @.snapshots ID 259 gen 14 top level 256 path var/lib/portables ID 260 gen 14 top level 256 path var/lib/machines sudo btrfs su set-default 256 / sudo btrfs su get-default / ID 256 gen 79 top level 5 path @

    С това приключвам базовата инсталация на Arch Linux.