Установка Arch Linux на зашифрованный раздел c LVM

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

Почему Arch?

До этого я использовал ALT Linux, Ubuntu, SuSe, Fedora, Debian, Arch. И когда я попробовал арч я понял, что он полностью удовлетворяет моим потребностям.

Что мне в нем нравится:

  • Минимализм. Не ставится ничего лишнего. Ты сам выбираешь те пакеты которые ты хочешь использовать.

  • Rolling base releases. У вас всегда последние версии всех пакетов. Эта модель мне нравится значительно больше, чем выходящие раз в пол года версии

  • ArchWiki. Это огромное количество документации, которое покрое любую возникшую проблему

  • AUR за огромное количество софта

Arch не очень подойдет вам если у вас мало опыта в коммандной строке. Если эта статья вам кажется сложной, то попробуйте начать с Ubuntu или Manjaro.

Boot usb

Для начала нам нужно создать загрузочную флешку. Для этого сначала качаем последний образ с арчем с сайта https://archlinux.org/download/

После этого если вы на винде или маке, то можете записать его на флешку с помощью balenaEtcher

Если вы в линуксе, то можете сделать это командой

sudo dd if=/home/dm/dl/arch.iso of=/dev/sda status=progress conv=fsync

Загружаемся с флешки

Иногда для этого в биосе нужно выключить Secure boot. Не переживайте, эту опцию можно всегда включить назад.

Во время установки желательно подключиться к интернету по проводу. Заранее проверьте, что у вас есть интернет, так как во время установки мы будем качать пакеты из интернета

ping 8.8.8.8

После этого можем начать установку. Для начала надо определиться на какой диск мы хотим ставить арч. Можем посмотреть какие устройства есть у нас в системе. Если у нас есть nvme диски можем посмотреть их командой:

ls /dev/nvme*

Если у нас обычный SATA диск, то мы увидим его командой:

ls /dev/sd*

Кроме того можем посмотреть диски командой:

lsbkl

и можем посмотреть детальную информацию (UUID, BS, Type) командой:

blkid

Я буду все устанавливать на /dev/nvme0n1

Encryption LUKS

Мы будем шифровать весь диск. Делается это ради безопасности. И если у вас диск полностью зашифрован, то даже если вы потеряете ноутбук или пк, то информацию с вашего диска считать никто не сможет. Это будет один такой большой блочный девайс зашифрованный, для расшифровки которого при загрузке нужно будет ввести пароль.

Для шифрования мы будем использовать такую штуку как dm-crypt, он работает на LUKS. LUKS это спецификация для шифрования блочных устройств, она является некоторым устоявшимся стандартом в линуксе. А dm-crypt это собственно модуль ядра, который загружаясь шифрует и дешифрует данные на девайсе.

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

LUKS - спецификация, которая описывает тип шифрования, стандарт

dm-crypt - модуль ядра,

cryptsetup - это уже утилита, программа, которую вы будете использовать для настройки этого всего дела

LVM2

Еще я буду использовать lvm это менеджер логических дисков.

Без LVM если вы разбиваете диск на логические диски, то потом довольно сложно поменять размер этих логических дисков. А вот LVM очень сильно упрощает эту задачу. Вы можете быстро и на лету уменьшать или увеличивать размеры.

Можно даже добавлять разделы из других дисков. Хотя я сам так не делал.

Разбиваем диски

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

Разбить разделы можно с помощью cfdisk, fdisk, parted. Выбирайте то, что вам больше нравится. По сути все они довольно простые.

Первый раздел должен быть размером 512мб, fat32. Второй должен занимать все остальное пространство (хотя это по желанию) и файловую систему на этом этапе можем выбрать любую

parted /dev/nvme0n1
mklabel gpt 
mkpart ESP fat32 1MiB 512MiB 
set 1 boot on 
mkpart primary

Теперь можем настроить шифрование на втором диске

cryptsetup luksFormat /dev/nvme0n1p2

После этого можем открыть этот диск командой

cryptsetup open /dev/nvme0n1p2 luks

У нас спросят пароль и если пароль верный то диск откроется и будет создано новое устройство "luks"

Его можно будет увидеть командой

ls /dev/mapper/*

Setting up LVM

Теперь нужно настроить LVM. Сейчас нужно сделать один общий контейнер, он называется Physical volume. После этого сделать группу "Volume group". И в группе создать логические разделы "Logical volume"

pvcreate /dev/mapper/luks
vgcreate main /dev/mapper/luks
lvcreate -L 10G main -n swap
lvcreate -l 100%FREE main -n root

Мы можем проверить что у нас создалось командой lvs:

$ lvs  LV   VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  
root main      -wi-a----- 108.72g  
swap main      -wi-a-----  10.00g

Форматируем разделы

На всех созданных разделах нужно создать файловую систему

mkfs.ext4 /dev/mapper/main-root
mkswap /dev/mapper/main-swap
$ mkfs.fat -F32 /dev/nvme0n1p1

Монтируем

mount /dev/mapper/main-root /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
swapon /dev/mapper/main-swap

Устанавливаем

Теперь можно установить арч и самые необходимые пакеты в примонтированные разделы

$ pacstrap -i /mnt base linux linux-firmware base-devel lvm2 vim dhcpcd net-tools iproute2 networkmanager

Генерируем fstab

$ genfstab -U /mnt >> /mnt/etc/fstab

И сразу же проверяем все ли в порядке

$ cat /mnt/etc/fstab

Заходим в установленный арч

$ arch-chroot /mnt

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

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

Для этого нужно открыть файл

vim /etc/locale.gen

И раскомментировать нужные вам локали. Для меня это ru_RU.UTF-8 UTF-8 en_US.UTF-8 UTF-8

После того как раскомментили выполните команду

locale-gen

Mkinitcpio

Mkinitcpio это улитита которая генерирует нам наше ядро. И так как мы использовали два модуля, которые не включены по-умолчанию encrypt и lvm2, нам надо их включить

Для этого откроем файл

vim /etc/mkinitcpio.conf

Дойдем до строки с хуками и добавим туда encrypt и lvm2

HOOKS=(base udev autodetect modconf block filesystems keyboard encrypt lvm2 fsck)

Так же мы можем использовать модуль sd-encrypt и модуль sd-lvm2 они довольно похожи по функционалу, sd-encrypt немного более гибкий, например, он может помочь если нужно открыть при загрузке сразу два зашифрованных раздела. encrypt может открыть только один.

Там есть еще небольшие отличия. Например, sd-encrypt при вводе пароля показывает звездочки, фактически показывая сколько символов в пароле, тогда как encrypt ничего не показывает когда вы вводите пароль

После того как вы сохранили файл нужно пересобрать ядро командой

mkinitcpio -p linux

Если все ок то увидите сообщение Image generation successful

Если вдруг видите какие-либо WARNING то можете не переживать о них на этом этапе.

Bootloader

Теперь нам нужно настроить бутлоадер. Это такая штука которая при загрузке говорит системе где брать ядро чтобы его загрузить.

Самый популярный - GRUB2. Если вы планируете использовать линукс рядом с виндой, то я рекомендую использовать его, с ним это сделать будет проще.

Если вы как и я используете только линукс, то можно обойтись стандартным systemd-boot который уже установлен в нашей системе. Он суперпростой, мало что умеет, но это именно то, что нам нужно.

Для этого выполните команду

bootctl install --path=/boot

теперь нам нужно настроить бутлоадер указав ему где брать ядро. Для этого нужно отредактировать файл /boot/loader/loader.conf

timeout 3
default arch

Мы добавили запись arch

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

vim /boot/loader/entries/arch.conf

и добавим в этот файл следующее содержимое

title Arch Linux Encrypted
linux /vmlinuz-linux
initrd /initramfs-linux.img
oprions rw cryptdevice=UUID=$ID:main root=/dev/mapper/main-root resume=/dev/mapper/main-swap

где $ID нужно заменить вашим настоящим ID, взять вы его можете тут

cryptsetup luksUUID /dev/nvme0n1p2

Сохраняемся

Добавляем пользователя

Для начала надо отредактировать sudoers, делается это командой

sudo EDITOR=vim visudo

И в этом файле надо раскомментить строку

%wheel ALL=(ALL) ALL

Нужно помнить, что у нас в системе нет пользователя, давайте его добавим, делается это командой

useradd -m -G wheel,users -s /bin/bash dm$ passwd dm

Источник: https://habr.com/ru/post/672502/


Интересные статьи

Интересные статьи

Появление Chromebook стало важным моментом для американских систем образования, позволив им покупать недорогие ноутбуки для учеников, учителей и администраторов. Хотя Chromebook в...
Разбираемся, как использовать одну из самых мощных свободно распространяемых утилит для аудита Linux-систем. Вы когда-нибудь задумывались о том, насколько безопасна ваша Linux-си...
Компании растут и меняются. Если для небольшого бизнеса легко прогнозировать последствия любых изменений, то у крупного для такого предвидения — необходимо изучение деталей.
Данная заметка имеет собой цель продемонстрировать автоматический git bisect на примере ядра Linux. С последующим поиском официальной версии начиная с которой всё поломалось и последней хорошей в...
В начале июля группа инженеров из Red Hat и Бостонского университета выпустила whitepaper, в котором предложила сменить монолитное ядро Linux на архитектуру unikernels. Мы решили разобраться в ма...