<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>にゅーステレオ天国 (linuxについての記事)</title><link>https://kuri65536.bitbucket.io/</link><description></description><atom:link href="https://kuri65536.bitbucket.io/tags/linux.xml" rel="self" type="application/rss+xml"></atom:link><language>ja</language><copyright>Contents © 2025 &lt;a href="mailto:kuri65536@hotmail.com"&gt;Shimoda&lt;/a&gt; </copyright><lastBuildDate>Wed, 15 Oct 2025 10:55:58 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>systemd: enabling a user-unit service</title><link>https://kuri65536.bitbucket.io/posts/id03006/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;In my experience,
setting up a systemd service as a user unit can be trickier
than setting it up as a system unit.&lt;/p&gt;
&lt;p&gt;You need to pay attention to a few key points
to get it working correctly.&lt;/p&gt;
&lt;h4 id="tldr"&gt;TL;DR&lt;/h4&gt;
&lt;p&gt;At first, here is my service file.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;[Unit]
Description=voice from pushbullet
#Wants=default.target
After=network.target

[Service]
Type=simple
WorkingDirectory=%h/src/pb-va
ExecStart=%h/bin/pb_va some options...
ExecStop=pkill pb-va
Restart=always

[Install]
WantedBy=default.target
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Copy this file to the systemd directory and enable it::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;~/.config/systemd/user
$&lt;span class="w"&gt; &lt;/span&gt;cp&lt;span class="w"&gt; &lt;/span&gt;pb-va.service&lt;span class="w"&gt; &lt;/span&gt;~/.config/systemd/user
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;daemon-reload
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pb-va.service
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;pb-va.service
$&lt;span class="w"&gt; &lt;/span&gt;loginctl&lt;span class="w"&gt; &lt;/span&gt;enable-linger&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h4 id="do-not-specify-the-user-and-group-options"&gt;Do not specify the &lt;code&gt;User=&lt;/code&gt; and &lt;code&gt;Group=&lt;/code&gt; options&lt;/h4&gt;
&lt;p&gt;In the &lt;code&gt;[Service]&lt;/code&gt; section,
system units can use the &lt;code&gt;User=&lt;/code&gt; and &lt;code&gt;Group=&lt;/code&gt; options.&lt;/p&gt;
&lt;p&gt;However, user units run under your own user account by default,
so adding these options will cause the service to fail
on startup.&lt;/p&gt;
&lt;h4 id="use-user-specific-targets-like-defaulttarget"&gt;Use User-Specific Targets like default.target&lt;/h4&gt;
&lt;p&gt;You might be used to seeing targets like multi-user.target
in system-wide services.&lt;/p&gt;
&lt;p&gt;Those targets are for system units and won't work for user units.
For user services, you should almost always use WantedBy=default.target.&lt;/p&gt;
&lt;p&gt;This is the user's equivalent and
ensures your service starts after you log in.&lt;/p&gt;
&lt;p&gt;Remember to re-enable the service and reload the daemon
after changing the serfice file to
apply your changes:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;daemon-reload
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;disable&lt;span class="w"&gt; &lt;/span&gt;pb-va.service
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pb-va.service
&lt;/pre&gt;&lt;/div&gt;

&lt;h4 id="run-services-even-when-logged-out-enable-linger"&gt;Run Services Even When Logged Out (Enable Linger)&lt;/h4&gt;
&lt;p&gt;By default, user services stop when you log out.&lt;/p&gt;
&lt;p&gt;If you want your service to start at boot and keep running,
you must enable linger for your user.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;loginctl&lt;span class="w"&gt; &lt;/span&gt;enable-linger&lt;span class="w"&gt; &lt;/span&gt;your-username

&lt;span class="c1"&gt;# then confirm the linger status.&lt;/span&gt;

$&lt;span class="w"&gt; &lt;/span&gt;loginctl&lt;span class="w"&gt; &lt;/span&gt;list-users
&lt;span class="w"&gt; &lt;/span&gt;UID&lt;span class="w"&gt; &lt;/span&gt;USER&lt;span class="w"&gt;   &lt;/span&gt;LINGER
&lt;span class="m"&gt;1001&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;your-username&lt;span class="w"&gt; &lt;/span&gt;yes
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>hack</category><category>linux</category><guid>https://kuri65536.bitbucket.io/posts/id03006/</guid><pubDate>Tue, 14 Oct 2025 23:00:00 GMT</pubDate></item><item><title>systemd.mount with disk label</title><link>https://kuri65536.bitbucket.io/posts/id00840/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;here are some points&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;e2label will not work with the mounted partitions.&lt;/li&gt;
&lt;li&gt;the service file name is correspond with the &lt;code&gt;Where&lt;/code&gt; option.&lt;/li&gt;
&lt;li&gt;check the &lt;code&gt;systemctl status&lt;/code&gt; results for the unit file.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;here is my procedure and the unit file example.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# label the partition&lt;/span&gt;
e2label&lt;span class="w"&gt; &lt;/span&gt;/dev/sd??&lt;span class="w"&gt; &lt;/span&gt;hdd-label1

&lt;span class="c1"&gt;# create the unit file.&lt;/span&gt;
cat&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/systemd/system/mnt-aaa.mount&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;[Unit]&lt;/span&gt;
&lt;span class="s"&gt;Description = mount WesternDigital 1T to /mnt/aaa&lt;/span&gt;
&lt;span class="s"&gt;After = local-fs.target&lt;/span&gt;

&lt;span class="s"&gt;[Mount]&lt;/span&gt;
&lt;span class="s"&gt;#What = /dev/disk/by-label/ts1t-deg&lt;/span&gt;
&lt;span class="s"&gt;What = LABEL=wd1t-deg&lt;/span&gt;
&lt;span class="s"&gt;Where = /mnt/aaa&lt;/span&gt;
&lt;span class="s"&gt;Type = ext4&lt;/span&gt;
&lt;span class="s"&gt;Options = nofail&lt;/span&gt;

&lt;span class="s"&gt;[Install]&lt;/span&gt;
&lt;span class="s"&gt;WantedBy = default.target&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

&lt;span class="c1"&gt;# reload and mount...&lt;/span&gt;
systemctl&lt;span class="w"&gt; &lt;/span&gt;daemon-reload
systemctl&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;mnt-aaa.mount&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# check the errors&lt;/span&gt;
systemctl&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;mnt-aaa.mount
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>hack</category><category>linux</category><guid>https://kuri65536.bitbucket.io/posts/id00840/</guid><pubDate>Thu, 07 Aug 2025 10:00:00 GMT</pubDate></item><item><title>Chromebook: Input Method 2 - qterminal不調</title><link>https://kuri65536.bitbucket.io/posts/id00849/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;qterminalですが、入力はできるのですが、
BSで入力中の文字を消すと最後の一文字が残ってしまいます。&lt;/p&gt;
&lt;p&gt;文字が残ったら一回入力すればいいだけ、とはいえ不便...&lt;/p&gt;
&lt;p&gt;![remain character][こんな感じ]&lt;/p&gt;
&lt;p&gt;&lt;del&gt;1年半ほどqterminalで快適に過ごしてましたが、&lt;br&gt;
Input Methodが動かなくなりました。&lt;/del&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;terminal&lt;/th&gt;
&lt;th&gt;.&lt;/th&gt;
&lt;th&gt;24/2/20&lt;/th&gt;
&lt;th&gt;25/8/7&lt;/th&gt;
&lt;th&gt;25/10/12&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;標準terminal&lt;/td&gt;
&lt;td&gt;？&lt;/td&gt;
&lt;td&gt;？&lt;/td&gt;
&lt;td&gt;◯&lt;/td&gt;
&lt;td&gt;◯&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;st&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;terminator&lt;/td&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;terminus&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;qterminal&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;△&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;crostiniのupgradeが原因と思う。&lt;/p&gt;
&lt;p&gt;他にもOpenSCADなどグラフィック系でChromebookが&lt;br&gt;
落ちるようになった。うーん...&lt;/p&gt;</description><category>chromebook</category><category>hack</category><category>linux</category><guid>https://kuri65536.bitbucket.io/posts/id00849/</guid><pubDate>Thu, 07 Aug 2025 04:00:00 GMT</pubDate></item><item><title>apply overlayfs several directories.</title><link>https://kuri65536.bitbucket.io/posts/id00844/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;how to reduce the access to SD card in Raspberry-Pi OS.&lt;/p&gt;
&lt;p&gt;the one method for it, use the overlay filesystem to
several paths in SD card.&lt;/p&gt;
&lt;p&gt;here is the script sample to mount the overlayfs onto
SD card root file system::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;mount-overlay-usr-src:&lt;span class="w"&gt; &lt;/span&gt;/usr/src/f_overlay
mount-overlay-var-log:&lt;span class="w"&gt; &lt;/span&gt;/var/log/f_overlay

/usr/src/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;d:&lt;span class="o"&gt;=&lt;/span&gt;/mnt/storage1/usr-src
/usr/src/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;l:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;lowerdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/src
/usr/src/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;u:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$d&lt;/span&gt;/usr-src-upper
/usr/src/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;w:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$d&lt;/span&gt;/usr-src-temp
/usr/src/f_overlay:
&lt;span class="w"&gt;    &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$u&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$w&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;overlay&lt;span class="w"&gt; &lt;/span&gt;overlay&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$l&lt;/span&gt;,upperdir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$u&lt;/span&gt;,workdir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$w&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;dir&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;touch&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;

/var/log/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;d:&lt;span class="o"&gt;=&lt;/span&gt;/mnt/storage1/var-log
/var/log/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;l:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;lowerdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/var/log
/var/log/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;u:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$d&lt;/span&gt;/var-log-upper
/var/log/f_overlay:&lt;span class="w"&gt; &lt;/span&gt;w:&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$d&lt;/span&gt;/var-log-temp
/var/log/f_overlay:
&lt;span class="w"&gt;    &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$w&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;overlay&lt;span class="w"&gt; &lt;/span&gt;overlay&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$l&lt;/span&gt;,upperdir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$u&lt;/span&gt;,workdir&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$w&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;dir&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;touch&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;write down above text to Makefile then run them by::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;mount-overlay-usr-src
$&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;mount-overlay-var-log
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;make it to the systemd unit file for persistence mount.&lt;/p&gt;
&lt;p&gt;create &lt;code&gt;/etc/systemd/system/mount-overlay.service&lt;/code&gt;::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/systemd/system/mount-overlay.service&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;[Unit]&lt;/span&gt;
&lt;span class="s"&gt;Description = mount overlay filesystem to reduce SD card access.&lt;/span&gt;
&lt;span class="s"&gt;After = mnt-storage1.mount&lt;/span&gt;

&lt;span class="s"&gt;[Mount]&lt;/span&gt;
&lt;span class="s"&gt;ExecStart = make -C /path/to/script mount-overlay-var-log&lt;/span&gt;
&lt;span class="s"&gt;ExecStop = umount -f /var/log&lt;/span&gt;

&lt;span class="s"&gt;[Install]&lt;/span&gt;
&lt;span class="s"&gt;WantedBy = default.target&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;daemon-reload
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;mount-overlay
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;mount-overlay
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00844/</guid><pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate></item><item><title>ARM SBC: install mqtt server with rootless podman</title><link>https://kuri65536.bitbucket.io/posts/id00836/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;install MQTT server to SBC.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;at this time, this MQTT server does not encrypt the communications.
    we need the TLS encryption for it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;make the configuration file::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;cat&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;mqtt.conf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;allow_anonymous false&lt;/span&gt;
&lt;span class="s"&gt;listener 1883&lt;/span&gt;
&lt;span class="s"&gt;listener 9001&lt;/span&gt;
&lt;span class="s"&gt;protocol websockets&lt;/span&gt;
&lt;span class="s"&gt;persistence true&lt;/span&gt;
&lt;span class="s"&gt;password_file        /srv/mqtt/mqtt.pwfile&lt;/span&gt;
&lt;span class="s"&gt;persistence_file     mqtt.db&lt;/span&gt;
&lt;span class="s"&gt;persistence_location /srv/mqtt/data/&lt;/span&gt;

&lt;span class="s"&gt;user root  # for podman rootless&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;

points:
-&lt;span class="w"&gt; &lt;/span&gt;persistence_file&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;relative&lt;span class="w"&gt; &lt;/span&gt;path&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;persistence_location&lt;span class="sb"&gt;`&lt;/span&gt;
-&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;rootless&lt;span class="w"&gt; &lt;/span&gt;podman&lt;span class="w"&gt; &lt;/span&gt;needs&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;root&lt;span class="w"&gt; &lt;/span&gt;user&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;as&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;running&lt;span class="w"&gt; &lt;/span&gt;user,
&lt;span class="w"&gt;    &lt;/span&gt;containers&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;mqtt&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;user&lt;span class="w"&gt; &lt;/span&gt;does&lt;span class="w"&gt; &lt;/span&gt;not&lt;span class="w"&gt; &lt;/span&gt;have&lt;span class="w"&gt; &lt;/span&gt;any&lt;span class="w"&gt; &lt;/span&gt;permissions&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;mounted&lt;span class="w"&gt; &lt;/span&gt;points.

create&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;container&lt;span class="w"&gt; &lt;/span&gt;file::

&lt;span class="sb"&gt;```&lt;/span&gt;bash
mkdir&lt;span class="w"&gt; &lt;/span&gt;app.mqtt&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;app.mqtt
cat&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Containerfile&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;lt;&amp;lt;EOF&lt;/span&gt;
&lt;span class="s"&gt;FROM debian:12.11-slim&lt;/span&gt;

&lt;span class="s"&gt;RUN apt update -y&lt;/span&gt;
&lt;span class="s"&gt;RUN apt install -y mosquitte&lt;/span&gt;

&lt;span class="s"&gt;RUN mkdir -p /srv/mqtt&lt;/span&gt;
&lt;span class="s"&gt;RUN mosquitte_passwd -c -b /root/mqtt.pwfile admin ??????&lt;/span&gt;
&lt;span class="s"&gt;RUN mosquitte_passwd    -b /root/mqtt.pwfile sensor1 ?????&lt;/span&gt;
&lt;span class="s"&gt;RUN mosquitte_passwd    -b /root/mqtt.pwfile sensor2 ?????&lt;/span&gt;
&lt;span class="s"&gt;RUN mosquitte_passwd    -b /root/mqtt.pwfile viewer  ?????&lt;/span&gt;

&lt;span class="s"&gt;COPY mqtt.conf /srv/mqtt/mqtt.conf&lt;/span&gt;
&lt;span class="s"&gt;CMD ["mosquitte", "-c", "/srv/mqtt/mqtt.conf"]&lt;/span&gt;
&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;build the container::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;podman&lt;span class="w"&gt; &lt;/span&gt;build&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;mqtt-server
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;up the container::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;ext&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/mnt/external/mqtt
podman&lt;span class="w"&gt; &lt;/span&gt;run&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;/srv/mqtt/data:&lt;span class="nv"&gt;$ext&lt;/span&gt;/data&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;/srv/mqtt/log:&lt;span class="nv"&gt;$ext&lt;/span&gt;/log&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1883&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9001&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;           &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;mqtt-server
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00836/</guid><pubDate>Sun, 22 Jun 2025 23:00:00 GMT</pubDate></item><item><title>ARM SBC: podman install</title><link>https://kuri65536.bitbucket.io/posts/id00834/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;My experience in the debian armhf.
To install podman, according to &lt;a href="https://wiki.debian.org/Podman"&gt;https://wiki.debian.org/Podman&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;it is need to enable the registory at search::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;podman
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'unqualified-search-registries=["quay.io"]'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/registries.conf
&lt;span class="nv"&gt;CONTAINERS_REGISTRIES_CONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/registries.conf&lt;span class="w"&gt; &lt;/span&gt;podman&lt;span class="w"&gt; &lt;/span&gt;search&lt;span class="w"&gt; &lt;/span&gt;podman
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;move cache directory to an external drive,&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;/nmt/external/containers.&lt;span class="nv"&gt;$USER&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;chown&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;:&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/nmt/external/containers.&lt;span class="nv"&gt;$USER&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;bind&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt/external/containers.&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;~/.local/share/containers
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;thanks &lt;a href="https://github.com/containers/podman/issues/1916#issuecomment-443839998"&gt;podman github&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;I want to build the application from a debian image.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;podman&lt;span class="w"&gt; &lt;/span&gt;pull&lt;span class="w"&gt; &lt;/span&gt;debian:12.11-slim
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;build the application.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;app&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;app
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FROM debian:12.11-slim"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Containerfile
podman&lt;span class="w"&gt; &lt;/span&gt;build
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;install the network program:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;uidmap
sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;slirp4netns
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;thanks &lt;a href="https://github.com/containers/podman/issues/7810"&gt;github issue&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;then run the container:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;podman&lt;span class="w"&gt; &lt;/span&gt;run
&lt;/pre&gt;&lt;/div&gt;

&lt;!-- TETHER_END --&gt;</description><category>debian</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00834/</guid><pubDate>Sun, 15 Jun 2025 23:00:00 GMT</pubDate></item><item><title>ARM SBC: overlayfs error -2</title><link>https://kuri65536.bitbucket.io/posts/id00835/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;overlayfs errors had began from 2025/05/25,
since the SBC was launched at 2024/09/23::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;zram-config stop 2025-02-25-08:00:44-JST
ztab remove log /zram1 /var/log /opt/zram/log.bind
serviceConfiguration: Stopping services that interfere with zram device configuration.
removeZdir: Beginning removal of device /dev/zram1.
umount: /var/log (overlay1) unmounted
mergeOverlay: Beginning merge of /opt/zram/opt/zram/log.bind.
ls: /opt/zram/zram1/upper: Input/output error
/opt/zram:
ls: /opt/zram/zram1: Input/output error
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I think, it is worth to use overlayfs and zram-config at the sametime,
then the overlayfs cannot mount at boot::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;kernel: overlayfs: "xino" feature enabled using 2 upper inode
kernel: overlayfs: failed to verify origin (/, ino=12,
kernel: overlayfs: failed to verify upper root origin
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;to fix it, disable the features of overlayfs at mount. by::&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;index=off,metacopy=off
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;here is my fstab.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;overlay /var/log overlay noauto,index=off,metacopy=off,workdir=/mnt/external/var-log.tmp,lowerdir=/var/log,upperdir=/mnt/external/var-log 0 0
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;thanks for &lt;a href="https://bbs.archlinux.org/viewtopic.php?pid=2031633#p2031633"&gt;arch linux BBS&lt;/a&gt;&lt;/p&gt;
&lt;!-- TETHER_END --&gt;

&lt;p&gt;overlayfsにエラー発生して、以後書き込みができなくなっていた。&lt;/p&gt;
&lt;p&gt;その後、再起動してもマウントできなくなった。&lt;/p&gt;
&lt;p&gt;あまり起こらないエラーのようで&lt;br&gt;
対処法がなかった。&lt;/p&gt;
&lt;p&gt;上のようにすると回避はできた。&lt;/p&gt;
&lt;p&gt;何の機能でどういうメリットがあるのかは&lt;br&gt;
調べていないが...&lt;/p&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00835/</guid><pubDate>Sat, 14 Jun 2025 23:00:00 GMT</pubDate></item><item><title>Chromebook Linux terminal(6): podmanでGitHub actionする</title><link>https://kuri65536.bitbucket.io/posts/id00774/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;GitHub actionではいろいろなことが自動化できて、&lt;br&gt;
私のように自宅に良いPCを持ってない場合は随分助かります。&lt;/p&gt;
&lt;p&gt;ただ、GitHub actionのデバッグを&lt;br&gt;
ブラウザで実行するのは待ち時間が長かったり、大変です。&lt;/p&gt;
&lt;p&gt;Localでデバッグができるactを使用します。&lt;/p&gt;
&lt;!-- TETHER_END --&gt;

&lt;h4 id="actdownload"&gt;actをdownloadする&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://github.com/nektos/act
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;downloadしたREADMEを確認すると&lt;br&gt;
go 1.20+とあるので、インストールします。&lt;/p&gt;
&lt;h4 id="goinstall"&gt;Goをinstallする&lt;/h4&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;golang-1.23
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;/usr/lib/go1.23/bin&lt;/code&gt; にgoがinstallされます&lt;/p&gt;
&lt;h4 id="actbuildinstall"&gt;actをbuild/installする&lt;/h4&gt;
&lt;p&gt;まずはpodmanを実行&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;podman
$&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;--user&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;--now&lt;span class="w"&gt; &lt;/span&gt;podman.socket
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;こんな内容のファイルを作成しておきます。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;sh&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '&lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;-desuyo:100000:65536' &amp;gt; /etc/subuid"&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;sh&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '&lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;-desuyo:100000:65536' &amp;gt; /etc/subgid"&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;次にactをbuildします&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;act
$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;DOCKER_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;unix:///run/user/1000/podman/podman.sock
$&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;build
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;最後にinstall...なんですが&lt;br&gt;
/usr/localに書き込み権限が必要なんで&lt;br&gt;
適当に対処します。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;-E&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;install
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;あとはprojectに移動して act を実行します。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;path/to/project
$&lt;span class="w"&gt; &lt;/span&gt;act
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;何回もデバッグします。&lt;br&gt;
ローカルとはいっても作るものの性格上&lt;br&gt;
ネットへの接続は必要です。&lt;/p&gt;
&lt;p&gt;非力なChromebookでもなんとか動きそう...&lt;/p&gt;</description><category>chromebook</category><category>hack</category><category>linux</category><guid>https://kuri65536.bitbucket.io/posts/id00774/</guid><pubDate>Mon, 25 Nov 2024 10:00:00 GMT</pubDate></item><item><title>ARM SBC: セットアップ</title><link>https://kuri65536.bitbucket.io/posts/id00766/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;整備していく&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] hardware: new USB-hub&lt;/li&gt;
&lt;li&gt;[x] hardware: new MCU Board to USB&lt;/li&gt;
&lt;li&gt;[x] hardware: MCU Board - センサ等を接続&lt;/li&gt;
&lt;li&gt;[x] hardware: mSATA SSD - USB&lt;/li&gt;
&lt;li&gt;[x] hardware: MCU Board - USB&lt;/li&gt;
&lt;li&gt;[x] hardware: 電源ケーブルの整理 - USB-HubとSBC電源を分岐&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[x] hardware: SSD thermal pad, heat sink&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;5Vの電源を細工するのは多いですね。&lt;br&gt;
    ACアダプタ増やすより分岐ケーブル作る方がスッキリするので&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;mSATAのアダプタがなかったので購入。&lt;br&gt;
    動かしたけどすごく熱を持つ...&lt;/li&gt;
&lt;li&gt;MCUとセンサの接続は、本数が多くて大変だった。&lt;br&gt;
    外れないようにケーブルにホットボンドとかした。(久々...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ソフト面も整備していく&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] setup nim&lt;/li&gt;
&lt;li&gt;[x] setup dnsmasq - 自宅内のDNS(サブ)&lt;/li&gt;
&lt;li&gt;[x] setup ntp     - systemd-timesyncd はじめて&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[x] config custom - register to systemctl&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[x] program: loop / daemon&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;[ ] program: &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;確認もいろいろ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] watt ... Normal+WiFi 4.5-5.0W&lt;/li&gt;
&lt;li&gt;[x] watt ... WiFi+Ether  5.5W&lt;/li&gt;
&lt;li&gt;[x] watt ... WiFi+Ether+MCU+Fan  5.9W&lt;/li&gt;
&lt;li&gt;[ ] watt ... Normal      ?&lt;/li&gt;
&lt;li&gt;[ ] SD speed ...&lt;/li&gt;
&lt;li&gt;[x] SSD speed ... 30MB/sec&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- TETHER_END --&gt;

&lt;h4 id="ssd-speed"&gt;SSD speed&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;hdparm&lt;/code&gt; で確認したSSD読込み速度。&lt;br&gt;
前回とほとんど同じ。&lt;br&gt;
ほとんどUSBの速度で決まってそう。&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;hdparm&lt;span class="w"&gt; &lt;/span&gt;-Tt&lt;span class="w"&gt; &lt;/span&gt;/dev/sda1

/dev/sda1:
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;cached&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;684&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.00&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;341&lt;/span&gt;.64&lt;span class="w"&gt; &lt;/span&gt;MB/sec
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;buffered&lt;span class="w"&gt; &lt;/span&gt;disk&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;92&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.02&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;.45&lt;span class="w"&gt; &lt;/span&gt;MB/sec
shinji@tvbox:/home/root$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;hdparm&lt;span class="w"&gt; &lt;/span&gt;-Tt&lt;span class="w"&gt; &lt;/span&gt;/dev/sda1

/dev/sda1:
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;cached&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;690&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.00&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;344&lt;/span&gt;.97&lt;span class="w"&gt; &lt;/span&gt;MB/sec
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;buffered&lt;span class="w"&gt; &lt;/span&gt;disk&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;92&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.01&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;.53&lt;span class="w"&gt; &lt;/span&gt;MB/sec
shinji@tvbox:/home/root$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;hdparm&lt;span class="w"&gt; &lt;/span&gt;-Tt&lt;span class="w"&gt; &lt;/span&gt;/dev/sda1

/dev/sda1:
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;cached&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;662&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.01&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;330&lt;/span&gt;.05&lt;span class="w"&gt; &lt;/span&gt;MB/sec
&lt;span class="w"&gt; &lt;/span&gt;Timing&lt;span class="w"&gt; &lt;/span&gt;buffered&lt;span class="w"&gt; &lt;/span&gt;disk&lt;span class="w"&gt; &lt;/span&gt;reads:&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;92&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.01&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;seconds&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;.59&lt;span class="w"&gt; &lt;/span&gt;MB/sec
&lt;/pre&gt;&lt;/div&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00766/</guid><pubDate>Wed, 06 Nov 2024 00:00:00 GMT</pubDate></item><item><title>ARM SBC: 再始動</title><link>https://kuri65536.bitbucket.io/posts/id00765/</link><dc:creator>Shimoda</dc:creator><description>&lt;p&gt;家にまだ稼働していないSBCがあるので&lt;br&gt;
常時稼働のNASを復活させる計画をする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;残念ながらGPIOがないタイプ ... 小型のマイコンボードでカバーする&lt;/li&gt;
&lt;li&gt;SSDがつけられない ... USB接続で我慢する(基板だったけど接続は同じだし...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;やることは下のような感じ&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;筐体を作成する&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSDがぶらぶらするのを固定&lt;/li&gt;
&lt;li&gt;マイコンボードがぶらぶらのを固定&lt;/li&gt;
&lt;li&gt;Fanありにする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;マイコンボードでいろいろ作成する&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;温度センサと接続(工作)&lt;/li&gt;
&lt;li&gt;USB-SerialでSBCに結果を送信&lt;/li&gt;
&lt;li&gt;USB-SerialでSBCからFanスピードを受診してFanを回す&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SBCの調整&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;USB-Serialで温度を取得・保存&lt;/li&gt;
&lt;li&gt;Fan制御&lt;/li&gt;
&lt;li&gt;LED制御&lt;/li&gt;
&lt;li&gt;SW状態の取得、電源終了などの動作&lt;/li&gt;
&lt;li&gt;これらをserverプログラムにする&lt;ul&gt;
&lt;li&gt;制御温度→Fanは、定期的に実行する&lt;/li&gt;
&lt;li&gt;swの取得→イベント発生&lt;/li&gt;
&lt;li&gt;LED制御も定期的に実行する&lt;/li&gt;
&lt;li&gt;LED制御の変更をsocket等で受け付ける&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><category>hack</category><category>linux</category><category>SBC</category><guid>https://kuri65536.bitbucket.io/posts/id00765/</guid><pubDate>Fri, 06 Sep 2024 09:00:00 GMT</pubDate></item></channel></rss>