Установка Archlinux
Давно смотрю в сторону Archlinux. Даже пробовал использовать его вместо Ubuntu. Но что-то пошло не так, и я перешёл на Gentoo. В Gentoo тоже что-то пошло не так, но я разобрался и правильно поставил драйвер на видеокарту. Однако решил уже не возвращаться в Archlinux. Спустя много лет решил попробовать хотя бы установить систему на виртуальную машину.
Небольшое замечание. Установку системы можно выполнить с помощью утилиты archinstall
. Ниже описан ручной способ установки без использования этой утилиты и с минимально возможным количеством пакетов.
При привычке решил воспользоваться мануалом на сайте проекта. Всегда так делал в Gentoo. Однако во время установки возникли некоторые проблемы, поэтому решил записать процесс установки.
Установка начинается с разметки диска. Для этого существует масса утилит, которые перечислены в мануале. Я выбрал cgdisk:
cgdisk /dev/sda
После запуска на диске необходимо создать разделы, как минимум:
- EFI раздел: тип EF00;
- root раздел: тип 8300 (по умолчанию).
Первый нужен для успешной загрузки через EFI. Кроме этого, в нём будет расположен Grub и ядро операционной системы. Вполне достаточно размера 512 МБ (в cgdisk укажите 512M
), что позволит хранить несколько ядер и не страдать от нехватки места на разделе. Во втором разделе будут размещены наши данные. Я решил выбрать файловую систему btrfs, поскольку использую её уже много лет.
Обращаю внимание, что я не использую раздел swap, который часто рекомендуют. Его следовало бы разместить между EFI разделом и root. Но т.к. я знаю, что выделенного мной количества оперативной памяти хватит для всех экспериментов, то от этого раздела я отказался. На компьютерах с большим количеством оперативной памяти, например, 16 ГБ, от swap также можно отказаться и применять zram. При крайней необходимости, можно создать файл подкачки и использовать его. Сделать это возможно в том числе на btrfs, хоть это и не совсем просто. И ещё. Отказ от раздела подкачки сделает невозможным использование спящего режима, когда данные из ОЗУ сохраняются на диск и система полностью отключается.
Форматируем разделы:
mkfs.fat -F 32 /dev/sda1
mkfs.btrfs /dev/sda2
Если у вас используется файл подкачки, то не забудьте его подготовить:
mkswap /dev/sdXy
Для удобства создадим подтома на btrfs: root и home. Раздел root будет корнем нашей файловой системы, home будет хранить домашние папки пользователей (/home
).
mount /dev/sda2 /mnt
btrfs subvolume create /mnt/root
btrfs subvolume create /mnt/home
После создания подтомов отключим том и подключим вне необходимые для установки разделы создавая при этом необходимые точки монтирования (опция --mkdir
команды mount
):
umount /dev/sda2
mount -o subvol=/root /dev/sda2 /mnt
mount --mkdir -o subvol=/home /dev/sda2 /mnt/home
mount --mkdir /dev/sda1 /mnt/boot
Далее необходимо смонтировать swap, если его используете:
swapon /dev/sdXy
В соответствии с инструкцией по установке установим базовые пакеты
pacstrap -K /mnt base linux linux-firmware
Сгенерируем файл /etc/fstab имеющимися в наличии утилитами:
genfstab -U /mnt >> /mnt/etc/fstab
После этого можно перейти в chroot окружение уже установленной системы:
arch-chroot /mnt
Дальше следуем инструкциям из официального мануала касательно часов и заменяем /etc/localtime на символическую ссылку на файл с нужным часовым поясом:
ln -sf /usr/share/zoneinfo/Регион/Город /etc/localtime
hwclock --systohc
Следующим шагом идёт настройка локалей. Однако в нашей системе всё ещё отсутствуют редакторы, поэтому необходимо установить удобный для вас, например, nano или vim, или вообще установить полноценный файловый менеджер mc (Midnight Commander). Установим vim:
pacman -S vim
Редактируем файл locale.gen
путём удаления комментариев перед ru_RU.UTF-8
или другой необходимой, генерируем необходимые файлы и устанавливаем нужную локаль:
vim /etc/locale.gen
locale-gen
echo "LANG=ru_RU.UTF-8" > /etc/locale.conf
Для возможности отображения кириллицы необходимо использовать шрифт с её поддержкой. Это можно сделать в файле /etc/vconsole.conf
:
FONT=cyr-sun16
KEYMAP=ru
Установим имя хоста (для примера, archlinux
)
echo "archlinux.local" > /etc/hostname
Установим пакеты grub
и efibootmgr
. efibootmgr
нужен для установки Grub на системах с EFI:
pacman -S grub efibootmgr
Установим Grub на диск и создадим для него конфигурацию:
grub-install --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg
Теперь необходимо задать пароль для пользователя root или, лучше, создать своего пользователя и разрешить ему запуск процессов через sudo.
Если вы решили задать пользователю root пароль, то просто выполните
passwd
После этого можно перезагрузить машину. Но это не самый лучший, с точки зрения безопасности, вариант.
Создадим нового пользователя, при этом, добавим его в группу wheel и создадим домашнюю папку по умолчанию, а также создадим пароль:
useradd my_user -G wheel -m
passwd my_user
Установим пакет sudo и разрешим группе wheel его использовать создав файл g_wheel (можно также исправить /etc/sudoers):
pacman -S sudo
echo "%wheel ALL=(ALL) ALL" > /etc/sudoers.d/g_wheel
В качестве сервиса работы с сетью используем networkd из состава systemd (вы можете использовать NetworkManager, netplan.io и другие, по желанию). Чтобы интерфейс с именем enp0s3
получил автоматические настройки через DHCPD, создадим файл /etc/systemd/networkd/enp0s3.network
со следующим содержанием:
[Match]
Name=enp0s3
[Network]
DHCP=yes
Активируем сервисы и позволим systemd контролировать адреса используемых DNS серверов заменив /etc/resolv.conf на символическую ссылку:
systemctl enable systemd-networkd
systemctl enable systemd-resolved
На этом можно завершить установку системы, выйти из chroot и перезапустить машину:
exit
reboot
После перезагрузки вы должны попасть в командную строку вашей установленной системы.
Активируем возможность systemd-resolved управлять используемыми серверами DNS.
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Если вас не устраивает локаль или имя хоста, то после загрузки системы вы можете изменить их с помощью утилит systemd:
localectl set-locale en_US.UTF-8
hostnamectl set-hostname archlinux.tavda.net
Установите полезные пакеты:
- btrfs-progs - утилиты для обслуживания btrfs;
- mc - файловый менеджер Midnight Commander.
Если у вас возникли проблемы с отображением символов, например, кириллицы, то можно воспользоваться инструкцией Ранний запуск KMS. Инструкция переведена на русский язык, но на момент написания в русскоязычной версии не было имён модулей для графических драйверов QEMU и VirtualBox, поэтому ссылка приведена для англоязычной версии. Выберите необходимый вам драйвер до добавьте его в параметр MODULES файла /etc/mkinitcpio.conf
, например, для VirtualBox:
MODULES=(vmwgfx)
После этого соберите initramfs:
mkinitcpio -p linux
Несколько замечаний касательно использования VirtualBox. У меня с первого раза это не получилось загрузить систему из-за неверно сконфигурированного grub. При этом я не мог попасть в меню загрузки VirtualBox, чтобы выбрать загрузку с CD. Решил это путём удаления HDD из настроек виртуальной машины, а уже после запуска с CD подключил его обратно. Дальше просто смонтировал файловую систему и перешёл в chroot для исправления своих ошибок.
Второй проблемой, с которой столкнулся - неработающий IPv6. Виртуальная машина получает все необходимые данные по SLAAC, но при этом интернет недоступен. Как оказалось, виной всему режим моста на WiFi адаптере хоста. В этом случае нарушается работа протокола ND, что приводит к неработоспособности IPv6. На своей тестовой машине я просто отказался от IPv6 путём отключения приёма сообщений маршрутизаторов, добавив в секцию [Network]
файла /etc/systemd/network/enp0s3.network
:
[Network]
...
IPv6AcceptRA=no
Если вы не используете WiFi на своей хост машине для доступа в сеть, то IPv6 должен нормально работать.
Пока на этом всё. Я получил работающий Archlinux внутри своей виртуальной машины.
Обратите внимание, что заметки могут обновляться со временем. Это может быть как исправление найденных ошибок, так и доработка содержания с целью более полного раскрытия темы. Информация об изменениях доступна в репозитории на github. Там же вы можете оставить в Issue ваши замечания по данной заметке.
Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово.