<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-267673149118655463</atom:id><lastBuildDate>Tue, 15 Apr 2025 16:07:50 +0000</lastBuildDate><category>man</category><category>soft</category><category>computer</category><category>hack</category><category>windows</category><category>internet</category><category>nix</category><category>other</category><category>hard</category><category>tweak</category><category>Firefox</category><category>browser</category><category>links</category><category>picture</category><category>android</category><category>mobile</category><category>blogs</category><category>download</category><category>game</category><category>regexp</category><category>torrent</category><category>bittorrent</category><category>humor</category><category>patch</category><category>anime</category><category>firmware</category><category>idea</category><category>raspberry pi</category><category>systemd</category><category>network</category><category>wallpaper</category><category>sql</category><category>thunderbird</category><category>arduino</category><category>router</category><category>faq</category><category>fido</category><category>gentoo</category><category>bash</category><category>fediverse</category><category>hate</category><category>office</category><title>Заметки дядюшки Раджи</title><description>Всякая всячина, которую дядюшка Раджа находит в интернете и хочет поделиться с читателями.</description><link>https://blog.radjah.ru/</link><managingEditor>noreply@blogger.com (Раджа)</managingEditor><generator>Blogger</generator><openSearch:totalResults>292</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-3854473895096584354</guid><pubDate>Mon, 15 Jan 2024 12:38:00 +0000</pubDate><atom:updated>2024-01-15T15:38:39.991+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">other</category><title>С новым 2024 годом!</title><description>&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvWM2SREcwObmK8_l52y7Mj9_xt7DQSUNZ1xX_NgAPRo8GEYtMTp8Tg-DuJejXBI-ruAztOiGbnpTSBrV2bC7F_qie0_aREv9Clt1e0uj2ADEDCxn_gONU5c1cdck9GVW_RVf5NbbjtQ4nqKsbKfBGyup2HMsOO01wEC_PnAjhZfYG8UmbrvE2-n0wFA8/s550/f1119ca21823633c4abf9848994558a1.png&quot; width=&quot;550&quot; /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Вот и 2024 наступил. Надо по этому поводу что-то написать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Хотел сделать пост числа 29-30, но 22 декабря был отправлен в командировку и домой вернулся только 6 января, так что делаю поздравление уже в наступившем году.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Странный был год. С одной стороны &lt;i&gt;некоторые&lt;/i&gt; события всё ещё происходят, а с другой жизнь продолжается своим чередом. За прошедший год получилось обновить компьютер. С Intel перешёл на AMD (Ryzen 9 7900X), видеокарту взял RTX3070. Надеюсь, что ещё лет на 5 хватит без серьёзных вложений. Старый компьютер умудрился сломать чисткой. В сервисе говорят, что будут менять материнскую плату. Ну будет два рабочих чемодана.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сам год прошёл как-то мимо. Что-то интересное, что заслуживало фиксации в памяти и блоге, было связано только с переездом со старого компьютера на новый. В остальном только разбирался с Zabbix на Raspberry Pi 4. Благо, что после третьей версии платы никаких сложностей в его настройке у меня не было. Больше проблем было с добавлением новых устройств, но всё решалось внимательным чтением документации.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Всех с наступившим 2024 годом и Рождеством! Желаю счастья, здоровья и удачи!&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;С новым годом!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;a href=&quot;https://korokke13.lofter.com/post/4c4748d5_2bae08c54&quot; target=&quot;_blank&quot;&gt;Оригинал изображения.&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2024/01/2024.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvWM2SREcwObmK8_l52y7Mj9_xt7DQSUNZ1xX_NgAPRo8GEYtMTp8Tg-DuJejXBI-ruAztOiGbnpTSBrV2bC7F_qie0_aREv9Clt1e0uj2ADEDCxn_gONU5c1cdck9GVW_RVf5NbbjtQ4nqKsbKfBGyup2HMsOO01wEC_PnAjhZfYG8UmbrvE2-n0wFA8/s72-c/f1119ca21823633c4abf9848994558a1.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-1419611029488747377</guid><pubDate>Wed, 18 Oct 2023 15:20:00 +0000</pubDate><atom:updated>2023-10-18T18:20:44.301+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>EA (ex Origin): установка игр без повторной загрузки.</title><description>&lt;img border=&quot;0&quot; data-original-height=&quot;674&quot; data-original-width=&quot;3840&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjflpfE11FGC_fnV8qZcxD4bZbrAnoNitmpxhJME24RwToy6RnROmnAhw4Q8tFpDRYoQpg_LayiFkudXuifJoI3oAgbRpCcDan-QswA2gmp7yE1EzzhUYNa9oCvMNuduoJa5cfzemwnht3npqijcAk0qGIj9rAqEbTpbxtmFg1Y4XoEarFk8zkHlZAeaGA/s550/Electronic_Arts_logo_PNG1.png&quot; /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Раньше этот сервис назывался Origin, теперь он зовётся просто EA. Игры тут тоже есть, их не особо много, но заново качать их тоже не хочется. С этим приложением восстановление игр происходит несколько проще, чем в Epic Games Launcher, но всё так же надо устанавливать каждую игру отдельно.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для восстановления имеющихся игр понадобится каталог с этими играми, который уже перенесён в место на диске, откуда они будут запускаться.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В приложении нужно из библиотеки выбрать игру, которую надо восстановить, и на её странице нажать кнопку &quot;Загрузить&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;432&quot; data-original-width=&quot;656&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1qN8WjsdGN7_nECVyidzCqHlOmaCSgNPgy5YzSahwc3IqCMdTZTycjbYKbYJ1D8XYY1KWa0KtavO9Ri6rHpuVxg7L_paiEiTiPYJg5SJpBXIp0EYsV_KtNfdDf7KOTcKU9UpF-U5AdFGr5KE6UP1k_GsjuuXAt-bk4_tjMEtwdFv-lbdM0AyqyiLGhEw/s500/clipboard3.png&quot; width=&quot;550&quot; /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Указать каталог с игрой и нажать кнопку &quot;Далее&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;424&quot; data-original-width=&quot;574&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiixePozXKWGIvggtMLdkAEvb2Z1xXUiZd67HKcxKzCNzZfHqT6OZEydu7R6F5RSt5yhwSaOjQq652KssJ5pRzuQUGv-Fku0cIARLJghPu6ooNfM8ov0iVM0Q32yAU-jeR17xXjvvj_xuZrLB6yknmd9_2daOq4ImDbax2JSPPfwour5eMB9gJY7oezeFQ/s550/clipboard2.png&quot; width=&quot;550&quot; /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Дальше программа всё сделает сама.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;У меня таким образом получилось восстановить большинство игр, но некоторые бонусы того же&amp;nbsp;Mass Effect пришлось качать заново.&lt;/div&gt;</description><link>https://blog.radjah.ru/2023/10/ea-ex-origin.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjflpfE11FGC_fnV8qZcxD4bZbrAnoNitmpxhJME24RwToy6RnROmnAhw4Q8tFpDRYoQpg_LayiFkudXuifJoI3oAgbRpCcDan-QswA2gmp7yE1EzzhUYNa9oCvMNuduoJa5cfzemwnht3npqijcAk0qGIj9rAqEbTpbxtmFg1Y4XoEarFk8zkHlZAeaGA/s72-c/Electronic_Arts_logo_PNG1.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-3665365940431042324</guid><pubDate>Wed, 18 Oct 2023 13:53:00 +0000</pubDate><atom:updated>2023-10-18T17:16:06.927+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">game</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Epic Games Launcher: установка игр без повторной загрузки.</title><description>&lt;img border=&quot;0&quot; data-original-height=&quot;1030&quot; data-original-width=&quot;2880&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuYuYpPD-H1HVZOwg5T2cFPG0_0qGdzhS147LmA8zHurGHKYRK6zFD5V63W-CspgdO002Kx5NiOBaK5YnM8QoVGmLtWBS7k9Cabmd3yRqGaZGGfopQN0bPAGRnFCEaEizgheFaW0CAEl3hZqQRgAL3_4bo8Ht24BvbViysaIQjVz5Lvkz9rBdVyjA7aqM/w550/EGS-Logotype-2023-Horizontal-Black.png&quot; width=&quot;550&quot; /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;После переустановки системы или установки системы на новый компьютер хочется вернуть все игры без повторного скачивания гигабайтов из интернета. При использование Steam или GOG Galaxy подобное делается добавлением уже существующего каталога с играми средствами программы. в&amp;nbsp;Epic Games Launcher (EGL) нечто подобное тоже есть, но делается немного не очевидным способом.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Итак, исходные условия такие:&lt;/div&gt;
&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;Установлен клиент Epic Games Store;&lt;/li&gt;
  &lt;li&gt;Есть каталог с уже скаченными играми (остались от прошлой системы, например);&lt;/li&gt;
  &lt;li&gt;Есть желание поиграть в эти игры максимально быстро;&lt;/li&gt;&lt;li&gt;Нет желания качать всё заново.&lt;/li&gt;
 &lt;/ul&gt;&lt;/div&gt;

&lt;div&gt;Фронт работы задан, можно приступать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;Для примера возьму игру Overcooked. У меня все игры из EGL установлены в каталог &quot;&lt;i&gt;G:\Epic Games&lt;/i&gt;&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Хотя каталог с игрой есть, но&amp;nbsp;EGL про него ничего не знает.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;571&quot; data-original-width=&quot;552&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7j9xASocXTEKVRZbuqVcuk1Ls32Ma9gEAi-SYLpVy_T-BkoDPaFNtSaYfs-xC9ZTq1EYI-IrSlG5jNJg8BZCv6hSLovAt0qrV_2tLIJoZHpyxveogzDYzxSNhaSaWCdW8vTzdtKquIqS-EA-DXB0-_Ucn9uZbAJB-ZcqRfAXX-oHgovemkvWhBlVcO_0/s0/clipboard.png&quot; /&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Чтобы игра снова стала доступна, её необходимо установить в каталог &quot;&lt;i&gt;G:\Epic Games&lt;/i&gt;&quot;, в котором расположен каталог игры.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;485&quot; data-original-width=&quot;667&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjclkHwWS74eIG5voKOmdVQ3vYaLauNEAKfZzW1HSLWpDP-nK6g7QMkAr4xqiEyeJ49m3bx-GkfCE8XgAayiijByAg_VO-AcFtjcNAUaa14YnBc0FgtopL9bfwxHTOW9vo3NWiXAVmuk4WJ565SrZHCP5rKwgK5jKuIW71q0HIk5Efwfv1i9a9TOLKzv7Y/s550/clipboard2.png&quot; /&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;Клиент EGL быстро проверит файлы, докачает, если что-то было повреждено, и отобразит игру в списке в качестве установленной.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если же по какой-то причине клиент не захочет ставить игру в указанный каталог, то из каталога игры необходимо удалить каталог &quot;&lt;i&gt;.egstore&lt;/i&gt;&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;641&quot; data-original-width=&quot;488&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb4dBZgsBC4LvHXc4px7WaT1dZ9b9i30UGagXXD8Z8pxmf-XcFlS6qDGGclT4zTS-270949GVQNDMU6xGqA8URfRm16TFvlgI2B9dUr8_w2gxxYlAjiztD5xmxc1jpYVzt-qUVMYpmAGZofqOqo3ADzt6J96dHd1vOuLCXN9nurAIj7q7Co1POcM_pprs/s0/clipboard3.png&quot; /&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;У данной игры есть синхронизация сохранений, но если у восстанавливаемой игры такой опции нет, то их тоже придётся переносить руками, поэтому не надо торопиться форматировать диск.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Примерно таким же способом можно переносить игры между дисками на компьютере.&lt;/div&gt;&lt;div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;Создать каталог для игр на другом диске;&lt;/li&gt;
  &lt;li&gt;Скопировать каталог с переносимой игрой в созданный каталог;&lt;/li&gt;
  &lt;li&gt;Удалить игру средствами EGL;&lt;/li&gt;&lt;li&gt;Установить игру, указав каталог из первого пункта.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2023/10/epic-games-launcher.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuYuYpPD-H1HVZOwg5T2cFPG0_0qGdzhS147LmA8zHurGHKYRK6zFD5V63W-CspgdO002Kx5NiOBaK5YnM8QoVGmLtWBS7k9Cabmd3yRqGaZGGfopQN0bPAGRnFCEaEizgheFaW0CAEl3hZqQRgAL3_4bo8Ht24BvbViysaIQjVz5Lvkz9rBdVyjA7aqM/s72-w550-c/EGS-Logotype-2023-Horizontal-Black.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-2755015831994852109</guid><pubDate>Wed, 18 Oct 2023 09:24:00 +0000</pubDate><atom:updated>2023-11-10T14:39:38.530+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">nix</category><title>Распаковка initramfs с микрокодом в Debian.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTMOPfcHW6Smtinc5e1fw4h1PQiJD0BcPkbUXs3n1ybuJrKIXzTkTbHvTaLziJnJ_R76PEcx-aeTIOgnLmsFg8VYifT2eSn0GuyXbQb-MtUMt_zEz2pbBVBxXU8jPgHxBTXxT0PwA6saFU-E99BIMj6x_4NFJYuaetFmvDu9-VVnDcZL9UW_f68qy1tTU/w500/clipboard2.png&quot; width=&quot;500&quot; /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Вольный пересказ &lt;a href=&quot;https://wiki.debian.org/initramfs&quot; target=&quot;_blank&quot;&gt;инструкции&lt;/a&gt; из wiki Debian.&lt;/div&gt;&lt;div&gt;При установки пакета с обновлением микрокода для процессора распаковать образ&amp;nbsp;initramfs без дополнительных действий не получится, потому что в самом начале файла расположен образ с микрокодом, а хвост с остальным образом упаковщик видеть не желает.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если не брать в расчёт другие форматы&amp;nbsp;initramfs, а ограничиться только &quot;ASCII cpio archive&quot;, то для распаковки образа надо выполнить следующие действия:&lt;/div&gt;&lt;div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Определить начало основного образа;&lt;/li&gt;&lt;li&gt;Сохранить основной образ в отдельный файл;&lt;/li&gt;&lt;li&gt;Распаковать полученный файл.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Для определения начала используется программа &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;cpio&lt;/span&gt;&quot; из одноименного пакета. У неё есть ключ &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;-t&lt;/span&gt;&quot; для отображения списка файлов в образе. Сам файл надо подавать на стандартный ввод. Делается всё примерно так:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ cpio -t &amp;lt; /boot/initrd.img-6.1.0-13-amd64
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/.enuineIntel.align.0123456789abc
kernel/x86/microcode/GenuineIntel.bin
14064 блока&lt;/pre&gt;
&lt;div&gt;Видно, что программа вывела содержимое только куска файла с обновлением микрокода и так же показала размер этого куска в блоках по 512 байт.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Используя это значение, можно сохранить основной образ в отдельный файл с помощью программы &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;dd&lt;/span&gt;&quot;:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;# dd if=/boot/initrd.img-6.1.0-13-amd64 of=initrd.img bs=512 skip=14064
63690+1 records in
63690+1 records out
32609563 bytes (33 MB, 31 MiB) copied, 1,17182 s, 27,8 MB/s&lt;/pre&gt;
&lt;div&gt;Теперь в файле &quot;&lt;i&gt;initrd.img&lt;/i&gt;&quot; записан образ&amp;nbsp;initramfs, который нужен, но он скорее всего сжат. Сжатые образы программа &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;cpio&lt;/span&gt;&quot; не понимает. Для определения компрессора можно использовать программу &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;file&lt;/span&gt;&quot;. Если компрессор умеет распаковывать сжатые данные в стандартный вывод, то даже не понадобится&amp;nbsp; использовать временный файл.&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ file initrd.img
initrd.img: Zstandard compressed data (v0.8+), Dictionary ID: None

# список файлов
$ zstdcat initrd.img | cpio -t
.
bin
conf
conf/arch.conf
conf/conf.d
conf/conf.d/compress
conf/conf.d/resume
conf/conf.d/zz-resume-auto
conf/initramfs.conf
conf/modules
...

# извлечение
$ zstdcat initrd.img | cpio -i
267227 блоков&lt;/pre&gt;
&lt;div&gt;Содержимое образа находится в текущем каталоге.&lt;/div&gt;</description><link>https://blog.radjah.ru/2023/10/initramfs-debian.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTMOPfcHW6Smtinc5e1fw4h1PQiJD0BcPkbUXs3n1ybuJrKIXzTkTbHvTaLziJnJ_R76PEcx-aeTIOgnLmsFg8VYifT2eSn0GuyXbQb-MtUMt_zEz2pbBVBxXU8jPgHxBTXxT0PwA6saFU-E99BIMj6x_4NFJYuaetFmvDu9-VVnDcZL9UW_f68qy1tTU/s72-w500-c/clipboard2.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-5320860990415628092</guid><pubDate>Sat, 15 Apr 2023 07:03:00 +0000</pubDate><atom:updated>2023-04-15T10:03:56.792+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">browser</category><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">Firefox</category><category domain="http://www.blogger.com/atom/ns#">soft</category><title>Расширения для управления вкладками в Mozilla Firefox.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQkZVsuc9knoFueuv-gBhQzyxp_ukQHwB7dMDXek47W_F3wdzd3IiCDjQPG9XDehStbS1dWy-7AMP4GhaBB1xfwOmM3zA6ywmnmrhL9amawFUtMJeeHLPk4gQzr39GIxVU8vLkQ6wlZYTYREWyACX3w5spcdy7GC81eFSjfE7a0jNHDKhSWKnP7rKR/s500/clipboard.png&quot; width=&quot;500&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Когда вкладок мало, то никаких дополнительных инструментов для управления ими особо и не нужно. Но когда открываешь кучу вкладок, чтобы посмотреть позже или не забыть, то начинаются сложности. Но и в том случае не так страшно открыть ненужное, как закрыть вкладку с чем-то нужным, а потом искать её в истории.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;У меня постоянно открыта куча вкладок, которая ещё при перезапуске браузера восстанавливается. (И все нужные, ага.) Чтобы как-то этой ордой управлять, я использую несколько расширений.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://addons.mozilla.org/ru/firefox/addon/tab-counter-webext/&quot; target=&quot;_blank&quot;&gt;Tab Counter.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Это расширение добавляет свою кнопку справа от вкладок, по нажатию на которую отображается количество открытых вкладок.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifaFQtjbc-YBng5XW_N2pScdganra1evoIz_VWoKBlexAftVrVaYEiteiaMdDExzUgQfhhEArjK6U73EiH13toZSkHC1QtOr3JJMZCu9pCYbQeJxhBRuA50a1MJnoPILd-bz4hwFOW4noxEE6TEuxFd9cQGrzohyeyyrY6q-4LKoZCV2hfrQnC1ssF/s0/clipboard2.png&quot; width=&quot;175&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Такая же информация отображается во всплывающей подсказке, если навести курсор мыши на кнопку.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://addons.mozilla.org/ru/firefox/addon/undoclosetabbutton/&quot; target=&quot;_blank&quot;&gt;Undo Close Tab.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Это расширение уже для управления вкладками. Оно ведёт учёт закрытых вкладок и позволяет их восстановить. Если просто щёлкнуть по кнопке, то будет восстановлена последняя закрытая вкладка. Если же щёлкнуть правкой кнопкой мыши, то отобразится меню со списком последних закрытых вкладок.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQkQH3F14JstWB4Kf2vmUqCpKAOGqLPla_ARto0_CgQjsw2I693RVYTFnVLigCzmiqwm4U9b8V2s9OE4ZN3UXfxkMzamYorOTU-QoV0ariI_lyhaW9_LPNeOJ9pX9WKTibXoAh8fCV01Ci3dIuDVSBrCjjVqxj13JwZonGMozi8rPV4YZiPWQlJMMH/s0/clipboard3.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Если вкладок было закрыто много, то есть ещё подменю с большим количеством. Количество запоминаемых вкладок настраивается.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSnKkMzHTu4eiVCXt_LwpZtxNQrnBvKajxkMhMf5wxUI56djWJVuffMpIeIKXPuXrmGhiDWSa6Mu9cXOdvaKK-xU_3TI--3gTLOuEjz5zxY3-dD_-iqh32vgQL0oUmfEl8xhV9n3-1eb5MKjOkVV1trXSyVCmkmSH_g1vvnvuwEytna-f4xfOyDkRx/s500/clipboard4.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Мне обычно хватает 5 последних в меню. В подменю заходить приходится достаточно редко.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://addons.mozilla.org/ru/firefox/addon/tab_search/&quot; target=&quot;_blank&quot;&gt;TabSearch.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Можно сказать, что это мой основной помощник в наведении порядка. Расширение позволяет производить поиск по заголовкам и адресам открытых вкладок.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1ZGAuQCIiGEuVWSRoKQEjWHCtL6KcnYc9BPiYK9AljHXWA4hPx8vRPiY-SN8pTn4596UGew-2DqiDyWCqTuoaLJXVCdFO-BPrgw0qmi8Sts3Yw6ztInJvisPTV5LNtJbV3b6T-PyMtVwjPAL_vXO4UVGjUhX_o3guMQWkresyGVJUV5yyhrKRRb4H/s0/clipboard5.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Вкладки можно не только найти, но и закрыть. Если навести курсор мыши на пункт из результатов поиска, то появится кнопка закрытия справа. Синий &quot;корешок&quot; при этом поменяет цвет на красный. Вкладка номинально будет закрыта, но до закрытия окна поиска её можно будет восстановить.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Расширение использует неточный поиск, что может сбить с толку, потому что в результатах появляются вкладки, которые не содержат искомую строку. Чтобы такого не было, надо в настройках расширения отключить &quot;fuzzy search&quot;. Для этого надо справа от поля поиска нажать кнопку в виде трёх точек и в открывшейся вкладке с настройками найти раздел &quot;Behavior&quot;, там и будет искомая настройка.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsWgMDBz4IjvxRp4Ctn4yCJjurv8wu32NDVyZSuojCUXXu1MWYjXXQEkSjkVGd2d2d7e-jt6AHh0NhObCrD-gwe2KjKPCWGYFSMobc9pXY150N1aPjIK0USWvTxTHppjxsPqo89rI5tB415U1VU1ZweQwsozK7_-yAfApVCkgy4gegR7OVTJJWffZV/s0/clipboard6.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Дизайн настроек оставляет желать лучшего, но всё необходимое там есть и настраивается.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://addons.mozilla.org/ru/firefox/addon/duplicate-tabs-closer/&quot; target=&quot;_blank&quot;&gt;Duplicate Tabs Closer.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Делает именно то, что вынесено в название, то есть ищет дублирующиеся вкладки, отображает количество найденных дубликатов и позволяет через всплывающее окно закрыть ненужные. Поиск производится по адресам вкладок. Сам поиск можно настроить прямо в окне расширения.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj67P4RRNuwTtzZApy1i696fmvPWdDv8e_GIkDJZa1ANV2oTmoQkOSGeZxWJVNcS8tCHGEB1zwnGrkL3gTVrRZg50ER12ToM55Q0GInOlfGTPHTEOVbGCA7giyBbHoCJ35QHTvSCcSzwmtpWciJM0mru2LS8pcnAI_a18wzmhvgb0XJS5wA2JI-jypy/s0/clipboard7.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Для теста я открыл 4 пустых вкладки, при этом расширение показало, что найдено 3 дубликата.&lt;/div&gt;</description><link>https://blog.radjah.ru/2023/04/mozilla-firefox.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQkZVsuc9knoFueuv-gBhQzyxp_ukQHwB7dMDXek47W_F3wdzd3IiCDjQPG9XDehStbS1dWy-7AMP4GhaBB1xfwOmM3zA6ywmnmrhL9amawFUtMJeeHLPk4gQzr39GIxVU8vLkQ6wlZYTYREWyACX3w5spcdy7GC81eFSjfE7a0jNHDKhSWKnP7rKR/s72-c/clipboard.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-4185556679770848062</guid><pubDate>Sat, 08 Apr 2023 07:52:00 +0000</pubDate><atom:updated>2023-04-08T10:52:42.912+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hard</category><category domain="http://www.blogger.com/atom/ns#">other</category><title>Купил усилитель Fiio BTR7.</title><description>&lt;img border=&quot;0&quot; data-original-height=&quot;750&quot; data-original-width=&quot;500&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3iw2bDC5usw3Rdq4Hw5ihv0O9yZF7tVRyKt9JPsDFTkv56S-r9NTFB3XNxHopqHYTOjtbc3G3iuHAkSUWwTCIRaTWGthjziXjSqbbxNu0Pyw3zyEhAT4UFv9J9VDRQlYw0OvSxN0P7VKtQzc_jN9KLULU6bB6Qn-TFpXETzH7-WX5UYGwWTyhCZBa/s500/BTR7_1000x750.jpg&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;После анонса очень хотелось попробовать новинку от &lt;a href=&quot;https://www.fiio.com/&quot; target=&quot;_blank&quot;&gt;FiiO&lt;/a&gt;. По заявлениям &lt;a href=&quot;https://www.fiio.com/btr7&quot; target=&quot;_blank&quot;&gt;BTR7&lt;/a&gt; - это усилитель BTR5 на стероидах и с цветным экраном. Я в технических деталях особо не разбираюсь, но по описанию в BTR7 стерео будет в любом выходе. В BTR5 для вывода стерео на порт minijack использовалось какое-то хитрое быстрое переключение каналов на одном усилителе. Короче, какая-то магия.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Итак, жабу я уговорил и заказал устройство. Коробка по размерам раза в 1,5 больше, чем у BTR5. Внутри само устройство, макулатура, кабель и чехол без клипсы. Производитель заявляет, что чехол из кожи, но по ощущениям кожа искусственная. С учётом дизайна устройства без скруглённых углов для повседневного использования чехол необходим. ни поцарапать такую прелесть очень не хочется.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Устройством я пользуюсь с начала октября 2022 года. За это время вышло 2 обновления прошивки, немного затёрся чехол, но само устройство на вид как новое. Чехлом без клипсы пользоваться неудобно. В холодное время года устройство можно положить во внутренний карман куртки, например. Куда девать его летом, я не представляю, потому что весит оно сравнительно много для ношения в кармане рубашки. Примерно в марте 2023 года в официальном магазине FiiO на AliExpress появился новый чехол с клипсой. Я его уже заказал.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Итак, что же мы имеем за примерно 13 тысяч рублей?&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;двухканальный усилитель в любом режиме;&lt;/li&gt;&lt;li&gt;порт 4,4 мм для балансного вывода звука;&lt;/li&gt;&lt;li&gt;цветной экран; &lt;/li&gt;&lt;li&gt;поддержку DSD до DSD256;&lt;/li&gt;&lt;li&gt;поддержку AptX HD, LDAC и пачки других кодеков для Bluetooth;&lt;/li&gt;&lt;li&gt;внешнюю звуковую карту с усилителем для наушников;&lt;/li&gt;&lt;li&gt;беспроводную зарядку; &lt;br /&gt;&lt;/li&gt;&lt;li&gt;переключатель режима зарядки на корпусе;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;гарнитуру для разговора по телефону.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Я буду сравнивать всё с BTR5, потому что есть продолжительный опыт его использования.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Чтобы переехать с BTR5 на BTR7, мне пришлось поменять кабель на наушниках и заказать пачку разных переходников, чтобы были. Разъём 4,4 мм ощущается как-то надёжнее, чем 2,5 мм.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Про экран ничего плохого сказать не могут. Он есть, он сравнительно большой, он показывает информацию о режиме работы устройства. Для меня главного его преимущество - это отображение сразу нескольких строк меню настроек. Из-за того, что вывод изображения не является приоритетной задачей устройства, изображение на экране прорисовывается около секунды.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Раз затронул экран, то расскажу про меню. На последней прошивке (1.88) всё меню занимает три экрана. Долгим нажатием кнопки включения производится вход в меню, в самом меню она выполняет функцию &quot;Назад&quot;, кнопка подтверждения служит для открытия выбранного пункта и сохранения выбранной настройки, качелька громкости используется для навигации.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В самом меню остались практически все пункты из BTR5:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Gain (Hi/Lo); &lt;/li&gt;&lt;li&gt;Фильтры;&lt;/li&gt;&lt;li&gt;Эквалайзер;&lt;/li&gt;&lt;li&gt;Car mode (включение при подаче питания и выключение при пропадании питания);&lt;/li&gt;&lt;li&gt;Режим USB Audio;&lt;/li&gt;&lt;li&gt;Яркость подсветки;&lt;/li&gt;&lt;li&gt;Язык;&lt;/li&gt;&lt;li&gt;Сброс настроек;&lt;/li&gt;&lt;li&gt;Версия.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&amp;nbsp;В BTR7 добавили следующее:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Список устройств (с версии 1.85);&lt;/li&gt;&lt;li&gt;Таймаут экрана;&lt;/li&gt;&lt;li&gt;Приоритет входов;&lt;/li&gt;&lt;li&gt;Техническая информация.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Да, теперь можно управлять подключением устройств просто из меню.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Приоритет входов отвечает за переключения источника звука при подключении кабеля. Если выставить настройку в положение &quot;UAC&quot;, то при подключении устройства в качестве внешней звуковой карты оно отключается от Bluetooth. Через меню &quot;Device List&quot; можно восстановить подключение, но звук всё равно будет браться из USB. Если выставить настройку в положение &quot;Bluetooth&quot;, то при воспроизведении музыки по USB звук есть до тех пор, пока не начнёт что-то играть по Bluetooth. Обратное переключение так же происходит автоматически. При одновременном воспроизведении приоритет отдаётся Bluetooth.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;По идее при использовании настройки &quot;UAC&quot; должен быть обратный порядок, но у меня просто отключался Bluetooth, а при ручном подключении звук шёл только из USB.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Переключатель режима зарядки был и в настройках BTR5, но в BTR7 его вынесли на корпус. Если его выключить, то устройство будет использовать свой аккумулятор для питания и не будет ничего потреблять из USB-порта. Мне подобный режим пока не пригодился ни разу.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В прошивке версии 2.3 для BTR5 сделали нечто похожее на переключатель. При подключении по USB устройство выводит запрос &quot;CHARGE OFF?&quot;. Если секунды три ничего не нажимать, то оно начнёт заряжаться от подключённого кабеля. Если же нажать любую кнопку, то зарядка происходить не будет. Интересно, что такое происходит даже при подключении зарядки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В обновлениях для BTR7 и программы управление FiiO Control появилась функция переключения кнопок включения экрана. Изначально экран включался любой кнопкой, при этом свою функцию кнопка выполняла только после повторного нажатия. То есть для увеличения громкости надо было нажать кнопку два раза. Теперь для включения можно назначить только кнопку питания, все остальные кнопки будут работать сразу, но без включения экрана.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Переделали механизм обновления прошивки. Если для BTR5 использовался режим прошивки DFU, в которых надо было переводить устройство особой комбинацией клавиш, то теперь используется FOTA. Программа FiiO Control проверяет наличие новой версии прошивки, если она есть, то загружает обновление на телефон и по воздуху отправляет его на устройство. Устройство само себя обновляет и перезагружается с новой прошивкой. Обновление можно так же скачать вручную и выбрать файл для отправки в приложении. Про обновление через кабель я информации не нашёл.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Недостатки у устройства по моему мнению тоже есть. Кроме на чехле из устройства убрали звук при включении и выключении. На ощупь перезагрузить устройство уже не получится.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2023/04/fiio-btr7.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3iw2bDC5usw3Rdq4Hw5ihv0O9yZF7tVRyKt9JPsDFTkv56S-r9NTFB3XNxHopqHYTOjtbc3G3iuHAkSUWwTCIRaTWGthjziXjSqbbxNu0Pyw3zyEhAT4UFv9J9VDRQlYw0OvSxN0P7VKtQzc_jN9KLULU6bB6Qn-TFpXETzH7-WX5UYGwWTyhCZBa/s72-c/BTR7_1000x750.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-2710258589516776916</guid><pubDate>Thu, 29 Dec 2022 21:06:00 +0000</pubDate><atom:updated>2022-12-30T00:06:42.165+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">other</category><title>С новым 2023 годом!</title><description>&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEbYDlKwKShPbxDxssbN-O-vFvnrK6DnH9-OxpjLT8Ztks7X9CK40Oi_Ys-2q7Ib8pdOHGNNCdoUCnmz4_gJGfn1NanwEaP5h97vQjj94fTTZOogMGmc19_4ioWVvFHoDT9IJ_EmYZaGeUpuEcS_-pmLqU5qBAOdwLwq8_PCvBA4PMXipm2lBA8y-A/s550/Clipboard01.jpg&quot; /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;2022 подходит к концу. Пришло время подвести какое-то итоги.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;По итогам этого года я оказался совсем ленивой задницей, потому что написал всего 6 постов. Можно назвать подобное творческим кризисом, но это не так. Я купил себе несколько железок, о которых хотел написать, но пока не написал, потому что не собрался с мыслями. &lt;i&gt;Некоторые&lt;/i&gt; события очень сильно выбили из колеи. Доступ к зарубежным площадкам и товарам фактически отрезан полностью. Через пересыльщиков получается неприлично дорого, поддержать какой-то проект на площадках для сбора средств не получится из-за полного блока платёжных систем.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Но я стараюсь не отчаиваться, потому что Aliexpress пока работает и исправно принимает карты &quot;МИР&quot;. Кое-что из железа всё ещё доступно для покупки, хоть и по заметно выросшим ценам. Будем жить, будем надеяться на светлое будущее и потихоньку бекапить интернет на носители.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;А ещё у меня лежит комплект PiKVM версии 3, который я надеюсь собрать и задействовать. Если получится, то попробую добыть и четвёртую версию, сборы на которую уже стартовали, а автор сказал, что и в свободной продаже появится.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Это был сложный и интересный год. Надеюсь, что наступающий будет хотя бы неинтересным, а то в интересное время жить как-то надоело уже.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Всем желаю здоровья, потому что со здоровьем остальное появится.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;С новым годом!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;a href=&quot;https://www.pixiv.net/artworks/103917930&quot; target=&quot;_blank&quot;&gt;Оригинал изображения.&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2022/12/2023.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEbYDlKwKShPbxDxssbN-O-vFvnrK6DnH9-OxpjLT8Ztks7X9CK40Oi_Ys-2q7Ib8pdOHGNNCdoUCnmz4_gJGfn1NanwEaP5h97vQjj94fTTZOogMGmc19_4ioWVvFHoDT9IJ_EmYZaGeUpuEcS_-pmLqU5qBAOdwLwq8_PCvBA4PMXipm2lBA8y-A/s72-c/Clipboard01.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-2690109783669440767</guid><pubDate>Sun, 02 Oct 2022 16:29:00 +0000</pubDate><atom:updated>2022-10-02T19:29:49.820+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">soft</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Воспроизведение DSD в foobar2000.</title><description>&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIP81T2xP3NxyX7Hz4cQmTa9D4EcrSPx3hP8uoxDqAvNFiMaAMK4HjBTYUwSFVVwAnI3C6iVKzn03QxB42yyvsXUdtN3wlLmNvqMqEuouC0CTd3sMX_LKrX9Oxdiu5vQHmQXMv7Y77KtwPL-j87-9ohLPC9VCOk8N_jKRm6HHFD460KKnLZktTezPJ/w400/dsdlogo.jpg&quot; /&gt;

&lt;/p&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;DSD - это такой формат передачи звука, который имеет разрядность всего в 1 бит и частоту до нескольких десятков мегагерц. Используется в Super AudioCD и совершенно не нужен обычному человеку.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Я купил себе несколько звуковых устройств, которые умеют подобный формат звука самостоятельно воспроизводить, и захотел разобраться, как же данные из файла передать на устройство без перекодирования в PCM. При этом очень хотелось это всё делать привычным проигрывателем.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;На данный момент моим любимым проигрывателем является &lt;a href=&quot;https://www.foobar2000.org/&quot; target=&quot;_blank&quot;&gt;foobar2000&lt;/a&gt;. Интерфейс у проигрывателя максимально настраиваемый, куча плагинов практически для всего. Вот с ним и буду разбираться. В интернете инструкции для его настройки есть, тут я собрал всё в кучу, чтобы самому потом не потеряться.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Звук в формате DSD можно передавать на устройство двумя разными способами:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Native DSD;&lt;/li&gt;&lt;li&gt;DSD over PCM (DoP) .&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;/div&gt;
&lt;div&gt;В первом случае поток данных передаётся на устройство как есть. Так можно передавать поток любой частоты, которую поддерживает устройство. Но для этого нужна поддержка ASIO в проигрывателе, и должны быть установлены соответствующие драйверы для устройства.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Во втором случае данные DSD упаковываются внутрь кадров PCM и в таком виде передаются на устройство. Устройство должно эти данные распознать и корректно воспроизвести. Но в этом случае даже для самого простого DSD64 нужна поддержка частоты дискретизации 176,4 кГц.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я рассмотрю оба варианта.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для foobar2000 нужно установить как минимум два плагина:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://www.foobar2000.org/components/view/foo_out_asio&quot; target=&quot;_blank&quot;&gt;foo_out_asio&lt;/a&gt; для воспроизведения звука через ASIO;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://sourceforge.net/projects/sacddecoder/files/foo_input_sacd/&quot; target=&quot;_blank&quot;&gt;foo_input_sacd&lt;/a&gt; для поддержки формата DSD.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;После установки обоих плагинов в настройках проигрывателя появятся новые пункты, а в списке выбора устройств вывода звука появятся названия с приставкой &quot;ASIO:&quot;:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq74oCrUbho_VEsDof5aL3IKOHEuphEEXGk8hBtnHBEwSnwiQ9tTfesyDzzkcUNZVpAFUQpPugR3Ldg2QGm849Sl3YMDtflNNnRCqKcCJF_BuYf0O4H3UBLid3cMhvL93hmFNZPxgdOhBsFtlYC9yAdY4KOP0oQNz7JYZYeYnrcmQDAWTjuehqygaM/s0/clipboard.png&quot; /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В этом списке представлены все установленные в системе интерфейсы ASIO. Из него надо выбрать тот, к которому относится подключённое устройство. Это надо сделать до выполнения других настроек из-за того, что плагин для SACD будет выполнять настройку только выбранного устройства. Если сначала выполнить настройку SACD, а потом поменять устройство вывода, то настройки будут сохранены для предыдущего устройства.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь открываем настройки SACD:&lt;/div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNx1IhuoPUfkt_dnrrVWUsPJBTE648uaef8FJXG9xB1Ych3iIRoHOooaxCFs9nZpvGeqqqcmwq9pRpKklHD0gT9DQo1BGe9DIWRSuWPO-T0fidLPmijoir2j5uWUcBAaZuUPzrQVR0Rtl72ujB2zhR2LhpEHQvP_L5f3GFsmXPtmxM164XRkUo0PFx/s600/screenshot%202022-10-02%20001.png&quot; /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Тут надо только выбрать пункт &quot;DSD&quot; и списке &quot;Type&quot; и нажать кнопку &quot;OK&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь проигрыватель foobar2000 будет воспроизводить ISO-образы SACD и отдельные файлы со звуком в формате DSD в режиме DoP. Разницу между пунктами &quot;DSD&quot; и &quot;DSD+PCM&quot; я заметил только в том, что при выборе второго пункта начинает работать анализатор спектра. Усилитель наушников FiiO BTR5 в любом случае отображал, что воспроизводит DSD64.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;При попытке проиграть DSD256 я получал сообщение, что проигрыватель не может установить нужную частоту дискретизации 705,6 кГц, потому что для устройства предел 384 кГц.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Вот с этим я воевал довольно долго, пока не нашёл, что для плагина &quot;foo_out_asio&quot;, есть альтернатива с названием &lt;a href=&quot;https://sourceforge.net/projects/sacddecoder/files/foo_out_asio%2Bdsd/&quot; target=&quot;_blank&quot;&gt;foo_out_asio+dsd&lt;/a&gt;. В этом плагине как раз реализована функциональность воспроизведения DSD потоком без обёртки его в PCM.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После установки этого плагина в списке устройств вывода появятся ещё пункты с приставкой &quot;ASIO+DSD:&quot;. После выбора нужного устройства опять же надо будет повторить настройку вывода SACD.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В случае &quot;foo_out_asio+dsd&quot; воспроизведение всегда выполняется в режиме Native DSD, а при выборе &quot;DSD+PCM&quot; ещё и анализатор спектра работать начинает.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Все опыты я проводил на версии проигрывателя foobar2000 1.6.*. Сейчас доступна версия 2.0, но на 64-разрядной версии инструкция точно работать не будет, потому что все плагины есть только в виде 32-битных версий. Возможно, что уже есть сборки плагинов для новой версии, но я это не проверял.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2022/10/dsd-foobar2000.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIP81T2xP3NxyX7Hz4cQmTa9D4EcrSPx3hP8uoxDqAvNFiMaAMK4HjBTYUwSFVVwAnI3C6iVKzn03QxB42yyvsXUdtN3wlLmNvqMqEuouC0CTd3sMX_LKrX9Oxdiu5vQHmQXMv7Y77KtwPL-j87-9ohLPC9VCOk8N_jKRm6HHFD460KKnLZktTezPJ/s72-w400-c/dsdlogo.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-886795804131324725</guid><pubDate>Mon, 02 May 2022 10:12:00 +0000</pubDate><atom:updated>2022-05-02T13:12:59.175+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">browser</category><category domain="http://www.blogger.com/atom/ns#">internet</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">soft</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Получение refresh_token для сайта pixiv.net через командную строку.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCdtSkM3yhd2OMJEi0o4ABfRhDitihlmellnxhsosdMd6dYvfegOfXbrIbVrlytw6LcFkxjEgCruFGZGA-rJrWgxJis0YZhyJEF_q7noUERc53gnKFs4kO580NLE14BoGw6nF3F5dsNBeB5xoQqqeT93sqVuTNhgS_5kzJXGCQbENNiqHw8hbi6uw7/s550/1200px-Pixiv_logo.svg%5B1%5D.png&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Когда-то давно я делал &lt;a href=&quot;https://github.com/radjah/booru-rippers&quot; target=&quot;_blank&quot;&gt;скрипт&lt;/a&gt; для загрузки изображений с сайта &lt;a href=&quot;https://www.pixiv.net&quot; target=&quot;_blank&quot;&gt;pixiv.net&lt;/a&gt;. Он с некоторыми ограничениям до сих пор работает. Сейчас авторизоваться на сайте автоматически не получается из-за изменений на самом сайте. Делать это нужно исключительно через браузер, но в интернете нашлись люди, которые и эту процедуру частично автоматизировали.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Для повторения подобного понадобится следующее:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Интерпретатор &lt;a href=&quot;https://www.python.org/downloads/&quot; target=&quot;_blank&quot;&gt;Python&lt;/a&gt;;&lt;/li&gt;&lt;li&gt;Браузер &lt;a href=&quot;https://www.google.com/intl/ru_ru/chrome/&quot; target=&quot;_blank&quot;&gt;Google Chrome&lt;/a&gt;;&lt;/li&gt;&lt;li&gt;Программа &lt;a href=&quot;https://chromedriver.chromium.org/downloads&quot; target=&quot;_blank&quot;&gt;ChromeDriver&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Интерпретатор я установил по пути &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;C:\Pyhton310&lt;/span&gt;&quot; и во время установки выбрал, чтобы он добавил себя в PATH. Это нужно, чтобы не прописывать полный путь далее.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Далее необходимо установить последнюю версию браузера Google Chrome. С этим проблем обычно не возникает.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь надо посмотреть точную версию браузера. Она понадобится позднее.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;img border=&quot;0&quot; data-original-height=&quot;280&quot; data-original-width=&quot;710&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDfzP7nQoALhZa04OUrnLptwdk0M2HSjBK44U2GG3DYET0BbK8vEJxzBC9sMeSHy3bHj6AZWNAiRLlWHokf-0VAs1cktNJAded8qQejlNTcK3U4p-x4eshJiED9jtZMXFdSHJyoMWTyFHfefjIGTtfDtC56wTOpQ3nbv0hvA1d8zhEq_p7aHsvr-hp/w640/screenshot%202022-05-02%20001.png&quot; width=&quot;640&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Далее необходимо загрузить правильную версию программы ChromeDriver. Для этого надо перейти по указанной выше ссылке и скачать архив с именем &quot;&lt;i&gt;chromedriver_win32.zip&lt;/i&gt;&quot;. Если же открылся каталог не с той версией браузера, которая установлена в системе, то надо перейти по ссылке &lt;a href=&quot;https://chromedriver.storage.googleapis.com/index.html&quot; target=&quot;_blank&quot;&gt;https://chromedriver.storage.googleapis.com/index.html&lt;/a&gt; и выбрать нужную версию. Если версии совпадать не будут, то ничего не получится.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Полученный архив можно распаковать в каталог с установленным интерпретатором, в каталог профиля или в любой другой каталог, который прописан в переменной окружения &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;PATH&lt;/span&gt;&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь надо поставить программу на языке Python, которая и будет делать всю магию. Для этого надо выполнить следующую команду:&lt;/div&gt;

&lt;pre class=&quot;brush: bash&quot;&gt;pip install gppt&lt;/pre&gt;

&lt;div&gt;Будет установлена программа &lt;a href=&quot;https://github.com/eggplants/get-pixivpy-token&quot; target=&quot;_blank&quot;&gt;get-pixivpy-token&lt;/a&gt;. Если никаких ошибок не возникло, то можно переходить к следующему шагу.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В окне командной строки надо ввести следующую команду:&lt;/div&gt;

&lt;pre class=&quot;brush: bash&quot;&gt;gppt login&lt;/pre&gt;

&lt;div&gt;Если всё сделано правильно, то откроется окно браузера с формой для ввода логина и пароля от сайта с указанием, что браузер управляется сторонним ПО:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN0jIrnsL1_cYsu34bLrFBgNaVeRxTtyn-wFBm6Go1XnxreKx6jv0PoercSZ6j2MbyKuzD5VppZlIHz-oC54emeehUdx3DKeFfVdZ2_IkinfC8Bk7bRkr6YfvwdKa4RBsvM3BbWULnrQ0OhHnVsn78fPPDCqPKsq2sXkPh-svOkfHDXUUlrzt4emNd/s16000/screenshot%202022-05-02%20002.png&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;В этой форме нужно ввести свой логин и пароль. После отправки формы окно браузера автоматически закроется, а в командной строке появится значение искомого токена, которое уже можно будет использовать в скриптах.&lt;/div&gt;

&lt;pre class=&quot;brush: bash&quot;&gt;[!]: Chrome browser will be launched. Please login.

DevTools listening on ws://127.0.0.1:57786/devtools/browser/****

[+]: Success!
access_token: ****
refresh_token: ****
expires_in: 3600&lt;/pre&gt;</description><link>https://blog.radjah.ru/2022/05/refreshtoken-pixivnet.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCdtSkM3yhd2OMJEi0o4ABfRhDitihlmellnxhsosdMd6dYvfegOfXbrIbVrlytw6LcFkxjEgCruFGZGA-rJrWgxJis0YZhyJEF_q7noUERc53gnKFs4kO580NLE14BoGw6nF3F5dsNBeB5xoQqqeT93sqVuTNhgS_5kzJXGCQbENNiqHw8hbi6uw7/s72-c/1200px-Pixiv_logo.svg%5B1%5D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-3942668323084407060</guid><pubDate>Mon, 02 May 2022 09:22:00 +0000</pubDate><atom:updated>2022-05-02T12:22:14.039+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">internet</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">nix</category><title>Настройки прокси для репозиториев в Debian.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1Qg8KiKBiriDg1hG679o6W8de_WO7spm1kvbDlNR1UA8DLHmfMT2xqXJ9WTihgj-3lrue8GA-Noei8DcdCNEKFNphOYOKLwx3M9kSXV27eaPeGjnusTpWJqecqo62ZgAIcghhm72EY0trSnwoM2RV87tFP-ABagHXugiGJwHzc6FOh0vt2E3GPp4Q/s550/proxy_graphic-01%5B1%5D.png&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Из-за &lt;i&gt;некоторых&lt;/i&gt; обстоятельств некоторые репозитории оказались для меня недоступны, и пришлось искать способы восстановления доступа к ним. Описанный способ вполне штатный, но в нужный момент его вспомнить не получается.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Это больше заметка для себя, чем инструкция.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Соединение через прокси-сервер можно указать глобально для всех репозиториев или для конкретного адреса. Опишу оба варианта.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Настройки очень желательно прописывать в отдельном файле, чтобы потом долго не искать концы, когда что-то перестанет работать. У меня подобных настроек мало, поэтому я использую один общий файл &quot;&lt;i&gt;/etc/apt/apt.conf.d/99custom&lt;/i&gt;&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для указания настроек прокси-сервера для всех соединений надо прописать примерно такую конструкцию:&lt;/div&gt;

&lt;pre class=&quot;brush: bash&quot;&gt;Acquire::http::Proxy &quot;http://логин:пароль@адрес:порт/&quot;;
Acquire::https::Proxy &quot;http://логин:пароль@адрес:порт/&quot;;&lt;/pre&gt;

&lt;div&gt;Если прокси-сервер не требует авторизации, то логин и пароль указывать не надо. В данном случае прокси-сервер будет использоваться для репозиториев, адреса которых начинаются на &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;http&lt;/span&gt;&quot; и &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;https&lt;/span&gt;&quot;, если верить руководству.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если нужно прописать настройку только для конкретного репозитория, то к параметру надо добавить его адрес:&lt;/div&gt;

&lt;pre class=&quot;brush: bash&quot;&gt;Acquire::http::Proxy::download.webmin.com &quot;http://логин:пароль@адрес:порт/&quot;;&lt;/pre&gt;

&lt;div&gt;По личным наблюдениям заметил, что подобная настройка работает и для репозиториев с &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;https&lt;/span&gt;&quot; в адресе.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2022/05/debian.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1Qg8KiKBiriDg1hG679o6W8de_WO7spm1kvbDlNR1UA8DLHmfMT2xqXJ9WTihgj-3lrue8GA-Noei8DcdCNEKFNphOYOKLwx3M9kSXV27eaPeGjnusTpWJqecqo62ZgAIcghhm72EY0trSnwoM2RV87tFP-ABagHXugiGJwHzc6FOh0vt2E3GPp4Q/s72-c/proxy_graphic-01%5B1%5D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-9084439075905697332</guid><pubDate>Sun, 03 Apr 2022 16:16:00 +0000</pubDate><atom:updated>2022-04-03T19:16:56.764+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hard</category><category domain="http://www.blogger.com/atom/ns#">other</category><title>Купил наушники HiBy WH2.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkUf_dckBZyNnV5TtTMFkFKhhVYwvb17KX7uHi5zGHHCQO2bNcStqiwz4K7ICbNK8wyYcX4XdiOFJ8V8KBkV7HbjL8v1VaA3ikqiy6QJm_RDLTupgFVZ-6WUHYrDsurAzOXz9SXwL1n-cyprOitu97gIIQi2VScDEF8m0IPfOnA44JRR1VGdFG-eA1/s550/hiby-wh2-d18dd182d0be-d0b4d0bed181d182d183d0bfd0bdd18bd0b5-d0bfd0be-d0bdd0b0d181d182d0bed18fd189d0b5d0bcd183-d0b1d0b5d181d0bfd180d0bed0b2%5B1%5D.jpg&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Вот и до необычных наушников добрался &lt;a href=&quot;https://store.hiby.com/products/hiby-wh2&quot; target=&quot;_blank&quot;&gt;HiBy WH2&lt;/a&gt;. Вроде бы обычные TWS-наушники, но они одновременно TWS и поддерживают кодек LDAC. По заявлению производителя это первые TWS-наушники с поддержкой LDAC. Даже был сбор денег был на &lt;a href=&quot;https://www.kickstarter.com/projects/844915658/hiby-wh2-pioneering-true-wireless-earphones-with-ldac&quot; target=&quot;_blank&quot;&gt;Kickstarter&lt;/a&gt;. У меня модель с одним динамиком. В продаже есть ещё модель с двумя арматурными излучателями.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Заказывал их непосредственна на сайте производителя, потому что там дешевле, чем на Aliexpress. Коробка приехала довольно большая, но дутая, как выяснилось в процессе распаковки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сверху лежали сами наушники в кейсе, под ними маленький конвертик с гарантией и инструкцией, а под всем этим большая коробка с проводом для зарядки (type C) и сменные амбушюры. Эта коробка и занимала основной объем, хотя содержимое её можно было уложить в коробку раза в 4 меньше по высоте. Но это уже мои придирки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Наушники приехали практически разряженные. Я подключил кейс к зарядке и стал ждать, когда всем этим станет возможно пользоваться, но наушники включаться так и не захотели.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Где-то через час я заметил, что контакты в кейсе закрыты прозрачной защитной плёнкой. После снятия плёнки всё сразу заработало, но опять же не без проблем.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Чтобы начать пользоваться наушниками, их надо сбросить. Для это их нужно поместить в кейс и три раза тапнуть пальцем каждый наушник. Если всё сделано правильно, то индикатор на наушнике начнёт быстро мигать.После этого надо вынуть оба наушника из кейса и подождать, когда они найдут друг друга. Если индикаторы на них перестали быстро мигать, то они друг друга нашли. Теперь надо три раза тапнуть по любому из наушников, чтобы они перешли в режим сопряжения. И вот теперь их можно искать в эфире и подключать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если надо подключить наушники к другому устройству, то достаточно их отключить от текущего. В режим сопряжения они перейдут самостоятельно. Текущий режим они озвучивают голосом.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Иногда бывает, что при последовательном вынимании наушников из кейса второй наушник не подключается. Если такое случилось, то надо его вернуть в кейс и снова достать. Триггером для включения является вынимание наушника из кейса, а не его открытие.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Амбушюры у них особенные с укороченным креплением. Я пробовал ставить обычные, но тогда наушники не влезают в кейс и смешно торчать из ушей. В комплекте к уже установленным есть ещё 4 пары разного разного размера.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для передачи звука наушники поддерживают следующие кодеки: SBC, AAC, LDAC. Написано, что поддерживают фирменный кодек UAT. Я пробовал подключать наушники к плееру HiBy R2 и к телефону с установленным плеером HiBy Music, но данный кодек не включался, хотя при подключении плеера HiBy R2 в качестве беспроводных наушников использовался именно кодек UAT.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;По звуку ничего не могу сказать, но есть ощущение, что не хватает басов в сравнении с KZ ZS10 PRO и Fiio BTR5. Может просто мощности не хватает наушникам.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;При разговоре по телефону звук вполне терпимый. По крайней мере собеседники не жаловались, что я тихо говорю. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Использовать наушники раздельно оказалось не особо удобно. Если убрать в кейс левый, то теряется возможно включать предыдущий трек в плеере, что не особо критично. Если убрать правый, то уже теряется возможность включать следующий трек, что уже критично при прослушивании музыки.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2022/04/hiby-wh2.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkUf_dckBZyNnV5TtTMFkFKhhVYwvb17KX7uHi5zGHHCQO2bNcStqiwz4K7ICbNK8wyYcX4XdiOFJ8V8KBkV7HbjL8v1VaA3ikqiy6QJm_RDLTupgFVZ-6WUHYrDsurAzOXz9SXwL1n-cyprOitu97gIIQi2VScDEF8m0IPfOnA44JRR1VGdFG-eA1/s72-c/hiby-wh2-d18dd182d0be-d0b4d0bed181d182d183d0bfd0bdd18bd0b5-d0bfd0be-d0bdd0b0d181d182d0bed18fd189d0b5d0bcd183-d0b1d0b5d181d0bfd180d0bed0b2%5B1%5D.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-6310782037655826053</guid><pubDate>Sun, 03 Apr 2022 15:17:00 +0000</pubDate><atom:updated>2022-04-03T18:17:02.392+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hard</category><category domain="http://www.blogger.com/atom/ns#">other</category><title>Купил Fiio BTA30 и BTA30 Pro.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJJhC1-_X2lzUbK6YfPvcJopfrwcY3UI4mjR0kU3SQT12hIP51iBGk7AzOnU_PZ6ojlVesruYanIM56S-5TniBAkq1c_e-Xwufgh1jckbFQ2eGAFduTgLDv51K0M6UPpOpDbKQ56A9qWRMZrT9qpFq_6AJ27AfWuxQmbE2gVO1Ymy4DCl8AgQysz2J/s550/fiio-bta30-pro-review%5B1%5D.jpg&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;С разницей в несколько месяцев купил себе сначала модель &lt;a href=&quot;https://www.fiio.com/bta30&quot; target=&quot;_blank&quot;&gt;Fiio BTA30&lt;/a&gt;, а потом &lt;a href=&quot;https://www.fiio.com/bta30pro&quot; target=&quot;_blank&quot;&gt;BTA30 Pro&lt;/a&gt;. По функциональности они практически одинаковые, различаются используемыми компонентами в схеме и входными характеристиками звука.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Первой была куплена коробочка BTA30. Рассчитывал я сделать из неё нечто, что будет принимать на Bluetooth звук в формате LDAC и отдавать его по проводам в аудиосистему или в колонки с усилителем.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сейчас эта коробочка у меня так и работает. Я к ней подключаю смартфон, а дальше она уже по оптическому кабелю передаёт звук в ресивер.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Немного о самом устройстве. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Интерфейсы:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;USB - питание и вход звука;&lt;/li&gt;&lt;li&gt;COAX - вход/выход для цифрового звука по коаксиальному кабелю (RCA);&lt;/li&gt;&lt;li&gt;OPT IN - вход для цифрового звука по оптическому кабелю;&lt;/li&gt;&lt;li&gt;OPT OUT - выход для цифрового звука по оптическому кабелю;&lt;/li&gt;&lt;li&gt;L/R - выход для аналогового звука.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;На лицевой панели расположены две кнопки управления, переключатель режимов и ручка регулировки громкости. Громкость регулируется программно, если в какой-то режиме изменение громкости не предусмотрено, то ручка ничего изменять не будет.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Устройство умеет передавать звук вообще во все стороны.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В режиме приёмника звук принимается через Bluetooth и отдаётся на все остальные выходы, кроме USB.&lt;/div&gt;&lt;div&gt;В режиме передатчика звук принимается со входов в порядке USB&amp;gt;COAX IN&amp;gt;OPT IN и передаётся по Bluetooth на наушники или любое другое воспроизводящее устройство.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Специально задержки между звуком и видео не замерял, но ощутимой разницы я не заметил.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В руководстве написано, что на передачу звука можно подключить сразу два устройства, но я такую конфигурацию не пробовал делать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для беспроводной передачи звука оба устройства поддерживают все основные кодеки: SBC, AAC, AptX, AptX LL, Aptx HD и LDAC. Из-за последнего и покупал.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Основное различие версий кроется в используемом чипе для интерфейса USB. В BTA30 стоит чип AK4490, которые позволяет пропихнуть через себя звук максимум 48 кГц/16 бит. А в BTA30 Pro уже стоит XMOS XU208 и отдельный ЦАП ES9038Q2M. Сюда уже можно подавать звук до 384 кГц/32 бит, DSD до DSD256, так же есть поддержка ASIO. Это коробочку уже можно и нужно подключать к компьютеру в качестве внешней звуковой карты или к другому устройству, которое умеет выводить звук через USB Audio 2.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Я пробовал подключать к плееру HiBy R2 и к телефону. Получалась довольно странная конфигурация, но она работала. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Картину портит факт, что в системе будет фактически только одно звуковое устройство. Как-то управлять выходами через USB не получится, то есть передать в оптический выход, например, битовый поток AC3 не выйдет.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После покупки второго устройства пробовал разные комбинации их подключений:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;передача звука по Bluetooth с одного на другое с выводом на ресивер и переключением кодеков;&lt;/li&gt;&lt;li&gt;передача звука через оптический кабель;&lt;/li&gt;&lt;li&gt;передача звука через коаксиальный кабель.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Пробовал подключать пассивные колонки к выходу, но ничего хорошего из этого не вышло, потому что в самом устройстве никакого усилителя нет. Получался какой-то шёпот с искажениями.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Не обошлось и без проблем с подключением. Если с первым устройством всё вроде бы было гладко, то Pro-версию переводить в режим сопряжения по инструкции у меня решительно не получалось. Устройство делало вид, что готово подключить к себе другое устройство для передачи звука, но ничего не происходило. Наушники так и были в режиме сопряжения, усилитель Fiio BTR5 показывал надпись, что ждёт подключения.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В инструкции было написано, что надо нажать правую кнопку и держать до тех пор, пока индикатор &quot;Status&quot; не начнёт мигать синим и красным цветом. Опытным путём я выяснил, что надо держать до тех пор, пока индикатор не перестанет так мигать двумя цветами, тогда устройство точно начнёт искать другие устройства в режиме сопряжения. Наушники у меня тут же подключились. Даже кодек LDAC включился автоматически.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2022/04/fiio-bta30-bta30-pro.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJJhC1-_X2lzUbK6YfPvcJopfrwcY3UI4mjR0kU3SQT12hIP51iBGk7AzOnU_PZ6ojlVesruYanIM56S-5TniBAkq1c_e-Xwufgh1jckbFQ2eGAFduTgLDv51K0M6UPpOpDbKQ56A9qWRMZrT9qpFq_6AJ27AfWuxQmbE2gVO1Ymy4DCl8AgQysz2J/s72-c/fiio-bta30-pro-review%5B1%5D.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-5169148234976528617</guid><pubDate>Sat, 12 Mar 2022 12:57:00 +0000</pubDate><atom:updated>2022-03-12T15:57:58.244+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">nix</category><category domain="http://www.blogger.com/atom/ns#">soft</category><title>Как я свежую версию компилятора языка Go на Debian ставил.</title><description>&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiQDmSoeZEhCV2mTUKKrbj79phyEcsxGe4Gkgqetk-wdyy5clYooD0jAZPVPvPgxmD8x8-sgsHrppVSOMsaOMJ7uBgPAonmPIUiD6Sx95xUDtTfOnkFYwzz_O3PuXbLY5fHTFVoGHKLicIDcYIwimuNCQb-084ax6osNrVZEUC_hp1evnIC_F2zEHOR=s500&quot; /&gt;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;div&gt;Потребность в трюке, который опишу дальше, у меня возникла, когда надо было на одну машину поставить компилятор &lt;a href=&quot;https://go.dev/&quot; target=&quot;_blank&quot;&gt;языка Go&lt;/a&gt;, но раскидывать файлы руками очень не хотелось. При этом очень хотелось иметь возможность компилятор обновлять. Некоторые манипуляции руками сделать всё же придётся, но понадобится это сделать только один раз.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для установке компилятора понадобится система, на которой уже есть установленный компилятор. Он нужен, чтобы собрать программу &lt;a href=&quot;https://github.com/niemeyer/godeb&quot; target=&quot;_blank&quot;&gt;godeb&lt;/a&gt;. Программу так же можно скачать в уже собранном виде по ссылке на странице репозитория Github.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сборка программы производится командой:&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;go install gopkg.in/niemeyer/godeb.v1/cmd/godeb@latest&lt;/pre&gt;
&lt;div&gt;При этом надо учитывать, что без изменения исходного кода собирать программу под архитектуры, которые отличаются от amd64 и i386, нет смысла, потому что программа подразумевает установку компилятора только под них.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Итак, после получения исполняемого файла его надо скопировать на целевую машину. Если система на целевой машине относительно свежая, то программа скорее всего заработает без проблем, потому что ей не требуются никакие сторонние библиотеки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После копирования на целевую машину можно попробовать получить список доступных версий компилятора:&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;./godeb list
...
1.17.2
1.17.3
1.17.4
1.17.5
1.17.6
1.17.7
1.17.8
1.18beta1
1.18beta2
1.18rc1
&lt;/pre&gt;
&lt;div&gt;Из предложенных версий надо выбрать последнюю стабильную или конкретную версию, которая нужна. При этом надо учитывать, что все манипуляции будут происходить в текущем каталоге.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Установка выполняется примерно такой командой:&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;./godeb install 1.17.8&lt;/pre&gt;
&lt;div&gt;Программа скачает архив с нужной версией компилятора, преобразует его в deb-пакет и попытается его установить, используя &quot;&lt;i&gt;sudo&lt;/i&gt;&quot; для повышения привилегий. В каталоге так же останется deb-пакет с выбранной версией компилятора.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь о необходимых ручных доработках.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Чтобы компилятор мог нормально работать, ему нужно несколько переменных окружения и один каталог. Я просто создал каталог &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;go&lt;/span&gt;&quot; в домашнем для этого. А для переменных создал файл &quot;&lt;i&gt;/etc/profile.d/golang.sh&lt;/i&gt;&quot; с таким содержанием:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;# Каталог с файлами компилятора
export GOROOT=/usr/local/go

# Каталог для исходников и собранных программ
export GOPATH=$HOME/go

# Добавление пути с компилятором в PATH
export PATH=${PATH}:${GOROOT}/bin

# Добавление пути с собранными программами в PATH
export PATH=${PATH}:${GOPATH}/bin

export CGO_ENABLED=1
&lt;/pre&gt;
&lt;div&gt;После создания этого файла его надо запустить или перезапустить сессию.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для проверки работоспособности установленного компилятора можно собрать &quot;godeb&quot; и убедиться, что по указанным путям появилась собранная программа.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2022/03/go-debian.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiQDmSoeZEhCV2mTUKKrbj79phyEcsxGe4Gkgqetk-wdyy5clYooD0jAZPVPvPgxmD8x8-sgsHrppVSOMsaOMJ7uBgPAonmPIUiD6Sx95xUDtTfOnkFYwzz_O3PuXbLY5fHTFVoGHKLicIDcYIwimuNCQb-084ax6osNrVZEUC_hp1evnIC_F2zEHOR=s72-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-518100395972328516</guid><pubDate>Mon, 27 Dec 2021 15:19:00 +0000</pubDate><atom:updated>2021-12-27T18:19:43.975+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">other</category><title>С новым 2022 годом!</title><description>&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhga67E2NliC6uj-wjeTHURoL2HHJsimRzC4DCXSJcjTgVAWUDVuNOEokWdsDy4cEXhjJVkmLbKz9h-GRRZdLc1eZeLeZGZIWsT5SekJuxV92rcTr4urTIzzREph13dg6zfvOXI3po6CyCzuEVNwi-0j9wl71T_89AQVfSxjD2EeVkHj0NBmf0Y3DNe=s500&quot; /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Вот и 2021 год сдаёт свои позиции. Каким-то вихрем год пролетел. Вроде бы только весна началась, а за ней пулей лето с осенью, и вот уже декабрь за окном то и дело морозом хрустит.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Год выдался ещё более чумовой, чем предыдущий. Я умудрился аж два раза серьёзно попасть в больницу. В первый раз получилось подняться амбулаторно, а вот под конец года слёг аж на неделею в стационар и на две недели больничного в сумме. В первый раз вылечился и во второй раз регенерирую в условно здорового человека.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В этом году особо не до экспериментов было. Конкретно так загнался по теме звука и накупил всяких железок и наушников. Коробочка Fiio BTA30 работает у меня теперь мостом для звука из телефона в домашнюю аудиосистему. Плеер Hiby R2 в основном лежит без дела в кармане, но иногда тоже радует меня музыкой, когда надо заткнуть уши на работе, чтобы никто не отвлекал.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Под конец года приехала ко мне плата от проекта &lt;a href=&quot;https://pikvm.org/&quot; target=&quot;_blank&quot;&gt;PiKVM&lt;/a&gt; с корпусом. Я её пока не успел потыкать, но сама по себе штука занятная по описанию. Хочу заказать под неё отдельную плату Raspberry Pi 4 и применить на благое дело.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Как ни старался поддерживать своё домашнее web-хозяйство на базе Lighttpd, но всё равно плюнул на этот забор из костылей и перетащил всё на Nginx. Даже вон сжатие brotli прикрутил.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Желаю всем здоровья в предстоящем году! Справились с 2021, справимся и с 2022!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;С новым годом!&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;a href=&quot;https://www.pixiv.net/en/artworks/94988413&quot; target=&quot;_blank&quot;&gt;Оригинал изображения.&lt;/a&gt;&lt;/span&gt;</description><link>https://blog.radjah.ru/2021/12/2022.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhga67E2NliC6uj-wjeTHURoL2HHJsimRzC4DCXSJcjTgVAWUDVuNOEokWdsDy4cEXhjJVkmLbKz9h-GRRZdLc1eZeLeZGZIWsT5SekJuxV92rcTr4urTIzzREph13dg6zfvOXI3po6CyCzuEVNwi-0j9wl71T_89AQVfSxjD2EeVkHj0NBmf0Y3DNe=s72-c" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-8569365271748951545</guid><pubDate>Thu, 04 Nov 2021 11:51:00 +0000</pubDate><atom:updated>2021-11-29T08:31:31.378+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">nix</category><category domain="http://www.blogger.com/atom/ns#">soft</category><title>Как я в Nginx из Debian поддержку сжатия brotli добавлял.</title><description>&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTJxjsR6Sjs0VIyENoTBcZ0QTooYYtRHiIFN4xRVf7YudfSOjUQVQtv6AfurYqF-Mwqk57eDAGt_XJtVdtBaBgsczjBpaXGi_pda6Oy-OgAZbZlhvpQt71_HeY9Y5VpfXgrwuDeRZ9Ijw/s320/800px-Brotli-logo.svg%255B1%255D.png&quot; width=&quot;320&quot; /&gt;
&lt;/p&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/google/brotli&quot; target=&quot;_blank&quot;&gt;Brotli&lt;/a&gt; - это алгоритм сжатия данных с открытым исходным кодом, распространяется по лицензии MIT. Немного технической информации можно почитать в &lt;a href=&quot;https://ru.wikipedia.org/wiki/Brotli&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt; и в &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc7932&quot; target=&quot;_blank&quot;&gt;RFC7932&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Модуль для поддержки этого алгоритма есть в платном варианте платформы Nginx Plus, но ничего не мешает добавить поддержку и в вариант из репозитория Debian. Сам сервер пересобирать для этого не надо.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Я действовал по &lt;a href=&quot;https://github.com/google/ngx_brotli/blob/master/README.md&quot; target=&quot;_blank&quot;&gt;инструкции&lt;/a&gt;, которую взял из репозитория самого модуля, и пытался адаптировать её для сборки в Debian.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Подготовка сборки.&lt;/u&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Сначала надо проверить, что в списке репозиториев есть необходимые записи для получения исходных кодов пакетов. У меня основной репозиторий прописан так (вместо &quot;bullseye&quot; можно прописать &quot;stable&quot;):&lt;/div&gt;&lt;div&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;deb https://cdn-fastly.deb.debian.org/debian/ bullseye main contrib non-free
deb-src https://cdn-fastly.deb.debian.org/debian bullseye main contrib non-free&lt;/pre&gt;
&lt;div&gt;Теперь нужно обновить список пакетов и загрузить исходный код Nginx. Делать всё желательно в отдельном каталоге, чтобы потом было легче удалить ненужные файлы.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;mkdir nginx
cd nginx
apt source nginx&lt;/pre&gt;
&lt;div&gt;В каталог &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;nginx&lt;/span&gt;&quot; будет загружен и распакован исходный код сервера, а так же будут наложены необходимые для сборки патчи. Для правильной сборки необходимо установить сборочные зависимости, которые потом можно будет удалить, сохранив где-нибудь список, выданный программой &quot;&lt;i&gt;apt&lt;/i&gt;&quot;. Отдельно надо установить dev-пакет &quot;&lt;i&gt;libbrotli&lt;/i&gt;&quot;.&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;sudo apt build-dep nginx
sudo apt install libbrotli-dev&lt;/pre&gt;
&lt;div&gt;&lt;u&gt;Настройка и сборка модулей.&lt;/u&gt; &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;В руководстве сказано, что настраивать сборку надо точно с теми же параметрами, с которыми настроен установленный сервер. Получить список параметров можно из информации о версии самого сервера:&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ /usr/sbin/nginx -V
nginx version: nginx/1.18.0
built with OpenSSL 1.1.1k  25 Mar 2021
TLS SNI support enabled
configure arguments: --with-cc-opt=&#39;-g -O2 -ffile-prefix-map=/build/nginx-q9LD4J/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2&#39; --with-ld-opt=&#39;-Wl,-z,relro -Wl,-z,now -fPIC&#39; --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --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-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module&lt;/pre&gt;
&lt;div&gt;Вот тот огромный список параметров из строки &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;configure arguments&lt;/span&gt;&quot; как раз и нужен.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь необходимо получить исходный код модуля, сконфигурировать сборку и собрать сами модули.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для указания скрипту конфигурации каталога с исходным кодом надо добавить ключ &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;--add-dynamic-module=/путь/до/ngx_brotli&lt;/span&gt;&quot;.&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;# получение исходного кода
git clone https://github.com/google/ngx_brotli
cd nginx-1.18.0
# конфигурирование
# вместо &quot;...&quot; надо подставить тот огромный список параметров
./configure ... --add-dynamic-module=/путь/до/ngx_brotli
# сборка модулей
make modules&lt;/pre&gt;
&lt;div&gt;После сборки в каталоге &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;objs&lt;/span&gt;&quot; должны появиться файлы &quot;&lt;i&gt;ngx_http_brotli_filter_module.so&lt;/i&gt;&quot; и &quot;&lt;i&gt;ngx_http_brotli_static_module.so&lt;/i&gt;&quot;. Это и есть нужные модули.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Установка модулей.&lt;/u&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Файлы необходимо поместить в каталог &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/usr/lib/nginx/modules&lt;/span&gt;&quot;. В каталоге &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/etc/nginx/modules-available&lt;/span&gt;&quot; надо создать файл &quot;&lt;i&gt;mod-http-brotli.conf&lt;/i&gt;&quot; с таким текстом:&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;&lt;/pre&gt;
&lt;div&gt;А символическую ссылку на этот файл поместить в каталог &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/etc/nginx/modules-enabled&lt;/span&gt;&quot;. На этом этапе модуль добавлен, но ещё не настроен на использование.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Настройка Nginx.&lt;/u&gt; &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Я все свои настройки, которые не относятся к сайтам, помещаю в каталог &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/etc/nginx/conf.d&lt;/span&gt;&quot;. Туда надо поместить файл с расширением &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;.conf&lt;/span&gt;&quot; и примерно таким текстом:&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;# включение сжатие brotli
brotli on;
# уровень сжатия максимальный
brotli_comp_level 11;
# MIME-типы, для которых надо задействовать сжатие
brotli_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;&lt;/pre&gt;
&lt;div&gt;После этого надо перезапустить сервер Nginx:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;sudo systemctl restart nginx&lt;/pre&gt;
&lt;div&gt;&lt;u&gt;Проверка.&lt;/u&gt; &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Для проверки сжатия можно использовать инструменты веб-разработчика браузера Firefox или Chrome или программу &quot;&lt;i&gt;curl&lt;/i&gt;&quot; с ключами &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;--compressed -v&lt;/span&gt;&quot;. Если всё сделано правильно, то в заголовке ответа сервера должна быть строка:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;content-encoding: br&lt;/pre&gt;</description><link>https://blog.radjah.ru/2021/11/nginx-debian-brotli.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTJxjsR6Sjs0VIyENoTBcZ0QTooYYtRHiIFN4xRVf7YudfSOjUQVQtv6AfurYqF-Mwqk57eDAGt_XJtVdtBaBgsczjBpaXGi_pda6Oy-OgAZbZlhvpQt71_HeY9Y5VpfXgrwuDeRZ9Ijw/s72-c/800px-Brotli-logo.svg%255B1%255D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-6501429111289775172</guid><pubDate>Mon, 01 Nov 2021 12:21:00 +0000</pubDate><atom:updated>2021-11-01T15:58:28.240+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bittorrent</category><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">hack</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">nix</category><category domain="http://www.blogger.com/atom/ns#">soft</category><title>Как я Opentracker с https и кластером настраивал.</title><description>&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpkgbq4oouIvl2LgaLN-UsA25UaCwAdVxa5J64rIO-IyjWwTmfvSc99PaWeNmFySHug_SFH3qRzfZrKRY2rWCzqswLVsqZVfYx8SL0Rjzae0MjrTCDCiF8Peheb2cj21BNV_UWXcNPd00/s320/opentracker_beta3%255B1%255D.png&quot; /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://erdgeist.org/arts/software/opentracker/&quot; target=&quot;_blank&quot;&gt;Opentracker&lt;/a&gt; -&amp;nbsp; это реализация BitTorrent-трекера на языке C. Программа имеет открытый исходный код и распространяется по лицензии &quot;beer ware&quot;. Умеет работать по TCP и UDP, умеет работать со списками доступа для торрентов по info-hash и для пользователей по адресам. Программу я пробовал собирать на машинах с процессором x86_64 и ARM. Везде программа собралась и даже заработала.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Зачем оно мне надо? Просто захотел поднять трекер для личных нужд, а потом уже начал навешивать на него всякие рюшечки.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Далее я расскажу, как поднимал кластер подобных трекеров из трёх нод, помещал перед ними сервер &lt;a href=&quot;https://nginx.org/&quot;&gt;Nginx&lt;/a&gt; с балансировкой и https.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Моя система костылей и подпорок заработала со следующими исходными условиями:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Наличие внешнего белого статического IP-адреса от провайдера;&lt;/li&gt;&lt;li&gt;Наличие сертификата &lt;a href=&quot;https://letsencrypt.org/&quot; target=&quot;_blank&quot;&gt;Let’s Encrypt&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Сборка программы.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сборку я выполнял по инструкции с сайта, но перед компиляцией раскомментировал в файле &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;Makefile&lt;/span&gt;&quot; следующие строки:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;FEATURES+=-DWANT_V6
FEATURES+=-DWANT_SYNC_LIVE
FEATURES+=-DWANT_COMPRESSION_GZIP
FEATURES+=-DWANT_IP_FROM_PROXY
FEATURES+=-DWANT_MODEST_FULLSCRAPES
FEATURES+=-DWANT_SYSLOGS
FEATURES+=-DWANT_FULLSCRAPE
&lt;/pre&gt;
&lt;div&gt;Такими правками я включил поддержку протокола IPv6, работу в кластере, поддержку сжатия GZIP, поддержку syslog и scrape.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Настройка программы.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я поместил всё необходимое для работы программы в каталог &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/opt/opentracker&lt;/span&gt;&quot;. Туда я скопировал исполняемый файл программы &quot;&lt;i&gt;opentracker&lt;/i&gt;&quot; и конфигурационный файл &quot;&lt;i&gt;opentracker.conf.sample&lt;/i&gt;&quot; под именем &quot;&lt;i&gt;opentracker.conf&lt;/i&gt;&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В конфигурационном файле я изменил следующие параметры:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;# адрес и порт для синхронизации нод
livesync.cluster.listen 192.168.1.30:9696

# список нод для синхронизации
# адреса всех трёх нод
livesync.cluster.node_ip 192.168.1.28
livesync.cluster.node_ip 192.168.1.30
livesync.cluster.node_ip 192.168.1.17

# каталог для данных программы
# пустой, но должен существовать
tracker.rootdir /opt/opentracker/data

# учётная запись для понижения прав
tracker.user    nobody

# адрес вышестоящего http-сервера
access.proxy 127.0.0.1
&lt;/pre&gt;
&lt;div&gt;Последний параметр нужен, чтобы программа получала адрес пира не из свойств соединения, а из заголовка запроса &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;X-Forwarded-For&lt;/span&gt;&quot;. В документации об этом особо не написано, а параметр нашёл поиском по исходным текстам программы.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Установка и запуск программы.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После помещения всех необходимых файлов надо установить владельца каталога &quot;&lt;i&gt;data&lt;/i&gt;&quot; в значение из параметра &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;tracker.user&lt;/span&gt;&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для запуска через systemd я написал такой юнит:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;#/opt/opentracker/opentracker.service
[Unit]
Description=Opentracker
Wants=network-online.target
After=network.target network-online.target

[Service]
ExecStart=/opt/opentracker/opentracker -f /opt/opentracker/opentracker.conf
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-abort

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

&lt;div&gt;Установка и запуск юнита выполняется следующей командой:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;sudo systemctl enable --now /opt/opentracker/opentracker.service&lt;/pre&gt;
&lt;div&gt;Программа должна появиться в списке процессов.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Подобную процедуру надо провести для всех трёх нод, заменив адрес в параметре &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;livesync.cluster.listen&lt;/span&gt;&quot;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Настройка Nginx.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nginx я выбрал из-за богатых возможностей настройки и хорошей документации.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Из-за того, что у меня трекер и клиент расположены в одной сети, а запросы к трекеру идёт через роутер, то в списке пиров вместо внешнего адреса я получаю внутренний адрес роутера, то есть &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;192.168.1.1&lt;/span&gt;&quot;. В таких условиях пользы от трекера примерно никакой. Чтобы это как-то исправить, я добавил в конфигурационный файл хоста некоторые костыли.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сам файл выглядит так:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;#/etc/nginx/sites-enabled/opentracker.conf
upstream opentracker {
        server 127.0.0.1:6969;
        server 192.168.1.17:6969;
        server 192.168.1.28:6969;
}

server {
        listen 9999 ssl http2;
        server_name bt.example.ru;

        ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem;

        access_log /var/log/nginx/access.opentracker.log;

        location / {
                set $xff $proxy_add_x_forwarded_for;
                set $xrip $remote_addr;
                if ($remote_addr = &quot;192.168.1.1&quot;) {
                        set $xff &quot;внешний_IP-адрес&quot;;
                        set $xrip &quot;внешний_IP-адрес&quot;;
                }
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-For $xff;
                proxy_set_header X-Real-IP $xrip;
                proxy_redirect off;
                proxy_read_timeout 120;
                proxy_connect_timeout 10;
                proxy_pass http://opentracker;
        }
}
&lt;/pre&gt;
&lt;div&gt;В секции &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;upstream&lt;/span&gt;&quot; перечислены адреса всех нод. Сервер будет передавать им запросы по очереди, а синхронизироваться между собой ноды будут сами.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В секции &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;server&lt;/span&gt;&quot; прописан порт и имя сервера, включена поддержка SSL и HTTP 2.0. Для SSL указаны пути к файлам ключа и сертификата. Указан путь к log-файлу конкретно для запросов этого хоста.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В секции &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;location&lt;/span&gt;&quot; прописано условие изменения заголовков &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;X-Forwarded-For&lt;/span&gt;&quot; и &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;X-Real-IP&lt;/span&gt;&quot; в случае поступления запроса из локальной сети за роутером. Тут надо заменить текст &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;внешний_IP-адрес&lt;/span&gt;&quot; на настоящий белый статический IP-адрес, который выдал провайдер. Я не уверен, что подойдёт доменное имя. Если адрес роутера другой, то его тоже надо исправить.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Решения для динамического белого IP-адреса я не придумал. Если у кого-то такое решение есть, то прошу им поделиться.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Для добавления в раздачи надо использовать адрес трекера &quot;https://bt.example.ru:9999/announce&quot;. Имя сервера надо заменить на своё и указать порт, который проброшен на роутере.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Проверка решения.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для проверки ответов трекера я добавил трекер в один из торрентов и подсмотрел строку запроса в логе сервера Nginx. Для запроса я использовал программу &quot;&lt;i&gt;curl&lt;/i&gt;&quot;, а ответ разбирал программой &quot;&lt;i&gt;hexdump&lt;/i&gt;&quot; с подсмотренным в интернете шаблоном вывода.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl --compressed &#39;https://bt.example.ru:9999/announce?info_hash=%6b%36%1a%4e%0a%24%c2%9c%85%e7%a7%a3%1f%5f%b2%7d%3c%e9%b1%d4&amp;amp;peer_id=-qB4400-)j!KFE-2Bfp0&amp;amp;port=65461&amp;amp;uploaded=1887594623&amp;amp;downloaded=0&amp;amp;left=0&amp;amp;corrupt=0&amp;amp;key=59E7D934&amp;amp;numwant=200&amp;amp;compact=1&amp;amp;no_peer_id=1&amp;amp;supportcrypto=1&amp;amp;redundant=0&#39; --output - | hexdump -e&#39;&quot;%07.8_ad  &quot; 8/1 &quot;%03d &quot; &quot;  |&quot;&#39; -e&#39;8/1  &quot;%_p&quot;  &quot;|\n&quot;&#39;

00000000  100 056 058 099 111 109 112 108  |d8:compl|
00000008  101 116 101 105 051 101 049 048  |etei3e10|
00000016  058 100 111 119 110 108 111 097  |:downloa|
00000024  100 101 100 105 049 101 049 048  |dedi1e10|
00000032  058 105 110 099 111 109 112 108  |:incompl|
00000040  101 116 101 105 048 101 056 058  |etei0e8:|
00000048  105 110 116 101 114 118 097 108  |interval|
00000056  105 049 054 053 048 101 049 050  |i1650e12|
00000064  058 109 105 110 032 105 110 116  |:min int|
00000072  101 114 118 097 108 105 056 050  |ervali82|
00000080  053 101 054 058 112 101 101 114  |5e6:peer|
00000088  115 054 053 052 058 000 000 000  |s654:...|
... skipped ...
&lt;/pre&gt;
&lt;div&gt;После последней строки идёт список адресов раздающих. Среди десятичного представления байтов должен быть внешний адрес, а не &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;127.000.000.001&lt;/span&gt;&quot; или адрес из локальной сети.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для более широкого вывода можно расширить шаблон до 16 байт на строку:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;hexdump -e&#39;&quot;%07.8_ad  &quot; 8/1 &quot;%03d &quot; &quot;  &quot; 8/1 &quot;%03d &quot; &quot;  |&quot;&#39; -e&#39;16/1  &quot;%_p&quot;  &quot;|\n&quot;&#39;&lt;/pre&gt;

&lt;div&gt;Для проверки заголовков я просто останавливал ноду и запускал вместо неё программу &quot;&lt;i&gt;netcat&lt;/i&gt;&quot; в режиме сервера с прослушиванием того же порта:&lt;/div&gt;

&lt;pre class=&quot;brush: bash&quot;&gt;nc -l -p 6969&lt;/pre&gt;

&lt;div&gt;Запрос в этом случае будет зависать, но заголовки, которые передаёт Nginx в сторону OpenTracker, будут видны полностью.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для теста я пробовал качать торрент по magnet-ссылке из другой сети с выключенным поиском пиров по DHT. Пир из локальной сети подхватывался по внешнему адресу, а закачка начиналась сразу после получения торрента от пира.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/11/opentracker-https.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpkgbq4oouIvl2LgaLN-UsA25UaCwAdVxa5J64rIO-IyjWwTmfvSc99PaWeNmFySHug_SFH3qRzfZrKRY2rWCzqswLVsqZVfYx8SL0Rjzae0MjrTCDCiF8Peheb2cj21BNV_UWXcNPd00/s72-c/opentracker_beta3%255B1%255D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-1367549875373242029</guid><pubDate>Sat, 16 Oct 2021 21:40:00 +0000</pubDate><atom:updated>2021-10-17T01:04:16.399+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hard</category><category domain="http://www.blogger.com/atom/ns#">other</category><title>Купил себе HiBy R2.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5LvotEXSRMm29hGAuYuH6gXZhDpjCg4T693OZidSWgsvgI6QYm7ug_DVtTCh_tNlUdNxCZ3yak7dtw2XAXQwfENNhPDhlAmp-C49SlX4vpGSrisyWxUShEc5DtxRbmBOq7CFbZrO2Rxg/s550/pf-32154530--R2%255B1%255D.jpg&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Купил себе плеер &lt;a href=&quot;https://store.hiby.com/products/hiby-r2&quot; target=&quot;_blank&quot;&gt;HiBy R2&lt;/a&gt;. Захотел себе отдельный плеер для музыки и купил. Ну ещё хотелось потыкать эти HiFi-штуки руками, но не хотелось брать агрегат за 20000 рублей и потом трястись над ним, чтобы не разбить, и вздрагивать от каждого глюка. Пользуюсь им уже ровно месяц и могу кое-что о нём рассказать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Идеальной работы от устройства за такую цену (8-9 тысяч рублей) и с такими заявленными функциями я не ждал, но фатальных глюков тоже не возникло.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Работа в режиме проигрывателя файлов с карты памяти.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Тут всё просто и понятно. Записал любимую музыку на карту памяти, вставил в устройство, нажал кнопку &quot;Update database&quot;, выбрал трек и слушаешь в наушниках. Но есть нюанс.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Плеер умеет проигрывать альбомы в виде CUE+IMG, то есть cue-файл с описанием треков и огромный музыкальный файл со всеми треками из альбома один за одним. Но если файл с музыкой и файл с описанием имеют разные имена, то вместо проигрывания треков плеер будет показывать ошибку, а сам большой файл будет отображать как обычную песню, но очень длинную. Такое происходит даже в том случае, если в cue-файле имя образа прописано правильно. Не будет ничего проигрываться и в случае, если альбом состоит из одного cue-файла и россыпи треков.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Пробовал проигрывать некоторые альбомы в формате MQA внутри FLAC и ловил заикание в самом начале трека. Или процессор таком потоком данных давится, или файл сделан не совсем корректно. Музыка в формате FLAC, ISO (DSD64), WAV (DTS) у меня воспроизводилась без проблем. Только в самом начале треков в формате DSD64 было какое-то заикание.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Работа в режиме рендера DLNA.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Сценарий использования этого режим я не могу представить, на ради интереса попробовал.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Плеер у меня подключён к домашней сети по WiFi и отлично распознаётся Windows 10 в качестве устройства воспроизведения.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я пробовал отправлять на воспроизведение разные MP3-файлы. Плеер их отлично воспроизводил. Попробовал отправить так же FLAC-файл и получил зависание плеера. Попробовал проделать такое же действие из программы BubbleUPnP, и никаких ошибок не возникло.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для меня необходимость этой функции пока не совсем ясна, но если работает, то хорошо.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Работа в качестве внешнего ЦАП (звуковая карта с интерфейсом USB).&lt;/u&gt;&lt;/div&gt;&lt;div&gt;В настройках плеера можно сменить режим работы USB на &quot;Audio&quot;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Этим режимом я обычно на работе пользуюсь, чтобы в обед на компьютере фильмы смотреть. В компьютере тоже есть звуковой чип, даже разъёмы под наушники и микрофон на системном блоке подключены, но тут не надо переключать наушники, да и плеер заряжается опять же.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;В этом режиме появляется специальный экран с информацией о частоте дискретизации и битности. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После установки драйверов с сайта производителя плеер начинает поддерживать дикие частоты дискретизации до 192 кГц и разрядность до 32 бит, а так же ASIO. Микрофон по USB не виден.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Работа в режиме накопителя/кардридера.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Если в настройках вместо &quot;Audio&quot; выбрать &quot;Storage&quot;, то при подключении в системе появится вставленная в плеер карта памяти. Плеер умеет работать с файловой системой exfat, то есть на карту можно запросто записывать файлы больше 4 гигабайт.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Скорость записи у меня была в районе 15-20 МБ/сек даже на тех картах, которые в обычных ридерах выдавали скорость под 60 МБ/сек.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Перед отключением плеера надо обязательно использовать безопасное извлечение, а потом на самом плеере надо запустить обновление библиотеки, чтобы новые файлы появились в проигрывателе.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Работа в качестве ресивера/передатчика по Bluetooth.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Плеер может работать в режиме беспроводных наушников или сам передавать музыку на беспроводные наушники. При этом режим работы определяется подключаемым устройством, то есть можно сделать сопряжение со смартфоном средствами плеера, но звук он будет принимать, а не передавать.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;При этом передавать можно не только воспроизводимую плеером музыку, но и звук, который он получает по USB. Для беспроводной передачи по Bleutooth он поддерживает кодеки: LDAC, UAT, aptX, AAC и SBC. AptX поддерживается только на передачу, принимать и воспроизводить звук в aptX плеер не умеет.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;При подключении беспроводных наушников в строке состояния сверху и в шторке отображается используемый кодек. При подключении плеера в качестве беспроводных наушников появляется специальный экран с информацией об используемом кодеке.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В режиме передачи из меню &quot;Wireless settings / Bluetooth&quot; можно регулировать звук на удалённом устройстве. Иногда бывает нужно.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Вот тут не сразу сообразил, как надо подключать устройства к плееру по Bluetooth. Чтобы выполнить сопряжение, надо в шторке или через пункт &quot;HiBy Link&quot; отключить этот самый HiBy Link, тогда подключение будет работать. После подключения устройства HiBy Link можно включить назад.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Удалённое управление со смартфона.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;А вот эта функция мне очень понравилась. Вместо тыканья пальцем в маленький экран плеера можно удобно тыкать пальцем в большой экран смартфона.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Через фирменное приложение &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.hiby.music&quot; target=&quot;_blank&quot;&gt;HiBy Music&lt;/a&gt; можно удалённо управлять плеером. Подключиться можно по WiFi или Bluetooth. В случае WiFi плеер и смартфон должны находиться в одной сети, в случае Bluetooth они должны находиться не очень далеко друг от друга.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Управление заключается не просто в запуске и остановке музыки, можно составлять плейлист, можно выбирать отдельные треки для воспроизведения, можно просматривать информацию о воспроизводимом треке. Если у трека есть обложка, то она тоже подгрузится и отобразится на смартфоне. До кучи фирменное приложение ведёт себя как обычный проигрыватель, то есть информация о воспроизводимой на плеере песне выводится так, как будто песня воспроизводится на смартфоне. Функции проигрывателя она тоже выполняет, если по HiByLink не подключено ни одного устройства.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Аналогичную программу для Windows я не нашёл.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Работа с внешними усилителями и USB-наушниками.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Плеер может не только сам работать внешней звуковой картой, но позволяет подключать подобные устройства к себе.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я пробовал подключать к нему наушники &lt;a href=&quot;https://www.eksa.net/products/eksa-e900-pro-7-1-virtual-surround-sound-gaming-headset&quot; target=&quot;_blank&quot;&gt;EKSA E900 Pro&lt;/a&gt;, всякие звуковые карты с интерфейсом USB и усилитель &lt;a href=&quot;https://www.fiio.com/btr5&quot; target=&quot;_blank&quot;&gt;Fiio BTR5&lt;/a&gt;. Для последнего даже заработало воспроизведение музыки в формате DSD с декодированием её на усилителе, а не средствами плеера. Не уверен, но скорее всего на это повлияла настройка &quot;DSD output mode&quot; в меню &quot;Play settings&quot;. Я её выставлял в значение &quot;Native&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В этом режиме не всегда получалось запустить усилитель BTR5 как усилитель. Иногда он просто начинал заряжаться от плеера и не переходить в режим звуковой карты. Опять же смысл такого тандема для меня не ясен, но раз так тоже можно, то хорошо.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Пробовал подключать наушники &lt;a href=&quot;http://tronsmart.com.ru/product/tronsmart-glary-gaming-headset/&quot; target=&quot;_blank&quot;&gt;Tronsmart Glary&lt;/a&gt; с управлением громкостью с помощью пульта на кабеле. При нажатии кнопок на пульте происходило изменение громкости на самом плеер, о чём свидетельствовало появление уровня громкости как при её изменении кнопками на самом плеере.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Работа с внешними USB-накопителям.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;К плееру можно подключать не только усилители, но флешки с музыкой в его порт USB. При этом подключённая флешка появится в разделе &quot;USB-storage&quot; проигрывателя.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я пробовал подключать USB-хаб, в который вставлял несколько флешек, но в разделе появлялась только самая первая подключённая флешка. Если подключить ридер, который может работать сразу с несколькими картами памяти, то появляются уже все вставленные карты.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;О глюках.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Да, теперь о грустном. Плеер иногда глючит и тормозит. Делает это не сам по себе в случайный момент времени, а из-за каких-то действий пользователя. Выражаются подобные глюки в отсутствии реакции на внешние раздражители. Например, при подключении в режиме накопителя появляется диск без носителя, при подключении в режиме &quot;Audio&quot; звуковое устройство появляется, но плеер в режим &quot;DAC&quot; не переходит. В меню WiFi или Bluetooth может пропасть всё, кроме переключателя, который тоже на нажатия реагировать не будет.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если плеер вообще никак не реагирует на нажатия, то его можно перезагрузить долгим удерживанием кнопки включения. Если на нажатия реагирует нормально, но никак не реагирует на подключение и отключение наушников, то есть в верхней части экрана всё время висит надпись &quot;COAX&quot; или значок наушников, или значок подключения USB-устройства, когда само устройство давно отключено, то плеер надо просто положить и не трогать минут 5-10. Он со временем обычно приходит в норму. Скорее всего подобное связано, с процессором, который иногда не успевает обработать все действия, или виновата прошивка, которая не проверяет успешность выполненных с плеером действия в настройках.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Про инструкцию.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Странно, но я нигде не смог найти найти инструкцию с описанием пунктов меню настроек. Что-то в бумажной инструкции есть, но не всё. Например, я не понял разницу между пунктами &quot;Idle timer&quot; и &quot;Sleep timer&quot;. Назначение пунктов &quot;Standby&quot; и &quot;In-line remote&quot; для меня вообще неясно.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/10/hiby-r2.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5LvotEXSRMm29hGAuYuH6gXZhDpjCg4T693OZidSWgsvgI6QYm7ug_DVtTCh_tNlUdNxCZ3yak7dtw2XAXQwfENNhPDhlAmp-C49SlX4vpGSrisyWxUShEc5DtxRbmBOq7CFbZrO2Rxg/s72-c/pf-32154530--R2%255B1%255D.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-1369179914153342216</guid><pubDate>Sun, 19 Sep 2021 14:48:00 +0000</pubDate><atom:updated>2021-09-20T06:54:18.154+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gentoo</category><category domain="http://www.blogger.com/atom/ns#">nix</category><category domain="http://www.blogger.com/atom/ns#">soft</category><title>Как Gentoo Linux в контейнере чинил.</title><description>&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7jrL4kPX-vLyTO9OL7LXK-c9gFIsw_Fum5SWEf3wLotloFwv4YMD9LztdmzIAqTGcPKw_7O0tO1Y2MoUjoLa6GHMLPYWiN5glskdGcEY33CO1i6WpcA8jLB6na-a_3MU6bnr8yMyW2_A/s400/a23d30f26b818043c0eb7028e447508a%255B1%255D.png&quot; /&gt;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Есть у меня плата &lt;a href=&quot;https://linux-sunxi.org/Cubietech_Cubietruck&quot; target=&quot;_blank&quot;&gt;Cubietruck&lt;/a&gt; на ARM-процессоре. На ней стоит дистрибутив &lt;a href=&quot;https://www.armbian.com/&quot; target=&quot;_blank&quot;&gt;Armbian&lt;/a&gt; на основе Debian. Там же запущено несколько nspawn-контейнеров с другими дистрибутива. Одни из них был Gentoo. Всё вместе работало довольно исправно, только пакеты в Gentoo всё же обновляются раньше, чем выходят версии Debian. И вот во время одного из обновлений контейнер сломался и больше запускаться не хотел.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(Свои приключения буду описывать по памяти.)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;По логам было видно, что всё упало после обновления &quot;sys-libs/glibc&quot; до версии 2.32, которая оказалась совсем не совместима с ядром в хостовой системе. Контейнер у меня был в основном для работы ноды &lt;a href=&quot;https://zeronet.io/&quot; target=&quot;_blank&quot;&gt;Zeronet&lt;/a&gt; и поддержания её в актуальном состоянии, позже я там пробовал держать ноду &lt;a href=&quot;https://ipfs.io&quot; target=&quot;_blank&quot;&gt;ipfs&lt;/a&gt;. Из-за того, что первое было на Python, а второе на Go, перенести их в другое место труда не составило.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;О контейнере я забыл и вспомнил только после выхода Debian 11. В этой версии довольно сильно обновилось ядро. Можно было попробовать оживить контейнер, что я и сделал. Контейнер запустился, и даже получилось туда зайти по ssh. А вот с обновлением там было всё плохо, потому что система как раз и упала в процессе большого обновления, то есть часть пакетом обновилась, а часть осталось старых версий. При этом команда &quot;&lt;i&gt;emerge&lt;/i&gt;&quot; выдавала сообщение &quot;no python-exec wrapped executable found in /usr/lib/python-exec&quot;. При этом в каталоге &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/usr/lib/python-exec/python3.6&lt;/span&gt;&quot; нужные файлы нашлись. Запуск &quot;&lt;i&gt;emerge&lt;/i&gt;&quot; из этого каталога вполне работал. Можно было пробовать обновить систему, но это у меня опять не получилось из-за конфликта пакетов. Нужно было обновить &quot;dev-lang/perl&quot;, но это обновление почему-то блокировалось установленной версией. Не получалось даже обновить &quot;sys-apps/portage&quot; до актуальной версии.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Когда-то я читал в новостях что-то про необходимость запуска программы &quot;&lt;i&gt;perl-cleaner&lt;/i&gt;&quot; при обновлении &quot;dev-lang/perl&quot;, но все обновления проходили штатно без вспомогательных действий. Терять уже было нечего, да и у меня уже был чисто спортивный интерес поднять контейнер. Программа отработала, но в самом конце споткнулась из-за невозможности запустить &quot;&lt;i&gt;emerge&lt;/i&gt;&quot;, но при этом показал командную строку. Я подставил в начало полученной строки полный путь до программы, процесс обновления &quot;dev-lang/perl&quot; успешно запустился и дошёл до конца.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Теперь у меня в системе была актуальная версия пакет, можно было пробовать сразу запустить полное обновление системы, но почему-то полез обновлять только &quot;dev-lang/python&quot;. После обновления команда &quot;&lt;i&gt;emerge&lt;/i&gt;&quot; перестала запускаться даже по прямому пути. Похоже, что после установки новой версии интерпретатора старая была удалена. В очередной раз помучив Google, я на каком-то сайте нашёл рекомендацию просто скачать и распаковать архив с &quot;sys-apps/portage&quot; и запустить программу &quot;&lt;i&gt;emerge&lt;/i&gt;&quot; из распакованного пакета.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я нашёл нужный архив на зеркале Яндекс по адресу &lt;a href=&quot;http://mirror.yandex.ru/gentoo-distfiles/distfiles/&quot; target=&quot;_blank&quot;&gt;http://mirror.yandex.ru/gentoo-distfiles/distfiles/&lt;/a&gt;. Скачал файл в домашний каталог, там же распаковал и запустил. Программа заработала, ругнувшись на неизвестные ей куски &quot;layman&quot;. При этом получилось обновить дерево основного репозитория и запустить обновление. Обновить предстояло 191 пакет. На хиленьком Cubietruck процесс занял больше двух суток. В процессе даже отваливался доступ по ssh, но процесс обновления был запущен внутри screen, а доступ к контейнеру можно было получить, подключившись такой командой:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;machinectl login gentoocubie&lt;/pre&gt;
&lt;div&gt;При этом появлялся обычный запрос имени пользователя и пароля. При таком способе входа странно работал mc, но следить за процессом сборки было можно. Для закрытия сеанса после logout надо было нажать &quot;Ctrl+]]]&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В итоге система успешно обновилась, ssh опять стал пускать в систему, пакет &quot;sys-apps/portage&quot; тоже был актуальной версии.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/09/gentoo-linux.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7jrL4kPX-vLyTO9OL7LXK-c9gFIsw_Fum5SWEf3wLotloFwv4YMD9LztdmzIAqTGcPKw_7O0tO1Y2MoUjoLa6GHMLPYWiN5glskdGcEY33CO1i6WpcA8jLB6na-a_3MU6bnr8yMyW2_A/s72-c/a23d30f26b818043c0eb7028e447508a%255B1%255D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-2166582423454111388</guid><pubDate>Sat, 10 Jul 2021 07:25:00 +0000</pubDate><atom:updated>2023-01-17T13:41:58.696+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hack</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">soft</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Эксперименты с установщиком Windows 7 и 10. Запись установщика на FAT32.</title><description>&lt;p&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9NxDX3NezrdF7FCHKwC6HAFcmyMRFRkm_8Y-9cYWf2cntCt2RzHYhl4Yhs8bJmKEAm-atV8dpF-6COzzlA9chKFR0d5WCA1-LbQjT6mYqIjk_FGWaQlNVgIaA9qGblQB5m-JeMaaLoVc/s500/windows-10-logo-banner-3%255B1%255D.png&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;
&lt;div&gt;Всё началось с заявления в одном чате, что дистрибутив Windows 10 нельзя записать на носитель с FAT32, потому что размер образа &quot;&lt;i&gt;install.wim&lt;/i&gt;&quot; превышает допустимый размер файла в 4 гигабайта. Я специально скачал официальный ISO-образ Windows 10 21H1 и в этом убедился, но любопытство было уже не остановить.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Все эксперименты я ставил на VHD-образах дисков, чтобы лишний раз не затирать флешки и не искать место, когда сохранить гигабайты данных с них. Работоспособность проверял с помощью &lt;a href=&quot;https://www.virtualbox.org/&quot; target=&quot;_blank&quot;&gt;Oracle VirtualBox&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В процессе изысканий я познакомился с двумя полезными бесплатными утилитами:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;https://www.bootdev.ru/2015/10/bootice.html&quot; target=&quot;_blank&quot;&gt;BOOTICE&lt;/a&gt; - швейцарский нож для работы с дисками, разделами и загрузочными секторами.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.autoitconsulting.com/site/software/gimagex/&quot; target=&quot;_blank&quot;&gt;GImageX&lt;/a&gt; - графическая утилита для работы с WIM-образами, которые используются в составе дистрибутивов Windows.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сначала я просто попробовал повторить то, что делает утилита от Microsoft после загрузки образа из интернет и интеграции всех вышедших обновлений. Различие между ISO-образом и тем, что записывается утилитой на диск, состоит в том, что внутри образа лежит файл &quot;&lt;i&gt;install.wim&lt;/i&gt;&quot;, а утилита генерирует файл &quot;&lt;i&gt;install.esd&lt;/i&gt;&quot;, который сжат ещё сильнее и занимает примерно на треть меньше места.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Конвертировать один формат в другой можно с помощью утилиты &lt;a href=&quot;http://www.chuyu.me/ru/index.html&quot; target=&quot;_blank&quot;&gt;DISM++&lt;/a&gt; (&lt;a href=&quot;https://github.com/Chuyu-Team/Dism-Multi-language&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;), но эта утилита у меня не заработала нормально в среде Windows 7, в которой я и проводил свои эксперименты. Конвертация так же занимает довольно продолжительное время и по полной грузит процессор.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для распаковки образа подойдёт программа &lt;a href=&quot;https://www.7-zip.org/&quot;&gt;7-Zip&lt;/a&gt;. Желательно установить самую новую версию. В Windows 10 образ можно подключить как виртуальный диск средствами самой системы.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;С помощью программы BOOTICE я создал VHD-образ размером 6 гигабайт, т.е. немного больше размера ISO-образа, чтобы точно всё поместилось.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Практически все операции производятся на вкладке &quot;Disk image&quot;:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDoGrmGeygxAgnU48smkZ06tVJ2r675iPvAfuQI2zaiHRODAwZ_GQ2GgnMkHPNqF81eKg42rNaSl1DhwDpAPqd5Ss-W9nbWr8sUGplG98rG5r6Teb-x1wLtPcDGB3x7Rx2bv_VhjX3D0A/s16000/screenshot+2021-07-10+005.png&quot; /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;На этой вкладке надо нажать кнопку &quot;Create VHD&quot;, заполнить поля примерно так и нажать кнопку &quot;Create&quot;:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtSw-3XX8ZL_sC9jYW7UY7UhTbbPcTrVT4efgFo26_xcdaHTO0BNgkUBX9p5so5eEOFCD_crSPX2XRh2fpgZ5w4JY1FBWAUvyoRpKwdYYG3crgolbEqtov8tAKKJsGZ4G021pipngE6AU/s0/screenshot+2021-07-10+001.png&quot; /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Теперь необходимо создать один раздел, который будет занимать весь образ. Для этого на той же вкладке надо нажать кнопку &quot;Partition manage&quot;и в появившемся окне нажать кнопку &quot;Re-Partitioning&quot;. Интерфейс не очень удобный в плане расчёта размера, но можно очистить все поля для ввода размера и получить в последнем нужное число:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr58iMknu-qgDb_6kavKkokSvYu6MHi6TiKxHiGVLajJyTXhPR_7NKjbXi56xlTkEy6z5UNzDVMXMJq0XUelNLKb8yJPX-ekghs7a_TPM3mNOKZ7hmlplnoUpJlv3xXuGPBd_Sd4EL6fQ/s0/screenshot+2021-07-10+002.png&quot; /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;В результате получится образ с одним разделом, отформатированным в NTFS. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Теперь надо подключить полученный образ и скопировать на него файлы из ISO-образа. Для этого на той же вкладке надо нажать кнопку &quot;Attach/detach VHD&quot; и появившемся окне нажать кнопку &quot;Attach&quot; для подключения, скопировать файлы из ISO-образа в корень появившегося диска и нажать кнопку &quot;Detach&quot; для отключения.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2W-DDQB9YMzO8RAJPHCOgiP1TBYt4ok5SwscPKZZy1TjKAE0vwQvxyOb40KTPNwlT3Aj4a14U3pjvAhO8bF0-p5q1hKXh-JayIvJlHCYO5HCkFaJarE4eBBn2z-cbIqKNKxaFCb5M0rQ/s0/screenshot+2021-07-10+003.png&quot; /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Осталось только прописать загрузочный сектор для диска и раздела. Для этого надо отключить образ и всё на той же вкладке нажать кнопку &quot;Process MBR&quot;. Появится выбор загрузчиков и информация об уже имеющемся загрузчике на диске:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5BVfl7t9sOl77Q6PBVCFElwCX1NxGjqxxkwoUo2AM1B5XLI22cEtKBtI1tTd4vL0LIncJAb0PytFu6-0L1JslhwAhnmKoIvovXgHjWWxlefgRZMpAV-bCWPi7gS3BcV9HsPxtCMoLAng/s0/screenshot+2021-07-10+004.png&quot; /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;В данном случае на диске уже есть нужный загрузчик. Если это не так, или просто хочется всё сделать наверняка, то надо выбрать вариант &quot;Windows NT 5.x / 6.x MBR&quot;, Нажать &quot;Install / Config&quot; и из предложенного списка выбрать &quot;Windows NT 6.x MBR&quot;.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Для единственного раздела тоже нужен свой загрузочный сектор. Для этого надо нажать кнопку &quot;Process PBR&quot;. Появится окно с выбором разделов и загрузочных секторов:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;533&quot; data-original-width=&quot;335&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhY_znItv-91GeJCNOHp9N6S7ImtXFYr5B1-Dbi_NC9qpk8TPlxsgtTvn5XWUEwn-0oT6lBrg6MKpGQ4K_AwbyxkC2rf-S-7K9Bjt7J90vcMI9X5D6vdB5ii4mG4IDLXcpvkIqSVZ4BsiM/s0/screenshot+2021-07-10+006.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Тут опять же всё уже сделано, но для верности можно прописать вариант &quot;BOOTMGR boot record (FAT/FAT32/NTFS/exFAT)&quot;. После выбора этого варианта появится окно, в котором можно будет указать загрузчику имена boot-файлов, если вдруг понадобилось их переименовать. В случае распаковки ISO-образа ничего менять не надо.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Vh35vfhPRRtiyyYvpvWA9SiiicNyzglTtlNnHnK8AmsA5BtjK3Eql7bvzfCZSfk1iuERkrJKICRIUGZWFLgcchzCh-4TG5xw8dJmYK7upfq6KBosdxuGS5AcY-XDGp27DCI5WiPjGEo/s0/screenshot+2021-07-10+007.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;На этом создание VHD-образа с дистрибутивом Windows 10 завершено. Можно подключать его к виртуально машине и проверять его работоспособность.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Все эти манипуляции можно произвести и без использования BOOTICE, но с помощью программы всё делается из одного окна.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для создания, разбиения на раздела и форматирования образа можно использовать оснастку &quot;Управление дисками&quot;. В меню &quot;Действие&quot; есть все необходимые пункты.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgeXg9PafFG7hSAaWk8S-9N_8JzRf9v7J26SnVDaH5NfMitpmXBPxQ37WVfRP0t4hRcAa-nrGJXwyaF-xBqjIGnOQPq8gTJeDX_Mppnj0dIBWZSUWpC9fD7yaoH5cM6MTtHirAz-Dd3a0/s0/clipboard.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Можно так же воспользоваться программой DISKPART, которая работает из командной строки. Для неё даже можно написать примерно такой сценарий:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;CREATE VDISK FILE=&quot;I:\win10-test.vhd&quot; TYPE=EXPANDABLE MAXIMUM=6144
SELECT VDISK FILE=&quot;I:\win10-test.vhd&quot;
ATTACH VDISK
CREATE PARTITION PRIMARY
SELECT PARTITION 1
FORMAT FS=NTFS&lt;/pre&gt;

&lt;div&gt;В результате будет создан динамический VHD-образ размером 6 гигабайт с одним разделом, отформатированным в NTFS.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Аналогичным образом можно создать образ и для Windows 7, только размер можно сделать 4 гигабайта, потому что её дистрибутив занимает меньше места.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Так же у меня получилось записать образ на раздел с FAT32 вместо NTFS, но для этого пришлось пойти на некоторую хитрость.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если я правильно понял, то программа установки Windows 10 довольно универсальная и ищет все возможные варианты образов в каталоге &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;sources&lt;/span&gt;&quot;. Кроме WIM и ESD есть ещё SWM. Это по сути тот же WIM, только разбитый на несколько томов. Этим я и воспользовался, чтобы записать дистрибутив Windows 10 на носитель с FAT32.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для преобразования я использовал программу GImageX. Сначала надо извлечь файл &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;sources\install.wim&lt;/span&gt;&quot; в какой-нибудь временный каталог. В главном окне программы надо открыть вкладку &quot;Split&quot;, на ней выбрать извлечённый файл или указать файл из подключённого ISO-образа, указать место для сохранения преобразованного файла и размер томов, на которые файл будет разбиваться:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-R29fVjfW0XzRbPIfeRVySc7qDheK9sQc9gduQ2dLiMnUfDoPnSm8x_LaBhhW_rvmOpRPdJdLV_b90gJbQr9vaKEMwOQuDxPLs6U21chBomS_x2c52Rq5Ezw3l0e8WUKDQ3WOmaOSxtg/s0/screenshot+2021-07-10+008.png&quot; /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Теперь надо нажать кнопку &quot;Split&quot;. В указанном месте будет создано несколько файлов с именами &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;install.swm&lt;/span&gt;&quot;, &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;install2.swm&lt;/span&gt;&quot;, &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;install3.swm&lt;/span&gt;&quot; и так далее. Количество файлов зависит от выбранного размера тома.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь можно повторить создание VHD-образа, но на этапе разбития на разделы надо выбрать файловую систему FAT32 вместо NTFS. При распаковке файлов из образа надо пропустить файл &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;sources\install.wim&lt;/span&gt;&quot;, потому что система его просто не сможет записать из-за размера, а вместо него скопировать полученный ранее набор файлов.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После этого очень желательно повторить процедуру прописывания загрузчиков.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В результате опять же получится рабочий образ для установки системы, но с более универсальной файловой системой.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Повторить этот же опыт с Windows 7 у меня не получилось. Хотя все файлы нормально записывались на раздел с FAT32 без преобразований, но установка с этой файловой системы запускаться не хотела. В виртуальной машине я получал чёрный экран с курсором и нулевую активность со стороны носителей. При использовании NTFS такой проблемы не было.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Так же есть способ прописывания загрузочных секторов без использования программы BOOTICE.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Внутри каталога &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;boot&lt;/span&gt;&quot; установочного образа Windows есть программа &quot;&lt;i&gt;bootsect.exe&lt;/i&gt;&quot;, с помощью которой можно прописать загрузочный сектор сразу для раздела и MBR. Делается это такой командой:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;h:\boot\bootsect.exe /nt60 n: /mbr
Конечные тома будут обновлены с помощью загрузочного кода,
совместимого с BOOTMGR.

N: (\\?\Volume{3b964938-0000-0000-0000-100000000000})

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

\??\PhysicalDrive9

    Загрузочный код диска успешно обновлен.

Загрузочный код успешно обновлен на всех конечных томах.&lt;/pre&gt;
&lt;div&gt;Командную строку необходимо запустить с правами администратора.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;h:\boot\bootsect.exe&lt;/span&gt; - путь к исполняемому файлу программы. В данном случае я использовал подключённый ISO-образ.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;/nt60&lt;/span&gt; - указание прописать загрузчик, совместимый с BOOTMGR. Аналог пункта &quot;BOOTMGR boot record (FAT/FAT32/NTFS/exFAT)&quot; в программе BOOTICE.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;n:&lt;/span&gt; - буква раздела подключённого виртуального диска.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;/mbr&lt;/span&gt; - указание прописать загрузочный код в MBR выбранного диска. Аналог пункта &quot;Windows NT 5.x / 6.x MBR&quot; в программе BOOTICE.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Программа пропишет загрузочный&amp;nbsp; код в MBR того диска, которому принадлежит указанный буквой раздел.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/07/windows-7-10-fat32.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9NxDX3NezrdF7FCHKwC6HAFcmyMRFRkm_8Y-9cYWf2cntCt2RzHYhl4Yhs8bJmKEAm-atV8dpF-6COzzlA9chKFR0d5WCA1-LbQjT6mYqIjk_FGWaQlNVgIaA9qGblQB5m-JeMaaLoVc/s72-c/windows-10-logo-banner-3%255B1%255D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-4421409984058278863</guid><pubDate>Sun, 23 May 2021 12:02:00 +0000</pubDate><atom:updated>2021-05-23T15:02:09.433+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">soft</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Перенос Windows XP с IDE на SATA в Oracle VirualBox.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6fVmySN68UqNy_gSnnOJjhaXoLg7qtNmuvogPbUOcuwMyK7mWQgLr7E9M-2Ep3gvVGnIaXsao4_yPNjUckppeJeaYUmGW5kT8VfM42pjGviGlcnoQVKoYvPyw68gP_JlwgDNjMO8Uctw/s500/virtualbox-logo-vector%255B1%255D.png&quot; width=&quot;500&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Устанавливать Windows XP на SATA-диски в VirtualBox с переменным успехом я пробовал. И вот возникло желание перенести рабочую виртуальную машину с IDE-контроллера на SATA-контроллер без переустановки. В интернете нашёл инструкцию этого процесса, но на английском. Попробую собрать всё вместе.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Перенос системы выполняется всего в два этапа.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Этап первый. Добавление контроллера SATA.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;В настройках выключенной виртуальной машины надо открыть страницу с носителями и добавить новый SATA-контроллер &quot;AHCI (SATA)&quot;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0aFMOlEa5Of0PBpwfJkJXZXzptf4H_3Q6Fnb6AfXBetXKbVTgISb_dlsZXKiNf84RnxlcrNITaAmwL7gddKdnaj1gz1txml8avsYOtF-rOk0svMPhvt51FvLnqTvbGNBcCO_pavHxApk/s0/clipboard.png&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Теперь надо включить виртуальную машину и установить драйвер на только что добавленный контроллер. Для этого его необходимо скачать &quot;Intel Matrix Storage Manager Driver&quot;. Его можно найти по следующим именам файлов.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://www.helpjet.net/Fs-85016871-52205994-90215027.html&quot; target=&quot;_blank&quot;&gt;f6flpy3289.zip&lt;/a&gt; - для 32bit Windows XP.&lt;br /&gt;&lt;a href=&quot;https://www.helpjet.net/Fs-75128697-52205994-84235757.html&quot; target=&quot;_blank&quot;&gt;f6flpy6489.zip&lt;/a&gt; - для 64bit Windows XP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;На всякий случай загрузил оба файла на Яндекс.Диск по &lt;a href=&quot;https://disk.yandex.ru/d/EJjHRg9DoagK7A&quot; target=&quot;_blank&quot;&gt;ссылке&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Так же эти драйверы можно применять во время установки системы.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если драйверы установились нормально, в диспетчере устройств нет никаких ошибок, то можно переходить ко второму этапу.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Второй этап. Перенос дисков на SATA-контроллер.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Нужно выключить виртуальную машину и снова открыть страницу с накопителями в настройках. Теперь надо перетащить все диски на новый контроллер. Делать это можно с помощью мыши или удалением диска на старом контроллере и добавлением его на новом. Нужно внимательно следить, чтобы диски в порты SATA-контроллера добавлялись в том порядке, в котором они были подключены к IDE-контроллеру. Если порядок нарушен, то исправить его можно ручным указанием номера порта уже подключённого носителя.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Как минимум системный диск должен быть подключён к порту №0.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiquv054XHuWjmvH9ryEGW_CQ1dAqDjfG4vQQlPb7uYzSXoXyca4FlJ3sAT36ffkV8WAt5rRCm1xucQKKRVfTlOlMzUnDhE6a7lOh48BaTHiYWQ1S5Py5ek7C3sz7BC7m_uklusUnzU6dM/s0/screenshot+2021-05-23+001.png&quot; /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Теперь можно удалить IDE-контроллер, сохранить настройки и попробовать включить виртуальную машину. Если порядок дисков не нарушен, то система должна нормально загрузиться.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После загрузки система установит драйверы на диски и попросить перезагрузиться, чтобы начать правильно использовать диски.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь система перенесена на SATA-контроллер без переустановки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Эта инструкция актуальна только для Windows XP. Для более новых систем перед переключением дисков необходимо отредактировать реестр, чтобы служба &quot;msahci&quot; запускалась при загрузке.&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/05/windows-xp-ide-sata-oracle-virualbox.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6fVmySN68UqNy_gSnnOJjhaXoLg7qtNmuvogPbUOcuwMyK7mWQgLr7E9M-2Ep3gvVGnIaXsao4_yPNjUckppeJeaYUmGW5kT8VfM42pjGviGlcnoQVKoYvPyw68gP_JlwgDNjMO8Uctw/s72-c/virtualbox-logo-vector%255B1%255D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-1125450452322532364</guid><pubDate>Sun, 23 May 2021 11:06:00 +0000</pubDate><atom:updated>2021-05-23T14:06:43.814+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><title>Как я в заменённую SIM-карту номер добавлял.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoj2jSQOJnkOqzWi1bLrWcBK33_i41GKPqm740ppTkwsMysv-sfRrnSPBApUmGpE9hu_jgM27NNWgwT_jLbP6KH6AANTWEgx23YxhIWRICFdXBfmUApBA4WhcRP3sK5xcPEUAFm2M6anY/s500/different-sim-sizes_thumb-e1539859237769%255B1%255D.jpg&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Уже давно заметил, что при замене SIM-карты в офисе оператора в новой карте поле своего номера пустое. На самом деле ничего удивительного, потому что новая SIM-карта в принципе ничего не знает о своём номере, для регистрации в сети он никак не используется, но наблюдать &quot;Неизвестный&quot; в информации о телефоне как-то неприятно для глаза.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я немного помучил поисковики на эту тему. Почти на всех найденных сайтах говорилось, что для заполнения этого поля нужен &quot;старый Siemens&quot;, который есть у каждого в глубине ящика стола. У меня он тоже где-то есть, если не выбросили, но искать его придётся долга. Второй вариант заключался в использовании специального устройства для записи SIM-карт. И стоит оно вроде не очень дорого и продаётся на китайских площадках, но ждать несколько недель пересылки тоже не очень хочется.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Получается, что оба варианта мимо.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;У меня сейчас Samsung Galaxy A71 (SM-A715F). У него в настройках максимум можно задать имя и значок для SIM-карты, чтобы не путаться, когда оба слота заняты. До этого я пользовался ASUS ZenFone 3 Laser (ZC551KL). У него в настройках SIM-карт есть ещё поле &quot;Номер&quot;. Я думал, что оно просто косметическое, но после прописывания туда номера этот же номер появился на странице состояния SIM-карты.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я попробовал вставить в Laser SIM-карту из Galaxy и прописать номер для неё. Потом вернул карту назад. Неожиданной прописанный номер появился на странице &quot;Сведения о телефоне&quot; в Galaxy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Иногда встречалась информация, что &quot;Свой номер&quot; таким способом прописывается не совсем правильно. Попадались темы, что прописанный номер через устройства для редактирования SIM-карт не отображается правильно.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Желание купить устройство для работы с SIM-картами у меня есть, но терзает вопрос с программным обеспечением для них.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/05/sim.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoj2jSQOJnkOqzWi1bLrWcBK33_i41GKPqm740ppTkwsMysv-sfRrnSPBApUmGpE9hu_jgM27NNWgwT_jLbP6KH6AANTWEgx23YxhIWRICFdXBfmUApBA4WhcRP3sK5xcPEUAFm2M6anY/s72-c/different-sim-sizes_thumb-e1539859237769%255B1%255D.jpg" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-6703217574476891616</guid><pubDate>Sat, 01 May 2021 16:19:00 +0000</pubDate><atom:updated>2021-05-01T19:19:58.237+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">computer</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">nix</category><category domain="http://www.blogger.com/atom/ns#">soft</category><title>Как я в MPD звук через HDMI выводил.</title><description>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtiDaF0rI6IhThox68u3XCEX4wPF7wztnsY5795HcG7mMbVmN0vamsraTvRYqiZSUxOE4575IBlV_7DuRGchIdcZn_G_tkflzGT9l-RlUqBC28UDO0vtdkSAc_99hNFFsSieGNJkgvHc/s0/MPD_title%255B1%255D.png&quot; /&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Когда-то давно собрался сделать из компьютера музыкальную шкатулку с помощью &lt;a href=&quot;https://www.musicpd.org/&quot; target=&quot;_blank&quot;&gt;MPD&lt;/a&gt;, но с выводом звука не заладилось. Никак не получалось вывести звук через HDMI-порт на ресивер. Тогда я бросил эту затею и просто подключил кабель к &quot;Line Out&quot; на материнской плате. Но вот буквально недавно я в очередной раз начал тыкать вывод звука на своём домашнем &quot;недосервере&quot;.&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;На этот раз я пытался вывести звук с помощью &lt;a href=&quot;https://mpv.io/&quot; target=&quot;_blank&quot;&gt;MPV&lt;/a&gt;. У этого проигрывателя есть ключ &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;--audio-device=&lt;/span&gt;&quot;. Если ему присвоить значение &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;help&lt;/span&gt;&quot;, то он выведет список всех присутствующих в системе интерфейсов вывода звука (немного обрезал вывод):&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ mpv --audio-device=help
List of detected audio devices:
  &#39;auto&#39; (Autoselect device)
  &#39;pulse/alsa_output.pci-0000_00_1b.0.hdmi-surround&#39; (Встроенное аудио Digital Surround 5.1 (HDMI))
  &#39;alsa&#39; (Default (alsa))
  &#39;alsa/jack&#39; (JACK Audio Connection Kit)
  &#39;alsa/dmixer&#39; (dmixer)
...
  &#39;alsa/sysdefault:CARD=PCH&#39; (HDA Intel PCH, ALC887-VD Analog/Default Audio Device)
  &#39;alsa/front:CARD=PCH,DEV=0&#39; (HDA Intel PCH, ALC887-VD Analog/Front speakers)
  &#39;alsa/surround21:CARD=PCH,DEV=0&#39; (HDA Intel PCH, ALC887-VD Analog/2.1 Surround output to Front and Subwoofer speakers)
...
  &#39;alsa/hdmi:CARD=PCH,DEV=0&#39; (HDA Intel PCH, HDMI 0/HDMI Audio Output)
  &#39;alsa/dmix:CARD=PCH,DEV=0&#39; (HDA Intel PCH, ALC887-VD Analog/Direct sample mixing device)
  &#39;alsa/dmix:CARD=PCH,DEV=3&#39; (HDA Intel PCH, HDMI 0/Direct sample mixing device)
  &#39;alsa/plughw:CARD=PCH,DEV=0&#39; (HDA Intel PCH, ALC887-VD Analog/Hardware device with all software conversions)
  &#39;alsa/plughw:CARD=PCH,DEV=3&#39; (HDA Intel PCH, HDMI 0/Hardware device with all software conversions)
  &#39;alsa/usbstream:CARD=PCH&#39; (HDA Intel PCH/USB Stream Output)
  &#39;jack&#39; (Default (jack))
  &#39;sdl&#39; (Default (sdl))
&lt;/pre&gt;
&lt;div&gt;Из всего богатства выбора меня заинтересовала строка &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;alsa/hdmi:CARD=PCH,DEV=0&lt;/span&gt;&quot;, подставив это значение в параметры и пощёлкав пультом ресивера, я услышал звук из подключённых колонок. Радости моей не было предела. Если MPV может, то и с MPD должно получиться.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Но сначала я решил проверить список устройств вывода, который распознала звуковая система ALSA, для этого я запустил &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;aplay -L&lt;/span&gt;&quot;. Среди прочего в выводе было несколько пунктов про HDMI:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;hdmi:CARD=PCH,DEV=0
    HDA Intel PCH, HDMI 0
    HDMI Audio Output
dmix:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct sample mixing device
dsnoop:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct sample snooping device
hw:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct hardware device without any conversions
plughw:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Hardware device with all software conversions&lt;/pre&gt;
&lt;div&gt;Больше всего меня заинтересовал предпоследний пункт. Беспокоиться о совместном выводе звука несколькими приложениями одновременно мне не надо, потому что звук будет проигрываться только MPD или другим проигрывателем, когда первый не будет использоваться.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;MPD может выводить звук через разные интерфейсы, в том числе и через ALSA. Для этого в файл конфигурации &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/etc/mpd.conf&lt;/span&gt;&quot; я прописал вывод звука так:&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;audio_output {
        type            &quot;alsa&quot;
        name            &quot;ALSA HDMI&quot;
        device          &quot;hw:CARD=PCH,DEV=3&quot;
#       device          &quot;hdmi:CARD=PCH,DEV=0&quot;
}
&lt;/pre&gt;
&lt;div&gt;После перезапуска сервиса и обновления библиотеки музыки я добавил несколько треков в очередь и запустил воспроизведение. Звук есть!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Второй вариант я оставил на случай, если что-то случится с первым. Для удобства его можно вынести в отдельный пункт.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Подружить MPD и PulseAudio у меня так нормально и не получилось.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Пока я писал этот текст и собирал куски по конфигам, у меня MPD перестал воспроизводить звук через HDMI, жалуясь на медленный декодер (&quot;&lt;i&gt;alsa_output: Decoder is too slow; playing silence to avoid xrun&lt;/i&gt;&quot;). Перезапуск не помогал. Получилось вразумить, запустив вывод звука через этот канал с помощью MPV, а потом заново включить MPD. Шаманство помогло.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/05/mpd-hdmi.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtiDaF0rI6IhThox68u3XCEX4wPF7wztnsY5795HcG7mMbVmN0vamsraTvRYqiZSUxOE4575IBlV_7DuRGchIdcZn_G_tkflzGT9l-RlUqBC28UDO0vtdkSAc_99hNFFsSieGNJkgvHc/s72-c/MPD_title%255B1%255D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-7932526097069295404</guid><pubDate>Sat, 10 Apr 2021 11:42:00 +0000</pubDate><atom:updated>2021-04-10T14:42:35.237+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">firmware</category><category domain="http://www.blogger.com/atom/ns#">hard</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">nix</category><title>Как я Fiio BTR5 в Linux прошивал.</title><description>&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7qmpZvjbp22DYiowzV-fP8Epuh3WJ3h78KtiZGakgp6UMHnttIn4zB6wcLgoILW290TVWSSmTSRdNlY05CftYjZ8v6EVXsLirk47a7Lg8juMtyl_QluvAd1C1O1ntgpaLcEVfB64jfEg/s500/0x0%255B1%255D.png&quot; width=&quot;320&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Было у меня устройство &lt;a href=&quot;https://fiio.net.ru/catalog/amp-dac/dac-amplifier/btr5/&quot; target=&quot;_blank&quot;&gt;Fiio BTR5&lt;/a&gt; - усилитель для наушников и по совместительству bluetooth-гарнитура и внешняя звуковая карта. Изначально устройство поставлялось с прошивкой версии 1.06. Её можно было обновить до версии 2.0 программой с &lt;a href=&quot;http://www.fiio.me/forum.php?mod=viewthread&amp;amp;tid=45053&quot; target=&quot;_blank&quot;&gt;сайта производителя&lt;/a&gt;. Совсем новые устройства поставляются с прошивкой версии 2.1. Вот последнее мне и не давало покоя.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;На китайском сайте производителя можно найти &lt;a href=&quot;https://bbs.fiio.com/note/showNoteContent.do?id=201910281104318430028&quot; target=&quot;_blank&quot;&gt;установщик&lt;/a&gt; для версии 2.1. На той же странице написано, что версия 2.1 отличается от 2.0 только тем, что её прошивают на заводе. Никаких новых функций и исправлений она не несёт. Но хочется же самого свежего!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сначала я попробовал обновить устройство утилитой производителя в Windows. Перевёл его в режим DFU следующим способом:&lt;/div&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Включить устройство самой маленькой кнопкой на корпусе;&lt;/li&gt;&lt;li&gt;Перевести устройство в режим сопряжения удержанием средней кнопки до появления надписи &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;PAIRING&lt;/span&gt;&quot;;&lt;/li&gt;&lt;li&gt;Нажать и удерживать среднюю кнопку и кнопку увеличения громкости до короткого появления надписи &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;DFU&lt;/span&gt;&quot; на экране.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;После подключения к&amp;nbsp; компьютеру устройство успешно определилось системой, но программа прошивать его отказывалась. Если не получается в Windows, то пойдём в Linux.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;С &lt;a href=&quot;https://4pda.ru/forum/index.php?act=idx&quot; target=&quot;_blank&quot;&gt;форума 4PDA&lt;/a&gt; я узнал о существовании программы &lt;a href=&quot;https://sourceforge.net/projects/dfu-util/&quot; target=&quot;_blank&quot;&gt;dfu-util&lt;/a&gt;, которая используется для загрузки прошивки по USB в различные устройства, которые поддерживают режим DFU. В репозитории Debian есть версия 0.9, с сайта программы можно скачать исходный код версии 0.10. Для сборки требуется библиотека libusb версии 1.0. Я использовал версию 0.10-dev из git-репозитория &quot;git://git.code.sf.net/p/dfu-util/dfu-util&quot;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для обновления устройства нужно извлечь из архива образ прошивки и положить его по удобному пути. Файл называется &quot;&lt;i&gt;BTR5-FW2.1.C.dfu&lt;/i&gt;&quot;. Само устройство надо перевести в режим DFU по алгоритму выше и подключить к компьютеру. Если всё сделано правильно, то в выводе &quot;lsusb&quot; должна появиться похожая строка:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;Bus 001 Device 004: ID 0a12:ffff Cambridge Silicon Radio, Ltd USB Bluetooth Device in DFU State
&lt;/pre&gt;
&lt;div&gt;Теперь устройство можно прошивать:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ sudo dfu-util -d 0a12:ffff -D BTR5-FW2.1.C.dfu
dfu-util 0.10-dev

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Opening DFU capable USB device...
Device ID 0a12:ffff
Run-Time device DFU version 0101
Claiming USB DFU (Run-Time) Interface...
Setting Alternate Interface zero...
Determining device status...
DFU state(0) = appIDLE, status(0) = No error condition is present
Device really in Run-Time Mode, send DFU detach request...
Resetting USB...
Opening DFU USB Device...
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0101
Device returned transfer size 1023
Copying data from PC to DFU device
Download        [=========================] 100%      1090792 bytes
Download done.
dfu-util: unable to read DFU status after completion (LIBUSB_ERROR_TIMEOUT)
&lt;/pre&gt;
&lt;div&gt;В самом конце может появиться сообщение с текстом &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;LIBUSB_ERROR_TIMEOUT&lt;/span&gt;&quot;. Если я правильно понял, то после установки прошивки устройству должна отправляться команда на перезагрузку, но программа &quot;&lt;i&gt;dfu-util&lt;/i&gt;&quot; этого не делает. Тем не менее прошивка успешно устанавливается.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для перевода устройства в штатный режим работы его надо сбросить долгим удержанием кнопки включения. Держать надо не менее 10 секунд. После этого устройство включится, но все настройки будут сброшены до заводских.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/04/fiio-btr5-linux.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7qmpZvjbp22DYiowzV-fP8Epuh3WJ3h78KtiZGakgp6UMHnttIn4zB6wcLgoILW290TVWSSmTSRdNlY05CftYjZ8v6EVXsLirk47a7Lg8juMtyl_QluvAd1C1O1ntgpaLcEVfB64jfEg/s72-c/0x0%255B1%255D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-2128514849706826355</guid><pubDate>Sat, 27 Mar 2021 14:50:00 +0000</pubDate><atom:updated>2021-12-28T22:19:42.934+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">firmware</category><category domain="http://www.blogger.com/atom/ns#">hack</category><category domain="http://www.blogger.com/atom/ns#">hard</category><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">soft</category><title>Как я OpenWRT на WD MyBook Live ставил.</title><description>&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs0k15vjJJ1Lh07LgSadeQsX5_eycwz-MkuYm_NlmsznGT8zyXeIYAXhdyvhetgnYX7nG1b8sYvQr1QiWIkISgcRyKG2tMH3FukTJNR4xMdcHibCobm7lUjvASqGBrZM0dY_QmVFONz7E/s500/640px-Openwrt_Logo.svg%255B1%255D.png&quot; width=&quot;500&quot; /&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://openwrt.org&quot; target=&quot;_blank&quot;&gt;OpenWRT&lt;/a&gt; - это система на основе Linux для устройств с ограниченными ресурсами. В основном это домашние маршрутизаторы на MIPS и ARM.&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://market.yandex.ru/product--setevoi-nakopitel-nas-western-digital-my-book-live-2-tb-wdbacg0020hch/6917304&quot; target=&quot;_blank&quot;&gt;WD MyBook Live&lt;/a&gt; - это такое NAS для дома в виде красивой пластиковой коробки с платой и 3,5 дюймовым HDD на 2-3 ТБ. На плате установлен процессор архитектуры PowerPC с одним ядром и 256 МБ оперативной памяти.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;И вот эти две штуки умные люди попытались соединить вместе, и у них это даже получилось. И даже есть готовый образ, чтобы другие люди смогли поставить. У меня в шкафу уже года четыре точно лежит плата от этого NAS и диск на 500 ГБ, который не жалко использовать в экспериментах.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Образы прошивок можно скачать со страницы &lt;a href=&quot;https://openwrt.org/toh/western_digital/mybooklive&quot; target=&quot;_blank&quot;&gt;https://openwrt.org/toh/western_digital/mybooklive&lt;/a&gt;. Для модели с одним и двумя дисками нужны разные варианты прошивок.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Установка производится с помощью программы &lt;i&gt;dd&lt;/i&gt;, т.е. образ просто записывается на диск, диск подключается к плате, а плата подключается к сети и питанию. Вроде бы ничего сложного, но есть несколько нюансов.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После включения питания платы, я стал ожидать появления её адреса в web-интерфейсе маршрутизатора. Адрес появился, но подключиться к нему у меня не получилось ни с помощью SSH, ни с помощью telnet, ни с помощью браузера.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Чтобы не гадать и посмотреть сообщения системы, я подключил к плате переходник UART-USB. Для подобных случаев я специально распаял провода на плате по этой картинке:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL7CYPa6_StyUfOzflm7BKwz6_G5vGYVhpYbI4lLy8dgaiKSmyTrI-Rlqseo2nccidk3iEamLkNKO-c-LRwEAFEVbtgzOD5mQwqb04OOmpLdSxt7-Qe6IvGCER7kybnFwpQkH8p_AD5-k/s341/01d2c38fbd2f4ccf8684b403c334f816%255B1%255D.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;341&quot; data-original-width=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL7CYPa6_StyUfOzflm7BKwz6_G5vGYVhpYbI4lLy8dgaiKSmyTrI-Rlqseo2nccidk3iEamLkNKO-c-LRwEAFEVbtgzOD5mQwqb04OOmpLdSxt7-Qe6IvGCER7kybnFwpQkH8p_AD5-k/s16000/01d2c38fbd2f4ccf8684b403c334f816%255B1%255D.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Для подключения и использовал программу &lt;a href=&quot;http://www.9bis.net/kitty/&quot; target=&quot;_blank&quot;&gt;KiTTY&lt;/a&gt;, а в настройках соединения указывал скорость 57600 бод.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Система загрузилась нормально и даже выдала приглашения для ввода логина и пароля. Для входа используется логин &quot;root&quot; без пароля.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Я сразу же посмотрел настройки сети командой &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;ip a&lt;/span&gt;&quot;. Единственному сетевому интерфейсу почему-то был присвоен адрес 192.168.1.1, хотя система точно получила настройки по DHCP от роутера, о чём говорит web-интерфейс роутера и сообщения в логах.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;О принципах настройки OpenWRT я тогда ничего не знал, поэтому сразу полез искать настройки сети в недрах каталога &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/etc&lt;/span&gt;&quot; и нашёл их в файле &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/etc/config/network&lt;/span&gt;&quot;. В этом файле в несложном формате был прописан статический адрес для интерфейса &quot;&lt;i&gt;lan&lt;/i&gt;&quot;. Я попробовал поменять значение в строке &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;option proto&lt;/span&gt;&quot; на &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;dhcp&lt;/span&gt;&quot; и отправил плату на перезагрузку.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После перезагрузки у интерфейса уже был только выданный роутером адрес, в систему можно было зайти по SSH, а в браузере открывалась страница настройки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Вот на этом этапе уже можно делать подобие NAS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Для начала я разбил оставшееся места на диске на два раздела:&lt;/div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;1 ГБ - swap;&lt;/li&gt;&lt;li&gt;остаток - пользовательские данные.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Для этого пришлось поставить пакет &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;fdisk&lt;/span&gt;&quot;. Разбивать свободное место на разделы надо осмотрительно, потому что программа на этапе указания начала раздела предлагает номер сектора где-то в самом начале диска. Это происходит из-за того, что самый первый раздел с ядром начинается с сектора 8192. Надо с помощью команды &quot;p&quot; посмотреть таблицу разделов и указывать сектор из столбца &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;End&lt;/span&gt;&quot; строки с описанием раздела &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/dev/sda2&lt;/span&gt;&quot;, прибавив к нему единицу.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После разбивки и форматирования разделов их надо как-то смонтировать. В web-интерфейсе для этого есть страница &quot;System / Mount Points&quot;. В разделе &quot;Mount Points&quot; я попытался добавить точку монтирования для раздела под данные, но в списке выбора был только раздел с загрузчиком и раздел с системой.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Пришлось устанавить пакет &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;blkid&lt;/span&gt;&quot;, чтобы посмотреть UUID созданных разделов и вписать их вручную. Для раздела подкачки я просто вписал &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/dev/sda3&lt;/span&gt;&quot;, потому что других вариантов web-интерфейс не предоставлял. После перезагрузки всё успешно смонтировалось.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Так же я попробовал создать на большом разделе каталог &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;overlay&lt;/span&gt;&quot; и с помощью опции &quot;--bind&quot; программы &quot;&lt;i&gt;mount&lt;/i&gt;&quot; подключить его к каталогу &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/overlay&lt;/span&gt;&quot;. В разделе установки пакетов web-интерфейса размер свободного места под установку резко вырос. Отключить же &quot;overlay&quot; после этого у меня не получилось. Я не нашёл ничего похожего, что указывало бы на монтирование раздела в качестве каталога &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/overlay&lt;/span&gt;&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Чуть позже я узнал, что изменить настройки сети можно было следующими командами:&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;uci set network.lan.proto=dhcp
uci set dhcp.lan.ignore=&quot;1&quot;
uci commit
/etc/init.d/network restart
/etc/init.d/dnsmasq restart
&lt;/pre&gt;

&lt;div&gt;А запись с монтированием &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/overlay&lt;/span&gt;&quot; я нашёл в файле &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/etc/config/fstab&lt;/span&gt;&quot;, когда подключил диск к другому компьютеру и смонтировал раздел с системой. После удаления раздела с описанием точки монтирования я подключил диск назад к плате. Раздел в каталог &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;/overlay&lt;/span&gt;&quot; больше не монтировался.&lt;br /&gt;&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/03/openwrt-wd-mybook-live.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs0k15vjJJ1Lh07LgSadeQsX5_eycwz-MkuYm_NlmsznGT8zyXeIYAXhdyvhetgnYX7nG1b8sYvQr1QiWIkISgcRyKG2tMH3FukTJNR4xMdcHibCobm7lUjvASqGBrZM0dY_QmVFONz7E/s72-c/640px-Openwrt_Logo.svg%255B1%255D.png" height="72" width="72"/></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-267673149118655463.post-8884486058419990728</guid><pubDate>Sat, 27 Mar 2021 12:31:00 +0000</pubDate><atom:updated>2021-03-27T15:31:58.450+03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">man</category><category domain="http://www.blogger.com/atom/ns#">nix</category><category domain="http://www.blogger.com/atom/ns#">soft</category><category domain="http://www.blogger.com/atom/ns#">tweak</category><title>Как в сборках с libboost место экономил.</title><description>&lt;div&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-aqHG8368a_VC4KXw9UljeVe1pfQuqFWhO3wMM-giy-QrU05nVxacZewh04nLUqgDOoqnMXy3rZkLYeQcfK3D22TY_VC5rjx7MUuBdxBgo2EuCDvgwYK7bTD8TqNnvmE49t6wA-Cf5_U/s500/thumbnail242-1024x450%255B1%255D.png&quot; width=&quot;500&quot; /&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Уже довольно давно пользуюсь несколькими программами, которые для своей сборки требуют &lt;a href=&quot;https://www.boost.org/&quot; target=&quot;_blank&quot;&gt;libboost&lt;/a&gt;. Если подобные их репозиториев дистрибутива, то проблем обычно нет, потому что поставится только небольшой кусок из всего набора Boost. А вот для сборки в Debian надо качать много dev-пакетов под 300 МБ суммарным размером.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;span&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;Вот со вторым я и попытался разобраться, потому что очень не хочется, чтобы весь этот dev-набор постоянно висел в системе. Под систему у меня выделено 20 ГБ, а сборку я провожу на другом разделе, где места намного больше.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Способ я применял для сборки &lt;a href=&quot;https://wiki.znc.in/ZNC&quot; target=&quot;_blank&quot;&gt;ZNC&lt;/a&gt; и &lt;a href=&quot;https://github.com/PurpleI2P/i2pd&quot; target=&quot;_blank&quot;&gt;I2PD&lt;/a&gt;. Для сборки их используется система &lt;i&gt;cmake&lt;/i&gt; и программа &lt;i&gt;ccmake&lt;/i&gt; в качестве интерфейса для настройки сборки.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Я подразумеваю, что все необходимые программы и библиотеки для сборки уже установлены в системе.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Чтобы сэкономить место на системном разделе, надо потратить место на разделе для сборки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сначала надо скачать и распаковать архив с исходными текстами libboost со страницы &lt;a href=&quot;https://www.boost.org/users/download/&quot;&gt;https://www.boost.org/users/download/&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;wget https://dl.bintray.com/boostorg/release/1.75.0/source/boost_1_75_0.tar.bz2
tar xvf boost_1_75_0.tar.bz2
&lt;/pre&gt;&lt;p&gt;

&lt;/p&gt;&lt;div&gt;После этого надо собрать и установить библиотеки в специальный каталог, из которого они и будут браться для сборки других программ:&lt;/div&gt;

&lt;pre class=&quot;brush: bash&quot;&gt;cd boost_1_75_0/
./bootstrap.sh
./b2 --prefix=/data/build/libboost --build-dir=./build link=static runtime-link=static install
&lt;/pre&gt;

&lt;div&gt;Тут используются следующие параметры:&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;--prefix=&lt;/span&gt; - каталог, в который будут установлены собранные библиотеки и заголовочные файлы.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;--build-dir=&lt;/span&gt; - каталог, используемый в процессе сборки, чтобы не засорят дерево исходников.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;link=static runtime-link=static&lt;/span&gt; - задание метода сборки. В данном случае указывается статическая компиляция, а не в виде динамических библиотек.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;install&lt;/span&gt; - установка в указанный каталог после сборки.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сборка даже на Intel Atom не займёт много времени.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Теперь можно переходить к сборке программ.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Конфигуратору необходимо указать путь до каталога с библиотеками и ключ для использования статической сборки:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;# на примере ZNC
cd znc
mkdir -p build
cd build
BOOST_ROOT=/data/build/libboost ccmake -D Boost_USE_STATIC_RUNTIME=ON ..
&lt;/pre&gt;
&lt;div&gt;Если до этого производилась сборка с динамическими библиотеками, то в интерфейсе &lt;i&gt;ccmake&lt;/i&gt; с помощью клавиши &quot;D&quot; необходимо удалить все строки с упоминанием &quot;Boost&quot; и повторно запустить конфигурацию клавишей &quot;C&quot; и генерацию файлов сборки клавишей &quot;G&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Если всё сделано правильно, то конфигурация завершится без ошибок, а в списке параметров не будет упоминания путей до динамических библиотек из состава Boost.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;После сборки исполняемый файл программы стал примерно на 0,5 МБ больше, а из зависимостей пропали библиотеки Boost, потому что всё нужное теперь внутри.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Сборку I2PD выполнял аналогичным способом, но с использованием GCC 10.2.1 из состава Debian bullseye (testing) вместо GCC 8.3.0 из состава Debian buster (stable).&lt;/div&gt;</description><link>https://blog.radjah.ru/2021/03/libboost.html</link><author>noreply@blogger.com (Раджа)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-aqHG8368a_VC4KXw9UljeVe1pfQuqFWhO3wMM-giy-QrU05nVxacZewh04nLUqgDOoqnMXy3rZkLYeQcfK3D22TY_VC5rjx7MUuBdxBgo2EuCDvgwYK7bTD8TqNnvmE49t6wA-Cf5_U/s72-c/thumbnail242-1024x450%255B1%255D.png" height="72" width="72"/></item></channel></rss>