<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0">

<channel>

<title>Блог ни о чём, заметки с тегом: маленькие хитрости</title>
<link>https://gladilov.org.ru/blog/tags/tricks/</link>
<description></description>
<generator>E2 (v3249; Aegea)</generator>

<item>
<title>Проброс событий в ClickHouse с использованием Vector</title>
<guid isPermaLink="false">2955</guid>
<link>https://gladilov.org.ru/blog/all/forward-events-to-clickhouse-with-vector-and-balancer/</link>
<comments>https://gladilov.org.ru/blog/all/forward-events-to-clickhouse-with-vector-and-balancer/</comments>
<description>&lt;p&gt;От устройства снаружи ИС на фронтальные балансировщики приходят сообщения в локейшн&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;/&amp;lt;device_location&amp;gt;/status&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Файл журнала&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;/var/log/&amp;lt;device_access_log_file_path&amp;gt;.status.access.log&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt; разбирается с помощью vector, пересылающий события на внутренний балансировщик. Между фронтальными и внутренними балансировщиками есть сетевая связность по порту TCP&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;port&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Конфиг vector на фронтальных балансировщиках: &lt;b class="spoiler-controller pop-up_camper_clickhouse-vector-balancer-1"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_clickhouse-vector-balancer-1"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;sources:
  device-status:
    type: &amp;quot;file&amp;quot;
    max_line_bytes: 1638400
    include:
      - /var/log/&amp;lt;device_access_log_file_path&amp;gt;.status.access.log

transforms:
  device-status_filter:
    type: &amp;quot;filter&amp;quot;
    inputs:
      - device-status
    condition:
      .message != &amp;quot;&amp;quot;

  device-status_transform:
    type: &amp;quot;remap&amp;quot;
    inputs:
      - device-status_filter
    source: |
      .message = parse_jsonI(.message)
      .message.traffic_source = .host
      . = .message

sinks:
  sink_clickhouse:
    type: &amp;quot;clickhouse&amp;quot;
    inputs:
      - device-status_transform
    endpoint: &amp;quot;http://&amp;lt;inner_BGP_IP&amp;gt;:&amp;lt;port&amp;gt;&amp;quot;
    format: &amp;quot;json_as_string&amp;quot;
    healthcheck:
        enabled: false
    auth:
      strategy: &amp;quot;basic&amp;quot;
      user: &amp;quot;&amp;lt;clickhouse_DB_user&amp;gt;&amp;quot;
      password: &amp;quot;&amp;lt;clickhouse_DB_password&amp;gt;&amp;quot;
    database: &amp;quot;&amp;lt;clickhouse_DB&amp;gt;&amp;quot;
    table: &amp;quot;&amp;lt;clickhouse_table&amp;gt;&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/section&gt;&lt;/p&gt;
&lt;p&gt;Конфиг внутреннего балансировщика, пробрасывающего события в clickhouse: &lt;b class="spoiler-controller pop-up_camper_clickhouse-vector-balancer-2"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_clickhouse-vector-balancer-2"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;stream {
include /etc/&amp;lt;path_to_balancer_config&amp;gt;/log-format-s.conf;

upstream clickhouse8123 {
    server &amp;lt;clickhouse_BGP_IP&amp;gt;:8123;
    server &amp;lt;clickhouse_node1_IP&amp;gt;:8123 backup;
    server &amp;lt;clickhouse_node2_IP&amp;gt;:8123 backup;
}

server {
    listen &amp;lt;port&amp;gt;;
    proxy_pass clickhouse8123;
    access_log /var/log/&amp;lt;access_log_file_path&amp;gt; main_json_mini_s;
    error_log /var/log/&amp;lt;error_log_file_path&amp;gt;;
}
}&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/section&gt;&lt;/p&gt;
&lt;p&gt;Команды clickhouse для создания БД, таблиц и представлений: &lt;b class="spoiler-controller pop-up_camper_clickhouse-vector-balancer-3"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_clickhouse-vector-balancer-3"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;# Создание БД
CREATE DATABASE vector ON CLUSTER &amp;lt;cluster_name&amp;gt;;

DROP TABLE IF EXISTS vector.device_status_logs ON CLUSTER &amp;lt;cluster_name&amp;gt;;
# Создание таблицы
CREATE TABLE vector.device_status_logs ON CLUSTER &amp;lt;cluster_name&amp;gt; (
        'message' String
)
ENGINE = ReplicatedReplacingMergeTree('/сlickhouse/{cluster}/tables/validator_status_logs','{replica}')
ORDER BY tuple();

DROP VIEW IF EXISTS vector.device_status_logs_view ON CLUSTER &amp;lt;cluster_name&amp;gt;;
# Создание представления
CREATE MATERIALIZED VIEW vector.device_status_logs_view ON CLUSTER &amp;lt;cluster_name&amp;gt; (
        'time_stamp' DateTime,
        'req' String,
        'req_body' String
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/{cluster}/tables/device_status_logs_view','{replica}')
ORDER BY time_stamp
SETTINGS index_granularity = 8192
AS SELECT
        parseDateTimeBestEffortOrNull(JSONExtractString(message, 'timestamp')) AS time_stamp,
        simpleJSONExtractRaw(message, 'req') AS req,
        simpleJSONExtractRaw(message, 'req_body') AS req_body
FROM (
        SELECT message
        FROM vector.device_status_logs
);&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/section&gt;&lt;/p&gt;
</description>
<pubDate>Tue, 01 Jul 2025 16:23:41 +0300</pubDate>
</item>

<item>
<title>Игры с keepalived</title>
<guid isPermaLink="false">2512</guid>
<link>https://gladilov.org.ru/blog/all/keepalived-lifehacks/</link>
<comments>https://gladilov.org.ru/blog/all/keepalived-lifehacks/</comments>
<description>&lt;p&gt;&lt;img src="/blog/pictures/keepalived/logo.png" class="main_left_img" /&gt;В продолжение &lt;a href="/blog/all/setup-ip-failover-on-debian-with-keepalived/"&gt;поста о системном демоне Keepalived&lt;/a&gt;, позволяющем организовать отказоустойчивость сервиса и балансировку нагрузки. Возник вопрос — как узнать, какая нода в каком состоянии запущена? Для этого я создал две ВМ, к примеру:&lt;br /&gt;
d1 IP=172.16.32.31/24&lt;br /&gt;
d2 IP=172.16.32.32/24&lt;/p&gt;
&lt;p&gt;Конфигурация d1: &lt;b class="spoiler-controller pop-up_camper_keepalived_vm1_conf"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_keepalived_vm1_conf"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;global_defs {
   notification_email { root@localhost }
   router_id PD
    vrrp_garp_master_refresh 30
    vrrp_garp_master_refresh_repeat 2
}
vrrp_instance TEST {
    state MASTER
!    state BACKUP
    interface &amp;lt;интерфейс&amp;gt;
    virtual_router_id 101
    priority 103
!    priority 102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass &amp;lt;пароль&amp;gt;
    }
    virtual_ipaddress { 172.16.32.30/24 dev &amp;lt;интерфейс&amp;gt; label &amp;lt;интерфейс&amp;gt;:vrrp }
    notify /opt/notify.sh
}&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/section&gt;Конфигурация d2: &lt;b class="spoiler-controller pop-up_camper_keepalived_vm2_conf"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_keepalived_vm2_conf"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;global_defs {
   notification_email { root@localhost }
   router_id PD
    vrrp_garp_master_refresh 30
    vrrp_garp_master_refresh_repeat 2
}
vrrp_instance TEST {
!    state MASTER
    state BACKUP
    interface &amp;lt;интерфейс&amp;gt;
    virtual_router_id 101
!    priority 103
    priority 102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass &amp;lt;пароль&amp;gt;
    }
    virtual_ipaddress { 172.16.32.30/24 dev &amp;lt;интерфейс&amp;gt; label &amp;lt;интерфейс&amp;gt;:vrrp }
    notify /opt/notify.sh
}&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/section&gt;&lt;/p&gt;
&lt;p&gt;Для контроля текущей конфигурации (состояния) демона keepalived используется скрипт /opt/notify.sh: &lt;b class="spoiler-controller pop-up_camper_keepalived_sh_script"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_keepalived_sh_script"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;#!/bin/bash
echo $1 $2 is in $3 state &amp;gt; /var/run/keepalive.$1.$2.state&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/section&gt;Ещё полезный скрипт-однострочник:: &lt;b class="spoiler-controller pop-up_camper_keepalived_script"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_keepalived_script"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;conf=/etc/keepalived/keepalived.conf &amp;amp;&amp;amp; vip=$(expr &amp;quot;$(cat $conf)&amp;quot; : '.*\bvirtual_ipaddress\s*{\s*\(.*\)/*}') &amp;amp;&amp;amp; vip=`expr &amp;quot;$vip&amp;quot; : '\([^ ]*\)' | sed 's/\./\\\\./g'` &amp;amp;&amp;amp; if ip addr | grep -q &amp;quot;$vip&amp;quot;; then echo Primary; else echo Secondary; fi&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/section&gt;&lt;/p&gt;
</description>
<pubDate>Sun, 25 Dec 2022 22:00:09 +0300</pubDate>
</item>

<item>
<title>Напильник для Эгеи, часть 4</title>
<guid isPermaLink="false">2444</guid>
<link>https://gladilov.org.ru/blog/all/file-for-aegea-vol-4/</link>
<comments>https://gladilov.org.ru/blog/all/file-for-aegea-vol-4/</comments>
<description>&lt;p&gt;&lt;img src="/blog/pictures/file-aegea/aegea-file.jpg" align="left" /&gt;      Четвёртая часть о «доводке напильником» Эгеи.&lt;/p&gt;
&lt;p&gt;      &lt;strong&gt;Август 2022 года:&lt;/strong&gt;&lt;br /&gt;
Позавчера (02.08.2022) вынужден был переместить сайт (и блог) на домашний сервер. После переезда в тегах блога стали отображаться сообщения об ошибках: &lt;b class="spoiler-controller pop-up_camper_04_08_22-aegea-error"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_04_08_22-aegea-error"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="lightbox2" data-lightbox="04_08_22-aegea" href="/blog/pictures/file-aegea/error.jpg"&gt;&lt;img src="/blog/pictures/file-aegea/error-preview.jpg" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;/section&gt;&lt;/p&gt;
&lt;p&gt;Лёгкий гугляж завёл меня на страницу Александра Токарева &lt;a href="https://alexandertokarev.ru/all/aegea-core-php-line-2/"&gt;Эгея и красные банеры /core.php, line 2&lt;/a&gt;, но предлагаемый способ лечения (понизить версию PHP) оказался для меня неприемлемым. Решено было бороться радикальными методами — править код.&lt;/p&gt;
&lt;p&gt;&lt;a class="lightbox2" data-lightbox="04_08_22-aegea" href="/blog/pictures/file-aegea/mcedit.png"&gt;&lt;img src="/blog/pictures/file-aegea/mcedit-preview.png" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;В файле &lt;b&gt;system/core.php&lt;/b&gt; ищу переменную, вызвавшую сообщение об ошибке (&lt;b&gt;k&lt;/b&gt;). Для этого в редакторе mc ищу символ &lt;b&gt;k&lt;/b&gt; как слово целиком (whole word). Комментирую второе вхождение работы с этой переменной. После обновления страницы ошибка исчезла.&lt;/p&gt;
&lt;p&gt;P. S. Эмпирический список пакетов, необходимых к установке для работы &lt;img src="/img/sites//blog.png" style="vertical-align:middle;width:20px;height:20px;" /&gt; блога, &lt;img src="/img/sites//reader.png" style="vertical-align:middle;width:20px;height:20px;" /&gt; RSS-ридера и &lt;img src="///cloud.gladilov.org.ru/core/img/favicon.ico" style="vertical-align:middle;width:20px;height:20px;" /&gt; облака:&lt;br /&gt;
&lt;b&gt;php-mbstring php-mysql php-gd php-curl php-cli libapache2-mod-php php-xml php-zip php-intl&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;P. P. S. Версия Эгеи — релиз 2.7, версия 3249.&lt;/p&gt;
</description>
<pubDate>Thu, 04 Aug 2022 00:41:30 +0300</pubDate>
</item>

<item>
<title>Защита опций загрузчика GRUB паролём</title>
<guid isPermaLink="false">2123</guid>
<link>https://gladilov.org.ru/blog/all/boot-with-password-to-edit-grub/</link>
<comments>https://gladilov.org.ru/blog/all/boot-with-password-to-edit-grub/</comments>
<description>&lt;p&gt;&lt;img src="/blog/pictures/grub-password/grub-password.jpg" class="main_right_img" /&gt;Метод заключается в редактировании опций загрузчика GRUB, чтобы установить пароль на их изменение при загрузке системы. Настройка делается в текстовых конфигурационных файлах GRUB, и при физическом доступе к компьютеру с возможностью загрузки с LIVE-дистрибутива можно обойти и эту защиту. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое в другой ОСи. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!&lt;br /&gt;
&lt;b class="spoiler-controller pop-up_camper_29_12_21"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_29_12_21"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;Настройка пароля на загрузку системы и на редактирование опций загрузки&lt;/h2&gt;
&lt;p&gt;От имени пользователя &lt;b&gt;root&lt;/b&gt; генерируется хеш пароля:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo grub-mkpasswd-pbkdf2&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Будет показана примерно такая строка:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7B288ED37FCC577F1FFDBFE9955A3B9CA5CC47FEF524D07A75E97D17DB4F2E53AF836FBA08DF88CA8EEB7ABF87ABDE0A327A742F8DC745.476B122C205094968098043AF0DF40B4C009AA18F454A8D38E047BA7E50C5DA809F9E3C7FEAA927EF3C0F43CE0EB46072E7303F42559170A09C96DCD37A341D7&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Пример показан на рисунке 1:&lt;br /&gt;
&lt;a class="lightbox2" data-lightbox="grub-mkpasswd" href="/blog/pictures/grub-password/mkpasswd.jpg"&gt;&lt;img src="/blog/pictures/grub-password/mkpasswd-preview.jpg" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;Рисунок 1. Пример генерации хеша пароля загрузки.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Из выведенных данных скопировать строку «&lt;b&gt;grub.pbkdf2.sha512.10000………….&lt;/b&gt;» (полностью) и дописать в файл &lt;b&gt;/etc/grub.d/40_custom&lt;/b&gt;:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;set superusers=&amp;quot;&amp;lt;имя&amp;gt;&amp;quot;
password_pbkdf2 &amp;lt;имя&amp;gt; grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7...&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Поскольку файл &lt;b&gt;/etc/grub.d/40_custom&lt;/b&gt; содержит хеш пароля, то рекомендуется запретить его чтение и изменение всеми пользователями, кроме пользователя &lt;b&gt;root&lt;/b&gt;:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo chmod 711 /etc/grub.d/40_custom&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Создание нового конфигурационного файла загрузчика:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo grub-mkconfig -o /boot/grub/grub.cfg&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;После выполнения процесса перезагрузки ПК при попытке выбрать любой пункт меню будет предложено ввести имя пользователя и пароль. При вводе логина &lt;b&gt;&amp;lt;имя&amp;gt;&lt;/b&gt; и пароля, используемого в команде &lt;b&gt;grub-mkpasswd-pbkdf2&lt;/b&gt;, если учётные данные верны, система продолжит загрузку.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;N. B. Логин &lt;b&gt;&amp;lt;имя&amp;gt;&lt;/b&gt; в файле &lt;b&gt;/etc/grub.d/40_custom&lt;/b&gt; можно указать любой, он никак не связан с именами пользователей в системе, главное — не забыть его в дальнейшем. Кроме того, информацию о ​​пользователе и пароле не обязательно требуется вносить в определённый файл. Информация может быть помещена в любой файл  каталога &lt;b&gt;/etc/grub.d&lt;/b&gt;, если этот файл включён в &lt;b&gt;grub.cfg&lt;/b&gt;. Файл &lt;b&gt;/etc/grub.d/40_custom&lt;/b&gt; выбран потому, что он не перезаписывается при обновлении пакета GRUB.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;P. S. Для возможности загрузки без пароля какого-либо пункта (или пунктов) меню их необходимо найти в файле &lt;b&gt;/etc/grub.d/10_linux&lt;/b&gt; и добавить опцию:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;--unrestricted&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Пример показан на рисунке 2:&lt;br /&gt;
&lt;a class="lightbox2" data-lightbox="grub-unrestricted" href="/blog/pictures/grub-password/unrestricted.jpg"&gt;&lt;img src="/blog/pictures/grub-password/unrestricted-preview.jpg" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;Рисунок 2. Пример добавления опции класса загрузки в файл &lt;b&gt;/etc/grub.d/10_linux&lt;/b&gt;.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;В результате загрузка системы будет выполняться как и раньше — пароль в загрузчике GRUB вводить не нужно, при выборе пункта меню GRUB продолжится обычная загрузка. Но при попытке отредактировать опции загрузчика будет предложено ввести имя и пароль. Без их ввода доступ к опциям загрузки не будет дан.&lt;/p&gt;
&lt;p&gt;P. P. S. Если в меню загрузчика содержатся параметры для других ОСей, отличных от операционной системы по умолчанию (другие установки Linux, Mac OS, Windows и т. д.), в файле &lt;b&gt;/etc/grub.d/30_os-prober&lt;/b&gt; вносятся изменения в опции класса загрузки соответствующей ОСи с добавлением строки&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;--unrestricted&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Пример показан на рисунке 3:&lt;br /&gt;
&lt;a class="lightbox2" data-lightbox="grub-os-prober" href="/blog/pictures/grub-password/os-prober.jpg"&gt;&lt;img src="/blog/pictures/grub-password/os-prober-preview.jpg" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;Рисунок 3. Пример добавления опции класса загрузки в файл &lt;b&gt;/etc/grub.d/30_os-prober&lt;/b&gt; для всех найденных типов операционных систем.&lt;/i&gt;&lt;/section&gt;&lt;/p&gt;
</description>
<pubDate>Thu, 30 Dec 2021 18:42:59 +0300</pubDate>
</item>

<item>
<title>Решение проблемы BSOD у VirtualBox вместе с КриптоПРО</title>
<guid isPermaLink="false">1723</guid>
<link>https://gladilov.org.ru/blog/all/virtualbox-and-cryptopro-bsod-solution/</link>
<comments>https://gladilov.org.ru/blog/all/virtualbox-and-cryptopro-bsod-solution/</comments>
<description>&lt;p&gt;&lt;img src="/blog/pictures/vb-csp/vb-csp.jpg" class="main_right_img" /&gt;В винде VirtualBox при запуске виртуального хоста и  установленном в системе КриптоПРО выпадает в «синий экран смерти». При чём отказаться от использования КриптоПРО я не могу, пришлось запускать VirtualBox’овые виртаулки в фоновом режиме с интерфейсом. Но это не всегда удобно, можно случайно забыться и получить BSOD.&lt;/p&gt;
&lt;p&gt;Тема давно обсуждается, решения есть везде, но приведу у себя в блоге, чтобы было под рукой. В реестре нужно добавить исключения для VirtialBox в секции CryptoPRO и (обязательно) перезагрузить компьютер, так как КриптоПРО при загрузке ОСи делает свою инициализацию, которая включает чтение записей в реестре. Ветка реестра такая: &lt;b class="spoiler-controller pop-up_camper_13_04_21"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_13_04_21"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude]&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/font&gt;Добавляемые записи:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxHeadless]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxHeadless.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetDHCP]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxNetDHCP.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBox]
&amp;quot;FileName&amp;quot;=&amp;quot;VirtualBox.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxBalloonCtrl]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxBalloonCtrl.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxBugReport]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxBugReport.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxDTrace]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxDTrace.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxExtPackHelperApp]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxExtPackHelperApp.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\vbox-img]
&amp;quot;FileName&amp;quot;=&amp;quot;vbox-img.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxManage]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxManage.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetNAT]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxNetNAT.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSDL]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxSDL.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSDS]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxSDS.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSVC]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxSVC.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxTestOGL]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxTestOGL.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxWebSrv]
&amp;quot;FileName&amp;quot;=&amp;quot;VBoxWebSrv.exe&amp;quot;

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBoxVM]
&amp;quot;FileName&amp;quot;=&amp;quot;VirtualBoxVM.exe&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/font&gt;REG-файл,для добавления в реестр вышеуказанных строк: &lt;a href="/blog/pictures/vb-csp/vb-csp.reg"&gt;vb-csp.reg&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;a href="https://marvins.ru/administrirovanie/kriptopro-i-virtualbox.html"&gt;Отсюда&lt;/a&gt;&lt;/font&gt;&lt;/section&gt;&lt;/p&gt;
</description>
<pubDate>Tue, 13 Apr 2021 10:44:09 +0300</pubDate>
</item>

<item>
<title>Установка GUI на BSD</title>
<guid isPermaLink="false">177</guid>
<link>https://gladilov.org.ru/blog/all/setup-gui-on-bsd-os/</link>
<comments>https://gladilov.org.ru/blog/all/setup-gui-on-bsd-os/</comments>
<description>&lt;p&gt;&lt;img src="/blog/pictures/os/bsd-xfce.png" class="main_right_img" /&gt;Часто для моих «изысканий» нужно установить графическую подсистему и рабочую среду на BSD-подобную ОСь. Обычно выбираю окружение Xfce как лёгкое, доступное и универсальное. Минутка рекламы:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Xfce — для тех, кому нужен простой, эффективно работающий рабочий стол, который легко использовать и настраивать!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;Установку произвожу так: &lt;b class="spoiler-controller pop-up_camper_17_06_20-2"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_17_06_20-2"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;На &lt;img style="vertical-align:middle!important;" src="/img/install/os/freebsd.png" /&gt; FreeBSD 11.4:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;&lt;font size="2"&gt;# pkg update
# pkg install xorg xfce&lt;/font&gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;На &lt;img style="vertical-align:middle!important;" src="/img/install/os/netbsd.png" /&gt; NetBSD 7.1:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;&lt;font size="2"&gt;# export PKG_PATH=ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/`uname -m`/`uname -r`/All
# pkg_add -v pkgin
# pkgin update
# pkgin install xfce&lt;/font&gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;hr width="100%"&gt;&lt;center&gt;Задача &lt;font color="green"&gt;решена&lt;/font&gt;&lt;br /&gt;&lt;img src="/blog/pictures/learning/learn-mini.jpg" /&gt;&lt;/center&gt;&lt;br /&gt;
В конце «причёсываю» систему:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;&lt;font size="2"&gt;# pkgin install sudo bash mc
# useradd -m -G wheel soul
# passwd soul
# chsh -s `which bash` soul&lt;/font&gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Для старта иксов запускаю&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;&lt;font size="2"&gt;startx&lt;/font&gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;или прописываю в &lt;b&gt;~/.xinitrc&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="bash"&gt;&lt;font size="2"&gt;startxfce4&lt;/font&gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;/section&gt;&lt;font size="2"&gt;P. S. Заметка из &lt;strike&gt;кровавых подвалов&lt;/strike&gt; 2018 года, решил чуть дополнить и опубликовать из черновиков.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Нужные ссылки:&lt;br /&gt;
&lt;a href="https://www.freebsd.org/doc/handbook/x11-wm.html"&gt;https://www.freebsd.org/doc/handbook/x11-wm.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/x11-wm.html"&gt;https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/x11-wm.html&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
</description>
<pubDate>Wed, 17 Jun 2020 17:00:52 +0300</pubDate>
</item>

<item>
<title>Проверка раздела в образе диска</title>
<guid isPermaLink="false">1334</guid>
<link>https://gladilov.org.ru/blog/all/check-partition-on-disk-image/</link>
<comments>https://gladilov.org.ru/blog/all/check-partition-on-disk-image/</comments>
<description>&lt;p&gt;Часто сталкиваюсь с ситуацией, когда при попытке запуска в &lt;img src="/img/osdetect/tools/20/qemu.png" style="vertical-align:middle!important" /&gt; QEMU виртуалки с образа диска (в основном IMG) возникает ошибка &lt;b&gt;Kernel panic — not syncing: Attempted to kill init!&lt;/b&gt;: &lt;b class="spoiler-controller pop-up_camper_10_06_20-error"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_10_06_20-error"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Пример ошибки:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;sd 0:0:0:0: [sda] Attached SCSI disk
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre &amp;lt;nico@fluxnic.net&amp;gt;
eth0: SMC91C11xFD (rev 1) at d089a000 IRQ 25 [nowait]
eth0: Ethernet addr: 52:54:00:12:34:56
mousedev: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
EXT2-fs (sda2): error: couldn't mount because of unsupported optional features (244)
EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (sda2): recovery complete
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 8:2.
devtmpfs: mounted
Freeing init memory: 120K
Kernel panic - not syncing: Attempted to kill init!
[&amp;lt;c0032bec&amp;gt;] (unwind_backtrace+0x0/0xf0) from [&amp;lt;c03064dc&amp;gt;] (panic+0x58/0x170)
[&amp;lt;c03064dc&amp;gt;] (panic+0x58/0x170) from [&amp;lt;c0044054&amp;gt;] (do_exit+0x5d0/0x68c)
[&amp;lt;c0044054&amp;gt;] (do_exit+0x5d0/0x68c) from [&amp;lt;c004435c&amp;gt;] (do_group_exit+0x40/0xb0)
[&amp;lt;c004435c&amp;gt;] (do_group_exit+0x40/0xb0) from [&amp;lt;c004ed48&amp;gt;] (get_signal_to_deliver+0x1a8/0x378)
[&amp;lt;c004ed48&amp;gt;] (get_signal_to_deliver+0x1a8/0x378) from [&amp;lt;c002f124&amp;gt;] (do_signal+0x90/0x518)
[&amp;lt;c002f124&amp;gt;] (do_signal+0x90/0x518) from [&amp;lt;c002fa64&amp;gt;] (do_notify_resume+0x48/0x54)
[&amp;lt;c002fa64&amp;gt;] (do_notify_resume+0x48/0x54) from [&amp;lt;c002cc38&amp;gt;] (work_pending+0x24/0x28)&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;img src="/blog/pictures/kernel-panic/kernel-panic.jpg" /&gt;&lt;/section&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Вероятно, эта ошибка возникает при отсутствии флага проверки файловой системы (возможно, в корне ФС лежит пустой файл с именем /forcefsck). Борюсь с этим так. Командой &lt;b&gt;fdisk&lt;/b&gt; получаю сектор начала ФС (допустим — &lt;font color="red"&gt;&lt;b&gt;217156&lt;/b&gt;&lt;/font&gt;), умножаю его на размер сектора (обычно &lt;font color="red"&gt;&lt;b&gt;512&lt;/b&gt;&lt;/font&gt; байт) и получаю смещение (в данном примере — &lt;font color="red"&gt;&lt;b&gt;111183872&lt;/b&gt;&lt;/font&gt; байт). С этим смещением монтирую на спецдевайс /dev/loop0 IMG-файл. Провожу проверку с лечением возможных повреждений ФС, затем убираю монтирование спецдевайса.&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo fdisk -l &amp;lt;имя образа&amp;gt;.img
sudo losetup -o &amp;lt;смещение * 512&amp;gt; /dev/loop0 &amp;lt;имя образа&amp;gt;.img
sudo fsck -fv /dev/loop0
sudo losetup -d /dev/loop0&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/p&gt;
&lt;!--
&lt;b class="spoiler-controller pop-up_camper_04_06_20"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_04_06_20"&gt;&lt;p&gt;&lt;/p&gt;
--&gt;&lt;!--
&lt;/section&gt;

sudo mount -o loop,offset=4194304 2015-11-21-raspbian-jessie.img tmp
--&gt;&lt;p&gt;&lt;font size="2"&gt;Источники:&lt;br /&gt;
&lt;a href="http://web.archive.org/web/20161224011451/http://blog.3mdeb.com/2015/12/30/emulate-rapberry-pi-2-in-qemu/"&gt;http://web.archive.org/web/20161224011451/http://blog.3mdeb.com/2015/12/30/emulate-rapberry-pi-2-in-qemu/&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://raspberrypi.stackexchange.com/questions/40854/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block179-6"&gt;https://raspberrypi.stackexchange.com/questions/40854/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block179-6&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
</description>
<pubDate>Wed, 10 Jun 2020 16:45:54 +0300</pubDate>
</item>

<item>
<title>Исправление ошибки dpkg о не найденном ldconfig</title>
<guid isPermaLink="false">1283</guid>
<link>https://gladilov.org.ru/blog/all/dpkg-ldconfig-not-found-fix/</link>
<comments>https://gladilov.org.ru/blog/all/dpkg-ldconfig-not-found-fix/</comments>
<description>&lt;p&gt;&lt;img src="/blog/pictures/dpkg-fix/dpkg-fix.jpg" class="main_right_img" /&gt;У меня есть старая железка с &lt;img style="vertical-align:middle!important;" src="/img/install/os/debwrt.png" /&gt; DebWrt 2.0 на борту, вот такая:&lt;br /&gt;
&lt;font size="2"&gt;&lt;a class="lightbox2" data-lightbox="13.05.2020-dir320" href="/img/dir-320/320_500.png"&gt;&lt;img src="/img/dir-320/favicon.png" style="vertical-align:middle;" /&gt; D-Link DIR-320/A2E&lt;br /&gt;&lt;img src="/img/dir-320/320_150.png" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;
При выполнении команд apt-get получил предупреждения о том, что &lt;b&gt;ldconfig&lt;/b&gt; и &lt;b&gt;start-stop-daemon&lt;/b&gt; не найдены по пути поиска или не являются исполняемыми файлами (у меня русская локаль, поэтому системные сообщения выводятся на русском): &lt;b class="spoiler-controller pop-up_camper_13_05_20-2"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_13_05_20-2"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;# apt-get install debian-keyring
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  wwwconfig-common libjs-mootools javascript-common
Для их удаления используйте 'apt-get autoremove'.
НОВЫЕ пакеты, которые будут установлены:
  debian-keyring
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 4 п                                                                                                                                                              акетов не обновлено.
Необходимо скачать 31,1 MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 35,8 M                                                                                                                                                              B.
ВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать!
  debian-keyring
Установить эти пакеты без проверки [y/N]? y
Получено:1 http://archive.debian.org/debian/ squeeze/main debian-keyring all 201                                                                                                                                                              0.12.29 [31,1 MB]
Получено 31,1 MБ за 41с (745 kБ/c)
dpkg: предупреждение: «ldconfig» отсутствует в каталогах, перечисленных в PATH,                                                                                                                                                               или не является исполняемым.
dpkg: предупреждение: «start-stop-daemon» отсутствует в каталогах, перечисленных                                                                                                                                                               в PATH, или не является исполняемым.
dpkg: предупреждение: «update-rc.d» отсутствует в каталогах, перечисленных в PAT                                                                                                                                                              H, или не является исполняемым.
dpkg: В каталогах, перечисленных в PATH, отсутствуют или не являются
исполняемыми 3 необходимых программы.
NB: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin,
/usr/sbin и /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
#&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/section&gt;Для исправления этого, по совету &lt;a href="https://specialistoff.net/question/869"&gt;отсюда&lt;/a&gt; и &lt;a href="https://unix.stackexchange.com/questions/160019/dpkg-cannot-find-ldconfig-start-stop-daemon-in-the-path-variable"&gt;отсюда&lt;/a&gt;, я добавил в файл &lt;b&gt;/root/.bashrc&lt;/b&gt; такую строку:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;hr width="100%"&gt;&lt;center&gt;Задача &lt;font color="green"&gt;решена&lt;/font&gt;&lt;br /&gt;&lt;img src="/blog/pictures/learning/learn-mini.jpg" /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;UPD: Для самых слабых умом, которые (как и я) гуглят ошибку, а не читают системные месседжи до конца: достаточно было бы добавить к переменной PATH просто путь /sbin, так как оба бинарника лежат там. Ну и сообщение в конце вывода какбэ намекает: &lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;NB: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin,
/usr/sbin и /sbin.&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
</description>
<pubDate>Wed, 13 May 2020 16:40:45 +0300</pubDate>
</item>

<item>
<title>Добавление контекстного меню GIMP’а</title>
<guid isPermaLink="false">1271</guid>
<link>https://gladilov.org.ru/blog/all/gimp-context-menu/</link>
<comments>https://gladilov.org.ru/blog/all/gimp-context-menu/</comments>
<description>&lt;p&gt;Поставил GIMP (в &lt;img style="vertical-align:middle!important;" src="/img/install/os/windows.png" /&gt; Шindoшs), захотел сделать для файлов изображений контекстное меню «Редактировать в GIMP». Для этого создал &lt;img style="vertical-align:middle!important;" src="/img/special/files/reg.png" /&gt; reg-файл с таким содержимым (путь к бинарнику редактора нужно исправить на актуальный):&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\EditWithGIMP]
@=&amp;quot;Редактировать в &amp;amp;GIMP&amp;quot;
[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\EditWithGIMP\command]
@=&amp;quot;\&amp;quot;C:\\Program Files\\GIMP 2\\bin\\gimp-2.10.exe\&amp;quot; \&amp;quot;%1\&amp;quot;&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;После выполнения reg-файла контекстное меню появляется.&lt;/p&gt;
&lt;p&gt;&lt;img src="/blog/pictures/gimp-edit.jpg" /&gt;&lt;/p&gt;
</description>
<pubDate>Tue, 28 Apr 2020 14:15:48 +0300</pubDate>
</item>

<item>
<title>Запуск виндовых команд из консоли posix-систем</title>
<guid isPermaLink="false">1260</guid>
<link>https://gladilov.org.ru/blog/all/remote-windows-command-executing-from-posix-host/</link>
<comments>https://gladilov.org.ru/blog/all/remote-windows-command-executing-from-posix-host/</comments>
<description>&lt;p&gt;&lt;img src="/blog/pictures/winexe/1251-preview.png" class="main_right_img" /&gt;Недавно возникла необходимость в том, чтобы рулить виндовым сервером в домене удалённо прямо из консоли Linux-сервера. Гугляж выдал варианты типа xfreerdp, ssh-сервера для Windows, rdesktop’а, psexec’а и winexe. Мне захотелось попробовать прикрутить winexe.&lt;/p&gt;
&lt;p&gt;Процесс: &lt;b class="spoiler-controller pop-up_camper_17_04_20"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_17_04_20"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Делал в &lt;img style="vertical-align:middle!important;" src="/img/install/os/debian.png" /&gt; Debian 10 ’Buster’. Готового пакета нет, поэтому по мануалу скачал с &lt;a href="https://sourceforge.net/projects/winexe/"&gt;Sourceforge&lt;/a&gt; файл winexe-1.00.tar.gz (в дальнейшем он не пригодился). Понаставил кучу пакетов (сразу скажу, что, возможно, половина тут — лишнее):&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo aptitude install build-essential autoconf checkinstall python python-all python-dev python-all-dev python-setuptools libdcerpc-dev
sudo aptitude install gcc-mingw-w64 comerr-dev libpopt-dev libbsd-dev zlib1g-dev libc6-dev
sudo aptitude install comerr-dev libpopt-dev libbsd-dev zlib1g-dev libc6-dev python-dev
sudo aptitude install git python2.7 libpango1.0-0 libacl1-dev libldap2-dev libpam-dev libtevent-dev python2.7-dev python3.7 samba-dev libgnutls28-dev libgpgme11-dev libjansson-dev libarchive-dev
sudo aptitude install acl attr bind9utils bison debhelper dnsutils flex gdb krb5-user libaio-dev libblkid-dev libcap-dev libcups2-dev libjson-perl libncurses5-dev libreadline-dev nettle-dev perl-modules python-all-dev python-crypto python-dbg python-dnspython python3-dnspython python-markdown python3-markdown python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utils&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Выполняю&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;tar xzvf winexe-1.00.tar.gz
cd winexe-1.00/source4
./autogen.sh
/configure
make basics bin/winexe&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;На последней команде получаю ошибку:&lt;br /&gt;
&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;Creating heimdal/lib/asn1/der-protos.h
syntax error at heimdal/cf/make-proto.pl line 15, near &amp;quot;do Getopts(&amp;quot;
Execution of heimdal/cf/make-proto.pl aborted due to compilation errors.
make: *** [data.mk:197: heimdal/lib/asn1/der-protos.h] Ошибка 255&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Подхожу у кроблеме с другой стороны. Клонирую гитом самбу и всё делаю в ейных исходниках (для этого и установил кучу пакетов):&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;cd ~
git clone git://git.samba.org/samba.git ~/samba
cd ~/samba
./configure
make bin/winexe&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;В &lt;b&gt;~/samba/bin/default/examples/winexe/&lt;/b&gt; скомпилился бинарник winexe, использую его по назначению:&lt;font size="2"&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;pre class="e2-text-code"&gt;&lt;code&gt;winexe -U &amp;lt;домен&amp;gt;/&amp;lt;логин&amp;gt;%&amp;lt;пароль&amp;gt; //&amp;lt;windows-хост&amp;gt; &amp;quot;команда&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;/font&gt;Очздорова! &lt;b class="spoiler-controller pop-up_camper_17_04_20-winexe-866"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_17_04_20-winexe-866"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="lightbox2" data-lightbox="17_04_20-winexe" href="/blog/pictures/winexe/866.png"  title="Кодовая страница IBM866"&gt;&lt;img src="/blog/pictures/winexe/866-preview.png" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;/section&gt;&lt;/p&gt;
&lt;p&gt;P. S. Проблему с кодировкой думаю решить с помощью установки кодовой страницы по умолчанию по &lt;a href="https://superuser.com/questions/387569/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7"&gt;этому&lt;/a&gt; мануалу и использования перекодировщика luit из пакета x11-utils. У себя попробовал — работает: &lt;b class="spoiler-controller pop-up_camper_17_04_20-winexe-1251"&gt;Показать&lt;/b&gt;&lt;section class="spoiler pop-up_camper_17_04_20-winexe-1251"&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="lightbox2" data-lightbox="17_04_20-winexe" href="/blog/pictures/winexe/1251.png" title="Кодовая страница CP-1251"&gt;&lt;img src="/blog/pictures/winexe/1251-preview.png" style="vertical-align:middle;" /&gt;&lt;/a&gt;&lt;/section&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Источники:&lt;br /&gt;
&lt;a href="https://wiki.samba.org/index.php/Package_Dependencies_Required_to_Build_Samba"&gt;https://wiki.samba.org/index.php/Package_Dependencies_Required_to_Build_Samba&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://www.aldeid.com/wiki/Winexe"&gt;https://www.aldeid.com/wiki/Winexe&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://ru.stackoverflow.com/questions/339012/Как-подружить-luit-и-cp866"&gt;https://ru.stackoverflow.com/questions/339012/Как-подружить-luit-и-cp866&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8"&gt;https://superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://superuser.com/questions/387569/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7"&gt;https://superuser.com/questions/387569/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7&lt;/a&gt;&lt;/font&gt;&lt;/section&gt;&lt;/p&gt;
</description>
<pubDate>Fri, 17 Apr 2020 17:33:40 +0300</pubDate>
</item>


</channel>
</rss>