Void Linux Послеустановочные шаги

2019-11-13

Для своего нетбука Asus 1215n я выбрал дистрибутив Void Linux с libc-библиотекой, так как для дистрибутива с musl-библиотекой не будет доступна установка проприетарных драйверов для видеокарты "Nvidia ION".

Установка с флэшки быстра и незатейлива и здесь приведена не будет. Отмечу только, что для корневой ФС выбираю BTRFS.

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

# xbps-install -Su
# xbps-install -Su
# reboot

Делаем запрос на получение списка доступных репозиториев и подключаем три из них:

# xbps-query -Rs void-repo
[-] void-repo-debug-9_4            Void Linux drop-in file for the debug repository
[-] void-repo-multilib-6_3         Void Linux drop-in file for the multilib repository
[-] void-repo-multilib-nonfree-6_3 Void Linux drop-in file for the multilib/nonfree repository
[-] void-repo-nonfree-9_4          Void Linux drop-in file for the nonfree repository

# xbps-install -Su void-repo-multilib void-repo-multilib-nonfree void-repo-nonfree

Безопасность SSH

В Void Linux по умолчанию устанавливается демон sshd с настройками, позволяющими авторизоваться root по паролю. В современных условиях этого настоятельно необходимо избегать. Без промедления выполняем:
- останавливаем демон sshd:
# sv stop sshd;
- при необходимости запрещаем запуск демона sshd:
# rm /var/service/sshd;
- комментируем все host-ключи, кроме /etc/ssh/ssh_host_ed25519_key;
- запрещаем вход для root'а:
PermitRootLogin no;
- разрешаем вход по ключу:
PubkeyAuthentication yes;
- запрещаем вход по паролю:
PasswordAuthentication no.

Включение Firewall

https://wiki.voidlinux.org/Firewall_Configuration
По умолчанию в Void Linux установлен iptables. Как обычно, правила храняться в /etc/iptables/iptables.rules и /etc/iptables/ip6tables.rules. Для восстановления правил после перезагрузки включаем демон:
# ln -s /etc/sv/iptables /var/service/

Добавление часто используемого ПО

Устанавливаем часто используемые пакеты:

$ sudo xbps-install -Su atom vscode mosh mc chromium opera torbrowser-launcher keepassxc encfs libreoffice tint2 stellarium NetworkManager-openvpn wireshark-qt zenmap tcpdump calibre mate-calc rkhunter chkrootkit smartmontools parted remmina telegram-desktop cool-retro-term font-3270
$ sudo usermod -a -G wireshark $USER

nvidia340

Так как мой старенький нетбук имеет второй видеочип на "Nvidia ION", а его поддержка закончилась на 340-ой версии драйверов от Nvidia, то установил соответствующий драйвер; себя добавил в группу пользователей этого видеочипа, и добавил демон bumblebeed в автозагрузку:

$ sudo xbps-install -Su nvidia340 bumblebee
$ sudo usermod -a -G bumblebee $USER
$ sudo ln -s /etc/sv/bumblebee /var/service

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

$ optirun glxgears -info
$ optirun glxspheres64

Локализация

Подправляем локаль для правильной работы программ, в частности mosh, gnome-terminal, клиента NextCloud:

# echo "LANG=en_US.UTF-8" > /etc/locale.conf

В /etc/default/libc-locales раскомментируем необходимые нам локали и запускаем их генерацию:

# xbps-reconfigure -f glibc-locales

NextCloud

# xbps-install -Su nextcloud-client libgnome-keyring
...
========================================================================
To actually use qtkeychain-qt5 you need to either have kwallet or
libgnome-keyring installed.
========================================================================
qtkeychain-qt5-0.9.1_1: installed successfully.
nextcloud-client-2.6.0_1: configuring ...
Updating GTK+ icon cache for /usr/share/icons/hicolor...
Updating MIME database...
nextcloud-client-2.6.0_1: post-install message:
========================================================================
NextCloud client end-to-end encryption (e2e) is currently unavailable
(LibreSSL 2.9.2 does not provide EVP_PKEY_CTX_set_rsa_oaep_md primitive)

libgnome-keyring – для подавления запроса авторизации в браузере.

Timeshift

По умолчанию в Void Linux не предусмотрен какой-нибудь планировщик задач, поэтому устанавливаем его для обеспечения запуска задач из timeshift-gtk:

# xbps-install -Su timeshift cronie
# ln -s /etc/sv/crond /var/service/

Void Linux устанавливается в btrfs-раздел без использования подтомов, тогда как Timeshift нацелен на их использование в стиле Ubuntu. То есть система размещена в подтоме @, а /home в подтоме @home. Для соблюдения этих условий необходимо:

  1. загрузиться с live-флэшки, например voidlinux
  2. примонтировать системный раздел к /mnt/3:
    $ sudo mkdir /mnt/3
    $ sudo mount /dev/sda3 /mnt/3
  3. создать здесь снимок корня в подтом с названием @:
    $ sudo btrfs subvolume snapshot /mnt/3 /mnt/3/@
  4. удалить содержимое корневого тома, кроме подтома @:
    $ cd /mnt/3
    $ sudo find -maxdepth 1 ! -name @ -exec rm -rf {} \;
  5. в файле /mnt/3/@/etc/fstab, в строке монтирования системного раздела, после defaults через запятую, добавить опцию [email protected]:
    $ sudo vi /mnt/3/@/etc/fstab
    UUID=b8d4b8a5-0392-41e4-ad14-1255f12321b6 / btrfs defaults,[email protected] 0 1
  6. примонтировать к /mnt/@ только что созданный подтом @:
    $ sudo mkdir /mnt/@
    $ sudo mount -o [email protected] /dev/sda3 /mnt/@
  7. делаем chroot и обновляем загрузчик:
    $ sudo mount -t proc /proc /mnt/@/proc
    $ sudo mount --bind /dev /mnt/@/dev
    $ sudo mount --bind /sys /mnt/@/sys
    $ sudo mount --bind /run /mnt/@/run
    $ sudo chroot /mnt/@ /bin/bash
    # update-grub
    # grub-install /dev/sda
    # exit
    $ sudo reboot

При наличии UEFI, перед chroot'ом, необходимо дополнительно примонтировать efi-раздел, например:
sudo mount /dev/sda2 /mnt/@/boot/efi. И при установке загрузчика не указывать устройство: grub-install

Если есть необходимость делать снэпшоты для /home, то повторяем вышеприведённые операции для соответствующего btrfs-раздела.

powertop

# xbps-install -Su powertop xset
# echo "powertop --auto-tune" >> /etc/rc.local

TeamViewer

Для поддержки пользователей через TeamViewer, необходимо установить в систему два пакета:

# xbps-install -Su qt5-webkit qt5-quickcontrols

Скачиваем https://download.teamviewer.com/download/linux/teamviewer_amd64.tar.xz и распаковываем в, например, /opt. Запуск teamviewer производим под обычным пользователем $ /opt/teamviewer/teamviewer. В случае неудачи можем проверить наличие в системе требуемых библиотек $ /opt/teamviewer/tv-setup checklibs.

Настройку NetworkManager, Tint2 и прочее здесь описывать не буду.