Linux
October 23

Установка Arch Linux с шифрованием + LVM

Сегодня мы рассмотрим, как установить Arch Linux, применив шифрование корневого раздела и технологию LVM. Вы можете сохранить эту статью для себя и использовать как памятку. Если вам нужно установить Arch Linux БЕЗ шифрования и LVM, то можете перейти к другой моей статье, в которой вы найдете все тоже самое, но без соответствующей информации.

Скачиваем образ и создаем загрузочный носитель

Скачать образ Arch Linux можно с данной страницы официального сайта.
Теперь, когда мы скачали образ, необходимо его загрузить на внешний накопитель (например, флешку) и сделать данный накопитель загрузочным, но прежде нам нужно убедиться в подлинности и целостности файла. Как это сделать, я показывал здесь. Еще это необходимо для того, чтобы избежать проблем во время установки, которые могут возникнуть, если iso-файл поврежден.

Для загрузки образа на флешку может подойти различное программное обеспечение, например BalenaEtcher. Я рекомендую использовать Ventoy, т.к. данное ПО позволяет не просто создавать загрузочные носители, но и делать их мультизагрузочными. Достаточно просто переместить iso на накопитель и запуститься с него.

Запускаемся с установочного носителя и начинаем процесс установки

Не забывайте пользоваться ArchWiki (RU) в случае, если возникли какие-то проблемы во время установки или если хотите посмотреть дополнительную информацию! Например, вот руководство по установке:
Installation guide (Русский)

Подключение к интернету

Если беспроводное подключение

Запускаем утилиту iwctl:
iwctl
Для вывода справки:
help
Смотрим список устройств:
device list
Если устройство выключено (Powered: off), то включаем:
device <устройство> set-property Powered on или adapter <адаптер> set-property Powered on
Сканируем ближайшие Wi-Fi-сети:
station <устройство> scan
Получаем список найденных сетей:
station <устройство> get-networks
Подключаемся к сети:
station <устройство> connect <SSID> (SSID - это название Wi-Fi-сети)

ВНИМАНИЕ!
Если необходимо беспроводное подключение к скрытой сети, то используем соответствующие команды, которые имеют в названии слово "hidden". Например, для получения списка скрытых сетей:
station <устройство> get-hidden-access-points
Для подключения к скрытой сети:
station <устройство> connect-hidden

Если проводное подключение:

При проводном подключении (с помощью Ethernet-кабеля) всё должно работать без каких-либо настроек.

Проверяем подключение

Обнаружение сетевых устройств
ip link
Отправка запросов и получение ответов на сайт archlinux.org для проверки подключения к интернету:
ping archlinux.org
Вместо archlinux.org может быть абсолютно любой доступный домен, например google.com. Если вывод успешный, то подключение есть и мы можем остановить отправку запросов с помощью сочетания клавиш CTRL+C.

Настройка даты и времени

Проверить дату и время можно с помощью следующей команды:
timedatectl
Если дата и время указаны неправильно, то исправляем. Указываем часовой пояс:
timedatectl set-timezone Europe/Moscow (не забывайте про возможность ориентироваться по региону/городу с помощью клавиши Tab. Это полезно, например если вы забыли как пишется Европа на английском или хотите посмотреть какие вообще регионы доступны).
Устанавливаем соединение с NTP-сервером:
timedatectl set-ntp true

Проверяем изменения:
timedatectl

ИНФОРМАЦИЯ: NTP (Network Time Protocol)-сервер предназначен для синхронизации времени в соответствии с часовым поясом. Компьютер получает информацию от NTP и использует её для отображения правильного времени.

Разметка и шифрование диска

Смотрим список дисков:
fdisk -l

После того, как нашли нужный диск, стираем с него все данные с помощью blkdiscard:
blkdiscard -s /dev/nvme0n1
Если диск не поддерживает режим --secure, то можно использовать --zeroout, чтобы заполнить его нулями:
blkdiscard -z /dev/nvme0n1
Если на диске уже есть базовая разметка, то может понадобиться использовать -f (программа сама сообщит об этом):
blkdiscard -z -f /dev/nvme0n1

Думаю, стоит отметить, что этот процесс не быстрый и придется долго ждать завершения операции. Использовать blkdiscard необходимо для того, чтобы избежать утечки данных. Далее делаем разметку и шифруем основной раздел:
cfdisk /dev/nvme0n1 (здесь создаем загрузочный раздел с типом EFI System и основной с типом Linux Filesystem)

Шифрование и LVM:
cryptsetup luksFormat /dev/nvme0n1p2
cryptsetup open /dev/nvme0n1p2 luks
ls /dev/mapper (должна быть директория luks)
pvcreate /dev/mapper/luks
vgcreate main /dev/mapper/luks
lvcreate -l 100%FREE main -n root

Проверяем:
lvs

Форматируем:
mkfs.ext4 /dev/mapper/main-root
mkfs.fat -F32 /dev/nvme0n1p1

Монтируем:
mount /dev/mapper/main-root /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot

Устанавливаем необходимые пакеты

Ставим пакеты для установки базовой системы в /mnt:
pacstrap -i /mnt base linux linux-firmware base-devel lvm2 nano sudo networkmanager

fstab

Генерируем файл fstab, чтобы для идентификации разделов использовались UUID или метки:
genfstab -U /mnt >> /mnt/etc/fstab

Обновляем initramfs

arch-chroot /mnt
nano /etc/mkinicpio.conf
в HOOKS после filesystems добавляем encrypt и lvm2, чтобы было вот так:

mkinitcpio -p linux

Устанавливаем загрузчик

bootctl install --path=/boot

Настриваем:
nano /boot/loader/loader.conf
В файле указываем timeout 0, чтобы не ждать 3 секунды и сразу загружалась система, а также указываем файл arch (который мы далее создадим):

timeout 0
default arch

nano /boot/loader/entries/arch.conf

title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options rw cryptdevice=UUID=UUID-раздела:main root=/dev/mapper/main-root

(вместо "UUID-раздела" ставим свое значение. UUID раздела можно узнать с помощью cryptsetup luksUUID /dev/nvme0n1p2)

Настраиваем время

Задаем часовой пояс:
ln -sf /usr/share/zoneinfo/<регион/город> /etc/localtime (например: ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime)

Генерируем /etc/adjtime для синхронизации с аппаратными часами:
hwclock --systohc

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

nano /etc/locale.gen - здесь раскомментируем en_US и ru_RU с кодировкой UTF-8.
locale-gen

Настройка сети

Создаем /etc/hostname и добавляем сетевое имя компьютера:
nano /etc/hostname
Например, имя компьютера - archlinux

Редачим hosts:
nano /etc/hosts

127.0.0.1    localhost
::1          localhost

Настраиваем пользовательские данные

Ставим пароль на root:
passwd
Другой пользователь (например, user):
useradd -m user - для того, чтобы создать пользователя
passwd user - для того, чтобы установить пароль
usermod -aG wheel,audio,video,storage,optical,scanner,floppy user - для добавления пользователя в группы

Привелегии sudo:
EDITOR=nano visudo - убираем комментарий с %wheel ALL=(ALL:ALL) ALL

Включаем NetworkManager:
systemctl enable NetworkManager

Выходим и перезагружаем:

exit
umount /mnt -l
reboot

После перезагрузки должен запрашиваться пароль для расшифровки диска. Далее запускается система. Обратите внимание, что при вводе пароля, символы не отображаются.


Мой Telegram

Мой GitHub

Поддержать автора донатом