Arch Linux + XFCE

Установка и настройка Arch Linux c XFCE на ноутбук(Lenovo ideapad 320S / Dell Inspiron 13 7375 2-in-1) + установка некоторых полезных приложений.

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

Почему Arch Linux, а не …? Потому что мне близка философия этого дистрибутива, в нем нет ничего лишнего, Вы сами создаете то окружение в котором будете работать. Кроме того Arch Linux использует модель плавных обновлений(Rolling release model) и строится на основе последних стабильных версий пакетов.

Почему XFCE4, а не …? Легковесная и довольно стабильная графическая среда рабочего стола.

Большинство информации было взято с официального сайта Arch Linux, а некоторая отражает личный опыт автора.

Установка системы

Загрузка образа и создание загрузочного диска

Для начала нужно загрузить образ Arch Linux, для этого можно воспользоваться множеством зеркал или использовать torrent ссылку со странички загрузки. После загрузки файла-образа желательно проверить цифровую подпись, ну или хотя бы хеш суму, дабы убедится что образ не был изменен третьими лицами. Файл с подписью и значение хеш сумы SHA1 можно найти на все той же страничке загрузки.

В OS Linux это можно сделать следующим способом:

Расчет хеш сумы SHA1

sha1sum archlinux-<version>-x86_64.iso

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

Проверка цифровой подписи

Необходимо с странички загрузки дистрибутива Arch Linux загрузить файл с расширением .sig в туже директорию где находится iso образ и выполнить команду

gpg --keyserver-options auto-key-retrieve --verify archlinux-<версия>-x86_64.iso.sig

или если вы уже используете Arch Linux то можно воспользоваться командой

pacman-key -v archlinux-<версия>-x86_64.iso.sig

Запись образа на флеш накопитель

Если Вы используете Linux, то можно воспользоваться командой dd.

sudo dd if=archlinux-2018.06.01-x86_64.iso of=/dev/sdX bs=128M

Будьте осторожны! /dev/sdX - должен указывать на устройство флеш накопителя! Ошибка в указании имени устройства накопителя приведет к потери всех данных на нем!

Пользователи OS Windows могут воспользоваться утилитой UNetBootin.

Перед загрузкой с установочной флешки нужно проверить текущие настройки BIOS(EFI). В современных ноутбуках на смену BIOS пришел EFI.

Если ноутбук был приобретен с предустановленной ОС Windows, то для успешной загрузки с флеш накопителя необходимо деактивировать Security Boot в настройках EFI. Можно также в EFI настройках активировать режим совместимости с BIOS(legacy BIOS), но это допустимо только если планируется использовать исключительно ОС Linux, так как ОС “Windows 10” в этом режиме работать уже не будет.

Если ноутбук был без предустановленной ОС, то высока вероятность что в EFI включен режим совместимости с BIOS(legacy BIOS). Если вы хотите использовать все преимущества EFI, то необходимо деактивировать этот режим и Security Boot в настройках. После установки ОС, Security Boot можно будет активировать, но потребуется сначала подписать ядро Linux своим закрытым ключом, а открытый ключ добавить в EFI, иначе EFI откажется грузить ядро.

Дальше будет рассматриваться процесс инсталяции Arch Linux с поддержкой EFI.

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

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

fdisk -l выводит список существующих дисков и их разделов.

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

fdisk /dev/<device>

где device – имя блочного устройства, как правило имеющее вид sdX, ‘X’ равно ‘а’ для первого диска, ‘b’ для второго и т.д. Но иногда бывают и другие имена для блочного устройства, к примеру для ideapad 320S это /dev/nvme0n1

В процессе разбивки диска будут создадим следующие разделы:

  1. EFI раздел (FAT32), для размещения Linux kernal и Initramfs либо файлов загрузчика.
  2. Root раздел
  3. Home раздел для хранения данных пользователей. Можно не создавать, но в таком случаи пользовательские файлы будут хранится на одном разделе с системными, что может быть черевато различными неприятностями в будущем.
  4. Swap раздел, необязательный, будет создан с целью хранения данных при когда ноутбук переходит в Спящий режим.

Так как других ОС использоваться не будет, то этих разделов вполне достаточно. Если же вы планируете использовать еще какие либо ОС, то необходимо либо создать разделы для них, либо оставить неразмеченое пространство на диске которое будет инициализировано при установке этих ОС.

Внимание! После действий перечисленных ниже, все данные на диске будут потеряны!

Для создания разделов в fdisk делаем следующие действия:

  1. Создаем GPT структуру на диске - кнопка ‘g’
  2. Создаем EFI раздел:
    • ‘n’ - далее следуем по подсказкам. Размер раздела должен быть больше 512Мб, так как минимальный размер для FAT32 равен 512Мб. Рекомендуется использовать 550Мб и больше, иначе вместо FAT32 команда форматирования раздела может создать FAT16, что приведет к ошибке при загрузке ядра и дополнительным танцам с бубном(ядро не поддерживает работу с файловой системой FAT16 по умолчанию).
    • ’t’ - меняем тип раздела на EFI
  3. Повторяем шаг 2 для создания root, home и swap разделов, при этом устанавливая соответствующий тип раздела и размер.
  4. Сохраняем сделанные изменения на диск - ‘w’
  5. Форматируем созданные разделы. Для EFI раздела используется FAT32 файловая система, для root и home разделов ext4, как наиболее универсальное решение
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
mkfs.ext4 /dev/nvme0n1p4

Используйте актуальные для Вас имена разделов вместо /dev/nvme0n1pX. Если диск в системе имел обозначение /dev/sdX, то имя первого раздела будет /dev/sdX1, второго /dev/sdX2 и т.д.

Список разделов можно вывести командой fdisk -l

Установка базовой системы

Для установки Arch Linux необходимо подключение к сети интернет для скачивания и установки актуальных версий пакетов.

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

Самым простым способом подключения к интернет будете использование проводного подключения, но современные ноутбуки могут не иметь Ethernet курту. Обойти это можно использованием внешней USB Ethernet карты, но для этого ее нужно иметь. Так что будем использовать WiFi для подключения к сети. Детально этот вопрос освещен на соответствующей Arch Wiki страничке, мы же рассмотрим его вскользь.

Определяем сетевой интерфейс

ip link

В моем случаи это wlp2s0

Подымаем сетевой интерфейс командой ip link set интерфейс up

ip link set wlp2s0 up

Для подключения к беспроводной сети используются утилиты iw или wpa_supplicant если точка доступа использует WPA/WPA2 протокол. Так как использование WPA/WPA2 протокола для WiFi сетей есть, на текущий момент, единственно безопасным и используется большинством роутеров по умолчанию, то будем для подключения использовать утилиту wpa_supplicant.

Пробуем подключится

wpa_supplicant -i wlp2s0 -c <(wpa_passphrase <SSID> <KEY>)

Если подключения произошло успешно, то будет показано соответствующие сообщения, далее можно нажать Ctrl+c для завершения wpa_supplicant и перезапустить ее в фоновом режиме добавив опцию -B.

wpa_supplicant -B -i wlp2s0 -c <(wpa_passphrase <SSID> <KEY>)

Проверить статус подключения можно командой

iw dev wlp2s0 link

Далее нам необходимо присвоить IP адрес нашему сетевому интерфейсу. Если в сети активна служба DHCP то это можно сделать несколькими способами, один из них просто запустить демон клиента dhcp

systemctl start dhcpcd

Что бы посмотреть присвоенный IP адрес воспользуйтесь командой

ip addr

Если в сети DHCP не используется, то придется задавать IP адрес интерфейса и шлюза вручную, к примеру

ip addr add 192.168.0.2/24 dev wlp2s0
ip route add default via 192.168.0.1

где: 192.168.0.224 IP адрес интерфейса и маска подсети, а 92.168.0.1 IP адрес шлюза.

Если все прошло удачно, то любой IP адрес в интернете можно будет пропинговать

ping 8.8.8.8

где 8.8.8.8 - IP адрес google DNS, вместо него можно использовать любой известный Вам адрес или же доменное имя.

Если после выполнения команды ping Вы наблюдаете обмен ICMP пакетами с заданным узлом, то соединение с интернет успешно установлено.

Установка пакетов на жесткий диск

Для начала смонтируем созданные нами разделы, но перед этим заметим что в качестве загрузчика ядра будет использоваться EFI(EFISTUB), это важно так как определяет точку монтирования EFI раздела, детально тут.

mount /dev/nvme0n1p2 /mnt # монтируем root раздела
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot # монтируем EFI раздел в boot
mkdir /mnt/home
mount /dev/nvme0n1p4 /mnt/home # монтируем home раздел

Если ранее был создан раздел подкачки, то необходимо произвести его инициализацию и активацию

mkswap /dev/nvme0n1p3
swapon /dev/nvme0n1p3

Не забудьте использовать свои имена для разделов вместо /dev/nvme0n1pX.

Определим репозитарии Arch Linux с которых будет произведена загрузка пакетов, для этого необходимо отредактировать файл /etc/pacman.d/mirrorlist скопировав адреса предпочитаемых репозитариев в начало файла. Если какоие то репы Вам не хочется использовать вообде, то просто закоментируйте соответствующие строки.

nano /etc/pacman.d/mirrorlist

Далее запустим установку базовой системы на root раздел жесткого диска.

pacstrap /mnt base

Я же сразу ставлю и пакеты для разработки ПО

pacstrap /mnt base base-devel

Сгенерируем fstab файл

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

Настройка базовой системы

Для дальнейшей настройки системы произведем изменение корня файловой системы

arch-chroot /mnt

Зададим временную зону и установим время в часах реального времени в UTC

ln -sf /usr/share/zoneinfo/<Region>/<City> /etc/localtime
hwclock --systohc

Регион и город нужно выбрать исходя из Вашего местоположения

Далее определим локали с которыми будет работать ОС, для этого нужно в файле /etc/locale.gen раскомментировать необходимые строки, у меня это

ru_RU.UTF-8 UTF-8  
en_US.UTF-8 UTF-8

Для активации выбранных нами локалей исполним команду

locale-gen

Ну и определим локаль по умолчанию, для этого в файл /etc/locale.conf пропишем строку

LANG=ru_RU.UTF-8

Зададим имя компьютера в сети

echo host_name > /etc/hostname

где host_name - любое понравившееся Вам имя.

Поменяем пароль пользователя root

passwd

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

useradd -m -U -G users,network,power,wheel,audio,video,input,storage,rfkill -s /bin/bash username
passwd username

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

Установка загрузчика

Выбор загрузчика, коих существует достаточно много, вопрос довольно холиварный. В секции посвященной разбивке диска на разделы мы упоминали что не будем использовать какой либо загрузчик, а воспользуемся возможностью EFI для загрузки ядра Linux. Детально об этом можно посмотреть тут.

Так как при инсталяции базовой системы EFI раздел был примонтирован в /boot, то нам просто остается корректно прописать в EFI строку загрузки Linux ядра. Для этого будет использоваться утилита efibootmgr.

Но тут есть один нюанс: если в компьютере используется процессор фирмы Intel, то необходимо установить intel-ucode пакет и добавить дополнительный параметр в строку загрузки ядра

pacman -S intel-ucode # Устанавливаем пакет intel-ucode
efibootmgr --disk /dev/sdX --part Y --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw initrd=\intel-ucode.img initrd=\initramfs-linux.img' --verbose

Если же используется процессор от AMD, то установить соответствующей пакет amd-ucode и добавить дополнительный параметр ядра

efibootmgr --disk /dev/sdX --part Y --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw initrd=\amd-ucode.img initrd=\initramfs-linux.img' --verbose

где:

Утилита efibootmgr также позволяет просмотреть текущие загрузочные записи

efibootmgr -v

и удалить ненужные/ошибочные

efibootmgr -b N -B

где N - номер записи (HEX) в выводе команды efibootmgr -v

Ну вот и все! Базовая инсталляция Arch Linux окончена!

Дополнительные настройки и ПО

Все пункты данного раздела описывают не обязательные действия и отражают потребности автора.

Если установка Arch Linux производится на ноутбук, то первый пункт данного раздела скорей всего для Вас обязательный.

ПО для подключения к WIFI сетям

В предыдущем разделе была описана установка базового окружения Arch Linux по средством установки группы пакетов base. В группу пакетов base не входят утилиты для настройки подключения к WiFi сети, и это не страшно если есть Ethernet карта, но в ноутбуках она зачастую отсутствует, как что установим их в ручную.

pacman -S iw wpa_supplicant

Подключение к сети описано ранее

Отключение pc speaker-a

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

echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf

У данной проблемы есть и альтернативные варианты решения

OpenSSH

SSH (Secure Shell) — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой. Установка сервера и клиента SSH

pacman -S openssh

Для настройки работы сервера редактируем файл /etc/ssh/sshd_config, в файл хорошо документирован, кроме того использование ssh довольно подробно описано на ArchWiki.

Запускаем сервер ssh и активируем его старт при запуске системы.

systemctl start sshd
systemctl enable sshd

sudo

sudo - позволяет выполнять команды от пользователя root.

Установка

pacman -S sudo

Для настройки редактируем файл /etc/sudoers с помощью команды visudo, при этом может переопределить редактор который будет использоваться. По умолчанию используется vi, что может поставить морально неподготовленного человека в тупик.

EDITOR=nano visodo

Файл достаточно хорошо задокументирован, о настройке отдельно можно еще тут почитать.

Другое

Также дополнительно я устанавливаю следующие пакеты:

Установка и настройка базовй версии Arch Linux окончена! Arch Linux установлен и работает в консольном режиме

Можно выйти с chroot окружения нажав Ctrl+D и перезагрузить компьютер, а можно сразу перейти к следующему разделу.

Установка X Window System + XFCE4 + менеджер сеансов

Если после установки базовой системы была произведена перезагрузка, то необходимо настроить подключение к сети интернет как было описано ранее.

Сначала поставим драйвера для видео адаптера.

Intel

pacman -S vulkan-intel xf86-video-intel libva-intel-driver libvdpau-va-gl

Тонкая настройка Intel графики

Акривируем GuC / HuC firmware loading, для этого нужно:

Добавить модуль i915 в initramfs отредактировав файл /etc/mkinitcpio.conf

MODULES=(i915)

Пересобрать initramfs

mkinitcpio -p linux

Добавить файл /etc/modprobe.d/i915.conf со строкой options i915 enable_guc=1

echo "options i915 enable_guc=1" > /etc/modprobe.d/i915.conf

Для проверки успешной активации можно воспользоваться командами

cat /sys/kernel/debug/dri/0/i915_huc_load_status
cat /sys/kernel/debug/dri/0/i915_guc_load_status

Тут детальная информация и альтернативное решение.

AMD

pacman -S xf86-video-amdgpu vulkan-radeon mesa-vdpau libva-mesa-driver

Данным действием мы не только поставили драйвера но и модули для активации аппаратного ускорения декодирования видео. Больше информации для Intel, AMD Аппаратное декодирование видео тут

Далее поставим пакеты для xorg + XFCE4(базовые) + lightdm(графический менеджер сеансов) + набор шрифтов

pacman -S xfce4 lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings network-manager-applet networkmanager thunar-archive-plugin xfce4-xkb-plugin xorg-xinput xorg-xinit xorg-server xorg-server-common xf86-input-libinput ttf-dejavu ttf-freefont light-locker

Активируем загрузку NetworkManager и графического менеджера сеансов при старте системными

systemctl enable NetworkManager
systemctl enable lightdm

Перегружаем компьютер

reboot

Нас встречает окошко с приглашением ввести пароль

Ну вот мы и получили работающий интерфейс пользователя

Что дальше? Можно посмотреть тут и тут, некоторые пункты будут рассмотрены ниже.

Hibernation (Спящий режим)

Задаем параметром ядра местоположение swap раздела добавив строку загрузки в efibootmgr

efibootmgr --disk /dev/sdX --part Y --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rw initrd=\intel-ucode.img initrd=\initramfs-linux.img quiet resume=/dev/nvme0n1p3' --verbose

где:

Предыдущую опцию в загрузчике желательно удалить командой efibootmgr -b N -B, где N номер записи.

Также нужно отредактировать initramfs изменив строку в /etc/mkinitcpio.conf добавив hook resume

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

и пересобрав initramfs

mkinitcpio -p linux

Дополнительные настройки и ПО.

Оптимизация работы SSD

Теме оптимизации SSD на сайте Arch Linux посвящено несколько разделов, в частности:

Оптимизацией подсистемы хранения данных можно заниматься до безобразия долго. Мы ограничимся опциями монтирования, которые запретят обновлять время доступа к файлу/директории(опция noatime) и активируем поддержку команды TRIM(опция discard).

Для этого редактируем файл /etc/fstab, добавляя опции noatime и discard, при этом опцию relatime нужно удалить. Для swap раздела добавляем только опцию discard.

Перед активацией опции TRIM нужно убедится что она поддерживается Вашим SSD, в противном случаи это черевато потерей данных. Для проверки запускаем команду

lsblk --discard

и проверяем что значения DISC-GRAN и DISC-MAX для интересующих Вас разделов содержат не нулевые значения.

Для экономии ресурса ячеек SSD диска можно воспользоваться сервисами которые перенесут временные файлы интернет браузеров и других приложений на tmpfs файловую систему, это также дополнительно увеличит отзывчивость этих приложений. Но нужно не забывать что у каждой палки два конца, в данном случаи вы рискуете потерей данных за некоторый промежуток времени если разрядится батарея. О том как это сделать смотреть тут:

Использование аппаратного шифрование диска

Получить информацию по данному вопросу можно по следующих ссылках:

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

  • Также, не все так хорошо у некоторых производителей с криптографией, отсутствует криптографическая связь между паролем заданным пользователем и ключом который используется для шифрования данных(DEK). Детали тут

  • О возможных закладках от производителя лучше вообще промолчать.

Автомонтирование флеш накопителей

pacman -S gvfs gvfs-mtp gvfs-nfs

Дополнительные шрифты

pacman -S noto-fonts-extra ttf-bitstream-vera ttf-cheapskate ttf-cheapskate ttf-hack ttf-linux-libertine ttf-droid ttf-fira-code ttf-fira-mono ttf-fira-sans ttf-font-awesome ttf-inconsolata ttf-liberation ttf-ubuntu-font-family noto-fonts ttf-croscore ttf-roboto

Блокировка экрана

В меню whisker прописываем команду light-locker-command -l, ее также можно повесить на горячую клавишу.

Дополнительные модули для XFCE4

pacman -S thunar-media-tags-plugin xfce4-notifyd xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-screenshooter xfce4-taskmanager xfce4-weather-plugin xfce4-whiskermenu-plugin

Аудио

Для вывода звука будет использовать pulseaudio

pacman -S pulseaudio pulseaudio-equalizer xfce4-pulseaudio-plugin pavucontrol

Bluetooth

pacman -S bluez bluez-firmware blueberry bluez-utils bluez-plugins

Дополнительно можно активировать поддержку аудио устройсв в pulseaudio

pacman -S pulseaudio-bluetooth

Запускаем и активируем сервис

systemctl start bluetooth.service
systemctl enable bluetooth.service

ПО общего пользования

К ПО общего пользования я отношу офис, интернет браузеры и т. д. Офис

pacman -S libreoffice-fresh libreoffice-fresh-ru evince

Браузеры

pacman -S firefox opera

Фото

pacman -S shotwell

Медиа

pacman -S vlc deadbeef

Архивы

pacman -S p7zip file-roller

AUR репозиторий и приложения для работы с ним

Пользовательский репозиторий Arch (Arch User Repository, AUR) — это поддерживаемое сообществом хранилище ПО, которое не входит в репозиторий community, core либо extra. Больше информации можно найти на странице AUR.

Сборка и установка пакета из AUR

  1. Скачать архив, содержащий PKGBUILD и, возможно, другие требуемые файлы, такие как юниты systemd и патчи;
  2. Извлечь архив (предпочтительно в каталог, предназначенный лишь для сборки из AUR) при помощи команды tar -xvf pkgname.tar.gz;
  3. Выполнить makepkg -sri в каталоге с извлеченными файлами. Эта команда скачает код, разрешит зависимости при помощи pacman, скомпилирует, запакует и установит все получившиеся пакеты, после чего удалит те из них, которые были нужны только для сборки

Ускорение компиляции и сборки пакетов

Если Вам это надо, то смотреть тут.

Yaourt

yaourt - утилита предназначена для автоматической сборки и установки пакетов из AUR, а также отслеживания их обновлений. Синтаксис полностью совпадает с таковым для pacman. yaourt нужно собрать с AUR как описано в выше.

curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz
curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz

tar -xvf package-query.tar.gz
tar -xvf yaourt.tar.gz

cd package-query
makepkg -sri

cd ../yaourt
makepkg -sri

Ссылки на полезные странички