Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкция по установке (в основном для собственного пользования) Arch Linux (условия таковы установка с использованием UEFI и на файловую систему BTRFS на чистый накопитель) с пояснениями и все возможными мыслями. Действия будут происходить на KVM/QEMU для наглядности
Загружаемся с предварительно подготовленного накопителя (обратите внимание в пунктах в скобках будет написано UEFI, иначе загрузка в режиме Legacy)
если проглядели этот момент, то можно проверить командой:
# ls /sys/firmware/efi/efivars
если все как на скриншоте, то поздравляю вы загрузились в режиме UEFI, вы на верном пути
далее настраиваем окружение, дату и время: переключение языков (ru/en, в принципе как бы это и не обязательно)
# loadkeys ru
поддержка кириллицы
# setfont cyr-sun16
включение синхронизации времени
# timedatectl set-ntp true
настраиваем часовой пояс (в данном случае Европа/Москва)
# timedatectl set-timezone Europe/Moscow
проверяем состояние времени
# timedatectl status
Если все как на скриншоте, замечательно, мы настроили: поддержку кириллицы, дату, время, часовой пояс. Двигаемся дальше, пора определится на какой накопитель будем устанавливать Arch Linux.
Так как в демонстрации виртуальная машина, то у нас один диск VDA, у вас же вероятно будут SDA, SDB (SATA - накопители, не важно это ssd/hdd), либо же NVME0N1, NVME1N1 (это NVME - накопители), надо определиться. В данном случае у нас отдельный накопитель без разметки!!!
И так наш диск на 40Gb, подготовим его к установки, создав разделы с помощью cfdisk команда:
# cfdisk /dev/vda
в данном случае выбираем GPT, создадим разделы
- /dev/vda1 размером 512Mb(более достаточно) указываем тип EFI System - тут будет жить загрузчик, раздел BOOT
- /dev/vda2 тип Linux filesystem, размер уже на ваше усмотрение тут будет сама система, раздел ROOT
- /dev/vda3 тип Linux swap, опять же на ваше усмотрение (добавил для демонстрации) так то можно создать и файл-swap, но это уже другая история, хотя в некоторых случаях можно обойтись и без него, опять же на ваше усмотрение
не забудьте записать(пункт write) и подтвердить изменения, написав yes. Часть ответственной работы выполнена идем дальше
для проверки вводим команду(для наглядности я ее буду часто применять)
# lsblk
если все как на скриншоте, то могу вас поздравить, вы подготовили накопитель к установке Arch Linux, двигаемся дальше. Теперь надо отформатировать разделы, и так, план такой
- /dev/vda1 - FAT32
- /dev/vda2 - BTRFS
- /dev/vda3 - раздел SWAP
форматируем /dev/vda1 в FAT32 командой
# mkfs.vfat -F 32 /dev/vda1
далее форматируем /dev/vda2 в BTRFS команда
# mkfs.btrfs /dev/vda2
подключаем раздел swap командами
# mkswap /dev/vda3
# swapon /dev/vda3
если все сделано как на скриншоте, отлично, двигаемся дальше
Далее, нам нужно под монтировать раздел /dev/vda2 (ROOT) в каталог /mnt следующей командой
# mount /dev/vda2 /mnt
для наглядности до и после использовал lsblk
и так переходим в директорию /mnt командой
# cd /mnt
далее создаем subvolium'ы для ROOT и HOME (так как мы используем BTRFS надо пользоваться всеми ее прелестями и возможностями, а так же если будите пользоваться timeshift'ом, на первых парах изучения весьма полезна)
subvoliume для ROOT раздела (btrfs subvolume create @ можно использовать сокращения как на скрине)
# btrfs su cr @
аналогично для HOME
# btrfs su cr @home
далее вернемся в корень / командой
# cd /
и от монтируем раздел ROOT от /mnt командой
# umount /mnt
что бы удостовериться вводим команду lsblk. И самое страшное монтируем subvolium'ы, не пугайтесь просто команда длинная(рекомендую дополнительно изучить параметры монтирования, вероятно что-то может пригодится), монтируем subvolume ROOT в /mnt:
mount -o noatime,compress=zstd:2,space_cache=v2,discard=async,subvol=@ /dev/vda2 /mnt
теперь важный момент надо создать директорию /mnt/home иначе вы не при монтриуете subvolume HOME:
mkdir /mnt/home
готово, монтируем subvolume HOME:
mount -o noatime,compress=zstd:2,space_cache=v2,discard=async,subvol=@home /dev/vda2 /mnt/home
давайте разберем опции монтирования:
noatime - не обновлять время доступа к файлу
compress=zstd:2 - включает алгоритм прозрачного сжатия zstd (есть еще lzo и zlib) 2 это степень сжатия
space_cache=v2 - Кэширование данных о свободных блоках, чтобы не искать их перед записью в данном примере использую 2 версии
discard=async - Незанятые блоки, группируются и освобождаются позже в отдельном потоке, что улучшает задержки при записи на диск (так скажем более бережное отношение к ssd в плане перезаписи) можно добавит параметр ssd (хотя она включается автоматически) так же есть еще ssd_spread вынуждает драйвер использовать для записи преимущественно не занятые области диска, что специально вызывает сильную фрагментацию. Может значительно ускорить недорогие ssd. autodefrag - дефрагментация на «лету», не применять для SSD. не использовал эти параметры, вычитал на просторах инета.
subvol=@home - Монтирует подраздел @home (аналогично @). Увлекся, продолжаем дальше.
дабы убедится в монтировании используем уже заученную команду lsblk. Замечательно, мы увидели все наши точки монтирования, создаем директории для монтирования раздела BOOT командой:
mkdir -p /mnt/boot/efi
далее монтируем раздел BOOT в только что созданную директорию командой
mount /dev/vda1 /mnt/boot/efi
для пущей верности запускаем команду lsblk, что бы увидеть все точки монтирования, если все как на скриншоте, спешу вас поздравить половина работы считайте выполнено
приступаем к установке следующей командой:
# pacstrap -i /mnt base base-devel linux-zen linux-zen-headers linux-firmware dosfstools btrfs-progs amd-ucode nano
основные пакеты base base-devel linux-firmware
дополнительные пакеты для работе с файловыми системами dosfstools btrfs-progs
пакеты для amd-процессора amd-ucode и для intel-процессора intel-ucode iucode-tool
ядра linux-zen linux-zen-headers или linux linux-headers или linux-lts linux-lts-headers, дополнительную информацию по ядрам можно самостоятельно поискать на просторах интернета
пакет nano нам потребуется для редактирования файлов конфигураций (для новичков это будет удобным инструментом) приступаем
далее возможно вы столкнетесь с небольшим нюансом, что собственно поправимо, но для новичков я просто обязан упомянуть, вроде все шло гладко и тут на тебе
PGP сигнатуры не совпадают и дальше ни куда, обычно это решается достаточно просто, но не считается в целях безопасности правильным, опустим эти дебаты
правим pacman.conf, опять же настоятельно рекомендую не делайте так на "боевой" машине, для установки арча в принципе можно
открыли ищем параметр SigLevel исправляем значение на Never то бишь не проверяем сигнатуры пакетов, кстати за одно раз комментируем секцию [Multilib] и ее параметр include = .., это дополнительный репозиторий(не забудьте провернуть данную операцию на установленном Арче). В дополнение можно еще разкомментировать параметр ParallelDownloads = 5 это количество одновременных загрузок пакетов (так же и на установленном Арче).
все должно пройти как по маслу, считайте больше половина работы по установке уже за плечами
и так давайте убедимся что все под монтировано командой
# lsblk
если это так генерируем файл fstab командой
# genfstab -U /mnt > /mnt/etc/fstab
отлично, давайте убедимся в этом с помощью команды
# cat /mnt/etc/fstab
или
# nano /mnt/etc/fstab
должно быть подобно как скриншоту выше, замечательно двигаемся дальше
далее переходим в установленную систему с помощью
# arch-chroot /mnt
настраиваем часовой пояс(вы же указывайте свой)
# ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
# hwclock --systohc
переходим к локализации правим конфиг locale.gen командой
# nano /etc/locale.gen
да и помните, английская локализация обязательна!!! с нужной нам локализации убираем #
например вот такие
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
Прилагаю скриншот для наглядности
генерируем локали с помощью команды
# locale-gen
должно быть примерно как на скриншоте, замечательно, двигаемся дальше
далее правим конфиг locale.conf командой
# nano /etc/locale.conf
вносим LANG=ru_RU.UTF-8
далее правим конфиг vconsole.conf командой
# nano /etc/vconsole.conf
вносим следующие строки
KEYMAP=ru
FONT=cyr-sun16
далее правим конфиг localhost командой
# nano /etc/localhost
это будет имя системы в сети, называем как душе угодно, но латиницей
далее правим конфиг hosts командой
# nano /etc/hosts
вносим следующие строки:
127.0.0.1 localhost
::1 localhost
основная часть ОСки сконфигурирована
переходим к ответственной части, iniramfs с помощью команды
# mkinitcpio -p linux-zen (если ядер несколько)
или же
# mkinitcpio -P linux-zen (если ядро одно)
либо другое ядро linux или linux-lts в зависимости какие ставили с помощью pacstrap, если все так, двигаемся дальше
далее устанавливаем загрузчик и сетевые утилиты командой:
# pacman -S grub efibootmgr dhcpcd dhclient networkmanager
далее устанавливаем grub на накопитель(именно на устройство а не раздел, не путайте) должно быть согласно скриншоту
# grub-install /dev/vda
grub сам знает что куда ему записывать
далее конфигурируем grub командой
# grub-mkconfig -o /boot/grub/grub.cfg
согласно скриншоту должно быть так, да? замечательно двигаемся дальше
далее с помощью команды
# passwd
ставим пароль на пользователя Root
далее выходим из chroot командой
# exit
отмонтируем разделы
# umount -R /mnt
убедимся в этом командой
# lsblk
ну и перезапускаем машину с помощью
# reboot
поздравляю только что мы установили Arch Linux но это еще не все, осталось самую малость
логинимся под root, замечательно проверяем есть ли инет с помощью ping, иначе поднимаем сеть
# systemctl enable dhcpcd
# systemctl start dhcpcd
# systemctl status dhcpcd
проверяем pingом если все как на скрине вы подняли сеть.
далее правим конфиг sudoers команда
# nano /etc/sudoers
если такого файла нет то устанавливаем sudo командой
# pacman -S sudo
раскомментируем строку %wheel ALL=(ALL:ALL) ALL и добавляю в группу wheel своего пользователя.
К размышлению, нюанс в плане безопасности, все пользователи этой группы будут иметь права выполнять что либо от Root
какие варианты:
- явно прописать своего пользователя например пользователь john ALL=(ALL:ALL) ALL
- пользователя который будет обладать правом выполнять что либо от Root добавить еще в группу sudo и ее только раскомментировать в файле sudoers строка %sudo ALL=(ALL:ALL) ALL
получится что пользователи состоящее в группе wheel не будут иметь право выполнять что либо от Root, а состоящие в sudo имеют право выполнять что либо от Root, следовательно пользователь john будет в группах wheel и sudo что бы иметь право выполнять что либо от Root (запутано написал, сам в шоке, но думаю вы поняли ход мыслей)
добавляем пользователя john в группу wheel
# useradd -m -G wheel -s /bin/bash john
далее задаем пароль для пользователя john
# passwd john
перезапускаемся
# reboot
отлично, вы настроили пользователя, по сути базовая установка и настройка завершена, но без оболочки.
далее будем
- устанавливать видео драйвера
- устанавливать yay для установки приложений из AUR
За основу взято ArchWiki, так же несколько инструкций от других пользователей и переписаны под себя
За сим откланиваюсь...