<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>timsa.ru: заметки с тегом linux</title>
<link>https://timsa.ru/tags/linux/</link>
<description>Моя записная книжка. Комментарии отключены из-за спама. Для вопросов используйте эту страничку</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.0 (v4079)</generator>

<itunes:subtitle>Моя записная книжка. Комментарии отключены из-за спама. Для вопросов используйте эту страничку</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>AD на SAMBA4</title>
<guid isPermaLink="false">246</guid>
<link>https://timsa.ru/all/ad-na-samba4/</link>
<pubDate>Tue, 25 Nov 2025 10:13:12 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/ad-na-samba4/</comments>
<description>
&lt;p&gt;обновляем и ставим необходимые пакеты&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;apt update
apt install samba samba-dsdb-modules krb5-config krb5-user winbind libpam-winbind libnss-winbind smbclient acl ldap-client net-tools iftop htop&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;по идее можно вообще удалить&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
mv /etc/krb5.conf /etc/krb5.conf.orig&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;эти службы самба запустит сама если ей будет надо&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Разворачиваем домен&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;samba-tool domain provision --use-rfc2307 --interactive&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;3221.RU&lt;br /&gt;
3221&lt;br /&gt;
dc&lt;br /&gt;
SAMBA_INTERNAL&lt;br /&gt;
192.168.1.2   ! не свой, а реальный днс или шлюз&lt;br /&gt;
P@ssw0rd&lt;/p&gt;
&lt;p&gt;выдал SID // записал, вдруг пригодится&lt;/p&gt;
&lt;p&gt;вот теперь меняем в /etc/resolv.conf на свой ip&lt;/p&gt;
&lt;p&gt;в /etc/krb5.conf&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[libdefaults]
        default_realm = 3221.RU
		dns_lookup_realm = false
		dns_lookup_kdc = true

[realms]
        3221.RU = {
                kdc = dc.3221.ru
                admin_server = dc.3221.ru
        }&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;в /etc/samba/smb.conf&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# Global parameters
[global]
        dns forwarder = 192.168.1.2
        netbios name = DC
        realm = 3221.RU
        server role = active directory domain controller
        workgroup = 3221
        idmap_ldb:use rfc2307 = yes
        map to guest = Bad User

        dos charset = 866
        unix charset = UTF-8
        preserve case = yes
        short preserve case = yes

        ldap server require strong auth = yes
        tls enabled  = yes
        tls keyfile  = tls/dc.3221.ru.key
        tls certfile = tls/dc.3221.ru.crt
        tls cafile   = tls/rootCA.crt

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

[netlogon]
        path = /var/lib/samba/sysvol/3221.ru/scripts
        read only = No

[share]
        path = /home/share
        read only = no
        guest ok = yes
        create mask = 0777
        browseable = yes
        comment = Общий доступ&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ненужное блочим, нужное запускаем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
systemctl enable samba-ad-dc
systemctl start samba-ad-dc&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>LDAPS на SAMBA4</title>
<guid isPermaLink="false">245</guid>
<link>https://timsa.ru/all/ldaps-na-samba4/</link>
<pubDate>Mon, 24 Nov 2025 11:36:04 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/ldaps-na-samba4/</comments>
<description>
&lt;h2&gt;Генерация корневой пары ключ-сертификат:&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -key rootCA.key -days 10000 -out rootCA.crt&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;обязательно заполнить&lt;br /&gt;
Organizational Unit Name (eg, section) []:3221 CA&lt;br /&gt;
и указать сервер&lt;br /&gt;
Common Name (e. g. server FQDN or YOUR name) []:dc.3221.ru&lt;/p&gt;
&lt;h2&gt;Генерация приватного ключа и сертификата, подписанного корневым сертификатом:&lt;/h2&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;openssl genrsa -out dc.3221.ru.key 2048
openssl req -new -key dc.3221.ru.key -out dc.3221.ru.csr&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;обязательно заполнить и указать &lt;b&gt;ОТЛИЧНЫМ&lt;/b&gt; от предыдущего&lt;br /&gt;
Organizational Unit Name (eg, section) []:3221 AD&lt;br /&gt;
и указать сервер (в большинстве случаев тот же самый)&lt;br /&gt;
Common Name (e. g. server FQDN or YOUR name) []:dc.3221.ru&lt;/p&gt;
&lt;p&gt;Далее&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;openssl x509 -req -in dc.3221.ru.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out dc.3221.ru.crt -days 5000&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;и копируем в папку самбы&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;cp dc.3221.ru.crt dc.3221.ru.key rootCA.crt /var/lib/samba/private/tls/&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;рестартим самбу&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl restart samba&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;файлик rootCA.crt закинуть на виндовые машины и поместить в доверенные корневые центры сертификации&lt;/p&gt;
&lt;p&gt;результат работы под виндой можно проверить с помощью утилиты ldp (указать имя сервера, порт 636, поставить SSL)&lt;/p&gt;
</description>
</item>

<item>
<title>SWAP в файл</title>
<guid isPermaLink="false">244</guid>
<link>https://timsa.ru/all/swap-v-fayl/</link>
<pubDate>Fri, 21 Nov 2025 13:31:16 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/swap-v-fayl/</comments>
<description>
&lt;p&gt;Проверяем:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;swapon --show&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Если в выводе пусто, значит раздела нет.&lt;/p&gt;
&lt;p&gt;Первым делом создаем файл для наших целей:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;dd if=/dev/zero of=/swap bs=1024 count=1000000&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Форматируем файл в формат свопа:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mkswap /swap&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Подключаем файл к системе:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;chmod 0600 /swap
swapon /swap&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Проверяем результат работы:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;swapon --show&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Все в порядке, раздел добавлен. Теперь нам нужно сделать так, чтобы swap раздел монтировался при загрузке. Для этого добавляем в fstab строку:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/swap swap swap defaults 0 0&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Лечим диск</title>
<guid isPermaLink="false">224</guid>
<link>https://timsa.ru/all/lechim-disk/</link>
<pubDate>Thu, 13 Feb 2025 09:38:19 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/lechim-disk/</comments>
<description>
&lt;p&gt;Посыпались ошибки диска, а точнее:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Device: /dev/sdb [SAT], 20 Currently unreadable (pending) sectors&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Запустим короткий тест&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;smartctl —test=short /dev/sdb&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Подождем 2 минуты и посмотрим:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;smartctl -a /dev/sdb&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Нужны две строчки, размер сектора:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Sector Sizes:     512 bytes logical, 4096 bytes physical&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;512 байт и местоположение ошибки&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1  Short offline       Completed: read failure       70%     43114         3906988766&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;3906988766&lt;/p&gt;
&lt;p&gt;Попробуем прямо туда что-нибудь записать в надежде что оно само при попытке записи сделает реалокацию бэдблока (сектор 512 байт, 20 секторов начиная с 3906988766):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;dd if=/dev/zero of=/dev/sdb bs=512 count=20 seek=3906988766 conv=noerror,sync&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;В моем случае сказало — хуй:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;dd: error writing ’/dev/sdb’: Input/output error&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Попробуем поискать их утилиткой берем расширенный диапазон вокруг проблемного места:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;badblocks -b 512 -sv /dev/sdb 3907000000 3906970000
Checking blocks 3906970000 to 3907000000
Checking for bad blocks (read-only test): 3906988760ne, 0:00 elapsed. (0/0/0 errors)
...
done
Pass completed, 16 bad blocks found. (16/0/0 errors)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Нашли 16 секторов, попробуем их пометить:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;badblocks -b 512 -svw /dev/sdb 3907000000 3906960000
Checking for bad blocks in read-write mode
From block 3906960000 to 3907000000
Testing with pattern 0xaa: done
Reading and comparing: done
Testing with pattern 0x55: done
Reading and comparing: done
Testing with pattern 0xff: done
Reading and comparing: done
Testing with pattern 0x00: done
Reading and comparing: done
Pass completed, 0 bad blocks found. (0/0/0 errors)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Проверим снова&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;smartctl —test=short /dev/sdb&lt;br /&gt;
smartctl -a /dev/sdb&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ну и заебись:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1  Short offline       Completed without error       00%     43114         —&lt;/p&gt;
&lt;/blockquote&gt;
</description>
</item>

<item>
<title>P2V на Proxmox</title>
<guid isPermaLink="false">223</guid>
<link>https://timsa.ru/all/p2v-na-proxmox/</link>
<pubDate>Tue, 11 Feb 2025 15:52:22 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/p2v-na-proxmox/</comments>
<description>
&lt;p&gt;Ранее уже изучал этот вопрос с переездом на ESXi, но с тех пор от продуктов vmware давно отказался &lt;a href="https://timsa.ru/all/p2v-ili-kak-preobrazovat-fizicheskiy-server-v-virtualny/"&gt;https://timsa.ru/all/p2v-ili-kak-preobrazovat-fizicheskiy-server-v-virtualny/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Сегодня будем мигрировать на proxmox.&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;Первый пункт — проверить, что знаешь пароль root и он подходит!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;убрать лишние диски, иначе ВМка может не стартануть, а еще пароль рута не подходит...&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/fstab&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;настроить другой ip чтобы при старте она не обосрала жизнь старому серверу&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/network/interfaces&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;тут желательно остановить все активно пишущие на диск сервисы (mysql и influxdb как минимум)&lt;/p&gt;
&lt;p&gt;скопировать образ системного диска (sdc) в файл (старенький SATA 3Gb/s дает 125 мб/с или 15 минут на 128 гигов)&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;dd if=/dev/sdc of=/mnt/somedisk/debra.img bs=8M conv=sync,noerror status=progress&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;вернуть лишние диски&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/fstab&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;вернуть ip&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;vi /etc/network/interfaces&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;конвертируем в qcow2 (заняло ровно час)&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;qemu-img convert -f raw debra.img -O qcow2 debra.qcow2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;закидываем образ на proxmox 101 — это свободный номер для ВМ&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;scp debra.qcow2 root@pve:/root/vm-101-disk-0.qcow2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;создаем машину (после создания ~можно~ нужно зайти в интерфейс и подрихтовать параметры)&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;qm create 101 --name oldphysical --memory 4096 --cores 4 --net0 virtio,bridge=vmbr0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;импортируем диск (он полюбому копируется и даже немного конвертируется)&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;qm importdisk 101 /root/vm-101-disk-0.qcow2 local --format qcow2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;подключаем диск (на предыдущем шаге будет точно написан путь local.., взять оттуда так как в интернете херня)&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;qm set 101 --scsi0 local:101/vm-101-disk-0.qcow2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ставим загрузочное устройство&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;qm set 101 --boot order=scsi0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;запускаем машину&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;qm start 101&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Также полезное&lt;/h2&gt;
&lt;p&gt;&lt;b&gt;посмотреть содержимое образа raw&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;сначала команда выдаст устройство, например /dev/loop0&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;losetup -f --show debra.img&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;можно посмотреть разделы&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;fdisk -l /dev/loop0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;подключим разделы&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;partprobe /dev/loop0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;смонтируем первый&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mount /dev/loop0p1 /mnt/restore&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;размонтируем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;umount /dev/loop0p1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;отключаем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;losetup --detach /dev/loop0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;b&gt;посмотреть содержимое образа qcow2&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;проверяем что модуль nbd загружен&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;modprobe nbd max_part=8&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;коннектим устройство&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;qemu-nbd --connect=/dev/nbd0 debra.qcow2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;смонтируем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;mount /dev/nbd0p1 /mnt/restore&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;размонтируем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;umount /dev/nbd0p1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;отключаем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;qemu-nbd --disconnect /dev/nbd0&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Установка homeassistant</title>
<guid isPermaLink="false">194</guid>
<link>https://timsa.ru/all/homeassistant/</link>
<pubDate>Wed, 26 Jun 2024 21:31:54 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/homeassistant/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;apt-get update &amp;amp;&amp;amp; apt-get install curl net-tools iftop htop sudo python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;настроить sudo, консольку&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;useradd -rm homeassistant
# mkdir /homeassistant # ставим в домашнюю
# chown homeassistant:homeassistant /homeassistant
sudo -u homeassistant -H -s
cd /home/homeassistant
python3 -m venv .
source bin/activate
python3 -m pip install wheel 
pip3 install homeassistant numpy mutagen
hass&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;для автозапуска&lt;br /&gt;
создаем файл /etc/systemd/system/home-assistant@homeassistant.service&lt;br /&gt;
с содержимым:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Unit]
Description=Home Assistant
After=network-online.target

[Service]
Type=simple
User=%i
WorkingDirectory=/home/%i/.homeassistant
ExecStart=/home/%i/bin/hass -c &amp;quot;/home/%i/.homeassistant&amp;quot;
RestartForceExitStatus=100
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;далее&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo systemctl --system daemon-reload
sudo systemctl enable home-assistant@homeassistant
sudo systemctl start home-assistant@homeassistant&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ставим брокер MQTT&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | bash
apt-get install emqx
systemctl start emqx&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;по умолчанию admin:public&lt;/p&gt;
&lt;p&gt;UPD.:&lt;br /&gt;
Emqx по-большому счету совершенно ненужный сервант, запускает вагон сервисов, жрет ресурсы, а для работы умного дома функционала mosquitto хватит за глаза.&lt;/p&gt;
</description>
</item>

<item>
<title>Astralinux BT адаптер HP Envy</title>
<guid isPermaLink="false">193</guid>
<link>https://timsa.ru/all/astralinux-bt-adapter-hp-envy/</link>
<pubDate>Wed, 26 Jun 2024 18:07:09 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/astralinux-bt-adapter-hp-envy/</comments>
<description>
&lt;p&gt;Никак не мог подключить BT мышку к ноуту с AstraLinux.&lt;br /&gt;
Решение такое:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;установить пакет blueman&lt;/li&gt;
&lt;li&gt;скачать с &lt;a href="https://github.com/winterheart/broadcom-bt-firmware/tree/master/brcm"&gt;https://github.com/winterheart/broadcom-bt-firmware/tree/master/brcm&lt;/a&gt; файлик BCM43142A0-0a5c-216c.hcd зеркало &lt;a href="https://timsa.ru/f/BCM43142A0-0a5c-216c.hcd"&gt;https://timsa.ru/f/BCM43142A0-0a5c-216c.hcd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;положить его в /lib/firmware/brcm/ на всякий случай положил дважды, второе имя BCM-0a5c-216c.hcd&lt;/li&gt;
&lt;li&gt;перезагрузиться&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Также может быть полезным&lt;br /&gt;
&lt;a href="https://help.ubuntu.ru/wiki/broadcom_bluetooth"&gt;https://help.ubuntu.ru/wiki/broadcom_bluetooth&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://github.com/winterheart/broadcom-bt-firmware/"&gt;https://github.com/winterheart/broadcom-bt-firmware/&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Raspberry Pi 1 Model B Rev 2</title>
<guid isPermaLink="false">182</guid>
<link>https://timsa.ru/all/raspberry-pi-1-model-b-rev-2/</link>
<pubDate>Sat, 02 Dec 2023 22:15:24 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/raspberry-pi-1-model-b-rev-2/</comments>
<description>
&lt;p&gt;Разрядом убита сетевуха, всё остальное работает.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://timsa.ru/pictures/Raspberry-Pi-1-Model-B-Rev-2.png" width="1280" height="868" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://timsa.ru/pictures/Raspberry-Pi-1-Model-B-5.jpg" width="600" height="1074" alt="" /&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>Замена Q6600 на Q9650</title>
<guid isPermaLink="false">173</guid>
<link>https://timsa.ru/all/zamena-q6600-na-q9650/</link>
<pubDate>Tue, 24 Oct 2023 18:10:18 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/zamena-q6600-na-q9650/</comments>
<description>
&lt;p&gt;Q6600&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# pveperf
CPU BOGOMIPS:      19200.72
REGEX/SECOND:      1214454
HD SIZE:           39.63 GB (/dev/mapper/pve-root)
BUFFERED READS:    261.28 MB/sec
AVERAGE SEEK TIME: 0.09 ms
FSYNCS/SECOND:     482.88
DNS EXT:           699.36 ms
DNS INT:           648.79 ms (timsa.ru)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Q9650&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# pveperf
CPU BOGOMIPS:      23997.28
REGEX/SECOND:      1947088
HD SIZE:           39.19 GB (/dev/mapper/pve-root)
BUFFERED READS:    267.85 MB/sec
AVERAGE SEEK TIME: 0.07 ms
FSYNCS/SECOND:     614.74
DNS EXT:           973.98 ms
DNS INT:           984.37 ms (timsa.ru)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Q6600&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
stepping        : 11
microcode       : 0xb6
cpu MHz         : 2400.094
cache size      : 4096 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm pti dtherm
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit mmio_unknown
bogomips        : 4800.18
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Q9650&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Intel(R) Core(TM)2 Quad CPU    Q9650  @ 3.00GHz
stepping        : 10
microcode       : 0xa07
cpu MHz         : 3000.000
cache size      : 6144 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm pti tpr_shadow vnmi flexpriority vpid dtherm
vmx flags       : vnmi flexpriority tsc_offset vtpr vapic
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit mmio_unknown
bogomips        : 5999.32
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>MQTT broker</title>
<guid isPermaLink="false">172</guid>
<link>https://timsa.ru/all/mqtt-broker/</link>
<pubDate>Mon, 25 Sep 2023 11:19:37 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/mqtt-broker/</comments>
<description>
&lt;p&gt;Ранее использовал простенький mosquitto для IoT и прочего, но понадобилась интеграция с браузером — создать дашборд с отображением информации и возможностью отправлять команды, эдакий информационный киоск.&lt;br /&gt;
Клиента mqtt на JS я не нашел (браузерную версию). Ставить node.js и делать шлюз — вроде как лишняя сущность, костыль получается.&lt;br /&gt;
Зато в поисках нашел EMQX — брокер MQTT плюс возможность создания дашбордов и трансляции топиков через websocket.&lt;/p&gt;
&lt;p&gt;Задача:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Поставить EMQX параллельно действующему mosquitto, но на другие порты&lt;/li&gt;
&lt;li&gt;Настроить трансляцию mosquitto -&gt; EMQX&lt;/li&gt;
&lt;li&gt;Переключить часть сервисов на EMQX и посмотреть на стабильность/совместимость&lt;/li&gt;
&lt;li&gt;Заменить mosquitto полностью.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Пока вижу подводный камень в виде SSL. Далеко не все устройства IoT в состоянии поднимать SSL.&lt;/p&gt;
</description>
</item>

<item>
<title>Управление P410 под linux</title>
<guid isPermaLink="false">161</guid>
<link>https://timsa.ru/all/upravlenie-p410-pod-linux/</link>
<pubDate>Tue, 23 May 2023 12:12:08 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/upravlenie-p410-pod-linux/</comments>
<description>
&lt;p&gt;Утилита hpacucli сдохла, а hpssacli переименовалась в ssacli. Её и надо использовать.&lt;/p&gt;
&lt;p&gt;Перечень команд &lt;a href="https://gist.github.com/mrpeardotnet/a9ce41da99936c0175600f484fa20d03"&gt;https://gist.github.com/mrpeardotnet/a9ce41da99936c0175600f484fa20d03&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;На всякий случай копия основных.&lt;/p&gt;
&lt;p&gt;Допустимые сокращения:&lt;br /&gt;
chassisname = ch&lt;br /&gt;
controller = ctrl&lt;br /&gt;
logicaldrive = ld&lt;br /&gt;
physicaldrive = pd&lt;br /&gt;
drivewritecache = dwc&lt;br /&gt;
licensekey = lk&lt;/p&gt;
&lt;p&gt;Show available controllers&lt;/p&gt;
&lt;p&gt;ssacli ctrl all show&lt;/p&gt;
&lt;p&gt;Show controllers status&lt;/p&gt;
&lt;p&gt;ssacli ctrl all show status&lt;/p&gt;
&lt;p&gt;Show detailed controllers information&lt;/p&gt;
&lt;p&gt;ssacli ctrl all show detail&lt;/p&gt;
&lt;p&gt;Show controllers configuration&lt;/p&gt;
&lt;p&gt;ssacli ctrl all show config&lt;/p&gt;
&lt;p&gt;Rescan for new devices Useful after swapping disks in bays, etc...&lt;/p&gt;
&lt;p&gt;ssacli rescan&lt;/p&gt;
&lt;p&gt;Show all physical disks (or their status) (controller slot 0)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 pd all show&lt;br /&gt;
ssacli ctrl slot=0 pd all show status&lt;/p&gt;
&lt;p&gt;Show all physical disks detailed information (controller slot 0)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 pd all show detail&lt;/p&gt;
&lt;p&gt;Show logical drives (or their status) (controller slot 0, all or specific logical drive(s))&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 ld all show&lt;br /&gt;
ssacli ctrl slot=0 ld all show status&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 ld 1 show&lt;br /&gt;
ssacli ctrl slot=0 ld 1 show status&lt;/p&gt;
&lt;p&gt;Show detailed logical drives information (controller slot 0, all or specific logical drive(s))&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 ld all show detail&lt;br /&gt;
ssacli ctrl slot=0 ld 1 show detail&lt;/p&gt;
&lt;p&gt;Show array information (controller slot 0, array A)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 array a show&lt;/p&gt;
&lt;p&gt;Show array status (controller slot 0, all arrays)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 array all show status&lt;/p&gt;
&lt;p&gt;Create new RAID 0 logical drive (controller slot 0, disk in port 1I:box 1:bay 1)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 create type=ld drives=1I:1:1 raid=0&lt;/p&gt;
&lt;p&gt;Create new RAID 1 logical drive (controller slot 0, disks in port 1I:box 1:bay 1 and 2)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 create type=ld drives=1I:1:1,1I:1:2 raid=1&lt;/p&gt;
&lt;p&gt;Create new RAID 5 logical drive (controller slot 0, diks in port 1I:box 1:bay 1 to 4)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 create type=ld drives=1I:1:1-1I:1:4 raid=5&lt;/p&gt;
&lt;p&gt;Delete logical drive (controller slot 0, logical drive 1)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 ld 1 delete&lt;/p&gt;
&lt;p&gt;Add new physical disks to logical drive (controller slot 0, logical drive 1, disks in port 1I:box 1:bay 6 and 7)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 ld 2 add drives=1I:1:6,1I:1:7&lt;/p&gt;
&lt;p&gt;Add spare disks (controller slot 0, logical drive 1, array A, disks in port 1I:box 1:bay 6 and 7)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 array a add spares=1I:1:6,1I:1:7&lt;/p&gt;
&lt;p&gt;Add global spare disks (controller slot 0, logical drive 1, all arrays, disks in port 1I:box 1:bay 6 and 7)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 array all add spares=1I:1:6,1I:1:7&lt;/p&gt;
&lt;p&gt;Turn on/off blink logical drive LED (controller slot 0, logical drive 1)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 ld 1 modify led=on&lt;br /&gt;
ssacli ctrl slot=0 ld 1 modify led=off&lt;/p&gt;
&lt;p&gt;Turn on/off blink physical disk LED (controller slot 0, physical disk port 1I:box 1:bay 1)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 pd 1I:1:1 modify led=on&lt;br /&gt;
ssacli ctrl slot=0 pd 1I:1:1 modify led=off&lt;/p&gt;
&lt;p&gt;Modify smart array cache read and write ratio (controller slot 0, cacheratio 80% read/20% write)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify cacheratio=80/20&lt;/p&gt;
&lt;p&gt;Show physical drive write cache status (controller slot 0)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify dwc=?&lt;/p&gt;
&lt;p&gt;Enable/disable physical drive write cache (controller slot 0) Important: Because physical drive write cache is not battery-backed, you could lose data if a power failure occurs during a write process. To minimize this possibility, use a backup power supply.&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify dwc=enable&lt;br /&gt;
ssacli ctrl slot=0 modify dwc=disable&lt;/p&gt;
&lt;p&gt;Show status of smart array write cache when no battery is present (no-battery write cache option, controller slot 0)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify nbwc=?&lt;/p&gt;
&lt;p&gt;Enable/disable smart array write cache when no battery is present (no-battery write cache option, controller slot 0)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify nbwc=enable&lt;br /&gt;
ssacli ctrl slot=0 modify nbwc=disable&lt;/p&gt;
&lt;p&gt;Enable/disable smart array cache for certain Logical Volume (controller slot 0, logical drive 1)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 ld 1 modify arrayaccelerator=enable&lt;br /&gt;
ssacli ctrl slot=0 ld 1 modify arrayaccelerator=disable&lt;/p&gt;
&lt;p&gt;Enable/disable SSD Smart Path (controller slot 0, array A)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 array a modify ssdsmartpath=enable&lt;br /&gt;
ssacli ctrl slot=0 array a modify ssdsmartpath=disable&lt;/p&gt;
&lt;p&gt;Show spare activation mode&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify spareactivationmode=?&lt;/p&gt;
&lt;p&gt;Set spare activation mode&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify spareactivationmode=predictive&lt;br /&gt;
ssacli ctrl slot=0 modify spareactivationmode=failure&lt;/p&gt;
&lt;p&gt;Show rebuild priority&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify rp=?&lt;/p&gt;
&lt;p&gt;Modify rebuild priority&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 modify rp=low&lt;br /&gt;
ssacli ctrl slot=0 modify rp=medium&lt;br /&gt;
ssacli ctrl slot=0 modify rp=mediumhigh&lt;br /&gt;
ssacli ctrl slot=0 modify rp=high&lt;/p&gt;
&lt;p&gt;Erase Physical Drive (controller slot 0, physical disk port 1I:box 1:bay 1)&lt;/p&gt;
&lt;p&gt;ssacli ctrl slot=0 pd 1I:1:1 modify erase&lt;/p&gt;
</description>
</item>

<item>
<title>Rsync</title>
<guid isPermaLink="false">153</guid>
<link>https://timsa.ru/all/rsync/</link>
<pubDate>Fri, 03 Jun 2022 11:31:13 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/rsync/</comments>
<description>
&lt;p&gt;-r рекурсивно&lt;br /&gt;
-l пересоздавать линки&lt;br /&gt;
-p сохранить пермишнс&lt;br /&gt;
-t сохранить время&lt;br /&gt;
-g сохранить группу&lt;br /&gt;
-o сохранить владельца&lt;br /&gt;
-D пересоздавать устройства&lt;br /&gt;
-a аналог -rlptgoD&lt;/p&gt;
&lt;p&gt;-z сжимать&lt;br /&gt;
—progress показывать прогресс&lt;br /&gt;
-n пробный прогон&lt;br /&gt;
-v с комментариями&lt;br /&gt;
-u только обновлять&lt;/p&gt;
&lt;p&gt;например скопировать директорию не перенося повторно то, что там уже есть&lt;br /&gt;
rsync -rupogtv source destination&lt;/p&gt;
</description>
</item>

<item>
<title>bash</title>
<guid isPermaLink="false">151</guid>
<link>https://timsa.ru/all/bash/</link>
<pubDate>Thu, 19 May 2022 12:42:57 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/bash/</comments>
<description>
&lt;p&gt;если есть ключ, но нет пароля:&lt;br /&gt;
ssh -i ssh_key login@host&lt;/p&gt;
&lt;p&gt;ключ должен иметь режим 600&lt;br /&gt;
chmod 600 keyfile&lt;/p&gt;
&lt;p&gt;создать файл из 100 блоков по 1 мегабайту рандомных цифр&lt;br /&gt;
dd if=/dev/urandom of=/tmp/somefile bs=1M count=100&lt;/p&gt;
&lt;p&gt;сделать какую то манипуляцию 10000 раз в командной строке&lt;br /&gt;
for i in {0000..9999}; do cp /tmp/source /tmp/dest$i; done&lt;/p&gt;
&lt;p&gt;выполнять операцию до тех пор пока она не выполнится успешно&lt;br /&gt;
while ! apt-get -y upgrade; do sleep 2; done&lt;/p&gt;
&lt;p&gt;найти все директории с правом записи для всех&lt;br /&gt;
find / -perm /o=w -type d&lt;/p&gt;
</description>
</item>

<item>
<title>P2V или как преобразовать физический сервер в виртуальный</title>
<guid isPermaLink="false">149</guid>
<link>https://timsa.ru/all/p2v-ili-kak-preobrazovat-fizicheskiy-server-v-virtualny/</link>
<pubDate>Mon, 21 Mar 2022 14:33:49 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/p2v-ili-kak-preobrazovat-fizicheskiy-server-v-virtualny/</comments>
<description>
&lt;p&gt;Задача: превратить старый физический сервер с Debian11 в виртуальную машину на ESXi гипервизоре.&lt;br /&gt;
Вариант с конвертером (converter standalone / vCenter converter) у меня не удался ни разу, поэтому пошел другим путем.&lt;br /&gt;
В процессе понадобится виндовая машина со свободным местом на диске &gt;= двухкратному размеру системного диска сервера.&lt;br /&gt;
При желании можно обойтись без нее.&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Подготовка.&lt;br /&gt;
Останавливаем на сервере все задачи, изменяющие критичные данные (типа mysql).&lt;br /&gt;
Убеждаемся что помним пароль рута, а если его не было — устанавливаем.&lt;br /&gt;
Если кроме системного раздела на сервере были монтирующиеся дополнительные, но которые переносить не надо, желательно сразу отредактировать fstab — закоментить лишнее.&lt;br /&gt;
Устанавливаем если ранее не было qemu: apt update &amp;&amp; apt install qemu qemu-utils&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Копируем системный раздел в образ примерно так:&lt;br /&gt;
dd if=/dev/sda of=/root/sda.img bs=8M conv=sync,noerror status=progress&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Конвертируем образ в vmdk:&lt;br /&gt;
qemu-img convert -o compat6 sda.img -O vmdk sda-vmware.vmdk&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Вытаскиваем vmdk файл на виндовую машину. Устанавливаем VMware Workstation. Создаем в последнем новую ВМ с параметрами примерно как у сервера (проц, память), указываем что будет ubuntu18 x64, и что систему поставим позже (диск по дефолту 20Гб). Теперь, не запуская новую ВМ подменяем vmdk файл (тут есть вариант указать при создании «использовать имеющийся диск», но этот пункт есть не у всех версий VMware Workstation).&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Запускаем виртуальную машину. Тут могут посыпаться некоторые ошибки, может понадобиться пароль рута. У меня в частности наругалось на отсутствующие диски. Также может измениться UUID, тогда делаем blkid и прописываем в fstab верные.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Гасим виртуальную машину и делаем экспорт в OVF.&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="7"&gt;
&lt;li&gt;Подключаемся к гипервизору ESXi и загружаем в него OVF.&lt;br /&gt;
Если возникнет ошибка типа «No supported hardware versions among» — нужно отредактировать ovf-файл, исправить в нем vmx-xx (где хх например 16) на поддерживаемую гипервизором версию, например 13 или 12.&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>Почему не работает отключение пароля sudoer’а?</title>
<guid isPermaLink="false">146</guid>
<link>https://timsa.ru/all/pochemu-ne-rabotaet-otklyuchenie-parolya-sudoera/</link>
<pubDate>Thu, 24 Feb 2022 09:36:26 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/pochemu-ne-rabotaet-otklyuchenie-parolya-sudoera/</comments>
<description>
&lt;p&gt;Чтобы `sudo` не спрашивало пароль, надо отредактировать файл /etc/sudoers с помощью visudo.&lt;br /&gt;
Во всех найденных инструкциях приводится один и тот же пример:&lt;/p&gt;
&lt;p&gt;под строкой&lt;br /&gt;
root ALL=(ALL:ALL) ALL&lt;br /&gt;
добавляют юзера&lt;br /&gt;
username ALL=(ALL) NOPASSWD: ALL&lt;/p&gt;
&lt;p&gt;всё верно, вот только дальше в файле есть строчка&lt;br /&gt;
%sudo   ALL=(ALL:ALL) ALL&lt;br /&gt;
которая срабатывает для username если он входит в группу sudoer и соответственно запрос пароля не отключится.&lt;/p&gt;
&lt;p&gt;Решение тупое — написать юзера username ниже строчки %sudo.&lt;br /&gt;
Решение правильное — вынести юзера username в отдельный файл в /etc/sudoers.d/username&lt;br /&gt;
т.к .подключение этих файлов идет в конце /etc/sudoers&lt;/p&gt;
</description>
</item>

<item>
<title>Docker</title>
<guid isPermaLink="false">143</guid>
<link>https://timsa.ru/all/docker/</link>
<pubDate>Tue, 14 Dec 2021 11:43:01 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/docker/</comments>
<description>
&lt;p&gt;Докатились...&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;https://docs.docker.com/engine/install/debian/

apt-get install ca-certificates curl gnupg lsb-release apt-transport-https

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable&amp;quot; | tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null

f.e. : deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bullseye stable


apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

docker run hello-world

groupadd docker
usermod -aG docker $USER

systemctl enable docker.service
systemctl enable containerd.service&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Неплохой backup для debian</title>
<guid isPermaLink="false">128</guid>
<link>https://timsa.ru/all/neplohoy-backup-dlya-debian/</link>
<pubDate>Tue, 30 Mar 2021 16:33:23 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/neplohoy-backup-dlya-debian/</comments>
<description>
&lt;p&gt;Veeam Agent for Linux FREE (&lt;a href="https://www.veeam.com/ru/linux-backup-free.html)"&gt;https://www.veeam.com/ru/linux-backup-free.html)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Регаемся, качаем veeam-release-deb_1.0.7_amd64.deb (в случае дебиана), делаем&lt;br /&gt;
dpkg -i veeam-release-deb_1.0.7_amd64.deb&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install veeam&lt;br /&gt;
Если планируется бэкапить по сетке на виндовую машину надо будет поставить cifs-utils&lt;br /&gt;
apt-get install cifs-utils&lt;br /&gt;
(там всякая срань подтянется, но что делать)&lt;/p&gt;
&lt;p&gt;Теперь запускаем veeam&lt;br /&gt;
Принимаем соглашение, далее далее, где лицензия просто далее.&lt;br /&gt;
Нажимаем C и переходим к созданию задания.&lt;br /&gt;
Выбираем что будем бэкапить всю машину или раздел, потом куда, если как в моем случае на винду то SMB (прописываем ip сервера, название шары, логин, пароль), указываем когда будет запускаться задача и всё.&lt;/p&gt;
</description>
</item>

<item>
<title>Подключаем Dadget CO2 к серваку</title>
<guid isPermaLink="false">116</guid>
<link>https://timsa.ru/all/podklyuchaem-dadget-co2-k-servaku/</link>
<pubDate>Mon, 20 Jul 2020 22:38:42 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/podklyuchaem-dadget-co2-k-servaku/</comments>
<description>
&lt;ol start="1"&gt;
&lt;li&gt;Сначала сделаем чтобы любой пользователь мог обращаться к устройству&lt;br /&gt;
создаем /etc/udev/rules.d/10-co2mon.rules&lt;br /&gt;
с содержимым&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ACTION==&amp;quot;add|change&amp;quot;, SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;04d9&amp;quot;, ATTRS{idProduct}==&amp;quot;a052&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;щелкаем&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;udevadm control --reload
udevadm trigger&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;проверяем что /dev/usb/hiddev0 теперь crw-rw-rw-&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Подключаем библиотечку &lt;s&gt;PyUSB&lt;/s&gt; hid. PyUSB глючное говно вызывающее странные эффекты, например пропадение устройства hiddev0.&lt;br /&gt;
pip3 install hid (или hidapi уже не помню, это гуглится)&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Читаем (алгоритм расшифровки передрал с сишного проекта co2mod)&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/usr/bin/env python3

import hid
import time

def decode_co(data):
    # кручу-верчу
    data[0], data[2] = data[2], data[0]
    data[1], data[4] = data[4], data[1]
    data[3], data[7] = data[7], data[3]
    data[5], data[6] = data[6], data[5]
    
    result = bytearray(8)

    # всех обмануть хочу
    result[7] = ((data[6] &amp;lt;&amp;lt; 5) &amp;amp; 0xFF) | ((data[7] &amp;gt;&amp;gt; 3) &amp;amp; 0xFF)
    result[6] = ((data[5] &amp;lt;&amp;lt; 5) &amp;amp; 0xFF) | ((data[6] &amp;gt;&amp;gt; 3) &amp;amp; 0xFF)
    result[5] = ((data[4] &amp;lt;&amp;lt; 5) &amp;amp; 0xFF) | ((data[5] &amp;gt;&amp;gt; 3) &amp;amp; 0xFF)
    result[4] = ((data[3] &amp;lt;&amp;lt; 5) &amp;amp; 0xFF) | ((data[4] &amp;gt;&amp;gt; 3) &amp;amp; 0xFF)
    result[3] = ((data[2] &amp;lt;&amp;lt; 5) &amp;amp; 0xFF) | ((data[3] &amp;gt;&amp;gt; 3) &amp;amp; 0xFF)
    result[2] = ((data[1] &amp;lt;&amp;lt; 5) &amp;amp; 0xFF) | ((data[2] &amp;gt;&amp;gt; 3) &amp;amp; 0xFF)
    result[1] = ((data[0] &amp;lt;&amp;lt; 5) &amp;amp; 0xFF) | ((data[1] &amp;gt;&amp;gt; 3) &amp;amp; 0xFF)
    result[0] = ((data[7] &amp;lt;&amp;lt; 5) &amp;amp; 0xFF) | ((data[0] &amp;gt;&amp;gt; 3) &amp;amp; 0xFF)
    
    magic_word = b'Htemp99e'
    for i in range(8):
        r = ((magic_word[i] &amp;lt;&amp;lt; 4) &amp;amp; 0xFF) | ((magic_word[i] &amp;gt;&amp;gt; 4) &amp;amp; 0xFF)
        if result[i] &amp;lt; r:
            result[i] = 0xFF - r + result[i]
        else:
            result[i] = result[i] - r

    # не знаю почему, но у меня проверка чек-суммы никогда не сходилась    
    #if result[0]+result[1]+result[2] != result[3]:
    #    return 0

    res = (result[1] &amp;lt;&amp;lt; 8) + result[2]

    if result[0] == 0x42:
        print(&amp;quot;T={0}&amp;quot;.format(res * 0.0625 - 273.15))
        return 1
    elif result[0] == 0x50:
        print(&amp;quot;CO={0}&amp;quot;.format(res))
        return 2
    return 0
    
try:
    h = hid.device()
    h.open(0x04d9, 0xa052)

    # хз, не вникал
    h.set_nonblocking(1)

    # по идее это отправка некой magic_table которой шифруется ответ, но и без любой из этих строк работает
    #h.write(b'8\x00\x00\x00\x00\x00\x00\x00\x00')
    h.send_feature_report([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])
    time.sleep(0.05)

    co = 1
    t = 1
    while co | t:
        d = h.read(8)
        if d:
            n = decode_co(d)
            if n == 1:
                t = 0
            elif n == 2:
                co = 0

    h.close()

except IOError as ex:
    print(ex)&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Ааааблакаааааа</title>
<guid isPermaLink="false">85</guid>
<link>https://timsa.ru/all/aaaablakaaaaaa/</link>
<pubDate>Wed, 22 Aug 2018 15:35:25 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/aaaablakaaaaaa/</comments>
<description>
&lt;p&gt;Надоело мне платить по 100$ за дропбокс и решил я свое облако сделать.&lt;/p&gt;
&lt;p&gt;На сервак ставится ownCloud (&lt;a href="https://linuxhostsupport.com/blog/how-to-install-owncloud-10-on-debian-9/)"&gt;https://linuxhostsupport.com/blog/how-to-install-owncloud-10-on-debian-9/)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ему понадобится&lt;br /&gt;
apache2 mysql-server php-apcu php-apcu-bc php-common php-igbinary php-imagick php-memcached php-msgpack php-redis php-smbclient php-ssh2 php7.0 php7.0-cli php7.0-common php7.0-curl php7.0-gd php7.0-imap php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-pgsql php7.0-pspell php7.0-readline php7.0-recode php7.0-tidy php7.0-xml php7.0-xmlrpc php7.0-xsl php7.0-zip phpmyadmin php-redis redis-server apt-transport-https owncloud-files&lt;/p&gt;
&lt;p&gt;Плюс своя база mysql, работающий redis и желательно домен с ssl.&lt;/p&gt;
&lt;p&gt;3 дня полет нормальный.&lt;/p&gt;
</description>
</item>

<item>
<title>BT Мышь</title>
<guid isPermaLink="false">84</guid>
<link>https://timsa.ru/all/bt-mysh/</link>
<pubDate>Wed, 15 Aug 2018 14:43:03 +0500</pubDate>
<author></author>
<comments>https://timsa.ru/all/bt-mysh/</comments>
<description>
&lt;p&gt;apt-get install bluetooth bluez bluez-tools rfkill&lt;br /&gt;
apt-get install bluez-firmware firmware-atheros&lt;/p&gt;
&lt;p&gt;systemctl enable bluetooth.service&lt;br /&gt;
systemctl start bluetooth.service&lt;/p&gt;
&lt;p&gt;включить пайринг на мыши (зажать все п/л кнопки и колесико на 3 секунды)&lt;br /&gt;
hcitool scan&lt;br /&gt;
узнаем мак&lt;/p&gt;
&lt;h2&gt;bluetoothctl&lt;/h2&gt;
&lt;p&gt;[bluetooth]# list&lt;br /&gt;
Controller MAC_адрес_контроллера BlueZ 5.5 [default]&lt;br /&gt;
[bluetooth]# select MAC_адрес_контроллера&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
[bluetooth]# scan on&lt;br /&gt;
[bluetooth]# agent on&lt;br /&gt;
[bluetooth]# devices&lt;br /&gt;
Device MAC_адрес_мыши Name: Bluetooth Mouse&lt;br /&gt;
[bluetooth]# pair MAC_адрес_мыши&lt;br /&gt;
[bluetooth]# trust MAC_адрес_мыши&lt;br /&gt;
[bluetooth]# connect MAC_адрес_мыши&lt;/p&gt;
&lt;p&gt;/etc/default/bluetooth&lt;br /&gt;
исправить HID2HCI_ENABLED=1&lt;/p&gt;
&lt;p&gt;/etc/bluetooth/hcid.conf&lt;br /&gt;
device MAC_адрес_мыши {&lt;br /&gt;
name «Мегамышь»;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;/etc/init.d/bluetooth restart&lt;/p&gt;
</description>
</item>


</channel>
</rss>