Конкурс инструкций

Как установить Arch Linux+LVM: устраняем популярные ошибки

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

Поехали!

0. Создание загрузочной флешки

Если Вы используете виртуальную машину (что я очень советую сделать перед установкой арча на реальную машину), то этот этап можно опустить. Иначе, скачиваем iso образ с официального сайта и проверяем его контрольные суммы:

  • Для Windows, образ прожигается в программе Rufus.
  • Для Linux, вставляем флешку и пишем в терминале:
$ sudo -i # lsblk //здесь смотрим, на каком разделе флешка - например, sdX # dd bs=4M if=путь/до/archlinux.iso of=/dev/sdX status=progress oflag=sync

Загружаемся с этой флешки и переходим к следующему этапу.

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

Здесь чаще всего юзер сталкивается с проблемой, если использует образ без wifi-menu, который мы так любили. Но ничего страшного, у нас есть iwctl или проводное соединение (надеюсь!)

При использовании wifi, сначала узнаем имя девайса, после чего подключимся к нему, написав имя девайса (например, wlp8s0), пароль и ssid БЕЗ кавычек:

# iwctl [iwd]# device list [iwd]# iwctl --passphrase PASSPHRASE station DEVICE connect SSID

При использовании провода, проблем возникать не должно. Настроили? Пингуем!

# ping 8.8.8.8 # ping ya.ru

Не забудьте прервать пинг командой Ctrl+C, если засмотрелись на выполненный пункт работы =)

Иначе идем сюда и делаем по инструкции:

2. Успешный старт

Подгрузим русский язык, проверим драйвера, обновим ключи на всякий случай (последние 4 команды можно не выполнять):

# loadkeys ru # setfont cyr-sun16 # timedatectl set-ntp true # modprobe dm-mod # modprobe dm-crypt # pacman-key --init # pacman-key --populate # pacman-key --refresh-keys --keyserver keys.gnupg.net # pacman -Syy --noconfirm

3. Разметка диска

Некоторые шифруют перед разметкой, например в этой статье. Мы так делать не будем.

Я предпочитаю инструмент cfdisk, в нем все управляется с клавиатуры. Создаем в нем три раздела: под boot, под swap и под LVM. При желании, закиньте раздел подкачки swap под LVM, но я буду делать вот так:

# cfdisk

Если Вы используете UEFI, то выбирайте метку gpt и тип раздела boot — EFI Sysytem, если у Вас Legacy boot, то метку dos, тип 83 и флажок bootable:

Mechanic

Не забудьте записать изменения (Write) и проверить разметку командой

# fdisk -l # lsblk -f

Если что-то не так, идем и делаем разметку заново.

4. Монтируем и создаем логический объем

Внимание! Здесь и далее я использую название жесткого /dev/sda. Если у Вас SSD или виртуальный диск, уточните его название в fdisk -l и используйте его.

# mkswap /dev/sda2 -L swap # swapon /dev/sda2 ################ lvm ################# # pvcreate /dev/sda3 # vgcreate vg_arch /dev/sda3 # lvcreate -L 60G -n root vg_arch //или ваше количество гигабайт вместо 60! # lvcreate -l 100%FREE -n home vg_arch

Домонтируем остальное (можно использовать другую файловую систему, кроме ext4, например f2fs или btrfs):

# mkfs.ext4 /dev/vg_arch/root # mkfs.ext4 /dev/vg_arch/home # mkfs.fat -F32 /dev/sda1 //для uefi # mkfs.ext2 /dev/sda1 -L boot //для legacy # mount /dev/vg_arch/root /mnt/ # mkdir /mnt/home # mount /dev/vg_arch/home /mnt/home/ # mkdir /mnt/boot # mount /dev/sda1 /mnt/boot

5. Шифрование LUKS

Здесь есть несколько вариаций, как шифровать логический объем на /dev/sda3. Мы используем luks2 формат, детальный, с запросом пароля, без лишних ключей:

# cryptsetup -v -y luksFormat --type luks2 /dev/sda3 # cryptsetup open /dev/sda3 cryptlvm

После чего нас спросят что-то о разрушении всех данных (но у нас ведь их нет, не страшно, пишем YES большими буквами) и запросят пароль, который будет вводиться при загрузке устройства. Подробнее о ключах тут:

6. Установка базовой системы, таблица

Здесь будем очень внимательны и предварительно сменим зеркала на самые ближние. Можно вручную прописать в файле /etc/pacman.d/mirrorlist русский яндекс сервер и еще пару штук серверов.

# pacman -S reflector --noconfirm # reflector --verbose -l 50 -p https --sort rate --save /etc/pacman.d/mirrorlist # reflector --verbose -l 15 --sort rate --save /etc/pacman.d/mirrorlist
# pacstrap /mnt base base-devel linux linux-headers dhcpcd which inetutils netctl wget networkmanager network-manager-applet mkinitcpio git dkms grub efibootmgr nano vi linux-firmware wpa_supplicant dialog # genfstab -p -U /mnt >> /mnt/etc/fstab

Если первая команда начинает давать сбой, прерываем ее Ctrl+C и идем проверять пинг и зеркала еще раз.

7. Chroot (change root)

Здесь важнее всего строка №3, остальные нужны для предотвращения ошибки WARNING: Failed to connect lvmetad... WARNING: Device /dev/nvme0n1 not initialized in udev database...

# mkdir /mnt/hostlvm # mount --bind /run/lvm /mnt/hostlvm # arch-chroot /mnt # ln -s /run/lvm /hostlvm

Если на этом этапе возникает проблема (что часто бывает), перепроверяем вывод команд mount, lsblk, pvdisplay, vgdisplay, lvdisplay. Монтируем разделы заново, если что-то не так, как задумывалось.

Добавляем волшебный /bin/bash в конце команды, чтоб заработало. :)

В случае успеха у нас с вами меняется приглашение в терминал (появляются квадратные скобочки).

# ping 8.8.8.8

А если не пингует, возвращаемся к пункту 1.

8. Настройка системы

Настроим время, язык, локали:

# timedatectl set-ntp true # pacman -Syyu --noconfirm # pacman -S lvm2 --noconfirm # ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime # hwclock --systohc # echo "ru_RU.UTF-8 UTF-8" >> /etc/locale.gen # echo "KEYMAP=ru" >> /etc/vconsole.conf # echo "FONT=cyr-sun16" >> /etc/vconsole.conf # echo 'LANG="ru_RU.UTF-8"' > /etc/locale.conf # echo "en_US.UTF-8 UTF-8" > /etc/locale.gen # locale-gen

Выше команды описаны довольно кустарно, но Вы можете открывать файлы /etc/locale.gen, /etc/locale.conf, /etc/vconsole.conf и прописывать всё ручками. Прямо как написано в Вики.

После чего зададим имя компьютеру и юзеру, дадим юзеру и супер-юзеру пароль, добавим юзера в группу wheel:

# echo $hostname > /etc/hostname # passwd # useradd -m -g users -G wheel -s /bin/bash $username # passwd $username

Чтобы иметь возможность использовать sudo, раскомментируем в файле /etc/sudoers строчку % wheel ALL=(ALL) ALL'.

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

9. Загрузчик

Если используем UEFI:

# bootctl install # echo ' default arch ' > /boot/loader/loader.conf # echo ' timeout 10 ' >> /boot/loader/loader.conf # echo ' editor 0' >> /boot/loader/loader.conf # echo 'title Arch Linux' > /boot/loader/entries/arch.conf # echo "linux /vmlinuz-linux" >> /boot/loader/entries/arch.conf

GRUB:

# pacman -S grub grub-customizer --noconfirm # grub-install /dev/sda # grub-mkconfig -o /boot/grub/grub.cfg

UEFI-GRUB (зачем? не знаю, на вкус и цвет):

# pacman -S grub --noconfirm # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB # grub-mkconfig -o /boot/grub/grub.cfg

10. Образ mkinitcpio и др.

После этого добавим intel/amd ucode, чтоб потом не мучаться с проблемами отсутствия звука:

////amd # pacman -S amd-ucode --noconfirm # echo 'initrd /amd-ucode.img ' >> /boot/loader/entries/arch.conf ////intel # pacman -S intel-ucode --noconfirm # echo ' initrd /intel-ucode.img ' >> /boot/loader/entries/arch.conf ////для всех! # echo "initrd /initramfs-linux.img" >> /boot/loader/entries/arch.conf

Если у нас внезапно оказалось несколько ОС и мы их еще не форматировали и не убил, поставим os-prober.

# pacman -S os-prober

Редактируем /etc/mkinitcpio.conf, и в HOOKS добавляем lvm2 — перед filesystems:

# nano /etc/mkinitcpio.conf

# usr, fsck and shutdown hooks. class="cdx-marked-text marked-text">HOOKS=\«base udev autodetect modconf block lvm2 filesystems keyboard fsck\»

# mkinitcpio -p linux

Опционально: добавим репозиторий multilib для работы с 32-битными пакетами (обычно он не нужен). Если нужен, выполняем следующую команду и раскомментируем строки [multilib] и Include = /etc/pacman.d/mirrorlist после нее.

# nano /etc/pacman.conf

11. Иксы, менеджер рабочего стола

Здесь ради примера я покажу, как настроить GNOME 3 и XFCE, т.к. они просты и приятны в использовании. Для начала обновимся:

# pacman -Syy xorg-server xorg-drivers --noconfirm

GNOME:

# pacman -S gnome gnome-extra gdm --noconfirm # systemctl enable gdm.service -f

XFCE:

# pacman -S xfce4 pavucontrol xfce4-goodies --noconfirm # pacman -S xorg-xinit --noconfirm # cp /etc/X11/xinit/xinitrc /home/$username/.xinitrc # chown $username:users /home/$username/.xinitrc # chmod +x /home/$username/.xinitrc # sed -i 52,55d /home/$username/.xinitrc # echo "exec startxfce4 " >> /home/$username/.xinitrc # mkdir /etc/systemd/system/[email protected]/ # echo " [Service] " > /etc/systemd/system/[email protected]/override.conf # echo " ExecStart=" >> /etc/systemd/system/[email protected]/override.conf # echo ExecStart=-/usr/bin/agetty --autologin $username --noclear %I 38400 linux >> /etc/systemd/system/[email protected]/override.conf # echo ' [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx ' >> /etc/profile # pacman -S lxdm --noconfirm # systemctl enable lxdm.service -f

12. Выход из chroot

В принципе, мы уже всё сделали. Установим на всякий случай firefox, networkmanager и neofetch (последний — исключительно для красоты).

# pacman -S networkmanager networkmanager-openvpn network-manager-applet ppp firefox neofetch --noconfirm # systemctl enable NetworkManager.service # systemctl enable dhcpcd.service

Теперь у нас не должно быть проблем с интернетом. Чтобы все было так же славно и со звуком, ставим:

# pacman -Sy pulseaudio-bluetooth alsa-utils pulseaudio-equalizer-ladspa xf86-video-ati # nano /home/$username/.asoundrc

И заполняем этот файлик в соответствии с требованиями wiki.

И выходим!

# exit # umount -R /mnt # reboot

При перезагрузке выбираем Boot existing OS.

Хотелось бы язвительно сказать «Готово!» и послать Вас изучать форумы со своими проблемами, но позволю себе совет: если Вы увидели меню GRUB, и система не загрузилась:

  • идем обратно в Boot Arch Linux
  • монтируем разделы как показано в пункте 4
  • генерируем (или проверяем) таблицу разделов как в пункте 6
  • chroot’имся как в пункте 7
  • создаем новый образ с помощью grub-mkconfig, как в пункте 9
  • exit, reboot

13. Красота требует жертв!

Когда Вы обошли еще несколько форумов и наконец стартовали Иксы, и зашли в свой менеджер рабочего стола, откройте терминал и напишите:

$ neofetch

Наслаждайтесь!

Mechanic

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

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

$ echo 'I use Arch btw'
0
16 комментариев
Написать комментарий...
Pavel Sherer

Ничего не понятно, но ооочень интересно!

Ответить
Развернуть ветку
Pavel Sherer

Забыл тег <sarcasm>, но это и не Хабр. А вообще, спасибо, крутая статья. Завтра же попробую накатить на ноут.

Ответить
Развернуть ветку
Art

удачи да, поставить себе на ноут ебанину, на которой ничего толком н е работает.Ну зато будете не такой как все )

Ответить
Развернуть ветку
Pavel Sherer

Вообще, у арча вполне себе конкретные задачи. А вы продолжайте писать комментарии о том, в чём не понимаете. Вы же не такой, как все.

Ответить
Развернуть ветку
Art

чтобы вы не тратили время на ответ не по существу, отмечу что я unix admin ~ 15 лет опыта. Я жду ваших идей по применению этого чуда на десктопе.

Ответить
Развернуть ветку
Pavel Sherer

Ну, во-первых, лэптоп, если уж придираться. Во-вторых, сканирование сетей, например. И вообще секьюрити-чекинг мобильный. Арч хорош тем, что там нет ничего лишнего. И на стареньком ноуте, который больше не для чего уже и не годен, арч - прекрасный выбор. А вы что предлагаете? Убунту и прочие дебианы? Мне на нём всякие маркеты, офисы и гномы не нужны. Для этого есть десктоп и основной ноут.

Ответить
Развернуть ветку
Pavel Sherer

Забавный баг, комменты местами поменялись.

Ответить
Развернуть ветку
Art

Какие блять боюсь поинтересоваться у арча конкретные задачи на десктопе? 
Вот кому при ясном разуме и без психических отклонений нужно ЭТО на десктопе, и главное зачем? 

Ответить
Развернуть ветку
Анфиса Липко
Автор

Спасибо, успехов Вам!

Ответить
Развернуть ветку
Pavel Sherer

Не слушайте никого, статья норм и Арч норм)

Ответить
Развернуть ветку
Анфиса Липко
Автор

Вы правы, т.к. если человек не умеет чем-то пользоваться, скорее всего это не "лыжи не едут" :)

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
John Hoffman

1.) Зачем это здесь? 
2.) Чем вам arch wiki не угодила? (Там это все есть)

Ответить
Развернуть ветку
Анфиса Липко
Автор

1 - ради интереса и опыта написания статьи
2 - в вики все супер, но не все размещается в одном месте по этой теме, как хотелось бы. моя статья собрана из разных кусков вики, форумов и опыта. и арч, по ней собранный, точно работает (у меня))

Ответить
Развернуть ветку
Vera Kydryshova

Доброго дня. Спасибо за помогайку, у меня возникает ошибка на пункте 5. Шифрование LUKS.
Все делаю как указано, при вводе команды на шифрование
# cryptsetup -v -y luksFormat --type luks2 /dev/sda3
выдает
Device /dev/sda3 is in use. Can not proceed with format operation.
Command failed with code -1 (wrong or missing parameters).

Не подскажите почему? Кроме самой установки /dev/sda3 ничем не занят.
Версия ARCH 5.11.16. Установку делаю по SSH.

Спасибо.

Ответить
Развернуть ветку
Александр Малюк

Здрасьте. Прямо сейчас устанавливаю и получил такую же ошибку, проблему решить не смогли?

Ответить
Развернуть ветку
Анфиса Липко
Автор

Доброго дня! Эта ошибка возникает из-за того, что свое всего не получилось монтировать раздел /dev/sda3. Вообще, обычно я устанавливаю по своему скрипту, https://github.com/iamm3chanic/ArchLinux-install
Извиняюсь за столь поздний ответ, надеюсь, поможет! 

Ответить
Развернуть ветку
13 комментариев
Раскрывать всегда