Участник:DamyrKhann/Установка ALT Linux P10 методом chroot

Материал из ALT Linux Wiki

Это руководство детально описывает процесс ручной установки ALT Linux P10 методом chroot на архитектуру PC x86_64. Предполагается, что вы уже знакомы с системой GNU/Linux, но не обязательно с установкой системы GNU/Linux методом chroot. Автор снимает с себя всякую ответственность за любой ущерб, причинённый вследствие использования данного руководства. Предполагается, что данная методика будет использована опытным пользователем с полным осознанием процесса установки.

Причина, по которой было написано данное руководство, это отсутствие возможности у штатного инсталлятора установки системы на уже существующую разметку диска, которая предполагает наряду с полным шифрованием разделов системы GNU/Linux (LVM on LUKS) также наличие разделов с установленной системой Microsoft Windows 11.

Вводные данные

  • Ноутбук Thinkpad X220 (Intel Core i7)
  • Samsung SSD 860 EVO 1TB
  • Накопитель USB с Simply Linux P9.1 Live ISO
  • Режим загрузки системы UEFI
  • Интернет соединение
  • Разметка диска
# fdisk --list /dev/sda —bytes
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 860
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 09920250-CD30-4802-85DE-EE050BF1FB21
Device         Start        End    Sectors         Size Type
/dev/sda1       2048     206847     204800    104857600 EFI System
/dev/sda2     206848     239615      32768     16777216 Microsoft reserved
/dev/sda3     239616  209954815  209715200 107374182400 Microsoft basic data
/dev/sda4  209954816  210978815    1024000    524288000 Windows recovery environment
/dev/sda5  210978816  212002815    1024000    524288000 Linux filesystem
/dev/sda6  212002816 1953525134 1741522319 891659427328 Linux filesystem
  • Структура диска
# lsblk --bytes --tree --output NAME,PATH,SIZE,TYPE,FSTYPE
NAME             PATH                            SIZE TYPE  FSTYPE
sda              /dev/sda               1000204886016 disk
├─sda1           /dev/sda1                  104857600 part  vfat
├─sda2           /dev/sda2                   16777216 part
├─sda3           /dev/sda3               107374182400 part  ntfs
├─sda4           /dev/sda4                  524288000 part  ntfs
├─sda5           /dev/sda5                  524288000 part  crypto_LUKS
│ └─sda5-luks    /dev/mapper/sda5-luks      522190848 crypt ext2
└─sda6           /dev/sda6               891659427328 part  crypto_LUKS
  └─sda6-luks    /dev/mapper/sda6-luks   891642650112 crypt LVM2_member
    ├─linux-root /dev/mapper/linux-root   21474836480 lvm   ext4
    ├─linux-swap /dev/mapper/linux-swap   11169431552 lvm   swap
    └─linux-home /dev/mapper/linux-home  858993459200 lvm   ext4

Конфигурирование

Скачиваем Live ISO-образ Simply Linux P9.1 и записываем его на накопитель USB. Загружаемся с USB в LIVE-систему, устанавливаем интернет соединение.

Расшифровываем разделы LUKS:

# cryptsetup luksOpen /dev/sda5 sda5-luks
# cryptsetup luksOpen /dev/sda6 sda6-luks

Активируем логические тома LVM:

# vgchange --activate y
3 logical volume(s) in volume group "linux" now active
Примечание: Во избежание недоразумений следует обратить внимание, что раздел /dev/sda5, который будет смонтирован как /boot, зашифрован как LUKS1, так как GRUB2 не умеет расшифровывать LUKS2. Раздел /dev/sda6 зашифрован как LUKS2 и уже имеет на борту логическую структуру LVM.


Монтируем логический том c корнем (/) системы:

# mount /dev/linux/root /mnt
# cd /mnt

Скачиваем архив rootfs и разворачиваем его в корне:

# wget https://mirror.yandex.ru/altlinux/p10/images/cloud/alt-p10-rootfs-systemd-x86_64.tar.xz
# tar -xf alt-p10-rootfs-systemd-x86_64.tar.xz
# rm alt-p10-rootfs-systemd-x86_64.tar.xz

Монтируем остальные разделы и тома:

# mount /dev/mapper/boot /mnt/boot
# mkdir /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
# mount /dev/linux/home /mnt/home

Монтируем псевдо-файловые системы необходимые для chroot:

# mount --rbind /sys /mnt/sys && mount --make-rslave /mnt/sys
# mount --rbind /dev /mnt/dev && mount --make-rslave /mnt/dev
# mount --rbind /proc /mnt/proc && mount --make-rslave /mnt/proc

Подгружаем модуль efivars, он понадобиться при установке загрузчика:

# modprobe efivars

Переходим в chroot:

# PS1='(chroot) # ' chroot /mnt/ /bin/bash

Установка

Обновляем систему:

# apt-get update
# apt-get dist-upgrade
# apt-get install update-kernel
# update-kernel

Устанавливаем модули ядра и прошивки:

# apt-get install kernel-modules-drm-un-def
# apt-get install firmware-linux
# apt-get install firmware-intel-ucode

Устанавливаем утилиты для работы с LUKS и LVM:

# apt-get install cryptsetup
# apt-get install lvm2

Устанавливаем дополнительные пакеты для initrd:

# apt-get install make-initrd-luks
# apt-get install make-initrd-lvm
# apt-get install make-initrd-ucode

Устанавливаем утилиты для работы с файловыми системами:

# apt-get install dosfstools
# apt-get install ntfs-3g

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

# passwd

Устанавливаем божественный VIM :) или любой другой редактор:

# apt-get install vim-console

Задаём локаль системы:

# vim /etc/sysconfig/i18n
LANG=ru_RU.UTF-8
SUPPORTED=ru_RU.UTF-8
# vim /etc/locale.conf
LANG=ru_RU.UTF-8

Наполняем файл /etc/fstab данными:

# blkid | grep 'sda1\|linux-' | perl -pe 's/^(.*):.*UUID="([^"]*).*" TYPE="([^"]*).*"/sprintf "# %s\nUUID=%s <mount_point>\t%s\tdefaults\t0\t0", $1,$2,$3/e' >> /etc/fstab

Правим файл /etc/fstab и приводим его к следующему виду:

# <file system>                             <dir>       <type>  <options>                       <dump>  <pass>
# /dev/mapper/linux-root
UUID=de1f16a5-3ed4-4d33-b1b1-f649f8eeed5b   /           ext4    rw,relatime                     0       1
# /dev/mapper/sda5-luks
UUID=932cb2aa-e00a-4431-9c73-c04abb738641   /boot       ext2    rw,relatime                     0       2
# /dev/sda1
UUID=5E9D-1B2A                              /boot/efi   vfat    rw,relatime                     0       2
# /dev/mapper/linux-home
UUID=0501d28b-9878-402a-9618-174b28375c66   /home       ext4    rw,relatime                     0       2
# proc
proc                                        /proc       proc    nosuid,noexec,gid=proc          0       0
# devpts
devpts                                      /dev/pts    devpts  nosuid,noexec,gid=tty,mode=620  0       0
# tmpfs
tmpfs                                       /tmp        tmpfs   nosuid                          0       0
# /dev/mapper/linux-swap
UUID=11527a6f-4781-4cb5-b4a3-97008506a5c0   swap        swap    rw,noatime                      0       0

Наполняем файл /etc/crypttab данными:

# blkid | grep '/dev/sda5\|/dev/sda6' | perl -pe 's/^(.*):.*UUID="([^"]*).*"/sprintf "# %s\n<volume-name>\tUUID=%s\tnone\tluks,discard", $1,$2/e' >> /etc/crypttab

Правим файл /etc/crypttab и приводим его к следующему виду:

# /dev/sda5
sda5-luks       UUID=cba24890-59c9-d049-8385-2d6097febd7c       none    luks,discard
# /dev/sda6
sda6-luks       UUID=a2c0bb11-bea7-8543-b785-146a2dda0355       none    luks,discard

Создаём ключ шифрования для разделов LUKS один для всех разделов. Автор не смог сделать так, чтобы система загружалась с разными ключами для каждого раздела. Прошу помощи в решении данного вопроса:

# mkdir /etc/cryptsetup-keys.d
# dd if=/dev/random of=/etc/cryptsetup-keys.d/luks.key bs=512 count=4
# chmod 0700 /etc/cryptsetup-keys.d
# chmod 0600 /etc/cryptsetup-keys.d/luks.key
# cryptsetup luksAddKey /dev/sda5 /etc/cryptsetup-keys.d/luks.key
# cryptsetup luksAddKey /dev/sda6 /etc/cryptsetup-keys.d/luks.key

Устанавливаем утилиты для работы с загрузчиком системы:

# apt-get install efivar
# apt-get install efibootmgr
# apt-get install grub
# apt-get install grub-efi

Правим файл /etc/sysconfig/grub2:

# vim /etc/sysconfig/grub2
GRUB_CMDLINE_LINUX_DEFAULT='panic=30 nosplash i915.modeset=1 luks-key=/etc/cryptsetup-keys.d/luks.key'
# This defines /boot/efi/EFI subdir name
GRUB_BOOTLOADER_ID="ALTLinux"
# Uncomment to enable booting from LUKS encrypted devices
GRUB_ENABLE_CRYPTODISK=y

Правим файл /etc/luks.keys:

# vim /etc/luks.keys
/etc/cryptsetup-keys.d/luks.key

Правим файл /etc/initrd.mk:

# vim /etc/initrd.mk
PUT_FILES += \
/etc/cryptsetup-keys.d/luks.key \
/etc/luks.keys \
/etc/crypttab

Доустанавливаем некоторые пакеты, которые могут пригодиться после установки:

# apt-get install x11presetdrv
# apt-get install NetworkManager
# apt-get install fdisk

Собираем initrd и устанавливаем загрузчик:

# make-initrd -k 5.14.8-un-def-alt1
# update-grub
# grub-efi-autoupdate

Выходим из окружения chroot, размонтируем все смонтированные файловые системы и перезагружаемся:

# exit
# umount -R /mnt
# reboot

Если всё сделано правильно, то после ввода пароля от раздела /dev/sda5 мы загрузимся в систему!