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
В процессе разбивки диска будут создадим следующие разделы:
- EFI раздел (FAT32), для размещения Linux kernal и Initramfs либо файлов загрузчика.
- Root раздел
- Home раздел для хранения данных пользователей. Можно не создавать, но в таком случаи пользовательские файлы будут хранится на одном разделе с системными, что может быть черевато различными неприятностями в будущем.
- Swap раздел, необязательный, будет создан с целью хранения данных при когда ноутбук переходит в Спящий режим.
Так как других ОС использоваться не будет, то этих разделов вполне достаточно. Если же вы планируете использовать еще какие либо ОС, то необходимо либо создать разделы для них, либо оставить неразмеченое пространство на диске которое будет инициализировано при установке этих ОС.
Внимание! После действий перечисленных ниже, все данные на диске будут потеряны!
Для создания разделов в fdisk делаем следующие действия:
- Создаем GPT структуру на диске - кнопка ‘g’
- Создаем EFI раздел:
- ‘n’ - далее следуем по подсказкам. Размер раздела должен быть больше 512Мб, так как минимальный размер для FAT32 равен 512Мб. Рекомендуется использовать 550Мб и больше, иначе вместо FAT32 команда форматирования раздела может создать FAT16, что приведет к ошибке при загрузке ядра и дополнительным танцам с бубном(ядро не поддерживает работу с файловой системой FAT16 по умолчанию).
- ’t’ - меняем тип раздела на EFI
- Повторяем шаг 2 для создания root, home и swap разделов, при этом устанавливая соответствующий тип раздела и размер.
- Сохраняем сделанные изменения на диск - ‘w’
- Форматируем созданные разделы. Для 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.2⁄24 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
где:
- sdX - идентификатор диска, в моем случаи это nvme0n1;
- Y - номер EFI раздела, у меня это 1 так как расположен он в первом разделе диска;
- XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - PARTUUID root раздела. Посмотреть PARTUUID разделов можно воспользовавшись командой blkid
Утилита 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
Файл достаточно хорошо задокументирован, о настройке отдельно можно еще тут почитать.
Другое
Также дополнительно я устанавливаю следующие пакеты:
- bash-completion
- freetype2
- vim
- rsync
- tmux
Установка и настройка базовй версии 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
где:
- sdX - идентификатор диска, в моем случаи это nvme0n1;
- Y - номер EFI раздела, у меня это 1 так как расположен он в первом разделе диска;
- XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - PARTUUID root раздела. Посмотреть PARTUUID разделов можно воспользовавшись командой blkid
Предыдущую опцию в загрузчике желательно удалить командой 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 посвящено несколько разделов, в частности:
- TRIM (Что за зверь, этот Ваш TRIM?)
- noatime options - деактивирует запись времени последнего обращения к файлу для чтения данных;
- Производительность
Оптимизацией подсистемы хранения данных можно заниматься до безобразия долго. Мы ограничимся опциями монтирования, которые запретят обновлять время доступа к файлу/директории(опция noatime) и активируем поддержку команды TRIM(опция discard).
Для этого редактируем файл /etc/fstab, добавляя опции noatime и discard, при этом опцию relatime нужно удалить. Для swap раздела добавляем только опцию discard.
Перед активацией опции TRIM нужно убедится что она поддерживается Вашим SSD, в противном случаи это черевато потерей данных. Для проверки запускаем команду
lsblk --discard
и проверяем что значения DISC-GRAN и DISC-MAX для интересующих Вас разделов содержат не нулевые значения.
Для экономии ресурса ячеек SSD диска можно воспользоваться сервисами которые перенесут временные файлы интернет браузеров и других приложений на tmpfs файловую систему, это также дополнительно увеличит отзывчивость этих приложений. Но нужно не забывать что у каждой палки два конца, в данном случаи вы рискуете потерей данных за некоторый промежуток времени если разрядится батарея. О том как это сделать смотреть тут:
- Profile-sync-daemon - синхронизация профайлов для интернет браузеров;
- Anything-sync-daemon - синхронизация любой заданной директории;
Использование аппаратного шифрование диска
Получить информацию по данному вопросу можно по следующих ссылках:
- Self-Encrypting Drives - довольно хаотичная статья на эту тему на ArchWiki. Нет упоминания что BIOS/UEFI многих плат может на прямую работать с SED и в этом случаи запись PBA нужна только если диск будет переносится на другую систему где BIOS/UEFI не поддерживает данную возможность. На эту тему есть хороший вопрос и полный ответ на stackexchange.
- wikipedia - очень неплохая статься на русской википедии.
Использование 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
- Скачать архив, содержащий PKGBUILD и, возможно, другие требуемые файлы, такие как юниты systemd и патчи;
- Извлечь архив (предпочтительно в каталог, предназначенный лишь для сборки из AUR) при помощи команды tar -xvf pkgname.tar.gz;
- Выполнить 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
Ссылки на полезные странички
- Общие рекомендации по работе c Arch Linux (во многом актуально для любого Linux дистрибутива)
- Список ПО для разных целей
- Arch Linux для ноутбуков
- Xorg
- XFCE
- pacman