Установка Arch Linux с помощью Btrfs и шифрования

Для тех, кто хочет установить Arch Linux, я надеюсь, что это руководство окажется полезным. Большая часть информации взята с сайта https://wiki.archlinux.org/. Преимущество этого руководства в том, что вся информация доступна на одной странице. Данное руководство предполагает, что мы знаем, как загрузить образ Arch Linux и загрузиться в него, а система загрузится в режиме UEFI. Мы будем возиться с нашими системами, поэтому я настоятельно рекомендую внимательно прочитать это руководство. С этим покончено, давайте начнем.

Изменение клавиатуры консоли

Тем, кто использует другую раскладку клавиатуры, может понадобиться изменить карту клавиш консоли. Чтобы перейти на dvorak, выполните следующие действия:

loadkeys dvorak
Войти в полноэкранный режим Выйти из полноэкранного режима

Подключение

Далее нам нужно подключиться к Интернету. Если ваше устройство подключено к сети через Ethernet-кабель, то все должно быть в порядке. В противном случае мы можем подключиться к сети Wi-Fi с помощью iwctl:

iwctl
Войти в полноэкранный режим Выйти из полноэкранного режима

Узнайте имя вашего беспроводного устройства:

device list
Войти в полноэкранный режим Выйти из полноэкранного режима

Сканирование сетей:

station <device name> scan
Войти в полноэкранный режим Выход из полноэкранного режима

Список SSID сетей:

station <device name> get-networks
Войти в полноэкранный режим Выход из полноэкранного режима

Подключиться к сети:

station <device-name> connect <SSID>
Войти в полноэкранный режим Выйти из полноэкранного режима

Выйдите из iwctl, отправив сигнал SIGINT с помощью Ctrl+c.
Проверить соединение:

ping archlinux.org
Войти в полноэкранный режим Выйти из полноэкранного режима

Если мы получим ответ, то можем прекратить пинг, используя Ctrl+c.

Обновление системных часов

Позаботившись о подключении, давайте включим и запустим синхронизацию сетевого времени:

timedatectl set-ntp true
Войдите в полноэкранный режим Выход из полноэкранного режима

Создание разделов

Теперь мы начинаем процесс разметки дисков. Сначала определим диски в /proc/partitions:

fdisk -l
Войти в полноэкранный режим Выход из полноэкранного режима

Мы ищем диск, на который хотим установить Arch. Раздел Disk model должен помочь нам определить, какой диск нам нужен. На изображении выше, если бы мы хотели установить на SanDisk, расположение block device было бы /dev/sda.

Поскольку мы собираемся зашифровать наш корневой каталог, давайте безопасно сотрем диск. Сначала создайте контейнер to_be_wiped:

cryptsetup open --type plain -d /dev/urandom /dev/<block-device> to_be_wiped
Войдите в полноэкранный режим Выход из полноэкранного режима

Затем мы обнулим контейнер:

dd bs=1M if=/dev/zero of=/dev/mapper/to_be_wiped status=progress
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем мы закроем контейнер:

cryptsetup close to_be_wiped
Войти в полноэкранный режим Выход из полноэкранного режима

Теперь, когда диск стерт, мы будем использовать fdisk для разметки диска. fdisk является интерактивной программой, и мы пройдем весь процесс вместе. Сначала выполним манипуляции с диском, который мы хотим разбить на разделы:

fdisk /dev/<block-device>
Войти в полноэкранный режим Выйти из полноэкранного режима

Мы можем ввести m, чтобы увидеть доступные команды. Первое, что мы хотим сделать, это создать новую таблицу разделов. Мы можем сделать это, введя g.
Нам нужно два раздела: Системный раздел EFI для загрузки и корневой каталог / раздел для хранения наших данных. Давайте создадим их, введя n.
Нам будет предложено назначить номер раздела, оставьте его по умолчанию, нажав Enter. Аналогично, оставьте первый сектор по умолчанию и нажмите Enter. Наш первый раздел будет 512M, поэтому для последнего сектора введите +512M.
Измените тип раздела на t, затем 1 для EFI.
Далее мы создадим еще один раздел с n и оставим все значения по умолчанию.
Если мы введем p, fdisk распечатает нашу таблицу разделов, и мы должны увидеть что-то вроде этого:

Наконец, мы запишем таблицу разделов на диск командой w.

Форматирование разделов

Теперь мы можем отформатировать разделы. Сначала отформатируем загрузочный раздел, мы ищем устройство с типом EFI System. Разделите его на FAT32 и обозначьте его ESP:

mkfs.fat -F32 -n ESP /dev/<boot-partition>
Войти в полноэкранный режим Выйти из полноэкранного режима

Чтобы зашифровать наши данные, нам нужно создать раздел Linux Unified Key Setup (LUKS). Найдите устройство с типом Linux filesystem. Отформатируйте и обозначьте его ARCH_LUKS:

cryptsetup luksFormat --label ARCH_LUKS /dev/<linux-partition>
Войти в полноэкранный режим Выйти из полноэкранного режима

После установки пароля откроем раздел LUKS и сопоставим его с именем устройства cryptroot. Если используется SSD, мы можем отключить внутренние рабочие очереди чтения и записи для увеличения производительности при шифровании с помощью команды cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent open /dev/<luks-partition> cryptroot. Иначе:

cryptsetup open /dev/<luks-partition> cryptroot
Войдите в полноэкранный режим Выход из полноэкранного режима

Теперь наш раздел LUKS отображен на /dev/mapper/cryptroot. Далее мы окончательно отформатируем cryptroot в Btrfs и обозначим его ARCH:

mkfs.btrfs -L ARCH /dev/mapper/cryptroot
Вход в полноэкранный режим Выход из полноэкранного режима

Перечислите блочные устройства и просмотрите информацию о файловой системе с помощью lsblk:

lsblk -f
Войдите в полноэкранный режим Выход из полноэкранного режима

Монтирование

Сначала мы смонтируем нашу файловую систему Btrfs cryptroot. Для повышения производительности мы отключим обновление метаданных по времени доступа. Мы также будем использовать сжатие ZSTD с уровнем 1 для приоритета производительности:

mount -o noatime,compress=zstd:1 /dev/mapper/cryptroot /mnt
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь, когда мы смонтировали cryptroot, создадим субтома. Создайте root и home с:

btrfs subvolume create /mnt/root
btrfs subvolume create /mnt/home
Войдите в полноэкранный режим Выйти из полноэкранного режима

Размонтируйте cryptroot:

umount /mnt
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь мы будем монтировать подтома root и home в соответствующих местах вместо толевого подтома. Это делается для упрощения создания моментальных снимков:

mount -o noatime,compress=zstd:1,subvol=root /dev/mapper/cryptroot /mnt
mount --mkdir -o noatime,compress=zstd:1,subvol=home /dev/mapper/cryptroot /mnt/home
Войти в полноэкранный режим Выйдите из полноэкранного режима

Наконец, смонтируйте загрузочный раздел, который мы создали ранее:

mount --mkdir /dev/<boot-partition> /mnt/boot
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Используйте pacstrap для установки некоторых пакетов, чтобы мы могли начать использовать нашу систему:

pacstrap /mnt base linux linux-firmware btrfs-progs networkmanager vim man-db man-pages
Войти в полноэкранный режим Выйти из полноэкранного режима

Fstab

Используйте genfstab для создания файла fstab:

genfstab -L /mnt >> /mnt/etc/fstab
Войти в полноэкранный режим Выйти из полноэкранного режима

Chroot

chroot в нашу новую систему:

arch-chroot /mnt
Войти в полноэкранный режим Выход из полноэкранного режима

Поздравляем! Теперь мы находимся в нашей новой системе.

Часовой пояс

Установите часовой пояс, мы можем использовать завершение вкладки для просмотра возможных вариантов:

ln -sf /usr/share/zoneinfo/<region>/<city> /etc/localtime
Войти в полноэкранный режим Выйти из полноэкранного режима

Установите аппаратные часы:

hwclock --systohc
Войти в полноэкранный режим Выйти из полноэкранного режима

Локализация

Мы будем использовать vim в качестве текстового редактора для удаления локалей в /etc/locale.gen, мы должны, по крайней мере, удалить en_US.UTF-8 UTF-8. После этого сгенерируйте локали:

locale-gen
Войти в полноэкранный режим Выйти из полноэкранного режима

создайте locale.conf и установите переменную LANG:

LANG=en_US.UTF-8
Войти в полноэкранный режим Выйти из полноэкранного режима

Если мы ранее изменили карту клавиш консоли, то сделайте так, чтобы она сохранилась:

KEYMAP=dvorak
Войти в полноэкранный режим Выйти из полноэкранного режима

Конфигурация сети

Создайте файл hostname и задайте имя хоста по своему усмотрению, например, arch:

arch
Войти в полноэкранный режим Выйти из полноэкранного режима

Включите networkmanager, чтобы у нас было подключение, когда мы покинем живую среду:

systemctl enable NetworkManager
Войти в полноэкранный режим Выйти из полноэкранного режима

Initramfs

Поскольку мы используем шифрование, нам нужно отредактировать mkinitcpio, скрипт, используемый для создания начального ramdisk. Отредактируйте файл /etc/mkinitcpio.conf. Перейдите к незакомментированной строке HOOKS и замените udev на systemd, а также добавьте sd-vconsole (если мы изменили keymap) и sd-encrypt после keyboard. Затем заново создайте initramfs:

mkinitcpio -P
Войти в полноэкранный режим Выход из полноэкранного режима

Корневой пароль

Установите пароль root:

passwd
Войдите в полноэкранный режим Выйти из полноэкранного режима

Загрузочный загрузчик

Далее установите загрузчик GRUB и обновления микрокода. Если используется процессор Intel, замените amd-ucode на intel-ucode:

pacman -S grub efibootmgr amd-ucode
Войдите в полноэкранный режим Выход из полноэкранного режима

Теперь мы установим приложение GRUB EFI и его модули и назовем загрузчик GRUB:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
Войти в полноэкранный режим Выйти из полноэкранного режима

Давайте отредактируем наш файл параметров ядра. Мы уже все обозначили, но, к сожалению, нам нужен UUID нашего раздела ARCH_LUKS. Найдите UUID с помощью lsblk -f, затем отредактируйте /etc/default/grub:
Все следующие параметры должны быть добавлены к GRUB_CMDLINE_LINUX_DEFAULT.
Разблокируйте наше устройство в initramfs, добавив rd.luks.name=<UUID>=cryptroot.
Включите поддержку TRIM, добавьте rd.luks.options=discard.
Отключить и внести в черный список модуль сторожевого таймера, добавьте nowatchdog module_blacklist=iTCO_wdt.

Перегенерируйте grub.cfg.

grub-mkconfig -o /boot/grub/grub.cfg
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Наша работа в chroot завершена, выйдите из него с помощью exit или Ctrl+d и reboot.

После установки

После перезагрузки и расшифровки диска нас должен встретить экран входа в систему. Единственный пользователь, который у нас сейчас есть, это root, поэтому введите его в качестве имени пользователя и введите соответствующий пароль.

Подключение

Если нам нужно подключиться к Wi-Fi, используйте nmcli:

nmcli device wifi list
nmcli device wifi connect <SSID> password <PASSWORD>
Войти в полноэкранный режим Выход из полноэкранного режима

Оставшиеся пакеты

Выбор среды рабочего стола, если таковая вообще имеется, полностью зависит от пользователя. Для целей данного руководства мы будем использовать GNOME.
Пакеты, необходимые для драйверов дисплея, зависят от аппаратного обеспечения. Я приведу ссылки на соответствующие вики-страницы, где можно найти нужные пакеты для установки:
AMD
Intel
NVIDIA
Примером для AMD может быть:

pacman -S sudo pacman-contrib archlinux-contrib reflector mesa vulkan-radeon libva-mesa-driver gnome gnome-tweaks pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber firewalld $(pacman -Ssq noto-fonts)
Войти в полноэкранный режим Выход из полноэкранного режима

Пакеты драйверов дисплея: mesa vulkan-radeon libva-mesa-driver. mesa обеспечивает 3D-ускорение, vulkan-radeon обеспечивает поддержку vulkan, а ускоренное декодирование видео обеспечивается libva-mesa-driver.

Пользователи и группы

Давайте создадим непривилегированного пользователя и добавим его в группу wheel:

useradd -m -G wheel <user>
passwd <user>
Вход в полноэкранный режим Выход из полноэкранного режима

Повышение привилегий

Мы будем использовать sudo, чтобы позволить пользователю выполнять привилегированные команды. Так как мы уже добавили нашего пользователя в группу wheel, нам просто нужно откомментировать %wheel ALL=(ALL) ALL:

EDITOR=vim visudo
Войти в полноэкранный режим Выход из полноэкранного режима

Управление пакетами

Arch используетpacman в качестве менеджера пакетов. Включите вывод цвета и параллельную загрузку, отредактировав /etc/pacman.conf и откомментировав Color вместе с ParallelDownloads. Мы также можем получить более красивый прогресс-бар, добавив ILoveCandy сразу после ParallelDownloads.

Далее мы будем использовать reflector, чтобы поддерживать наши зеркала в актуальном состоянии. Чтобы выбрать зеркала, основанные на нашей стране, и отсортировать их по скорости загрузки. Отредактируйте /etc/xdg/reflector/reflector.conf, откомментируйте и обновите country и sort age на sort rate.

Давайте включим некоторые таймеры и сервисы:

systemctl enable fstrim.timer paccache.timer reflector.timer gdm firewalld bluetooth
Войти в полноэкранный режим Выход из полноэкранного режима

Наконец, reboot и войдите в систему, используя нашего только что созданного пользователя.

Завершающие штрихи

После расшифровки диска и входа в систему мы должны оказаться в среде рабочего стола GNOME. Если мы изменили нашу карту клавиш, то вход в GNOME, к сожалению, будет осуществляться в qwerty, сейчас мы это исправим.

Перейдите в Settings->Keyboard и добавьте нужную раскладку клавиатуры. Далее откройте терминал и введите (заменив us и dvorak на соответствующий текст:

localectl set-x11-keymap us dvorak
localectl set-keymap dvorak
Войти в полноэкранный режим Выйти из полноэкранного режима

Если вы единственный пользователь и не хотите вводить пароль для входа после расшифровки нашего диска, мы можем зайти в Settings->Users нажать unlock и отметить Automatic Login. Поскольку мы больше не являемся root, нам нужно использовать sudo для установки пакетов. Для отслеживания бесхозных файлов, zsh, firefox и gvim мы установим следующие пакеты:

sudo pacman -S pacutils zsh grml-zsh-config firefox gvim
Вход в полноэкранный режим Выход из полноэкранного режима

gvim будет конфликтовать с vim-minimal, который мы установили ранее. Введите y, чтобы удалить vim-minimal.

Запустите и настройте zsh:

zsh
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Измените zsh на нашу оболочку по умолчанию:

chsh -s $(which zsh)
Войти в полноэкранный режим Выйти из полноэкранного режима

Сделайте vim нашим редактором по умолчанию и включите wayland для Firefox, установив некоторые переменные окружения:

mkdir .config/environment.d
Войти в полноэкранный режим Выйти из полноэкранного режима

Создайте .config/environment.d/envvars.conf и задайте следующее содержание:

EDITOR=vim
MOZ_ENABLE_WAYLAND=1
Войти в полноэкранный режим Выйти из полноэкранного режима

Запустите переменные окружения, перезапустив gdm:

systemctl restart gdm
Войти в полноэкранный режим Выйти из полноэкранного режима

На этом мы наконец-то закончили! Я надеюсь, что это руководство было полезным, и мы узнали некоторые вещи по ходу дела.

Оцените статью
devanswers.ru
Добавить комментарий