# Linux

# БД

# Импорт базы SQLite в PostgreSQL

Установить PG Loader

```shell
sudo apt install pgloader
```

Создать файл настроек импорта

```shell
nano import.conf
```

> load database  
>  from 'dbname.db'  
>  into postgresql:///dbname  
> with include drop, create tables, create indexes, reset sequences  
> set work\_mem to '16MB', maintenance\_work\_mem to '512 MB';

Создать нужную базу в PostgreSQL

```shell
createdb dbname
```

Запуск импорта

```shell
pgloader import.conf
```

# Экспорт базы SQLite

```shell
sqlite3 dbname.db .dump > dbname.bak
```

# Виртуализация

# Включение 3D ускорения VMware

1\. Редактируем файл кофигурации

```bash
sudo nano ~/.vmware/preferences 
```

<span data-key="3356ae2c8d7c4e238d5a9e323bedd82a" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMnN1ZG8lMjBnbm9tZS10ZXh0LWVkaXRvciUyMH4lMkYudm13YXJlJTJGcHJlZmVyZW5jZXMlMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCUyQyUyMnNlbGVjdGlvbnMlMjIlM0ElNUIlNUQlN0QlNUQlMkMlMjJrZXklMjIlM0ElMjJmNDkyMzFmYTBiN2Y0NzZmOThlN2M4ZDM5MzhmZGYxZSUyMiU3RCU1RCUyQyUyMmtleSUyMiUzQSUyMmViOWVlYzVmODczZTRiMDE4OTU3YzRhNzMzNWVkODRiJTIyJTdEJTVEJTJDJTIya2V5JTIyJTNBJTIyZTg4OGIwNWZlM2ExNDExMGFlOTAyOGJiNzJhZmFjZjQlMjIlN0Q=">2. Добавляем строку</span>

> <span data-key="3356ae2c8d7c4e238d5a9e323bedd82a" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlLWxpbmUlMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMnN1ZG8lMjBnbm9tZS10ZXh0LWVkaXRvciUyMH4lMkYudm13YXJlJTJGcHJlZmVyZW5jZXMlMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCUyQyUyMnNlbGVjdGlvbnMlMjIlM0ElNUIlNUQlN0QlNUQlMkMlMjJrZXklMjIlM0ElMjJmNDkyMzFmYTBiN2Y0NzZmOThlN2M4ZDM5MzhmZGYxZSUyMiU3RCU1RCUyQyUyMmtleSUyMiUzQSUyMmViOWVlYzVmODczZTRiMDE4OTU3YzRhNzMzNWVkODRiJTIyJTdEJTVEJTJDJTIya2V5JTIyJTNBJTIyZTg4OGIwNWZlM2ExNDExMGFlOTAyOGJiNzJhZmFjZjQlMjIlN0Q=">mks.gl.allowBlacklistedDrivers = "TRUE"</span>

# Уменьшение холостой нагрузки QEMU

Изменить дефолтные значения параметров виртуальной машины с:

```
<clock offset='localtime'>
  <timer name='rtc' tickpolicy='catchup'/>
  <timer name='pit' tickpolicy='delay'/>
  <timer name='hpet' present='no'/>
  <timer name='hypervclock' present='yes'/>
</clock>
```

На измененные:

```
<clock offset='localtime'>
  <timer name='hpet' present='yes'/>
  <timer name='hypervclock' present='yes'/>
</clock>
```

# Оборудование

# Выбор видеокарты

Общий вывод информации по видеокартам

```bash
xrandr --listproviders
```

Вывод информации о первой карте

```bash
DRI_PRIME=0 glxinfo | grep -i opengl
```

Вывод информации о второй карте

```bash
DRI_PRIME=1 glxinfo | grep -i opengl
```

Запуск приложения на второй карте

```bash
DRI_PRIME=0 gnome-terminal
```

# Настройка TRIM

Отредактировать таймер службы fstrim:

```shell
sudo nano /usr/lib/systemd/system/fstrim.timer
```

Поменять соответствующие параметры:

> OnCalendar=hourly  
> AccuracySec=30s

Отредактировать службу fstrim:

```shell
sudo nano /usr/lib/systemd/system/fstrim.service
```

Поменять соответствующий параметр:

> ExecStart=/sbin/fstrim -av

Перезагрузить службы и перезапустить таймер fstrim:

```shell
sudo systemctl daemon-reload
sudo systemctl restart fstrim.timer
```

# Не работает камера в Firefox

Открыть расширенные настройки браузера, введя в адресную строку: `about:blank`

Найти параметр `media.webrtc.camera.allow-pipewire` и сменить его значение на `False`

Перезапустить браузер

# Отключение Turbo Boost

#### Автоматический режим

Создаем новый сервис

```bash
cat << EOF | sudo tee \
/etc/systemd/system/disable-turbo-boost.service
[Unit]
Description=Disable Turbo Boost on Intel CPU
 
[Service]
ExecStart=/bin/sh -c "/usr/bin/echo 1 > \
/sys/devices/system/cpu/intel_pstate/no_turbo"
ExecStop=/bin/sh -c "/usr/bin/echo 0 > \
/sys/devices/system/cpu/intel_pstate/no_turbo"
RemainAfterExit=yes
 
[Install]
WantedBy=sysinit.target
EOF
```

Обновляем список сервисов

```bash
 sudo systemctl daemon-reload
```

Включаем и стартуем сервис

```bash
sudo systemctl enable --now disable-turbo-boost
```

Чтобы отключить лимит - останавливаем сервис

```bash
sudo systemctl stop disable-turbo-boost
```

#### Ручной режим

Отключаем

```bash
echo 1 | sudo tee -a /sys/devices/system/cpu/intel_pstate/no_turbo
```

либо

```bash
echo "0" | sudo tee -a /sys/devices/system/cpu/cpufreq/boost
```

Включаем

```bash
echo 0 | sudo tee -a /sys/devices/system/cpu/intel_pstate/no_turbo
```

либо

```bash
echo "1" | sudo tee -a /sys/devices/system/cpu/cpufreq/boost
```

# Управление Touchpad с клавиатуры

Скачиваем [touchpad.sh](https://wiki.tiukov.com/attachments/3) или создаем файл

```bash
nano touchpad.sh
```

Выставляем права на исполнение

```bash
chmod +x touchpad.sh
```

Вставляем в него код

```bash
#!/bin/bash

state=$(gsettings get org.gnome.desktop.peripherals.touchpad send-events)

if [ "$state" == "'enabled'" ];then
    gsettings set org.gnome.desktop.peripherals.touchpad send-events disabled
else
    gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled
fi
```

Закрываем, перемещаем в любое место и добавлем в графическом окружение вызов файла через нужное сочетание на клавиатуре.

P.S. Работает только в Gnome

# Intel sound

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

```bash
sudo grubby --update-kernel=ALL --args="snd-intel-dspcfg.dsp_driver=1"
sudo grubby --info=ALL
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
```

И перезапустить систему

# Intel Wi-Fi 7 (BExxx cards)

С картами Intel серии BE (Wi-Fi 7) есть проблема с неработающим режимом сна на ноутбуках. После выхода из сна, ноутбук теряет возможность использовать беспроводные соединения.

До тех пор, пока исправление не будет внесено в ядро, можно воспользоваться следующим фиксом.

Создаем файл **iwlwifi.sh:**

```bash
sudo nano /usr/lib/systemd/system-sleep/iwlwifi.sh
```

Вносим в него следующее:

```bash
#!/bin/bash

if [ "$1" = "post" ]; then
  exec /usr/sbin/modprobe iwlwifi iwlmvm
elif [ "$1" = "pre" ]; then
  exec /usr/sbin/rmmod iwlmvm iwlwifi
fi

exit 0
```

Делаем файл исполняемым:

```bash
sudo chmod +x /usr/lib/systemd/system-sleep/iwlwifi.sh
```

Перезапускаем устройство

# Trim на USB дисках

Установка дополнительных пакетов

```bash
sudo apt install sg3-utils lsscsi
```

Найти в списке необходимый диск

```bash
lsusb
```

Записать в конфигурацию изменения для нужного диска, где **AAAA** и **BBBB** заменить на данные из параметра ID

```bash
echo 'ACTION=="add|change", ATTRS{idVendor}=="AAAA", ATTRS{idProduct}=="BBBB", SUBSYSTEM=="scsi_disk", ATTR{provisioning_mode}="unmap"' | tee -a /etc/udev/rules.d/10-uas-discard.rules
```

Перезапустить правила UDEV

```bash
sudo udevadm control -R -S
```

Проверить работоспособность Trim

```bash
lsblk -Df
```

Запустить Trim, где вместо **/path/to\_mount** указать путь, по которому смонтирован usb диск

```bash
sudo fstrim -v /path/to_mount
```

# Общее

# Автозапуск скрипта для Gnome

Если есть необходимость запускатьскрипт при каждом запуске Gnome окружения, необходимо создать desktop файл автозапуска:

```bash
nano ~/.config/autostart/scriptname.desktop
```

Где **scriptname** - название файла, которое может быть любым, но логичнее всего сделать его аналогичным названию файла скрипта.

Вставить в него содержимое:

> \[Desktop Entry\]  
> Name=my-script  
> GenericName=my-script  
> Comment=My Script  
> Exec='/home/user/.config/autostart/scriptname.sh'  
> Terminal=false  
> Type=Application  
> X-GNOME-Autostart-enabled=true

Где:

- **my-script** - название скрипта в графическом окружении
- **My Script** - описание скрипта
- **/home/user/.config/autostart/scriptname.sh** - пусть до скрипта, который необходимо запускать

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

# Автоматическое обновление Flatpak пакетов

Установка службы обновления для пользователей

```bash
sudo nano /etc/systemd/user/update-user-flatpaks.service
```

> \[Unit\]  
> Description=Update user Flatpaks
> 
> \[Service\]  
> Type=oneshot  
> ExecStart=/usr/bin/flatpak update --assumeyes --noninteractive --user
> 
> \[Install\]  
> WantedBy=default.target

Установка службы обновления для системы

```bash
sudo nano /etc/systemd/system/update-system-flatpaks.service
```

> \[Unit\]  
> Description=Update system Flatpaks  
> After=network-online.target  
> Wants=network-online.target
> 
> \[Service\]  
> Type=oneshot  
> ExecStart=/usr/bin/flatpak update --assumeyes --noninteractive --system
> 
> \[Install\]  
> WantedBy=multi-user.target

Установка таймера для пользователей

```bash
sudo nano /etc/systemd/user/update-user-flatpaks.timer
```

> \[Unit\]  
> Description=Update user Flatpaks daily
> 
> \[Timer\]  
> OnCalendar=daily  
> Persistent=true
> 
> \[Install\]  
> WantedBy=timers.target

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

```bash
sudo nano /etc/systemd/system/update-system-flatpaks.timer
```

> \[Unit\]  
> Description=Update system Flatpaks daily
> 
> \[Timer\]  
> OnCalendar=daily  
> Persistent=true
> 
> \[Install\]  
> WantedBy=timers.target

Включение и запуск служб

```bash
systemctl --user enable --now update-user-flatpaks.timer
sudo systemctl --system enable --now update-system-flatpaks.timer
```

# Включение поддержки мультимедиа в Opera

Создать или скачать готовый файл [fix\_opera.sh](https://wiki.tiukov.com/attachments/4) и внести в него скрипт

```bash
nano fix-opera.sh
```

```bash
#!/usr/bin/env bash

TMP_DIR="/tmp"
APP_DIR="/usr/lib64/opera"

curl -s https://api.github.com/repos/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/latest | grep -wo "https.*-linux-x64.zip" | wget -qi - -P "$TMP_DIR"
mv "$TMP_DIR"/*-linux-x64.zip "$TMP_DIR"/libffmpeg.zip
unzip "$TMP_DIR"/libffmpeg.zip
rm -rf "$TMP_DIR"/libffmpeg.zip
sudo mv "$TMP_DIR"/libffmpeg.so "$APP_DIR"/.
```

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

```bash
chmod +x fix-opera.sh
./fix-opera.sh
```

Перезапустить браузер

# Включение поддержки rsa шифрования для ssh

Включение поддержки RSA

```bash
echo "HostKeyAlgorithms +ssh-rsa" >> /etc/ssh/sshd_config
```

Перезапуск сервиса

```bash
systemctl restart sshd
```

# Включение поддержки Wayland для NoMachine

Вариант 1

```bash
sudo nano /usr/NX/etc/node.cfg
```

> WaylandModes "compositor,drm"

```bash
sudo systemctl restart display-manager
sudo /etc/NX/nxserver --restart
```

Вариант 2

```bash
sudo /etc/NX/nxserver --egl-capture yes
sudo nano /usr/NX/etc/node.cfg
```

> WaylandModes "egl,compositor,drm"

```bash
sudo systemctl restart display-manager
sudo /etc/NX/nxserver --restart
```

# Включение подсветки синтаксиса в nano

Если файл конфига есть, то:

```
nano ~/.config/nano/nanorc
```

*Если файла конфига нет, то:*

```
mkdir -p ~/.config/nano; cd !$; nano nanorc
```

> include "/usr/share/nano/\*.nanorc"

# Включение ускорения Firefox

В **about:config** изменить

Включение аппаратного ускорения:

```
layers.acceleration.force-enabled = true
webgl.force-enabled = true
gfx.webrender.enabled = true
gfx.webrender.all = true
dom.webgpu.enabled = true
```

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

```
widget.wayland-dmabuf-vaapi.enabled = true
media.ffmpeg.vaapi.enabled = true
media.ffmpeg.low-latency.enabled = true
media.navigator.mediadatadecoder_vpx_enabled = true
media.ffvpx.enabled = false
media.rdd-ffvpx.enabled = false
media.rdd-vpx.enabled = false
```

Перезапустить браузер

# Генерация dbparam.pem

```bash
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
```

# Генерация QR кодов

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

Генерация ссылки

```
qrencode -m 0 -l H -s 6 -o qrcode.png "https://www.tiukov.com"
```

Генерация геопозиции

```
qrencode -m 0 -l H -s 6 -o "grcode.png" "geo:12.459444,99.978611"
```

Генерация номера телефона

```
qrencode -m 0 -l H -s 6 -o "grcode.png" "tel: +79876543210"
```

Генерация Wi-Fi подключения

```
qrencode -m 0 -l H -s 6 -o "grcode.png" "WIFI:T:WPA2;S:SSID_WIFI_NAME;P:P@$$W0RD;;"
```

Генерация создания письма

```
qrencode -m 0 -l H -s 6 -o "grcode.png" "mailto:mail@example.com?subject=Test&body=Test mail message"
```

Генерация SMS

```
qrencode -m 0 -l H -s 6 -o "grcode.png" "smsto:+79876543210,Test message"
```

# Добавить текст в начало или в конец каждой строки

С помощью sed (3 варианта):

```shell
sed 's/^/ТЕКСТ ДО/' file.txt
sed -e 's/^\(.*\)$/ТЕКСТ ДО\1/' file.txt
sed 's/.*/ТЕКСТ ДО&/' file.txt

sed 's/$/ТЕКСТ ПОСЛЕ/' file.txt
sed -e 's/^\(.*\)$/\1ТЕКСТ ПОСЛЕ/' file.txt
sed 's/.*/&ТЕКСТ ПОСЛЕ/' file.txt

sed 's/^/ТЕКСТ ДО/; s/$/ТЕКСТ ПОСЛЕ/' file.txt
sed -e 's/^\(.*\)$/ТЕКСТ ДО\1ТЕКСТ ПОСЛЕ/' file.txt
sed 's/.*/ТЕКСТ ДО&ТЕКСТ ПОСЛЕ/' file.txt
```

С помощью awk:

```shell
awk '{ print "ТЕКСТ ДО" $0 }' file.txt

awk '{ print $0 "ТЕКСТ ПОСЛЕ" }' file.txt

awk '{ print "ТЕКСТ ДО" $0 "ТЕКСТ ПОСЛЕ" }' file.txt
```

С помощью perl (3 варианта):

```Perl
perl -lne 'print "ТЕКСТ ДО$_"' file.txt
perl -pe 's/^/ТЕКСТ ДО/' file.txt
perl -lpe '$_="ТЕКСТ ДО$_"' file.txt

perl -lne 'print "$_ТЕКСТ ПОСЛЕ"' file.txt
perl -pe 's/$/ТЕКСТ ПОСЛЕ/' file.txt
perl -lpe '$_="$_ТЕКСТ ПОСЛЕ"' file.txt

perl -lne 'print "ТЕКСТ ДО$_ТЕКСТ ПОСЛЕ"' file.txt
perl -pe 's/^/ТЕКСТ ДО/; s/$/ТЕКСТ ПОСЛЕ/' file.txt
perl -lpe '$_="ТЕКСТ ДО$_ТЕКСТ ПОСЛЕ"' file.txt
```

Если нужно вывести не на экран, а в файл, то в конце команды добавить:

> &gt; new\_file.txt

# Конвертирование форматов изображений

PNG-&gt;JPG

```bash
for file in *.png; do convert $file "$file.jpg"; done
```

JPG-&gt;PNG

```bash
for file in *.jpg; do convert $file "$file.png"; done
```

# Копирование диска по сети

Получатель

```bash
nc -l $PORT | pbzip2 -d | dd of=/hdd.img obs=1M
```

Отправитель

```bash
pv /dev/$DISK | pbzip2 -9 | nc $IP $PORT
```

**$DISK** - Идентификатор диска или раздела (например **sda**)

**$IP** - IP адрес устройства, куда нужно отправить данные

**$PORT** - Порт для подключения

Вмнесто **/hdd.img** можно указать другое расположение или диск, для переноса данных 1к1.

Для работы нужны: **netcat**, **dd**, **pv** и **pbzip2**

# Некорректные цвета в Firefox

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

- Открыть расширенные настройки браузера через **about:config**
- Элементу **browser.display.use\_system\_colors** выставить значение **False**
- Элементу **widget.content.allow-gtk-dark-theme** выставить значение **False**

# Обновление модулей Python

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

```bash
pip3 list --outdated
```

Вариант 1

```bash
pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U
```

Вариант 2

```bash
pip3 list -o | cut -f1 -d' ' | tr " " "\n" | awk '{if(NR>=3)print)' | cut -d' ' -f1 | xargs -n1 pip3 install -U
```

# Отключение защиты от уязвимостей

Отредактировать параметр **GRUB\_CMDLINE\_LINUX** загрузчика

```bash
sudo nano /etc/default/grub
```

Если ядро **старее** 5.1.13

> GRUB\_CMDLINE\_LINUX="noibrs noibpb nopti nospectre\_v2 nospectre\_v1 l1tf=off nospec\_store\_bypass\_disable no\_stf\_barrier mds=off tsx=on tsx\_async\_abort=off mitigations=off"

Если ядро **новее** 5.1.13

> GRUB\_CMDLINE\_LINUX="mitigations=off"

Обновить загрузчик

```bash
sudo update-grub
```

Перезапустить систему

```bash
sudo reboot
```

Проверить актуальное состояние защиты

```bash
sudo lscpu
```

# Отключение защиты от Meltdown и Spectre

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

```shell
sudo nano /etc/default/grub
```

> GRUB\_CMDLINE\_LINUX\_DEFAULT="... noibrs noibpb nopti nospectre\_v2 nospectre\_v1 l1tf=off nospec\_store\_bypass\_disable no\_stf\_barrier mds=off tsx=on tsx\_async\_abort=off mitigations=off"

```shell
sudo update-grub
sudo reboot
```

# Отключение проверки состояния сети

Внести изменения в файл конфигурации NetworkManager:

```bash
sudo cat >> /etc/NetworkManager/NetworkManager.conf <<EOF
[connectivity]
enabled=false
EOF
```

Перезапустить систему:

```bash
sudo reboot
```

# Отключение экрана консоли

```shell
sudo nano /etc/default/grub
```

> GRUB\_CMDLINE\_LINUX="consoleblank=120"

```shell
sudo update-grub
```

# Отключение IPv6

Применить настройки без перезапуска

```bash
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
```

Внести изменения в системную конфигурацию

```bash
echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6=1" >> /etc/sysctl.conf
```

Еси после перезагрузки сервера ipv6 не отключился, внести изменения в /etc/rc.local

```bash
/etc/sysctl.d
/etc/init.d/procps restart
```

Для отключения через загрузчик, добавить к параметру ядра

> GRUB\_CMDLINE\_LINUX\_DEFAULT="ipv6.disable=1"  
> GRUB\_CMDLINE\_LINUX="ipv6.disable=1"

Обновить загрузчик

```bash
update-grub
```

# Отключение Super+N в Gnome

Создать скрипт

```bash
nano disable_super_n.sh
```

Вставить в него содержимое

```bash
#!/usr/bin/env bash

WSNUM=(1 2 3 4 5 6 7 8 9)
for WSN in ${WSNUM[@]}
do
  gsettings set org.gnome.shell.keybindings switch-to-application-$WSN []
done
```

Сделать скрипт запускаемым

```bash
chmod +x disable_super_n.sh
```

Выполнить скрипт

```bash
./disable_super_n.sh
```

# Разрешение запуска графических приложений под sudo

Из под обычного пользователя выполнить команды

```bash
echo "xhost local:root" >> ~/.xinitrc
xhost local:root
```

# Скрипт подключения к RDP

Предварительно установить пакет [freerdp](https://www.freerdp.com)

```shell
sudo nano /opt/rdp.sh
```

> \#!/bin/bash  
> \#GDK\_BACKEND=x11  
> RDPCLIP="-clipboard"  
> RDPCOMP="-compression"  
> RDPSHARE="-home-drive"  
> RDPSERVER=`zenity --entry --title="RDP" --text="Server address"`  
> RDPLOGIN=`zenity --entry --title="RDP" --text="Server login"`  
> RDPPASS=`zenity --entry --hide-text --title="RDP" --text="Server password"`
> 
> RDPCHOICE=`zenity --list --title "RDP" --text "Connection options" --checklist --column "" --column "Select" 1 "Clipboard" 2 "Compression" 3 "Share home folder"`
> 
> case "${RDPCHOICE}" in  
> \*"Clipboard"\* )  
> RDPCLIP="+clipboard"  
> ;;  
> esac
> 
> case "${RDPCHOICE}" in  
> \*"Compression"\* )  
> RDPCOMP="+compression"  
> ;;  
> esac
> 
> case "${RDPCHOICE}" in  
> \*"Share home folder"\* )  
> RDPSHARE="+home-drive"  
> ;;  
> esac
> 
> xfreerdp /u:$RDPLOGIN /p:$RDPPASS /v:$RDPSERVER /cert-ignore /network:auto /workarea /dynamic-resolution /disp /video /nsc /microphone /sound /smartcard /gfx /rfx +window-drag +offscreen-cache +menu-anims +gfx-progressive +gfx-small-cache +gfx-thin-client +glyph-cache +multitransport +gestures +bitmap-cache +aero +fonts $RDPSHARE $RDPCLIP $RDPCOMP &amp;&gt; /dev/null

При использовании Wayland, раскомментировать строку GDK\_BACKEND=x11

Скачать иконку для приложения и положить в домашнюю директорию

[![rdp.png](https://wiki.tiukov.com/uploads/images/gallery/2021-12/scaled-1680-/rdp.png)](https://wiki.tiukov.com/uploads/images/gallery/2021-12/rdp.png)

```shell
sudo mv ~/rdp.png /opt/rdp.png
nano ~/.local/share/applications/rdp.desktop
```

> \[Desktop Entry\]  
> Exec=/opt/rdp.sh %u  
> Name=RDP  
> GenericName=RDP  
> X-GNOME-FullName=RDP  
> Icon=/opt/rdp.png  
> Type=Application  
> Terminal=False

В списке приложений появится приложение с названием RDP

Выбор опций при подключении влияет на следующее:

- Clipboard - включение общего буфера обмена между компьютером и удаленным сервером
- Compression - включение сжатия (включать при работе через интернет или при медленной локальной сети)
- Share home folder - подключение домашней директории в виде сетевого диска на удаленном сервере

# Служба Tracker

#### Отключение

```bash
systemctl --user mask tracker-extract-3.service tracker-miner-fs-3.service tracker-miner-rss-3.service tracker-writeback-3.service tracker-xdg-portal-3.service tracker-miner-fs-control-3.service
```

```bash
tracker3 reset -s -r
```

Перезапустить компьютер

#### Включение

```bash
systemctl --user unmask tracker-extract-3.service tracker-miner-fs-3.service tracker-miner-rss-3.service tracker-writeback-3.service tracker-xdg-portal-3.service tracker-miner-fs-control-3.service
```

Перезапустить компьютер

# Создание файла подкачки

Создаем файл размером в 4GB:

```shell
sudo fallocate -l 4G /swapfile
```

Выставляем права:

```shell
sudo chmod 600 /swapfile
```

Превращаем его в swap раздел:

```shell
sudo mkswap /swapfile
```

Подключаем:

```shell
sudo swapon /swapfile
```

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

```shell
echo '/swapfile none swap sw 0 0' |sudo tee -a /etc/fstab
```

# Удаление агента Itarian

```shell
nano uninstall_ccc.sh
```

> \#!/bin/bash  
> if find /etc/systemd/system/itsm.service -name itsm.service -print -quit;  
> then  
> systemctl stop itsm &amp;&amp; systemctl disable itsm &amp;&amp; rm -f /etc/systemd/system/itsm.service &amp;&amp; rm -rf /opt/COMODO &amp;&amp; rm -rf /run/comodo &amp;&amp; rm -rf /etc/xdg/menus/applications-merged/comodo-comodo.menu &amp;&amp; rm -rf ~/Desktop/comodo-ccs.desktop  
> read -p "REBOOT IS NEEDED, PERFORM NOW? Y/N " n  
> echo $n   
> if \[ $n = Y \] || \[ $n = y \];  
> then  
> /sbin/reboot  
> fi  
> elif find /etc/init/itsm.conf -name itsm.conf -print -quit;  
> then  
> stop itsm &amp;&amp; rm /etc/init/itsm.conf &amp;&amp; initctl reload-configuration &amp;&amp; rm -rf /opt/COMODO &amp;&amp; rm -rf /run/comodo &amp;&amp; rm -rf /etc/xdg/menus/applications-merged/comodo-comodo.menu &amp;&amp; rm -rf ~/Desktop/comodo-ccs.desktop  
> echo ""  
> echo "\*\*\*COMODO CLIENT COMMUNICATION IS UNINSTALLED\*\*\*"  
> echo ""  
> read -p "REBOOT IS NEEDED, PERFORM NOW? Y/N " n  
> echo $n   
> if \[ $n = Y \] || \[ $n = y \];  
> then  
> /sbin/reboot  
> fi  
> else  
> echo ""  
> echo "\*\*\*DEVICE IS NOT ENROLLED IN ITSM\*\*\*"  
> echo ""  
> fi

```shell
chmod +x uninstall_ccc.sh
sudo sh uninstall_ccc.sh
```

# Удаление загрузочных записей BIOS/UEFI

**Посмотреть список записей**

```bash
efibootmgr -v
```

**Удалить конкретную запись**

```bash
sudo efibootmgr -b # -B
```

Где # - номер записи без нулей (например для записи Boot0003 необходимо указывать просто 3).

# Установка пакетного менеджера NIX

Установка

```bash
curl -L https://nixos.org/nix/install | sh
```

Добавление списка установленных приложений nix в общий список

```bash
ln -s /home/$USER/.nix-profile/share/applications/* /home/$USER/.local/share/applications/
```

# Установка unbound

```shell
sudo apt install unbound
wget https://www.internic.net/domain/named.root -qO- | sudo tee /var/lib/unbound/root.hints
sudo nano /etc/unbound/unbound.conf.d/main.conf
```

> server:  
> logfile: "/var/log/unbound/unbound.log"  
> verbosity: 1
> 
> interface: 0.0.0.0  
> port: 53
> 
> do-ip4: yes  
> do-udp: yes  
> do-tcp: yes  
> do-ip6: no
> 
> prefer-ip6: no
> 
> \#root-hints: "/var/lib/unbound/root.hints"
> 
> harden-glue: yes  
> harden-dnssec-stripped: yes
> 
> hide-identity: yes  
> hide-version: yes
> 
> use-caps-for-id: no
> 
> edns-buffer-size: 1472
> 
> prefetch: yes
> 
> num-threads: 1
> 
> so-rcvbuf: 1m
> 
> private-address: 192.168.0.0/16  
> private-address: 169.254.0.0/16  
> private-address: 172.16.0.0/12  
> private-address: 10.0.0.0/8  
> private-address: fd00::/8  
> private-address: fe80::/10
> 
> access-control: 192.168.0.0/16 allow  
> access-control: 169.254.0.0/16 allow  
> access-control: 172.16.0.0/12 allow  
> access-control: 10.0.0.0/8 allow  
> access-control: 127.0.0.1/24 allow

```shell
sudo mkdir -p /var/log/unbound
sudo touch /var/log/unbound/unbound.log
sudo chown unbound /var/log/unbound/unbound.log
sudo systemctl disable systemd-resolved --now
sudo systemctl restart unbound
```

# cbonsai

Установка из исходников

```bash
git clone https://gitlab.com/jallbrit/cbonsai
cd cbonsai
sudo make install PREFIX=/usr/ocal
cd ..
rm -rf cbonsai
```

# Cockpit SSL

Залить на сервер сертификат (certificate.crt) и ключ (certificate.key)

```shell
sudo cat certificate.crt > /etc/cockpit/ws-certs.d/ssl.cert<br></br>sudo cat certificate.key >> /etc/cockpit/ws-certs.d/ssl.cert<br></br>sudo systemctl restart cockpit
```

# Gnome - увеличение громкости более 100%

```bash
gsettings set org.gnome.desktop.sound allow-volume-above-100-percent 'true'
```

# IPIP туннель

**192.168.2.1** - внутренний адрес узла туннеля  
**255.255.255.0** - подсеть внутреннего туннеля

Временный туннель

```shell
sudo apt install ipip
sudo modprobe ipip
sudo modprobe tun
sudo ip tunnel add tun0 mode ipip remote <remote_ip> local <local_ip>
sudo ip link set tun0 up
sudo ip addr add 192.168.2.1/24 dev tun0
```

Постоянный туннель

```shell
sudo apt install ipip
sudo modprobe ipip
sudo modprobe tun
sudo nano /etc/network/interfaces
```

> auto tun0  
> iface tun0 inet static  
> address 192.168.2.1  
> netmask 255.255.255.0  
> network 192.168.2.0  
> broadcast 192.168.2.255  
> pre-up /sbin/ip tunnel add tun0 mode ipip remote &lt;remote\_ip&gt; local &lt;local\_ip&gt;  
> post-down /sbin/ip tunnel del tun0

```shell
sudo ifup tun0
```

# LVM

Расширение раздела

- Подключаем диск

В данном примере, группа lvm vgmain, подключенный диск sdb, а увеличиваемый раздел - корневой.

- Смотрим текущий список групп: ```bash
    vgdisplay
    ```
- Добавляем диск в группу: ```bash
    vgextend vgmain /dev/sdb
    ```
- Смотрим текущий список разделов: ```bash
    lvdisplay
    ```
- Увеличиваем раздел на размер добавленного диска: ```bash
    lvextend -r -l +100%FREE /dev/vgmain/root
    ```
- Меняем разметку файловой системы: ```bash
    xfs_growfs / -d
    ```

# Nextcloud

**Включение HTTPS**

```shell
sudo nano /var/www/html/config/config.php
```

> 'overwrite.cli.url' =&gt; 'https://my.nextcloud.com',  
> 'overwritehost' =&gt; 'my.nextcloud.com',  
> 'overwriteprotocol' =&gt; 'https',  
> 'htaccess.RewriteBase' =&gt; '/',

```shell
sudo -u www-data php /var/www/html/occ maintenance:update:htaccess
```

**Очистка приложений**

```shell
sudo -u www-data php /var/www/html/occ files:scan-app-data
```

**Переиндексация файлов**

```shell
sudo -u www-data php /var/www/html/occ files:scan --all
```

**Исправление кодировки**

```shell
sudo convmv -f utf-8 -t utf-8 -r --notest --nfc <nextcloud-data-folder>
sudo -u www-data php /var/www/html/occ files:scan --all
```

**Отключение индексирования**

```shell
sudo touch <nextcloud-data-folder>/.noindex
```

**Отключение сканирования фото**

```shell
sudo touch <nextcloud-data-folder>/.noimage
```

**Отключение сканирования медиа**

```shell
sudo touch <nextcloud-data-folder>/.nomedia
```

**Превью**

```shell
sudo -u www-data php /var/www/html/occ config:app:set --value="32 64 1024" previewgenerator squareSizes
sudo -u www-data php /var/www/html/occ config:app:set --value="64 128 1024" previewgenerator widthSizes
sudo -u www-data php /var/www/html/occ config:app:set --value="64 256 1024" previewgenerator heightSizes
sudo -u www-data php /var/www/html/occ config:app:set preview jpeg_quality --value="60"
sudo -u www-data php /var/www/html/occ config:system:set preview_max_x --value 2048
sudo -u www-data php /var/www/html/occ config:system:set preview_max_y --value 2048
sudo -u www-data php /var/www/html/occ config:system:set jpeg_quality --value 60
sudo systemctl restart apache2
sudo -u www-data php /var/www/html/occ preview:delete_old
sudo -u www-data php /var/www/html/occ preview:generate-all -vvv
sudo -u www-data php /var/www/html/occ preview:pre-generate
sudo crontab -u www-data -e
```

> \*/10 \* \* \* \* php -f /var/www/html/occ preview:pre-generate

```shell
sudo nano /var/www/html/config/config.php
```

> 'preview\_libreoffice\_path' =&gt; '/usr/bin/libreoffice',  
> 'enable\_previews' =&gt; true,  
> 'enabledPreviewProviders' =&gt;  
> array (  
> 0 =&gt; 'OC\\\\Preview\\\\Image',  
> 1 =&gt; 'OC\\\\Preview\\\\Movie',  
> ),

**Миграция в PostgreSQL**

```shell
sudo apt install php-pgsql
sudo -u postgres psql
CREATE USER nextcloud WITH PASSWORD 'p@$$w0rd';
CREATE DATABASE nextcloud TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE nextcloud OWNER TO nextcloud;
GRANT ALL PRIVILEGES ON DATABASE nextclouddb TO nextcloud;
\q
sudo -u www-data php /var/www/html/nextcloud/occ db:convert-type --all-apps --password "p@$$w0rd" pgsql nextcloud localhost nextcloud
```

**Сказать клиентам, что данные на сервере поменялись**

```shell
sudo -u www-data php /var/www/html/occ maintenance:data-fingerprint
```

**Исправление ошибок Redis**

```shell
sudo redis-cli -s /var/run/redis/redis-server.sock flushall
```

**Исправление ошибок с датой**

```shell
sudo find /data/folder -mtime +18000 -exec echo {} ";"
sudo touch /data/folder/wrong/file
sudo -u www-data php /var/www/html/occ files:scan --all
```

# Nextcloud automount with rclone

Добавить Nextcloud подключение в конфигурацию rclone.

Для примера будет использоваться название подключения - nextcloud.

Сменить в сервисе **{USER\_NAME}** на имя пользователя.

Создать в домашней директории точку монтирвоания

```bash
mkdir ~/Nextcloud
```

Создать сервис

```bash
sudo nano /etc/systemd/system/rclone-nextcloud.service
```

```css
[Unit]
Description=RClone mount for Nextcloud
Documentation=man:rclone(1)
After=network-online.target
Wants=network-online.target
AssertPathIsDirectory=/home/{USER_NAME}/Nextcloud

[Service]
Type=simple
User=tiukov
Group=tiukov
ExecStart=/usr/bin/rclone mount nextcloud: /home/{USER_NAME}/Nextcloud \
    --config=/home/{USER_NAME}/.config/rclone/rclone.conf \
    --vfs-cache-mode full \
    --vfs-cache-max-age 6h \
    --vfs-cache-max-size 50G \
    --buffer-size 16M \
    --dir-cache-time 72h \
    --umask 002 \
    --uid 1000 \
    --gid 1000 \
    --daemon-timeout 30s
ExecStop=/bin/fusermount -u /home/{USER_NAME}/Nextcloud
TimeoutStartSec=60
TimeoutStopSec=20
KillMode=process
Restart=on-failure
RestartSec=30
StartLimitInterval=300
StartLimitBurst=3

[Install]
WantedBy=multi-user.target
```

Обновить список

```bash
sudo systemctl daemon-reload
```

Включить и запустить

```bash
sudo systemctl enable --now rclone-nextcloud.service
```

# Ошибки

# ../../grub-core/commands/loadenv.h:read_envblk_files:51:invalid environment block

Внести изменения в загрузчик

```bash
sudo grub2-editenv - unset env_block
```

Перезапустить компьютер

# /opt/resolve/bin/resolve symbol lookup error /lib64/libgdk_pixbuf-2.0.so.0 undefined symbol g_task_set_static_name

#### Вариант 1

```bash
sudo rm /opt/resolve/libs/libglib-2.0.so*
sudo rm /opt/resolve/libs/libgio-2.0.so*
sudo rm /opt/resolve/libs/libgmodule-2.0.so*
```

#### Вариант 2

```bash
wget https://dl.fedoraproject.org/pub/fedora/linux/releases/38/Everything/x86_64/os/Packages/g/gdk-pixbuf2-2.42.10-2.fc38.x86_64.rpm
rpm2cpio ./gdk-pixbuf2-2.42.10-2.fc38.x86_64.rpm | cpio -idmv
sudo cp -r * /opt/resolve/libs/
```

# /opt/resolve/bin/resolve symbol lookup error /lib64/libpango-1.0.so.0

```bash
sudo cp /lib64/libglib-2.0.* /opt/resolve/libs/
```

# Высокая нагрузка на процессор процессом nvidia-powerd

#### Вариант 1

Открываем свойства процесса на редактирвоание:

```bash
sudo systemctl edit nvidia-powerd
```

Добавляем "-" к команде запуска nvidia-powerd. Строка запуска должна быть вида:

> ExecStart=-/usr/bin/nvidia-powerd

Перечитываем сервисы:

```bash
sudo systemctl daemon-reload
```

Перезапускаем сервис:

```bash
sudo systemctl restart nvidia-powerd
```

#### Вариант 2

Создаем скрипт:

```bash
sudo nano /opt/nvpd_restart.sh
```

Добавляем в него содержимое:

```bash
#!/bin/bash
nvidia_usage=$(ps -C nvidia-powerd -o %cpu | grep -v C | awk '{printf $1}' | cut -d "." -f 1)
if [ "$nvidia_usage" -gt 5 ]; then
    systemctl restart nvidia-powerd
    echo "nvidia-powerd service KO => restarted"
else
    echo "nvidia-powerd service OK"
fi
```

Прописываем в крон:

> \*/1 \* \* \* \* /opt/nvpd\_restart.sh 2&gt;&amp;1

# Высокое потребление ресурсов процессом tracker-extract

Для исправления необходимо в корень всех внешних дисках создать пустые файлы **.nomedia** и **.trackerignore**

Пример:

```bash
touch ~/pCloudDrive/.nomedia
touch ~/pCloudDrive/.trackerignore
touch ~/NAS/.nomedia
touch ~/NAS/.trackerignore
```

Это касается сетевых дисков, облачных, USB и прочих, которые подключаются к устройству на постоянной или временной основе.

После чего необходимо перезапустить устройство.

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

```bash
systemctl mask --user --now tracker-miner-fs-3.service
```

и перезапустить устройство.

# Не работает клавиатура, либо мышь на экране логина

```shell
sudo nano /etc/default/grub
```

> GRUB\_CMDLINE\_LINUX= ... iommu=soft

```shell
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
```

# BUG: soft lockup - CPU#16 stuck for 23s!

**Временное решение**

```bash
sudo echo 20 > /proc/sys/kernel/watchdog_thresh
```

**Постоянное решение**

```bash
sudo tee > /etc/sysctl.d/99-watchdog_thresh.conf <<EOF
kernel.watchdog_thresh=20
EOF
sudo sysctl -p  /etc/sysctl.d/99-watchdog_thresh.conf
```

# Cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/boot /boot none bind,ro 0 0) permission denied

```
sudo /usr/lib/snapd/snap-update-ns firefox
```

# Failed to parse translated string 24h for key clock-format in schema org.gnome.desktop.interface

- Запустить **dconf-editor**
- Перейти по пути **/org/gnome/desktop/interface/clock-format**
- Отключить пункт **Use default value**
- Перезапустить сессию Gnome

# From remote flathub: Input buffer too small

```bash
sudo dnf downgrade ostree
```

# Glances режим web сервера отображает пустую страницу

Посмотреть версию установленного ПО

```bash
glances --version
```

Присвоить переменной номер версии из предыдущей команды

```bash
export GLANCES_VERSION="3.3.1.1"
```

Скачать архив с приложением нужной версии

```bash
wget https://github.com/nicolargo/glances/archive/refs/tags/v${GLANCES_VERSION}.tar.gz
```

Распаковать архив

```bash
tar zxvf v${GLANCES_VERSION}.tar.gz
```

Скопировать отсутствующую директорию

```bash
sudo cp -r glances-${GLANCES_VERSION}/glances/outputs/static/public/ /usr/lib/python3/dist-packages/glances/outputs/static/
```

Удалить архив и распакованную его версию

```bash
rm -rf glances-${GLANCES_VERSION} v${GLANCES_VERSION}.tar.gz
```

Можно запускать glances в режиме веб-сервера

```bash
glances -w
```

# Gnome shell Crashing on lock screen

```bash
echo 'MUTTER_DEBUG_KMS_THREAD_TYPE=user' | sudo tee -a /etc/enviorenment
```

# ImportError: cannot import name 'sysconfig' from 'distutils' (/usr/lib/python3.8/distutils/__init__.py)

```bash
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall
```

# Invalid or corrupted package (PGP signature) error, do...

```bash
sudo pacman -S archlinux-keyring
sudo pacman-key --init
sudo pacman-key --populate
sudo pacman -Syyu
```

# Lowest_entropy

```shell
sudo apt update
sudo apt install rng-tools haveged
```

# MESA-INTEL Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0

Переключить режим работы:

```shell
sudo sysctl -w dev.i915.perf_stream_paranoid=0
```

Прописать режим работы на постоянной основе:

```shell
sudo echo "dev.i915.perf_stream_paranoid=0" >> /etc/sysctl.d/100-i915.conf
```

# MESA-INTEL warning FINISHME support YUV colorspace with DRM format modifiers

Для новых видеокарт:

```bash
echo 'GSK_RENDERER=ngl' | sudo tee -a /etc/environment
```

Для старых видеокарт:

```bash
echo 'GSK_RENDERER=gl' | sudo tee -a /etc/environment
```

# ModuleNotFoundError No module named 'pacman_mirrors'

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

```shell
sudo pacman -S shiny-mirrors
```

Отредактировать содержимое файла списка репозиториев:

```shell
sudo nano /etc/pacman.d/mirrorlist
```

Поменять содержимое на:

> Server = [https://mirror.alpix.eu/manjaro/stable/$repo/$arch](https://mirror.alpix.eu/manjaro/stable/%24repo/%24arch)

Запустить обновление пакетов:

```shell
sudo pacman -Syyu
```

Обновить список зеркал и выбрать наиболее быстрое:

```shell
sudo pacman-mirrors --fasttrack && sudo pacman -Syyu
```

# Openvpn-iptables.service Main process exited, code=exited, status=4/NOPERMISSION

```shell
sudo nano /etc/systemd/system/openvpn-iptables.service
```

> \[Service\]  
> TimeoutStartSec=infinity  
> ExecStartPre=/bin/sleep 10

# Please enter the password for the PKCS#11 token PIV_II

```shell
sudo dnf install -y rpmdevtools
rpmdev-setuptree
mkdir -p ~/rpmbuild/SPECS
nano ~/rpmbuild/SPECS/fffix.spec
```

> Name: fffix  
> Version: 0.0.1  
> Release: 1%{?dist}  
> Summary: Fixes Browsers
> 
> License: BSD  
> URL: None
> 
> Requires: opensc
> 
> %description
> 
> %prep
> 
> %build
> 
> %install
> 
> %files
> 
> %post  
> echo "disable-in: google-chrome firefox opera thunderbird" &gt; %{\_prefix}/share/p11-kit/modules/opensc.module
> 
> %changelog  
> \* Sat Mar 26 2022 Jonathan Dickinson  
> -

```shell
cd ~/rpmbuild/SPECS
rpmbuild -bb fffix.spec
sudo dnf install -y ~/rpmbuild/RPMS/x86_64/fffix-*.rpm
reboot
```

# Sudo setrlimit(RLIMIT_CORE) Operation not permitted

```shell
sudo echo "Set disable_coredump false" >> /etc/sudo.conf
```

# WARNING:fapi:src/tss2-fapi/api/Fapi_List.c:228:Fapi_List_Finish()

Создать директорию для конфигурации:

```bash
mkdir -p ~/.config/pkcs11/modules/
```

Создать файл конфигурации:

```bash
nano ~/.config/pkcs11/modules/tpm2_pkcs11.module
```

Внести настройки:

> module: libtpm2\_pkcs11.so  
> disable-in: firefox thunderbird evolution chrome chromium-browser opera

# You don't have /home/user/.gem/ruby/2.7.0/bin in your PATH

```bash
nano .bashrc
```

> PATH="$(ruby -e 'print Gem.user\_dir')/bin:$PATH"

# Сети

# Приоритет IPv6

Для смены приоритета необходимо создать файл **/etc/gai.conf**:

```bash
sudo nano /etc/gai.conf
```

Добавить в него дефолтные настройки с приоритетом на IPv6:

```xml
label  ::1/128       0
label  ::/0          1
label  2002::/16     2
label ::/96          3
label ::ffff:0:0/96  4
precedence  ::1/128      50
precedence  ::/0          40
precedence  2002::/16     30
precedence ::/96          20
precedence ::ffff:0:0/96  10
```

Если необходимо поменять приоритет на IPv4, то в файле поменять последний параметр на значение **100**:

```xml
precedence ::ffff:0:0/96  100
```

Для проверки можно воспользоваться командой, которая выведет текущий ipv4 адрес, затем текущий ipv6 адрес и в конце текущий адрес приоритетного протокола:

```bash
curl -4 my.ip.fi && curl -6 my.ip.fi && curl my.ip.fi
```

# Alpine

# Включение rc.local

```shell
rc-update add local default
nano /etc/local.d/local.start
chmod +x /etc/local.d/local.start
```

# Включение SSH

#### Старый метод  


```shell
apk update
apk upgrade
apk add openssh
rc-update add sshd
/etc/init.d/sshd start
```

#### Новый метод

```
setup-sshd
```

# Репозитории

#### Стабильные

```
https://dl-cdn.alpinelinux.org/alpine/latest-stable/main
https://dl-cdn.alpinelinux.org/alpine/latest-stable/community
```

#### Роллинг

```
http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community
http://dl-cdn.alpinelinux.org/alpine/edge/testing
```

# CentOS

# Отключение IPv6

```shell
sudo nano /etc/defaults/grub
```

> GRUB\_CMDLINE\_LINUX="…ipv6.disable=1…"

```shell
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
```

# Создание update-grub

```shell
sudo mkdir /opt/bin
sudo nano /opt/bin/update-grub
```

> \#!/bin/sh  
> set -e  
> exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

```shell
sudo chmod +x /opt/bin/update-grup
```

# PPTP сервер

Установить пакеты:

```shell
rpm -Uvh http://download.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-1.noarch.rpm
yum -y install ppp pptpd
```

Настроить конфиги PPTP сервера:

```shell
cp /etc/pptpd.conf /etc/pptpd.conf.bak
cat >/etc/pptpd.conf<<EOF
option /etc/ppp/options.pptpd
logwtmp
localip 10.0.10.1
remoteip 10.0.10.2-254
EOF

cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
cat >/etc/ppp/options.pptpd<<EOF
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
ms-dns 8.8.4.4
EOF

cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
cat >/etc/ppp/chap-secrets<<EOF
USERNAME pptpd PASSWORD *
EOF
```

Настроить sysctl:

```shell
cp /etc/sysctl.conf /etc/sysctl.conf.bak
cat >/etc/sysctl.conf<<EOF
net.core.wmem_max = 12582912
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.core.wmem_max = 12582912
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.core.wmem_max = 12582912
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.ipv4.ip_forward = 1
EOF
sysctl -p
```

Настроить фаервол:

```shell
chmod +x /etc/rc.d/rc.local
echo "iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE" >> /etc/rc.d/rc.local
iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE
```

Запустить сервис:

```shell
systemctl enable pptpd.service
systemctl start pptpd
```

# Debian

# Включение русской локали

```bash
sudo export LANGUAGE=en_US.UTF-8
sudo export LANG=en_US.UTF-8
sudo export LC_ALL=en_US.UTF-8
sudo locale-gen en_US.UTF-8
sudo locale-gen ru_US.UTF-8
sudo dpkg-reconfigure locales
```

# Настройка после установки

**Включение не свободнных репозитариев**<button class="save function button-picture"></button>

<div id="bkmrk-"></div>```bash
sudo nano /etc/apt/sources.list
```

> deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware  
> deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
> 
> deb http://security.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware  
> deb-src http://security.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
> 
> deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware  
> deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
> 
> deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware  
> deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware

**Установка VMware Workstation**

```bash
sudo apt install build-essential gcc make linux-headers-$(uname -r)
chmod +x VMware-Workstation-Full-17.x.x-xxxxxx.x86_64.bundle
sudo ./VMware-Workstation-Full-17.x.x-xxxxxx.x86_64.bundle
sudo vmware-modconfig --console --install-all
```

**Установка VirtualBox**

```bash
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl
curl -fSsL https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor | sudo tee /usr/share/keyrings/virtualbox.gpg
echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/oracle-virtualbox.list
sudo apt update
sudo apt install virtualbox-7.0 linux-headers-$(uname -r)
sudo usermod -aG vboxusers $USER
```

**Управление кулерами**

```bash
curl -1sLf 'https://dl.cloudsmith.io/public/coolercontrol/coolercontrol/setup.deb.sh' | sudo -E bash
sudo apt update
sudo apt install coolercontrol libxcb-cursor0
sudo systemctl enable --now coolercontrold.service
```

**Установка DaVinci Resolve**

Скачать DaVinchi по ссылке [https://www.blackmagicdesign.com/products/davinciresolve](https://www.blackmagicdesign.com/products/davinciresolve)  
Скачать MakeResolveDeb по ссылке [https://www.danieltufvesson.com/makeresolvedeb](https://www.danieltufvesson.com/makeresolvedeb)  
Распаковать оба архива и затем:

```bash
sudo apt install fakeroot xorriso xyz nvidia-driver nvidia-opencl-icd libcuda1 libnvidia-encode1 libglu1-mesa
./makeresolvedeb_1.6.4_multi.sh DaVinci_Resolve_Studio_18.0_Linux.run
sudo apt install ./davinci-resolve-studio_18.0-mrd1.6.0_amd64.deb
```

Исправить конфигурацию файла запуска

```bash
sudo nano /usr/share/applications/davinci-resolve-studio.desktop
```

> Exec=env QT\_DEVICE\_PIXEL\_RATIO=2 QT\_AUTO\_SCREEN\_SCALE\_FACTOR=true /opt/resolve/bin/resolve

**Установка PortWINE**

```bash
sudo apt install software-properties-common -y
sudo apt-add-repository non-free
sudo dpkg --add-architecture i386
sudo apt update
sudo apt dist-upgrade
sudo apt install bubblewrap curl gamemode icoutils tar wget zenity zstd libvulkan1 libvulkan1:i386 steam cabextract
wget -c "https://github.com/Castro-Fidel/PortWINE/raw/master/portwine_install_script/PortProton_1.0" && sh PortProton_1.0
```

**Установка Discord**

```bash
sudo apt install wget gconf-service gconf2-common libc++1 libc++1-14 libc++abi1-14 libgconf-2-4 libunwind-14
wget "https://discord.com/api/download?platform=linux&format=deb" -O discord.deb
sudo dpkg -i discord.deb
```

**Установка Dart**

```bash
sudo apt-get update
sudo apt-get install apt-transport-https
wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/dart.gpg
echo 'deb [signed-by=/usr/share/keyrings/dart.gpg arch=amd64] https://storage.googleapis.com/download.dartlang.org/linux/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list
sudo apt-get update
sudo apt-get install dart
export PATH="$PATH:/usr/lib/dart/bin"
echo 'export PATH="$PATH:/usr/lib/dart/bin"' >> ~/.profile
```

**Установка Spotify**

```bash
curl -sS https://download.spotify.com/debian/pubkey_7A3A762FAFD4A51F.gpg | sudo gpg --dearmor --yes -o /etc/apt/trusted.gpg.d/spotify.gpg
echo "deb http://repository.spotify.com stable non-free" | sudo tee /etc/apt/sources.list.d/spotify.lis
sudo apt update && sudo apt install spotify-client
```

**Установка SoftMaker Office**

```bash
su -
mkdir -p /etc/apt/keyrings
wget -qO- https://shop.softmaker.com/repo/linux-repo-public.key | gpg --dearmor > /etc/apt/keyrings/softmaker.gpg
echo "deb [signed-by=/etc/apt/keyrings/softmaker.gpg] https://shop.softmaker.com/repo/apt stable non-free" > /etc/apt/sources.list.d/softmaker.list
apt update
apt install softmaker-office-nx
```

**Установка Warp**

```bash
curl https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
sudo apt-get update && sudo apt-get install cloudflare-warp
```

**Обновление прошивок**

```bash
sudo fwupdmgr get-devices
sudo fwupdmgr refresh --force
sudo fwupdmgr get-updates
sudo fwupdmgr update
```

**Включение Trim**

```bash
sudo systemctl enable fstrim.timer
sudo fstrim -av
```

**Корректная работа Wi-Fi Intel AX201**

```bash
sudo apt install firmware-iwlwifi
sudo nano /etc/modprobe.d/iwlwifi.conf
```

> options iwlwifi enable\_ini=N bt\_coex\_active=0 swcrypto=1 11n\_disable=8   
> options iwlmvm power\_scheme=1

```bash
sudo update-initramfs -c -k all
```

**Установка драйвера Nvidia**

```bash
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install linux-headers-amd64
sudo apt install nvidia-driver firmware-misc-nonfree nvidia-cuda-dev nvidia-cuda-toolkit libnvoptix1 nvidia-driver-libs nvidia-driver-libs:i386
```

**Установка LibreOffice**

Стандартная версия:

```bash
sudo apt install libreoffice
```

Актуальная версия:

```bash
sudo apt install lsb-release
sudo apt install -t $(lsb_release -cs)-backports libreoffice
```

Flatpak версия:

```bash
flatpak install flathub org.libreoffice.LibreOffice
```

**Перевод Akonadi (KDE Calendar Reminders) на SQLite и оптимизация**

```bash
sudo apt install akonadi-backend-sqlite akonadiconsole
sed -i 's/^Driver=QMYSQL$/Driver=QSQLITE3/' ~/.config/akonadi/akonadiserverrc
akonadictl restart

mkdir -p "~/.local/share/akonadi/agents"
cp "/usr/share/akonadi/agents/maildispatcheragent.desktop" "~/.local/share/akonadi/agents"
cp "/usr/share/akonadi/agents/newmailnotifieragent.desktop" "~/.local/share/akonadi/agents"
sed -i '/^X-Akonadi-Capabilities/s/,Autostart//' "~/.local/share/akonadi/agents"/*
akonadictl restart
```

# Отключение IPv6

#### Вариант 1

Отредактировать параметры

```bash
sudo nano /etc/sysctl.conf
```

> net.ipv6.conf.all.disable\_ipv6 = 1  
> net.ipv6.conf.default.disable\_ipv6 = 1  
> net.ipv6.conf.lo.disable\_ipv6 = 1

Применить параметры

```bash
sudo sysctl -p
```

#### Вариант 2

Отредактировать параметры загрузчика

```bash
sudo nano /etc/default/grub
```

Прописать

> GRUB\_CMDLINE\_LINUX="ipv6.disable=1"

Обновить загрузчик

```bash
sudo update-grub
```

Перезапустить систему

```bash
sudo reboot
```

# Удаление Docker

```bash
sudo apt purge docker*
sudo apt autoremove -y
sudo apt autoclean -y
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
sudo rm -rf /var/run/docker.sock
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo ifconfig docker0 down
sudo ip link delete docker0
```

# Установка Docker

```bash
sudo apt install apt-transport-https ca-certificates curl gnupg
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker ${USER}
```

# Glances

##### **Установка**

```shell
sudo apt update && sudo apt upgrade
sudo apt install python3 python3-dev python3-jinja2 python3-psutil python3-setuptools hddtemp python3-pip lm-sensors
sudo pip3 install glances
sudo pip3 install --upgrade glances[all]
```

##### **Обновление**

```shell
sudo pip3 install --upgrade glances[all]
```

##### **Удаление**

```shell
sudo pip3 uninstall glances
```

# Fedora

# Авторизация по лицу

Подключить репозиторий

```bash
sudo dnf copr enable principis/howdy
```

Установить приложение

```bash
sudo dnf --refresh install -y howdy
```

Посмотреть список камер

```bash
ls /dev/video*
```

Настроить используемую камеру

```bash
sudo howdy config
```

Выставить параметр камеры

> device\_path = /dev/video2 (вместо **video2** выбрать нужную камеру)

Выставить права

```bash
chmod o+x /lib64/security/howdy/dlib-data
```

Добавить авторизацию для **sudo**

```bash
sudo nano /etc/pam.d/sudo
```

Первой строкой прописать

> auth sufficient pam\_python.so /lib64/security/howdy/pam.py

При использовании **Gnome** добавить авторизацию для **GDM**

```bash
sudo nano /etc/pam.d/gdm-password
```

Второй строкой прописать

> auth sufficient pam\_python.so /lib64/security/howdy/pam.py

При использовании **KDE** добавить авторизацию для **SDDM**

```bash
sudo nano /etc/pam.d/sddm
```

Второй строкой прописать

> auth sufficient pam\_python.so /lib64/security/howdy/pam.py

Добавить авторизацию для блокировки экрана

```bash
sudo nano /etc/pam.d/kde
```

Второй строкой прописать

> auth sufficient pam\_python.so /lib64/security/howdy/pam.py

Добавить лицо для авторизации

```bash
sudo howdy add
```

Указать название и посмотреть в камеру

Перезапустить систему

# Включение расцветки Bash

```bash
sudo dnf install git wget curl ruby ruby-devel util-linux-user redhat-rpm-config gcc gcc-c++ make fontawesome-fonts powerline vim-powerline tmux-powerline powerline-fonts
sudo gem install colorls
sudo gem update colorls
git clone --depth=1 https://github.com/ryanoasis/nerd-fonts ~/.nerd-fonts
cd .nerd-fonts
sudo ./install.sh -S
fc-cache -f -v
nano ~/.bashrc
```

> if \[ -f `which powerline-daemon` \]; then  
>  powerline-daemon -q  
>  POWERLINE\_BASH\_CONTINUATION=1  
>  POWERLINE\_BASH\_SELECT=1  
>  . /usr/share/powerline/bash/powerline.sh  
> fi
> 
> alias ll='colorls -lA --sd --gs --group-directories-first'  
> alias ls='colorls --group-directories-first'

# Включение сна при закрытии крышки ноутбука

Когда подключен внешний монитор, сон не будет активироваться при закрытии крышки ноутбука. Чтобы это исправить необходимо:

Изменить параметры в файле **/etc/systemd/logind.conf**

```
HandleLidSwitch=suspend
HandleLidSwitchExternalPower=suspend
HandleLidSwitchDocked=suspend
LidSwitchIgnoreInhibited=no
```

Изменить параметр в файле **/etc/UPower/UPower.conf**

```
IgnoreLid=true
```

Перезапустить ноутбук.

Чтобы проверить, что мешает устройству перейти в сон, необходимо выполнить команду:

```bash
systemd-inhibit --list --mode block
```

# Включение снепшотов

1\. Установить пакеты

```bash
sudo dnf install snapper dnf-plugin-snapper
```

2\. Указать корневой раздел для снепшотов

```bash
sudo snapper -c root create-config /
```

3\. Сменить дефолтные настройки

```bash
sudo sed -i -e 's/NUMBER_LIMIT=/NUMBER_LIMIT="10" #/g' /etc/snapper/configs/root
sudo sed -i -e 's/NUMBER_LIMIT_IMPORTANT=/NUMBER_LIMIT_IMPORTANT="5" #/g' /etc/snapper/configs/root
```

# Включение VNC сервера

Указать в переменную нужный пароль:

```bash
VNC_PASSWD="12345678"
```

Выполнить команды для настройки и запуска службы:

```bash
grdctl vnc enable
grdctl vnc disable-view-only
grdctl vnc set-auth-method password
grdctl vnc set-password "${VNC_PASSWD::8}"
systemctl --user enable gnome-remote-desktop.service
systemctl --user restart gnome-remote-desktop.service
sudo firewall-cmd --permanent --add-service=vnc-server
sudo firewall-cmd --reload
```

Установить клиент, если необходимо:

```bash
sudo dnf install gnome-connections
```

# Изменение приоритета сетевых интерфейсов

Для изменения приоритета сетевых интерфейсов, необходимо поменять значения метрики.

Смотрим текущие значения метрик:

```bash
ip route
```

Смотрим текущий список интерфейсов:

```bash
sudo nmcli connection show
```

Меняем приоритет для нужных интерфейос (меньше значение - выше приоритет):

```bash
sudo nmcli connection modify "Wired connection 1" ipv4.route-metric 510
sudo nmcli connection modify "Wired connection 2" ipv4.route-metric 520
```

Переподключаем интерфейсы (физически переподключаем кабель или переподключаемся к беспроводной сети).

Проверяем изменения просмотром метрики:

```bash
ip route
```

# Исправление проблем с загрузкой GRUB

- Запуститься с лайв образа системы
- Перейи в root пользователя:

```bash
sudo -i
```

- Посмотреть UUID для системного раздела:

```bash
lsblk -f
```

- Смонтировать системный раздел в /mnt (вместо XXX-XXX-XXX ввести корректный UUID из предыдущей команды):

```bash
mount -t btrfs -o subvol=root,compress=zstd:1 UUID=XXX-XXX-XXX /mnt
```

- Забиндить системные разделы загруженной системы:

```bash
for fs in proc sys run dev ; do mount -o bind /$fs /mnt/$fs ; done
```

- Перейти в chroot окружение:

```bash
chroot /mnt
```

- Внести необходимые правки в систему
- Обновить конфиг grub:

```bash
grub2-mkconfig -o /boot/grub2/grub.cfg
```

- Выйти из chroot окружения:

```bash
exit
```

- Перезапустить систему

Если загрузчик сломан или перезаписан другим загрузчиком, после перехода в chroot окружение выполнить:

```bash
dnf reinstall shim-* grub2-*
grub2-mkconfig -o /boot/grub2/grub.cfg
efibootmgr -c -d /dev/nvme0n1p1 -p 1 -L Fedora -l '\EFI\fedora\shimx64.efi.efi'
```

# Исправление проблем с Opera

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

```bash
sudo dnf install wget unzip git python3-dnf-plugin-post-transaction-actions
```

Установка фикса

```bash
git clone https://github.com/Ld-Hagen/fix-opera-linux-ffmpeg-widevine.git
cd ./fix-opera-linux-ffmpeg-widevine
sudo ./scripts/fix-opera.sh
sudo ./install.sh
```

# Настройка после установки

**Подключение репозиториев**

```bash
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install -y https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install -y rpmfusion-free-release-tainted
sudo dnf install -y rpmfusion-nonfree-release-tainted
sudo dnf upgrade --refresh
sudo dnf update -y @core
sudo dnf install -y dnf-plugins-core fedora-workstation-repositories
```

**Смена Wayland на Xorg**

```bash
sudo nano /etc/gdm/custom.conf
```

> \[daemon\]  
> WaylandEnable=false  
> DefaultSession=gnome-xorg.desktop

**Отключение защиты от уязвимостей процессора**

```bash
sudo grubby --update-kernel=ALL --args="mitigations=off"
sudo grubby --info=ALL
```

**Включение меню загрузчика**

```bash
sudo grub2-editenv - unset menu_auto_hide
```

**Включение SysRq**

```bash
echo 'kernel.sysrq = 1' | sudo tee -a /etc/sysctl.d/90-sysrq.conf
echo '1' | sudo tee -a /proc/sys/kernel/sysrq
```

**Установка VAAPI**

```bash
sudo dnf install libvdpau-va-gl gstreamer1-vaapi libva-utils intel-media-driver
```

**Установка драйверов Nvidia**

```bash
modinfo -F version nvidia
sudo dnf update --refresh -y
sudo dnf install -y akmod-nvidia xorg-x11-drv-nvidia-cuda xorg-x11-drv-nvidia-cuda-libs vdpauinfo libva-vdpau-driver libva-utils vulkan nvidia-vaapi-driver
modinfo -F version nvidia
```

**Установка драйверов AMD**

```bash
Opensource:
sudo dnf install -y xorg-x11-drv-amdgpu vulkan-tools mesa-vulkan-drivers
grubby --update-kernel=ALL --args="radeon.cik_support=0 amdgpu.cik_support=1 amdgpu.ppfeaturemask=0xffffffff"

ROCm:
sudo usermod -a -G render,video $LOGNAME
sudo dnf install rocminfo rocm-opencl rocm-clinfo rocm-hip
```

**Ускорение работы DNF**

```bash
echo 'fastestmirror=1' | sudo tee -a /etc/dnf/dnf.conf
echo 'max_parallel_downloads=10' | sudo tee -a /etc/dnf/dnf.conf
echo 'defaultyes=True' | sudo tee -a /etc/dnf/dnf.conf
```

**Установка связки ключенй**

```bash
sudo dnf install libgnome-keyring
```

**Отключение автообновление пакетов**

```bash
sudo dnf remove dnf-automatic
sudo systemctl disable dnf-makecache.service
sudo systemctl disable dnf-makecache.timer
sudo echo "metadata_timer_sync=0" >> /etc/dnf/dnf.conf
gsettings set org.gnome.software download-updates false
```

**Обновление прошивок**

```bash
sudo dnf install -y *-firmware
sudo fwupdmgr get-devices
sudo fwupdmgr refresh --force
sudo fwupdmgr get-updates
sudo fwupdmgr update
```

**Отключение проверки соединения**

```bash
sudo dnf remove NetworkManager-config-connectivity-fedora
sudo systemctl restart NetworkManager.service
```

**Смена имени компьютера**

```bash
sudo hostnamectl set-hostname fedora
```

**Включение Trim**

```bash
sudo systemctl enable fstrim.timer
```

**Установка crontab**

```bash
sudo dnf install crontabs
sudo systemctl enable --now crond
```

**Установка обновлений**

```bash
sudo dnf upgrade --refresh
sudo dnf check
sudo dnf autoremove
sudo reboot now
```

**Отключение SELinux**

```bash
sudo sed -i -e 's/SELINUX=/SELINUX=disabled #/g' /etc/selinux/config
sudo grubby --update-kernel=ALL --args="selinux=0"
sudo fixfiles -F onboot
```

**Установка Gnome Tweaks и Extensions**

```bash
sudo dnf install -y gnome-extensions-app gnome-tweaks
sudo dnf install -y gnome-shell-extension-appindicator
```

**Включение Flatpak**

```
flatpak remote-modify --enable flathub
flatpak update
```

на старых версиях:

```bash
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak update
```

**Включение Snap**

```bash
sudo dnf install -y snapd
sudo ln -s /var/lib/snapd/snap /snap
sudo reboot now
sudo snap refresh
```

**Смена приоритета магазина приложений**

```bash
gsettings set org.gnome.software packaging-format-preference "['RPM', 'flatpak']"
```

**Установка управления Flatpak**

```bash
flatpak install -y flatseal
```

**Менеджер расширений**

```bash
flatpak install -y flathub com.mattjakeman.ExtensionManager
```

**Минимальный набор для кастомизации**

```bash
sudo dnf install -y gnome-tweaks gnome-extensions-app gnome-shell-extension-appindicator
```

**Увеличение максимальной громкости**

```bash
gsettings set org.gnome.desktop.sound allow-volume-above-100-percent 'true'
```

**Увеличение лимитов**

```bash
sudo -i
echo 'fs.inotify.max_user_watches = 524288' >> /etc/sysctl.conf
sysctl -p
```

**Установка кодеков**

```bash
sudo dnf install -y gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel ffmpeg gstreamer-ffmpeg
sudo dnf install -y lame\* --exclude=lame-devel
sudo dnf install -y libdvdcss
sudo dnf update @sound-and-video
sudo dnf config-manager --set-enabled fedora-cisco-openh264
sudo dnf install -y gstreamer1-plugin-openh264 mozilla-openh264
sudo dnf upgrade --with-optional @Multimedia
sudo dnf install libavcodec-freeworld
```

**Поддержки кодеков гарнитуры**

```bash
sudo dnf install libheif-freeworld
```

**Установка шрифтов**

```bash
sudo dnf install -y 'google-roboto*' 'mozilla-fira*' fira-code-fonts adobe-source-code-pro-fonts source-foundry-hack-fonts
sudo dnf install -y rpmdevtools cabextract ttmkfdir
rpmdev-setuptree
wget http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec -O ~/rpmbuild/SPECS/msttcorefonts-2.5-1.spec
rpmbuild -ba ~/rpmbuild/SPECS/msttcorefonts-2.5-1.spec
sudo dnf install ~/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm
```

При ошибке скачивания в п.4, повторить команду до тех пор, пока она не завершится корректно.

**Включение русского языкового пакета**

```bash
sudo dnf install -y langpacks-ru
```

**Включение аппаратного декодирования**

```bash
sudo rpm -qa |grep -e mesa-va-drivers -e mesa-vdpau-drivers
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld
sudo dnf swap mesa-va-drivers.i686 mesa-va-drivers-freeworld.i686
sudo dnf swap mesa-vdpau-drivers.i686 mesa-vdpau-drivers-freeworld.i686
sudo dnf update @multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
sudo dnf update @sound-and-video
sudo dnf install -y @multimedia @sound-and-video ffmpeg-libs gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav lame\*
```

**Включение аппаратного ускорения в Firefox**

```
about:config
```

> layers.acceleration.force-enabled -&gt; True  
> gfx.webrender.all -&gt; True

<div class="align-center" id="bkmrk-%D0%9E%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-abrt">**Отключение ABRT**</div>```bash
sudo echo "OnlyFatalMCE = yes" >> /etc/abrt/plugins/oops.conf
sudo systemctl stop abrt-journal-core.service
sudo systemctl stop abrt-oops.service
sudo systemctl stop abrt-xorg.service
sudo systemctl stop abrtd.service
sudo systemctl disable abrt-journal-core.service
sudo systemctl disable abrt-oops.service
sudo systemctl disable abrt-xorg.service
sudo systemctl disable abrtd.service
```

**<span style="text-align: center;">Включение гибернации</span>**

```bash
SWAPSIZE=$(free | awk '/Mem/ {x=$2/1024/1024; printf "%.0fG", (x<2 ? 2*x : x<8 ? 1.5*x : x) }')
sudo btrfs subvolume create /var/swap
sudo mkswap --file -L SWAPFILE --size $SWAPSIZE /var/swap/swapfile
sudo bash -c 'echo /var/swap/swapfile none swap defaults 0 0 >>/etc/fstab'
sudo swapon -av
```

**Отключение гибернации**

```bash
sudo swapoff -v /var/swap/swapfile
sudo sed -r -i '/.var.swap.swapfile/d' /etc/fstab
sudo btrfs subvolume rm /var/swap
```

**<span style="text-align: center;">Переключение языка через Alt+Shift</span>**

```bash
gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Shift>Alt_L']"
gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Alt>Shift_L']"
```

**Переназначение клавиш устройств**

```bash
sudo dnf install input-remapper
sudo systemctl enable --now input-remapper
```

**Установка ClamAV**

```bash
sudo dnf install clamav clamd clamav-update
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl enable --now clamav-freshclam
```

**Включение WebDAV**

```bash
sudo dnf install davfs2
sudo usermod -aG davfs2 ${USER}
```

**<span style="text-align: center;">Прозрачность в терминале ptyxis</span>**

```bash
dconf write /org/gnome/Ptyxis/Profiles/$(dconf read /org/gnome/Ptyxis/default-profile-uuid | tr -d "'")/opacity 0.85
```

**<span style="text-align: center;">Установка иконок Papirus</span>**

```bash
wget -qO- https://git.io/papirus-icon-theme-install | sh
wget -qO- https://git.io/papirus-folders-install | sh
wget -qO- https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-filezilla-themes/master/install.sh | sh
wget -qO- https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-libreoffice-theme/master/install-papirus-root.sh | sh
```

**<span style="text-align: center;">PortProton</span>**

```bash
sudo dnf update && sudo dnf upgrade --refresh && sudo dnf install curl gamemode icoutils libcurl wget zenity bubblewrap zstd cabextract tar goverlay openssl steam
wget -c "https://github.com/Castro-Fidel/PortWINE/raw/master/portwine_install_script/PortProton_1.0" && sh PortProton_1.0
```

**Virt Manager**

```bash
sudo dnf install --with-optional @virtualization
sudo usermod -a -G libvirt $(whoami)
sudo systemctl enable --now libvirtd
```

**DroidCam**

```
sudo dnf copr enable meeuw/droidcam
sudo dnf install droidcam
sudo akmods
sudo modprobe v4l2loopback-dc
sudo reboot
```

**Bucklespring**

```bash
sudo dnf install bucklespring-wayland
sudo usermod -a -G input $(id -un)
buckle-wayland
```

**.NET**

```bash
sudo dnf install dotnet-runtime-7.0
sudo dnf install dotnet-sdk-7.0
sudo dnf install aspnetcore-runtime-7.0
```

**Установка DaVinci Resolve**

Скачать DaVinchi по ссылке [https://www.blackmagicdesign.com/products/davinciresolve](https://www.blackmagicdesign.com/products/davinciresolve)

Распаковать и перейти в директорию с установщиком, после чего выполнить:

```bash
sudo SKIP_PACKAGE_CHECK=1 ./DaVinci.Resolve
cd /opt/resolve/libs
sudo mkdir disabled
sudo mv libglib* disabled
sudo mv libgio* disabled
sudo mv libgmodule* disabled
```

**Дополнительные репозитории**

```bash
wget -qO- "https://raw.githubusercontent.com/xplshn/dbin/master/stubdl" | sh -s -- --install "$HOME/.local/bin/dbin"

sudo rpm --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo rpm --import https://shop.softmaker.com/repo/linux-repo-public.key
sudo rpm --import https://keys.anydesk.com/repos/RPM-GPG-KEY
sudo rpm --import https://rpm.opera.com/rpmrepo.key
sudo rpm --import https://kopia.io/signing-key
sudo rpm --import https://packagecloud.io/filips/FirefoxPWA/gpgkey
sudo rpm --import https://mirror.trueconf.ru/rpm-v3.trueconf.pub

sudo rpmkeys --import https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/raw/master/pub.gpg

sudo dnf config-manager addrepo --from-repofile=https://repo.vivaldi.com/archive/vivaldi-fedora.repo
sudo dnf config-manager addrepo --from-repofile=https://repo.skype.com/rpm/stable/skype-stable.repo
sudo dnf config-manager addrepo --from-repofile=https://jelmerro.nl/fedora/jelmerro.repo
sudo dnf config-manager addrepo --from-repofile=https://rpm.librewolf.net/librewolf-repo.repo
sudo dnf config-manager addrepo --from-repofile=https://dl.winehq.org/wine-builds/fedora/41/winehq.repo
sudo dnf config-manager addrepo --from-repofile=https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/hardware:razer/Fedora_$(rpm -E %fedora)/hardware:razer.repo
sudo dnf config-manager addrepo --from-repofile=https://pkgs.tailscale.com/stable/fedora/tailscale.repo
sudo dnf config-manager addrepo --from-repofile=https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf config-manager addrepo --from-repofile=https://raw.githubusercontent.com/VirtualGL/repo/main/VirtualGL.repo
sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:venenux:bashgui/Fedora_40/home:venenux:bashgui.repo
sudo dnf config-manager addrepo --from-repofile=https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo
sudo dnf config-manager addrepo --from-repofile=https://git.froth.zone/api/packages/sam/rpm.repo

sudo dnf copr enable kwizart/fedy
sudo dnf copr enable cyqsimon/ntfysh
sudo dnf copr enable perabyte/webapp-manager
sudo dnf copr enable refi64/webapp-manager
sudo dnf copr enable mystro256/rocm-opencl
sudo dnf copr enable gloriouseggroll/amdgpu-vulkan-switcher
sudo dnf copr enable sergiomb/electrons
sudo dnf copr enable wereturtle/stable
sudo dnf copr enable vandebugger/tapper
sudo dnf copr enable principis/howdy
sudo dnf copr enable zeno/scrcpy
sudo dnf copr enable varlad/helix
sudo dnf copr enable cuintle/RHVoice
sudo dnf copr enable principis/NoiseTorch
sudo dnf copr enable kylegospo/grub-btrfs
sudo dnf copr enable polter/far2l
sudo dnf copr enable dani/bucklespring
sudo dnf copr enable atim/gping
sudo dnf copr enable rmnscnce/kernel-xanmod
sudo dnf copr enable frinksy/airshipper
sudo dnf copr enable abn/throttled
sudo dnf copr enable adrake/throttled
sudo dnf copr enable kwizart/fedy
sudo dnf copr enable timlau/yumex-ng
sudo dnf copr enable erikreider/SwayNotificationCenter
sudo dnf copr enable keefle/glow
sudo dnf copr enable nunodias/psensor
sudo dnf copr enable atim/lazygit
sudo dnf copr enable satya164/numix
sudo dnf copr enable vwbusguy/ibus-coptic
sudo dnf copr enable scx/cuneiform
sudo dnf copr enable psi-jack/devilspie
sudo dnf copr enable slp/libkrunfw
sudo dnf copr enable slp/libkrun
sudo dnf copr enable slp/krunvm
sudo dnf copr enable boria138/portproton
sudo dnf copr enable taw/joplin
sudo dnf copr enable rob72/DOSBox-X
sudo dnf copr enable zirix/Podbox
sudo dnf copr enable sunwire/envycontrol
sudo dnf copr enable nalika/gzdoom
sudo dnf copr enable leo/power-options
sudo dnf copr enable grafin1992/nEMU
sudo dnf copr enable wojnilowicz/ungoogled-chromium
sudo dnf copr enable pesader/hblock
sudo dnf copr enable codifryed/CoolerControl
sudo dnf copr enable rok/cdemu
sudo dnf copr enable petersen/zsync
sudo dnf copr enable ilyaz/LACT
sudo dnf copr enable elxreno/preload
sudo dnf copr enable abn/throttled
sudo dnf copr enable herzen/davinci-helper
sudo dnf copr enable grafin1992/nEMU
sudo dnf copr enable kwizart/kernel-longterm-6.12
sudo dnf copr enable domcyrus/rustnet
sudo dnf copr enable lockedmutex/picoforge

sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'

sudo sh -c 'echo -e "[SoftMaker_Office_Repository]\nname=SoftMaker Office Repository\nenabled=1\nautorefresh=1\nbaseurl=https://shop.softmaker.com/repo/rpm\npath=/\ntype=rpm-md\nkeeppackages=0\nrepo_gpgcheck=1\ngpgkey=https://shop.softmaker.com/repo/linux-repo-public.key\nenabled_metadata=0" > /etc/yum.repos.d/softmaker.repo'

curl -1sLf 'https://dl.cloudsmith.io/public/asbru-cm/release/cfg/setup/bash.rpm.sh' | sudo -E bash

curl -fsSL https://rpm.librewolf.net/librewolf-repo.repo | pkexec tee /etc/yum.repos.d/librewolf.repo

curl -fsSl https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo | sudo tee /etc/yum.repos.d/cloudflare-warp.repo

sudo wget https://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo -O /etc/yum.repos.d/virtualbox.repo

sudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo

sudo dnf install https://download.onlyoffice.com/repo/centos/main/noarch/onlyoffice-repo.noarch.rpm

sudo dnf install adoptium-temurin-java-repository

sudo tee > /etc/yum.repos.d/tiukov.repo <<EOF
[Tiukov]
name=Tiukov         
baseurl=https://repo.tiukov.com/fedora
enabled=1
gpgcheck=0
EOF

sudo tee > /etc/yum.repos.d/AnyDesk-Fedora.repo <<EOF
[anydesk]
name=AnyDesk Fedora - stable
baseurl=http://rpm.anydesk.com/fedora/$basearch/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://keys.anydesk.com/repos/RPM-GPG-KEY
EOF

sudo tee /etc/yum.repos.d/cisofy-lynis.repo <<EOF
[lynis]
name=CISOfy Software - Lynis package
baseurl=https://packages.cisofy.com/community/lynis/rpm/
enabled=1
gpgkey=https://packages.cisofy.com/keys/cisofy-software-rpms-public.key
gpgcheck=1
priority=2
EOF

sudo tee /etc/yum.repos.d/anydesk.repo <<EOF
[anydesk]
name=AnyDesk Stable
baseurl=http://rpm.anydesk.com/centos/${basearch}/
gpgkey=https://keys.anydesk.com/repos/RPM-GPG-KEY
EOF

sudo tee /etc/yum.repos.d/opera.repo <<EOF
[opera]
name=Opera packages
type=rpm-md
baseurl=https://rpm.opera.com/rpm
gpgcheck=1
gpgkey=https://rpm.opera.com/rpmrepo.key
enabled=1
EOF

sudo tee /etc/yum.repos.d/charm.repo <<EOF
[charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key
EOF

sudo tee /etc/yum.repos.d/kopia.repo <<EOF
[Kopia]
name=Kopia
baseurl=http://packages.kopia.io/rpm/stable/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://kopia.io/signing-key
EOF

sudo tee /etc/yum.repos.d/firefoxpwa.repo <<EOF
[firefoxpwa]
name=FirefoxPWA
metadata_expire=300
baseurl=https://packagecloud.io/filips/FirefoxPWA/rpm_any/rpm_any/\$basearch
gpgkey=https://packagecloud.io/filips/FirefoxPWA/gpgkey
repo_gpgcheck=1
gpgcheck=0
enabled=1
EOF

sudo tee /etc/yum.repos.d/vscodium.repo << EOF
[gitlab.com_paulcarroty_vscodium_repo]
name=download.vscodium.com
baseurl=https://download.vscodium.com/rpms/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/raw/master/pub.gpg
metadata_expire=1h
EOF

sudo tee /etc/yum.repos.d/trueconf.repo << EOF
[trueconf]
name=TrueConf Repository
baseurl=https://mirror.trueconf.ru/fedora/$releasever/$basearch/release
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-trueconf
EOF
```

**Обновление до нового релиза**

```bash
sudo dnf upgrade --refresh
sudo dnf install dnf-plugin-system-upgrade
sudo dnf system-upgrade download --releasever=42
sudo dnf system-upgrade reboot
sudo dnf reinstall akmod-nvidia
sudo dnf system-upgrade clean
sudo dnf clean packages
sudo dnf install rpmconf
sudo rpmconf -a
sudo dnf install remove-retired-packages
sudo remove-retired-packages
gsettings set org.gnome.shell disable-user-extensions false
```

```bash
sudo dnf upgrade --refresh
sudo dnf system-upgrade download --releasever=43 --allowerasing
sudo dnf5 offline reboot
sudo /usr/lib/sysimage/rpm /usr/lib/sysimage/rpm_old
sudo rpm --rebuilddb
sudo dnf distro-sync
sudo dnf distro-sync --allowerasing
sudo fixfiles -B onboot
sudo dnf install rpmconf
rpmconf -a
sudo dnf install remove-retired-packages
sudo remove-retired-packages
sudo dnf repoquery --duplicates
sudo dnf remove --duplicates
sudo dnf list --extras
sudo dnf remove $(sudo dnf repoquery --extras --exclude=kernel,kernel-\*,kmod-\*)
sudo dnf autoremove
sudo dnf install clean-rpm-gpg-pubkey
sudo clean-rpm-gpg-pubkey
sudo dnf install symlinks
sudo symlinks -r /usr | grep dangling
sudo symlinks -r -d /usr
sudo rm /boot/*rescue*
sudo kernel-install add "$(uname -r)" "/lib/modules/$(uname -r)/vmlinuz"
sudo dnf install dracut-config-rescue
```

# Обновление до нового релиза

Обновить систему:

```bash
sudo dnf upgrade --refresh
```

Перезапустить компьютер:

```bash
sudo reboot
```

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

```bash
sudo dnf autoremove
```

Установить плагин для обновления:

```bash
sudo dnf install dnf-plugin-system-upgrade
```

Переключить релиз и скачать для него обновления (вместо **41** указать необходимый):

```bash
sudo dnf system-upgrade download --releasever=41 --allowerasing
```

Согласиться с импортом всех ключей

Запустить процесс обновления:

```bash
sudo dnf system-upgrade reboot
```

Очистить кеш:

```bash
sudo dnf system-upgrade clean
```

Удалить сломаные симлинки:

```bash
sudo find /usr -type l -xtype l -delete
sudo symlinks -r /usr | grep dangling
```

Перезапустить компьютер:

```bash
sudo reboot
```

# Отключение атоматической проверки обновлений

```bash
gsettings set org.gnome.software download-updates false
echo 'metadata_timer_sync=0' | sudo tee -a /etc/dnf/dnf.conf
```

# Переключения раскладки

Alt+Shift

```bash
gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Shift>Alt_L']"
gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Alt>Shift_L']"
```

# Смена редакции на KDE

```bash
tee migrate-gnome-kde.sh << EOF > /dev/null
#!/usr/bin/bash
sudo dnf shell -y --setopt protected_packages= << EOI
swap fedora-release-workstation fedora-release-kde
swap fedora-release-identity-workstation fedora-release-identity-kde
run
remove @gnome-desktop
run
remove *gnome* *gtk*
run
install @kde-desktop-environment
run
EOI
sudo systemctl enable sddm.service
reboot
EOF
```

Переключиться в терминальный режим: **CTRL+ALT+F3**

Залогиниться и выполнить:

```bash
chmod +x migrate-gnome-kde.sh
./migrate-gnome-kde.sh
```

# Установка DaVinci Resolve

Установить зависимости:

```bash
sudo dnf install -y libxcrypt-compat libcurl libcurl-devel mesa-libGLU fuse-libs
```

Установить DaVinci Resolve:

```bash
SKIP_PACKAGE_CHECK=1 ./DaVinci_Resolve_*.run
```

Исправление проблемы с библиотеками:

```bash
sudo mkdir /opt/resolve/libs/disabled_libraries
cd /opt/resolve/libs && sudo mv libglib* libgio* libgmodule* disabled_libraries/
```

Поддержка NVIDIA:

```bash
sudo dnf install -y akmod-nvidia xorg-x11-drv-nvidia-cuda
```

Поддержка AMD:

```bash
sudo dnf install -y rocm-opencl rocm-smi rocm-core rocm-hip --allowerasing
sudo dnf swap -y mesa-va-drivers mesa-va-drivers-freeworld && sudo dnf swap -y mesa-vdpau-drivers mesa-vdpau-drivers-freeworld --allowerasing
```

Поддержка Intel:

```bash
sudo dnf install -y intel-media-driver --allowerasing
```

# Установка VirtualBox

Обновить систему

```bash
sudo dnf upgrade --refresh
```

Установить зависимости

```bash
sudo dnf install @development-tools
sudo dnf install kernel-headers kernel-devel dkms
```

Подключить репозиторий

```bash
sudo wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo -P /etc/yum.repos.d/
```

Установить VirtualBox

```bash
sudo dnf install VirtualBox-7.1
```

*(вместо 7.1 указать нужный номер версии)*

Включить сервис

```bash
sudo systemctl enable vboxdrv --now
```

Добавить пользователя в группу

```bash
sudo usermod -a -G vboxusers $USER
```

Скачать дополнения

```bash
wget https://download.virtualbox.org/virtualbox/7.1.x/Oracle_VirtualBox_Extension_Pack-7.1.x.vbox-extpack
```

*(вместо 7.1.x указать актуальный номер версии)*

Установить дополнения

```bash
sudo vboxmanage extpack install Oracle_VirtualBox_Extension_Pack-7.1.x.vbox-extpack
```

*(вместо 7.1.x указать актуальный номер версии)*

Выгрузить модуль KVM

```bash
sudo modprobe -r kvm_intel
```

Отключить KVM

```bash
sudo grubby --update-kernel=ALL --args="kvm.enable_virt_at_load=0"
```

Опционально удалить KVM виртуализацию (из-за конфликта совместимости систем виртуализации)

```bash
sudo systemctl stop libvirtd
sudo systemctl disable libvirtd
sudo dnf group remove virtualization
sudo dnf remove boxes
```

Перезапустить систему

```bash
sudo reboot
```

# Установка VMware Workstation

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

```bash
sudo dnf install kernel-devel kernel-headers gcc make patch wget
```

Установка ПО (поменять 17.5.0-22583795 на нужную версию):

```bash
sudo bash ./VMware-Player-Full-17.5.0-22583795.x86_64.bundle --eulas-agreed --required
sudo vmware-modconfig --console --install-all
```

Установка модулей альтернативная (поменять 17.5.1 на нужную версию):

```bash
wget https://github.com/mkubecek/vmware-host-modules/archive/workstation-17.5.1.tar.gz
tar -xzf workstation-17.5.1.tar.gz
cd vmware-host-modules-workstation-17.5.1
sudo make && sudo make install
mv vmmon-only vmmon
mv vmnet-only vmnet
sudo cp -a vmmon vmnet /usr/lib/vmware/modules/source/
sudo vmware-modconfig --console --install-all
```

Установка модулей альтернативная (еще один вариант):

```bash
git clone https://github.com/bytium/vm-host-modules.git
cd vm-host-modules
git checkout 17.6.1
make
sudo make install
```

Перезапустить сервис:

```bash
systemctl restart vmware.service
```

Включение 3D ускорения:

```bash
cat >> ~/.vmware/preferences <<EOF
mks.gl.allowBlacklistedDrivers = "TRUE"
EOF
```

# Convert HEIC to JPEG

Установить ПО и библиотеку:

```bash
sudo dnf install libheif-freeworld libheif-tools
```

Для конвертации:

```bash
heif-convert file.heif file.jpg
```

# Manjaro

# Отключение IPv6

```shell
sudo echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.d/100-manjaro.conf
sudo echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.d/100-manjaro.conf
sudo sysctl -p /etc/sysctl.d/100-manjaro.conf
```

# Смена бранча

Создать файл и открыть его для редактирования

```bash
sudo nano /opt/manjaro-branch.sh
```

Встаить в него следующее

```bash
#!/usr/bin/env bash

# https://wiki.manjaro.org/index.php?title=Switching_Branches

if [ -z "${1}" ]; then
 pacman-mirrors -G
else
 pacman-mirrors --api --set-branch "${1}"
 pacman-mirrors --fasttrack 5
 pacman -Syyuu
fi
```

Выставить права на исполнение

```bash
sudo chmod +x /opt/manjaro-branch.sh
```

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

# Список установленных пакетов

```shell
nano apps.sh
```

> \#!/bin/bash  
> APPFILE=~/apps.list
> 
> echo `date` &gt; $APPFILE
> 
> echo "" &gt;&gt; $APPFILE  
> echo "&lt;&lt;&lt; Snap &gt;&gt;&gt;" &gt;&gt; $APPFILE  
> snap list &gt;&gt; $APPFILE
> 
> echo "" &gt;&gt; $APPFILE  
> echo "&lt;&lt;&lt; Flatpak &gt;&gt;&gt;" &gt;&gt; $APPFILE  
> flatpak list &gt;&gt; $APPFILE
> 
> echo "" &gt;&gt; $APPFILE  
> echo "&lt;&lt;&lt; AUR &gt;&gt;&gt;" &gt;&gt; $APPFILE  
> pamac list -m &gt;&gt; $APPFILE
> 
> echo "" &gt;&gt; $APPFILE  
> echo "&lt;&lt;&lt; Repo &gt;&gt;&gt;" &gt;&gt; $APPFILE  
> pamac list -i &gt;&gt; $APPFILE

```shell
chmod +x apps.sh
./apps.sh
```

# Тюнинг Pacman

Открыть конфигурационный файл

```bash
sudo nano /etc/pacman.conf
```

Добавить в него параметры

> Color  
> VerbosePkgLists  
> ParallelDownloads=5  
> ILoveCandy

Обновить пакетную базу

```bash
sudo pacman -Syyu
```

# Установка окружения

##### **KDE**

```shell
sudo pacman -S kde-applications manjaro-kde-settings sddm-breath-theme manjaro-settings-manager-knotifier manjaro-settings-manager-kcm breath2-icon-themes breath2-wallpaper plasma5-themes-breath2 sddm-breath2-theme
sudo systemctl enable sddm.service --force
```

##### **Gnome**

```shell
sudo pacman -S gnome-extra manjaro-gnome-assets manjaro-gdm-theme manjaro-settings-manager
sudo systemctl enable gdm.service --force
```

##### **XFCE**

```shell
sudo pacman -S xfce4-gtk3 xfce4-goodies xfce4-terminal network-manager-applet xfce4-notifyd-gtk3 xfce4-whiskermenu-plugin-gtk3 tumbler engrampa lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings manjaro-xfce-gtk3-settings manjaro-settings-manager
sudo systemctl enable lightdm.service --force
```

```shell
sudo nano /etc/lightdm/lightdm-gtk-greeter.conf
```

> \[greeter\]  
> background = /usr/share/backgrounds/illyria-default-lockscreen.jpg  
> font-name = Cantarell Bold 12  
> xft-antialias = true  
> icon-theme-name = Papirus  
> screensaver-timeout = 60  
> theme-name = Matcha-azul  
> cursor-theme-name = xcursor-breeze  
> show-clock = false  
> default-user-image = #avatar-default  
> xft-hintstyle = hintfull  
> position = 50%,center 50%,center  
> clock-format =  
> panel-position = bottom  
> indicators = ~host;~spacer;~clock;~spacer;~language;~session;~a11y;~power

##### **Budgie**

```shell
sudo pacman -S budgie-desktop network-manager-applet gnome-control-center gnome-screensaver gnome-terminal nautilus budgie-extras dconf-editor lightdm lightdm-slick-greeter lightdm-settings manjaro-budgie-settings manjaro-settings-manager papirus-maia-icon-theme
sudo systemctl enable lightdm.service --force
```

```shell
sudo nano /etc/lightdm/lightdm.conf
```

> greeter-session=lightdm-slick-greeter

```shell
sudo nano /etc/lightdm/slick-greeter.conf
```

> \[Greeter\]  
> background=/usr/share/backgrounds/manjaro-budgie/manjaro-budgie.jpg  
> theme-name=Matcha-sea  
> icon-theme-name=Papirus-Maia  
> draw-grid=false

##### **Cinnamon**

```shell
sudo pacman -S cinnamon cinnamon-wallpapers cinnamon-sounds gnome-terminal parcellite lightdm lightdm-slick-greeter lightdm-settings manjaro-cinnamon-settings adapta-maia-theme kvantum-manjaro
sudo systemctl enable lightdm.service --force
```

```shell
sudo nano /etc/lightdm/lightdm.conf
```

> greeter-session=lightdm-slick-greeter

```shell
sudo nano /etc/lightdm/slick-greeter.conf
```

> \[Greeter\]  
> background=/usr/share/backgrounds/greeter\_default.jpg  
> background-color=#263138  
> draw-grid=false  
> theme-name=Adapta-Nokto-Eta-Maia  
> icon-theme-name=Papirus-Dark-Maia  
> font-name='Cantarell 11'  
> xft-antialias=true  
> xft-hintstyle=hintfull  
> enable-hidpi=auto

##### **MATE**

```shell
sudo pacman -S mate network-manager-applet mate-extra dconf-editor lightdm lightdm-slick-greeter lightdm-settings manjaro-mate-settings arc-maia-icon-theme papirus-maia-icon-theme manjaro-settings-manager manjaro-settings-manager-notifier
sudo systemctl enable lightdm.service --force
```

```shell
sudo nano /etc/lightdm/lightdm.conf
```

> greeter-session=lightdm-slick-greeter

```shell
sudo nano /etc/lightdm/slick-greeter.conf
```

> \[Greeter\]  
> background=/usr/share/backgrounds/manjaro-mate/manjaro-mate.jpg  
> theme-name=Adapta-Nokto-Maia  
> icon-theme-name=Arc-Maia  
> draw-grid=false

##### **Deepin**

```shell
sudo pacman -S deepin deepin-extra lightdm deepin-manjaro
sudo systemctl enable lightdm.service --force
```

```shell
sudo nano /etc/lightdm/lightdm.conf
```

> greeter-session=lightdm-deepin-greeter

##### **LXDE**

```shell
sudo pacman -S lxde network-manager-applet lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings manjaro-lxde-logout-banner manjaro-lxde-xfce4-notifyd manjaro-lxde-xfce4-volumed-pulse manjaro-settings-manager manjaro-settings-manager-notifier manjaro-lxde-settings arc-maia-icon-theme kvantum-manjaro
sudo systemctl enable lightdm.service --force
```

```shell
sudo nano /etc/lightdm/lightdm-gtk-greeter.conf
```

> \[greeter\]  
> background = /usr/share/backgrounds/lxde-breath.png  
> font-name = Cantarell 12  
> xft-antialias = true  
> icon-theme-name = Arc-Maia  
> screensaver-timeout = 60  
> theme-name = Adapta-Eta-Maia  
> cursor-theme-name = xcursor-breeze  
> show-clock = false  
> default-user-image = #avatar-default  
> xft-hintstyle = hintfull  
> position = 50%,center 50%,center  
> clock-format =   
> panel-position = bottom

##### **LXQT**

```shell
sudo pacman -S lxqt xscreensaver lightdm lightdm-slick-greeter lightdm-settings light-locker manjaro-lxqt-extra-settings manjaro-openbox-adapta-maia papirus-maia-icon-theme
sudo systemctl enable lightdm.service --force
```

```shell
sudo nano /etc/lightdm/lightdm.conf
```

> greeter-session=lightdm-slick-greeter

# Установка Virt-Manager

Установка необходимых пакетов:

```shell
sudo pacman -S virt-manager qemu vde2 iptables-nft dnsmasq bridge-utils openbsd-netcat edk2-ovmf swtpm
sudo usermod -a -G libvirt $USER
sudo systemctl enable --now libvirtd.service
```

Для работы Windows гостевых систем установить пакет virtio-win из AUR:

```shell
sudo pamac install virtio-win
```

# RedHat

# Настройка после установки

Смена Wayland на Xorg

```bash
sudo nano /etc/gdm/custom.conf
```

> \[daemon\]  
> WaylandEnable=false  
> DefaultSession=gnome-xorg.desktop

Установка связки ключенй

```bash
sudo dnf install libgnome-keyring
```

Включение русского языкового пакета

```bash
sudo dnf install -y langpacks-ru
```

Дополнительные репозитории

```bash
sudo rpm --import https://download.sublimetext.com/sublimehq-rpm-pub.gpg
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo rpm --import https://shop.softmaker.com/repo/linux-repo-public.key
sudo rpm --import https://keys.anydesk.com/repos/RPM-GPG-KEY
sudo rpm --import https://rpm.opera.com/rpmrepo.key

sudo dnf config-manager --set-enabled crb

sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/rhel/9/tailscale.repo

sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'

sudo cat << EOF > /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub
EOF
```

# Отключение kdump

1\. Остановить сервис

```bash
sudo systemctl stop kdump
```

2\. Отключить сервис

```bash
sudo systemctl disable kdump
```

3\. Отредактировать загрузчик

```bash
sudo nano /etc/default/grub
```

Сменить **crashkernel=auto** на **crashkernel=no**

4\. Пересобрать загрузчик

```bash
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
```

5\. Перезапустить систему

```bash
sudo reboot
```

# Ubuntu

# Изменения языка директорий

```shell
LANG=C xdg-user-dirs-gtk-update
```

# Исправление проблемы с неработающим DNS

Добавить адреса DNS серверов

```shell
sudo nano /etc/systemd/resolved.conf
```

> \[Resolve\]  
> DNS=8.8.8.8 1.1.1.1 9.9.9.9  
> MulticastDNS=no  
> DNSStubListener=no

Настроить NSSwitch

```shell
sudo nano /etc/nsswitch.conf
```

> hosts: files resolve dns

Сменить файл резолвера

```shell
sudo ln -svi /run/systemd/resolve/resolv.conf /etc/resolv.conf
```

Включить резолвер

```shell
sudo systemctl enable systemd-resolved
```

Перезапустить сервер

```shell
sudo reboot
```

# Не все пакеты обновляются

Внести изменения в настройки APT

```bash
sudo cat <<EOF > /etc/apt/apt.conf.d/80allupgrade
APT::Get::Always-Include-Phased-Updates "1";
EOF
```

Запустить проверку и обновление

```bash
sudo apt update
sudo apt dist-upgrade
```

# Отключение cloud-init

#### Отключение

```shell
sudo touch /etc/cloud/cloud-init.disabled<br></br>sudo reboot
```

#### Удаление

```shell
sudo dpkg-reconfigure cloud-init
```

Убрать все пункты, кроме **None**

```shell
sudo apt-get purge cloud-init<br></br>sudo rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/<br></br>sudo reboot
```

# Переключение на HWE

Ubuntu 22.04

```shell
sudo apt install --install-recommends linux-generic-hwe-22.04
```

Ubuntu 20.04

```shell
sudo apt install --install-recommends linux-generic-hwe-20.04
```

Ubuntu 18.04

```shell
sudo apt-get install --install-recommends linux-generic-hwe-18.04
```

Ubuntu 16.04

```shell
sudo apt-get install --install-recommends linux-generic-hwe-16.04
```

Ubuntu 14.04

```shell
sudo apt-get install --install-recommends linux-generic-lts-xenial
```

Ubuntu 12.04

```shell
sudo apt-get install --install-recommends linux-generic-lts-trusty
```

# Переключение Apache на PHP-FPM

```shell
sudo systemctl stop apache2
sudo a2dismod php7.4
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo apt install php-fpm
sudo apt install libapache2-mod-fcgid
sudo a2enmod proxy
sudo a2enmod proxy_fcgi
sudo systemctl restart apache2
```

# Удаление старых ядер

Обновить систему и перезагрузить для перехода на актуальную версию ядра

```bash
sudo apt update
sudo apt full-upgrade
sudo reboot
```

Удалить остатки

```bash
sudo apt autoremove --purge
```

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

```bash
sudo dpkg --list | egrep 'linux-image|linux-headers'
```

Посмотреть рабочую версию ядра

```bash
uname -r
```

Удалить ненужные версии ядер и заголовков

```bash
sudo apt purge linux-image-5.4.*
sudo apt purge linux-headers-5.4.*
```

# Установка локали

Установить нужный языковой набор (где xx - это например en, ru, fr и т.д.))

```bash
sudo apt-get install language-pack-xx
```

Применить локаль (где xx\_XX - это например en\_US, ru\_RU, fr\_FR и т.д.)

```bash
sudo localectl set-locale LANG=xx_XX.UTF-8
```

При необходимости отредактивровать список включенных локалей

```bash
sudo dpkg-reconfigure locales
```

Проверить список включенных локалей

```bash
locale -a
```

# Установка Docker

```shell
sudo apt update<br></br>sudo apt dist-upgrade<br></br>sudo apt install apt-transport-https ca-certificates curl software-properties-common<br></br>curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -<br></br>sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"<br></br>sudo apt update<br></br>sudo apt install docker-ce<br></br>sudo usermod -aG docker ${USER}
```

# Установка msmtprc

```shell
sudo apt-get install msmtp-mta ca-certificates
sudo nano /etc/msmtprc
```

> defaults
> 
> tls on  
> tls\_starttls on  
> tls\_certcheck off  
> tls\_trust\_file /etc/ssl/certs/ca-certificates.crt
> 
> account default  
> host &lt;smtp.example.net&gt;  
> port 465  
> auth on  
> keepbcc on  
> user &lt;username@example.net&gt;  
> password &lt;password&gt;  
> from &lt;username@example.net&gt;  
> syslog LOG\_MAIL

```shell
sudo nano /etc/php/7.4/apache2/php.ini
```

> sendmail\_path = /usr/bin/msmtp -t

```shell
echo "Test Mail." | msmtp -a default username@domain.com
```

<div id="bkmrk-" style="position: absolute; left: 504px; top: 77.5625px;"><div class="gtx-trans-icon"></div></div>