Подождите немного, Я загружаюсь.
Меня постоянно преследуют умные мысли, но я быстрее.

"Интеллект - это способность избегать выполнения работы, но так, чтобы она при этом была сделана." Линус Торвальдс

QR

Содержание:

Читающих данный раздел, попрошу сопли не распускать и рукавом нос не утирать!

Создание fstab

Монтируем разделы на века,
Строка к строке - не дрогнет пусть рука.
Порядок должен быть всегда и во всём,
fstab с Пингвином создаём.

Открытие:

nano /etc/fstab

Пингвин на связи: Подключаем интернет

Расправил крылья Пингвин боевой,
Сеть подключил - и сразу рвётся в бой!
Интернета бурный и шальной поток
Gentoo впитает прямо в свой исток.
CLICK ME
Wolf

Сервер DHCP предоставляет клиенту динамический IP-адрес, маску подсети, IP-адрес шлюза по умолчанию и опционально - сервер имён DNS.
Установка dhcpcd:

emerge --ask dhcpcd

Вместо отдельного DHCP-клиента можно воспользоваться одним из сетевых менеджеров - некоторые из них имеют встроенный DHCP-клиент.
Сетевой менеджер (NetworkManager, systemd-networkd и т.д.) позволяет создавать т.н. "сетевые профили" с настройками подключений, что облегчает переключение между сетями.
Выбор приложений довольно широк, но нужно помнить, что все варианты взаимоисключают друг друга. Запускать два сетевых демона одновременно запрещено.
Для подключения сети загружаем пакет net-dialup/ppp:

emerge --ask net-dialup/ppp

Параметры системы

Здесь Пингвин настраивает ход,
Имя хоста, время и язык.
В Gentoo каждый параметр учтёт
Тот, кто к тонкой сборке уж привык.

Пароль root:

passwd
Password: (введите пароль)
Re-enter password: (повторно введите пароль)

Для настройки параметров часов открываем /etc/conf.d/hwclock

nano /etc/conf.d/hwclock

Если аппаратные часы системы настроены не на часовой пояс UTC (Гринвич),
в файл необходимо добавить строку

clock="local".

В противном случае будет сдвиг часового пояса.
Установка системной службы журналирования:

emerge syslog-ng

Для syslog-ng рекомендуется установить app-admin/logrotate:

emerge app-admin/logrotate
rc-update add syslog-ng default

Установка имени узла:

nano /etc/conf.d/hostname

(присваеваем переменной hostname имя своего узла)

hostname="tux"

Ключ на старт: Установка Grub 2

На старт! Поехали! Grub 2 уже готов,
Запустит он Gentoo в один клик.
Пингвин не тратит лишних глупых слов,
Он побеждать систему вмиг привык.

Проверяем, включён ли режим UEFI, посмотрев содержимое каталога efivars:

ls /sys/firmware/efi/efivars

Отсутствие такого каталога, говорит что система загружена в режиме BIOS или CSM.
При использовании UEFI, если в make.conf ранее не установлено, добавляем:

echo GRUB_PLATFORMS="efi-64" >> /etc/portage/make.conf

Загружаем Grub:

emerge --ask sys-boot/grub

Устанавливаем файлы GRUB в /boot/grub:
Когда используется BIOS:

grub-install /dev/sda


Если нужно установить BIOS - версию загрузчика из-под системы, загруженной в режиме UEFI, требуется принудительно задать программе установки нужную сборку GRUB:

grub-install --target=i386-pc /dev/sda

Когда используется UEFI:

grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sda

Генерируем конфигурацию GRUB:

grub-mkconfig -o /boot/grub/grub.cfg

В выводе команды хотя бы одно ядро Linux должно быть найдено.
Для настройки конфигурации Grub, используется файл /etc/default/grub.

Пингвин укрощён! Финал установки

Компиляция стихла, окончен поход,
В консоли зажёгся заветный рассвет.
Пингвин укрощён, он послушно живёт,
Мир Gentoo готов - и преград больше нет!

exit

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

reboot

Удаляем загрузочный носитель.
Добавление учётной записи для повседневной работы:
Login: User Password: (ваш пароль user)

useradd -m -G users,wheel,audio,video -s /bin/bash username

passwd username
Password: (введите пароль для username)
Re-enter password: (повторно введите пароль для подтверждения)

Удаляем tar-архив со stage3

rm /stage3-*.tar.bz2*

Настраиваем сеть.
Просмотр существующих сетевых интерфейсов:

ls /sys/class/net
enp3s0 lo

Открытие /etc/conf.d/net для автоматического получения адреса IP для enp0s3:

nano /etc/conf.d/net
config_enp3s0="dhcp"

Автоматический запуск сетевого подключения при загрузке.
Добавление net.enp3s0 в уровень запуска default:

cd /etc/init.d
ln -s net.lo net.enp3s0
rc-update add net.enp3s0 default
/etc/init.d/net.enp3s0 restart


Для systemd настройка проводного и беспроводного адаптеров на одной машине:
для проводной сети с простой конфигурацией DHCP

nano /etc/systemd/network/50-dhcp.network

[Match]
Name=enp3s0

[Network]
DHCP=yes

[DHCP]
RouteMetric=10

для беспроводной сети

nano /etc/systemd/network/60-dhcp.wireless.network

[Match]
Name=wlan0

[Network]
DHCP=yes

[DHCP]
RouteMetric=20

Cлужба dhcpcd.service запускает клиент для всех сетевых интерфейсов:

systemctl enable dhcpcd.service
systemctl start dhcpcd.service


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

systemctl enable systemd-networkd.service
systemctl start systemd-networkd.service

Чтобы systemd управлял настройками DNS, заменим resolv.conf на символическую ссылку и запустим systemd-resolved:

ln -snf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl enable systemd-resolved.service
systemctl start systemd-resolved.service.

systemd-machine-id-setup - Инициализировать идентификатор машины в /etc/machine-id.
Команда systemd-machine-id-setup также влияет на службу systemd-networkd.
Если не запустить эту команду, может произойти странное, например, сетевые интерфейсы не будут работать или сетевые адреса не будут применены.


net-misc/ntp

это набор инструментов, использующих Network Time Protocol. Их цель - поддерживать системные часы в актуальном состоянии.
Устанавливаем пакет программ NTP:

emerge --ask net-misc/ntp

Служба ntp-client используется для однократной синхронизации, обычно во время загрузки. Её цель - помочь с запуском ntpd, так как ntpd изначально ждёт, прежде чем попытаться исправить смещение часов, и может даже отказаться делать это, если смещение слишком велико.
Запуск службы ntp-client запустит синхронизацию только один раз. Затем ожидается, что ntpd будет использоваться для поддержания времени до следующей перезагрузки.
Для запуска команды синхронизации ntpdate вручную:

ntpdate -b -u 0.gentoo.pool.ntp.org

Для запуска ntp-client:

rc-service ntp-client start

systemd:

systemctl start ntpdate.service

Чтобы запустить службу ntpd:

rc-service ntpd start

Чтобы служба ntpd запускалась при загрузке:

rc-update add ntpd default

systemd
Чтобы запустить службу ntpd:

systemctl start ntpd.service

Чтобы служба ntpd запускалась при загрузке:


systemctl enable ntpd.service


Загружаем (при необходимости) файловый редактор "vim":


emerge --ask vim

Для получения обучающих инструкций набираем:

$ vimtutor

Утилиты необходимые для работы с файловыми системами

VFAT: emerge sys-fs/dosfstools

NTFS: В ядре отключаем поддержку NTFS.

File systems --->
DOS/FAT/EXFAT/NT filesystems --->
< >NTFS file system support


emerge sys-fs/ntfs3g

Btrfs: emerge sys-fs/btrfs-progs

Немного о Btrfs:
Btrfs имеет ряд функций, общих с ZFS.
Имеются и другие функции:
Можно сконвертировать файловые системы ext2, ext3 и ext4 в Btrfs с помощью утилиты btrfs-convert, убедившись, что отмонтирован раздел:

umount <mounted_device>

Проверяем целостность файловой системы с помощью утилиты fsck:

fsck.ext4 -f <unmounted_device>

Конвертируем отформатированное ext* устройство в Btrfs:

btrfs-convert <unmounted_device>

Не забываем отредактировать файл /etc/fstab и изменить значение в колонке файловая система с ext4 на Btrfs
Полезная функция Btrfs это онлайн дефрагментация:

btrfs filesystem defragment -r -v /home

Btrfs поддерживает прозрачное сжатие с помощью алгоритмов zlib, lzo и zstd:

btrfs filesystem defragment -r -v -clzo /home

Можно использовать алгоритм сжатия zlib вместо lzo, zlib более медленный, но имеющий более высокую степень сжатия:

btrfs filesystem defragment -r -v -czlib /home


Обновление дерева Portage:

emerge --sync

Обновление новой версии Portage:

emerge --oneshot portage

Обновление пакетов:

emerge -auvDN world

Не всегда имеется возможность дождаться полной установки и компиляции всех пакетов.
Можно выполнить команду:

emerge -auvDN world; poweroff

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

less /var/log/portage/elog/summary.log

Чтобы перейти в нижнею часть сообщения, нажимаем на клавиатуре клавишу "End", в верхнею часть, нажимаем "Home", переход по строкам, стрелками вниз - вверх. Для выхода из less, нажимаем клавишу "Q".
Так же установка флага -f позволяет загрузить пакеты без компиляции. В дальнейшем, можно откомпилировать загруженные пакеты в удобное время даже, при отсутствии интернета.
Флаг --emptytree, -e переустанавливает целевые атомы и всё их дерево зависимостей, как будто никакие пакеты в настоящее время не установлены. Рекомендуется с этим флагом запустить флаг --pretend, чтобы убедиться в ожидаемом результате.
После обновления библиотек, старые версии часто сохраняются, по тому что другие пакеты всё ещё создаются для этих библиотек. emerge может решить эту проблему, обновив все эти пакеты, которые построены на основе старой версии. Однако это может иметь нежелательный эффект, например, долгую установку при обновлении библиотек. Таким образом, emerge не обновляет зависимые библиотеки, а вместо этого помещает их в набор: @saved-rebuild.
Проверяем целостность системы, запустив:

revdep-rebuild

Можно выполнить следующую команду, если необходимо очистить старые версии библиотек:

emerge --ask @preserved-rebuild

Некоторые ebuild требуют определённые комбинации USE -флагов.

Пример: Описание:
REQUIRED_USE="foo? ( bar )" Если foo установлен, то bar должен быть установлен.
REQUIRED_USE="foo? ( !bar )" Если foo установлен, то bar не должен быть установлен.
REQUIRED_USE="foo? ( || ( bar baz ) )" Если foo установлен, то bar или baz должен быть установлен.
REQUIRED_USE="^^ ( foo bar baz )" Только один из foo, bar или baz должен быть установлен.
REQUIRED_USE="|| ( foo bar baz )" Хотя бы один из foo, bar или baz должен быть установлен (но можно больше).
REQUIRED_USE="?? ( foo bar baz )" Установка необязательна, но только один из foo, bar или baz может быть установлен.

Программы установленные пользователем, находятся в файле /var/lib/portage/world
Посмотреть список всех файлов,которые были установлены пакетом:

equery files <имя_пакета>

Удаление зависимостей, которые остались после удаления основного пакета:

emerge --deselect <имя_пакета>
CONFIG_PROTECT="-*" emerge --unmerge <имя_пакет>
emerge --depclean


Будьте крайне осторожны с CONFIG_PROTECT="-*", так как она может удалить важные системные настройки, если пакет их использовал. Рекомендуется сначала проверить, какие файлы будут удалены.
Чтобы увидеть список пакетов, которые будут удалены, без самого удаления, выполняем:

emerge --depclean --pretend

сокращённо:

emerge -cp

Это покажет список осиротевших пакетов (зависимостей, которые больше не нужны ни одному установленному пакету из файла @world).

При возникновении проблемы "!!!Problem with sandbox binary. Disabling...", устанавливаем sandbox с переменной:

CFLAGS_x86="-m64" emerge sys-apps/sandbox

Обработка изменений конфигурационных файлов:

etc-update
Сканирование файлов конфигурации ...
Ниже приведён список файлов, которые необходимо обновить.
После файла конфигурации следует список возможных файлов для замены.
1) ...
2) ...
...
Выберите файл для редактирования, введя соответствующий номер.
(не используйте -3, -5, -7 или -9, если вы не знаете, что делать)
(-1 для выхода) (-3 для автоматического объединения всех файлов)
(-5 для автоматического объединения И не использовать 'mv -i')
(-7 для отмены всех обновлений)
(-9, чтобы отменить все обновления И не использовать 'rm -i'):


Для сравнения старого и нового конфига, набираем номер конфигурационного файла.
- - - и + + + соответственно означает что будет удалено, а что добавлено.
После ознакомления нажимаем q для выхода и система предлагает нам несколько вариантов.
Набираем то что нам подходит:
1) - заменит полностью старый конфиг новым,
2) - удалит новый конфиг и оставит старый,
3) - попытается слить 2 конфига в один,
4) - ещё раз покажет различия,
5) - сохранить обновление в качестве примера конфигурации.
Определяем UUID:

blkid

В /etc/fstab заменяем /dev/sdaX на соответсвующий UUID=XXXX....
ОШИБКА: при системе инициализации OpenRC, во время загрузки появляется уведомление типа:
* /etc/init.d/ ... User Runscript, pleas convert to openrc-run, необходимо выполнить следующее:

cd /etc/init.d/
sed -i "s/runscript/openrc-run/" *


При этом нужно быть очень внимательным, так как потом исправить что либо будет очень сложно!

Устанавливаем gentoolkit:

emerge --ask app-portage/gentoolkit

Просматриваем зависимости пакета (от чего зависит он):

equery depends <package_name>

Или более детально:

equery d <package_name>

Это покажет дерево зависимостей, установленные пакеты и USE-флаги.
Поиск пакетов, зависящих от конкретного пакета (кто зависит от него).
Узнать, какие пакеты в системе требуют указанный пакет (обратные зависимости):

equery hasuse <package_name>

или, если нужно найти зависимость по названию в ebuild:

grep -r <package_name> /var/db/pkg/*/*/RDEPEND

Использование qapplet (из app-portage/portage-utils):

qgrep -N <package_name>

ОШИБКА:
There is NOT at least 11520 MiB disk space at "/var/tmp/portage/dev-lang/rust-1.81.0-r100/temp"
*
* Memory or space constraints set in the ebuild were not met!
* The build will most probably fail, you should:
* - enhance the memory (reduce MAKEOPTS, add swap), or
* - add more space
* as required depending on the failed tests.
* * ERROR: dev-lang/rust-1.81.0-r100::gentoo failed (pretend phase):
* Build requirements not met!


Очищаем репозиторий от неиспользуемых архивов исходного кода и бинарных пакетов используем утилиту eclean
Очищаем директорию архивов исходных файлов:

eclean distfiles

Краткий вариант:

eclean-dist

Очитка директории бинарных пакетов:

eclean packages

Краткий вариант:

eclean-pkg

Для освобождения большего места на диске добавляем опцию --deep: каждый архив исходных файлов или же бинарный пакет, который не соответствует какому-либо "установленному в данный момент" пакету (версия не имеет значения), будет удалён. В данном случае пользователи не защищены от необходимости повторного скачивания, в случае, если они должны понизить версию пакета или переустановить удалённый ранее пакет.
В качестве альтернативы можно использовать сразу две опции: --deep и --package-names. Каждый архив исходных кодов или бинарный пакет, не связанный с сейчас установленным пакетом (версия не имеет значение) будет удалён. С такими опциями также потребуется снова скачать исходные файлы, когда необходимо снова установить ранее удалённый пакет, но, в этом случае, останутся исходные файлы для возможности понижения версии пакета.
Обновляем GCC:

emerge --ask --oneshot sys-devel/gcc

Просматриваем установленные профили:

gcc-config --list-profiles
[1] x86_64-pc-linux-gnu-7.3.0 *
[2] x86_64-pc-linux-gnu-8.2.0


Выбираем необходимый профиль:

gcc-config 2
source /etc/profile


и пересобирём libtool:

emerge --ask --oneshot --usepkg=n sys-devel/libtool

Проверяем номер текущей версии, а затем удаляем старую версию:

gcc --version
emerge --ask --depclean =sys-devel/gcc-7.3.0

Очистка python.
При возникновении ошибки:
Invalid impl in /etc/python-exec/python-exec.conf: python3.6

Очищаем python:

eselect python cleanup
eselect python list
[1] python2.7
[2] python3.9 (fallback)
[3] python3.8 (fallback)


Затем обновляем его:

eselect python update
Switching to python3.9
eselect python list
[1] python3.9
[2] python2.7
[3] python3.8 (fallback)

Больше мощи: Настройка репозиториев

Добавим мощи, оверлей в зачёт!
Пингвин качает тонны новых сил.
Gentoo барьеры весело снесёт,
Весь софт планеты нас теперь впустил.

Репозиторий ebuild–файлов - это файловая структура, которая может предоставить пакеты для установки в системе Gentoo.
Gentoo репозиторий ebuild-файлов содержит ebuild-файлы, которые говорят Portage, как собирать и устанавливать каждый пакет. Ebuild-файлы содержат метаданные, информацию о зависимостях и всё остальное необходимое для работы пакета.
Метаданные содержат название пакета, версию, источник исходных кодов, доступные USE-флаги, лицензию, веб-сайт и т.д. Информация о зависимостях в ebuild-файлах позволяет Portage подтягивать любые другие пакеты, необходимые для сборки и запуска устанавливаемого пакета.
Репозитории и их файлы обычно находятся в /var/db/repos/, но пути к ним конфигурируются в /etc/portage/repos.conf.
Инструмент eselect repository позволяет легко добавлять, отключать, или удалять репозитории ebuild-файлов, сконфигурированные с Portage. Этот инструмент также предоставляет удобный способ перечислять и добавлять доступные репозитории, зарегистрированные на repos.gentoo.org.

emerge --ask app-eselect/eselect-repository

eselect repository может вывести список всех репозиториев с repos.gentoo.org:

eselect repository list

Суффикс * указывает, что этот репозиторий установлен и включён.
Суффикс # указывает, что для этого репозитория необходимо обновить их информацию о синхронизации (путём выключения и включения), или они были настроены пользователем.
Суффикс @ указывает, что такой репозиторий не указан по имени в официальном, опубликованном списке.
Используем опцию -i, чтобы перечислить только сконфигурированные репозитории:

eselect repository list -i

Добавление репозиториев ebuild-файлов с repos.gentoo.org
Синтаксис: enable (<название>|<индекс>)...

eselect repository enable guru

GURU - это официальный репозиторий ebuild-файлов, сопровождаемый совместно пользователями Gentoo, с небольшой помощью от некоторых разработчиков Gentoo. Он хорошо дополняет Gentoo репозиторий, и сопровождающие стремятся поддерживать хорошее качество для предоставляемых пакетов. Существует также список публичных репозиториев на https://repos.gentoo.org/.
Добавление репозиториев.
Синтаксис: add <название> <метод-синхронизации> <адрес-синхронизации>

eselect repository add test git https://github.com/test/test.git

Репозитории могут быть синхронизированы уже после конфигурации:

emaint sync --repo guru

Отключение репозиториев без удаления содержимого
Синтаксис: disable [-f] (<название>|<индекс>)...

eselect repository disable foo bar

Опция -f требуется для репозиториев, не зарегистрированных на repos.gentoo.org, или без информации о синхронизации. Используйте её с осторожностью.
Отключение репозиториев с удалением содержимого.
Синтаксис: remove [-f] (<название>|<индекс>)...

eselect repository remove bar baz

Опция -f требуется для репозиториев, не зарегистрированных на repos.gentoo.org, или без информации о синхронизации. Используем её с осторожностью.
Чтобы установить приоритет для определённого репозитория, изменяем вручную соответствующий раздел repos.conf и устанавливаем для priority = желаемое значение. Чем выше значение, тем выше приоритет:

vim /etc/portage/repos.conf/eselect-repo.conf
[guru]
location = /var/db/repos/guru
sync-type = git
sync-uri = https://github.com/gentoo-mirror/guru.git
priority = 100

Flatpak

Без долгих сборок, прямо из песочницы,
Flatpak доставит то, что нужно взять.
Пингвин доволен - софт встаёт как хочется,
Gentoo не нужно сутками гонять.

Flatpak - это фреймворк для управления пакетами, предназначенный для поддержки изолированных, независимых от дистрибутива бинарных пакетов для настольных приложений Linux. Подобно chroot , Docker и LXD , которые обеспечивают изоляцию преимущественно серверных приложений от базовой операционной системы, Flatpak предоставляет механизм изоляции преимущественно настольных приложений от базовой операционной системы. В сочетании с такими функциями, как systemd-homed, становится возможным разместить пользователя и все его приложения в одном каталоге - $HOME пользователя - таким образом, чтобы обеспечить переносимость между системами с одинаковой архитектурой процессора.
В ядре рекомендуется включить песочницу Landlock (CONFIG_SECURITY_LANDLOCK=y)

Security options --->
[*] Landlock support
(landlock,yama) Ordered list of enabled LSMs


Устанавливаем Flatpak:

emerge --ask sys-apps/flatpak

Все операции с Flatpak можно выполнять от имени пользователя или от имени root. При выполнении от имени пользователя может помочь флаг user, если возникнут проблемы с правами доступа.
Добавляем репозиторий Flathub.

$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

В некоторых случаях может потребоваться изменить права доступа к изолированной среде для приложения Flatpak.
Можно использовать графический инструмент Flatseal:

$ flatpak install com.github.tchx84.Flatseal

Запускаем через меню приложений или командой:

$ flatpak run com.github.tchx84.Flatseal

Для установки приложения, например Nheko, выполняем следующую команду:

$ flatpak search Nheko

Получаем идентификатор ID im.nheko.Nheko и устанавливаем приложение:

$ flatpak --user install im.nheko.Nheko

Для запуска приложения используем созданный файл .desktop или выполняем команду:

$ flatpak run im.nheko.Nheko

Для обновления установленных приложений и сред выполнения:

$ flatpak update

Чтобы удалить приложение:

$ flatpak uninstall im.nheko.Nheko

Приложения Flatpak на основе GTK по умолчанию не следуют теме GTK системы. Сначала выясняем, какая тема GTK используется в данный момент, например, Adwaita, а затем устанавливаем её для использования приложениями Flatpak:

$ gsettings get org.gnome.desktop.interface gtk-theme
$ flatpak install flathub org.kde.KStyle.Adwaita


Учим пингвина говорить по-русски

Пингвин в Gentoo суров и смел,
Собрал ядро, кириллицу настроил.
Он по-русски «Hello World» пропел,
И мир свободный нам построил.

"USE=nls unicode" уже установлены ранее.

vim /etc/rc.conf Устанавливаем:

unicode="YES"

В ядре проверяем, а если нет, то включаем:

vim /usr/src/linux/.config
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_UTF8=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_850=y
CONFIG_NLS_KOI8_R=y

В make.conf устанавливаем:

LINGUAS="ru en"
L10N="ru en en-AU en-CA en-GB en-US en-ZA"


Конфигурация локалей:
Выбираем необходимые локали:

$ strings /usr/lib/locale/locale-archive | less

Открываем /etc/locale.gen

vim /etc/locale.gen

Определяем локали:

en_US
ru_RU

Определяем доступность выбранных локалей:

$ locale -a

запускаем:

locale-gen

Эта программа сгенерирует все локали, которые определены в файле /etc/locale.gen.
Проссматриваем доступные локали:

eselect locale list

Устанавливаем необходимую локаль (ru_RU.UTF-8):

eselect locale set 6

Перезагружаем окружение оболочки:

env-update && source /etc/profile

Устанавливаем шрифты:

emerge terminus-font intlfonts cronyx-fonts kbd

Переменные окружения:
В файле /etc/env.d/02locale прописываем:

LC_ALL="ru_RU.utf8"
LANG="ru_RU.utf8"

перечитываем конфигурацию:

env-update && source /etc/profile

Выбор раскладки клавиатуры:

vim /etc/conf.d/keymaps устанавливаем:
keymap="-u ru"
windowkeys="YES"
extended_keymaps=""
dumpkeys_charset="koi8-r"
fix_euro="NO"

Добавляем /etc/init.d/keymaps в уровень запуска boot:

rc-update add keymaps boot

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

rc-service keymaps restart

Консольные шрифты можно посмотреть:

ls /usr/share/consolefonts/

Задаём консольный шрифт:

vim /etc/conf.d/consolefont устанавливаем например:
consolefont="Cyr_a8x16"

после чего добавляем в уровень запуска boot:

rc-update add consolefont boot
* service consolefont added to runlevel boot

Принудительный просмотр русских манов:

$ man -L ru <man page>

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

localectl list-locales

устанавливаем требуемую локаль:

localectl set-locale LANG=ru_RU.UTF-8

проверяем результат:

localectl | grep "System Locale"
System Locale: LANG=ru_RU.UTF-8

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

localectl list-keymaps

устанавливаем необходимую раскладку для консоли, например:

localectl set-keymap ruwin_alt-UTF-8

проверяем, что раскладка для консоли была установлена:

localectl | grep "VC Keymap"
VC Keymap: ruwin_alt-UTF-8

Консольные шрифты находятся в каталоге /usr/share/consolefonts/.
Выбираем понравившийся шрифт и добавляем его в /etc/vconsole.conf, например:

vim /etc/vconsole.conf
KEYMAP=us
FONT=UniCyr_8x16

Раскладки доступные для сервера X11 можно проверить:

localectl list-x11-keymap-layouts

устанавливаем необходимые раскладки для X11:

localectl set-x11-keymap "us, ru"

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

localectl | grep "X11 Layout"
X11 Layout: us ru

Модель, вариант и опции устанавливаем так:

localectl set-x11-keymap <LAYOUT> <MODEL> <VARIANT> <OPTIONS>

например:


localectl set-x11-keymap us,ru "" "" grp:alt_shift_toggle

Русский язык используется не везде, либо кириллица отображается неправильно?

Попробуем удалить файл ~/.config/plasma-localerc, выходим из системы и заново заходим в сеанс Plasma.

vim ~/.config/plasma-localerc
[Formats]
LANG=ru_RU.UTF-8
[Translations]
LANGUAGE=ru_RU:en_US

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

Связь «точка-точка» - правила просты,
Протокол PPP соединит мосты.
Gentoo в сети, Пингвин на высоте,
Пакеты мчатся к цифровой мечте.

Пакет net-dialup/ppp загружен ранее.
В /etc/rc.conf устанавливаем:

vim /etc/rc.conf

rc_depend_strict="YES"

В ядре подключаем:

Device Drivers -->
[*] Network device support -->
<*> PPP (point-to-point protocol) support
<> PPP BSD-Compress compression (NEW)
<*> PPP Deflate compression (NEW)
[*] PPP filtering (NEW)
<*> PPP MPPE compression (encryption) (EXPERIMENTAL) (NEW)
[ ] PPP multilink support (EXPERIMENTAL) (NEW)
<*> PPP over Ethernet (EXPERIMENTAL)
<*> PPP support for async serial ports (NEW)
<*> PPP support for sync tty ports (NEW)

Компилируем ядро.
Добавляем в файл /etc/conf.d/net:

vim /etc/conf.d/net

config_enp3s0="dhcp"
config_ppp0="ppp"
link_ppp0="enp3s0" #(Specify your ethernet interface)
plugins_ppp0="pppoe"
username_ppp0='1234' #(логин сети)
password_ppp0='5678' #(пароль сети)
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"
rc_net_ppp0_need="net.enp3s0"

Добавляем символическую ссылку в /etc/init.d:

ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0

Запускаем PPPoE

/etc/init.d/net.ppp0 start

Для systemd Создаём файл настроек соединения:

vim /etc/ppp/peers/provider

следующего содержания:

plugin rp-pppoe.so
# rp_pppoe_ac 'имя концентратора доступа'
# rp_pppoe_service 'имя службы PPPoE'
# сетевой интерфейс
enp3s0
name "логин провайдера"
usepeerdns
persist
# раскомментируйте, если вам нужен автодозвон "по требованию"
#demand
#idle 180
defaultroute
hide-password
noauth

Добавляем запись с паролем соединения в /etc/ppp/pap-secrets или /etc/ppp/chap-secrets, в зависимости от типа аутентификации, используемого вашим провайдером.
Если не уверены, можно добавить запись в оба файла, pppd выберет нужный самостоятельно.

логин провайдера * пароль провайдера

Пробуем установить соединение:

pppd call provider

или

pon provider (в данном случае просто pon)

где provider — имя файла настроек, созданного в /etc/ppp/peers.
Чтобы убедиться, что соединение PPPoE установлено, проверяем вывод pppd в системном логе:

journalctl -b --no-pager | grep pppd

Файл настроек /etc/ppp/peers/provider используется по умолчанию.
Если при вызове pppd было указано другое имя файла, вместо явного указания имени файла можно просто добавить символическую ссылку на этот файл:

ln -s /etc/ppp/peers/имя_соединения /etc/ppp/peers/provider

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

pon

Чтобы разорвать соединение, выполняем:

poff имя_соединения

nftables

Стена крепка, и трафик под контролем,
Пингвин настроил nftables щит.
В Gentoo злоумышленникам мы проход закроем,
Система безопасно зазвучит.

Даже самая добрая собака имеет право на самозащиту, когда она боится.

nftables - это преемник iptables. Он заменяет существующие фреймворки iptables, ip6tables, arptables и ebtables.
Он использует ядро ​​Linux и новую пользовательскую утилиту под названием nft.
nftables обеспечивает слой совместимости для iptables/ip6tables и фреймворка.
Как и в случае с фреймворком iptables, nftables построен на правилах, которые определяют действия. Эти правила прикреплены к цепочкам. Цепочка может содержать набор правил и регистрируется в хуках netfilter. Цепочки хранятся внутри таблиц. Таблица специфична для одного из протоколов третьего уровня. Одно из главных отличий от iptables заключается в том, что больше нет предопределённых таблиц и цепочек.
Пример конфигурации: набор параметров для базовой настройки межсетевого экрана:

[*] Networking support --->
Networking options --->
[*] Network packet filtering framework (Netfilter) --->
Core Netfilter Configuration --->
<M> Connection tracking netlink interface
<M> Netfilter nf_tables support
<M> Netfilter nf_tables conntrack module
<M> Netfilter nf_tables log module
<M> Netfilter nf_tables limit module
<M> Netfilter nf_tables masquerade support
<M> Netfilter nf_tables nat module

Дополнительная общая конфигурация: Для объединения правил IPv4 и IPv6 в одну таблицу: CONFIG_NF_TABLES_INET (Если семейство inet не включено, можно использовать только семейства ip и ip6 по отдельности)
<M> Netfilter nf_tables support
[*] Netfilter nf_tables mixed IPv4/IPv6 tables support

Дополнительная необязательная конфигурация: для предварительной фильтрации на основе сетевого устройства требуется поддержка таблиц netdev: CONFIG_NF_TABLES_NETDEV
[*] Netfilter nf_tables netdev tables support
IP: Netfilter Configuration --->
-*- IPv4 nf_tables support
<M> IPv4 packet rejection
<M> IP tables support (required for filtering/masq/NAT)
<M> Packet filtering
<M> REJECT target support
<M> iptables NAT support
<M> MASQUERADE target support


Установите net-firewall/nftables:

emerge --ask net-firewall/nftables

Скрипт инициализации /etc/init.d/nftables поддерживает следующие действия:
save - сохраняет текущий загруженный набор правил в месте, определённом параметром NFTABLES_SAVE, по умолчанию: /var/lib/nftables/rules-save.
reload - загружает текущий загруженный набор правил из NFTABLES_SAVE.
stop - предназначен для вызова при завершении работы системы. Если включен параметр SAVE_ON_STOP, сохраняет набор правил.
start - предназначен для вызова при загрузке системы, загружает набор правил из NFTABLES_SAVE.
clear - очищает текущий загруженный набор правил, эквивалентно nft flush ruleset.
list - отображает список текущих загруженных наборов правил.
Конфигурация доступна в /etc/conf.d/nftables.
Nftables можно запустить при загрузке системы с помощью команды:

rc-update add nftables default

Если после изменения набора правил не выполнить команду /etc/init.d/nftables save вручную, это может привести к загрузке более старого набора правил, если возникнет проблема во время выключения системы и сохранение набора правил не удастся.
Для systemd:

touch /var/lib/nftables/rules-save

nftables-store.service можно использовать для сохранения текущего набора правил, запустив его в любое время. Его также можно включить для сохранения набора правил при завершении работы системы.
nftables-load.service отвечает за загрузку правил при запуске.

systemctl enable --now nftables-store

systemctl enable --now nftables-load


nft -f - можно управлять правилами с помощью файлов, например:

vim ~/nft_start.nft
#!/usr/sbin/nft -f

flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;

# Разрешаем трафик локальной петли (нужно для работы софта внутри ПК)
iifname "lo" accept
# Разрешаем уже установленные соединения (ответы от сайтов и т.д.)
ct state established,related accept
# Разрешаем ICMP (пинги) — полезно для диагностики
ip protocol icmp accept
ip6 nexthdr icmpv6 accept

# Открываем все входящие запросы с сервера
iifname "tun0" ip saddr 10.8.1.1 accept
# tcp dport 22 accept
# Всё остальное будет отброшено политикой 'drop'
}
chain forward {
type filter hook forward priority 0; policy drop;

# Домашнему ПК обычно не нужно пересылать трафик через себя
}
chain output {
type filter hook output priority 0; policy accept;

# Исходящий трафик разрешён полностью
}
}


nft -f ~/nft_start.nft

При загрузке правил с помощью nft -f, в отличие от многократного вызова nft в скрипте оболочки, ошибки приведут к тому, что ни одно из правил файла не будет загружено.
Nftables позволяет включать дополнительные файлы и каталоги. Можно создать каталог, например, /etc/nftables.conf.d/, содержащий дополнительные наборы правил для загрузки.
Любой из этих файлов можно сделать исполняемым, если добавить shebang: #! /sbin/nft -f.
Перед загрузкой новых или отредактированных правил проверяем их с помощью nft:

nft list ruleset
nft -c -f ruleset


Выяснение, какие порты прослушиваются:

netstat -tuwpln

Команда netstat признана устаревшей и на смену ей пришла более быстрая и удобная в использовании команда ss.
Если запустить ss без аргументов командной строки или опций, она выведет полный список работающих соединений.
Команда ss (без опций) показывает очень много данных (подробности по всем соединениям, установленным по TCP, UDP и с помощью сокетов Unix), можно отправить вывод этой команды в файл для того, чтобы проанализировать его позже:

ss > ss_output

Выяснение, какие порты прослушиваются:

ss -tuwpln

С помощью grep можно выяснить, какое именно ПО занимается прослушиванием конкретного порта, какой порт прослушивается конкретным ПО и т.д.:

ss -tuwpln | grep "firefox"

Флаги для команды ss:
-h, --help Вывести справку.
-V, --version Вывести версию программы.
-n, --numeric Не раскрывать имена служб.
-r, --resolve Не раскрывать номера адресов/портов.
-a, --all Показывать все сокеты.
-l, --listening Показывать слушающие сокеты.
-o, --options Показывать информацию таймера.
-e, --extended Показывать детальные сведения о сокете.
-m, --memory Показывать использование памяти сокетом.
-p, --processes Показывать процесс, использующий сокет.
-i, --info Показывать внутреннюю информацию TCP.
-s, --summary Выводить сводку. Эта опция не обрабатывает список сокетов, а получает сведения из других источников. Полезно при огромном количестве сокетов, что делает обработку файла /proc/net/tcp слишком долгим.
-4, --ipv4 Показывать только сокеты IP версии 4 (аналогично -f inet).
-6, --ipv6 Показывать только сокеты IP версии 6 (аналогично -f inet6).
-0, --packet Показывать пакетные сокеты.
-t, --tcp Показывать только сокеты TCP.
-u, --udp Показывать только сокеты UDP.
-d, --dccp Показывать только сокеты DCCP.
-w, --raw Показывать только сокеты RAW.
-x, --unix Показывать только сокеты Unix.
-f ТИП, --family=ТИП Показывать только сокеты указанного ТИПА. Поддерживаются следующие типы: unix, inet, inet6, link, netlink.
-A ЗАПРОС, --query=ЗАПРОС Список таблиц сокетов, разделенных запятыми. Поддерживаются следующие идентификаторы: all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream, packet_raw, packet_dgram.
-D ФАЙЛ Не показывать ничего, вывести необработанные данные о сокетах TCP в ФАЙЛ с учетом фильтров. Если ФАЙЛ указан как -, вывести на стандартный вывод.
-F ФАЙЛ, --filter=ФАЙЛ Прочитать фильтр из ФАЙЛА. Каждая строка ФАЙЛА интерпретируется как отдельная опция командной строки. Если ФАЙЛ указан как -, получить содержимое из стандартного ввода.
FILTER := [ state ФЛАГ_TCP ] [ ВЫРАЖЕНИЕ ] Обратитесь к официальной документации (пакет iproute-doc в Debian) для описания фильтров.
Фильтрация сокетов с использованием состояний TCP, например:

ss -4 state FILTER-NAME-HERE

Где FILTER-NAME-HERE может быть любым из приведённых ниже:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : все вышеперечисленные состояния;
connected : все состояния, за исключением прослушивания и закрытия;
synchronized : все подключенные состояния, за исключением syn-sent;
bucket : показывать состояния, которые поддерживаются как мини-сокеты, т.е. время ожидания и syn-recv;
big : Противоположно состоянию bucket.
Для очистки всех текущих правил (сделает их пустыми/разрешающими), но оставит сервис работающим:

nft flush ruleset

Это удалит все таблицы, цепочки и правила, что фактически отключит брандмауэр до следующего перезапуска службы или применения правил.
Скрипт, который гарантированно «обнуляет» всё:

#!/bin/bash
# Проверка на root
if [[ $EUID -ne 0 ]]; then
echo
"Этот скрипт нужно запускать от root"
exit 1
fi

# Сброс всех правил
nft flush ruleset
# Удаление всех таблиц (опционально)
nft delete table inet filter 2>/dev/null
nft delete table ip filter 2>/dev/null
nft delete table ip6 filter 2>/dev/null
echo
"Nftables полностью сброшен"


Продаются
книги

Оставить отзыв

Установи и
БУДЕШЬ СЧАСТЛИВ!

Сегодня
Вы его клиент, а завтра Он Ваш. Будьте вежливы

yumani
lightning
Scrooge
Dollar
Ruble
Ruble
Gold
Help