Установка 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/nvme0n1p2cryptsetup open /dev/nvme0n1p2 luksls /dev/mapper (должна быть директория luks)pvcreate /dev/mapper/luksvgcreate main /dev/mapper/lukslvcreate -l 100%FREE main -n root
Форматируем:mkfs.ext4 /dev/mapper/main-rootmkfs.fat -F32 /dev/nvme0n1p1
Монтируем:mount /dev/mapper/main-root /mntmkdir /mnt/bootmount /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 /mntnano /etc/mkinicpio.conf
в HOOKS после filesystems добавляем encrypt и lvm2, чтобы было вот так:
Устанавливаем загрузчик
Настриваем: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
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
Выходим и перезагружаем:
После перезагрузки должен запрашиваться пароль для расшифровки диска. Далее запускается система. Обратите внимание, что при вводе пароля, символы не отображаются.