<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@mr_null</title><generator>teletype.in</generator><description><![CDATA[@mr_null]]></description><image><url>https://img4.teletype.in/files/3b/f2/3bf22a31-5110-41c5-b7d5-d3f0b89a15e1.png</url><title>@mr_null</title><link>https://teletype.in/@mr_null</link></image><link>https://teletype.in/@mr_null?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/mr_null?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/mr_null?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sun, 05 Apr 2026 14:31:18 GMT</pubDate><lastBuildDate>Sun, 05 Apr 2026 14:31:18 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@mr_null/dreame-xiaomi-robot</guid><link>https://teletype.in/@mr_null/dreame-xiaomi-robot?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/dreame-xiaomi-robot?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Dreame F9 pro нет зарядки, выключение на зарядной станции</title><pubDate>Sat, 31 Jan 2026 20:15:22 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/ee/a0/eea0b2ab-bcf1-4b8d-8496-97679c042bf9.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/0a/a1/0aa18ab4-aa4d-415d-952c-4df92eb9e68d.jpeg"></img>Сразу скажу, робот не видел мокрых уборок и не видел влаги. Проблема проявилась, что когда робот ставится на зарядную станцию, то происходит фраза: &quot;Идет за...&quot; и прерывается фразами:]]></description><content:encoded><![CDATA[
  <h3 id="y8DY">Ремонт</h3>
  <p id="04kk">Сразу скажу, робот не видел мокрых уборок и не видел влаги. Проблема проявилась, что когда робот ставится на зарядную станцию, то происходит фраза: &quot;Идет за...&quot; и прерывается фразами:</p>
  <p id="MhKI"><strong>Переместите робот с док станции перед выключением</strong></p>
  <p id="post-title-t3_14w1lrr"><strong>Please remove the robot from the charging dock and turn it off…</strong></p>
  <p id="WAai">И после 3 секунд выключался. Включался только после передергивания его с зарядной станции. </p>
  <p id="d4pq">Робот достаточно сильно глючил, как будто кнопки не всегда прожимались и не всегда его можно было перепрошить. Батарея не давала зарядку и была заряженной. Заблокирована не была и заряжалась от лабораторного блока. Если подать напрямую на клеммы робота эти 20v, то все проявлялось аналогично.</p>
  <p id="gh0y">Плата визуально выглядела хорошо и была залита лаком, но это пока я не стал ее снимать. Проблема крылась под кнопочным блоком, окислен разъем кнопок и окислен разъем клемм с зарядных пластин.</p>
  <p id="6e6T">Все зачистил растворителем и пропаял слегка контакты. Робот заработал как прежде. Попутно побрызгал этот разъем wd-40 так как не ясна, откуда там взялись окислы без влажных уборок. И убрал поролоновый фильтр с выпуска турбины, он забивается и не несет никакой роли кроме как со временем навернуть турбину или сильная потеря мощности.</p>
  <p id="vROv">Роботу 1.5 года из которых его использовали 1 год изредка.</p>
  <p id="qvTW"> </p>
  <figure id="ybXO" class="m_column">
    <img src="https://img1.teletype.in/files/0a/a1/0aa18ab4-aa4d-415d-952c-4df92eb9e68d.jpeg" width="1366" />
  </figure>
  <p id="b5ml">Видео как это проявлялось у других, как и у меня аналогично: <a href="https://www.reddit.com/r/Dreame_Tech/comments/14w1lrr/please_remove_the_robot_from_the_charging_dock/" target="_blank">https://www.reddit.com/r/Dreame_Tech/comments/14w1lrr/please_remove_the_robot_from_the_charging_dock/</a></p>
  <figure id="fkTm" class="m_original">
    <img src="https://img2.teletype.in/files/da/4e/da4e8aed-e003-46b0-9931-43acc1297a7e.jpeg" width="720" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/linux-kakoy-process-otkril-port</guid><link>https://teletype.in/@mr_null/linux-kakoy-process-otkril-port?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/linux-kakoy-process-otkril-port?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Linux, какой процесс открыл порт</title><pubDate>Fri, 22 Aug 2025 09:17:51 GMT</pubDate><description><![CDATA[<img src="https://img1.teletype.in/files/49/c2/49c22537-4dbd-4773-86e3-5ed180654ec2.png"></img>Создаем proc.sh]]></description><content:encoded><![CDATA[
  <p id="Zxsf">Создаем <strong>proc.sh</strong></p>
  <p id="2uBG">Разрешаем права</p>
  <p id="kmWX"><code>sudo chmod +x proc.sh</code></p>
  <p id="TsMW">Вставляем содержимое в файл <strong>proc.sh</strong>:</p>
  <pre id="Zt9B">#!/bin/bash

# Получаем список слушающих портов (TCP и UDP) из netstat
ports=$(netstat -tul | grep -E &#x27;tcp|udp&#x27; | awk &#x27;{print $4}&#x27; | awk -F: &#x27;{print $NF}&#x27; | sort -u)

# Проверяем, что порты найдены
if [ -z &quot;$ports&quot; ]; then
  echo &quot;Не найдено слушающих портов.&quot;
  exit 1
fi

# Проходим по каждому порту
for port in $ports; do
  echo &quot;Порт: $port&quot;

  # Проверяем TCP
  tcp_pids=$(sudo fuser $port/tcp 2&gt;/dev/null)
  if [ ! -z &quot;$tcp_pids&quot; ]; then
    echo &quot;  TCP:&quot;
    for pid in $tcp_pids; do
      process_name=$(ps -p $pid -o comm= 2&gt;/dev/null)
      if [ ! -z &quot;$process_name&quot; ]; then
        echo &quot;    PID: $pid, Процесс: $process_name&quot;
      else
        echo &quot;    PID: $pid, Процесс не найден&quot;
      fi
    done
  fi

  # Проверяем UDP
  udp_pids=$(sudo fuser $port/udp 2&gt;/dev/null)
  if [ ! -z &quot;$udp_pids&quot; ]; then
    echo &quot;  UDP:&quot;
    for pid in $udp_pids; do
      process_name=$(ps -p $pid -o comm= 2&gt;/dev/null)
      if [ ! -z &quot;$process_name&quot; ]; then
        echo &quot;    PID: $pid, Процесс: $process_name&quot;
      else
        echo &quot;    PID: $pid, Процесс не найден&quot;
      fi
    done
  fi
done</pre>
  <p id="HKGv">Запускаем</p>
  <p id="DduA"><code>sudo ./proc.sh</code></p>
  <figure id="mmRN" class="m_original">
    <img src="https://img1.teletype.in/files/49/c2/49c22537-4dbd-4773-86e3-5ed180654ec2.png" width="383" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/aqMLDAaUmiT</guid><link>https://teletype.in/@mr_null/aqMLDAaUmiT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/aqMLDAaUmiT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Поднять sing-box + shadowsocks</title><pubDate>Fri, 13 Jun 2025 16:08:19 GMT</pubDate><description><![CDATA[Установка для Ubuntu]]></description><content:encoded><![CDATA[
  <p id="50WK"><strong>Установка для Ubuntu</strong></p>
  <p id="pQEg">sudo mkdir -p /etc/apt/keyrings<br />sudo curl -fsSL <a href="https://sing-box.app/gpg.key" target="_blank">https://sing-box.app/gpg.key</a> -o /etc/apt/keyrings/sagernet.asc<br />sudo chmod a+r /etc/apt/keyrings/sagernet.asc<br />echo &#x27;deb [signed-by=/etc/apt/keyrings/sagernet.asc] <a href="https://deb.sagernet.org/" target="_blank">https://deb.sagernet.org/</a> * *&#x27; | sudo tee /etc/apt/sources.list.d/sagernet.sources</p>
  <p id="yQBN">======================================================</p>
  <p id="tiwa">sudo apt-get update</p>
  <p id="4g3d">sudo apt-get install sing-box</p>
  <p id="SqA8">sudo mkdir -p /etc/sing-box</p>
  <p id="b4VY">sudo nano /etc/sing-box/config.json</p>
  <p id="93vw"></p>
  <p id="6uO5"><strong>Конфиг, где заменить настройки IP, password, port от shadowsocks:</strong></p>
  <p id="frBL">{<br />  &quot;log&quot;: {<br />    &quot;level&quot;: &quot;debug&quot;,<br />    &quot;timestamp&quot;: true<br />  },<br />  &quot;dns&quot;: {<br />    &quot;servers&quot;: [<br />      {<br />        &quot;address&quot;: &quot;tls://8.8.8.8&quot;,<br />        &quot;detour&quot;: &quot;proxy&quot;<br />      },<br />      {<br />        &quot;address&quot;: &quot;8.8.8.8&quot;,<br />        &quot;detour&quot;: &quot;proxy&quot;<br />      }<br />    ],<br />    &quot;strategy&quot;: &quot;ipv4_only&quot;<br />  },<br />  &quot;inbounds&quot;: [<br />    {<br />      &quot;type&quot;: &quot;tun&quot;,<br />      &quot;interface_name&quot;: &quot;tun0&quot;,<br />      &quot;mtu&quot;: 9000,<br />      &quot;stack&quot;: &quot;system&quot;,<br />      &quot;sniff_override_destination&quot;: true,<br />      &quot;sniff&quot;: true,<br />      &quot;address&quot;: [<br />        &quot;10.0.0.1/30&quot;<br />      ],<br />      &quot;auto_route&quot;: true,<br />      &quot;endpoint_independent_nat&quot;: true,<br />      &quot;tag&quot;: &quot;tun-in&quot;,<br />      &quot;strict_route&quot;: true<br />    }<br />  ],<br />  &quot;outbounds&quot;: [<br />    { <br />      &quot;tag&quot;: &quot;proxy&quot;,<br />      &quot;type&quot;: &quot;shadowsocks&quot;,<br />      &quot;server&quot;: &quot;159.255.1.1&quot;,<br />      &quot;server_port&quot;: 27015,<br />      &quot;method&quot;: &quot;xchacha20-ietf-poly1305&quot;,<br />      &quot;password&quot;: &quot;adkasdkjjhfiwufwie&quot;,<br />      &quot;udp_over_tcp&quot;: false<br />    },<br />    {<br />      &quot;type&quot;: &quot;direct&quot;,<br />      &quot;tag&quot;: &quot;direct&quot;<br />    },<br />    {<br />      &quot;type&quot;: &quot;dns&quot;,<br />      &quot;tag&quot;: &quot;dns-out&quot;<br />    }<br />  ],<br />  &quot;route&quot;: {<br />    &quot;auto_detect_interface&quot;: true,<br />    &quot;rules&quot;: [<br />      {<br />        &quot;protocol&quot;: &quot;dns&quot;,<br />        &quot;outbound&quot;: &quot;dns-out&quot;<br />      },<br />      {<br />        &quot;ip_is_private&quot;: true,<br />        &quot;outbound&quot;: &quot;direct&quot;<br />      },<br />      {<br />        &quot;network&quot;: &quot;tcp,udp&quot;,<br />        &quot;outbound&quot;: &quot;dns-out&quot;<br />      },<br />      {<br />        &quot;type&quot;: &quot;default&quot;,<br />        &quot;outbound&quot;: &quot;proxy&quot;<br />      }<br />    ]<br />  }<br />}<br /></p>
  <p id="8PB0"><strong>Загрузка, либо через свой sh</strong></p>
  <p id="RFdM">sudo systemctl start sing-box</p>
  <p id="gR4B">sudo systemctl stop sing-box</p>
  <p id="ChLJ">sudo systemctl enable sing-box</p>
  <p id="NAEO"><strong>Проверка конфига, если не стартует </strong></p>
  <p id="EquN">sudo systemctl status sing-box</p>
  <p id="DXgW">sing-box check -c /etc/sing-box/config.json</p>
  <p id="m3tf"><strong>Запуск bash, если нужно:</strong></p>
  <p id="cxek">#!/bin/bash</p>
  <p id="w5RG">case &quot;$1&quot; in<br />    start)<br />        sudo systemctl restart sing-box<br />        echo &quot;Started successfully&quot;<br />        ;;<br />    stop)<br />        sudo systemctl stop sing-box<br />        echo &quot;All services stopped&quot;<br />        ;;<br />    *)<br />        echo &quot;Usage: $0 {start|stop}&quot;<br />        exit 1<br />        ;;<br />esac</p>
  <p id="3dd0">exit 0</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/ubuntu-extract-InstallMacOSX-InstallESD.dmg</guid><link>https://teletype.in/@mr_null/ubuntu-extract-InstallMacOSX-InstallESD.dmg?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/ubuntu-extract-InstallMacOSX-InstallESD.dmg?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Ubuntu получить InstallESD.dmg из файла InstallMacOSX.dmg</title><pubDate>Thu, 19 Sep 2024 20:31:27 GMT</pubDate><description><![CDATA[<img src="https://img1.teletype.in/files/47/be/47be89ab-d03e-4211-b647-d23007920f59.png"></img>Качаем InstallMacOSX.dmg с офф сайта, нужную вам версию. Программой dmg2img распаковываем и монтируем ISO.]]></description><content:encoded><![CDATA[
  <pre id="gOGP">sudo apt install -y hfsprogs hfsplus hfsutils dmg2img build-essential libxml2-dev libssl1.0-dev zlib1g-dev
dmg2img InstallMacOSX.dmg
losetup -P -f InstallMacOSX.img</pre>
  <p id="lKX6">Качаем InstallMacOSX.dmg с офф сайта, нужную вам версию. Программой dmg2img распаковываем и монтируем ISO.</p>
  <p id="AhZN">А теперь просто заходим в смонтированный диск и фаш дефолтный архиватор распакует все что нужно из директории. Жмем на файл InstallMacOSX.pkg и в нем берем InstallESD.dmg. Вот так, просто.</p>
  <figure id="FbAz" class="m_column">
    <img src="https://img1.teletype.in/files/47/be/47be89ab-d03e-4211-b647-d23007920f59.png" width="768" />
  </figure>
  <p id="evuD">Накатывает на загрузочную флешку так: <a href="https://github.com/eprigorodov/mkosxinstallusb" target="_blank">https://github.com/eprigorodov/mkosxinstallusb</a></p>
  <p id="rLF3"><strong>mkosxinstallusb.sh</strong></p>
  <pre id="dTwi">#!/bin/sh

set +o errexit

stick_dev=$1
installer_path=${2:-$PWD}
InstallESD_mount_point=/mnt/OSX_InstallESD
BaseSystem_mount_point=/mnt/OSX_BaseSystem
target_drive_mount_point=/mnt/OSX_installer_drive

cleanup () {
    set +e
    for path in $target_drive_mount_point $BaseSystem_mount_point $InstallESD_mount_point; do
        [ -d &quot;$path&quot; ] &amp;&amp; umount &quot;$path&quot;
    done
    sync
    for img in BaseSystem.img InstallESD.img &quot;$stick_dev&quot;; do
        [ -f &quot;$img&quot; ] &amp;&amp; kpartx -d &quot;$img&quot;
    done
    sync
    for path in $target_drive_mount_point $BaseSystem_mount_point $InstallESD_mount_point; do
        [ -d &quot;$path&quot; ] &amp;&amp; rmdir &quot;$path&quot;
    done
    rm -f InstallESD.img BaseSystem.img
}

map_partitions () {
    device=&quot;$1&quot;
    if [ -f &quot;$device&quot; ]
    then
        partitions=$(kpartx -asv &quot;$device&quot; | sed -r &#x27;s/^add\s+map\s+(\w+).*$/\/dev\/mapper\/\1/&#x27;)
    else
        partitions=$(lsblk -lnp -o NAME &quot;$device&quot; | grep -v &quot;^$device$&quot;)
    fi
    part_count=$(count_args() { echo $#; }; count_args $partitions)
    if [ &quot;$part_count&quot; = &quot;1&quot; ]
    then
        # shortcut for the target device 
        # which has just been re-partitioned by sgdisk
        # and knowingly contains only one partition
        echo &quot;$partitions&quot;
    else
        for part in $partitions 
        do
            fstype=$(lsblk -ln -o FSTYPE &quot;$part&quot;)
            if [ &quot;$fstype&quot; = &quot;hfsplus&quot; ]
            then
                echo &quot;$part&quot;
                break
            fi
        done
    fi
}

trap cleanup EXIT

if [ -z &quot;$stick_dev&quot; ]
then
    echo &#x27;Usage: $0 &lt;target_usb_drive&gt; [InstallESD.dmg]&#x27;
    echo &#x27;\twhere &lt;target_usb_drive&gt; should be a block device path, /dev/sdX&#x27;
    exit 1
fi

if [ -f &quot;$installer_path&quot; ]
then
    installer_dmg=$installer_path
else
    # assume .app package   
    installer_dmg=&quot;$installer_path/Contents/SharedSupport/InstallESD.dmg&quot;
    if [ ! -f &quot;$installer_dmg&quot; ]
    then
        # last resort
        installer_dmg=&quot;$installer_path/InstallESD.dmg&quot;
    fi
fi

if [ ! -f &quot;$installer_dmg&quot; ]
then
    echo &quot;Cannot find OS X installer disk image InstallESD.dmg&quot;
    exit 1
fi

if [ &quot;$(id -u)&quot; -ne 0 ]
then
    echo &quot;This script can only be executed by root&quot;
    exit 1
fi

for cmd in lsblk dmg2img kpartx sgdisk partprobe mkfs.hfsplus rsync; do
    if [ ! $(which $cmd) ]
    then
        echo &quot;\nCommand &#x27;$cmd&#x27; is not found. Please install required system packages:&quot;
        echo &quot;util-linux, dmg2img, kpartx, gdisk, parted, hfsprogs, rsync&quot;
        exit 1
    fi
done

if [ -b &quot;$stick_dev&quot; ]
then 
    mounted_at_root=$(lsblk $stick_dev | grep &quot;part /$&quot;) || true

    if [ ! -z &quot;$mounted_at_root&quot; ]
    then
        lsblk $stick_dev
        echo &quot;Target drive appears to contain partition mounted as root filesystem, aborting&quot;
        exit 1
    fi
fi

echo &quot;\nAll information on the target drive $stick_dev is going to be ERASED\n&quot;
REPLY=&quot;no&quot;
read -p &quot;Are you sure that you want to continue [yes/no]? &quot; REPLY
if [ &quot;$REPLY&quot; != &quot;yes&quot; ]
then
    exit 0
fi

high_sierra_checksums=&quot;d815748c242fbbe35754a8f37aea1cfbc7e919f6 b38e5f4daa014d324f1a78f91c1f30f6d68289ef e78e5f58fa3eeecf8638067902772ce814d1a89d d6e2514b5c7c7c35b53fb79e245f61eff5d54b8e 4164f0dde7316ad745426438ef013568fe0313ba 530839420356e6d77b5ff6da3a3753305da26567 ff1b9cef69573a97dccc7997f1f028c02542decf 70abc4f7240edb2674008fa68e9c7c792aa71463 0c26ff40fb1d2ac33eb956f375435504f6c82aab f67a9ef856e9cadc5e72e91df5d74e10bb485993 671f49b99e5449a5fb33b9b6e79c2578421bf52d 22e6f0335f2f98a7b0e479aa79591fcaab1505d0 23de5e8003692d47ebd09eabdffcd6b7f5ddaf6f 7b41b675611183ecb62087a1951e65b7a07ec970 52f33ce14e6d743b2eddc40ba3c73d3d37e6838a 4342b2238f8ced923de2eae48aaeaa68b146fd9f 457bf24edddc9f873542f5d4cad8adb351a8824a 57121f3d870b4d38c68111a5f5203bbe88e4b4b0 68e3149a78c27a0b1b62afad83a532ba45d09680 f4526c750174c1ecf79dacbda7ffeab5c24ca5f9 b85d4359f1b5d11f5aa1585c13da0fa3c937383b 5d6e3d13b6022b538cc1a853905169b5c037d908 901523d51d18d26b99e5179d72e0413eca253e84 b6d33822be36008b6107ea85162b886f9e59eacb 48bb76cabe2ff7be61dcd396087bc8c238b8bbee 63c47f303883473bfef56007cc63033f8547353c dc9e81f0ba874b23ed62a084ac63702bedebc8cd 20f05fa198d03046d20b17f8617843c4c71b2b8c&quot;

supported_checksums=&quot;b53c36706eef6e0e15c1f76ef51d1b552705fc75 51df126965433187403987c9d74d95c26cba9266 30b9245f7c7608c40bbdf4d4a74f3ab84dbac716 77d354ec06df0d0acc37c105ae524ba96948142b 94f9e8f7ae2540dee6fe3465f60fc037e2547d16 1432e3be6222c434b536721076ed8b16b1c6050e f7f147c54627c2a9beb1fa318394e1579b30b167 e559e142a4c9ebaaa740c575d5c3c23c6eb3fb06 139ef35e4af0da8286b2a3af326cb114d774f606 3e58d8fcff9f941f28fc7ab47b51c5651c2dfd6d f38a32b512f70ce72fa054f86991ca057ef37f78 2df533dbb6b5af5d8cc8b352de5c2d4c81ce4cf2 6b1368c4be9f043203efb2e6dd7b73541e016dbf c3cdf53048a9a99a1d1355ccef09179a0b6a3dee 7739e3f62080000da5d28efa689c53976112a262 850781fe8cb5d88c5d1bc23e704e6686ff1fcc2f f6292573395b46e8110be6077fd4827409bc948b e4311d93127d0668372b32e5342f3b455b6bc9bd 2b11b8b618a2e5100507c3c432363081db65c4c8 306a080c07e293b6765ba950bab213572704acec 5e21097f2e98417ecc12574a7bb46a402594ea4a ef5cc8851b893dbe4bc9a5cf5c648c10450af6bc a8da3a4f4499c68559a2bad4ce232f2443a333ca dc4d4d0a7cd4aea4514025d23a58d05107369fa9 4b93ff2cef88220a116fbce7c5707c9c57442bd0 059f2603a91465bcee24c864d446da30df920f85 a673c2c6d967f4da2934b7d6cf3736936970b194 eebf02a20ac27665a966957eec6f5e6fe3228a19 4a0a01806be8676cb39fb0ab5d049a198d255538 e804dea01e38f8cd28d6c1b1697487e50898dbe7 bd1997666f9786af584bfa0dc1a64d95ab4b42e6 7bc54f504aa0b769a2d0b8546393a6e0fc24671f eaf54b1b1a630af85547fed8eabbf6fe159f2b42 e5dd2bf5560033cade7dd7d7da5ceec49f701b0e a044fc01fa75b1f255dbdd6ea4fefa30cef147b0 f8fa177e4be9a69f87be23b83c30e0c8eedacf5b 67ab755a3604cd767787fed56150bdb566358f69&quot;

echo &quot;\n# verifying installer image checksum&quot;
output=$(sha1sum &quot;$installer_dmg&quot;)
checksum=${output%% *}
if $(echo $supported_checksums | grep -q &quot;$checksum&quot;)
then
    echo &quot;\t$checksum is a known checksum of OS X installer disk image&quot;
else
    if $(echo $high_sierra_checksums | grep -q &quot;$checksum&quot;)
    then
        echo &quot;\nWARNING: checksum $checksum belongs to High Sierra installer which is not supported yet&quot;
    else
        echo &quot;\nWARNING: checksum $checksum does not match any of known OSX images&quot;
    fi
    echo &quot;\tconsult with https://github.com/notpeter/apple-installer-checksums#mac-osx-installers-sha1-checksums\n&quot;
    exit 1
fi

echo &quot;\n# converting installer disk image to raw format&quot;
dmg2img &quot;$installer_dmg&quot; InstallESD.img
InstallESD_partition=&quot;$(map_partitions &quot;InstallESD.img&quot;)&quot;

echo &quot;\n# converting base system disk image to raw format&quot;
mkdir -p $InstallESD_mount_point
mount &quot;${InstallESD_partition}&quot; $InstallESD_mount_point
dmg2img $InstallESD_mount_point/BaseSystem.dmg BaseSystem.img
BaseSystem_partition=&quot;$(map_partitions &quot;BaseSystem.img&quot;)&quot;

echo &quot;\n# partitioning USB drive&quot;
if [ -b &quot;$stick_dev&quot; ]
then
    for device in $(lsblk -lnp -o NAME &quot;$stick_dev&quot; | tac)
    do
        umount -l &quot;$device&quot; 2&gt;/dev/null || true
    done
fi
sgdisk -o $stick_dev
sgdisk -n 1:0:0 -t 1:AF00 -c 1:&quot;disk image&quot; -A 1:set:2 $stick_dev
sync
stick_partition=&quot;$(map_partitions &quot;$stick_dev&quot;)&quot;
echo &quot;\nAll information on the target partition ${stick_partition} is going to be ERASED\n&quot;
REPLY=&quot;no&quot;
read -p &quot;Are you sure that you want to continue [yes/no]? &quot; REPLY
if [ &quot;$REPLY&quot; != &quot;yes&quot; ]
then
    exit 0
fi
mkfs.hfsplus -v &quot;OS X Base System&quot; &quot;${stick_partition}&quot;

rsync=&quot;rsync -aAEHW&quot;

echo &quot;\n# copying ~1.2G of installer files to the USB drive, please wait for a long sync&quot;
mkdir -p $BaseSystem_mount_point
mount &quot;${BaseSystem_partition}&quot; $BaseSystem_mount_point
mkdir -p $target_drive_mount_point
mount &quot;${stick_partition}&quot; $target_drive_mount_point
# can return 24 on Korean filenames, so suppress errors
$rsync --info=progress2 $BaseSystem_mount_point/ $target_drive_mount_point/ || true
sync

echo &quot;\n# copying ~5G of additional files to the USB drive, please wait&quot;
mount -o remount,sync $target_drive_mount_point
rm $target_drive_mount_point/System/Installation/Packages
$rsync -P $InstallESD_mount_point/Packages $target_drive_mount_point/System/Installation/
$rsync -P $InstallESD_mount_point/BaseSystem.chunklist $target_drive_mount_point/
$rsync -P $InstallESD_mount_point/BaseSystem.dmg $target_drive_mount_point/
sync

echo &quot;\n# cleaning up&quot;
exit 0</pre>
  <p id="oE19">Жопа горит от сложностей, запарился создавать загрузочники пустые от эпла, пока не разобрался в сути дела, что образы все эти нужно еще конвертировать и из второго вынимать другой образ. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/Ubuntu-reset-output-device-sound-HDMI-unlock-gnome</guid><link>https://teletype.in/@mr_null/Ubuntu-reset-output-device-sound-HDMI-unlock-gnome?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/Ubuntu-reset-output-device-sound-HDMI-unlock-gnome?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Ubuntu сбрасывается output device sound HDMI</title><pubDate>Tue, 10 Sep 2024 19:58:54 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e6/2c/e62c05ee-fd2e-40c7-8210-88ab0c41c223.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/c9/3f/c93fda94-b036-4ec1-8d70-0650499b1ead.png"></img>Решаем проблему, при разблокировке экрана сбрасывается displayport, никак побороть не удалось, пришлось вешать демона на смену.]]></description><content:encoded><![CDATA[
  <figure id="9271" class="m_column">
    <img src="https://img1.teletype.in/files/c9/3f/c93fda94-b036-4ec1-8d70-0650499b1ead.png" width="935" />
  </figure>
  <p id="ESME">Решаем проблему, при разблокировке экрана сбрасывается displayport, никак побороть не удалось, пришлось вешать демона на смену.</p>
  <p id="mS09">Для начала создаем bash файл:</p>
  <p id="ihJ1"><code>sudo nano /var/sound.sh</code></p>
  <p id="uRLv">Путь может быть любым. Содержимое:</p>
  <p id="jzs2"><code>#!/bin/bash</code></p>
  <p id="anWh"><code>dbus-monitor --session &quot;type=&#x27;signal&#x27;,interface=&#x27;org.freedesktop.DBus&#x27;&quot; |<br />  while read -r line; do  <br />    if echo &quot;$line&quot; | grep -q &quot;Audio&quot;; then<br />      pactl set-card-profile 0 output:hdmi-stereo-extra2<br />    fi<br />  done</code><br /></p>
  <p id="7Gcg">Суть какая, посмотреть что выкидывает <code>dbus-monitor --session &quot;type=&#x27;signal&#x27;,interface=&#x27;org.freedesktop.DBus&#x27;&quot;</code></p>
  <p id="2mpG">И найти все что относится за смену аудио выхода. У меня это</p>
  <figure id="Pcm0" class="m_column">
    <img src="https://img3.teletype.in/files/61/1a/611a8e6f-1621-41c1-9dc0-37e3ae1ab50f.png" width="848" />
  </figure>
  <p id="WWtU">стало быть пишем условие, если содержится Audio, то запускаем смену вывода:</p>
  <p id="1dxW"><code>pactl set-card-profile 0 output:hdmi-stereo-extra2</code></p>
  <p id="UL9U">В частности параметр <code>output:hdmi-stereo-extra2</code></p>
  <p id="SS7C">Отвечает за нужный мне выход, extra1 же за ненужный. </p>
  <p id="SHzw"><strong>Окей. </strong> </p>
  <p id="2UmZ"><code>chmod +x /var/sound.sh</code></p>
  <p id="SOoj">ставим права на запуск и запускаем для тестирования. </p>
  <p id="cZFM"><code>sh /var/sound.sh</code></p>
  <p id="JiSM">Если меняя поле в настройках, оно меняется на нужное всегда и автоматически, то вы на верном пути. Создаем демона для автозагрузки и всё.</p>
  <p id="JVDj"><code>sudo nano /etc/systemd/system/soundhdmiout.service</code></p>
  <p id="S1Tp"><code>[Unit]<br />Description=soundhdmiout<br />After=network.target</code></p>
  <p id="mpYb"><code>[Service]<br />User=null<br />ExecStart=/var/sound.sh<br />Restart=always</code></p>
  <p id="kYC7"><code>[Install]<br />WantedBy=multi-user.target</code><br /></p>
  <p id="Ui3r">Где прописываем <code>User=null</code> вашей учетки.</p>
  <p id="0mKW"><code>sudo systemctl enable soundhdmiout.service</code></p>
  <p id="SCtd"><code>sudo systemctl daemon-reload</code></p>
  <p id="zxSl">Вот пожалуй и все. Если у вас что-то не так, то колупайтесь под себя. Писалось для ubuntu 22.04</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/install-shadowsocks-2min</guid><link>https://teletype.in/@mr_null/install-shadowsocks-2min?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/install-shadowsocks-2min?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Установка Shadowsocks за 2 минуты</title><pubDate>Thu, 05 Sep 2024 09:57:38 GMT</pubDate><description><![CDATA[Настройка на сервере:]]></description><content:encoded><![CDATA[
  <p id="cDMX"><strong>Настройка на сервере:</strong></p>
  <p id="pJsz">Сразу скажу, все можно проделать и в Docker, есть и автоматические конфиги. Пропишу локальный способ установки для Ubuntu из готовых пакетов репозитория.</p>
  <p id="T8ZQ"><code>sudo apt update</code></p>
  <p id="olP6"><code>sudo apt install shadowsocks-libev</code></p>
  <p id="h3IA"><code>sudo nano /etc/shadowsocks-libev/config.json</code></p>
  <p id="9f5S">Вставляем туда:                                                         <br /><code>{<br />    &quot;server&quot;:&quot;111.111.111.111&quot;,<br />    &quot;mode&quot;:&quot;udp&quot;,<br />    &quot;server_port&quot;:27015,<br />    &quot;local_port&quot;:1080,<br />    &quot;password&quot;:&quot;b31jX3ugfgfF&quot;,<br />    &quot;timeout&quot;:86400,<br />    &quot;method&quot;:&quot;xchacha20-ietf-poly1305&quot;,<br />    &quot;dns&quot;:&quot;64.6.65.6&quot;,<br />}</code></p>
  <p id="2I2e">Где 111.111.111.111 - IP вашего VPS. Все остальное оставляем как есть.</p>
  <p id="CO9v"><code>sudo systemctl restart shadowsocks-libev</code></p>
  <p id="Qvr5"><strong>Настройка на клиенте:</strong></p>
  <p id="wuss"><code>sudo apt update</code></p>
  <p id="glt4"><code>sudo apt install shadowsocks-libev</code></p>
  <p id="pns8"><code>sudo nano /etc/shadowsocks-libev/config.json</code></p>
  <p id="a2ml"><code>{<br />    &quot;server&quot;:&quot;111.111.111.111&quot;,<br />    &quot;mode&quot;:&quot;udp&quot;,<br />    &quot;server_port&quot;:27015,<br />    &quot;local_port&quot;:1080,<br />    &quot;password&quot;:&quot;b31jX3ugfgfF&quot;,<br />    &quot;timeout&quot;:86400,<br />    &quot;method&quot;:&quot;xchacha20-ietf-poly1305&quot;,<br />    &quot;dns&quot;:&quot;64.6.65.6&quot;,<br />}</code></p>
  <p id="bC4f">Где 111.111.111.111 - IP вашего VPS. Все остальное оставляем как есть.</p>
  <p id="rBo2">Если нужно расшарить прокси в локальной сети, то дописываем </p>
  <pre id="luem">&quot;local_address&quot;:&quot;192.168.0.10&quot;,</pre>
  <p id="HfGn">где 192.168.0.10 - IP локальной машины на которой установлен клиент.</p>
  <pre id="lklv">sudo nano /etc/systemd/system/shadowsocks-libev-local@.service</pre>
  <p id="VL7O">Вставляем:</p>
  <p id="4RBc"><code>[Unit]<br />Description=Shadowsocks-Libev Local Service for %I<br />Documentation=man:ss-local(1)<br />After=network-online.target</code></p>
  <p id="PENw"><code>[Service]<br />Type=simple<br />ExecStart=/usr/bin/ss-local -v -c /etc/shadowsocks-libev/config.json</code></p>
  <p id="lrqh"><code>[Install]<br />WantedBy=multi-user.target</code></p>
  <p id="ON0E">После чего:</p>
  <p id="RZvj"><code>sudo systemctl daemon-reload &amp; \<br />sudo systemctl start shadowsocks-libev-local@local-config</code></p>
  <p id="CqC4">Автозапуск:</p>
  <p id="yzhd"><code>sudo systemctl enable shadowsocks-libev-local@local-config</code></p>
  <p id="zJnQ">Вот и все, Socks5 доступен на вашей машине на порту 1080, он с шифрованием коннектится к серверу. Создан демон для загрузки всегда.</p>
  <p id="JGM1">Как-нибудь прокси в ОС сами пропишите.</p>
  <p id="VXnu">На VPS еще желательно</p>
  <p id="e2ND"><code>sudo nano /etc/resolv.conf</code></p>
  <p id="hGhs">Стереть все и прописать:</p>
  <p id="qAcN"><code>nameserver 64.6.65.6<br />nameserver 195.46.39.40<br />search DOMAINS</code></p>
  <p id="yP5m">Перезагрузить сеть:</p>
  <p id="LHDa"><code>sudo service networking restart</code></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/Creality-Ender-2-pro-cr-touch-install-bin</guid><link>https://teletype.in/@mr_null/Creality-Ender-2-pro-cr-touch-install-bin?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/Creality-Ender-2-pro-cr-touch-install-bin?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Creality Ender 2 Pro установка CR Touch + прошивка</title><pubDate>Tue, 03 Sep 2024 09:03:06 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/24/f0/24f0a0f2-66f2-46b9-84c5-d5e97dea509b.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/00/30/0030e326-046e-44dd-831b-5a54e770c8c9.png"></img>Для начала следуем инструкции по установке:]]></description><content:encoded><![CDATA[
  <p id="YRIy">Для начала следуем инструкции по установке:</p>
  <figure id="hymP" class="m_column">
    <iframe src="https://www.youtube.com/embed/kUbiD0be31o?autoplay=0&loop=0&mute=0"></iframe>
  </figure>
  <p id="Q4Ff">Примечание по инструкции:</p>
  <p id="tm5d">Файл кронштейна берем отсюда:</p>
  <p id="3aDC"><a href="https://www.thingiverse.com/thing:5219978" target="_blank">https://www.thingiverse.com/thing:5219978</a></p>
  <p id="eDDa"><a href="https://disk.yandex.ru/d/yQp91RAEG0Jcww" target="_blank">https://disk.yandex.ru/d/yQp91RAEG0Jcww</a></p>
  <figure id="veAL" class="m_column">
    <img src="https://img1.teletype.in/files/00/30/0030e326-046e-44dd-831b-5a54e770c8c9.png" width="800" />
  </figure>
  <p id="5hXA">По файлу, встало все нормально, но прилегание к корпусу плохое, я просверлил отверстие и закрутил саморез.</p>
  <figure id="DczK" class="m_column">
    <img src="https://img3.teletype.in/files/ae/1d/ae1dccb9-f235-4289-aab0-b4310704ae5a.png" width="720" />
  </figure>
  <p id="U84N">Желательно еще обзавестись гайками. Между корпусом и датчиком вложил кусочек пенки для ровности. Провод прокладываем в канале основных проводов, запасаемся стяжками. Не забывайте зафиксировать лишние провода стяжкой внутри, так как внутри есть кулер и попавший в него провод может его остановить. У меня так было при сборке и заметил этот факт, что снизу не дует воздух.</p>
  <p id="glJG">Версия моего принтера 4.2.3, это написано на плате. Стало быть прошивка, которая на видео: </p>
  <p id="5ZFZ"><a href="https://drive.google.com/drive/folders/1ksIpQG3mgXbeyhuX-SBMAE3mRGWSbLhr" target="_blank">https://drive.google.com/drive/folders/1ksIpQG3mgXbeyhuX-SBMAE3mRGWSbLhr</a></p>
  <p id="XrbN"><a href="https://disk.yandex.ru/d/OKzZdcjFcjaYUg" target="_blank">https://disk.yandex.ru/d/OKzZdcjFcjaYUg</a></p>
  <p id="cMME">файл берем 4.2.3CRTouch - Ender-2 ProMarlin2.0.6.1X165HW.bin</p>
  <p id="wfmV"><strong>А теперь нюансы:</strong></p>
  <p id="SowK">Чел на видео настраивает слишком туго 2 листа бумаги, нужно настраивать так, что листок с небольшим усилием можно вынимать. Это важно, так как будет соплом водить по столу, Если вы делаете первый слой 0.4мм. Если меньше, то на 0.2 делаем натяг, что бумага не должна выходить из-под сопла.</p>
  <p id="y8Fc">Запомните, высота датчика всегда почти 10мм, вам нужна только корректировка -2.5 или типа того, у меня это около -3.5 мм.</p>
  <p id="ex9b">Дальше же, если будете печатать высоту слоя 0.2, просто делаем -2.7. Либо плохая адгезия первого слоя, то имеет смысл сделать растояние между столом на полсотки меньше.</p>
  <p id="z8Dk">В прошивке есть функция осмотра стола, карту нужно записывать ручками по Инфо высоте, когда он будет ходить по столу автоматически.</p>
  <p id="flrC">При запуске на печать сначала идет в центр, щупает высоту и после чего запускается печать как прежде.</p>
  <p id="0znw">С датчиком удобно, как я понял, после осмотра стола он запоминает карту и будет делать уже корректировки от центра стола. Надеюсь это так, вчера собрал, пока только тест печати запускал. Надоело крутить крутилки. Сбивался стол постоянно, со временем так стало.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/Linux-ubuntu-server-undervolting-Nvidia</guid><link>https://teletype.in/@mr_null/Linux-ubuntu-server-undervolting-Nvidia?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/Linux-ubuntu-server-undervolting-Nvidia?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Linux (ubuntu server) андервольтинг Nvidia</title><pubDate>Fri, 30 Aug 2024 11:38:52 GMT</pubDate><description><![CDATA[<img src="https://img3.teletype.in/files/6a/d4/6ad40a45-2a5e-4302-a93e-daeac96e9430.png"></img>Ограничение по питанию на примере rtx 3060.]]></description><content:encoded><![CDATA[
  <p id="ZevB">Ограничение по питанию на примере rtx 3060.</p>
  <p id="MdOa"><code>nvidia-smi</code></p>
  <figure id="Gv86" class="m_column">
    <img src="https://img3.teletype.in/files/6a/d4/6ad40a45-2a5e-4302-a93e-daeac96e9430.png" width="815" />
  </figure>
  <p id="dIOZ">Как видим, дефолт 170W, а нам нужна долгая работа карточки без отвала и перегрева, так что проще всего занизить вольтаж, и это будет занижать частоты автоматически.</p>
  <pre id="opJp">sudo nano /etc/systemd/system/gpu-limit.service</pre>
  <p id="BzVK">Создаем файл загрузки нового сервиса.</p>
  <pre id="rEGk">[Unit]
Description=GPU power limiter
After=network.target
StartLimitIntervalSec=0

[Service]
User=root
Type=simple
Restart=always
RestartSec=1
ExecStart=/usr/bin/nvidia-smi -i 0 -pl 150

[Install]
WantedBy=multi-user.target</pre>
  <p id="ooVk">Где в содержимом ставим 150, это будет 150W максимального потребления.</p>
  <pre id="80uT">sudo systemctl daemon-reload &amp; \
sudo systemctl start gpu-limit.service
sudo systemctl enable gpu-limit.service</pre>
  <p id="QWcs">Перезагружаем сервисы и смотрим статус.</p>
  <pre id="i0h5">sudo systemctl status gpu-limit.service</pre>
  <p id="DZun">А теперь смотрим лимит потребления.</p>
  <p id="ULdS"><code>nvidia-smi</code></p>
  <figure id="hYVY" class="m_column">
    <img src="https://img1.teletype.in/files/4a/56/4a56154c-fd57-45ef-bda8-cda67351bef3.png" width="799" />
  </figure>
  <p id="hjOp">Можно еще завысить частоту, пример завышения на 100 Mhz, но нужно искать готовые кейсы под разгон, сколько допустимо при определенном пиковом напряжении. Я этот параметр не дергаю, так как задача просто сохранить карту для дольшей работы, а не выжать из нее все соки.</p>
  <pre id="XbNx">nvidia-settings -a &#x27;[gpu:0]/GPUGraphicsClockOffset[4]=100&#x27; -a &#x27;[gpu:0]/GPUGraphicsClockOffset[3]=100&#x27; -a &#x27;[gpu:0]/GPUGraphicsClockOffset[2]=100&#x27;</pre>
  <p id="75ru">Полное состояние:</p>
  <pre id="fxvm">nvidia-smi -q -a    </pre>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/llama3-docker-ollama</guid><link>https://teletype.in/@mr_null/llama3-docker-ollama?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/llama3-docker-ollama?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Запуск llama3 docker через ollama</title><pubDate>Fri, 23 Aug 2024 03:57:17 GMT</pubDate><description><![CDATA[Ставим докер. После чего запускаем образ ollama.]]></description><content:encoded><![CDATA[
  <p id="3mfc">Ставим докер. После чего запускаем образ ollama.</p>
  <p id="r0mL"><strong>CPU only:</strong></p>
  <p id="HmHr"><code>sudo docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama</code></p>
  <p id="qP5j"><strong>Nvidia GPU:</strong></p>
  <pre id="y9gR">curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
    | sed &#x27;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#x27; \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update</pre>
  <pre id="dJPc">sudo apt-get install -y nvidia-container-toolkit</pre>
  <pre id="u5OM">sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker</pre>
  <pre id="s9Ui">sudo docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama</pre>
  <p id="Yn8a"><strong>AMD GPU:</strong></p>
  <pre id="2ln3">sudo docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm</pre>
  <p id="ubqt"></p>
  <p id="9JSe"><strong>После установки нужного вам образа добавляем модель.</strong></p>
  <pre id="2yiS">sudo docker exec -it ollama ollama pull llama3.1:8b</pre>
  <p id="ytQf">смотрим текущие модели и запускаем </p>
  <p id="B4A9"><code>sudo docker exec -it ollama ollama run llama3.1:8b</code></p>
  <p id="B3cr"><strong>Можно и REST API</strong></p>
  <p id="yALV">Добавляем модель.</p>
  <p id="AV1m"><code>curl -X POST <a href="http://localhost:11434/api/pull" target="_blank">http://localhost:11434/api/pull</a> -d &#x27;{&quot;model&quot;:&quot;llama3.1&quot;}&#x27;</code></p>
  <p id="t6pf">Generate a response</p>
  <pre id="hrSi">curl http://localhost:11434/api/generate -d &#x27;{
  &quot;model&quot;: &quot;llama3.1&quot;,
  &quot;prompt&quot;:&quot;Национальность Киркорова?&quot;
}&#x27;</pre>
  <p id="IxgC">Отключить стрим, ответ одним ответом:</p>
  <pre id="kU7N">curl http://localhost:11434/api/generate -d &#x27;{
  &quot;model&quot;: &quot;llama3.1&quot;,
  &quot;stream&quot;: false,
  &quot;prompt&quot;:&quot;напиши анекдот&quot;
}&#x27;</pre>
  <p id="7v2f">Chat with a model</p>
  <pre id="ePXb">curl http://localhost:11434/api/chat -d &#x27;{
  &quot;model&quot;: &quot;llama3.1&quot;,
  &quot;messages&quot;: [
    { &quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Национальность Киркорова?&quot; }
  ]
}&#x27;</pre>
  <p id="ofFP">Аналогично параметр &quot;stream&quot;: false, можно еще использовать &quot;raw&quot;: true и тд,</p>
  <p id="JfP5">полное описание параметров <a href="https://github.com/ollama/ollama/blob/main/docs/api.md" target="_blank">https://github.com/ollama/ollama/blob/main/docs/api.md</a></p>
  <p id="Cqdz">Другие модели нейронок: <a href="https://ollama.com/library" target="_blank">https://ollama.com/library</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@mr_null/avtomaticheskoe-montirovanie-LUKS-diska-imeya-pass</guid><link>https://teletype.in/@mr_null/avtomaticheskoe-montirovanie-LUKS-diska-imeya-pass?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null</link><comments>https://teletype.in/@mr_null/avtomaticheskoe-montirovanie-LUKS-diska-imeya-pass?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=mr_null#comments</comments><dc:creator>mr_null</dc:creator><title>Автоматическое монтирование LUKS диска имея только пароль</title><pubDate>Thu, 22 Aug 2024 22:10:59 GMT</pubDate><description><![CDATA[<img src="https://img3.teletype.in/files/a6/f2/a6f27400-e426-46b0-9a40-356f81beff66.png"></img>OS Ubuntu.]]></description><content:encoded><![CDATA[
  <p id="qF1K">OS Ubuntu.</p>
  <p id="9qIg">Создадим новый ключ и бросим в папку root</p>
  <p id="gF8S"><code>sudo dd if=/dev/urandom of=/root/disk250.key bs=1024 count=2</code></p>
  <p id="mGlz"><code>sudo chmod 0400 /root/disk250.key</code></p>
  <p id="UaAx">Посмотрим текущие разделы и наш зашифрованный диск</p>
  <p id="99Zt"><code>sudo lsblk -f</code></p>
  <figure id="Nwnx" class="m_original">
    <img src="https://img3.teletype.in/files/a6/f2/a6f27400-e426-46b0-9a40-356f81beff66.png" width="561" />
  </figure>
  <p id="v1li">Нам нужен именно шифрованный раздел диска <strong>nvme1n1p1 </strong>в данном случае это nvme. Добавляем созданный ключик в luks.</p>
  <p id="qcv7"><code>sudo cryptsetup luksAddKey /dev/nvme1n1p1 /root/disk250.key</code></p>
  <p id="FsbF">Теперь пропишем автозагрузку для OS. В частности это Ubuntu.</p>
  <p id="nrNu"><code>sudo nano /etc/crypttab</code></p>
  <p id="tAVe">Где добавить новую строчку:</p>
  <p id="IdfB"><code>disk250  UUID=a8e725aa-528a-46fd-a1fb-2b3da151f0b3  /root/disk250.key  luks</code></p>
  <ul id="tEjb">
    <li id="IGJe">disk250 - это имя устройства, которое будет использоваться для монтирования расшифрованного диска (например, disk250).</li>
    <li id="lQKN">UUID=UUID_устройства - это UUID вашего зашифрованного диска. Вы можете найти UUID с помощью команды <code>lsblk -f</code>.</li>
    <li id="2srl">/root/disk250.key - это путь к вашему новому ключевому файлу.</li>
    <li id="STfa">luks указывает, что устройство зашифровано с помощью LUKS.</li>
  </ul>
  <p id="p8KH">После внесения изменений в /etc/crypttab вам необходимо обновить initramfs, чтобы изменения вступили в силу при следующей загрузке:<br /><code>sudo update-initramfs -u</code></p>
  <p id="mDRn">Ребутимся и проверяем.</p>
  <p id="jqsx"><code>sudo reboot -n</code></p>
  <p id="cpCm"><code>sudo lsblk -f</code></p>
  <figure id="L5uf" class="m_original">
    <img src="https://img3.teletype.in/files/2d/b7/2db7b5e8-a42f-46ae-92ed-bd2bf6d85e11.png" width="460" />
  </figure>
  <p id="AMSV">Теперь настроим монтирование:</p>
  <p id="ppd9"><code>sudo mkdir -p /var/disk250</code></p>
  <p id="iV2n"><code>sudo chmod 777 /var/disk250</code></p>
  <p id="6miK">Я создаю каталог и монтирую на него mapper. Каталог может быть по любому пути, вероятно вы хотите в /home/mydrive</p>
  <p id="dkBl"><code>sudo mount /dev/mapper/disk250 /var/disk250</code></p>
  <p id="7IWR">Отлично, смонтировали, проверяем:</p>
  <p id="fwzk"><code>sudo df -h</code></p>
  <figure id="MZy8" class="m_original">
    <img src="https://img4.teletype.in/files/f3/c3/f3c31f45-a13a-45a7-a93f-f1999f934a51.png" width="692" />
  </figure>
  <p id="CzhT">Добавляем монтирование в автозапуск /etc/fstab:</p>
  <p id="malA"><code>sudo nano /etc/fstab</code></p>
  <p id="b2pr">Добавляем новую строчку:</p>
  <p id="jJJB"><code>/dev/mapper/disk250 /var/disk250 auto</code></p>
  <p id="DhUx">Перезагружаемся и проверяем. Каталог - диск будет открыт <code>/var/disk250</code>.</p>

]]></content:encoded></item></channel></rss>