<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Linux on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/linux/</link>
        <description>Recent content in Linux on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sun, 24 May 2026 00:41:23 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/linux/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>pci=nomsi と pcie_aspm=off の詳解：Linux で SATA 拡張カードが認識されない、ディスクが落ちる、固まるときの切り分け</title>
        <link>https://knightli.com/ja/2026/05/24/pci-nomsi-pcie-aspm-off-linux-sata-expansion-card/</link>
        <pubDate>Sun, 24 May 2026 00:41:23 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/24/pci-nomsi-pcie-aspm-off-linux-sata-expansion-card/</guid>
        <description>&lt;p&gt;Linux / Ubuntu で PCIe SATA 拡張カードを使うと、ディスクが認識されない、しばらく動かすとディスクが落ちる、システムが固まる、PCIe Link Training 付近で起動が止まる、といった問題に遭遇することがあります。JMB585、ASM1166 などの SATA 拡張カードでよく見られ、NAS、小型 PC、産業用 PC、改造マザーボード、安価な変換カード環境では特に起きやすくなります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pci=nomsi&lt;/code&gt; と &lt;code&gt;pcie_aspm=off&lt;/code&gt; は、この種の問題を切り分けるときによく使われる Linux カーネルパラメータです。どちらも PCIe に関係しますが、解決する層は異なります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pci=nomsi&lt;/code&gt; は主に &lt;strong&gt;割り込み信号の問題&lt;/strong&gt;、つまりデバイスが CPU に通知する方法の不安定さを扱います。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pcie_aspm=off&lt;/code&gt; は主に &lt;strong&gt;PCIe 電源管理の問題&lt;/strong&gt;、つまりリンクが省電力状態から正常に復帰できない問題を扱います。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この 2 つを同じ種類の対策として扱うと、切り分けが勘頼みになります。症状を見て、割り込み、リンク省電力、ハードウェア本体のどれを優先して疑うべきかを決めるほうが合理的です。&lt;/p&gt;
&lt;h2 id=&#34;pcinomsimessage-signaled-interrupts-を無効化する&#34;&gt;pci=nomsi：Message Signaled Interrupts を無効化する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pci=nomsi&lt;/code&gt; は次のように読めます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PCI&lt;/code&gt;：PCI 関連デバイス。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no&lt;/code&gt;：無効化。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MSI&lt;/code&gt;：Message Signaled Interrupts。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;意味は、Linux カーネルに対して PCI デバイスで MSI / MSI-X 割り込みを使わず、従来の INTx 割り込み方式へ戻すよう指示することです。&lt;/p&gt;
&lt;h2 id=&#34;msi-とは何か&#34;&gt;MSI とは何か
&lt;/h2&gt;&lt;p&gt;従来、ハードウェアデバイスが CPU に「処理してほしい」と伝えるには、物理的な割り込みピン、つまりレガシー IRQ を使っていました。この方式は使えますが、共有や拡張性には限界があります。&lt;/p&gt;
&lt;p&gt;その後、MSI / MSI-X が登場しました。デバイスは物理割り込みピンを必ずしも使わず、特定のメモリアドレスへメッセージを書き込みます。CPU はそのメッセージを受け取り、どのデバイスが割り込みを発生させたかを知ります。現代のシステムでは、MSI / MSI-X はより柔軟で、高並行デバイスにも向いています。&lt;/p&gt;
&lt;p&gt;問題は、すべての PCIe 拡張カードのファームウェアが MSI を十分に正しく実装しているわけではないことです。一部の安価なカード、サーバー退役品、ブリッジチップ構成、品質の低い SATA コントローラでは、Linux ドライバ上で MSI メッセージ異常、割り込み喪失、割り込み嵐が起きることがあります。&lt;/p&gt;
&lt;p&gt;よくある症状は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;起動中、PCIe 拡張カード検出時に固まる。&lt;/li&gt;
&lt;li&gt;SATA 拡張カードがまったくディスクを認識しない。&lt;/li&gt;
&lt;li&gt;システムがランダムに固まる。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dmesg&lt;/code&gt; に &lt;code&gt;irq xx: nobody cared&lt;/code&gt; のようなエラーが出る。&lt;/li&gt;
&lt;li&gt;Windows では一見動くが、Linux では不安定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この問題の核心は、ディスク本体やファイルシステムではなく、デバイスと CPU の間の割り込み通信方式が不安定なことです。&lt;/p&gt;
&lt;h2 id=&#34;pcinomsi-を追加すると何が起きるか&#34;&gt;pci=nomsi を追加すると何が起きるか
&lt;/h2&gt;&lt;p&gt;次を有効にします。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pci=nomsi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは Linux カーネルに対し、PCI デバイスで高度な MSI メッセージ割り込みを使わせず、従来の INTx 割り込みへ戻すよう指示します。&lt;/p&gt;
&lt;p&gt;高スループットや高割り込み頻度のデバイスでは、性能や並行効率が少し落ちる可能性があります。ただし家庭用 NAS、SATA 拡張カード、通常の HDD アレイでは、実感できる影響は小さいことが多いです。価値は、特定のデバイスファームウェアやブリッジチップの MSI 互換性問題を回避し、システムが安定してデバイスを認識し I/O を処理できる点にあります。&lt;/p&gt;
&lt;p&gt;簡単に言えば、&lt;code&gt;pci=nomsi&lt;/code&gt; は「デバイスが CPU に通知する方法が不安定」な問題を扱います。&lt;/p&gt;
&lt;h2 id=&#34;pcie_aspmoffpcie-active-state-power-management-を無効化する&#34;&gt;pcie_aspm=off：PCIe Active State Power Management を無効化する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pcie_aspm=off&lt;/code&gt; は次のように読めます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PCIe&lt;/code&gt;：PCI Express。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ASPM&lt;/code&gt;：Active State Power Management。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;off&lt;/code&gt;：無効化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;意味は、PCIe リンクの省電力機構を無効にし、PCIe リンクを低電力状態に入れないようにすることです。&lt;/p&gt;
&lt;h2 id=&#34;aspm-とは何か&#34;&gt;ASPM とは何か
&lt;/h2&gt;&lt;p&gt;ASPM は PCIe バスの省電力機構です。システムがある PCIe リンクでしばらくデータ転送がないと判断すると、リンクを L0s や L1 のような低電力状態にできます。再びデータの読み書きが必要になると、リンクを通常状態へ復帰させます。&lt;/p&gt;
&lt;p&gt;設計の良いハードウェアでは、この仕組みで消費電力を下げられ、ユーザーはほとんど意識しません。しかし一部の消費者向けマザーボード、小型 PC、産業用 PC、安価な SATA 拡張カード、変換基板、信号品質が弱い構成では、「寝たあとに安定して起きられない」ことがあります。&lt;/p&gt;
&lt;p&gt;典型的には、JMB585 や ASM1166 のような PCIe SATA 拡張カードがアイドル後に低電力状態へ入り、次のディスクアクセス時に L1 から復帰する場面です。コントローラ、マザーボード、ライザー、電源、ファームウェアの品質が十分でないと、復帰が遅すぎたり、リンク復帰時に物理層の揺れが起きたりします。Linux カーネルは、そのデバイスが一瞬消えたと判断することがあります。&lt;/p&gt;
&lt;p&gt;典型的な &lt;code&gt;dmesg&lt;/code&gt; は次のようなものです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pcieport 0000:00:1c.0: PCIe Bus Error: severity=Corrected, type=Physical Layer
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ata1: link is slow to respond, please be patient
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ata1: COMRESET failed (errno=-16)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;その後、次のような現象が起きます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ディスクが落ちる。&lt;/li&gt;
&lt;li&gt;アレイが degrade する。&lt;/li&gt;
&lt;li&gt;ファイルシステムが read-only になる。&lt;/li&gt;
&lt;li&gt;NAS サービスが異常になる。&lt;/li&gt;
&lt;li&gt;システム I/O が固まる。&lt;/li&gt;
&lt;li&gt;再起動すると一時的にディスクが戻る。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;厄介なのは、起動時には問題が出ないことも多い点です。一定時間動いた後、アイドルからの復帰時、または負荷の切り替わりで突然発生します。&lt;/p&gt;
&lt;h2 id=&#34;pcie_aspmoff-を追加すると何が起きるか&#34;&gt;pcie_aspm=off を追加すると何が起きるか
&lt;/h2&gt;&lt;p&gt;次を有効にします。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pcie_aspm=off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これはカーネルに対し、システム全体の PCIe ASPM 省電力機能を無効化するよう指示します。PCIe リンクはアイドルでも負荷中でも、できるだけ通常の接続状態を維持し、低電力スリープへ入らないようになります。&lt;/p&gt;
&lt;p&gt;副作用は消費電力が少し増えることです。デスクトップ、NAS、小型 PC では、数百 mW から 1、2 W 程度のことが多いです。ノート PC ではバッテリー駆動時間に影響する可能性があります。その代わり、PCIe リンクのスリープと復帰が原因のディスク脱落、リンクトレーニングエラー、物理層エラーを減らせます。&lt;/p&gt;
&lt;p&gt;簡単に言えば、&lt;code&gt;pcie_aspm=off&lt;/code&gt; は「PCIe リンクが寝たあと安定して起きない」問題を扱います。&lt;/p&gt;
&lt;h2 id=&#34;2-つのパラメータの違い&#34;&gt;2 つのパラメータの違い
&lt;/h2&gt;&lt;p&gt;この 2 つは異なる問題を解決します。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;パラメータ&lt;/th&gt;
          &lt;th&gt;解決する問題&lt;/th&gt;
          &lt;th&gt;よくある症状&lt;/th&gt;
          &lt;th&gt;主な副作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;pci=nomsi&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;割り込み信号の衝突、MSI / MSI-X 互換性不良&lt;/td&gt;
          &lt;td&gt;起動時に固まる、ディスクを認識しない、&lt;code&gt;irq xx: nobody cared&lt;/code&gt;、システムフリーズ&lt;/td&gt;
          &lt;td&gt;高並行時に割り込み効率が少し下がる可能性&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;pcie_aspm=off&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;PCIe 省電力復帰失敗、リンク信号不安定&lt;/td&gt;
          &lt;td&gt;起動直後は正常、しばらくしてディスクが落ちる、&lt;code&gt;PCIe Bus Error&lt;/code&gt;、&lt;code&gt;COMRESET failed&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;消費電力が少し増える、ノート PC の駆動時間が少し短くなる&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;両者は代替関係ではありません。一方は割り込み、もう一方はリンク電源管理を扱います。&lt;/p&gt;
&lt;p&gt;起動段階で固まる、デバイスがまったく認識されない場合は、まず &lt;code&gt;pci=nomsi&lt;/code&gt; を疑います。起動は正常だがしばらくしてディスクが落ちる、または &lt;code&gt;dmesg&lt;/code&gt; に PCIe Physical Layer、COMRESET、link is slow to respond のような情報がある場合は、まず &lt;code&gt;pcie_aspm=off&lt;/code&gt; を疑います。&lt;/p&gt;
&lt;h2 id=&#34;2-つを一緒に入れるべきか&#34;&gt;2 つを一緒に入れるべきか
&lt;/h2&gt;&lt;p&gt;多くの NAS ユーザーは次をまとめて追加します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pci=nomsi pcie_aspm=off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは確かに素早い切り分け方法です。JMB585、ASM1166、小型 PC、変換カード、電源やケーブルが不確かな環境では特に有効です。MSI 互換性問題と ASPM 復帰問題を同時に回避できます。&lt;/p&gt;
&lt;p&gt;ただし、切り分けとしては症状とログを先に記録することを勧めます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;割り込みエラーや起動時フリーズなら、まず &lt;code&gt;pci=nomsi&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;起動後のディスク脱落、PCIe Bus Error、COMRESET なら、まず &lt;code&gt;pcie_aspm=off&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;すぐ安定稼働へ戻したい場合は両方入れ、安定後に分けて検証する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こうすると、実際にどの種類の問題だったか分かり、後でカード、スロット、マザーボード、BIOS 設定を変えるときの判断材料になります。&lt;/p&gt;
&lt;h2 id=&#34;ubuntu--debian-で恒久的に有効化する方法&#34;&gt;Ubuntu / Debian で恒久的に有効化する方法
&lt;/h2&gt;&lt;p&gt;Grub 設定ファイルを編集します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo nano /etc/default/grub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次の行を探します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet splash&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;引用符の中にパラメータを追加し、空白で区切ります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GRUB_CMDLINE_LINUX_DEFAULT=&amp;#34;quiet splash pci=nomsi pcie_aspm=off&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保存して終了します。Nano なら &lt;code&gt;Ctrl+O&lt;/code&gt; で保存し、Enter で確定し、&lt;code&gt;Ctrl+X&lt;/code&gt; で終了します。&lt;/p&gt;
&lt;p&gt;Grub を更新して再起動します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-grub
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再起動後、現在のカーネル起動パラメータを確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/cmdline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;出力に &lt;code&gt;pci=nomsi&lt;/code&gt; と &lt;code&gt;pcie_aspm=off&lt;/code&gt; が含まれていれば、現在の起動で有効になっています。&lt;/p&gt;
&lt;h2 id=&#34;ほかに確認すべきこと&#34;&gt;ほかに確認すべきこと
&lt;/h2&gt;&lt;p&gt;この 2 つのパラメータは有用ですが、すべてのディスク脱落問題を解決する万能薬ではありません。SATA 拡張カードや NAS のディスク脱落を調べるときは、次も確認しましょう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SATA データケーブルが緩んでいないか、品質が悪くないか。&lt;/li&gt;
&lt;li&gt;複数 HDD の同時スピンアップ時に電源が安定しているか。&lt;/li&gt;
&lt;li&gt;PCIe スロットの接触不良がないか。&lt;/li&gt;
&lt;li&gt;拡張カードが過熱していないか。&lt;/li&gt;
&lt;li&gt;BIOS に PCIe ASPM、Above 4G Decoding、PCIe speed などの関連設定があるか。&lt;/li&gt;
&lt;li&gt;SATA 拡張カードのファームウェアに既知の問題がないか。&lt;/li&gt;
&lt;li&gt;システムログにディスク本体の bad sector、I/O error、SMART 警告がないか。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ディスクの SMART がすでに異常を報告していたり、電源が不安定だったりする場合、カーネルパラメータだけでは根本解決できません。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pci=nomsi&lt;/code&gt; と &lt;code&gt;pcie_aspm=off&lt;/code&gt; は、Linux で PCIe SATA 拡張カードが不安定なときによく使われますが、扱う層は異なります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pci=nomsi&lt;/code&gt;：MSI / MSI-X を無効化し、割り込み通信の互換性問題を回避する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pcie_aspm=off&lt;/code&gt;：PCIe ASPM を無効化し、リンク省電力後の復帰失敗を避ける。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;JMB585、ASM1166、NAS、小型 PC、安価な PCIe 拡張カードでは、この 2 つが効果を出すことがあります。より確実なのは、まず &lt;code&gt;dmesg&lt;/code&gt; を見て、割り込み問題なのかリンク省電力問題なのかを判断し、単独または併用を決めることです。&lt;/p&gt;
&lt;p&gt;これらは切り分け用の道具であり、ハードウェア品質の代わりではありません。追加後に安定するなら、中断互換性または PCIe 電源管理が原因である可能性が高いです。まだディスクが落ちるなら、電源、ケーブル、冷却、ディスク健康状態、拡張カード本体を引き続き確認する必要があります。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CVE-2026-43494 / PinTheft：Linux RDS と io_uring が組み合わさるローカル権限昇格リスク</title>
        <link>https://knightli.com/ja/2026/05/22/linux-kernel-cve-2026-43494-pintheft/</link>
        <pubDate>Fri, 22 May 2026 15:16:59 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/22/linux-kernel-cve-2026-43494-pintheft/</guid>
        <description>&lt;p&gt;&lt;code&gt;CVE-2026-43494&lt;/code&gt; は Linux カーネルのローカル権限昇格リスクです。関連する悪用チェーンは &lt;code&gt;PinTheft&lt;/code&gt; とも呼ばれています。重要なのはリモート入口ではなく、低権限のローカルユーザーが RDS zerocopy、&lt;code&gt;io_uring&lt;/code&gt; fixed buffer、読み取り可能な SUID-root プログラム、そして該当するカーネルバージョンを同時に満たせるかどうかです。&lt;/p&gt;
&lt;p&gt;まず番号の扱いを整理しておきます。&lt;code&gt;Unclecheng-li/poc-lab&lt;/code&gt; リポジトリのディレクトリ名は &lt;code&gt;CVE-2026-43494 PinTheft&lt;/code&gt; ですが、README のタイトルには &lt;code&gt;QVD-2026-27616 - PinTheft&lt;/code&gt; も書かれています。公開 CVE エントリと第三者アドバイザリを見る限り、&lt;code&gt;CVE-2026-43494&lt;/code&gt; は Linux kernel RDS zerocopy において &lt;code&gt;op_nents&lt;/code&gt; が正しくリセットされず、double-free / 参照カウント異常につながる問題を指します。&lt;code&gt;QVD-2026-27616&lt;/code&gt; は Qianxin 側のリスクアドバイザリ番号に近いものと考えられます。実際の調査では両方の識別子を記録しつつ、ディストリビューションのセキュリティ告知とカーネルパッチ状況を基準にしてください。&lt;/p&gt;
&lt;h2 id=&#34;脆弱性の核心は何か&#34;&gt;脆弱性の核心は何か
&lt;/h2&gt;&lt;p&gt;この問題は Linux RDS、つまり Reliable Datagram Sockets の zerocopy 送信パスにあります。公開情報で挙げられている主要な関数は次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rds_message_zcopy_from_user()
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rds_message_purge()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;rds_message_zcopy_from_user()&lt;/code&gt; の中で &lt;code&gt;iov_iter_get_pages2()&lt;/code&gt; が失敗すると、すでに pin されたページがエラーパスで解放されます。しかし関連する &lt;code&gt;op_nents&lt;/code&gt; の状態が正しくクリアされないため、後続の &lt;code&gt;rds_message_purge()&lt;/code&gt; が残ったエントリに基づいてもう一度解放してしまう可能性があります。結果として、同じページ参照群のカウントが過剰に減り、悪用可能な参照カウントエラーになります。&lt;/p&gt;
&lt;p&gt;RDS の bug だけを見れば、これはカーネル内部のメモリ管理におけるエラーパス問題です。PinTheft が危険なのは、この問題を &lt;code&gt;io_uring&lt;/code&gt; の固定バッファ機構につなげる点にあります。&lt;code&gt;io_uring&lt;/code&gt; は古い &lt;code&gt;struct page *&lt;/code&gt; を保持したままですが、そのページ自体はすでに解放され、別用途に再割り当てされています。公開 PoC はこの状態を SUID-root プログラムの page cache 上書きへ誘導し、最終的にローカル権限昇格に到達します。&lt;/p&gt;
&lt;h2 id=&#34;なぜ-pintheft-と呼ばれるのか&#34;&gt;なぜ PinTheft と呼ばれるのか
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;io_uring REGISTER_BUFFERS&lt;/code&gt; はユーザーページを固定します。通常のページに対して、&lt;code&gt;FOLL_PIN&lt;/code&gt; は単純な参照カウントの 1 増加ではなく、大きな bias によって page refcount を増やします。公開 PoC では &lt;code&gt;GUP_PIN_COUNTING_BIAS = 1024&lt;/code&gt; という概念が使われています。&lt;/p&gt;
&lt;p&gt;PinTheft という名前は、攻撃チェーンが RDS zerocopy の失敗パスを通じて、これらの pin 参照を何度も「盗む」ことを意味します。参照が消費された後も、&lt;code&gt;io_uring&lt;/code&gt; は自分が有効なページを保持していると考えますが、その物理ページはすでに解放され、page cache に再利用され得ます。&lt;/p&gt;
&lt;p&gt;この種の脆弱性は「ディスク上の &lt;code&gt;/usr/bin/su&lt;/code&gt; を直接書き換える」と誤解されがちです。より正確には、悪用チェーンが上書きしようとするのはメモリ上の page cache です。ファイル本体がディスクへ書き戻されるとは限りませんが、カーネルがその SUID プログラムを実行するとき、汚染されたページキャッシュから命令を読み出し、攻撃ペイロードを実行する可能性があります。&lt;/p&gt;
&lt;h2 id=&#34;発火条件は広くない&#34;&gt;発火条件は広くない
&lt;/h2&gt;&lt;p&gt;これは「任意の Linux サーバーをリモートから攻撃できる」タイプの脆弱性ではありません。公開情報によると、悪用チェーンは少なくとも次の条件に依存します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;カーネルで &lt;code&gt;CONFIG_RDS&lt;/code&gt; と &lt;code&gt;CONFIG_RDS_TCP&lt;/code&gt; が有効。&lt;/li&gt;
&lt;li&gt;システムで &lt;code&gt;CONFIG_IO_URING&lt;/code&gt; が有効で、&lt;code&gt;kernel.io_uring_disabled=0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rds&lt;/code&gt; / &lt;code&gt;rds_tcp&lt;/code&gt; モジュールがすでにロード済み、または低権限ユーザーが自動ロードを誘発できる。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/usr/bin/su&lt;/code&gt;、&lt;code&gt;/usr/bin/passwd&lt;/code&gt;、&lt;code&gt;/usr/bin/pkexec&lt;/code&gt; など、読み取り可能な SUID-root バイナリがローカルに存在する。&lt;/li&gt;
&lt;li&gt;公開 PoC は比較的新しい &lt;code&gt;IORING_REGISTER_CLONE_BUFFERS&lt;/code&gt; API にも依存する。CloudLinux の分析では、公開 PoC は kernel 6.13 以降により近い形だと説明されている。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このうち一つでも欠ければ、公開されている悪用経路は途切れます。たとえば多くの RHEL 系ディストリビューションは標準で RDS をコンパイルしておらず、古い Ubuntu カーネルには PoC が必要とする &lt;code&gt;io_uring&lt;/code&gt; clone buffer API がない場合があります。また、一部の環境では非特権ユーザーによる RDS モジュールの自動ロードが制限されています。&lt;/p&gt;
&lt;h2 id=&#34;1-分でできる確認&#34;&gt;1 分でできる確認
&lt;/h2&gt;&lt;p&gt;まずカーネル設定を確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zgrep -E &lt;span class=&#34;s2&#34;&gt;&amp;#34;CONFIG_(RDS|RDS_TCP|IO_URING)&amp;#34;&lt;/span&gt; /proc/config.gz 2&amp;gt;/dev/null &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; grep -E &lt;span class=&#34;s2&#34;&gt;&amp;#34;CONFIG_(RDS|RDS_TCP|IO_URING)&amp;#34;&lt;/span&gt; /boot/config-&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;uname -r&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次に &lt;code&gt;io_uring&lt;/code&gt; が無効化されているか確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/sys/kernel/io_uring_disabled 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;よくある値は次のように見ます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0&lt;/code&gt;：使用可能で、露出面が最も大きい。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1&lt;/code&gt;：非特権ユーザーの利用を制限。具体的な挙動はカーネルバージョンとディストリビューションの方針による。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2&lt;/code&gt;：&lt;code&gt;io_uring&lt;/code&gt; を無効化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;RDS モジュールが存在し、ロード可能かも確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsmod &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -E &lt;span class=&#34;s2&#34;&gt;&amp;#34;^rds|^rds_tcp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;modprobe -n -v rds_tcp 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;CONFIG_RDS&lt;/code&gt; が &lt;code&gt;not set&lt;/code&gt; の場合、またはシステムに &lt;code&gt;rds_tcp&lt;/code&gt; モジュールがまったくない場合、通常はこの bug に到達できません。逆に RDS が利用可能で、&lt;code&gt;io_uring&lt;/code&gt; が無効化されておらず、比較的新しい汎用カーネルを使っている場合は、ディストリビューションの修正状況を優先して確認すべきです。&lt;/p&gt;
&lt;h2 id=&#34;優先して確認したいマシン&#34;&gt;優先して確認したいマシン
&lt;/h2&gt;&lt;p&gt;次の環境を優先してください。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;複数ユーザーの Linux ホスト、教育用マシン、踏み台、共有開発機。&lt;/li&gt;
&lt;li&gt;コンテナホスト。特に信頼できないローカルユーザーを許可する環境や、コンテナ脱出面が緩い環境。&lt;/li&gt;
&lt;li&gt;Arch のような rolling distribution など、新しめの mainline / rolling kernel を使うデスクトップやサーバー。&lt;/li&gt;
&lt;li&gt;HPC、Oracle RAC、その他 RDS を実際に使う可能性のある場面。&lt;/li&gt;
&lt;li&gt;非特権ユーザーが大量のローカルコードを実行できる CI worker、ビルドマシン、実験環境。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通常の Web サーバーで、管理されたサービスアカウントだけがアプリケーションを実行し、RDS も有効でない場合、実際のリスクはかなり下がります。ただし「かなり低い」は「対応不要」ではありません。カーネルのローカル権限昇格では、攻撃者がまず Web、SSH、CI、コンテナ、アプリケーション脆弱性などで低権限を得て、その後ローカル bug で制御範囲を広げる、という流れが典型です。&lt;/p&gt;
&lt;h2 id=&#34;一時的な緩和策&#34;&gt;一時的な緩和策
&lt;/h2&gt;&lt;p&gt;正式な修正は、引き続きディストリビューションのカーネル更新を基準にしてください。パッチ、バックポート版、影響範囲は Debian、Ubuntu、RHEL、AlmaLinux、Rocky Linux、SUSE、Arch、クラウドベンダー、コンテナベースイメージ提供元などの各セキュリティ告知で確認する必要があります。上流のバージョン番号だけで判断しないでください。&lt;/p&gt;
&lt;p&gt;パッチ待ち、またはすぐにカーネルを再起動できない場合は、環境に応じて一時対策を選べます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 業務が RDS に依存していない場合、関連モジュールのロードをブロックする&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sh -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;printf &amp;#39;install rds /bin/false\ninstall rds_tcp /bin/false\ninstall rds_rdma /bin/false\n&amp;#39; &amp;gt; /etc/modprobe.d/pintheft.conf&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rmmod rds_tcp 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rmmod rds_rdma 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rmmod rds 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;業務が &lt;code&gt;io_uring&lt;/code&gt; に依存していない場合は、無効化または制限も検討できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -w kernel.io_uring_disabled&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;永続化するには、対応する &lt;code&gt;/etc/sysctl.d/*.conf&lt;/code&gt; に設定を書き込みます。ただしこの手順は慎重に扱う必要があります。現代的なデータベース、プロキシ、ランタイム、高性能 I/O プログラムは &lt;code&gt;io_uring&lt;/code&gt; を使っている可能性があります。本番環境で変更する前に、業務依存を確認してください。&lt;/p&gt;
&lt;h2 id=&#34;修正後の検証&#34;&gt;修正後の検証
&lt;/h2&gt;&lt;p&gt;カーネルを更新した後は、パッケージマネージャーの成功表示だけで済ませないでください。次の三つを確認することを推奨します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /proc/sys/kernel/io_uring_disabled 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;modprobe -n -v rds_tcp 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ディストリビューションの告知で &lt;code&gt;CVE-2026-43494&lt;/code&gt; が修正済みと明記されていれば、&lt;code&gt;uname -r&lt;/code&gt; が最新の上流版に見えなくても、安定版カーネルにバックポート済みの可能性があります。逆に、カーネルの入手元が自前ビルド、第三者リポジトリ、クラウドマーケットプレイスイメージ、コンテナホストテンプレートの場合は、パッチ commit とビルド時刻を引き続き照合してください。&lt;/p&gt;
&lt;h2 id=&#34;参考情報&#34;&gt;参考情報
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Unclecheng-li/poc-lab/tree/main/CVE-2026-43494%20PinTheft&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Unclecheng-li/poc-lab：CVE-2026-43494 PinTheft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://dbugs.ptsecurity.com/vulnerability/PT-2026-42451&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dbugs：CVE-2026-43494&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.cloudlinux.com/pintheft-cloudlinux-platforms-not-affected&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CloudLinux：PinTheft (CVE-2026-43494) kernel LPE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://git.kernel.org/stable/c/e174929793195e0cd6a4adb0cad731b39f9019b4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux stable commit：net/rds reset op_nents when zerocopy page pin fails&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>最近の Linux ローカル脆弱性 4 件の影響整理：Copy Fail、Dirty Frag、Fragnesia、ssh-keysign-pwn</title>
        <link>https://knightli.com/ja/2026/05/20/linux-lpe-four-vulnerabilities-impact-summary/</link>
        <pubDate>Wed, 20 May 2026 23:00:37 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/20/linux-lpe-four-vulnerabilities-impact-summary/</guid>
        <description>&lt;p&gt;最近、Linux エコシステムでは注目度の高いローカルセキュリティ問題が相次いでいる。個別に見ると、暗号インターフェース、ネットワーク/IPsec 経路、ページキャッシュ処理、ptrace アクセスチェックなど、発生箇所は異なる。だがまとめて見ると、運用上の教訓は同じだ。攻撃者が低権限のローカル実行点を得た時点で、Linux ホスト、コンテナノード、CI マシン、マルチユーザーサーバーのリスクは大きく増える。&lt;/p&gt;
&lt;p&gt;この記事では各脆弱性の技術詳細を繰り返さず、実環境への影響を整理し、詳しい解説としてサイト内の 4 本の記事へリンクする。&lt;/p&gt;
&lt;h2 id=&#34;4-つの問題は何に影響するのか&#34;&gt;4 つの問題は何に影響するのか
&lt;/h2&gt;&lt;p&gt;最近特に追うべきリスクは次の 4 つだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Copy Fail（CVE-2026-31431）：低権限のローカルユーザーがカーネル暗号関連経路を通じてページキャッシュに影響し、権限を拡大する可能性がある。&lt;/li&gt;
&lt;li&gt;Dirty Frag（CVE-2026-43284 / CVE-2026-43500 関連）：xfrm/ESP、RxRPC などのネットワークおよびカーネルデータ経路にリスクが集中し、侵害後の段階で危険性が高い。&lt;/li&gt;
&lt;li&gt;Fragnesia（CVE-2026-46300）：Dirty Frag に近く、XFRM ESP-in-TCP、共有 fragment、ページキャッシュ書き込みリスクをめぐる問題。&lt;/li&gt;
&lt;li&gt;ssh-keysign-pwn（CVE-2026-46333）：直接 root shell を得るタイプではなく、SSH ホスト秘密鍵や &lt;code&gt;/etc/shadow&lt;/code&gt; などを読まれる可能性があるローカル情報漏えいリスク。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この 4 種類は入口が異なり、緩和策も完全には同じではない。Copy Fail を処理したから Dirty Frag と Fragnesia も安全とは言えない。ネットワークモジュールの一部を無効化したから ssh-keysign-pwn の情報漏えいリスクが消えるわけでもない。&lt;/p&gt;
&lt;h2 id=&#34;copy-failコンテナと-ci-ノードの優先度が高い&#34;&gt;Copy Fail：コンテナと CI ノードの優先度が高い
&lt;/h2&gt;&lt;p&gt;Copy Fail の重要な影響は「アプリが落ちる」ことではなく、低権限の実行能力が root 権限に変わる可能性があることだ。特に影響が大きいのは次の環境である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ユーザーがコードをアップロードまたは実行できる CI/CD ノード。&lt;/li&gt;
&lt;li&gt;信頼できないワークロードを動かすコンテナホスト。&lt;/li&gt;
&lt;li&gt;開発・テスト機、踏み台、共有サーバー。&lt;/li&gt;
&lt;li&gt;古いカーネルを使い、パッチ適用の遅いクラウドホスト。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Copy Fail が危険なのは、攻撃のハードルが比較的低く、コンテナ環境と重なりやすいためだ。多くのチームはコンテナを強い隔離境界のように扱うが、通常のコンテナはデフォルトでホストカーネルを共有している。攻撃者がコンテナ内で shell を得られるなら、カーネル LPE によってコンテナ内の問題がホスト全体の問題に拡大する可能性がある。&lt;/p&gt;
&lt;p&gt;詳細解説：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/ja/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/&#34; &gt;Copy Fail CVE-2026-31431：Linux カーネルのファイルコピー経路におけるコンテナエスケープリスク&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;dirty-frag侵害後の権限拡大装置&#34;&gt;Dirty Frag：侵害後の権限拡大装置
&lt;/h2&gt;&lt;p&gt;Dirty Frag は、攻撃者がシステムに入った後の権限拡大ツールに近い。典型的なリモート未認証脆弱性ではなく、通常は弱いパスワード、WebShell、低権限サービスアカウント、コンテナタスクなどを通じて、すでにローカル実行能力を得ていることが前提になる。&lt;/p&gt;
&lt;p&gt;実際の影響は主に次の通りだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;侵害済みの低権限アカウントが root になる可能性がある。&lt;/li&gt;
&lt;li&gt;コンテナ内の低権限実行点がホストを脅かす可能性がある。&lt;/li&gt;
&lt;li&gt;IPsec、ESP、RxRPC、関連するカーネルネットワーク機能を使うシステムは、パッチと一時緩和を慎重に評価する必要がある。&lt;/li&gt;
&lt;li&gt;セキュリティチームは境界防御だけでなく、侵害後の権限昇格チェーンも見る必要がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dirty Frag は、ローカル権限昇格が最初の入口でなくても、侵入がどこまで広がるかを決め得ることを示している。低権限の足場があれば、攻撃者はカーネルバグを探して最高権限へ進もうとする。&lt;/p&gt;
&lt;p&gt;詳細解説：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/ja/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/&#34; &gt;Dirty Frag CVE-2026-43284：Linux ローカル権限昇格のリスクと緩和ガイド&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;fragnesia同系統の攻撃面は一度では片付かない&#34;&gt;Fragnesia：同系統の攻撃面は一度では片付かない
&lt;/h2&gt;&lt;p&gt;Fragnesia が重要なのは、Dirty Frag 周辺の攻撃面が単発の孤立した問題ではないことを示している点だ。あるバグが修正されても、隣接経路、似たデータ構造、関連モジュールの組み合わせに新しい利用可能な点が残る可能性がある。&lt;/p&gt;
&lt;p&gt;運用への影響は主に次の通りだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;脆弱性名だけで一度きりの対応をするのではなく、攻撃面として継続的に確認する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;、XFRM、ESP-in-TCP などの関連経路を、実際の業務依存と照らして評価する。&lt;/li&gt;
&lt;li&gt;関連するネットワーク機能を使っていないなら一時的な無効化を検討できるが、VPN、IPsec、トンネル、内部ネットワークに影響しないか先にテストする必要がある。&lt;/li&gt;
&lt;li&gt;ページキャッシュ汚染型のリスクは、ファイル自体は変わっていないように見えても実行経路が影響を受ける、という検知の盲点を作り得る。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;企業にとって最大の教訓は、パッチ管理を単一 CVE だけで見ないことだ。より安全なのは、サブシステムと攻撃面を軸に棚卸しし、どのマシンが関連機能を露出しているのか、どの業務が本当にそのモジュールを必要としているのかを確認することだ。&lt;/p&gt;
&lt;p&gt;詳細解説：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/ja/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/&#34; &gt;Fragnesia (CVE-2026-46300)：Linux カーネルローカル権限昇格の影響と緩和&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;ssh-keysign-pwn直接-root-でなくても危険&#34;&gt;ssh-keysign-pwn：直接 root でなくても危険
&lt;/h2&gt;&lt;p&gt;ssh-keysign-pwn は前の 3 件とは性質が異なる。直接 root shell を取る脆弱性ではなく、ローカルの機密情報漏えいに近い。しかし実際の攻撃では、機密情報の漏えいがより深刻な結果につながることが多い。&lt;/p&gt;
&lt;p&gt;主な影響は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSH host private keys が漏えいすると、ホスト ID の信頼性に影響する可能性がある。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/shadow&lt;/code&gt; などのファイルを読まれると、オフラインクラッキングやアカウント乗っ取りにつながる可能性がある。&lt;/li&gt;
&lt;li&gt;マルチユーザーサーバー、踏み台、ビルドマシン、共有開発機のリスクが高い。&lt;/li&gt;
&lt;li&gt;攻撃者がすぐに権限昇格しなくても、後続の横展開に使える認証情報を得る可能性がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この種の問題は、直接 root shell ほど派手ではないため過小評価されやすい。だが企業環境では、鍵やパスワードハッシュの漏えいは長い後処理を意味する。SSH ホスト鍵のローテーション、信頼関係の確認、アカウントパスワードの確認、ログインログ監査が必要になる可能性がある。&lt;/p&gt;
&lt;p&gt;詳細解説：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/ja/2026/05/17/ssh-keysign-pwn-cve-2026-46333/&#34; &gt;ssh-keysign-pwn（CVE-2026-46333）解説：Linux ローカル情報漏えい、SSH ホスト鍵、/etc/shadow のリスク&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;共通の影響コンテナ隔離を強い境界と見なせない&#34;&gt;共通の影響：コンテナ隔離を強い境界と見なせない
&lt;/h2&gt;&lt;p&gt;この 4 件を合わせると、最も直接的な影響は、通常のコンテナ隔離は仮想マシン隔離ではないという再確認だ。&lt;/p&gt;
&lt;p&gt;Docker、containerd、Kubernetes は namespace、cgroup、capabilities、seccomp、AppArmor、SELinux などで攻撃面を減らすが、通常はホストカーネルを共有している。脆弱性が共有カーネルにあるなら、コンテナ内の低権限実行点が攻撃の入口になる。&lt;/p&gt;
&lt;p&gt;高リスク環境では次を確認すべきだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;信頼できないコードを共有ホスト上で実行していないか。&lt;/li&gt;
&lt;li&gt;コンテナがデフォルトで root ユーザーとして動いていないか。&lt;/li&gt;
&lt;li&gt;不要な capabilities を付与していないか。&lt;/li&gt;
&lt;li&gt;seccomp ポリシーが広すぎないか。&lt;/li&gt;
&lt;li&gt;マルチテナントワークロードを gVisor、Kata Containers、Firecracker microVM、専用 VM、専用ノードへ移すべきか。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CI/CD プラットフォームは特に注意が必要だ。ビルドジョブは外部コード、依存関係のインストールスクリプト、テストスクリプト、一時バイナリを自然に実行する。これらが長期稼働サービスとホストを共有している場合、1 つのローカル権限昇格が大きなインフラに波及する可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;共通の影響パッチは実行中のカーネルまで届く必要がある&#34;&gt;共通の影響：パッチは「実行中のカーネル」まで届く必要がある
&lt;/h2&gt;&lt;p&gt;Linux カーネルのパッチ適用でよくある誤解は、パッケージがインストールされたことと、マシンが修正済みカーネルで動いていることを混同することだ。&lt;/p&gt;
&lt;p&gt;運用では少なくとも 3 点を確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;現在実行中のカーネルを確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dpkg -l &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep linux-image
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;RHEL 系ディストリビューションでは次のように確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rpm -qa &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep kernel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;インストール済みカーネルパッケージを確認する。&lt;/p&gt;
&lt;p&gt;最後に、マシンが修正済みカーネルで再起動済みかを確認する。すぐ再起動できない重要サービスでは livepatch、ホットパッチ、短期隔離を検討する。ただし一時緩和を最終修正と考えてはいけない。&lt;/p&gt;
&lt;h2 id=&#34;共通の影響攻撃面最小化はモジュールと-syscall-まで具体化する&#34;&gt;共通の影響：攻撃面最小化はモジュールと syscall まで具体化する
&lt;/h2&gt;&lt;p&gt;今回の経路は、Linux の堅牢化が「更新する」「ファイアウォールを入れる」だけでは不十分であることを示している。&lt;/p&gt;
&lt;p&gt;より具体的な確認項目は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AF_ALG / &lt;code&gt;algif_aead&lt;/code&gt; を業務で使っているか。&lt;/li&gt;
&lt;li&gt;XFRM、ESP、ESP-in-TCP、IPsec が VPN、トンネル、セキュリティゲートウェイに必要か。&lt;/li&gt;
&lt;li&gt;RxRPC が必要か。&lt;/li&gt;
&lt;li&gt;非特権 user namespace を有効にする必要があるか。&lt;/li&gt;
&lt;li&gt;コンテナが広すぎる socket タイプを作成できるか。&lt;/li&gt;
&lt;li&gt;ptrace アクセスポリシーが緩すぎないか。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;業務上不要な機能であれば、モジュール無効化、sysctl 調整、seccomp の強化、capabilities の削減を評価できる。本番環境にコマンドをそのまま貼り付けるのではなく、依存関係を棚卸しし、段階的に展開するべきだ。&lt;/p&gt;
&lt;h2 id=&#34;推奨される対応順序&#34;&gt;推奨される対応順序
&lt;/h2&gt;&lt;p&gt;第一に、ローカルコード実行が露出している高リスクマシンを優先して修正する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コンテナホスト。&lt;/li&gt;
&lt;li&gt;CI/CD runner。&lt;/li&gt;
&lt;li&gt;踏み台。&lt;/li&gt;
&lt;li&gt;マルチユーザーサーバー。&lt;/li&gt;
&lt;li&gt;外部公開サービスのホスト。&lt;/li&gt;
&lt;li&gt;信頼できないプラグイン、スクリプト、拡張を動かすシステム。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二に、ディストリビューションのアドバイザリと実際の実行中カーネルを確認する。上流のバージョン番号だけを見てはいけない。Debian、Ubuntu、RHEL、AlmaLinux、Rocky Linux、SUSE、openEuler などはセキュリティ修正を backport することがある。&lt;/p&gt;
&lt;p&gt;第三に、コンテナ実行ポリシーを締める。非 root ユーザー、最小 capabilities、&lt;code&gt;no-new-privileges&lt;/code&gt;、読み取り専用ファイルシステム、明示的な seccomp と AppArmor/SELinux ポリシーを優先する。&lt;/p&gt;
&lt;p&gt;第四に、鍵と認証情報のリスクを確認する。特に ssh-keysign-pwn が関係する環境では、SSH host key、&lt;code&gt;/etc/shadow&lt;/code&gt;、踏み台の認証情報、CI secrets のローテーションが必要か評価する。&lt;/p&gt;
&lt;p&gt;第五に、監視を補う。異常な root shell、不審なローカル LPE PoC、重要ファイルの変更、異常な ptrace 動作、コンテナプロセスによるホストパスへのアクセス、CI ノードからの異常なネットワーク接続を重点的に見る。&lt;/p&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;p&gt;この 4 件の要点は「Linux が安全でなくなった」ではなく、「デフォルトの信頼だけでは足りなくなった」だ。&lt;/p&gt;
&lt;p&gt;Linux は今も透明で、修正でき、切り詰められ、堅牢化できる主流システムである。しかしコンテナ、CI、マルチテナント、AI による自動コード実行が広がる環境では、低権限の実行点を小さな問題と見なせなくなっている。カーネルに利用可能なローカル権限昇格や機密情報漏えいのバグがあれば、局所的な侵入はホスト制御、認証情報漏えい、横展開につながり得る。&lt;/p&gt;
&lt;p&gt;より現実的な対応は、この 4 件を警告として受け止めることだ。パッチを早く適用し、再起動済みカーネルを確認し、モジュールは必要なものだけ有効化し、コンテナを締め、鍵をローテーションできるようにし、マルチテナントの隔離レベルを再評価する。&lt;/p&gt;
&lt;p&gt;サイト内の関連解説:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/ja/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/&#34; &gt;Copy Fail CVE-2026-31431：Linux カーネルのファイルコピー経路におけるコンテナエスケープリスク&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/ja/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/&#34; &gt;Dirty Frag CVE-2026-43284：Linux ローカル権限昇格のリスクと緩和ガイド&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/ja/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/&#34; &gt;Fragnesia (CVE-2026-46300)：Linux カーネルローカル権限昇格の影響と緩和&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/ja/2026/05/17/ssh-keysign-pwn-cve-2026-46333/&#34; &gt;ssh-keysign-pwn（CVE-2026-46333）解説：Linux ローカル情報漏えい、SSH ホスト鍵、/etc/shadow のリスク&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ssh-keysign-pwn（CVE-2026-46333）解説：Linux のローカル情報漏えい、SSH ホスト鍵、/etc/shadow のリスク</title>
        <link>https://knightli.com/ja/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</link>
        <pubDate>Sun, 17 May 2026 09:29:03 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/17/ssh-keysign-pwn-cve-2026-46333/</guid>
        <description>&lt;p&gt;&lt;code&gt;ssh-keysign-pwn&lt;/code&gt; は、Linux kernel の &lt;code&gt;__ptrace_may_access()&lt;/code&gt; のロジック問題をめぐって公開された一連の利用経路で、CVE 番号は &lt;code&gt;CVE-2026-46333&lt;/code&gt; です。リモートから未認証で悪用できる脆弱性ではなく、直接 root shell を得るものでもありません。それでもリスクは高く、ローカルの低権限ユーザーが、本来アクセスできない root 所有の機密ファイル、たとえば SSH ホスト秘密鍵や &lt;code&gt;/etc/shadow&lt;/code&gt; を読み取れる可能性があります。&lt;/p&gt;
&lt;p&gt;運用上の重点は PoC の再現ではありません。影響を受けるマシンを特定し、カーネルを更新し、再起動して修正済みカーネルで起動し、必要に応じて SSH host keys のローテーションやパスワードリセットを行うことです。&lt;/p&gt;
&lt;h2 id=&#34;まず結論&#34;&gt;まず結論
&lt;/h2&gt;&lt;p&gt;この脆弱性は高い優先度で対応すべきです。理由は次の 4 つです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;root 権限は不要で、ローカルの低権限ユーザーから発火できます。&lt;/li&gt;
&lt;li&gt;公開 PoC が存在し、悪用のハードルが下がっています。&lt;/li&gt;
&lt;li&gt;対象は通常ファイルではなく、SSH ホスト秘密鍵や &lt;code&gt;/etc/shadow&lt;/code&gt; になり得ます。&lt;/li&gt;
&lt;li&gt;修正にはカーネルパッチと再起動が必要で、パッケージ更新だけでは不十分です。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;複数ユーザー、ローカル shell、共有ホスト、CI runner、コンテナホスト、学生用端末、踏み台サーバー、または完全には信頼できないローカルユーザーがいるサーバーでは、優先的に対応してください。&lt;/p&gt;
&lt;h2 id=&#34;脆弱性の概要&#34;&gt;脆弱性の概要
&lt;/h2&gt;&lt;p&gt;Qualys は 2026 年 5 月 15 日、oss-security でこの問題を公開しました。Qualys はそれ以前に Linux kernel の &lt;code&gt;__ptrace_may_access()&lt;/code&gt; ロジック問題を &lt;code&gt;security@kernel.org&lt;/code&gt; に報告しており、上流修正は Linus によってマージ済みでした。その後、公開 exploit コードが現れたため、Qualys は情報を oss-security に投稿しました。&lt;/p&gt;
&lt;p&gt;その後 Linux kernel CVE チームがこの問題に &lt;code&gt;CVE-2026-46333&lt;/code&gt; を割り当てました。NVD ページではソースが kernel.org とされ、問題説明はカーネルコミット &lt;code&gt;ptrace: slightly saner &#39;get_dumpable()&#39; logic&lt;/code&gt; に対応しています。&lt;/p&gt;
&lt;p&gt;簡単に言えば、この脆弱性はプロセス終了経路にあります。一部の特権プロセスが終了中の場合、対象タスクがすでに &lt;code&gt;mm&lt;/code&gt; を持たないため、カーネル内の &lt;code&gt;ptrace&lt;/code&gt; アクセスチェック関連ロジックが、本来依存すべき dumpable チェックを迂回してしまう可能性があります。攻撃者は非常に狭い競合ウィンドウで、終了中の特権プロセスがまだ開いているファイルディスクリプタを取得できます。&lt;/p&gt;
&lt;p&gt;これが &lt;code&gt;ssh-keysign-pwn&lt;/code&gt; と呼ばれる理由です。公開された利用経路の一つは &lt;code&gt;ssh-keysign&lt;/code&gt; を使い、SSH host private keys を読み取るものです。&lt;/p&gt;
&lt;h2 id=&#34;ssh-ホスト秘密鍵と-etcshadow-が読まれる理由&#34;&gt;SSH ホスト秘密鍵と /etc/shadow が読まれる理由
&lt;/h2&gt;&lt;p&gt;この問題の本質はローカル情報漏えいです。特権プログラムの終了過程で「メモリ記述子は切り離されたが、ファイルディスクリプタはまだ閉じられていない」時間差を悪用します。&lt;/p&gt;
&lt;p&gt;AlmaLinux のアドバイザリはリスクを明確に説明しています。特権プログラムが権限を落とす前に機密ファイルを開いており、攻撃者が終了ウィンドウ中に対応するファイルディスクリプタを取得できれば、その機密ファイルを読み取れる可能性があります。&lt;/p&gt;
&lt;p&gt;公開議論でよく挙がる対象は次の 2 つです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ssh-keysign&lt;/code&gt;：&lt;code&gt;/etc/ssh/ssh_host_*_key&lt;/code&gt; のような SSH ホスト秘密鍵に関係する可能性があります。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chage&lt;/code&gt;：&lt;code&gt;/etc/shadow&lt;/code&gt; に関係する可能性があります。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SSH ホスト秘密鍵が漏えいすると、攻撃者はそのホストになりすまし、SSH のホスト ID 信頼を損なう可能性があります。&lt;code&gt;/etc/shadow&lt;/code&gt; が漏えいすると、攻撃者はパスワードハッシュをオフラインで解析し、後続の侵害を広げることができます。&lt;/p&gt;
&lt;p&gt;そのため、これは「直接 root shell」ではなくても高優先度で扱うべき問題です。&lt;/p&gt;
&lt;h2 id=&#34;影響範囲の判断&#34;&gt;影響範囲の判断
&lt;/h2&gt;&lt;p&gt;上流の観点では、これは Linux kernel の脆弱性です。NVD の記録では、この問題は 2026 年 5 月 15 日に NVD データセットへ追加されており、その時点では CVSS スコアは付与されていませんでした。&lt;/p&gt;
&lt;p&gt;ディストリビューションごとの状態は、それぞれのアドバイザリで確認してください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AlmaLinux 8、9、10 は対応情報を公開し、2026 年 5 月 16 日の更新で patched kernels が本番リポジトリに入ったと説明しています。&lt;/li&gt;
&lt;li&gt;Debian Security Tracker は bullseye、bookworm、trixie、sid などの vulnerable/fixed 状態と fixed versions を掲載しています。&lt;/li&gt;
&lt;li&gt;その他のディストリビューションでは、Ubuntu、Red Hat、SUSE、Arch、Alpine などの公式セキュリティページや更新リポジトリを確認してください。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;カーネルの上流バージョン番号だけで安全かどうかを判断しないでください。ディストリビューションは修正を backport するため、同じ上流バージョンに見えても、配布元によってパッチ状態が異なる場合があります。&lt;/p&gt;
&lt;h2 id=&#34;優先的に対応すべきマシン&#34;&gt;優先的に対応すべきマシン
&lt;/h2&gt;&lt;p&gt;リスク順に対応するなら次の順序を推奨します。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;複数ユーザーサーバーと共有ホスト。&lt;/li&gt;
&lt;li&gt;通常の shell アカウントがある踏み台、教育用端末、開発機。&lt;/li&gt;
&lt;li&gt;CI runner、ビルドマシン、ホスティング基盤ノード。&lt;/li&gt;
&lt;li&gt;コンテナホストと仮想化ホスト。特に完全には信頼できない workload が共存する環境。&lt;/li&gt;
&lt;li&gt;公開サービス用マシン。脆弱性自体はローカルアクセスを必要としますが、Web/RCE/弱いパスワードで低権限の足場が得られるとリスクが重なります。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;純粋な単一ユーザーデスクトップのリスクは相対的に低めですが、システム更新で修正することを推奨します。ブラウザ、開発ツール、スクリプト、サードパーティソフトウェアを通じたローカル低権限コード実行は珍しくないためです。&lt;/p&gt;
&lt;h2 id=&#34;修正方針&#34;&gt;修正方針
&lt;/h2&gt;&lt;p&gt;最優先の修正は、ディストリビューションが提供する修正済みカーネルをインストールし、再起動することです。&lt;/p&gt;
&lt;p&gt;コマンドはディストリビューションごとに異なりますが、原則は同じです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;パッケージメタデータを更新する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-46333&lt;/code&gt; 修正を含む kernel パッケージをインストールする。&lt;/li&gt;
&lt;li&gt;再起動して新しいカーネルで起動する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uname -r&lt;/code&gt; とディストリビューションのセキュリティアドバイザリで、実行中カーネルが修正済みか確認する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AlmaLinux のアドバイザリでは、本番リポジトリに修正済みカーネルが提供されており、通常の &lt;code&gt;dnf upgrade&lt;/code&gt; と再起動で対応できるとされています。Debian tracker も複数ブランチの fixed versions を掲載しています。&lt;/p&gt;
&lt;p&gt;注意点として、新しい kernel パッケージをインストールしただけで再起動しない場合、古い脆弱なカーネルがまだ動作しています。&lt;/p&gt;
&lt;h2 id=&#34;一時的な緩和策ptrace_scope-を厳しくする&#34;&gt;一時的な緩和策：ptrace_scope を厳しくする
&lt;/h2&gt;&lt;p&gt;すぐに再起動できない場合は、まず Yama の &lt;code&gt;ptrace_scope&lt;/code&gt; を厳しくしてください。&lt;/p&gt;
&lt;p&gt;Qualys は oss-security の後続返信で、&lt;code&gt;/proc/sys/kernel/yama/ptrace_scope&lt;/code&gt; を &lt;code&gt;2&lt;/code&gt;（admin-only attach）または &lt;code&gt;3&lt;/code&gt;（no attach）に設定すると、既知の公開利用経路を阻止できると確認しています。ただし理論上は別の利用方法が存在し得るとも述べており、これは修正ではなく緩和策です。&lt;/p&gt;
&lt;p&gt;一時設定は次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -w kernel.yama.ptrace_scope&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;永続化する場合は sysctl 設定に書き込みます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;kernel.yama.ptrace_scope = 3&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/sysctl.d/99-ssh-keysign-pwn.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;ptrace_scope=3&lt;/code&gt; は ptrace attach を無効化するため、&lt;code&gt;gdb&lt;/code&gt; や &lt;code&gt;strace -p&lt;/code&gt; などのデバッグに影響する可能性があります。本番環境でデバッグが必要なら &lt;code&gt;2&lt;/code&gt; を検討してください。どちらを選んでも、カーネル更新と再起動は早めに計画すべきです。&lt;/p&gt;
&lt;h2 id=&#34;ssh-ホスト鍵をローテーションすべきか&#34;&gt;SSH ホスト鍵をローテーションすべきか
&lt;/h2&gt;&lt;p&gt;脆弱性公開前後に次の条件があったマシンでは、保守的に対応することを推奨します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;信頼できないローカルユーザーがいる。&lt;/li&gt;
&lt;li&gt;共有ホスト、またはコンテナ/CI のマルチテナント環境である。&lt;/li&gt;
&lt;li&gt;Web 脆弱性、弱いパスワード、サプライチェーンスクリプトなど、攻撃者にローカル足場を与え得る要素がある。&lt;/li&gt;
&lt;li&gt;ログに不審なローカルプロセス、異常なデバッグ挙動、公開 PoC ファイルがある。&lt;/li&gt;
&lt;li&gt;修正前に長時間露出していた。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;保守的な対応には次が含まれます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修正と再起動後に SSH host keys をローテーションする。&lt;/li&gt;
&lt;li&gt;既知ホスト指紋管理システムを更新する。&lt;/li&gt;
&lt;li&gt;そのホスト指紋に依存する自動化システムへ通知する。&lt;/li&gt;
&lt;li&gt;SSH 接続アラートを確認し、正当な指紋変更を中間者攻撃と誤認しないようにしつつ、本当のリスクを見逃さない。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;/etc/shadow&lt;/code&gt; が漏えいした疑いがある場合は、パスワードリセット、弱いパスワードの禁止、古いハッシュがオフライン解析可能かどうかの確認も検討してください。&lt;/p&gt;
&lt;h2 id=&#34;監視すべきもの&#34;&gt;監視すべきもの
&lt;/h2&gt;&lt;p&gt;この種の脆弱性は利用ウィンドウが短く、従来のログに完全には残らない可能性があります。それでも次の点は確認できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通常ユーザーディレクトリに &lt;code&gt;ssh-keysign-pwn&lt;/code&gt;、&lt;code&gt;chage_pwn&lt;/code&gt;、または類似 PoC ファイルがないか。&lt;/li&gt;
&lt;li&gt;短時間で見慣れない C プログラムをコンパイルするなどの不審なコンパイル行為。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/ssh/ssh_host_*_key&lt;/code&gt; や &lt;code&gt;/etc/shadow&lt;/code&gt; への異常アクセスの兆候。&lt;/li&gt;
&lt;li&gt;異常な &lt;code&gt;pidfd_getfd&lt;/code&gt;、&lt;code&gt;ptrace&lt;/code&gt;、デバッガ関連の挙動。&lt;/li&gt;
&lt;li&gt;外部システムから SSH ホスト指紋異常が報告されていないか。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらのシグナルは悪用を証明するものではなく、存在しないからといって悪用されていない証明にもなりません。最優先事項は、パッチ、再起動、認証情報のローテーション、リスク隔離です。&lt;/p&gt;
&lt;h2 id=&#34;よくある誤解&#34;&gt;よくある誤解
&lt;/h2&gt;&lt;p&gt;1 つ目の誤解：これは OpenSSH のリモート脆弱性ではありません。名前に &lt;code&gt;ssh-keysign&lt;/code&gt; が入っていますが、根本原因は Linux kernel の &lt;code&gt;ptrace&lt;/code&gt; アクセスチェックロジックであり、&lt;code&gt;sshd&lt;/code&gt; のリモート認証フローではありません。&lt;/p&gt;
&lt;p&gt;2 つ目の誤解：ローカルユーザーがいなければ完全に安全、というわけではありません。確かにローカル実行条件は必要ですが、実際の攻撃チェーンでは Web サービス、CI、スクリプト、弱いパスワード、コンテナエスケープなどを足がかりに低権限のローカル実行を得ることがよくあります。&lt;/p&gt;
&lt;p&gt;3 つ目の誤解：&lt;code&gt;ptrace_scope&lt;/code&gt; を設定すれば十分、というものです。これは一時的な緩和策であり、根本修正ではありません。カーネル更新と再起動は必要です。&lt;/p&gt;
&lt;p&gt;4 つ目の誤解：root を取られていなければ問題ない、というものです。SSH ホスト秘密鍵や &lt;code&gt;/etc/shadow&lt;/code&gt; の漏えいだけでも、横展開、ホストなりすまし、オフライン解析につながる十分なリスクがあります。&lt;/p&gt;
&lt;h2 id=&#34;対応チェックリスト&#34;&gt;対応チェックリスト
&lt;/h2&gt;&lt;p&gt;次の順序で実行することを推奨します。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;影響を受ける Linux ホストを棚卸しする。特に複数ユーザー環境と共有環境を優先する。&lt;/li&gt;
&lt;li&gt;ディストリビューション公式のセキュリティアドバイザリを確認し、fixed kernel version を特定する。&lt;/li&gt;
&lt;li&gt;修正済みカーネルをインストールして再起動する。&lt;/li&gt;
&lt;li&gt;すぐに再起動できないマシンでは、先に &lt;code&gt;kernel.yama.ptrace_scope=2&lt;/code&gt; または &lt;code&gt;3&lt;/code&gt; を設定する。&lt;/li&gt;
&lt;li&gt;修正後、実行中のカーネルバージョンを確認する。&lt;/li&gt;
&lt;li&gt;高リスクマシンでは SSH host keys をローテーションする。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/shadow&lt;/code&gt; 漏えいが疑われる場合、パスワードリセットとアカウント監査を検討する。&lt;/li&gt;
&lt;li&gt;公開 PoC、異常なコンパイル、不審なローカルデバッグ挙動を確認する。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ssh-keysign-pwn&lt;/code&gt;（&lt;code&gt;CVE-2026-46333&lt;/code&gt;）は、Linux kernel の &lt;code&gt;__ptrace_may_access()&lt;/code&gt; 関連ロジックに起因するローカル情報漏えい脆弱性です。リモートから直接侵入できるものでも、直接 root shell を与えるものでもありませんが、低権限ローカルユーザーが高価値の機密ファイルを読み取れる可能性があるため、複数ユーザー、共有ホスト、CI、コンテナホスト環境では特に警戒が必要です。&lt;/p&gt;
&lt;p&gt;最も確実な修正は、ディストリビューション提供の修正済みカーネルへ更新し、再起動することです。&lt;code&gt;ptrace_scope=2/3&lt;/code&gt; は一時的な緩和策として使えますが、パッチの代替にはなりません。リスクウィンドウにさらされていた重要ホストでは、SSH ホスト鍵のローテーションとパスワードリスク評価も検討してください。&lt;/p&gt;
&lt;p&gt;参考リンク：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys による __ptrace_may_access() ロジック問題の公開&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys が CVE-2026-46333 番号を確認&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.openwall.com/lists/oss-security/2026/05/15/8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oss-security：Qualys が ptrace_scope の一時緩和を確認&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-46333&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD：CVE-2026-46333&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://security-tracker.debian.org/tracker/CVE-2026-46333&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Debian Security Tracker：CVE-2026-46333&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/he/blog/2026-05-15-ssh-keysign-pwn-cve-2026-46333/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AlmaLinux：ssh-keysign-pwn (CVE-2026-46333) Patches Released&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/torvalds/linux/commit/31e62c2ebbfdc3fe3dbdf5e02c92a9dc67087a3a&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux upstream fix：ptrace get_dumpable() logic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Dirty Frag、Copy Fail、Fragnesia：最近の Linux ローカル権限昇格脆弱性 3 件の比較</title>
        <link>https://knightli.com/ja/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</link>
        <pubDate>Fri, 15 May 2026 13:24:04 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</guid>
        <description>&lt;p&gt;最近、Linux カーネルで注目度の高いローカル権限昇格脆弱性が続けて報告されています。Dirty Frag、Copy Fail、Fragnesia です。最終的な効果はいずれも似ています。低権限のローカルユーザーが root に昇格できる可能性があります。&lt;/p&gt;
&lt;p&gt;ただし運用対応の観点では、これらを一つの脆弱性として扱うべきではありません。入口となるモジュール、発火経路、緩和策、パッチのタイミングが異なります。より正確には、Linux カーネルの「ページキャッシュ、splice、socket buffer、暗号処理経路」という複雑な境界に共通するリスクを露出させたものです。&lt;/p&gt;
&lt;p&gt;この記事ではリスクと対応方針だけを扱い、再現可能な攻撃手順は扱いません。&lt;/p&gt;
&lt;h2 id=&#34;3-つの脆弱性の概要&#34;&gt;3 つの脆弱性の概要
&lt;/h2&gt;&lt;h3 id=&#34;dirty-fragcve-2026-43284&#34;&gt;Dirty Frag：CVE-2026-43284
&lt;/h3&gt;&lt;p&gt;Dirty Frag は主に Linux カーネルのネットワーク経路におけるページキャッシュ書き込み問題を指します。公開資料では、&lt;code&gt;xfrm-ESP&lt;/code&gt; 側の CVE-2026-43284 と、&lt;code&gt;rxrpc&lt;/code&gt; 側の CVE-2026-43500 が一緒に語られることが多いです。&lt;/p&gt;
&lt;p&gt;CVE-2026-43284 は、ESP が共有 &lt;code&gt;skb&lt;/code&gt; fragment を処理する際のインプレース復号に関係します。重要なのは、攻撃者がディスク上のファイルを直接書き換えるのではなく、カーネルが書くべきでない共有ページへ書き込み、ページキャッシュ内のファイル内容に影響する点です。&lt;/p&gt;
&lt;p&gt;運用上覚えておくべきなのは、Dirty Frag が &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt; というカーネルモジュール群とネットワークサブシステム経路に到達することです。IPsec、ESP、RxRPC と関係するため、一時的な緩和策もこれらのモジュールを中心に考えることになります。&lt;/p&gt;
&lt;h3 id=&#34;copy-failcve-2026-31431&#34;&gt;Copy Fail：CVE-2026-31431
&lt;/h3&gt;&lt;p&gt;Copy Fail は Theori / Xint Code が公開した Linux カーネルのローカル権限昇格脆弱性です。入口は IPsec のネットワーク経路ではなく、カーネルのユーザー空間暗号 API である &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt; 関連経路です。&lt;/p&gt;
&lt;p&gt;公開説明では、2017 年に導入されたインプレース最適化に由来するとされています。特定の状況で、カーネルが期待どおりにデータをコピーせず、ページキャッシュページを writable な宛先経路に入れてしまいます。攻撃者は &lt;code&gt;AF_ALG&lt;/code&gt; と &lt;code&gt;splice()&lt;/code&gt; を組み合わせ、ページキャッシュに裏付けられたページへ小さな制御書き込みを行えます。&lt;/p&gt;
&lt;p&gt;リスクが高い理由は、利用可能性が高く、複数の主要ディストリビューションにまたがって影響するためです。Dirty Frag と違い、Copy Fail の一時的な緩和は &lt;code&gt;algif_aead&lt;/code&gt; の制限または無効化、そしてコンテナや CI 環境での &lt;code&gt;AF_ALG&lt;/code&gt; socket 作成制限が中心になります。&lt;/p&gt;
&lt;h3 id=&#34;fragnesiacve-2026-46300&#34;&gt;Fragnesia：CVE-2026-46300
&lt;/h3&gt;&lt;p&gt;Fragnesia は V12 Security が公開した別の Linux カーネルローカル権限昇格脆弱性で、Dirty Frag と近い攻撃面に属します。Dirty Frag と同じ bug ではありませんが、IPsec ESP / &lt;code&gt;rxrpc&lt;/code&gt; 関連モジュールとページキャッシュ書き込み効果を中心にしています。&lt;/p&gt;
&lt;p&gt;AlmaLinux はこれを同じコード領域における 3 つ目の local-root 問題として位置付けています。ポイントは、&lt;code&gt;skb_try_coalesce()&lt;/code&gt; が socket buffer fragment を結合する際に共有 fragment マーカーを正しく保持しなかったことです。その結果、後続の XFRM ESP-in-TCP 受信経路が外部ページキャッシュページ上でインプレース復号を行う可能性があります。&lt;/p&gt;
&lt;p&gt;つまり、Fragnesia は Dirty Frag に近い問題です。どちらも &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;、&lt;code&gt;skb&lt;/code&gt; fragment、ESP 復号経路の周辺にあります。一時的な緩和策も大きく重なります。&lt;/p&gt;
&lt;h2 id=&#34;共通点なぜ危険なのか&#34;&gt;共通点：なぜ危険なのか
&lt;/h2&gt;&lt;p&gt;3 つの共通点は「コード位置が完全に同じ」ということではなく、攻撃結果とリスクモデルが非常に似ていることです。&lt;/p&gt;
&lt;p&gt;第一に、いずれもローカル権限昇格です。攻撃者は通常、まず対象マシン上で一般ユーザーとしてコード実行能力を得てから、root への昇格を試みます。単一ユーザーのデスクトップではリモート一発侵害ではありませんが、複数ユーザーサーバー、CI runner、コンテナホスト、共有開発機、SSH を公開している VPS では、低権限入口は珍しくありません。&lt;/p&gt;
&lt;p&gt;第二に、いずれもページキャッシュ書き込みに関係します。攻撃者は必ずしもディスク上のファイルを恒久的に書き換えるわけではなく、メモリ上のページキャッシュコピーに影響します。これにより従来のファイル整合性チェックは不十分になり得ます。ディスク hash は正常でも、実行経路が汚染されたページキャッシュ内容を読む可能性があります。&lt;/p&gt;
&lt;p&gt;第三に、タイミングに強く依存する競合条件というより、決定的なロジックバグに近いものです。公開資料では、これらの脆弱性は race condition に勝つ必要がないと繰り返し述べられています。防御側は古い経験則で利用成功率を低く見積もるべきではありません。&lt;/p&gt;
&lt;p&gt;第四に、コンテナや自動化実行環境のリスクを増幅します。コンテナ内の低権限コード、CI ジョブ、ビルドスクリプト、サードパーティプラグインがホストカーネルの関連インターフェースに到達できると、「ローカル問題」が「プラットフォーム問題」に変わります。&lt;/p&gt;
&lt;h2 id=&#34;相違点一つの対策では全部を覆えない&#34;&gt;相違点：一つの対策では全部を覆えない
&lt;/h2&gt;&lt;p&gt;最大の違いは入口となるモジュールです。&lt;/p&gt;
&lt;p&gt;Copy Fail の重要な入口は &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt; で、カーネルのユーザー空間暗号 API に属します。一時的な防御は &lt;code&gt;algif_aead&lt;/code&gt; の無効化または制限、そして seccomp によるコンテナ内の &lt;code&gt;AF_ALG&lt;/code&gt; socket 作成ブロックが中心です。&lt;/p&gt;
&lt;p&gt;Dirty Frag の重要な入口は &lt;code&gt;xfrm-ESP&lt;/code&gt; と &lt;code&gt;rxrpc&lt;/code&gt; です。プロトコル処理と socket buffer 処理経路に近く、一時的な防御では &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt; の無効化を検討します。ただし IPsec、VPN、トンネル、関連するネットワーク機能に影響する可能性があります。&lt;/p&gt;
&lt;p&gt;Fragnesia の入口も Dirty Frag に近い領域ですが、具体的には &lt;code&gt;skb_try_coalesce()&lt;/code&gt; が共有 fragment マーカーを保持しなかったことが問題です。Copy Fail の暗号 API 問題というより、Dirty Frag のリスク面にある別の分岐と見るべきです。&lt;/p&gt;
&lt;p&gt;したがって、Copy Fail を処理済みだから Dirty Frag と Fragnesia も覆われる、とは言えません。逆に &lt;code&gt;esp4&lt;/code&gt; / &lt;code&gt;esp6&lt;/code&gt; を無効化したから Copy Fail が消えるわけでもありません。それぞれのパッチ状態と緩和策を別々に確認する必要があります。&lt;/p&gt;
&lt;h2 id=&#34;影響範囲の判断方法&#34;&gt;影響範囲の判断方法
&lt;/h2&gt;&lt;p&gt;この種の脆弱性では、ディストリビューション名やカーネルのメジャーバージョンだけで判断しないことが重要です。ディストリビューションは修正をバックポートしますし、クラウドベンダーは独自のカーネルブランチを維持します。企業向けディストリビューションでは追加パッチが入っていることもあります。&lt;/p&gt;
&lt;p&gt;より安全な確認順序は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ディストリビューションのセキュリティアドバイザリとカーネルパッケージ changelog を確認する。&lt;/li&gt;
&lt;li&gt;現在のカーネルパッケージで対象 CVE が修正済みか確認する。&lt;/li&gt;
&lt;li&gt;クラウドサーバー、コンテナホスト、CI ノードでは、クラウド事業者やプラットフォーム側の公告も確認する。&lt;/li&gt;
&lt;li&gt;一時的な緩和策では、業務が対象モジュールに依存しているか確認する。&lt;/li&gt;
&lt;li&gt;カーネル更新後は再起動を行い、実際に実行中のカーネルが切り替わったことを確認する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;この手順で最もありがちな落とし穴は「パッケージは更新したが、マシンを再起動していない」ことです。カーネル脆弱性は通常のユーザー空間サービス更新とは違います。新しいパッケージを入れても、再起動するまで古いカーネルが動き続ける可能性があります。&lt;/p&gt;
&lt;h2 id=&#34;運用上の優先度&#34;&gt;運用上の優先度
&lt;/h2&gt;&lt;p&gt;最優先で処理すべきマシンは、すべての Linux マシンを均等に並べたものではありません。低権限コード実行が最も起きやすい場所から始めるべきです。&lt;/p&gt;
&lt;p&gt;優先度が高い環境は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複数ユーザーのログインサーバー&lt;/li&gt;
&lt;li&gt;CI / CD runner&lt;/li&gt;
&lt;li&gt;ビルドマシンと成果物パッケージングマシン&lt;/li&gt;
&lt;li&gt;コンテナホストと Kubernetes ノード&lt;/li&gt;
&lt;li&gt;共有開発機&lt;/li&gt;
&lt;li&gt;SSH を公開しているクラウドサーバーと VPS&lt;/li&gt;
&lt;li&gt;サードパーティスクリプト、プラグイン、ジョブキューを実行するプラットフォーム&lt;/li&gt;
&lt;li&gt;Web 脆弱性、弱いパスワード、過去の侵害痕跡があるマシン&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;閉じた単一ユーザー環境で外部コード実行入口がないマシンも、脆弱であればリスクはあります。ただし対応順序は後ろに回せる場合があります。&lt;/p&gt;
&lt;h2 id=&#34;一時的な緩和策の位置付け&#34;&gt;一時的な緩和策の位置付け
&lt;/h2&gt;&lt;p&gt;一時的な緩和策はパッチの代替ではありません。すぐに再起動できない、またはディストリビューションのパッケージを待っている間に露出面を下げるためのものです。&lt;/p&gt;
&lt;p&gt;Copy Fail では &lt;code&gt;algif_aead&lt;/code&gt; と &lt;code&gt;AF_ALG&lt;/code&gt; に注目します。業務でカーネル AF_ALG 暗号インターフェースを使っていない場合は、関連モジュールの無効化を評価できます。コンテナ環境では、信頼できないワークロードが該当 socket を自由に作れないよう、まず seccomp ポリシーを確認すべきです。&lt;/p&gt;
&lt;p&gt;Dirty Frag と Fragnesia では、&lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt; に注目します。システムが IPsec ESP、関連 VPN、トンネル、RxRPC に依存していない場合は一時的な無効化を検討できます。ただし本番環境では不用意に実行しないでください。これらのモジュールは実際のネットワーク業務を支えている可能性があります。&lt;/p&gt;
&lt;p&gt;最終的にはカーネル更新に戻る必要があります。一時的な緩和策は攻撃面を減らせますが、システムが完全に安全であることの証明にはなりません。&lt;/p&gt;
&lt;h2 id=&#34;3-つの脆弱性が示すもの&#34;&gt;3 つの脆弱性が示すもの
&lt;/h2&gt;&lt;p&gt;本当に警戒すべきなのは CVE の数だけではありません。これらの脆弱性はすべて、ゼロコピー、&lt;code&gt;splice&lt;/code&gt;、socket buffer、ページキャッシュ、暗号インターフェース、プロトコルスタック最適化といった高複雑度のカーネル経路に集中しています。&lt;/p&gt;
&lt;p&gt;これらの経路は大きな性能上の利益をもたらしますが、所有権の境界を保つのが難しくなります。fragment が共有されているか、ページにインプレースで書けるのか、最適化が本当にコピー削減だけなのか、といった点が安全境界そのものになります。&lt;/p&gt;
&lt;p&gt;セキュリティチームと運用チームにとって、結論は実務的です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ローカル権限昇格は「既存の低権限入口を増幅するもの」として扱う。&lt;/li&gt;
&lt;li&gt;コンテナはカーネル脆弱性に対する自然な隔離境界ではない。&lt;/li&gt;
&lt;li&gt;ファイル整合性チェックはディスク内容だけを見てはいけない。&lt;/li&gt;
&lt;li&gt;CI、ビルドマシン、プラグイン基盤は高優先度資産として扱う。&lt;/li&gt;
&lt;li&gt;カーネルパッチは「インストール済み」と「実行中」の両方を確認する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Dirty Frag、Copy Fail、Fragnesia はいずれも最近の Linux ローカル権限昇格リスクとして優先度の高い事象ですが、一つの脆弱性の別名ではありません。&lt;/p&gt;
&lt;p&gt;Copy Fail は &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt; 暗号 API 経路を通ります。Dirty Frag は &lt;code&gt;xfrm-ESP&lt;/code&gt; と &lt;code&gt;rxrpc&lt;/code&gt; 関連経路を通ります。Fragnesia は Dirty Frag に近い攻撃面で、&lt;code&gt;skb&lt;/code&gt; fragment マーカー処理の問題により再びページキャッシュ書き込みリスクを引き起こします。&lt;/p&gt;
&lt;p&gt;対応として最も堅実なのは、ディストリビューションの公告に従ってカーネルを更新し、再起動することです。すぐに更新できないシステムでは、漏洞の入口に応じて一時的なモジュール無効化や seccomp の強化を評価します。複数テナント、CI、コンテナホスト、共有開発環境を優先してください。&lt;/p&gt;
&lt;p&gt;参考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Theori Copy Fail 説明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/theori-io/copy-fail-CVE-2026-31431&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/theori-io/copy-fail-CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CERT-EU Copy Fail セキュリティアドバイザリ：&lt;a class=&#34;link&#34; href=&#34;https://cert.europa.eu/publications/security-advisories/2026-005/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cert.europa.eu/publications/security-advisories/2026-005/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Dirty Frag 説明：&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-07-dirty-frag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-07-dirty-frag/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Fragnesia 説明：&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;V12 Security Fragnesia PoC 説明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/tree/main/fragnesia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/tree/main/fragnesia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Fragnesia (CVE-2026-46300)：Linux カーネルのローカル権限昇格脆弱性の影響と緩和策</title>
        <link>https://knightli.com/ja/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</link>
        <pubDate>Fri, 15 May 2026 13:18:01 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</guid>
        <description>&lt;p&gt;Linux カーネルで、Dirty Frag と同じ系統の攻撃面に関係するローカル権限昇格脆弱性が新たに報告されました。Fragnesia (CVE-2026-46300) です。&lt;/p&gt;
&lt;p&gt;V12 Security の公開情報によると、Fragnesia は Linux のローカル権限昇格脆弱性です。攻撃者はホスト上で高権限を持っている必要はありません。ローカルでコードを実行できれば、カーネルの XFRM ESP-in-TCP サブシステムのロジック欠陥を利用し、読み取り専用ファイルのページキャッシュ内容をバイト単位で書き換え、最終的に root shell を得られる可能性があります。&lt;/p&gt;
&lt;p&gt;原資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;V12 Security PoC 説明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この記事では再現可能な攻撃手順は扱わず、運用側が把握すべきリスクと対応方針に絞ります。&lt;/p&gt;
&lt;h2 id=&#34;dirty-frag-との関係&#34;&gt;Dirty Frag との関係
&lt;/h2&gt;&lt;p&gt;V12 Security は Fragnesia を Dirty Frag 脆弱性クラスに分類しています。Dirty Frag と同一の bug ではありませんが、Linux カーネルの XFRM ESP-in-TCP という同じ攻撃面にある別の問題です。&lt;/p&gt;
&lt;p&gt;XFRM は Linux カーネルで IPsec を処理するためのフレームワークです。ESP-in-TCP は ESP 暗号化トラフィックを TCP 上で運ぶ仕組みに関係します。Fragnesia の問題は、共有ページフラグメントと socket buffer の結合処理にあります。特定の状況で、カーネルが fragment がまだ共有状態であることを見失い、制御可能な書き込み余地が生まれます。&lt;/p&gt;
&lt;p&gt;この種の問題は Dirty Pipe / Dirty Frag のようなページキャッシュ書き込み脆弱性を想起させます。具体的なコードは同一ではありませんが、攻撃効果が読み取り専用ファイルのページキャッシュ上のコピーに到達する点が共通しています。&lt;/p&gt;
&lt;h2 id=&#34;なぜ危険なのか&#34;&gt;なぜ危険なのか
&lt;/h2&gt;&lt;p&gt;Fragnesia が危険な理由は主に 3 つあります。&lt;/p&gt;
&lt;p&gt;第一に、これはローカル権限昇格です。攻撃者が通常ユーザーとしてコードを実行できるだけで、root に昇格できる可能性があります。複数ユーザーのサーバー、コンテナホスト、CI runner、共有開発機、VPS、Shell を公開している環境では、通常のデスクトップよりも深刻です。&lt;/p&gt;
&lt;p&gt;第二に、従来型の競合条件に依存しません。V12 の説明では、ESP-in-TCP の処理フローを構成し、すでに socket buffer に splice されたファイルページ上で暗号化ストリームを処理させることで、ページキャッシュ内容にバイト単位の影響を与える経路が示されています。これは単なる理論上の可能性ではなく、安定した利用経路が検証されていることを意味します。&lt;/p&gt;
&lt;p&gt;第三に、変更されるのはディスク上のファイルではなくページキャッシュです。公開説明の例では &lt;code&gt;/usr/bin/su&lt;/code&gt; が対象になっています。成功後もディスク上のファイルは恒久的には書き換えられず、変更はメモリ上のページキャッシュに存在します。ディスクファイルの hash や整合性だけを確認する巡回チェックでは異常を見逃す可能性があります。&lt;/p&gt;
&lt;p&gt;管理者にとって厄介なのはここです。ファイルは変わっていないように見えても、汚染されたページキャッシュ上の対象バイナリを実行すると権限昇格につながる可能性があります。&lt;/p&gt;
&lt;h2 id=&#34;既知の影響範囲&#34;&gt;既知の影響範囲
&lt;/h2&gt;&lt;p&gt;V12 Security の説明では、Dirty Frag の影響を受け、2026 年 5 月 13 日の関連パッチが適用されていないカーネルは Fragnesia の影響も受けるとされています。公開検証環境には Ubuntu 22.04、Ubuntu 24.04、&lt;code&gt;6.8.0-111-generic&lt;/code&gt; などのカーネルが含まれます。&lt;/p&gt;
&lt;p&gt;注意点は 2 つあります。&lt;/p&gt;
&lt;p&gt;第一に、ディストリビューションのメジャーバージョンだけで判断しないことです。Ubuntu 22.04 / 24.04 が影響を受けるかどうかは、ディストリビューション名ではなく実際のカーネルパッチ状態で決まります。&lt;/p&gt;
&lt;p&gt;第二に、デフォルトの AppArmor 制限だけに頼らないことです。Ubuntu の非特権ユーザー名前空間に対する AppArmor 制限はハードルを上げますが、公開情報ではそれは追加の回避対象であり、脆弱性本体の根本対策ではありません。&lt;/p&gt;
&lt;p&gt;信頼できる判断方法は、各ディストリビューションのセキュリティアドバイザリとカーネルパッケージ更新を確認することです。&lt;/p&gt;
&lt;h2 id=&#34;一時的な緩和策&#34;&gt;一時的な緩和策
&lt;/h2&gt;&lt;p&gt;すぐにカーネルを更新できない場合は、まず関連プロトコルモジュールに依存しているかを確認します。&lt;/p&gt;
&lt;p&gt;V12 が示す緩和方向は Dirty Frag と同じです。システムが IPsec ESP や RxRPC に依存していない場合、&lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt; などのモジュール無効化を検討できます。ただしネットワーク機能に影響するため、本番環境で不用意に実行すべきではありません。IPsec、VPN、トンネル、関連するカーネル機能を業務で使っているか確認が必要です。&lt;/p&gt;
&lt;p&gt;より安全な対応順序は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ディストリビューションがカーネルのセキュリティ更新を公開しているか確認する。&lt;/li&gt;
&lt;li&gt;まずカーネルパッチをインストールし、再起動を計画する。&lt;/li&gt;
&lt;li&gt;すぐに更新できない場合のみ、一時的なモジュール無効化を評価する。&lt;/li&gt;
&lt;li&gt;複数ユーザーシステムと CI / ビルド環境を優先する。&lt;/li&gt;
&lt;li&gt;不要なローカルアカウント、Shell、コンテナ脱出面、低権限実行入口を確認する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;モジュール無効化を最終修復とみなすべきではありません。これは露出面を一時的に下げる手段です。&lt;/p&gt;
&lt;h2 id=&#34;すでに悪用された疑いがある場合&#34;&gt;すでに悪用された疑いがある場合
&lt;/h2&gt;&lt;p&gt;Fragnesia の特徴の一つはページキャッシュ汚染です。V12 は、悪用後に対象ファイルのページキャッシュ上のコピーが注入内容を含み、ページが追い出されるかシステムが再起動されるまで、後続の実行で異常な挙動を起こし得ると説明しています。&lt;/p&gt;
&lt;p&gt;悪用が疑われる場合は、少なくとも次を実施します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;できるだけ早くログと監査記録を保全する。&lt;/li&gt;
&lt;li&gt;最近の異常なローカルログイン、低権限ユーザー活動、不審なプロセス、root shell の痕跡を確認する。&lt;/li&gt;
&lt;li&gt;関連するページキャッシュをクリアするか、直接再起動する。&lt;/li&gt;
&lt;li&gt;修正済みカーネルへ更新する。&lt;/li&gt;
&lt;li&gt;重要バイナリの整合性を確認する。ただしディスク hash のみに依存しない。&lt;/li&gt;
&lt;li&gt;露出した可能性のある認証情報と鍵をローテーションする。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本番サーバーであれば、単なる通常のパッチ適用ではなく、潜在的なローカル権限昇格インシデントとして扱う方が安全です。&lt;/p&gt;
&lt;h2 id=&#34;優先して確認すべきマシン&#34;&gt;優先して確認すべきマシン
&lt;/h2&gt;&lt;p&gt;この種の脆弱性では、すべての Linux マシンを同じ優先度で扱うのではなく、攻撃者が低権限コード実行を得やすい場所から見るべきです。&lt;/p&gt;
&lt;p&gt;優先度が高い環境は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複数ユーザーのログインサーバー&lt;/li&gt;
&lt;li&gt;CI / CD runner&lt;/li&gt;
&lt;li&gt;ビルドマシン&lt;/li&gt;
&lt;li&gt;共有開発機&lt;/li&gt;
&lt;li&gt;コンテナホスト&lt;/li&gt;
&lt;li&gt;VPS とクラウドサーバー&lt;/li&gt;
&lt;li&gt;SSH を公開しているエッジノード&lt;/li&gt;
&lt;li&gt;サードパーティ製スクリプトやプラグインを実行するプラットフォーム&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;閉じた単一ユーザー環境で外部コード実行入口がないマシンも、脆弱であれば影響はあります。ただし緊急度は相対的に下げられます。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Fragnesia が注目に値するのは名前が新しいからではありません。Linux のローカル権限昇格問題を、ページキャッシュとカーネルネットワークサブシステムの複雑な境界へ再び引き戻したからです。&lt;/p&gt;
&lt;p&gt;管理者にとって重要なのは、攻撃手順を研究することではなく、カーネルのパッチ状態を確認し、ESP / RxRPC への依存を評価し、露出度の高いマシンを優先して更新し、「ディスクファイルが変わっていない」ことが「システムが影響を受けていない」ことを意味しないと理解することです。&lt;/p&gt;
&lt;p&gt;影響を受けるシステムでは、最終的な答えはディストリビューションが提供するカーネル更新をできるだけ早く適用することです。一時的なモジュール無効化は移行措置であり、パッチの代替ではありません。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Dirty Frag CVE-2026-43284：Linux ローカル権限昇格のリスクと緩和ガイド</title>
        <link>https://knightli.com/ja/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/</link>
        <pubDate>Sat, 09 May 2026 07:25:55 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/</guid>
        <description>&lt;p&gt;Dirty Frag は、2026 年 5 月に公開され、実際の悪用の兆候も報告されている Linux kernel local privilege escalation 脆弱性群である。Microsoft は、攻撃者がすでに低権限の code execution を得た後に root へ昇格する post-compromise risk として説明している。Ubuntu も CVE-2026-43284 を High として扱っている。&lt;/p&gt;
&lt;p&gt;この種の脆弱性で危険なのは、「remote から一発で侵入される」ことではない。「侵入後に権限を一気に広げられる」ことだ。攻撃者が弱い SSH account、WebShell、container escape、低権限 service account、phishing 後の remote access などで local execution を得ると、Dirty Frag を使って root を取得し、security tooling の停止、credential の読み取り、log 改ざん、lateral movement、persistence につなげる可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;dirty-frag-に関係する-cve&#34;&gt;Dirty Frag に関係する CVE
&lt;/h2&gt;&lt;p&gt;現在の公開情報では、Dirty Frag は主に二つの番号と関係している。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43284&lt;/code&gt;：Linux kernel の xfrm/ESP path に関係する。Microsoft が言及する &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt; はこのリスク領域に含まれる。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43500&lt;/code&gt;：Microsoft は &lt;code&gt;rxrpc&lt;/code&gt; に関連すると説明しているが、2026 年 5 月 8 日時点では NVD にまだ正式公開されておらず、patch status も変化中である。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;したがって、実際の確認では一つの CVE だけを見るべきではない。&lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;、関連する xfrm/IPsec 機能が有効か、必要か、distribution kernel patch があるかをまとめて確認するのが安全だ。&lt;/p&gt;
&lt;h2 id=&#34;技術的な概要&#34;&gt;技術的な概要
&lt;/h2&gt;&lt;p&gt;Microsoft と Ubuntu の説明によると、CVE-2026-43284 は Linux kernel の networking と memory-fragment handling、特に ESP/IPsec path における shared page fragments の扱いに関係する。&lt;/p&gt;
&lt;p&gt;簡単に言えば、data page は splice などの仕組みで network buffer に attach されることがある。その後の kernel path が、それらの fragment を privately owned data とみなして in-place modification できるものとして扱うと、本来書き込むべきでない場所で in-place decrypt や modification が起きる可能性がある。攻撃者はこれを利用して page cache behavior を操作し、最終的に local privilege escalation を達成し得る。&lt;/p&gt;
&lt;p&gt;これは以前公開された CopyFail（&lt;code&gt;CVE-2026-31431&lt;/code&gt;）と背景が似ている。どちらも Linux page cache、kernel data path、local privilege escalation を中心にしている。Dirty Frag が危険なのは、追加の attack path を持ち、狭い race window に依存する従来型 LPE より安定しやすい可能性がある点だ。&lt;/p&gt;
&lt;h2 id=&#34;優先的に見るべき環境&#34;&gt;優先的に見るべき環境
&lt;/h2&gt;&lt;p&gt;Dirty Frag は local privilege escalation なので、攻撃者がすでに対象 machine 上で code を実行できることが前提になる。優先的に確認すべき環境は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSH を公開している Linux server。&lt;/li&gt;
&lt;li&gt;WebShell を書き込まれる可能性がある Web application server。&lt;/li&gt;
&lt;li&gt;multi-user login host、bastion、developer machine、CI/CD runner。&lt;/li&gt;
&lt;li&gt;container host、Kubernetes node、OpenShift node。&lt;/li&gt;
&lt;li&gt;IPsec、VPN、xfrm、RxRPC 関連機能を使う system。&lt;/li&gt;
&lt;li&gt;Ubuntu、RHEL、CentOS Stream、AlmaLinux、Fedora、openSUSE など主要 distribution を動かす server。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;local multi-user、container、露出した application path がまったくない server ではリスクは低めだ。しかし「攻撃者が low-privileged shell を得る可能性」がある system では、高優先度の kernel vulnerability として扱うべきである。&lt;/p&gt;
&lt;h2 id=&#34;まず-patch-を優先する&#34;&gt;まず patch を優先する
&lt;/h2&gt;&lt;p&gt;最も確実な修正は、distribution が提供する kernel security update をインストールし、新しい kernel で reboot することだ。&lt;/p&gt;
&lt;p&gt;Ubuntu の CVE page では、&lt;code&gt;CVE-2026-43284&lt;/code&gt; は 2026 年 5 月 8 日に公開され、priority は High とされている。Microsoft も Linux Kernel Organization が &lt;code&gt;CVE-2026-43284&lt;/code&gt; の修正を公開しており、できるだけ早く patch を適用するよう促している。&lt;/p&gt;
&lt;p&gt;まず system を確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /etc/os-release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;distribution に合わせて kernel を更新する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt full-upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;または：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dnf update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更新後は、新しい kernel で起動していることを必ず確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -r
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;kernel package をインストールしただけで reboot していない場合、古い kernel が動き続けるため、脆弱性は残る可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;暫定緩和関連-module-を無効化する&#34;&gt;暫定緩和：関連 module を無効化する
&lt;/h2&gt;&lt;p&gt;patch がまだない、または production をすぐ reboot できない場合は、関連 module を一時的に無効化できるか評価する。Ubuntu の緩和策は、&lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt; の loading を block し、すでに loaded なら unload するというものだ。&lt;/p&gt;
&lt;p&gt;modprobe block rule を作成する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;install esp4 /bin/false&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/modprobe.d/dirty-frag.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;install esp6 /bin/false&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/modprobe.d/dirty-frag.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;install rxrpc /bin/false&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/modprobe.d/dirty-frag.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;early boot で module が load されないよう initramfs を更新する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-initramfs -u -k all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;すでに loaded な module を unload する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rmmod esp4 esp6 rxrpc 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;module がまだ loaded か確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -qE &lt;span class=&#34;s1&#34;&gt;&amp;#39;^(esp4|esp6|rxrpc) &amp;#39;&lt;/span&gt; /proc/modules &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Affected modules are loaded&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Affected modules are NOT loaded&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;module が業務で使われている場合、unload に失敗することがある。その場合、block rule は reboot 後に有効になる可能性が高い。&lt;/p&gt;
&lt;h2 id=&#34;無効化前に業務影響を確認する&#34;&gt;無効化前に業務影響を確認する
&lt;/h2&gt;&lt;p&gt;上の緩和コマンドをそのまま貼り付けてはいけない。&lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、xfrm/IPsec 関連機能は、VPN、tunnel、encrypted networking、Kubernetes/container networking、企業 network configuration で使われている可能性がある。&lt;code&gt;rxrpc&lt;/code&gt; も、その protocol に依存する workload に影響する。&lt;/p&gt;
&lt;p&gt;production で実行する前に、少なくとも次を確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsmod &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -E &lt;span class=&#34;s1&#34;&gt;&amp;#39;^(esp4|esp6|rxrpc|xfrm)&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip xfrm state
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip xfrm policy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;IPsec VPN や関連 kernel networking に依存している場合、module 無効化で接続が切れる可能性がある。その場合は、module block に長く頼るより、kernel patch と maintenance reboot を早めに計画するべきだ。&lt;/p&gt;
&lt;h2 id=&#34;侵害後確認を省かない&#34;&gt;侵害後確認を省かない
&lt;/h2&gt;&lt;p&gt;Microsoft は、緩和策だけでは成功した exploit による変更を元に戻せない可能性があると強調している。攻撃者がすでに root を得ていた場合、persistence、file modification、log tampering、session data access が残っている可能性がある。&lt;/p&gt;
&lt;p&gt;少なくとも次を確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;journalctl -k --since &lt;span class=&#34;s2&#34;&gt;&amp;#34;24 hours ago&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -Ei &lt;span class=&#34;s2&#34;&gt;&amp;#34;dirty|frag|exploit|segfault|xfrm|rxrpc|esp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;last -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lastlog
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo find /tmp /var/tmp /dev/shm -type f -mtime -3 -ls
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo find / -perm -4000 -type f -mtime -7 -ls 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;特に次を見る。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;異常な &lt;code&gt;su&lt;/code&gt;、&lt;code&gt;sudo&lt;/code&gt;、SUID/SGID process launch。&lt;/li&gt;
&lt;li&gt;最近追加された ELF executable。&lt;/li&gt;
&lt;li&gt;Web directory 内の怪しい PHP、JSP、ASP file。&lt;/li&gt;
&lt;li&gt;SSH authorized_keys の変更。&lt;/li&gt;
&lt;li&gt;systemd service、cron、rc.local に追加された persistence。&lt;/li&gt;
&lt;li&gt;container host 上の異常な privileged container や mount。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;悪用が疑われる場合は、host を isolate し、evidence を保存し、credential を rotate してから cleanup する。module unload や cache clearing だけで安全になったと考えてはいけない。&lt;/p&gt;
&lt;h2 id=&#34;drop_caches-について&#34;&gt;drop_caches について
&lt;/h2&gt;&lt;p&gt;Microsoft は、一部の post-exploitation integrity verification で cache clearing を検討できると述べている。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは vulnerability fix でも incident cleanup command でもない。cache clearing は追加の disk I/O と production performance への影響を起こし得る。影響を理解したうえで補助操作として使うべきだ。本当の修正は patch、reboot、integrity verification、persistence check である。&lt;/p&gt;
&lt;h2 id=&#34;推奨対応順序&#34;&gt;推奨対応順序
&lt;/h2&gt;&lt;p&gt;production environment では、次の順序が比較的安全だ。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Linux asset と kernel version を棚卸しする。&lt;/li&gt;
&lt;li&gt;exposed SSH、Web workload、container host、multi-user system を優先する。&lt;/li&gt;
&lt;li&gt;reboot できる system は早急に patch して新 kernel で起動する。&lt;/li&gt;
&lt;li&gt;まだ patch または reboot できない system は、&lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt; の無効化を評価する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;su&lt;/code&gt;、SUID/SGID、異常 ELF、WebShell、container escape indicator の監視を強化する。&lt;/li&gt;
&lt;li&gt;悪用が疑われる host では侵害後確認と credential rotation を行う。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Dirty Frag は「remote one-click」脆弱性ではないが、侵害後のリスクを大きく高める。攻撃者が local で低権限 code execution を得るだけで、&lt;code&gt;CVE-2026-43284&lt;/code&gt; と関連する &lt;code&gt;rxrpc&lt;/code&gt; attack surface を使って root へ昇格できる可能性がある。&lt;/p&gt;
&lt;p&gt;管理者にとって重要なのは PoC 研究ではない。kernel が影響を受けるかを確認し、distribution security update をインストールして reboot すること。patch window 前には関連 module の無効化を評価すること。そして露出している system や疑わしい system では integrity と persistence を確認することだ。&lt;/p&gt;
&lt;p&gt;参考リンク：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/security/blog/2026/05/08/active-attack-dirty-frag-linux-vulnerability-expands-post-compromise-risk/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Security Blog：Active attack: Dirty Frag Linux vulnerability expands post-compromise risk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/security/CVE-2026-43284&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu：CVE-2026-43284&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/blog/dirty-frag-linux-vulnerability-fixes-available&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu：Dirty Frag Linux kernel local privilege escalation vulnerability mitigations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Btrfs Scrub 使用ガイド：データ検証、自動修復、定期メンテナンス</title>
        <link>https://knightli.com/ja/2026/05/09/btrfs-scrub-check-repair-guide/</link>
        <pubDate>Sat, 09 May 2026 07:11:01 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/09/btrfs-scrub-check-repair-guide/</guid>
        <description>&lt;p&gt;Btrfs scrub は、Btrfs の日常メンテナンスで最も重要で、同時に誤解されやすい機能の一つである。これは伝統的な意味の fsck ではない。filesystem data と metadata を読み、checksum、superblock、metadata block header、disk read error を検証し、信頼できる replica がある場合に修復を試みる online validation pass である。&lt;/p&gt;
&lt;p&gt;NAS、home server、backup disk、multi-device array で Btrfs を使っているなら、scrub は定期メンテナンスに入れるべきだ。価値は「壊れてから修理する」ことではなく、disk がまだ読めて、array に good replica が残っている段階で silent corruption を早期に見つけることにある。&lt;/p&gt;
&lt;h2 id=&#34;scrub-は何を確認するのか&#34;&gt;scrub は何を確認するのか
&lt;/h2&gt;&lt;p&gt;Btrfs の公式ドキュメントによると、scrub は filesystem data と metadata を走査し、主に次を確認する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;data block checksum error。&lt;/li&gt;
&lt;li&gt;basic super block error。&lt;/li&gt;
&lt;li&gt;basic metadata block header error。&lt;/li&gt;
&lt;li&gt;disk read error。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;RAID1 のような replicated block group profile を使う filesystem では、read-write mount 上の scrub が一部の損傷を自動修復できる。修復は魔法ではない。別の replica から検証済みの good data をコピーするだけである。&lt;/p&gt;
&lt;p&gt;ここが重要だ。scrub の修復能力は「利用可能な good copy が存在すること」に依存する。single disk に data が一つしかない場合、scrub は checksum error を検出できても、元の内容を自力で復元することは通常できない。&lt;/p&gt;
&lt;h2 id=&#34;よく使うコマンド&#34;&gt;よく使うコマンド
&lt;/h2&gt;&lt;p&gt;mount point に対して scrub を開始する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub start /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;foreground で実行し、結果を手動で観察する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub start -B /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;status を確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub status /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;実行中の scrub を cancel する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub cancel /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;中断された scrub を resume する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub resume /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Btrfs の mount path を指定すると、その filesystem 内の全 device を並列に scrub する。device を指定した場合は、その device だけを scrub する。ただし指定 device 上の replica が読めない、または検証に失敗した場合、Btrfs は他の device から good copy を読むことを試みる。&lt;/p&gt;
&lt;h2 id=&#34;scrub-は-fsck-ではない&#34;&gt;scrub は fsck ではない
&lt;/h2&gt;&lt;p&gt;最もよくある誤解がこれだ。scrub は &lt;code&gt;btrfs check&lt;/code&gt; ではなく、伝統的な filesystem checker でもない。&lt;/p&gt;
&lt;p&gt;scrub ができること：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;checksum を使って data または metadata corruption を検出する。&lt;/li&gt;
&lt;li&gt;他に信頼できる replica がある場合に自動修復する。&lt;/li&gt;
&lt;li&gt;disk read error と一部の基本構造 error を検出する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;scrub ができないこと：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;good replica がない data を再構築する。&lt;/li&gt;
&lt;li&gt;offline filesystem check を置き換える。&lt;/li&gt;
&lt;li&gt;複雑な tree structure corruption をすべて修復する。&lt;/li&gt;
&lt;li&gt;application-level file content が必ず正しいと保証する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;filesystem structure が深刻に壊れている場合、専門家の助言のもとで &lt;code&gt;btrfs check&lt;/code&gt; などの tool が必要になることがある。scrub を万能修復コマンドとして扱ってはいけない。&lt;/p&gt;
&lt;h2 id=&#34;nocow-file-のリスク&#34;&gt;NOCOW file のリスク
&lt;/h2&gt;&lt;p&gt;Btrfs 公式ドキュメントは重要な注意点を挙げている。&lt;code&gt;chattr +C&lt;/code&gt; で file に &lt;code&gt;NOCOW&lt;/code&gt; attribute を設定すると、現在の実装では暗黙に &lt;code&gt;NODATASUM&lt;/code&gt; が有効になる。つまり、その file data 自体には checksum がない。&lt;/p&gt;
&lt;p&gt;scrub はこれらの file の metadata を検証し修復できるが、file data の内容は検証できない。multi-replica setup では特に問題になる。ある NOCOW file の一つの copy が壊れても、Btrfs にはどの replica が正しいか判断する data checksum がないため、壊れた内容を user space tool に返す可能性がある。&lt;/p&gt;
&lt;p&gt;一部の application は performance のために &lt;code&gt;+C&lt;/code&gt; を default で使う。systemd journal や一部の libvirt storage pool が代表例である。VM image、database、log directory では性能上の理由があるが、普通の COW file と同じように scrub が data content を守ってくれるとは期待できない。&lt;/p&gt;
&lt;h2 id=&#34;read-only-scrub-でも書き込みが起こり得る&#34;&gt;read-only scrub でも書き込みが起こり得る
&lt;/h2&gt;&lt;p&gt;もう一つ直感に反する点がある。read-write mounted filesystem で read-only scrub を実行しても、いくつかの write が発生する可能性がある。&lt;/p&gt;
&lt;p&gt;公式ドキュメントによると、これは block group を read-only として mark することと block group items を write back することの race を避けるための design limitation である。完全に write のない scrub を望むなら、read-only mounted filesystem 上で read-only scrub を実行する必要がある。read-write mount に read-only scrub option を付けるだけでは不十分だ。&lt;/p&gt;
&lt;p&gt;一般ユーザーにとっての意味は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常の online scrub は read-write mount 上で実行できる。&lt;/li&gt;
&lt;li&gt;forensic、failure analysis、非常に保守的な read-only check では、先に mount state を確認する。&lt;/li&gt;
&lt;li&gt;read-only scrub を絶対に zero-write だと解釈しない。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;中断と再開&#34;&gt;中断と再開
&lt;/h2&gt;&lt;p&gt;新しい kernel では、scrub は suspend、hibernate、filesystem freezing、cgroup freezing、pending signals などで中断されることがある。中断後、実行中の scrub は cancel されるが、&lt;code&gt;btrfs scrub resume&lt;/code&gt; で保存位置から再開できる。&lt;/p&gt;
&lt;p&gt;scrub status は次の場所に記録される。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/lib/btrfs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;file name は通常次のようになる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scrub.status.UUID
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scrub.progress.UUID
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;status file は定期的に更新される。resume した scrub は、完全に最初からではなく、最後に保存された位置から続行する。&lt;/p&gt;
&lt;h2 id=&#34;どれくらいの頻度で実行するか&#34;&gt;どれくらいの頻度で実行するか
&lt;/h2&gt;&lt;p&gt;公式の推奨は月 1 回である。実際には data の重要性と disk 状態に合わせて調整する。&lt;/p&gt;
&lt;p&gt;よくある schedule：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Home NAS：月 1 回。&lt;/li&gt;
&lt;li&gt;Backup disk：長時間接続した後、または月 1 回。&lt;/li&gt;
&lt;li&gt;重要な multi-device array：月 1 回、必要ならより頻繁に。&lt;/li&gt;
&lt;li&gt;New disk migration や disk 不良の疑い：migration 後すぐに実行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;scrub は idle filesystem でも device bandwidth の約 80% を使う可能性があるため、peak workload 中に実行しないほうがよい。HDD array では scrub 中に latency がかなり上がることがある。SSD でも read amplification と background pressure は増える。&lt;/p&gt;
&lt;h2 id=&#34;scrub-の-bandwidth-を制限する&#34;&gt;scrub の bandwidth を制限する
&lt;/h2&gt;&lt;p&gt;以前は &lt;code&gt;ionice&lt;/code&gt; で foreground I/O への影響を下げる方法がよく使われた。しかし公式ドキュメントは、すべての I/O scheduler で同じように support されるわけではないと注意している。CFQ はすでに一般的ではない。BFQ は関連 priority behavior を support するが、使う前に理解しておく必要がある。&lt;code&gt;mq-deadline&lt;/code&gt; のような一般的 scheduler では、cgroup2 I/O controller や Btrfs 専用の limit のほうが適している。&lt;/p&gt;
&lt;p&gt;systemd で read bandwidth を制限する例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemd-run -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;IOReadBandwidthMax=/dev/sdx 10M&amp;#34;&lt;/span&gt; btrfs scrub start -B /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux 5.14 以降では、Btrfs 専用の sysfs interface で device ごとの scrub limit を設定できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; 100m &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/fs/btrfs/FSID/devinfo/DEVID/scrub_speed_max
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;現在の limit を表示する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub limit /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;この設定は永続化されず、filesystem を unmount すると失われる。実際の system に合わせて &lt;code&gt;FSID&lt;/code&gt; と &lt;code&gt;DEVID&lt;/code&gt; を置き換える必要がある。まず次を確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs filesystem show /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls /sys/fs/btrfs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;実用的なメンテナンス手順&#34;&gt;実用的なメンテナンス手順
&lt;/h2&gt;&lt;p&gt;堅実な Btrfs メンテナンス手順は次のようにできる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub start -B /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub status /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs device stats /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dmesg -T &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -Ei &lt;span class=&#34;s2&#34;&gt;&amp;#34;btrfs|checksum|i/o error|read error&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;scrub が corrected errors を報告した場合、Btrfs は good replica から data を修復したという意味だが、無視してよいわけではない。disk SMART、cable、power、controller、Btrfs device stats を続けて確認するべきだ。&lt;/p&gt;
&lt;p&gt;scrub が uncorrectable errors を報告した場合、Btrfs は good copy を見つけられなかった。まだ読める data をできるだけ早く backup し、affected file または device を特定し、必要に応じて disk replacement や backup からの restore を行う。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Btrfs scrub の役割は明確だ。online data verification と replica repair の tool であり、fsck ではなく、backup でもない。&lt;/p&gt;
&lt;p&gt;checksum と redundant replica がある Btrfs filesystem で、silent corruption を定期的に見つけ、good copy から復元する用途に最も向いている。checksum のない NOCOW file data は保護できず、good replica がない場合に壊れた内容を復元することもできない。&lt;/p&gt;
&lt;p&gt;重要な data を Btrfs に置くなら、月 1 回 scrub を実行し、SMART、device stats、backup、alerting と組み合わせるべきだ。信頼できる data safety は、checksum、redundancy、monitoring、backup が一緒に働くことで実現する。単一の command に依存するものではない。&lt;/p&gt;
&lt;p&gt;参考リンク：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://btrfs.readthedocs.io/en/latest/Scrub.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Btrfs 公式ドキュメント：Scrub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>F2FS が HC620 SMR HDD を固まらせる？Linux SMR ディスクのトラブルシュート</title>
        <link>https://knightli.com/ja/2026/05/08/hc620-smr-f2fs-io-wait-freeze/</link>
        <pubDate>Fri, 08 May 2026 22:34:39 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/08/hc620-smr-f2fs-io-wait-freeze/</guid>
        <description>&lt;p&gt;HC620 のようなヘリウム封入 SMR HDD を F2FS と組み合わせたとき、システムが固まる、アプリが応答しない、&lt;code&gt;iowait&lt;/code&gt; が長時間高い、といった症状が出る場合、原因は一つの設定ミスではないことが多い。デバイス特性とファイルシステムの方針が衝突している。&lt;/p&gt;
&lt;p&gt;Western Digital Ultrastar DC HC620 は Host-managed SMR である。順次書き込み、zoned を意識したワークロード、底層制約を理解したソフトウェアスタックに向いている。一方 F2FS はフラッシュストレージ向けに設計されたログ構造ファイルシステムだ。多くのランダム書き込みを順次書き込みに寄せられるが、空き容量が少ない、GC が頻繁、metadata 更新が多いと、機械式 SMR HDD を長い内部整理周期へ引きずり込むことがある。&lt;/p&gt;
&lt;h2 id=&#34;まずこの問題か確認する&#34;&gt;まずこの問題か確認する
&lt;/h2&gt;&lt;p&gt;最初に次を確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iostat -x &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iotop -oPa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dmesg -T &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -Ei &lt;span class=&#34;s2&#34;&gt;&amp;#34;f2fs|blk|zoned|reset|timeout|I/O error&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ディスクの &lt;code&gt;%util&lt;/code&gt; が長時間 100% 近く、&lt;code&gt;await&lt;/code&gt; が高く、多数のプロセスが &lt;code&gt;D&lt;/code&gt; 状態に止まるなら、ボトルネックはブロックデバイス I/O と見てよい。&lt;/p&gt;
&lt;p&gt;次に、HDD が zoned device として見えているか確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsblk -o NAME,MODEL,SIZE,ROTA,ZONED,SCHED,MOUNTPOINTS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /sys/block/sdX/queue/zoned
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Host-managed SMR であれば、通常のファイルシステムや通常のランダム書き込み負荷では性能が大きく落ちる可能性がある。一般的な drive-managed SMR のように、複雑さを HDD firmware が完全に隠してくれるわけではなく、ホスト側ソフトウェアが書き込み規則を理解する必要がある。&lt;/p&gt;
&lt;h2 id=&#34;f2fs-が停止を増幅しやすい理由&#34;&gt;F2FS が停止を増幅しやすい理由
&lt;/h2&gt;&lt;p&gt;SMR の問題は、任意の場所を自由に上書きできない点にある。容量を増やすために隣接トラックを重ねるため、ランダム書き込みや頻繁な上書き、キャッシュ枯渇が起きると、追加のデータ移動と整理が必要になる。&lt;/p&gt;
&lt;p&gt;F2FS はもともと NAND flash 向けだ。ログ構造書き込みを使い、segment cleaning と garbage collection で空間を回収する。この設計は SSD では自然だが、機械式 HDD、特に SMR HDD では、GC による読み書きの移動が大きな tail latency になる。&lt;/p&gt;
&lt;p&gt;F2FS の background GC、foreground write、checkpoint、metadata 更新、HDD 自身の SMR cleanup が重なると、I/O キューが長時間埋まり続ける。ユーザーから見ると、ファイルコピー、ディレクトリ削除、ダウンロード、展開、データベース書き込みでシステム全体が固まったように見える。&lt;/p&gt;
&lt;h2 id=&#34;まず保守的な-mount-option-から調整する&#34;&gt;まず保守的な mount option から調整する
&lt;/h2&gt;&lt;p&gt;すぐにファイルシステムを移行できない場合は、&lt;code&gt;/etc/fstab&lt;/code&gt; の mount option から調整する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UUID=xxxx  /data  f2fs  defaults,nodiscard,active_logs=2,gc_merge,flush_merge,lazytime  0  0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;各 option の意味は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nodiscard&lt;/code&gt;：リアルタイム discard を無効にする。機械式 HDD は SSD のように頻繁な TRIM/discard を必要としないことが多い。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;active_logs=2&lt;/code&gt;：F2FS は 2、4、6 個の active logs をサポートし、既定は通常 6。2 に下げると、同時ログによる seek 圧力を減らせる。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gc_merge&lt;/code&gt;：background GC thread に一部の foreground GC request を処理させ、プロセスが遅い GC を直接踏んだときの停止を軽減する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flush_merge&lt;/code&gt;：cache flush request をまとめる。下位デバイスの flush が遅い場合に有効なことがある。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lazytime&lt;/code&gt;：一部のアクセス時刻更新による metadata 書き込みを減らす。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;checkpoint=disable&lt;/code&gt; を通常の性能改善策として使うのは勧めない。checkpoint の負荷は減る可能性があるが、異常終了や停電時のリスクが高くなる。kernel documentation でも、checkpoint を無効にしている間も空き領域を確保するために GC が必要だと説明されている。代償を理解していないなら、長期運用の性能スイッチとして使うべきではない。&lt;/p&gt;
&lt;h2 id=&#34;io-scheduler-を調整する&#34;&gt;I/O scheduler を調整する
&lt;/h2&gt;&lt;p&gt;機械式 HDD と SMR HDD では、request merge と遅延制御が重要になりやすい。まず現在の scheduler を確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /sys/block/sdX/queue/scheduler
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;mq-deadline&lt;/code&gt; への切り替えを試せる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; mq-deadline &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/block/sdX/queue/scheduler
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;デスクトップ用途なら &lt;code&gt;bfq&lt;/code&gt; も試す価値がある。順次スループットだけで判断せず、停止が減るか、&lt;code&gt;await&lt;/code&gt; が下がるか、操作感が安定するかを見る。&lt;/p&gt;
&lt;h2 id=&#34;f2fs-の-background-gc-を制限する&#34;&gt;F2FS の background GC を制限する
&lt;/h2&gt;&lt;p&gt;F2FS の sysfs path は実際のデバイス名に依存する。まず確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls /sys/fs/f2fs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;対応する mount device に対して GC interval を調整する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;60000&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/fs/f2fs/sdX/gc_min_sleep_time
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;120000&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/fs/f2fs/sdX/gc_max_sleep_time
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ここでの &lt;code&gt;sdX&lt;/code&gt; は例であり、実際には &lt;code&gt;sda1&lt;/code&gt;、&lt;code&gt;dm-0&lt;/code&gt; などになることがある。GC sleep time を増やすと background GC が I/O を奪う頻度は下がるが、空間回収は遅くなる。ディスクが満杯に近いほど foreground GC が再び発生しやすいため、十分な空き容量を残す必要がある。&lt;/p&gt;
&lt;h2 id=&#34;長期的には別の選択がよい&#34;&gt;長期的には別の選択がよい
&lt;/h2&gt;&lt;p&gt;重要データを保存しているなら、最も安定した方針はバックアップ後にファイルシステムを変えるか、より適した HDD に変えることだ。&lt;/p&gt;
&lt;p&gt;大容量の機械式 HDD では、次を優先して検討する。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XFS：大きなファイル、バックアップ、メディアライブラリ、アーカイブ、順次書き込み負荷に向く。&lt;/li&gt;
&lt;li&gt;EXT4：互換性が高く、挙動が安定し、トラブルシュート資料も多い。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Host-managed SMR の場合は、kernel、controller、filesystem、application stack が zoned block device の使い方を本当にサポートしているかも確認する。そうでなければ、普通のランダム書き込み HDD として扱ったときに、予測しにくい長時間停止が起きやすい。&lt;/p&gt;
&lt;h2 id=&#34;実用的な勧め&#34;&gt;実用的な勧め
&lt;/h2&gt;&lt;p&gt;この種の HDD は、cold data、アーカイブ、バックアップ、メディアファイル、順次書き込みに向いている。download cache、container image、VM disk、database、頻繁な展開、小ファイルのランダム書き込みには向かない。&lt;/p&gt;
&lt;p&gt;どうしても F2FS を使い続けるなら、少なくとも次を行う。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;リアルタイム discard を無効にする。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;active_logs=2&lt;/code&gt; で同時ログを減らす。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gc_merge&lt;/code&gt; と &lt;code&gt;flush_merge&lt;/code&gt; を有効にする。&lt;/li&gt;
&lt;li&gt;十分な空き容量を残し、満杯に近づけない。&lt;/li&gt;
&lt;li&gt;download directory、database、VM image をこのディスクに置かない。&lt;/li&gt;
&lt;li&gt;平均速度だけでなく &lt;code&gt;iostat -x 1&lt;/code&gt; を定期的に見る。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まとめると、HC620 + F2FS の停止は、SMR の書き込み制約、F2FS GC、機械式 HDD の tail latency が重なった結果である。短期対策は mount option、scheduler、background GC の調整。長期対策は XFS/EXT4 への移行、または SMR HDD を本来向いている順次書き込みアーカイブ用途に戻すことだ。&lt;/p&gt;
&lt;p&gt;参考リンク：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.kernel.org/filesystems/f2fs.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux Kernel Documentation：F2FS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-dc-hc600-series/data-sheet-ultrastar-dc-hc620.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Western Digital Ultrastar DC HC620 Data Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Canonical の Ubuntu AI ロードマップ：ローカル推論を優先し、強制統合はしない</title>
        <link>https://knightli.com/ja/2026/05/08/ubuntu-ai-roadmap-local-inference-opt-in/</link>
        <pubDate>Fri, 08 May 2026 22:23:46 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/08/ubuntu-ai-roadmap-local-inference-opt-in/</guid>
        <description>&lt;p&gt;Canonical が最近示した Ubuntu の AI ロードマップで重要なのは、「Ubuntu が AI を無理にシステムへ押し込む」という話ではない。むしろ、AI 機能を段階的に提供し、既定では無効にし、ユーザーが明示的に選んだときだけ有効化し、推論はできるだけローカルで行うという慎重な方針だ。&lt;/p&gt;
&lt;p&gt;これは、Windows や macOS のシステムレベル AI をめぐる議論とは対照的だ。Ubuntu が目指しているのは、避けられない全体 AI レイヤーでも、OS 全体を一括で止める「AI 総スイッチ」でもない。AI 機能を比較的独立したツールとして分け、インストールするか、使うか、どのモデルにつなぐか、データを外へ出すかをユーザーが決められるようにする方向である。&lt;/p&gt;
&lt;h2 id=&#34;まず時期を確認するubuntu-2604-lts-ではない&#34;&gt;まず時期を確認する：Ubuntu 26.04 LTS ではない
&lt;/h2&gt;&lt;p&gt;今回のロードマップが主に向いているのは Ubuntu 26.10 “Questing Quokka” で、2026 年 10 月 9 日にリリース予定とされている。Canonical の計画は、一部の AI ツールを実験的な preview として導入することであり、Ubuntu 26.04 LTS に既定機能として入れることではない。&lt;/p&gt;
&lt;p&gt;ここは重要だ。LTS は長期安定、企業導入、セキュリティ保守を担うリリースであり、探索段階のデスクトップ AI 機能を既定体験として入れる可能性は高くない。まず 26.10 のような通常リリースで試し、開発者や早期ユーザーの反応を見て、どの機能を後続の長期サポート版に入れるか判断するのが自然だ。&lt;/p&gt;
&lt;h2 id=&#34;ローカル推論を優先しクラウドは既定にしない&#34;&gt;ローカル推論を優先し、クラウドは既定にしない
&lt;/h2&gt;&lt;p&gt;Canonical が強調している原則の一つは local inference first、つまり既定ではユーザーのマシン上で推論することだ。クラウドプロバイダー、自前サーバー、企業向けモデルサービスをユーザーが明示的に設定した場合だけ、リクエストが外へ出る。&lt;/p&gt;
&lt;p&gt;理由は現実的だ。システムレベルの AI は、コマンド出力、ログ、ファイルパス、エラー、システム設定などの機密性が高い情報に触れやすい。たとえ「エラーを説明する」ためであっても、こうした情報を自動でクラウドへ送るのは、プライバシーとコンプライアンス上のリスクになる。&lt;/p&gt;
&lt;p&gt;したがって Ubuntu の AI 路線は、クラウド AI の入口を OS に作るというより、差し替え可能な推論レイヤーに近い。ユーザーはローカルモデル、社内推論サービス、必要に応じて Canonical 管理のサービスを選べる。重要なのは、特定のモデルベンダーに固定しないことだ。&lt;/p&gt;
&lt;h2 id=&#34;ai-cliまずは端末支援から&#34;&gt;AI CLI：まずは端末支援から
&lt;/h2&gt;&lt;p&gt;最初に現実的に入ってきそうな機能の一つが、端末ユーザー向けの AI Command Line Helper、いわゆる &lt;code&gt;ai-cli&lt;/code&gt; だ。&lt;/p&gt;
&lt;p&gt;これは shell を置き換えるものでも、危険なコマンドを自動実行するものでもない。目的は、コマンド、ログ、systemd unit、エラー出力、システム状態を理解する手助けである。複雑なサービス起動失敗ログの原因を説明したり、コマンドオプションの意味をわかりやすく示したりする用途が想定される。&lt;/p&gt;
&lt;p&gt;この入口は Ubuntu のユーザー層に合っている。Ubuntu のデスクトップユーザーやサーバーユーザーには、もともと端末で作業する人が多い。派手なチャット画面から始めるより、エラー調査、コマンド解説、運用支援といった高頻度の場面に AI を置くほうが実用的だ。&lt;/p&gt;
&lt;p&gt;ただし、安全境界は明確でなければならない。ログには token、社内アドレス、ユーザー名、パス、鍵の断片、業務情報が含まれることがある。既定がローカル推論でも、ツールは秘匿情報の削除を促すべきだ。ユーザーがクラウドバックエンドを選ぶなら、何が送信されるかを明示する必要がある。&lt;/p&gt;
&lt;h2 id=&#34;settings-agent自然言語でシステム設定を扱う&#34;&gt;Settings Agent：自然言語でシステム設定を扱う
&lt;/h2&gt;&lt;p&gt;もう一つの方向が Settings Agent で、自然言語でシステム設定を問い合わせたり変更したりする機能である。&lt;/p&gt;
&lt;p&gt;一見簡単そうだが、実装は難しい。成熟した Settings Agent は、画面を読み取り、ボタンを推測し、クリックを模倣するような方法で設定を操作すべきではない。読み取れる設定、変更できる設定、変更前に確認が必要な操作、失敗時のロールバックなどを、制御された内部 API で扱う必要がある。&lt;/p&gt;
&lt;p&gt;そのため、これは 26.10 で完成して提供される機能というより、その後も継続して進む方向と見るべきだ。うまく作れば、一般ユーザーがデスクトップ Linux を設定するハードルを大きく下げられる。攻めすぎると、新しいセキュリティリスクにもなる。&lt;/p&gt;
&lt;h2 id=&#34;なぜai-総スイッチが最優先ではないのか&#34;&gt;なぜ「AI 総スイッチ」が最優先ではないのか
&lt;/h2&gt;&lt;p&gt;OS ベンダーが AI を入れると、「どこにでも AI があり、完全に止めにくい」体験になるのではないかと不安に思うユーザーは多い。そこで、Ubuntu に全体の AI kill switch が必要なのでは、という疑問が出てくる。&lt;/p&gt;
&lt;p&gt;Canonical の考え方は、AI 機能がそもそも opt-in で、層ごとに分かれ、個別にインストールと設定ができるなら、全体スイッチは最優先ではないというものだ。つまり、「既定で有効、深く統合、あとからユーザーが無効化する」という構造を設計段階で避けようとしている。&lt;/p&gt;
&lt;p&gt;それで十分かどうかは実装次第だ。AI ツールが既定で有効にならず、既定でネットワークに接続せず、既定でデータを収集せず、各機能に明確な設定入口があるなら、ユーザーは AI を止めるために隠れた項目を探し回る必要はない。&lt;/p&gt;
&lt;h2 id=&#34;開発者と企業ユーザーへの意味&#34;&gt;開発者と企業ユーザーへの意味
&lt;/h2&gt;&lt;p&gt;開発者にとって、AI CLI のようなツールの実用的な価値は、ドキュメント調査、ログ読解、システム問題の切り分け時間を減らすことだ。これはエンジニアの判断を置き換えるものではなく、「この出力をまず説明する」作業を自動化するものに近い。&lt;/p&gt;
&lt;p&gt;企業ユーザーにとっては、ローカル推論と差し替え可能なバックエンドのほうが重要だ。多くの企業は、ソースコード、ログ、顧客データ、インフラ情報を公開モデルサービスへ送れない。Ubuntu がシステムレベル AI をローカルモデル、私有推論サービス、企業の権限体系と結び付けられれば、コンプライアンス環境でも制御可能な支援を提供できる。&lt;/p&gt;
&lt;p&gt;これは Linux デスクトップとワークステーションにとっても機会だ。Windows や macOS は AI をベンダーエコシステムの一部にしやすい。一方 Ubuntu の強みは、オープンで、監査可能で、置き換え可能で、自前運用できることにある。Canonical がこの原則を保てるなら、AI はプロ向け Linux 体験を補強する可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;過度に読み取らない&#34;&gt;過度に読み取らない
&lt;/h2&gt;&lt;p&gt;現時点で、このロードマップを「Ubuntu が特定の小型モデルをプリインストールする」「Ubuntu 26.04 に AI 監査モードが入る」「固定の &lt;code&gt;ubuntu-ai&lt;/code&gt; コマンドが用意される」と解釈するのは早い。公開情報でより確かなのは方向性であり、完成した製品形態ではない。&lt;/p&gt;
&lt;p&gt;より安全な理解は、Canonical が Ubuntu にシステムレベル AI ツールの枠組みを入れようとしており、まずコマンドライン支援、設定支援、ローカル推論、バックエンド選択から始める、というものだ。既定の姿勢は、システムが選ぶのではなくユーザーが選ぶことである。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Ubuntu の AI ロードマップで本当に注目すべきなのは、Ubuntu も「AI の波に乗る」ということではない。オープンソース OS における、より抑制された AI 統合の形を定義しようとしている点だ。知能はインフラになり得るが、プライバシー、制御性、ユーザーの選択権が先に来るべきだ。&lt;/p&gt;
&lt;p&gt;26.10 の実験的機能がこの原則を守れるなら、Ubuntu は一般消費者向け OS とは異なる道を取れるかもしれない。避けられないシステム広告枠としての AI ではなく、選択可能で、置き換え可能で、監査可能な生産性ツールとしての AI である。&lt;/p&gt;
&lt;p&gt;参考リンク：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.tomshardware.com/software/operating-systems/ubuntus-ai-roadmap-revealed-universal-ai-kill-switch-and-forced-ai-integration-are-not-part-of-the-plan-cloud-tracking-local-inference-and-agentic-system-tools-take-center-stage&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tom&amp;rsquo;s Hardware：Ubuntu&amp;rsquo;s AI roadmap revealed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://discourse.ubuntu.com/t/the-future-of-ai-in-ubuntu/81130&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu Discourse：The future of AI in Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>2026年の Linux デスクトップディストリビューション選び：Ubuntu、Deepin/UOS、Linux Mint、Fedora 比較</title>
        <link>https://knightli.com/ja/2026/05/07/linux-desktop-distro-comparison-2026/</link>
        <pubDate>Thu, 07 May 2026 21:17:11 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/07/linux-desktop-distro-comparison-2026/</guid>
        <description>&lt;p&gt;2026年に Linux デスクトップディストリビューションを選ぶとき、重要なのはどれが最も「純粋」か、どれが最も「先進的」かではありません。毎日気持ちよく使い続けられるかです。&lt;/p&gt;
&lt;p&gt;デスクトップはサーバーとは違います。サーバーではライフサイクル、パッケージ安定性、運用規約が重要です。デスクトップではさらに、インターフェース、ドライバ、アプリストア、入力方式、オフィスソフト、GPU、Bluetooth、音声、タッチパッド、外部ディスプレイ、日常的な細かい不具合も効いてきます。&lt;/p&gt;
&lt;p&gt;あまり手間をかけたくないなら、まず Ubuntu、Linux Mint、Deepin/UOS を見ます。開発者で、新しいソフトウェアスタックと速い技術サイクルを受け入れられるなら、Fedora も注目に値します。&lt;/p&gt;
&lt;h2 id=&#34;早見表&#34;&gt;早見表
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;ディストリビューション&lt;/th&gt;
          &lt;th&gt;最適な用途&lt;/th&gt;
          &lt;th&gt;主な利点&lt;/th&gt;
          &lt;th&gt;注意点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu 26.04 LTS&lt;/td&gt;
          &lt;td&gt;初心者、開発者、主力デスクトップ&lt;/td&gt;
          &lt;td&gt;ドキュメントが最も多く、エコシステムが広く、ハードウェアとソフトウェア対応が強い&lt;/td&gt;
          &lt;td&gt;標準 GNOME には慣れが必要。Snap 方針を好まない人もいる&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Deepin / UOS&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;Linux Mint&lt;/td&gt;
          &lt;td&gt;Windows からの移行、安定優先ユーザー&lt;/td&gt;
          &lt;td&gt;親しみやすい UI、非常に使いやすい、Cinnamon が安定&lt;/td&gt;
          &lt;td&gt;新技術の導入は遅め。標準スタックは攻めていない&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Fedora&lt;/td&gt;
          &lt;td&gt;開発者、Linux 新技術を試したい人&lt;/td&gt;
          &lt;td&gt;新しいカーネル、新しい GNOME、新技術の導入が速い&lt;/td&gt;
          &lt;td&gt;更新頻度が高く、安定保守派には LTS より落ち着かない&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一言で言えば次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;初心者と主力デスクトップ&lt;/strong&gt;：Ubuntu 26.04 LTS。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中国語・国産化体験&lt;/strong&gt;：Deepin / UOS。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows からの滑らかな移行&lt;/strong&gt;：Linux Mint。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;開発者と新技術の先取り&lt;/strong&gt;：Fedora。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ubuntu-2604-lts万能型デスクトップ&#34;&gt;Ubuntu 26.04 LTS：万能型デスクトップ
&lt;/h2&gt;&lt;p&gt;Ubuntu 26.04 LTS &lt;code&gt;Resolute Raccoon&lt;/code&gt; は 2026年4月にリリースされました。LTS 版として、長期的な主力デスクトップに向いています。&lt;/p&gt;
&lt;p&gt;Ubuntu の利点は非常に分かりやすいです。資料が最も多く、チュートリアルも最も多く、問題が起きたときに答えを検索しやすいです。VS Code、Docker、NVIDIA ドライバ、Steam、Chrome、Slack、JetBrains、CUDA、Python、Node.js などを入れる場合、Ubuntu はベンダーとコミュニティが優先して対応する対象であることが多いです。&lt;/p&gt;
&lt;p&gt;Ubuntu 26.04 LTS に向く人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;初めて本格的に Linux デスクトップを使う人。&lt;/li&gt;
&lt;li&gt;長く使える主力システムを探している人。&lt;/li&gt;
&lt;li&gt;開発に安定した Linux 環境が必要な人。&lt;/li&gt;
&lt;li&gt;多くのチュートリアル、ドライバ、商用ソフトウェア対応が必要な人。&lt;/li&gt;
&lt;li&gt;デスクトップ、サーバー、WSL エコシステムをつなげたい人。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;利点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LTS ライフサイクルが長い。&lt;/li&gt;
&lt;li&gt;公式イメージとドキュメントが成熟している。&lt;/li&gt;
&lt;li&gt;GNOME デスクトップが現代的で、タッチパッドと複数ディスプレイ体験が比較的良い。&lt;/li&gt;
&lt;li&gt;ドライバ、クラウド、コンテナ、開発ツールのエコシステムが広い。&lt;/li&gt;
&lt;li&gt;問題発生時の検索コストが最も低い。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意点として、Ubuntu は標準で GNOME を使います。Windows のデスクトップ操作とは違うため、初心者は Activities Overview、Dock、ワークスペース、アプリランチャーに慣れる必要があります。また Ubuntu は Snap を長く推進しており、起動速度、パッケージ管理方式、エコシステム方針を好まないユーザーもいます。&lt;/p&gt;
&lt;p&gt;私の判断では、どのデスクトップディストリビューションを選ぶべきか分からないなら、Ubuntu 26.04 LTS は今でも最も安全なデフォルト回答です。すべての方向で最先端ではありませんが、総合点が最も高いです。&lt;/p&gt;
&lt;h2 id=&#34;deepin--uos中国語デスクトップ体験と国産化互換&#34;&gt;Deepin / UOS：中国語デスクトップ体験と国産化互換
&lt;/h2&gt;&lt;p&gt;Deepin と UOS の強みは、中国語デスクトップユーザーをよく理解している点です。&lt;/p&gt;
&lt;p&gt;Deepin 25 は 2025年にリリースされ、2026年も deepin 25.1 などで更新が続いています。公式説明では、deepin 25 の重点として DDE デスクトップ環境の改善、UOS AI、Solid immutable system、Linyaps アプリ互換方式、Distrobox subsystem、Treeland window compositor preview などが挙げられています。&lt;/p&gt;
&lt;p&gt;これらは Deepin/UOS が単なる「きれいな Linux スキン」を作っているのではなく、中国語デスクトップの長年の課題を解こうとしていることを示します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;アプリインストールと依存関係の衝突。&lt;/li&gt;
&lt;li&gt;国産ソフトウェア互換性。&lt;/li&gt;
&lt;li&gt;デスクトップの美しさと使いやすさ。&lt;/li&gt;
&lt;li&gt;システム更新失敗時のロールバック。&lt;/li&gt;
&lt;li&gt;中国語入力、オフィス、政企ソフトウェアエコシステム。&lt;/li&gt;
&lt;li&gt;Windows アプリ互換と移行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Deepin / UOS に向く人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;中国語 UI、入力方式、オフィス、本地化体験を重視する人。&lt;/li&gt;
&lt;li&gt;開封後すぐ使え、見た目の良い Linux デスクトップが欲しい人。&lt;/li&gt;
&lt;li&gt;国産化されたソフトウェア・ハードウェア環境で使う必要がある人。&lt;/li&gt;
&lt;li&gt;政企オフィス、国産ソフト、国産 CPU、互換認証が必要な人。&lt;/li&gt;
&lt;li&gt;GNOME/KDE を一から設定したくない人。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Deepin の利点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DDE インターフェースが統一され、美しい。&lt;/li&gt;
&lt;li&gt;中国語ユーザー向けの細部がよい。&lt;/li&gt;
&lt;li&gt;アプリストアとシステム設定が一般ユーザーの感覚に近い。&lt;/li&gt;
&lt;li&gt;Linyaps、Distrobox などが Linux アプリ互換問題の緩和に役立つ。&lt;/li&gt;
&lt;li&gt;UOS 商用版は国産化シナリオで現実的価値が高い。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意点として、Deepin コミュニティ版と UOS 商用版は完全に同じ位置付けではありません。Deepin は個人体験とコミュニティユーザー向けです。UOS は政企、国産化、商用サービス、認証環境寄りです。本番のオフィス環境では、インターフェースだけでなく、ハードウェア、ソフトウェア、組織要件を見る必要があります。&lt;/p&gt;
&lt;p&gt;私の判断では、中国語ユーザーで、特に見た目、入力方式、国産ソフト、オフィス体験を重視するなら Deepin/UOS は魅力的です。ただし、標準的な上流 Linux エコシステムに強く依存する重い開発者なら、Ubuntu や Fedora の方が自然に感じるかもしれません。&lt;/p&gt;
&lt;h2 id=&#34;linux-mint最も-windows-に近く最も安心&#34;&gt;Linux Mint：最も Windows に近く、最も安心
&lt;/h2&gt;&lt;p&gt;Linux Mint の位置付けは一貫しています。普通のユーザーが Linux を簡単に使えるようにすることです。&lt;/p&gt;
&lt;p&gt;2026年時点で、Linux Mint の主系列は 22.x 系を中心に進んでおり、Ubuntu 24.04 LTS をベースにしています。Linux Mint 22.3 &lt;code&gt;Zena&lt;/code&gt; は 2026年初めにリリースされました。これは最新技術の展示台ではなく、安定しており、慣れやすく、学習コストの低いデスクトップシステムです。&lt;/p&gt;
&lt;p&gt;Linux Mint は Windows から移行するユーザーに特に向いています。特に Cinnamon デスクトップです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左下メニュー。&lt;/li&gt;
&lt;li&gt;タスクバー。&lt;/li&gt;
&lt;li&gt;システムトレイ。&lt;/li&gt;
&lt;li&gt;ウィンドウの最小化/最大化の動作。&lt;/li&gt;
&lt;li&gt;設定パネル。&lt;/li&gt;
&lt;li&gt;ファイルマネージャ。&lt;/li&gt;
&lt;li&gt;更新マネージャ。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの細部は、伝統的な Windows デスクトップに近い感覚を作ります。GNOME ワークフローに慣れたくない人には、Linux Mint は Ubuntu より始めやすいです。&lt;/p&gt;
&lt;p&gt;Linux Mint に向く人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows から Linux へ移行する人。&lt;/li&gt;
&lt;li&gt;親、家族、非技術ユーザーに Linux を入れる人。&lt;/li&gt;
&lt;li&gt;新技術を追わず、安定したデスクトップが欲しい人。&lt;/li&gt;
&lt;li&gt;主な用途がブラウザ、オフィス、動画、ファイル管理、軽い開発の人。&lt;/li&gt;
&lt;li&gt;GNOME が好きではなく、KDE も調整したくない人。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;利点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cinnamon デスクトップが直感的。&lt;/li&gt;
&lt;li&gt;更新マネージャが分かりやすい。&lt;/li&gt;
&lt;li&gt;システムが保守的で安定している。&lt;/li&gt;
&lt;li&gt;古い PC に比較的優しい。&lt;/li&gt;
&lt;li&gt;コミュニティ資料が多く、問題が比較的少ない。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意点として、Linux Mint は新技術優先ではありません。Wayland、PipeWire、最新 GNOME/KDE、最新カーネル、最新 Mesa などは、通常最前線で導入されません。目指しているのは「今日安定して動くこと」であり、「最新の Linux デスクトップ技術を最初に使うこと」ではありません。&lt;/p&gt;
&lt;p&gt;私の判断では、Windows ノート PC を Linux にしたいが多くの概念を説明したくないなら、Linux Mint は最も安定した選択肢の一つです。Ubuntu ほど商用エコシステムが強いわけでも、Fedora ほど新しいわけでもありませんが、日常体験は非常に堅実です。&lt;/p&gt;
&lt;h2 id=&#34;fedora開発者と新技術優先&#34;&gt;Fedora：開発者と新技術優先
&lt;/h2&gt;&lt;p&gt;Fedora はデスクトップ Linux 新技術の前線の一つです。&lt;/p&gt;
&lt;p&gt;2026年5月時点で、Fedora の current mainline は Fedora Linux 44 です。Fedora Workstation は、GNOME、Wayland、PipeWire、Mesa、カーネル、systemd などの新技術が比較的早く入るディストリビューションの一つです。&lt;/p&gt;
&lt;p&gt;Fedora に向く人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Linux 開発者。&lt;/li&gt;
&lt;li&gt;GNOME ユーザー。&lt;/li&gt;
&lt;li&gt;新しいカーネル、新しい Mesa、新しいコンパイラ、新しいツールチェーンを早く使いたい人。&lt;/li&gt;
&lt;li&gt;Wayland、PipeWire、Flatpak などの現代的 Linux デスクトップスタックを体験したい人。&lt;/li&gt;
&lt;li&gt;半年ごとのアップグレードを怖がらない人。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Fedora の利点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新技術の導入が速い。&lt;/li&gt;
&lt;li&gt;標準システムが比較的クリーン。&lt;/li&gt;
&lt;li&gt;GNOME 体験が上流に近い。&lt;/li&gt;
&lt;li&gt;開発ツールチェーンが新しい。&lt;/li&gt;
&lt;li&gt;Flatpak とオープンソースデスクトップエコシステムの結び付きが強い。&lt;/li&gt;
&lt;li&gt;現代的なハードウェア対応が比較的積極的。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意点も明確です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ライフサイクルが短く、定期的なアップグレードが必要。&lt;/li&gt;
&lt;li&gt;システムをまったく保守したくない人には向かない。&lt;/li&gt;
&lt;li&gt;NVIDIA、プロプライエタリコーデック、一部商用ソフトには追加リポジトリが必要。&lt;/li&gt;
&lt;li&gt;「インストールして 5 年放置したい」なら、Fedora は LTS ディストリビューションほど向きません。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;私の判断では、Fedora は開発者、Linux 愛好者、新技術を試したい人に向いています。普通の人にとって最も手間の少ないデスクトップではありませんが、Linux デスクトップの未来がどうなるかを早く見ることができます。&lt;/p&gt;
&lt;h2 id=&#34;四つをどう選ぶか&#34;&gt;四つをどう選ぶか
&lt;/h2&gt;&lt;h3 id=&#34;初めて-linux-を入れる初心者&#34;&gt;初めて Linux を入れる初心者
&lt;/h3&gt;&lt;p&gt;Ubuntu 26.04 LTS または Linux Mint を優先します。&lt;/p&gt;
&lt;p&gt;Ubuntu の強みは資料とエコシステムです。Linux Mint の強みは Windows に近く学習コストが低いことです。GNOME に慣れる気があるなら Ubuntu。できるだけ Windows に近い方がよいなら Linux Mint です。&lt;/p&gt;
&lt;h3 id=&#34;中国語オフィスと国産化環境&#34;&gt;中国語オフィスと国産化環境
&lt;/h3&gt;&lt;p&gt;Deepin / UOS を優先します。&lt;/p&gt;
&lt;p&gt;国産オフィスソフト、国産ブラウザ、政企システム、国産 CPU、組織が求める互換環境が必要なら、UOS の実用価値が高いです。個人ユーザーが美しい中国語デスクトップを求めるなら Deepin を見ます。&lt;/p&gt;
&lt;h3 id=&#34;開発者の主力機&#34;&gt;開発者の主力機
&lt;/h3&gt;&lt;p&gt;Ubuntu 26.04 LTS と Fedora はどちらも候補です。&lt;/p&gt;
&lt;p&gt;安定性、チュートリアル、商用ソフトウェア対応を重視するなら Ubuntu。新しいカーネル、新しい GNOME、新しいツールチェーン、オープンソース技術の前線を重視するなら Fedora です。&lt;/p&gt;
&lt;h3 id=&#34;古い-pc-や家庭用-pc&#34;&gt;古い PC や家庭用 PC
&lt;/h3&gt;&lt;p&gt;Linux Mint がより合います。&lt;/p&gt;
&lt;p&gt;伝統的なインターフェース、比較的優しいリソース使用、低い保守負担があります。古い PC、家庭用ブラウジング機、軽いオフィス用途では、新技術重視の Fedora より Mint の方が安定します。&lt;/p&gt;
&lt;h3 id=&#34;aigpu開発ツールチェーン&#34;&gt;AI/GPU/開発ツールチェーン
&lt;/h3&gt;&lt;p&gt;Ubuntu を優先します。&lt;/p&gt;
&lt;p&gt;NVIDIA ドライバ、CUDA、PyTorch、TensorFlow、Docker、VS Code、JetBrains などのツールは、公式説明やチュートリアルで Ubuntu が最もよく登場します。Fedora でも使えますが、問題解決にはより多くの Linux 経験が必要になることがあります。&lt;/p&gt;
&lt;h2 id=&#34;選ぶ前に見るべき点&#34;&gt;選ぶ前に見るべき点
&lt;/h2&gt;&lt;p&gt;デスクトップ Linux はスクリーンショットだけで選ぶべきではありません。実際の体験を左右するのは次の細部です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;GPU ドライバが安定しているか。特に NVIDIA。&lt;/li&gt;
&lt;li&gt;Wi-Fi、Bluetooth、指紋、カメラが正常に動くか。&lt;/li&gt;
&lt;li&gt;外部ディスプレイ、スケーリング、複数画面が快適か。&lt;/li&gt;
&lt;li&gt;中国語入力方式が使いやすいか。&lt;/li&gt;
&lt;li&gt;よく使うソフトに公式パッケージまたは Flatpak があるか。&lt;/li&gt;
&lt;li&gt;システム更新が理解しやすいか。&lt;/li&gt;
&lt;li&gt;問題が起きたときに解決策を検索できるか。&lt;/li&gt;
&lt;li&gt;標準デスクトップワークフローを受け入れられるか。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Linux への移行に失敗する人の多くは、カーネルが弱いからではありません。入力方式、スケーリング、WeChat、オンラインバンキング、プリンタ、GPU ドライバのような日常的な細部が合わないからです。&lt;/p&gt;
&lt;h2 id=&#34;私のおすすめ&#34;&gt;私のおすすめ
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;場面&lt;/th&gt;
          &lt;th&gt;推奨&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;初心者の主力デスクトップ&lt;/td&gt;
          &lt;td&gt;Ubuntu 26.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows ユーザーの移行&lt;/td&gt;
          &lt;td&gt;Linux Mint&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;美しい中国語デスクトップ&lt;/td&gt;
          &lt;td&gt;Deepin&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;国産化オフィス/政企環境&lt;/td&gt;
          &lt;td&gt;UOS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;開発者の安定環境&lt;/td&gt;
          &lt;td&gt;Ubuntu 26.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux 新技術体験&lt;/td&gt;
          &lt;td&gt;Fedora Linux 44&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;古い PC の軽いオフィス用途&lt;/td&gt;
          &lt;td&gt;Linux Mint&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI/GPU 開発&lt;/td&gt;
          &lt;td&gt;Ubuntu 26.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;短い結論&#34;&gt;短い結論
&lt;/h2&gt;&lt;p&gt;Ubuntu 26.04 LTS は 2026年で最も無難な万能デスクトップ選択です。初心者、開発者、主力機に向きます。&lt;/p&gt;
&lt;p&gt;Deepin/UOS は中国語体験、美しいインターフェース、国産化互換に強く、本地化や政企環境を重視するユーザーに向きます。&lt;/p&gt;
&lt;p&gt;Linux Mint は非常に使いやすく安定しており、特に Windows からの滑らかな移行に向きます。&lt;/p&gt;
&lt;p&gt;Fedora は新技術と開発者体験に強く、Linux デスクトップの前線を追いたい人に向きます。&lt;/p&gt;
&lt;p&gt;デスクトップシステムの良し悪しは、最終的には毎日 PC を開いたときに使い続けたいと思えるかで決まります。紙の上で最も良く見えるディストリビューションより、長く快適に使えるディストリビューションの方が重要です。&lt;/p&gt;
&lt;h2 id=&#34;関連リンク&#34;&gt;関連リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ubuntu 26.04 LTS：&lt;a class=&#34;link&#34; href=&#34;https://releases.ubuntu.com/26.04/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://releases.ubuntu.com/26.04/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;deepin 25 Release Note：&lt;a class=&#34;link&#34; href=&#34;https://www.deepin.org/en/deepin-25-release/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.deepin.org/en/deepin-25-release/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;deepin 25.1.0 Release Note：&lt;a class=&#34;link&#34; href=&#34;https://www.deepin.org/en/deepin-25-1-release/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.deepin.org/en/deepin-25-1-release/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Linux Mint 公式サイト：&lt;a class=&#34;link&#34; href=&#34;https://linuxmint.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://linuxmint.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fedora Workstation：&lt;a class=&#34;link&#34; href=&#34;https://fedoraproject.org/workstation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://fedoraproject.org/workstation/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fedora Release Notes：&lt;a class=&#34;link&#34; href=&#34;https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>2026年の Linux サーバー向けディストリビューション選び：Debian、Rocky Linux、AlmaLinux、Ubuntu Server 比較</title>
        <link>https://knightli.com/ja/2026/05/07/linux-server-distro-comparison-2026/</link>
        <pubDate>Thu, 07 May 2026 21:03:12 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/07/linux-server-distro-comparison-2026/</guid>
        <description>&lt;p&gt;2026年に Linux サーバー向けディストリビューションを選ぶとき、重要なのは「どれが一番良いか」ではなく、「どれが自分たちの運用モデルに合うか」です。&lt;/p&gt;
&lt;p&gt;最も安定したコミュニティディストリビューションが必要なら、Debian は今でも有力な第一候補です。RHEL 互換エコシステムが必要だが RHEL を直接購入したくない場合、Rocky Linux と AlmaLinux は CentOS 後の自然な代替です。クラウドイメージ、ドキュメント、素早いデプロイ、新しめのパッケージを重視するなら、Ubuntu Server が今でも最も楽です。&lt;/p&gt;
&lt;p&gt;以下では、サーバー用途の実務目線で比較します。&lt;/p&gt;
&lt;h2 id=&#34;早見表&#34;&gt;早見表
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;ディストリビューション&lt;/th&gt;
          &lt;th&gt;最適な用途&lt;/th&gt;
          &lt;th&gt;主な利点&lt;/th&gt;
          &lt;th&gt;注意点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Debian&lt;/td&gt;
          &lt;td&gt;長期安定、自ホスト、基礎サービス&lt;/td&gt;
          &lt;td&gt;安定、簡潔、強いコミュニティ、自由ソフトウェアの伝統&lt;/td&gt;
          &lt;td&gt;標準パッケージは保守的。企業向け商用サポートは RHEL/Ubuntu ほど明確ではない&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Rocky Linux&lt;/td&gt;
          &lt;td&gt;RHEL 互換の本番環境&lt;/td&gt;
          &lt;td&gt;RHEL に近い運用習慣。CentOS からの企業移行に向く&lt;/td&gt;
          &lt;td&gt;パッケージ更新は保守的。デスクトップや新技術体験は主目的ではない&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AlmaLinux&lt;/td&gt;
          &lt;td&gt;RHEL 互換本番環境、クラウド、企業向け代替&lt;/td&gt;
          &lt;td&gt;RHEL 互換、活発なコミュニティ、明確なライフサイクル&lt;/td&gt;
          &lt;td&gt;RHEL と少し差異があるため release notes の確認が必要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu Server&lt;/td&gt;
          &lt;td&gt;クラウドサーバー、コンテナ、開発デプロイ&lt;/td&gt;
          &lt;td&gt;クラウド対応が強い、資料が多い、デプロイが速い、LTS が長い&lt;/td&gt;
          &lt;td&gt;Snap、HWE カーネル、PPA はチーム内ルールが必要&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一言で言うと次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;最も無難な汎用選択&lt;/strong&gt;：Debian。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;企業向け RHEL エコシステム代替&lt;/strong&gt;：Rocky Linux / AlmaLinux。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;クラウドと開発効率優先&lt;/strong&gt;：Ubuntu Server。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;debian岩のような安定性&#34;&gt;Debian：岩のような安定性
&lt;/h2&gt;&lt;p&gt;2026年5月時点で、Debian の current stable は Debian 13 &lt;code&gt;trixie&lt;/code&gt; です。Debian 12 &lt;code&gt;bookworm&lt;/code&gt; は oldstable に移行しており、セキュリティと LTS サポートはありますが、新規サーバー導入では Debian 13 を優先して検討するのがよいでしょう。&lt;/p&gt;
&lt;p&gt;Debian の特徴は一貫しています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;標準パッケージ選択は保守的。&lt;/li&gt;
&lt;li&gt;システム構造がきれい。&lt;/li&gt;
&lt;li&gt;商用ベンダーに強く縛られない。&lt;/li&gt;
&lt;li&gt;コミュニティガバナンスが成熟している。&lt;/li&gt;
&lt;li&gt;長期稼働する基礎サービスに向く。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;次のようなサーバーなら Debian は扱いやすいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nginx / Apache。&lt;/li&gt;
&lt;li&gt;PostgreSQL / MariaDB / Redis。&lt;/li&gt;
&lt;li&gt;Docker / Podman。&lt;/li&gt;
&lt;li&gt;WireGuard / Tailscale。&lt;/li&gt;
&lt;li&gt;ファイルサービス、バックアップサービス、監視サービス。&lt;/li&gt;
&lt;li&gt;小規模な自ホストアプリ。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Debian の強みは「最新」ではなく「手間が少ない」ことです。多くのサーバーはインストール後、数年間は通常のセキュリティ更新と小さな保守だけで動かせます。&lt;/p&gt;
&lt;p&gt;Debian に向いている場面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;システムをなるべく素朴に保ち、ディストリビューションベンダーの戦略に振り回されたくない。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apt&lt;/code&gt;、systemd、Debian のファイル構成に慣れている。&lt;/li&gt;
&lt;li&gt;ソフトウェアが最新版でなくてもよい。&lt;/li&gt;
&lt;li&gt;安定性、セキュリティ更新、予測しやすいアップグレードを重視する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Debian にあまり向かない場面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ベンダーが RHEL または Ubuntu だけを認証している。&lt;/li&gt;
&lt;li&gt;SLA 付きの企業向け商用サポートが必要。&lt;/li&gt;
&lt;li&gt;最新カーネル、最新 GPU スタック、新しいハードウェア対応に依存している。&lt;/li&gt;
&lt;li&gt;チームの運用標準が全面的に RHEL 系エコシステムで書かれている。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;私の判断では、個人サーバー、自ホスト、軽量 SaaS、小規模チームの基礎サービスでは、Debian は今でも非常に有力です。&lt;/p&gt;
&lt;h2 id=&#34;rocky-linuxcentos-後の堅実な代替&#34;&gt;Rocky Linux：CentOS 後の堅実な代替
&lt;/h2&gt;&lt;p&gt;Rocky Linux の位置付けは明確です。RHEL 互換エコシステムを必要とするユーザー向けであり、かつて CentOS Linux が企業本番環境で果たしていた役割を引き継ぎます。&lt;/p&gt;
&lt;p&gt;2026年時点で、Rocky Linux 9 と Rocky Linux 10 はどちらもサポート期間内です。Rocky Linux 9 はより保守的な本番環境に向き、Rocky Linux 10 は新規プロジェクト、新しいハードウェア、より長い将来期間に向きます。&lt;/p&gt;
&lt;p&gt;Rocky Linux に向く場面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以前 CentOS 7 / CentOS 8 を使っていた企業環境。&lt;/li&gt;
&lt;li&gt;RHEL 系のディレクトリ構造、パッケージ名、運用習慣が必要。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dnf&lt;/code&gt;、RPM、SELinux、firewalld に依存している。&lt;/li&gt;
&lt;li&gt;ソフトウェアベンダーが RHEL-compatible ディストリビューションを明示的にサポートしている。&lt;/li&gt;
&lt;li&gt;社内自動化スクリプトが Enterprise Linux 前提で書かれている。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;利点は移行の抵抗が小さいことです。多くのチームは CentOS を前提に Ansible playbook、監視ルール、監査スクリプト、セキュリティベースラインを長年積み上げています。Rocky Linux への移行は、Debian や Ubuntu への移行より心理的負担が小さいです。&lt;/p&gt;
&lt;p&gt;Rocky Linux の注意点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;パッケージバージョンは保守的です。これは Enterprise Linux の設計目標であり、欠点ではありません。&lt;/li&gt;
&lt;li&gt;非常に新しいユーザー空間コンポーネントが必要な場合、EPEL、第三者リポジトリ、またはコンテナに頼ることがあります。&lt;/li&gt;
&lt;li&gt;RHEL 互換は、すべての商用ソフトウェアベンダーが自動的に正式サポートするという意味ではありません。認証リストを確認してください。&lt;/li&gt;
&lt;li&gt;Rocky Linux 10 はハードウェア基準や第三者エコシステムに新しい要件があります。本番投入前に検証が必要です。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;私の判断では、サーバー環境がもともと CentOS / RHEL 系なら、Rocky Linux は非常に自然な代替です。特に安定した本番環境と企業内部サービスに向いています。&lt;/p&gt;
&lt;h2 id=&#34;almalinuxより能動的な-rhel-互換ルート&#34;&gt;AlmaLinux：より能動的な RHEL 互換ルート
&lt;/h2&gt;&lt;p&gt;AlmaLinux も CentOS 後の重要な代替です。位置付けは同じく、企業向け、長期サポート、RHEL 互換です。&lt;/p&gt;
&lt;p&gt;Rocky Linux との共通点は多くあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;どちらも RHEL 互換エコシステム向け。&lt;/li&gt;
&lt;li&gt;どちらもサーバー本番環境に向く。&lt;/li&gt;
&lt;li&gt;どちらも 8、9、10 の長期サポート系列を持つ。&lt;/li&gt;
&lt;li&gt;どちらも CentOS からの移行に向く。&lt;/li&gt;
&lt;li&gt;どちらも多くの Enterprise Linux エコシステムツールを使える。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;違いは、AlmaLinux が RHEL 互換を保ちながら、上流との差異をより積極的に記録・処理する点です。たとえば AlmaLinux 10 は古いハードウェア向けに &lt;code&gt;x86-64-v2&lt;/code&gt; アーキテクチャ選択肢を提供し、release notes で RHEL との差異を明確に説明しています。&lt;/p&gt;
&lt;p&gt;これは一部のユーザーに有用です。RHEL エコシステムに留まりつつ、ハードウェア対応、パッケージビルド、EPEL 互換性でより柔軟なコミュニティディストリビューションを求める場合です。&lt;/p&gt;
&lt;p&gt;AlmaLinux に向く場面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;RHEL 互換が必要だが、RHEL のリリース戦略に完全には縛られたくない。&lt;/li&gt;
&lt;li&gt;コミュニティガバナンスと透明な release notes を重視する。&lt;/li&gt;
&lt;li&gt;クラウド、コンテナイメージ、企業ワークロードで安定したベースシステムが必要。&lt;/li&gt;
&lt;li&gt;CentOS や古い Enterprise Linux から平滑に移行したい。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意すべき点は、AlmaLinux が「目を閉じれば RHEL と同じ」ではないことです。厳格なコンプライアンス、ベンダー認証、データベース認証、ハードウェア認証が必要な場面では、ソフトウェアベンダーが AlmaLinux を明示的にサポートしているか確認してください。&lt;/p&gt;
&lt;p&gt;私の判断では、Rocky Linux と AlmaLinux はどちらも CentOS 代替になります。より保守的で伝統的な CentOS 的ストーリーを好むなら Rocky、コミュニティ透明性と柔軟な互換ルートを重視するなら AlmaLinux です。&lt;/p&gt;
&lt;h2 id=&#34;ubuntu-serverクラウド対応とデプロイ効率が最も強い&#34;&gt;Ubuntu Server：クラウド対応とデプロイ効率が最も強い
&lt;/h2&gt;&lt;p&gt;Ubuntu Server の強みは現実的です。クラウドプラットフォーム、ドキュメント、コミュニティチュートリアル、イメージ、自動化ツール、開発者エコシステムが強いです。&lt;/p&gt;
&lt;p&gt;2026年の新規サーバー導入では、主力は引き続き Ubuntu 24.04 LTS です。Ubuntu LTS は通常 5 年の標準サポートを持ち、ESM による延長も可能です。クラウドサーバー、コンテナホスト、開発環境、CI/CD ノードでは、Ubuntu Server が最も早く使える選択になることが多いです。&lt;/p&gt;
&lt;p&gt;Ubuntu Server に向く場面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AWS、Azure、Google Cloud、Oracle Cloud、Alibaba Cloud、Tencent Cloud などのクラウドサーバー。&lt;/li&gt;
&lt;li&gt;Docker、Kubernetes、GitLab Runner、CI/CD。&lt;/li&gt;
&lt;li&gt;AI / GPU / CUDA 開発環境。&lt;/li&gt;
&lt;li&gt;大量のチュートリアルとコミュニティ解法が必要なチーム。&lt;/li&gt;
&lt;li&gt;開発と本番をできるだけ同じ環境にしたい場合。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu の利点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;クラウドイメージの品質が高い。&lt;/li&gt;
&lt;li&gt;公式・第三者ドキュメントが多い。&lt;/li&gt;
&lt;li&gt;新しいハードウェア対応が比較的積極的。&lt;/li&gt;
&lt;li&gt;LTS のリズムが明確。&lt;/li&gt;
&lt;li&gt;開発者ツールチェーンを更新しやすい。&lt;/li&gt;
&lt;li&gt;多くの商用ソフトウェアが Ubuntu 向け手順を優先して用意する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu の注意点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;サーバーで Snap を好まないチームもあるため、利用方針は事前に決めるべきです。&lt;/li&gt;
&lt;li&gt;PPA は便利ですが、本番環境で乱用すると保守リスクが増えます。&lt;/li&gt;
&lt;li&gt;HWE カーネル、クラウドカーネル、標準カーネルのどれを使うか明確にする必要があります。&lt;/li&gt;
&lt;li&gt;極めてミニマルな安定性を好む人には、Ubuntu の標準構成は Debian より「にぎやか」に感じられます。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;私の判断では、クラウドサーバー、コンテナ、開発デプロイ、AI ツールチェーンが中心なら、Ubuntu Server は通常最も効率的です。最も「純粋」なディストリビューションではありませんが、多くの作業で調査とつまずきを減らしてくれます。&lt;/p&gt;
&lt;h2 id=&#34;四つをどう選ぶか&#34;&gt;四つをどう選ぶか
&lt;/h2&gt;&lt;h3 id=&#34;個人-vps--自ホスト&#34;&gt;個人 VPS / 自ホスト
&lt;/h3&gt;&lt;p&gt;Debian または Ubuntu Server を優先します。&lt;/p&gt;
&lt;p&gt;安定、省心、低メンテナンスを求めるなら Debian。チュートリアルに沿って新しいプロジェクトを頻繁にデプロイする、または新しめのソフトウェアスタックが必要なら Ubuntu Server です。&lt;/p&gt;
&lt;h3 id=&#34;企業本番環境&#34;&gt;企業本番環境
&lt;/h3&gt;&lt;p&gt;Rocky Linux、AlmaLinux、または RHEL を優先します。&lt;/p&gt;
&lt;p&gt;会社が以前 CentOS を使っていたなら、Rocky / Alma への移行コストが最も低いです。商用データベース、ハードウェア認証、セキュリティコンプライアンス、ベンダーサポートが関わる場合は、認証リストを先に確認してください。&lt;/p&gt;
&lt;h3 id=&#34;クラウドネイティブとコンテナホスト&#34;&gt;クラウドネイティブとコンテナホスト
&lt;/h3&gt;&lt;p&gt;Ubuntu Server、Debian、Rocky / Alma はいずれも使えます。&lt;/p&gt;
&lt;p&gt;開発効率を重視するチームなら Ubuntu Server。極簡安定を求めるなら Debian。企業標準が RHEL 系なら Rocky / Alma です。&lt;/p&gt;
&lt;h3 id=&#34;ai--gpu-サーバー&#34;&gt;AI / GPU サーバー
&lt;/h3&gt;&lt;p&gt;まず Ubuntu Server、次に Rocky / Alma を見ます。&lt;/p&gt;
&lt;p&gt;理由は単純です。NVIDIA、CUDA、PyTorch、TensorFlow、ドライバ導入手順、コミュニティ経験は Ubuntu が最も多いことが一般的です。企業 GPU クラスターがすでに RHEL エコシステムで構築されている場合は Rocky / Alma も選べますが、ドライバ、CUDA、コンテナランタイム、監視ツールは事前検証が必要です。&lt;/p&gt;
&lt;h3 id=&#34;伝統的な業務システム&#34;&gt;伝統的な業務システム
&lt;/h3&gt;&lt;p&gt;Rocky Linux / AlmaLinux を優先します。&lt;/p&gt;
&lt;p&gt;伝統的な Java、データベース、ミドルウェア、商用ソフトウェア、監査、運用標準は RHEL 系に寄りがちです。この場合、Rocky / Alma は Debian / Ubuntu より既存体系に合わせやすいです。&lt;/p&gt;
&lt;h2 id=&#34;選ぶ前に見るべき指標&#34;&gt;選ぶ前に見るべき指標
&lt;/h2&gt;&lt;p&gt;ディストリビューション名だけで選ばないことです。サーバー選定では、次の質問で判断するのがよいでしょう。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ライフサイクル&lt;/strong&gt;：このバージョンは何年まで保守されるか。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;アップグレード経路&lt;/strong&gt;：メジャーバージョンアップは成熟しているか。平滑移行は可能か。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ソフトウェア供給元&lt;/strong&gt;：第三者リポジトリに依存するか。誰が保守しているか。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;セキュリティ更新&lt;/strong&gt;：セキュリティアドバイザリ、パッチ頻度、CVE 対応は明確か。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ハードウェア対応&lt;/strong&gt;：CPU、NIC、RAID、GPU、ストレージコントローラは検証済みか。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;チーム経験&lt;/strong&gt;：チームは &lt;code&gt;apt&lt;/code&gt; と &lt;code&gt;dnf&lt;/code&gt; のどちらに慣れているか。Debian 系か RHEL 系か。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ベンダー認証&lt;/strong&gt;：業務ソフトウェアはそのディストリビューションを明示的にサポートしているか。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自動化資産&lt;/strong&gt;：既存の Ansible、Terraform、イメージビルドスクリプトを再利用できるか。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本当のコストはインストール ISO ではありません。今後 5 年のアップグレード、監査、トラブルシュート、引き継ぎです。&lt;/p&gt;
&lt;h2 id=&#34;私のおすすめ構成&#34;&gt;私のおすすめ構成
&lt;/h2&gt;&lt;p&gt;2026年のサーバー選定でデフォルト案を出すなら次の通りです。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;場面&lt;/th&gt;
          &lt;th&gt;推奨&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;個人 VPS、自ホスト&lt;/td&gt;
          &lt;td&gt;Debian 13&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;クラウドサーバー、素早いデプロイ&lt;/td&gt;
          &lt;td&gt;Ubuntu Server 24.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CentOS 移行&lt;/td&gt;
          &lt;td&gt;Rocky Linux 9 / AlmaLinux 9&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;新規企業プロジェクト&lt;/td&gt;
          &lt;td&gt;Rocky Linux 10 / AlmaLinux 10。先にエコシステム検証&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI / GPU 開発&lt;/td&gt;
          &lt;td&gt;Ubuntu Server 24.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;強いコンプライアンスが必要な商用本番&lt;/td&gt;
          &lt;td&gt;RHEL、またはベンダーサポート確認後に Rocky / Alma&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;短い結論&#34;&gt;短い結論
&lt;/h2&gt;&lt;p&gt;Debian のキーワードは、安定、簡潔、コミュニティ、自由ソフトウェアの伝統です。長期稼働する基礎サーバーに向きます。&lt;/p&gt;
&lt;p&gt;Rocky Linux と AlmaLinux のキーワードは、RHEL 互換、企業本番、CentOS 代替です。既存の Enterprise Linux 運用体系を持つチームに向きます。&lt;/p&gt;
&lt;p&gt;Ubuntu Server のキーワードは、クラウド、ドキュメント、開発効率、エコシステムの完全性です。素早いデプロイ、コンテナ、AI/GPU、クラウドサーバーに向きます。&lt;/p&gt;
&lt;p&gt;永遠に正しいディストリビューションはありません。チーム、業務、ハードウェア、ライフサイクルに最も合うものが正解です。サーバーで最良の選択は、たいてい一番流行っているものではなく、5 年後も保守する気になれるものです。&lt;/p&gt;
&lt;h2 id=&#34;関連リンク&#34;&gt;関連リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Debian Releases：&lt;a class=&#34;link&#34; href=&#34;https://www.debian.org/releases/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.debian.org/releases/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu Releases：&lt;a class=&#34;link&#34; href=&#34;https://releases.ubuntu.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://releases.ubuntu.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rocky Linux Release and Version Guide：&lt;a class=&#34;link&#34; href=&#34;https://wiki.rockylinux.org/rocky/version/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://wiki.rockylinux.org/rocky/version/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Release Notes：&lt;a class=&#34;link&#34; href=&#34;https://wiki.almalinux.org/release-notes/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://wiki.almalinux.org/release-notes/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>fdupesで削除順を制御する方法：ディレクトリ優先度で重複ファイルを残す</title>
        <link>https://knightli.com/ja/2026/05/06/fdupes-delete-duplicates-by-directory-priority/</link>
        <pubDate>Wed, 06 May 2026 09:23:09 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/06/fdupes-delete-duplicates-by-directory-priority/</guid>
        <description>&lt;p&gt;&lt;code&gt;fdupes&lt;/code&gt; で重複ファイルを削除するとき、&lt;code&gt;a&lt;/code&gt;、&lt;code&gt;b&lt;/code&gt;、&lt;code&gt;c&lt;/code&gt; の3つのディレクトリがあり、優先的に &lt;code&gt;a&lt;/code&gt; を残し、次に &lt;code&gt;b&lt;/code&gt; を残し、&lt;code&gt;c&lt;/code&gt; の重複ファイルから削除したい場合、重要なのは複雑なルールではない。ディレクトリの入力順だ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fdupes&lt;/code&gt; は非対話の削除モードでは、各重複グループで最初に見つかったファイルを残し、後から見つかった重複項目を削除する。そのため、ディレクトリ引数は「保持優先度が高いものから低いものへ」の順に並べる。&lt;/p&gt;
&lt;p&gt;つまり、「先に c を削除し、次に b を削除し、できるだけ a を残す」には、次のように書く。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;スキャン順は &lt;code&gt;a -&amp;gt; b -&amp;gt; c&lt;/code&gt; になる。3つのディレクトリに同じファイルが存在する場合、&lt;code&gt;a&lt;/code&gt; のファイルが先に見つかって保持され、&lt;code&gt;b&lt;/code&gt; と &lt;code&gt;c&lt;/code&gt; の重複ファイルが削除される。&lt;code&gt;b&lt;/code&gt; と &lt;code&gt;c&lt;/code&gt; だけに重複がある場合は、&lt;code&gt;b&lt;/code&gt; が保持され、&lt;code&gt;c&lt;/code&gt; が削除される。&lt;/p&gt;
&lt;h2 id=&#34;パラメータの意味&#34;&gt;パラメータの意味
&lt;/h2&gt;&lt;p&gt;よく使うパラメータは次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-r&lt;/code&gt;：サブディレクトリを再帰的にスキャンする。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d&lt;/code&gt;：重複ファイルを削除する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-N&lt;/code&gt;：&lt;code&gt;-d&lt;/code&gt; と組み合わせて使い、対話確認を行わず、各重複グループの最初のファイルを残して残りを削除する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そのため、重複ファイルを自動削除する基本形式は次のようになる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN 目录A 目录B 目录C
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ディレクトリが前にあるほど保持優先度が高い。後ろにあるほど、重複ファイルが削除されやすくなる。&lt;/p&gt;
&lt;h2 id=&#34;削除前にプレビューする&#34;&gt;削除前にプレビューする
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-dN&lt;/code&gt; を直接使うとファイルが削除されるため、まず重複ファイルのグループを確認するのがよい。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -r a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;出力は重複ファイルごとにグループ化される。各グループで前に表示されるファイルが、非対話削除時に保持されやすいファイルだ。&lt;/p&gt;
&lt;p&gt;統計情報を見ることもできる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rm a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;データが重要な場合は、結果を保存して手動で確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -r a b c &amp;gt; duplicates.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;各重複グループの並び順が期待通りであることを確認してから、次を実行する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;サブディレクトリの扱い&#34;&gt;サブディレクトリの扱い
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-r&lt;/code&gt; を有効にすると、&lt;code&gt;fdupes&lt;/code&gt; は渡されたディレクトリ配下のすべてのファイルを再帰的にスキャンする。保持優先度を決めるのは、やはりコマンド内でパスが登場する順序だ。&lt;/p&gt;
&lt;p&gt;例えば次のように実行する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN dir_a dir_b dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは次の意味になる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dir_a&lt;/code&gt; の優先度が最も高い。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir_b&lt;/code&gt; がその次。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir_c&lt;/code&gt; が最も低い。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;dir_a/sub1/file.txt&lt;/code&gt; と &lt;code&gt;dir_c/sub1/file.txt&lt;/code&gt; の内容が同じなら、&lt;code&gt;dir_a&lt;/code&gt; 配下のファイルが保持される。&lt;code&gt;dir_a/x/y/file.txt&lt;/code&gt; と &lt;code&gt;dir_c/file.txt&lt;/code&gt; の内容が同じ場合も、&lt;code&gt;dir_a&lt;/code&gt; 配下のファイルが優先される。&lt;code&gt;fdupes&lt;/code&gt; が比較するのはファイル内容であり、ファイル名やディレクトリ階層が完全に一致する必要はない。&lt;/p&gt;
&lt;h2 id=&#34;サブディレクトリの優先度を細かく制御する&#34;&gt;サブディレクトリの優先度を細かく制御する
&lt;/h2&gt;&lt;p&gt;親ディレクトリだけを渡す場合、サブディレクトリ内部のスキャン順は &lt;code&gt;fdupes&lt;/code&gt; の走査ロジックに従う。多くの場合はこれで十分だ。ただし、特定のサブディレクトリにより高い優先度を与えたい場合は、そのサブディレクトリを明示的に前へ書く。&lt;/p&gt;
&lt;p&gt;例えば、まず &lt;code&gt;dir_a&lt;/code&gt; を残し、次に &lt;code&gt;dir_b/special&lt;/code&gt; を残し、その後 &lt;code&gt;dir_b&lt;/code&gt; の残りを処理し、最後に &lt;code&gt;dir_c&lt;/code&gt; を処理したい場合は次のようにする。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN dir_a dir_b/special dir_b dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これにより、&lt;code&gt;dir_b/special&lt;/code&gt; は &lt;code&gt;dir_b&lt;/code&gt; より先にスキャンされる。その後 &lt;code&gt;dir_b&lt;/code&gt; がスキャンされる時点では、&lt;code&gt;special&lt;/code&gt; 内のファイルはすでに記録されているため、&lt;code&gt;dir_b&lt;/code&gt; の他の部分より高い優先度を持つ。&lt;/p&gt;
&lt;p&gt;この書き方は次のような需要に向いている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt; が最も重要な基準ディレクトリ。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b&lt;/code&gt; の中の特定サブディレクトリが、&lt;code&gt;b&lt;/code&gt; の他の内容より重要。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;c&lt;/code&gt; は主に低優先度のバックアップディレクトリ。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;パス順はさらに拡張できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b/important b c/keep-first c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ルールは変わらない。前にあるほど優先的に保持される。&lt;/p&gt;
&lt;h2 id=&#34;ディレクトリが多い場合はリストを使う&#34;&gt;ディレクトリが多い場合はリストを使う
&lt;/h2&gt;&lt;p&gt;ディレクトリやサブディレクトリが多い場合、長いコマンドを手で書くと間違えやすい。優先度順にパスを &lt;code&gt;folders.txt&lt;/code&gt; のようなテキストファイルへ書いておくとよい。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_b/sub_important
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_c/sub_1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;その後、&lt;code&gt;xargs&lt;/code&gt; で &lt;code&gt;fdupes&lt;/code&gt; に渡す。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat folders.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs fdupes -rdN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;パスに空白が含まれる可能性がある場合は、NULL文字区切りを使うほうが安全だ。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tr &lt;span class=&#34;s1&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt; &amp;lt; folders.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs -0 fdupes -rdN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;注意すべき境界&#34;&gt;注意すべき境界
&lt;/h2&gt;&lt;p&gt;第一に、&lt;code&gt;fdupes&lt;/code&gt; が比較するのはファイル内容であり、ファイル名ではない。ファイル名が完全に違っていても、内容が同じなら重複ファイルとして扱われる。&lt;/p&gt;
&lt;p&gt;第二に、&lt;code&gt;a&lt;/code&gt; ディレクトリ内部に重複ファイルがある場合、&lt;code&gt;fdupes -rdN a b c&lt;/code&gt; によって &lt;code&gt;a&lt;/code&gt; 内部で後から見つかる重複項目も削除される可能性がある。このコマンドが表すのは「全体のスキャン順で最初に出たファイルを残す」ということであり、「a の中のファイルを絶対に削除しない」という意味ではない。&lt;/p&gt;
&lt;p&gt;第三に、デフォルトでは &lt;code&gt;fdupes&lt;/code&gt; はシンボリックリンクをたどらない。シンボリックリンク関連のファイルを処理する必要がある場合は、&lt;code&gt;-s&lt;/code&gt; が必要かどうか、またそれがデータ安全上の期待に合うかを確認する。&lt;/p&gt;
&lt;p&gt;第四に、&lt;code&gt;fdupes&lt;/code&gt; は重複ファイルだけを削除し、空ディレクトリは削除しない。削除後に &lt;code&gt;b&lt;/code&gt; や &lt;code&gt;c&lt;/code&gt; に空フォルダが残った場合は、次を実行できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find b c -type d -empty -delete
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;より安全な操作習慣&#34;&gt;より安全な操作習慣
&lt;/h2&gt;&lt;p&gt;ディレクトリ内のデータが重要な場合、いきなり &lt;code&gt;-rdN&lt;/code&gt; を実行するのは避けたい。より安全な流れは次の通り。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まず &lt;code&gt;fdupes -r a b c&lt;/code&gt; を実行して重複グループを見る。&lt;/li&gt;
&lt;li&gt;各グループで先頭にあるファイルが本当に保持したいファイルか確認する。&lt;/li&gt;
&lt;li&gt;その後 &lt;code&gt;fdupes -rdN a b c&lt;/code&gt; を実行して自動削除する。&lt;/li&gt;
&lt;li&gt;削除後、空ディレクトリの整理が必要か確認する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;a&lt;/code&gt; 内のファイルを誤って削除するのが非常に心配な場合は、低優先度ディレクトリだけを小さい範囲で先に整理するか、結果を出力して手動で絞り込むとよい。&lt;code&gt;fdupes&lt;/code&gt; のディレクトリ順は便利だが、権限分離ルールではない。スキャン対象に含まれたパス内の重複ファイルは、削除判断に参加する可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;fdupes&lt;/code&gt; で優先度に従って重複ファイルを削除する核心は、「残したいディレクトリ」を前に置き、「優先的に削除したいディレクトリ」を後ろに置くことだ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;a&lt;/code&gt; を残し、次に &lt;code&gt;b&lt;/code&gt; を残し、&lt;code&gt;c&lt;/code&gt; を優先的に削除するなら次のようにする。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;特定のサブディレクトリの優先度を高くしたいなら、親ディレクトリより前に単独で書く。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b/important b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;覚えることは一つでよい。&lt;code&gt;fdupes -dN&lt;/code&gt; は先に現れた重複ファイルを残し、後に現れた重複ファイルを削除する。ディレクトリ順こそが保持優先度だ。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Snap、Flatpak、apt は何が違うのか</title>
        <link>https://knightli.com/ja/2026/05/02/snap-flatpak-apt-differences/</link>
        <pubDate>Sat, 02 May 2026 11:22:26 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/02/snap-flatpak-apt-differences/</guid>
        <description>&lt;p&gt;Ubuntu でソフトウェアをインストールするとき、&lt;code&gt;apt&lt;/code&gt;、Snap、Flatpak という三つの名前をよく見ます。どれもアプリをインストールできますが、解決している問題は異なります。&lt;/p&gt;
&lt;p&gt;簡単にまとめると次の通りです。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;ツール&lt;/th&gt;
          &lt;th&gt;主な位置づけ&lt;/th&gt;
          &lt;th&gt;向いているもの&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;apt&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Ubuntu/Debian の従来型パッケージマネージャー&lt;/td&gt;
          &lt;td&gt;システムコンポーネント、CLI ツール、ディストリビューションが管理するソフトウェア&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Snap&lt;/td&gt;
          &lt;td&gt;Canonical が推進するアプリ包装形式&lt;/td&gt;
          &lt;td&gt;Ubuntu デスクトップアプリ、サーバーツール、自動更新したいソフトウェア&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Flatpak&lt;/td&gt;
          &lt;td&gt;デスクトップアプリ向けのクロスディストリビューション形式&lt;/td&gt;
          &lt;td&gt;GUI アプリ、サンドボックス化アプリ、Flathub エコシステム&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;aptシステムの一部&#34;&gt;apt：システムの一部
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; は Debian/Ubuntu 系の従来型パッケージマネージャーです。ディストリビューションのリポジトリから &lt;code&gt;.deb&lt;/code&gt; パッケージをインストールし、依存関係もディストリビューション側で管理されます。&lt;/p&gt;
&lt;p&gt;よくあるインストール方法です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install firefox
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; の特徴は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;システムとの統合が最も深い。&lt;/li&gt;
&lt;li&gt;依存関係はディストリビューションが一元管理する。&lt;/li&gt;
&lt;li&gt;ソフトウェアのバージョンは通常、ディストリビューションのリリース周期に従う。&lt;/li&gt;
&lt;li&gt;システムライブラリ、ドライバー、CLI ツール、サーバーコンポーネントに向いている。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;弱点も明確です。ソフトウェアのバージョンが古めになることがあります。ディストリビューションは安定性を重視するため、常に上流の最新版をすぐ出すわけではありません。&lt;/p&gt;
&lt;h2 id=&#34;snapアプリと依存関係を一つのパッケージにする&#34;&gt;Snap：アプリと依存関係を一つのパッケージにする
&lt;/h2&gt;&lt;p&gt;Snap は Canonical が推進するパッケージ形式です。アプリと多くの実行時依存関係をまとめて梱包し、システムライブラリのバージョン差への依存を減らします。&lt;/p&gt;
&lt;p&gt;インストール方法は似ています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo snap install firefox
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Snap の利点は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;同じパッケージを複数の Ubuntu バージョンで動かしやすい。&lt;/li&gt;
&lt;li&gt;アプリ更新をシステム更新から独立させられる。&lt;/li&gt;
&lt;li&gt;標準で一定の隔離と権限制御がある。&lt;/li&gt;
&lt;li&gt;速い更新が必要なデスクトップアプリや一部のサーバーツールに向いている。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;よくある不満は、起動が遅い、容量を多く使う、テーマ統合が自然でない、更新のタイミングを &lt;code&gt;apt&lt;/code&gt; ほど細かく制御しにくい、といった点です。&lt;/p&gt;
&lt;h2 id=&#34;flatpakよりデスクトップアプリ向け&#34;&gt;Flatpak：よりデスクトップアプリ向け
&lt;/h2&gt;&lt;p&gt;Flatpak もクロスディストリビューションのアプリ包装方式ですが、より Linux デスクトップアプリに寄っています。多くの Flatpak アプリは Flathub から入手できます。&lt;/p&gt;
&lt;p&gt;よくあるインストール例です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;flatpak install flathub org.mozilla.firefox
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Flatpak の特徴は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;クロスディストリビューション対応が強い。&lt;/li&gt;
&lt;li&gt;デスクトップアプリ配布に重点を置いている。&lt;/li&gt;
&lt;li&gt;runtime を使って基礎依存関係を共有する。&lt;/li&gt;
&lt;li&gt;サンドボックスと権限モデルが分かりやすい。&lt;/li&gt;
&lt;li&gt;Flathub には多くのソフトウェアがある。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Flatpak も追加の容量を使います。特に初回に runtime を入れるときは目立ちます。ただし複数アプリが同じ runtime を共有すると、無駄は少なくなります。&lt;/p&gt;
&lt;h2 id=&#34;最大の違い依存関係の扱い&#34;&gt;最大の違い：依存関係の扱い
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; は「システムに組み込む」方式に近いです。アプリはシステム内のライブラリに依存し、複数のソフトウェアが同じ依存関係を共有します。&lt;/p&gt;
&lt;p&gt;Snap と Flatpak は「アプリが自分の実行環境を持つ」方式に近いです。アプリが必要な依存関係の一部を持ち歩くため、システムバージョン差による問題を減らせます。&lt;/p&gt;
&lt;p&gt;ここには取捨選択があります。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方式&lt;/th&gt;
          &lt;th&gt;利点&lt;/th&gt;
          &lt;th&gt;欠点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;apt&lt;/code&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;Snap/Flatpak が実行環境を持つ&lt;/td&gt;
          &lt;td&gt;バージョン差に強い、複数ディストリビューションで使いやすい、更新しやすい&lt;/td&gt;
          &lt;td&gt;パッケージが大きい、起動が遅いことがある、統合感が弱いことがある&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;隔離と権限&#34;&gt;隔離と権限
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; で入れたソフトウェアは、通常システム環境で直接動きます。統合は自然ですが、隔離は少なめです。&lt;/p&gt;
&lt;p&gt;Snap と Flatpak はどちらもサンドボックスの考え方を持っています。アプリは標準ではすべてのシステム資源へ自由にアクセスできず、ファイル、カメラ、ネットワーク、デスクトップ通知などには権限インターフェースを通じてアクセスします。&lt;/p&gt;
&lt;p&gt;これは絶対安全という意味ではありませんが、より明確な権限境界を提供します。出所がさまざまなデスクトップアプリでは重要です。&lt;/p&gt;
&lt;h2 id=&#34;更新方式の違い&#34;&gt;更新方式の違い
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; は通常、システム更新に従います。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Snap は自動更新されます。これは便利ですが、議論もあります。ユーザーはバージョン管理を気にしなくて済みますが、制御感は減ります。&lt;/p&gt;
&lt;p&gt;Flatpak は手動で更新できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;flatpak update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;そのため、いつ更新するかを重視するなら、&lt;code&gt;apt&lt;/code&gt; と Flatpak のほうが制御しやすく感じます。アプリを自動で新しく保ちたいなら、Snap のほうが楽です。&lt;/p&gt;
&lt;h2 id=&#34;どれを使うべきか&#34;&gt;どれを使うべきか
&lt;/h2&gt;&lt;p&gt;用途で選ぶと分かりやすいです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;システムツール、ドライバー、サーバーコンポーネント：&lt;code&gt;apt&lt;/code&gt; を優先。&lt;/li&gt;
&lt;li&gt;Ubuntu が標準で推奨するデスクトップアプリ：Snap でもよい。&lt;/li&gt;
&lt;li&gt;新しめのデスクトップソフト、特にクロスディストリビューションアプリ：Flatpak が合うことが多い。&lt;/li&gt;
&lt;li&gt;同じソフトが三方式すべてにある場合：安定性、起動速度、テーマ統合、更新ニーズを見る。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;保守的には、システム層は &lt;code&gt;apt&lt;/code&gt;、デスクトップアプリは必要に応じて Snap と Flatpak から選ぶ、という使い分けで十分です。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;apt&lt;/code&gt;、Snap、Flatpak は、どれかがどれかを完全に置き換えるものではありません。配布モデルが違います。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; はシステム保守に向き、Snap はアプリ同梱依存関係と自動更新を重視し、Flatpak はクロスディストリビューションのデスクトップアプリとサンドボックス配布に向いています。&lt;/p&gt;
&lt;p&gt;日常利用なら、どれが最高かに悩みすぎる必要はありません。システムソフトは &lt;code&gt;apt&lt;/code&gt;、デスクトップアプリはディストリビューションの推奨と自分の体験で選びます。安定して動き、更新を把握でき、権限が分かりやすければ、それが合った選択です。&lt;/p&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/Ubuntu/comments/9awvip/eli5_snap_and_flatpak_how_are_they_differ_from_apt/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.reddit.com/r/Ubuntu/comments/9awvip/eli5_snap_and_flatpak_how_are_they_differ_from_apt/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Linux 7.0 と 7.1 における NTFS ドライバー変更の整理</title>
        <link>https://knightli.com/ja/2026/05/02/linux-7-0-7-1-ntfs-driver/</link>
        <pubDate>Sat, 02 May 2026 10:46:20 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/02/linux-7-0-7-1-ntfs-driver/</guid>
        <description>&lt;p&gt;Linux 7.0 の公開後、7.1 は次の機能マージ期間に入りました。そこで注目される変更の一つが、新しい NTFS カーネルドライバーです。&lt;/p&gt;
&lt;p&gt;ここでいう「新しい」は、Linux が初めて NTFS に対応するという意味ではありません。また、&lt;code&gt;ntfs3&lt;/code&gt; が置き換えられるという意味でもありません。より正確には、Linux 7.1 に新しい任意のカーネル内 NTFS 読み書きドライバーが追加されます。これは昔からあるカーネル内 &lt;code&gt;ntfs&lt;/code&gt; ドライバーを整理し直し、より完全な書き込み機能を補ったものです。&lt;/p&gt;
&lt;h2 id=&#34;まず結論&#34;&gt;まず結論
&lt;/h2&gt;&lt;p&gt;Linux での NTFS 対応は、現在おもに三つのルートがあります。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方式&lt;/th&gt;
          &lt;th&gt;場所&lt;/th&gt;
          &lt;th&gt;読み書き&lt;/th&gt;
          &lt;th&gt;向いている場面&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ntfs-3g&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;ユーザー空間 FUSE&lt;/td&gt;
          &lt;td&gt;読み書き&lt;/td&gt;
          &lt;td&gt;安定性優先。長く使われてきたディストリビューション標準&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;ntfs3&lt;/code&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;新 &lt;code&gt;ntfs&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;カーネル空間&lt;/td&gt;
          &lt;td&gt;読み書き&lt;/td&gt;
          &lt;td&gt;Linux 7.1 で追加される任意の実装&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;今回の変更は強制移行ではなく、選択肢が一つ増えるという話です。普通のユーザーは、当面ディストリビューションの標準設定に従えば十分です。&lt;/p&gt;
&lt;h2 id=&#34;70-と-71-の関係&#34;&gt;7.0 と 7.1 の関係
&lt;/h2&gt;&lt;p&gt;Linux 7.0 は、カーネルのバージョンが 7.x 系列に入ったことを示します。7.0 で NTFS 対応が突然書き換えられたわけではありません。NTFS に関する新しい変更は、7.1 の機能マージ段階で入ります。&lt;/p&gt;
&lt;p&gt;NTFS は Linux デスクトップユーザーにとって避けて通れないファイルシステムです。デュアルブート、外付けドライブ、USB メモリ、Windows データディスクでよく使われます。問題は、NTFS の書き込み経路が複雑なことです。ファイルシステムドライバーにバグがあると、ユーザーデータへ直接影響します。そのため、カーネルコミュニティは NTFS ドライバーの変更に慎重です。&lt;/p&gt;
&lt;h2 id=&#34;ntfs-3gntfs3新-ntfs&#34;&gt;&lt;code&gt;ntfs-3g&lt;/code&gt;、&lt;code&gt;ntfs3&lt;/code&gt;、新 &lt;code&gt;ntfs&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ntfs-3g&lt;/code&gt; はユーザー空間の FUSE ドライバーで、Linux 上の NTFS 読み書きを長く担ってきました。常に最速とは限りませんが、成熟しており、互換性が高く、情報も豊富です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ntfs3&lt;/code&gt; は Paragon Software が提供し、Linux メインラインに入ったカーネル内 NTFS ドライバーです。経路が短く、VFS との統合も直接的で、理論上の性能も高くなります。ただし、ファイルシステムドライバーには高い保守品質が求められるため、&lt;code&gt;ntfs3&lt;/code&gt; のマージ後も保守ペースやコード品質について議論がありました。&lt;/p&gt;
&lt;p&gt;Linux 7.1 で追加される &lt;code&gt;ntfs&lt;/code&gt; ドライバーは、Namjae Jeon が保守しています。ゼロから作られたものではなく、古いカーネル &lt;code&gt;ntfs&lt;/code&gt; ドライバーを現代化し、読み書き能力を補った別の任意実装です。&lt;code&gt;ntfs3&lt;/code&gt; と併存します。&lt;/p&gt;
&lt;p&gt;三者の関係は次のように考えると分かりやすいです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ntfs-3g&lt;/code&gt;：保守的で成熟したユーザー空間実装。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ntfs3&lt;/code&gt;：すでにメインラインにあるカーネル内実装。&lt;/li&gt;
&lt;li&gt;新 &lt;code&gt;ntfs&lt;/code&gt;：7.1 で追加されるカーネル内実装。安定性は今後の観察が必要。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;どれを使うべきか&#34;&gt;どれを使うべきか
&lt;/h2&gt;&lt;p&gt;日常利用で急いで切り替える必要はありません。保守的には次の順番が無難です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;重要なデータでは、ディストリビューション標準の方式を使う。多くの場合は &lt;code&gt;ntfs-3g&lt;/code&gt;、または検証済みの &lt;code&gt;ntfs3&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;性能が必要な場合は &lt;code&gt;ntfs3&lt;/code&gt; を試す。&lt;/li&gt;
&lt;li&gt;新しい &lt;code&gt;ntfs&lt;/code&gt; ドライバーは、まずテスト用ディスク、一時データ、復旧可能なデータで試す。&lt;/li&gt;
&lt;li&gt;重要な NTFS パーティションへ書き込む前にバックアップする。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;ntfs3&lt;/code&gt; を手動で使う場合の一般的なマウント例です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mount -t ntfs3 /dev/sdX1 /mnt/ntfs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一時的に読み取りだけしたい場合は、読み取り専用でマウントできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mount -o ro /dev/sdX1 /mnt/ntfs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;現在どのドライバーでマウントされているかは、次のように確認できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;findmnt -T /mnt/ntfs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep ntfs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;デュアルブート環境での注意&#34;&gt;デュアルブート環境での注意
&lt;/h2&gt;&lt;p&gt;NTFS パーティションが Windows のシステムディスク由来の場合、書き込む前に Windows が完全にシャットダウンされていることを確認してください。高速スタートアップや休止状態は NTFS ボリュームを未完了の状態に残すため、Linux から書き込むと整合性問題が起きることがあります。&lt;/p&gt;
&lt;p&gt;確認したい項目は次の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows の高速スタートアップを無効にする。&lt;/li&gt;
&lt;li&gt;パーティションが hibernation 状態でないことを確認する。&lt;/li&gt;
&lt;li&gt;BitLocker などの暗号化がアクセスを妨げていないことを確認する。&lt;/li&gt;
&lt;li&gt;外付けドライブは Windows で正しく取り外す。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これは &lt;code&gt;ntfs-3g&lt;/code&gt;、&lt;code&gt;ntfs3&lt;/code&gt;、新しい &lt;code&gt;ntfs&lt;/code&gt; のどれを使う場合でも同じです。&lt;/p&gt;
&lt;h2 id=&#34;なぜ複数の-ntfs-ドライバーが必要なのか&#34;&gt;なぜ複数の NTFS ドライバーが必要なのか
&lt;/h2&gt;&lt;p&gt;同じファイルシステムに複数の実装が存在することは、Linux では珍しくありません。古い実装、新しい実装、ベンダー実装、コミュニティ実装がしばらく併存し、保守状況と実利用のフィードバックによって主流が決まっていきます。&lt;/p&gt;
&lt;p&gt;NTFS では特に保守的な扱いが必要です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ユーザーデータへのリスクが高い。&lt;/li&gt;
&lt;li&gt;互換性の場面が複雑。&lt;/li&gt;
&lt;li&gt;実装ごとに性能と安定性の取捨選択が異なる。&lt;/li&gt;
&lt;li&gt;ディストリビューションが標準設定を検証する時間が必要。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;そのため、Linux 7.1 の新 &lt;code&gt;ntfs&lt;/code&gt; ドライバーは、&lt;code&gt;ntfs-3g&lt;/code&gt; や &lt;code&gt;ntfs3&lt;/code&gt; をすぐ不要にするものではありません。カーネルコミュニティに、もう一つ保守可能な選択肢を与えるものです。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Linux 7.1 で追加される &lt;code&gt;ntfs&lt;/code&gt; ドライバーは、任意で使えるカーネル内 NTFS 読み書き実装です。&lt;code&gt;ntfs-3g&lt;/code&gt; や &lt;code&gt;ntfs3&lt;/code&gt; と併存し、どちらかを直接置き換えるものではありません。&lt;/p&gt;
&lt;p&gt;普通のユーザーは、引き続きディストリビューション標準の方式を使えば十分です。性能や新しいファイルシステム実装を試したい場合は、&lt;code&gt;ntfs3&lt;/code&gt; と新 &lt;code&gt;ntfs&lt;/code&gt; の今後の安定性を見ながら、重要データでは必ずバックアップを取ってから切り替えるのが安全です。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>sudo と sudo-rs の違い：Rust 版 sudo は何を変えるのか</title>
        <link>https://knightli.com/ja/2026/05/01/sudo-vs-sudo-rs-rust-linux-command/</link>
        <pubDate>Fri, 01 May 2026 19:27:08 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/sudo-vs-sudo-rs-rust-linux-command/</guid>
        <description>&lt;p&gt;&lt;code&gt;sudo&lt;/code&gt; は Linux ユーザーにとって最もなじみ深いコマンドの一つである。
通常ユーザーが、許可された範囲で一時的により高い権限でコマンドを実行できるようにする。
たとえば、ソフトウェアのインストール、システム設定の変更、サービスの再起動などで使われる。&lt;/p&gt;
&lt;p&gt;最近 &lt;code&gt;sudo-rs&lt;/code&gt; が注目されているのは、Ubuntu 25.10 が従来の sudo を置き換える形で、Rust 実装の &lt;code&gt;sudo-rs&lt;/code&gt; をデフォルトで使い始めるためだ。
一般ユーザーから見ると、表面上は引き続き &lt;code&gt;sudo&lt;/code&gt; と入力する。
本当に変わるのはシステムの内側で、実行される実装が Rust 版 sudo になっている可能性がある。&lt;/p&gt;
&lt;p&gt;この話では、自然に二つの疑問が出てくる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;従来の sudo に何か問題があるのか。&lt;/li&gt;
&lt;li&gt;sudo-rs は日常利用やサーバー設定に影響するのか。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡単に言えば、普通のデスクトップユーザーはほとんど心配しなくてよい。
ただし、サーバーを管理している、複雑な sudoers ルールを書いたことがある、または特殊な sudo の挙動に依存している場合は、きちんとテストする必要がある。&lt;/p&gt;
&lt;h2 id=&#34;sudo-rs-とは&#34;&gt;sudo-rs とは
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sudo-rs&lt;/code&gt; は Rust で書かれた sudo / su の実装である。
完全に別物の新しいコマンドを作ることが目的ではなく、従来の sudo の主要機能を再実装しつつ、Rust のメモリ安全性を利用して一般的なセキュリティリスクを下げることを目指している。&lt;/p&gt;
&lt;p&gt;従来の sudo は主に C 言語で書かれており、歴史が長く、機能も非常に充実している。
その成熟度は安定性をもたらす一方で、保守上の負担にもなる。
多くのコードはかなり古い Unix/Linux の利用場面に由来し、その後、大量の互換ロジック、拡張、境界処理が重ねられてきた。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo-rs&lt;/code&gt; が再実装を選んだ理由には、次のようなものがある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rust によりメモリ安全性の問題を減らす。&lt;/li&gt;
&lt;li&gt;より現代的なコード構造で保守難度を下げる。&lt;/li&gt;
&lt;li&gt;一部の歴史的機能やリスクのあるデフォルト挙動を削る。&lt;/li&gt;
&lt;li&gt;Rust に慣れた新しい貢献者を呼び込む。&lt;/li&gt;
&lt;li&gt;将来の権限昇格ツールに、より監査しやすい土台を提供する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ただし、&lt;code&gt;sudo-rs&lt;/code&gt; は従来の sudo と 100% 互換の置き換えではない。
現在も開発中であり、一部の従来機能はまだ実装されておらず、別の一部は今後も実装されない可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;一般ユーザーが感じる変化&#34;&gt;一般ユーザーが感じる変化
&lt;/h2&gt;&lt;p&gt;一般ユーザーにとって、変化はかなり少ない。&lt;/p&gt;
&lt;p&gt;これまで通り次のように使う。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;または：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl restart nginx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ubuntu 25.10 では、&lt;code&gt;sudo&lt;/code&gt; が &lt;code&gt;sudo-rs&lt;/code&gt; を指す。
ユーザーが入力するコマンドを &lt;code&gt;sudo-rs&lt;/code&gt; に変える必要はなく、スクリプト内の一般的な &lt;code&gt;sudo&lt;/code&gt; 呼び出しも、コマンド名の変更で即座に壊れるわけではない。&lt;/p&gt;
&lt;p&gt;見えやすい変化は、パスワード入力時のフィードバックである。
&lt;code&gt;sudo-rs&lt;/code&gt; はデフォルトで、パスワード入力時にアスタリスクを表示する。
従来の sudo でも設定により同様の挙動にできるが、多くのディストリビューションでは何も表示しない設定がデフォルトだった。&lt;/p&gt;
&lt;p&gt;また、一部のエラーや警告メッセージの文面が変わる可能性がある。
たとえば、パスワード誤り、権限不足、設定の非互換などでは、以前とまったく同じ文面ではないことがある。
人間のユーザーにとって大きな影響はないが、sudo のエラー出力を解析するスクリプトがある場合は確認が必要だ。&lt;/p&gt;
&lt;h2 id=&#34;管理者が注意すべき違い&#34;&gt;管理者が注意すべき違い
&lt;/h2&gt;&lt;p&gt;本当に注意が必要なのは、システム管理者と上級ユーザーである。&lt;/p&gt;
&lt;p&gt;従来の sudo のエコシステムは大きく、多くのサーバーには複雑な sudoers 設定がある。
これらの設定には、コマンド引数のマッチング、環境変数の制御、ログ、メール通知、PAM の挙動、ホストグループごとのポリシーなどが含まれることがある。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo-rs&lt;/code&gt; には現時点で従来の sudo との違いがある。
たとえば、元記事では &lt;code&gt;sudo-rs&lt;/code&gt; が従来 sudo の sendmail サポートを含まないことに触れている。
過去に sudo 使用通知を sendmail で送っていた環境では、移行時に別の方法を用意する必要がある。&lt;/p&gt;
&lt;p&gt;認証面では、&lt;code&gt;sudo-rs&lt;/code&gt; は PAM を使う。
そのため、リソース制限や umask などの挙動は、sudoers ファイルだけに頼るのではなく、より PAM 側で設定する必要がある。
以前 sudoers で多くの細部を扱っていた場合、切り替え前にそのルールが今も有効か確認するべきである。&lt;/p&gt;
&lt;p&gt;もう一つ重要なのは、コマンド引数位置でのワイルドカード対応だ。
&lt;code&gt;sudo-rs&lt;/code&gt; は sudoers ファイルでありがちな設定ミスを避けるため、コマンド引数位置でのワイルドカードをサポートしない。
これはセキュリティ上は良いことだが、既存ルールに影響する可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;ubuntu-で-sudo-と-sudo-rs-はどう扱われるか&#34;&gt;Ubuntu で sudo と sudo-rs はどう扱われるか
&lt;/h2&gt;&lt;p&gt;Ubuntu 25.10 以降、システムはデフォルトで &lt;code&gt;sudo-rs&lt;/code&gt; を使う。
ユーザーは引き続き &lt;code&gt;sudo&lt;/code&gt; と入力し、その下で Rust 実装が動く。&lt;/p&gt;
&lt;p&gt;従来の sudo がすぐ消えるわけではない。
Ubuntu の移行設計では、従来の sudo は &lt;code&gt;sudo-ws&lt;/code&gt; という形で残される。
どうしても従来実装が必要な場合は &lt;code&gt;sudo-ws&lt;/code&gt; を使うか、alternatives の仕組みでデフォルト sudo を切り替えられる。&lt;/p&gt;
&lt;p&gt;切り替えコマンドは次のような形になる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-alternatives --config sudo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ただし、普通のユーザーが積極的に従来 sudo へ戻すことは勧めにくい。
sudoers をカスタマイズしておらず、特殊な挙動にも依存していないなら、ディストリビューションのデフォルトに従うほうが楽である。&lt;/p&gt;
&lt;p&gt;古い Ubuntu バージョンで試したい場合、&lt;code&gt;sudo-rs&lt;/code&gt; は Ubuntu 24.04 以降 universe リポジトリから入手できる。
他のディストリビューションでもパッケージが提供されている可能性はあるが、コマンド名や統合方法は同じとは限らない。&lt;/p&gt;
&lt;h2 id=&#34;なぜ-sudo-rs-は-rust-を選ぶのか&#34;&gt;なぜ sudo-rs は Rust を選ぶのか
&lt;/h2&gt;&lt;p&gt;sudo は高権限ツールである。
この種のツールに脆弱性があると、通常のコマンドよりも深刻な結果につながることがある。
歴史的にも、sudo には複数の権限昇格脆弱性が存在した。&lt;/p&gt;
&lt;p&gt;Rust の強みはメモリ安全性にある。
所有権、借用チェック、型システムにより、ダングリングポインタ、境界外アクセス、use-after-free などの一般的な問題を減らせる。
これでプログラムが絶対に安全になるわけではないが、C/C++ プロジェクトでよく見られる一群の脆弱性を減らせる。&lt;/p&gt;
&lt;p&gt;sudo のように長くセキュリティ上重要な位置にあるツールでは、より安全な言語で書き直すことには現実的な意味がある。
これは単なる「Rust を使いたいから Rust」ではなく、保守と監査のコストを下げようとする試みである。&lt;/p&gt;
&lt;p&gt;もちろん、言語がすべてのセキュリティ問題を解決するわけではない。
権限チェックロジック、設定解析、PAM 連携、環境変数処理、ログ、ユーザー体験は、今後も慎重な設計と長期的なテストを必要とする。&lt;/p&gt;
&lt;h2 id=&#34;sudo-rs-は唯一の選択肢ではない&#34;&gt;sudo-rs は唯一の選択肢ではない
&lt;/h2&gt;&lt;p&gt;sudo エコシステムには、もともと他の代替ツールも存在する。&lt;/p&gt;
&lt;p&gt;比較的よく知られているのは &lt;code&gt;doas&lt;/code&gt; である。
OpenBSD 由来で、より単純で小さな設定を目指している。
sudo ほど複雑ではない点を好むユーザーもいる。&lt;/p&gt;
&lt;p&gt;ほかにも、RootAsRole や systemd の &lt;code&gt;run0&lt;/code&gt; など、Rust や systemd 関連の代替案がある。
ただし、これらのツールの目的や適用場面は完全には同じではない。&lt;/p&gt;
&lt;p&gt;多くの Linux ディストリビューションでは、sudo は今でもデフォルトの選択肢である。
&lt;code&gt;sudo-rs&lt;/code&gt; の意味は、ユーザーの習慣を保ちながら、内部実装をより現代的なコード基盤に置き換えようとしている点にある。&lt;/p&gt;
&lt;h2 id=&#34;移行前に確認すべきこと&#34;&gt;移行前に確認すべきこと
&lt;/h2&gt;&lt;p&gt;個人のデスクトップユーザーなら、ディストリビューションのデフォルト設定に従えばよい。&lt;/p&gt;
&lt;p&gt;サーバーやワークステーションを管理している場合は、次の点を確認したい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;複雑な &lt;code&gt;/etc/sudoers&lt;/code&gt; または &lt;code&gt;/etc/sudoers.d/&lt;/code&gt; ルールがあるか。&lt;/li&gt;
&lt;li&gt;コマンド引数のワイルドカードを使っているか。&lt;/li&gt;
&lt;li&gt;sudo のメール通知に依存しているか。&lt;/li&gt;
&lt;li&gt;sudo のエラー出力を解析するスクリプトがあるか。&lt;/li&gt;
&lt;li&gt;sudoers で umask、リソース制限、環境変数を制御しているか。&lt;/li&gt;
&lt;li&gt;LDAP、PAM、SSSD などの認証連携があるか。&lt;/li&gt;
&lt;li&gt;automation やデプロイスクリプトが従来 sudo の挙動を前提にしているか。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;まずテスト機で確認できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo -l
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;その後、重要な保守コマンドを実行し、権限、環境変数、ログ挙動が期待通りか確認する。&lt;/p&gt;
&lt;h2 id=&#34;sudo-rs-へ自分で切り替えるべきか&#34;&gt;sudo-rs へ自分で切り替えるべきか
&lt;/h2&gt;&lt;p&gt;ディストリビューションがすでにデフォルトで切り替えているなら、普通のユーザーはそのまま受け入れてよい。
サーバーや本番環境では、試したいという理由だけで手動置き換えするのは勧めにくい。&lt;/p&gt;
&lt;p&gt;より安全な進め方は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;テスト環境に &lt;code&gt;sudo-rs&lt;/code&gt; をインストールする。&lt;/li&gt;
&lt;li&gt;既存の sudoers 設定を項目ごとに検証する。&lt;/li&gt;
&lt;li&gt;PAM、ログ、監査、automation スクリプトを確認する。&lt;/li&gt;
&lt;li&gt;ロールバック方法を確認する。&lt;/li&gt;
&lt;li&gt;ディストリビューションが安定した統合を提供してから移行する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この種のツールは権限チェーン上にあるため、「いくつかのコマンドが動く」だけで安全とは判断しにくい。
本当に確認すべきなのは、境界条件と異常系である。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sudo-rs&lt;/code&gt; は従来 sudo の Rust 実装であり、より現代的で安全なコード基盤で sudo の中核機能を担うことを目指している。
Ubuntu 25.10 がデフォルトで有効化することは、主要ディストリビューションがこの方向を本格的に進め始めたことを示している。&lt;/p&gt;
&lt;p&gt;一般ユーザーにとって、変化は小さい。
引き続き &lt;code&gt;sudo&lt;/code&gt; と入力するだけで、内部実装が &lt;code&gt;sudo-rs&lt;/code&gt; になっている可能性があるだけだ。
気づくとしても、パスワード入力時にアスタリスクが表示されることや、エラーメッセージが少し変わることくらいである。&lt;/p&gt;
&lt;p&gt;システム管理者にとって、重要なのは互換性だ。
複雑な sudoers ルール、sendmail 通知、PAM 連携、引数ワイルドカード、sudo 出力に依存するスクリプトがある場合は、アップグレード前にテストすべきである。&lt;/p&gt;
&lt;p&gt;Rust による書き直しは万能薬ではない。
それでも sudo のようなセキュリティ上重要なツールでは、メモリ安全性リスクと保守の複雑さを減らす方向として、真剣に検討する価値がある。&lt;/p&gt;
&lt;p&gt;参考ソース：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://itsfoss.com/sudo-vs-sudo-rs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;It&amp;rsquo;s FOSS：sudo vs sudo-rs: What You Need to Know&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/trifectatechfoundation/sudo-rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sudo-rs GitHub プロジェクト&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>X11 と Wayland の違い、長所・短所、選び方</title>
        <link>https://knightli.com/ja/2026/05/01/x11-vs-wayland-differences-pros-cons/</link>
        <pubDate>Fri, 01 May 2026 19:23:01 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/x11-vs-wayland-differences-pros-cons/</guid>
        <description>&lt;p&gt;Linux デスクトップでは、&lt;code&gt;X11&lt;/code&gt; と &lt;code&gt;Wayland&lt;/code&gt; という二つの名前をよく目にする。
どちらもグラフィック表示に関係しているが、設計された時代、アーキテクチャの考え方、使い勝手はかなり違う。&lt;/p&gt;
&lt;p&gt;簡単に言えば、X11 は旧世代のディスプレイプロトコルとエコシステムである。
機能は成熟しており互換性も高いが、アーキテクチャは複雑で、セキュリティモデルは古い。
Wayland は新世代のディスプレイプロトコルで、中間層を減らし、セキュリティと滑らかさを高めることを目指している。
ただし、一部のソフトウェアやワークフローはまだ適応が必要だ。&lt;/p&gt;
&lt;p&gt;日常利用だけを考えるなら、結論は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新しく Linux デスクトップを入れるなら、まず Wayland を試す。&lt;/li&gt;
&lt;li&gt;古いソフトウェア、複雑なリモートデスクトップ、特殊な入力デバイス、一部の専門ツールが必要なら、X11 のほうがまだ安定しやすい。&lt;/li&gt;
&lt;li&gt;ゲームや通常のオフィス用途では、Wayland はかなり実用的になっている。&lt;/li&gt;
&lt;li&gt;互換性の問題が出たら X11 に戻せばよい。これは信条の問題ではない。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;x11-とは&#34;&gt;X11 とは
&lt;/h2&gt;&lt;p&gt;X11 は X Window System や Xorg とも呼ばれ、Linux や Unix デスクトップで長年使われてきたグラフィックシステムである。
その設計思想は、プログラムをあるマシンで実行し、ウィンドウを別のマシンに表示するという、初期のネットワークコンピューティング環境に由来する。&lt;/p&gt;
&lt;p&gt;X11 の典型的な構造は次のようになる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;アプリケーションがウィンドウ内容を描画する。&lt;/li&gt;
&lt;li&gt;X Server が表示、入力、基本的なウィンドウ操作を管理する。&lt;/li&gt;
&lt;li&gt;ウィンドウマネージャーが枠、移動、重なり順を担当する。&lt;/li&gt;
&lt;li&gt;コンポジターが影、透明効果、アニメーション、ティアリング制御などを担当する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この構造は柔軟で、X11 は大量のツールと拡張を蓄積してきた。
しかし時間が経つにつれて、問題も明確になった。
コンポーネントが多く、経路が長く、権限境界が緩く、現代的なデスクトップ要求の多くを拡張やパッチで支えている。&lt;/p&gt;
&lt;h2 id=&#34;wayland-とは&#34;&gt;Wayland とは
&lt;/h2&gt;&lt;p&gt;Wayland は、従来型の完全なディスプレイサーバーというより、より現代的なディスプレイプロトコルである。
Wayland では、コンポジターが同時にディスプレイサーバーの役割を担うことが多い。
GNOME の Mutter、KDE の KWin、wlroots 系のコンポジターはいずれも Wayland compositor として動作できる。&lt;/p&gt;
&lt;p&gt;Wayland の典型的な構造はより短い。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;アプリケーションが自分でウィンドウ内容をレンダリングする。&lt;/li&gt;
&lt;li&gt;コンポジターがアプリケーションから送られた buffer を受け取る。&lt;/li&gt;
&lt;li&gt;コンポジターがウィンドウ、入力、ディスプレイ出力、合成を一元管理する。&lt;/li&gt;
&lt;li&gt;最終的な画面はカーネルのグラフィックスタックへ直接渡されて表示される。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この設計により、従来の X11 にあった X Server、ウィンドウマネージャー、コンポジター間の遠回りが減る。
また、権限制御も明確になる。
アプリケーションはデフォルトで他のウィンドウ内容を自由に読めず、グローバルなキーボード入力も勝手に監視できない。&lt;/p&gt;
&lt;h2 id=&#34;アーキテクチャの違い&#34;&gt;アーキテクチャの違い
&lt;/h2&gt;&lt;p&gt;最も大きな違いは、責務の分け方にある。&lt;/p&gt;
&lt;p&gt;X11 では、X Server が中心にあり、多くのアプリケーションがそれとやり取りできる。
ウィンドウマネージャー、コンポジター、入力メソッド、スクリーンショットツール、リモート制御ツールも、X11 のオープンなインターフェースを通じて多くの情報を取得できる。
これは高い互換性をもたらす一方で、セキュリティ上の問題も生む。&lt;/p&gt;
&lt;p&gt;Wayland では、コンポジターが中心である。
アプリケーションは他のウィンドウ内容を直接取得できず、すべてのキーボード入力をデフォルトで監視することもできない。
スクリーンショット、録画、画面共有、グローバルショートカット、リモート制御などは、デスクトップポータル、PipeWire、またはコンポジターが提供する制御されたインターフェースを通す必要がある。&lt;/p&gt;
&lt;p&gt;整理すると次のようになる。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;比較項目&lt;/th&gt;
          &lt;th&gt;X11&lt;/th&gt;
          &lt;th&gt;Wayland&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&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;中心コンポーネント&lt;/td&gt;
          &lt;td&gt;X Server&lt;/td&gt;
          &lt;td&gt;Compositor&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&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;アプリ間の隔離&lt;/td&gt;
          &lt;td&gt;弱い&lt;/td&gt;
          &lt;td&gt;強い&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&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;互換性&lt;/td&gt;
          &lt;td&gt;非常に強い&lt;/td&gt;
          &lt;td&gt;まだ補完中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;現代的なデスクトップ体験&lt;/td&gt;
          &lt;td&gt;拡張とパッチに依存&lt;/td&gt;
          &lt;td&gt;設計上、現代的な要求に近い&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;x11-の長所&#34;&gt;X11 の長所
&lt;/h2&gt;&lt;p&gt;X11 最大の長所は成熟度である。
長年動いてきたため、ほぼすべての Linux グラフィカルアプリケーションが X11 で動作する。
古いツール、専門ソフトウェア、特殊な入力メソッド、リモート制御、 automation スクリプトも、X11 を優先してサポートしていることが多い。&lt;/p&gt;
&lt;p&gt;もう一つの長所は操作しやすさである。
多くのツールはウィンドウの読み取り、入力のシミュレーション、画面キャプチャ、ウィンドウ移動、キー入力監視を直接行える。
これは automation、リモート支援、ウィンドウ管理スクリプト、特殊なワークフローに便利だ。&lt;/p&gt;
&lt;p&gt;次のような用途があるなら、X11 は今でも現実的な選択肢である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;古い GUI ソフトウェアを使う。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xrandr&lt;/code&gt;、&lt;code&gt;xinput&lt;/code&gt;、&lt;code&gt;xdotool&lt;/code&gt;、&lt;code&gt;wmctrl&lt;/code&gt; に依存している。&lt;/li&gt;
&lt;li&gt;従来型のリモートデスクトップやウィンドウ転送を使う。&lt;/li&gt;
&lt;li&gt;特殊なスクリーンショット、録画、キーボード/マウスマクロツールが必要。&lt;/li&gt;
&lt;li&gt;あるアプリが Wayland ではまだ不安定。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;x11-の短所&#34;&gt;X11 の短所
&lt;/h2&gt;&lt;p&gt;X11 の短所は主に歴史的な負担から来ている。&lt;/p&gt;
&lt;p&gt;まず、セキュリティモデルが古い。
従来の X11 セッションでは、通常のアプリケーションが他のウィンドウ入力を監視したり、画面内容を取得したり、キーボードやマウス操作をシミュレートしたりできることが多い。
現代的なデスクトップセキュリティの観点では、これは受け入れにくい。&lt;/p&gt;
&lt;p&gt;次に、レンダリング経路が複雑である。
X11 は Composite、GLX、DRI、RandR、Present など、多くの拡張を経てきた。
これらの拡張により現代的なデスクトップを支え続けられたが、グラフィックスタックも複雑になった。
高リフレッシュレート、マルチモニター、異なるスケーリング、混在 DPI、低遅延入力などでは、X11 は細かな問題が出やすい。&lt;/p&gt;
&lt;p&gt;さらに、X11 の保守の重点は徐々に互換性へ移っている。
主要なデスクトップ環境は今でも X11 をサポートしているが、新機能や新しい最適化は Wayland に先に入ることが多い。&lt;/p&gt;
&lt;h2 id=&#34;wayland-の長所&#34;&gt;Wayland の長所
&lt;/h2&gt;&lt;p&gt;Wayland の利点は、主に現代的なデスクトップ体験にある。&lt;/p&gt;
&lt;p&gt;レンダリング経路がより直接的である。
アプリケーションが buffer をレンダリングし、コンポジターが一元的に合成して表示するため、従来の X11 アーキテクチャにあった遠回りが減る。
アニメーション、ウィンドウ移動、高リフレッシュレート、マルチモニター、タッチパッドジェスチャー、分数スケーリングなどでは、Wayland のほうがきれいに実装しやすい。&lt;/p&gt;
&lt;p&gt;セキュリティも Wayland の重要な長所である。
アプリケーションはデフォルトで他のウィンドウを自由にキャプチャできず、グローバルなキーボード入力も無条件には監視できない。
スクリーンショット、録画、画面共有にはユーザー許可が必要で、通常はデスクトップポータルと PipeWire を通じて処理される。&lt;/p&gt;
&lt;p&gt;Wayland は現代的なハードウェアにも向いている。
タッチパッドジェスチャー、HiDPI、可変リフレッシュレート、モニターごとの異なるスケーリングなどは、Wayland のほうが自然に扱いやすい。
GNOME と KDE も近年、多くのデスクトップ体験改善を Wayland セッションへ投入している。&lt;/p&gt;
&lt;h2 id=&#34;wayland-の短所&#34;&gt;Wayland の短所
&lt;/h2&gt;&lt;p&gt;Wayland の問題は「使えない」ことではなく、エコシステムがまだ移行中であることだ。&lt;/p&gt;
&lt;p&gt;一部のツールは、グローバルキー監視、ウィンドウ列挙、自動クリック、画面取得、ウィンドウ移動など、X11 のオープンな機能に依存していた。
Wayland ではこれらをそのまま持ち込めず、ポータル、コンポジタープロトコル、またはデスクトップ環境 API を通す必要がある。
そのため、一部の古いツールは動かなくなったり、特定のデスクトップ環境でしか動作しなかったりする。&lt;/p&gt;
&lt;p&gt;リモートデスクトップも典型的な問題である。
X11 にはネットワーク透過性という歴史的な設計があり、現代の使用体験が常に良いとは限らないが、多くのツールが成熟している。
Wayland でリモートデスクトップを使うには、PipeWire、RDP、VNC、デスクトップポータル、またはコンポジターのサポートが必要で、体験は GNOME、KDE、Sway などの実装に依存する。&lt;/p&gt;
&lt;p&gt;入力メソッドもかつては痛点だった。
現在は Fcitx5 や IBus が主要な Wayland デスクトップでかなり改善されているが、一部の Electron アプリ、古いプログラム、特殊な組み合わせでは、候補ウィンドウの位置、フォーカス、ショートカットに問題が出ることがある。&lt;/p&gt;
&lt;p&gt;NVIDIA も長く Wayland の障害の一つだった。
近年は NVIDIA ドライバとデスクトップ環境のサポートが大きく改善したが、古い GPU、古いドライバ、特殊なマルチモニター構成では、まだ X11 のほうが安定する場合がある。&lt;/p&gt;
&lt;h2 id=&#34;xwayland-の役割&#34;&gt;Xwayland の役割
&lt;/h2&gt;&lt;p&gt;Wayland に切り替えると X11 アプリがまったく使えなくなる、と思っている人も多い。
実際にはそうではない。&lt;/p&gt;
&lt;p&gt;Wayland デスクトップは通常、&lt;code&gt;Xwayland&lt;/code&gt; を使って古い X11 アプリケーションを互換実行する。
アプリケーションは自分が X11 上で動いていると思い、実際のウィンドウ内容は Wayland コンポジターへ渡されて表示される。&lt;/p&gt;
&lt;p&gt;これにより移行はかなり滑らかになる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ネイティブ Wayland アプリは Wayland を使う。&lt;/li&gt;
&lt;li&gt;古い X11 アプリは Xwayland を使う。&lt;/li&gt;
&lt;li&gt;ユーザーは一つのデスクトップセッションで両方の種類のプログラムを同時に使える。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ただし、Xwayland は万能ではない。
グローバル入力監視、ウィンドウ管理スクリプト、低レベルの X11 拡張に依存するツールは、やはり制限を受けることがある。&lt;/p&gt;
&lt;h2 id=&#34;性能はどちらが良いか&#34;&gt;性能はどちらが良いか
&lt;/h2&gt;&lt;p&gt;Wayland が必ず X11 より速い、または X11 が必ず安定している、と単純には言えない。
実際の挙動は、デスクトップ環境、グラフィックドライバ、アプリの種類、使用場面に依存する。&lt;/p&gt;
&lt;p&gt;一般的には次のように考えられる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通常のデスクトップアニメーションや高リフレッシュレート表示では、Wayland のほうが滑らかに感じやすい。&lt;/li&gt;
&lt;li&gt;混在 DPI やマルチモニターのスケーリングでは、Wayland に利点がある。&lt;/li&gt;
&lt;li&gt;古いアプリや特殊なツールでは、X11 のほうが問題が少ない。&lt;/li&gt;
&lt;li&gt;ゲームでは、Xwayland とネイティブ対応により Wayland はかなり成熟しているが、一部のゲームやキャプチャツールはまだ X11 を好む場合がある。&lt;/li&gt;
&lt;li&gt;専門的なグラフィック、リモート制御、automation スクリプトは、具体的なツールごとに確認する必要がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;多くの一般ユーザーにとって、性能は最大の違いではない。
実際の体験を左右するのは、互換性、セキュリティ境界、モニター構成、入力デバイス対応である。&lt;/p&gt;
&lt;h2 id=&#34;スクリーンショット録画画面共有&#34;&gt;スクリーンショット、録画、画面共有
&lt;/h2&gt;&lt;p&gt;これは Wayland で最も誤解されやすい部分である。&lt;/p&gt;
&lt;p&gt;X11 では、スクリーンショットや録画ツールが通常そのまま画面を取得できる。
これは便利だが、悪意あるプログラムが画面を盗み見しやすいという意味でもある。&lt;/p&gt;
&lt;p&gt;Wayland では、アプリケーションが自由に画面を取得することはできない。
スクリーンショット、録画、配信、会議での画面共有は、通常デスクトップポータルと PipeWire を通り、ユーザーの許可を必要とする。
これはより安全だが、アプリケーション側が新しいインターフェースをサポートしている必要がある。&lt;/p&gt;
&lt;p&gt;そのため、ある会議ソフト、録画ツール、スクリーンショットツールが Wayland でうまく動かない場合、それは Wayland が「対応していない」という意味とは限らない。
むしろ、そのアプリがポータルや PipeWire に十分適応していない可能性が高い。&lt;/p&gt;
&lt;h2 id=&#34;ゲームではどちらを選ぶべきか&#34;&gt;ゲームではどちらを選ぶべきか
&lt;/h2&gt;&lt;p&gt;現在の Linux ゲームは、もはや X11 専用ではない。
Steam、Proton、Mesa、KDE、GNOME、Gamescope、Xwayland により、Wayland でのゲーム体験は大きく改善している。&lt;/p&gt;
&lt;p&gt;AMD または Intel GPU を使っているなら、Wayland は日常のゲーム環境として十分使えることが多い。
NVIDIA の場合も新しいドライバではかなり実用的になっているが、ドライバとデスクトップ環境は新しめに保つのがよい。&lt;/p&gt;
&lt;p&gt;ゲーム用途では次のように選べる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通常の Steam / Proton ゲーム：まず Wayland を試す。&lt;/li&gt;
&lt;li&gt;録画、配信、オーバーレイ、入力遅延に問題が出た場合：X11 と比較する。&lt;/li&gt;
&lt;li&gt;Gamescope を使う場合：Wayland エコシステムのほうが合う。&lt;/li&gt;
&lt;li&gt;古い GPU や古いドライバを使う場合：X11 のほうが楽なことがある。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;リモートデスクトップと-automation&#34;&gt;リモートデスクトップと automation
&lt;/h2&gt;&lt;p&gt;ワークフローがリモートデスクトップ、ウィンドウ automation、グローバルなキーボード/マウス制御に依存している場合は、より慎重に考える必要がある。&lt;/p&gt;
&lt;p&gt;X11 はこうした場面でツールが多く、挙動も直接的である。
たとえば、スクリプトでウィンドウを制御する、クリックをシミュレートする、特定ウィンドウを取得する、といった操作は X11 のほうが簡単なことが多い。&lt;/p&gt;
&lt;p&gt;Wayland は安全設計上、通常のアプリケーションが他のウィンドウを自由に制御することを許さない。
そのため、automation ツールはデスクトップ環境が提供するインターフェースを使うか、専用のリモートデスクトップ実装を使う必要がある。
GNOME と KDE はこうした機能を補っているが、デスクトップ間の一貫性はまだ X11 ほどではない。&lt;/p&gt;
&lt;p&gt;普通のデスクトップユーザーなら Wayland で問題ない。
リモート制御、automation テスト、ウィンドウ管理スクリプトを重用しているなら、X11 のほうが合う可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;自分がどちらを使っているか確認する&#34;&gt;自分がどちらを使っているか確認する
&lt;/h2&gt;&lt;p&gt;現在のセッション種別は、環境変数で確認できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$XDG_SESSION_TYPE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;出力が次なら：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wayland
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;現在は Wayland セッションである。&lt;/p&gt;
&lt;p&gt;出力が次なら：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;x11
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;現在は X11 セッションである。&lt;/p&gt;
&lt;p&gt;GNOME や KDE などのデスクトップでは、ログイン画面の歯車メニューやセッション選択から X11 / Wayland を切り替えられることが多い。&lt;/p&gt;
&lt;h2 id=&#34;選び方&#34;&gt;選び方
&lt;/h2&gt;&lt;p&gt;次のように判断できる。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;場面&lt;/th&gt;
          &lt;th&gt;推奨&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;新しいPC、主要ディストリビューション、通常のオフィス用途&lt;/td&gt;
          &lt;td&gt;Wayland 優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最新の GNOME / KDE&lt;/td&gt;
          &lt;td&gt;Wayland 優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;マルチモニター、HiDPI、高リフレッシュレート&lt;/td&gt;
          &lt;td&gt;Wayland 優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;古いソフトウェア、古い GPU、古いドライバ&lt;/td&gt;
          &lt;td&gt;X11 優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;リモートデスクトップ、ウィンドウスクリプト、automation テスト&lt;/td&gt;
          &lt;td&gt;X11 優先、または Wayland を個別検証&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ゲーム&lt;/td&gt;
          &lt;td&gt;まず Wayland、問題があれば X11&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;会議の画面共有、録画&lt;/td&gt;
          &lt;td&gt;ソフトウェアの PipeWire / ポータル対応次第&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;セキュリティ重視、マルチユーザーデスクトップ&lt;/td&gt;
          &lt;td&gt;Wayland 優先&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Wayland は今後の方向性だが、X11 がすぐ消えるわけではない。
両者はしばらく共存し続ける。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;X11 の強みは成熟、互換性、豊富なツールである。
古いソフトウェア、リモートデスクトップ、ウィンドウ automation、一部の特殊なワークフローに向いている。
弱点はセキュリティ境界が弱く、アーキテクチャが複雑で、現代的なマルチモニター、高リフレッシュレート、混在スケーリングに対してすっきりしない点だ。&lt;/p&gt;
&lt;p&gt;Wayland の強みは、より現代的なアーキテクチャ、より良いセキュリティ、より直接的な表示経路である。
HiDPI、タッチパッドジェスチャー、マルチモニター、現代的なデスクトップ体験にも向いている。
弱点は、一部の古いツール、リモート制御、スクリーンショット/録画、入力メソッドでまだ適応コストがあることだ。&lt;/p&gt;
&lt;p&gt;一般ユーザーは Wayland をデフォルトの選択肢として考えてよい。
特定のアプリや周辺機器が正常に動かない場合だけ、X11 に戻して確認すればよい。
Linux デスクトップにとって、これはどちらかを信じる話ではなく、ハードウェア、ソフトウェア、ワークフローに合うほうを選ぶ話である。&lt;/p&gt;
&lt;p&gt;参考ソース：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wayland.freedesktop.org/architecture.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wayland Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wayland.freedesktop.org/faq.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wayland FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wayland.freedesktop.org/xserver.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Xwayland Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://wiki.archlinux.org/title/Wayland&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArchWiki：Wayland&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Linux Kernel 7.0 更新内容の整理</title>
        <link>https://knightli.com/ja/2026/05/01/linux-kernel-7-0-new-features/</link>
        <pubDate>Fri, 01 May 2026 14:46:07 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/01/linux-kernel-7-0-new-features/</guid>
        <description>&lt;p&gt;Linux カーネルのバージョン番号は、以前からセマンティックバージョニングではない。
メジャーバージョンの上昇は、主にメンテナンス周期上のロールアップに近い。
Linus Torvalds もリリースメールで 7.0 を通常のリリースとして説明しており、最後の週はネットワーク、アーキテクチャ、ツール、セルフテスト、ドライバまわりの小さな修正が中心だった。&lt;/p&gt;
&lt;p&gt;本当に注目すべきなのは、この増分更新の中身である。
Linux 7.0 は、ファイルシステム、メモリ管理、ハードウェアサポート、セキュリティ分離、Rust サポート、ドライバ整理など、複数の領域にまたがっている。&lt;/p&gt;
&lt;h2 id=&#34;ファイルシステムxfsext4ntfs3-に変更&#34;&gt;ファイルシステム：XFS、EXT4、NTFS3 に変更
&lt;/h2&gt;&lt;p&gt;Linux 7.0 で最も体感しやすい更新の一つはファイルシステムだ。&lt;/p&gt;
&lt;p&gt;XFS には自己修復に関連する機能が入った。
新しい汎用ファイルシステムエラー報告の仕組みと組み合わせることで、ファイルシステムは metadata の破損や I/O エラーを、より統一された方法でユーザー空間へ伝えられる。
適切なシステムサービスと連携すれば、XFS はファイルシステムをマウントしたまま一部の修復処理を自動で扱える。
すべてのディスク破損を無痛で直せるという意味ではないが、サーバーや長時間稼働するシステムでは、エラー検出から修復までの経路がより整う。&lt;/p&gt;
&lt;p&gt;EXT4 は並行 direct I/O 書き込み性能を引き続き改善している。
バックアップ、ビルド、ダウンロード、データベース、ログ処理などが同時にディスクへ書き込む環境では、こうした最適化により並行書き込み経路がより安定する。
すべてのデスクトップユーザーがすぐ体感する変化ではないが、高 I/O の場面では意味がある。&lt;/p&gt;
&lt;p&gt;NTFS3 も比較的大きなドライバ更新を受けている。
内容には delayed allocation、iomap ベースのファイル操作、大きなディレクトリを走査する場面での readahead 改善が含まれる。
Linux から Windows パーティションや外付け NTFS ディスクをよく使う場合は、注目してよい更新だ。&lt;/p&gt;
&lt;p&gt;さらに exFAT は複数 cluster の順次読み取りを改善しており、一部の小さな cluster のデバイスでは順次読み取りが速くなる。&lt;/p&gt;
&lt;h2 id=&#34;メモリと-swapメモリ圧迫時の挙動を引き続き改善&#34;&gt;メモリと swap：メモリ圧迫時の挙動を引き続き改善
&lt;/h2&gt;&lt;p&gt;Linux 7.0 は、ここ数バージョンで進んできた swap サブシステムの整理を継続している。
今回の重点の一つは、swap からメモリへ読み戻す経路の改善だ。
特に、複数のプロセスが同じスワップアウト済みページを共有している場合、スループットが向上する。&lt;/p&gt;
&lt;p&gt;デスクトップユーザーにとっては、「急にシステムが速くなった」と感じる種類の変化ではないかもしれない。
しかし、メモリが厳しい環境、コンテナが密集したホスト、永続化を有効にした Redis 系サービス、または zram とバックエンドディスクを組み合わせた構成では、メモリ圧迫時の揺れを減らす助けになる。&lt;/p&gt;
&lt;p&gt;zram 関連の経路も最適化されている。
以前は一部のケースで、カーネルが zram ページをいったん展開してからバックエンドデバイスへ書き込む必要があった。
新しい経路では圧縮データを直接書き込めるため、不要な処理を減らせる。&lt;/p&gt;
&lt;h2 id=&#34;cpu-と性能intel-tsx-autoスレッドとファイル操作の高速化&#34;&gt;CPU と性能：Intel TSX auto、スレッドとファイル操作の高速化
&lt;/h2&gt;&lt;p&gt;Linux 7.0 は Intel TSX のデフォルト方針を調整した。
過去のセキュリティ問題により、多くのプロセッサでは TSX がデフォルトで無効化されていた。
現在のカーネルはより細かい &lt;code&gt;auto&lt;/code&gt; 方針を採用し、影響を受ける CPU では引き続き無効化し、影響を受けない、または有効化に適した CPU では自動的に有効化できる。&lt;/p&gt;
&lt;p&gt;これは一部のマルチスレッドワークロード、特にトランザクショナル同期拡張に依存するアプリケーションに役立つ可能性がある。
ただし、汎用的な高速化スイッチではない。
実際の効果は CPU 型番とアプリケーションがその機能を使うかどうかに依存する。&lt;/p&gt;
&lt;p&gt;また、Linux 7.0 には PID 割り当て、スレッドの作成/破棄、ファイルの open/close 経路の最適化も含まれる。
これらは単独で大きく宣伝される機能ではないが、システム応答性や高並行サービスでの小さな改善として積み上がる。&lt;/p&gt;
&lt;h2 id=&#34;ハードウェアサポート新プラットフォームの準備と既存デバイスの改善&#34;&gt;ハードウェアサポート：新プラットフォームの準備と既存デバイスの改善
&lt;/h2&gt;&lt;p&gt;Linux 7.0 は大量のハードウェア有効化作業を継続している。
この種の更新は、まだ広く出回っていない新プラットフォームへの準備と、すでにユーザーの手元にあるデバイスの改善に分けられる。&lt;/p&gt;
&lt;p&gt;新プラットフォームでは、Linux 7.0 に Intel Nova Lake、Intel Crescent Island、AMD の新しいグラフィックス IP、AMD Zen 6 に関する準備がさらに含まれる。
普通のユーザーにとってすぐ役立つとは限らないが、新しいハードウェアが登場した後に、より早くメインラインカーネルで対応できるかを左右する。&lt;/p&gt;
&lt;p&gt;ARM64 とシングルボードコンピュータでは、Rockchip RK3588/RK3576 の H.264/H.265 ハードウェア動画デコードがメインラインサポートの範囲に入った。
これは Orange Pi 5 や Radxa ROCK 5 などのデバイスが、ハードウェアデコード体験のためにベンダー BSP カーネルへ完全に依存しなくてよくなることを意味する。&lt;/p&gt;
&lt;p&gt;ノートPCや周辺機器にも細かな更新が多い。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ASUS WMI は ROG、TUF 機種のバックライト、キーボードライト、ファンホットキー対応を改善。&lt;/li&gt;
&lt;li&gt;HP WMI は一部 Victus 機種の手動ファン制御を追加し、音声インジケーターライトを修正。&lt;/li&gt;
&lt;li&gt;Lenovo WMI は Legion デバイス向けにより多くの HWMON 監視情報を公開。&lt;/li&gt;
&lt;li&gt;Intel Xe グラフィックスドライバはより多くの温度センサーを公開。&lt;/li&gt;
&lt;li&gt;Intel Arc B シリーズのディスクリートGPUは、より深い PCIe 省電力状態へ入れる。&lt;/li&gt;
&lt;li&gt;Rock Band 4 Bluetooth ギターと Logitech K980 Bluetooth キーボードのカーネルサポートが改善。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一つ一つは小さな変更だが、ノートPC、ゲームデバイス、開発ボード、周辺機器のユーザーにとっては、メインラインカーネルでの対応が進むほど、その後のディストリビューション保守が楽になる。&lt;/p&gt;
&lt;h2 id=&#34;セキュリティと分離io_uring-で-bpf-フィルタリングが可能に&#34;&gt;セキュリティと分離：io_uring で BPF フィルタリングが可能に
&lt;/h2&gt;&lt;p&gt;Linux 7.0 は &lt;code&gt;io_uring&lt;/code&gt; に BPF フィルタリング機能を追加した。
これはコンテナ、サンドボックス、高いセキュリティ要件を持つ環境で重要になる。&lt;/p&gt;
&lt;p&gt;以前は攻撃面を減らすため、管理者が &lt;code&gt;io_uring&lt;/code&gt; を丸ごと無効化することがあった。
現在は BPF フィルタリングにより、許可する操作をより細かく制限できる。
つまり、「全開」か「全停止」だけを選ぶ必要がなくなる。&lt;/p&gt;
&lt;p&gt;これで &lt;code&gt;io_uring&lt;/code&gt; のセキュリティリスクが自動的に消えるわけではない。
しかし、システム管理者やランタイムフレームワークにとって、より制御しやすい分離手段が増える。&lt;/p&gt;
&lt;h2 id=&#34;rust-サポートは単なる実験ラベルではなくなった&#34;&gt;Rust サポートは単なる実験ラベルではなくなった
&lt;/h2&gt;&lt;p&gt;Linux 7.0 では、Rust for Linux の状態がさらに安定した。
これはカーネルが大規模に Rust へ書き換えられるという意味ではなく、C が置き換えられるという意味でもない。&lt;/p&gt;
&lt;p&gt;より正確には、カーネル内で Rust を使うための基盤が、より正式な段階に入ったということだ。
今後、新しいドライバ、新しいサブシステム、または一部のセキュリティに敏感なコードでは、適した場面で Rust を選べる。
これは段階的な道筋である。
まずインターフェース、ビルド、ドキュメント、保守プロセスを安定させ、その後で具体的なコードを少しずつ増やしていく。&lt;/p&gt;
&lt;h2 id=&#34;古い機能の整理laptop_mode-の削除&#34;&gt;古い機能の整理：laptop_mode の削除
&lt;/h2&gt;&lt;p&gt;Linux 7.0 は &lt;code&gt;laptop_mode&lt;/code&gt; を削除した。
これは長い歴史を持つ省電力機能で、主に機械式ハードディスク時代のノートPCを対象に、ディスクのスピンアップを減らして電力を節約するものだった。&lt;/p&gt;
&lt;p&gt;現在のノートPCは SSD が主流であり、カーネル内のメモリ回収、ブロックデバイス、ファイルシステム経路も大きく変化している。
この古い仕組みを残し続けると保守コストが増え、テストカバレッジも理想的ではない。
削除により、古いコードが現代的な経路へ与える影響を減らせる。&lt;/p&gt;
&lt;h2 id=&#34;ai-関連キー新世代のキーボード操作に向けた準備&#34;&gt;AI 関連キー：新世代のキーボード操作に向けた準備
&lt;/h2&gt;&lt;p&gt;Linux 7.0 は、コンテキスト AI 操作向けにいくつかの新しい HID keycode を追加した。
たとえば、選択中の内容に対して操作を実行する、コンテキスト生成内容を挿入する、コンテキスト検索を開始するといった用途である。&lt;/p&gt;
&lt;p&gt;これはカーネルに AI 機能が組み込まれたという意味ではない。
将来のノートPCキーボードや周辺機器のために入力イベント定義を用意し、デスクトップ環境、アプリ、ベンダーツールがそれらのキーを認識できるようにするものに近い。
実際に何ができるかは、ディストリビューション、デスクトップ環境、アプリケーション層の統合に依存する。&lt;/p&gt;
&lt;h2 id=&#34;すぐにアップグレードすべきか&#34;&gt;すぐにアップグレードすべきか
&lt;/h2&gt;&lt;p&gt;ローリングリリース系のディストリビューションを使っている場合、Linux 7.0 は通常のシステム更新として自然に入ってくる可能性が高い。
Ubuntu 26.04 LTS のような新しいディストリビューションでは、7.0 がデフォルトまたは主要なカーネルバージョンとして採用されることもある。&lt;/p&gt;
&lt;p&gt;ただし、対象のマシンが本番環境、NAS、仮想化ホストである場合、またはクローズドソースドライバや独自カーネルモジュールに依存している場合は、バージョン番号が 7.0 になったという理由だけで手動アップグレードするのは勧めにくい。
より安全な進め方は次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ディストリビューションが正式なカーネルパッケージを提供するのを待つ。&lt;/li&gt;
&lt;li&gt;GPU、ネットワークカード、ZFS、VirtualBox、VMware、DKMS モジュールの互換性を確認する。&lt;/li&gt;
&lt;li&gt;テスト機またはスナップショット環境で先に検証する。&lt;/li&gt;
&lt;li&gt;7.0.x のポイントリリースでの修正状況を追う。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;kernel.org の v7.x ディレクトリを見る限り、7.0.1、7.0.2、7.0.3 はすでに順次公開されている。
手動でビルドまたはテストするなら、最初の 7.0 tarball だけを見るのではなく、最新の安定版 7.0.x を優先したほうがよい。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Linux Kernel 7.0 は、「メジャーバージョンが上がったからすべてを書き換えた」リリースではない。
むしろ、範囲の広い通常のカーネル更新に近い。
ファイルシステムはより信頼性を増し、swap と I/O 経路は引き続き最適化され、新しいハードウェア対応は前進し、Rust、&lt;code&gt;io_uring&lt;/code&gt; の分離、HID 入力定義も長期的な進化に必要な基盤を補っている。&lt;/p&gt;
&lt;p&gt;一般的なデスクトップユーザーにとって、最も実用的な変化はハードウェアサポート、グラフィックスドライバ、省電力、ファイルシステム修復にあるかもしれない。
サーバーや開発者にとっては、XFS のエラー報告、自己修復、&lt;code&gt;io_uring&lt;/code&gt; BPF フィルタリング、swap 最適化、新プラットフォーム対応がより注目に値する。&lt;/p&gt;
&lt;p&gt;参考ソース：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.kernel.org/pub/linux/kernel/v7.x/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;kernel.org：Linux kernel v7.x ディレクトリ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.spinics.net/lists/kernel/msg6151145.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux 7.0 リリースメールのミラー&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.phoronix.com/news/Linux-7.0-Released&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Phoronix：Linux 7.0 Released With New Hardware Support, Optimizations &amp;amp; Self-Healing XFS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.omgubuntu.co.uk/2026/04/linux-7-0-kernel-features&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OMG! Ubuntu：Linux 7.0 kernel brings faster swap &amp;amp; Rock Band 4 controller support&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Ubuntu 26.04 LTS の GPU とハードウェア対応アップデート: CUDA、ROCm、DPC&#43;&#43;、そして各種プラットフォームの変更</title>
        <link>https://knightli.com/ja/2026/04/26/ubuntu-26-04-lts-gpu-hardware-ai-updates/</link>
        <pubDate>Sun, 26 Apr 2026 19:35:57 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/26/ubuntu-26-04-lts-gpu-hardware-ai-updates/</guid>
        <description>&lt;p&gt;前の記事が &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; のデスクトップ全体像だったとすれば、こちらはハードウェアと計算基盤まわりの補足版です。今回の &lt;code&gt;26.04&lt;/code&gt; では、AI、GPU コンピューティング、プラットフォーム互換性に関わる項目が、メインアーカイブや正式サポートの範囲にかなり取り込まれています。&lt;/p&gt;
&lt;p&gt;先に結論を言うと、今回の注目点は単なるデスクトップやカーネルの更新ではなく、&lt;strong&gt;Ubuntu が Intel、NVIDIA、AMD の GPU コンピューティングスタックを、より体系的にディストリビューションへ取り込み始めたこと&lt;/strong&gt;です。&lt;/p&gt;
&lt;h2 id=&#34;1-intel-dpc-と関連コンポーネントが-ubuntu-archive-に追加&#34;&gt;1. Intel DPC++ と関連コンポーネントが Ubuntu Archive に追加
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;26.04&lt;/code&gt; から、Intel のオープンソース &lt;code&gt;oneAPI DPC++&lt;/code&gt; コンパイラが Ubuntu Archive から直接利用できるようになり、&lt;code&gt;SYCL&lt;/code&gt; コードのビルドに使えます。ランタイムには Intel GPU 向けアダプタも含まれます。&lt;/p&gt;
&lt;p&gt;あわせて、次の関連コンポーネントも Ubuntu リポジトリで利用可能になりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;oneDPL&lt;/code&gt;。DPC++ library として、より高生産性な開発 API を提供&lt;/li&gt;
&lt;li&gt;&lt;code&gt;oneDNN&lt;/code&gt;。&lt;code&gt;dpclang-6&lt;/code&gt; でビルドされており、Intel GPU 上で実行可能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、すでに &lt;code&gt;SYCL&lt;/code&gt;、ヘテロジニアスコンピューティング、あるいは Intel GPU 上の AI ワークロードを見ている人にとって、Ubuntu 上での導入経路がかなり素直になったということです。従来のように外部スタックを丸ごと別管理する必要が薄くなります。&lt;/p&gt;
&lt;p&gt;実運用上の注意点として、Ubuntu はこれらの Intel GPU 関連機能を使うにはユーザーが &lt;code&gt;render&lt;/code&gt; グループに属している必要があるとも明記しています。&lt;/p&gt;
&lt;h2 id=&#34;2-nvidia-cuda-toolkit-も-apt-で直接導入可能に&#34;&gt;2. NVIDIA CUDA toolkit も &lt;code&gt;apt&lt;/code&gt; で直接導入可能に
&lt;/h2&gt;&lt;p&gt;多くの開発者や運用担当者にとって、これは今回の更新の中でもかなり実用的な変更でしょう。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;26.04&lt;/code&gt; から、&lt;code&gt;NVIDIA CUDA toolkit&lt;/code&gt; を Ubuntu Archive から直接インストールできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install cuda-toolkit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意味があるのは、単にセットアップ手順が少し減るという話だけではありません。&lt;/p&gt;
&lt;p&gt;Ubuntu 向けにソフトウェアを配布する開発者にとっては、&lt;code&gt;CUDA runtime&lt;/code&gt; への依存関係を宣言するだけでよくなり、実際のインストールや互換性管理は Ubuntu 側がディストリビューションレベルで面倒を見る形になります。CUDA が Ubuntu 上でよりネイティブなシステム機能に近づき、別管理の外部スタックとして抱え込む必要が減るわけです。&lt;/p&gt;
&lt;h2 id=&#34;3-amd-rocm-710-が-universe-に追加&#34;&gt;3. AMD ROCm 7.1.0 が Universe に追加
&lt;/h2&gt;&lt;p&gt;AMD 側では、Ubuntu Universe に &lt;code&gt;ROCm 7.1.0&lt;/code&gt; が入りました。&lt;/p&gt;
&lt;p&gt;このライブラリ群が提供する主なものは次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AMD GPU 向け AI 学習・推論のバックエンド基盤&lt;/li&gt;
&lt;li&gt;機械学習および高性能計算向けのソフトウェア基盤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;さらに Canonical は、ROCm 関連コンポーネントを自社の CI/CD パイプラインで継続的に検証していると述べています。&lt;code&gt;autopkgtests&lt;/code&gt; に加えて、次のようなユーザー空間アプリケーションも対象です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;llama.cpp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pytorch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Blender&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Lemonade Server&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ここはかなり重要です。Ubuntu は単にパッケージを置いただけではなく、ROCm をメンテナブルなソフトウェアスタックとして扱い、継続的に検証していることを意味します。&lt;/p&gt;
&lt;h2 id=&#34;4-本当のポイントは-3-社の-gpu-エコシステムが同時に進んでいること&#34;&gt;4. 本当のポイントは 3 社の GPU エコシステムが同時に進んでいること
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DPC++&lt;/code&gt;、&lt;code&gt;CUDA&lt;/code&gt;、&lt;code&gt;ROCm&lt;/code&gt; を並べて見ると、&lt;code&gt;26.04&lt;/code&gt; の方向性がわかりやすくなります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel: &lt;code&gt;SYCL&lt;/code&gt; / &lt;code&gt;oneAPI&lt;/code&gt; 系の機能を公式リポジトリへ取り込む&lt;/li&gt;
&lt;li&gt;NVIDIA: &lt;code&gt;CUDA toolkit&lt;/code&gt; にディストリビューション管理の導入経路を与える&lt;/li&gt;
&lt;li&gt;AMD: &lt;code&gt;ROCm 7.1.0&lt;/code&gt; を Universe に入れ、継続的な検証も行う&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu 上で次のような用途に触れる人ほど、この更新の意味を感じやすいはずです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ローカル LLM 推論&lt;/li&gt;
&lt;li&gt;GPU アクセラレーションを使った学習やファインチューニング&lt;/li&gt;
&lt;li&gt;Blender、科学技術計算、HPC&lt;/li&gt;
&lt;li&gt;複数の GPU プラットフォームをまたぐ開発環境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要するに、Ubuntu は「GPU ドライバが入る OS」から一歩進み、&lt;strong&gt;AI と GPU コンピューティングに必要なユーザー空間ソフトウェアスタックもより包括的に担うディストリビューション&lt;/strong&gt;になりつつあります。&lt;/p&gt;
&lt;h2 id=&#34;5-nvidia-dynamic-boost-がデフォルトで有効化&#34;&gt;5. NVIDIA Dynamic Boost がデフォルトで有効化
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;25.04&lt;/code&gt; 以降、対応する NVIDIA 搭載ノート PC では &lt;code&gt;Dynamic Boost&lt;/code&gt; がデフォルトで有効になっています。&lt;/p&gt;
&lt;p&gt;仕組み自体はわかりやすく、システム負荷に応じて CPU と GPU の間で消費電力を動的に振り分けます。ゲーム用途では、必要なときに GPU へより多くの電力を回し、性能を引き上げる形になります。&lt;/p&gt;
&lt;p&gt;ただし有効になる条件は 2 つあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AC 電源に接続されていること&lt;/li&gt;
&lt;li&gt;GPU 負荷が十分に高いこと&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;バッテリー駆動時には動作しません。&lt;/p&gt;
&lt;h2 id=&#34;6-新しい-intel-内蔵-gpu--外付け-gpu-のサポートも前進&#34;&gt;6. 新しい Intel 内蔵 GPU / 外付け GPU のサポートも前進
&lt;/h2&gt;&lt;p&gt;Ubuntu は新しい Intel GPU への対応も引き続き進めています。主な対象は次の通りです。&lt;/p&gt;
&lt;p&gt;統合 GPU:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Intel Core Ultra Xe2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Core Ultra Xe3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ディスクリート GPU:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Intel Arc 5 B570&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc 5 B580&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc Pro B50&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc Pro B60&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc Pro B65&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intel Arc Pro B70&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらのデバイスに関連して、Ubuntu はすでに利用可能な機能も挙げています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel Embree を利用した GPU / CPU レイトレーシング描画性能の向上。&lt;code&gt;Blender 4.2+&lt;/code&gt; などで恩恵あり&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Battlemage&amp;rdquo; デバイスで &lt;code&gt;AVC&lt;/code&gt;、&lt;code&gt;JPEG&lt;/code&gt;、&lt;code&gt;HEVC&lt;/code&gt;、&lt;code&gt;AV1&lt;/code&gt; のハードウェアエンコードをサポート&lt;/li&gt;
&lt;li&gt;Intel Compute Runtime に新しい &lt;code&gt;CCS&lt;/code&gt; 最適化を導入&lt;/li&gt;
&lt;li&gt;Intel Xe GPU のデバッグサポートを有効化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;さらに後続の &lt;code&gt;25.10&lt;/code&gt; では、次のような機能強化も続きます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Linux kernel 6.17&lt;/code&gt; を通じて、開発コードネーム &lt;code&gt;Panther Lake&lt;/code&gt; の次世代 Intel クライアントプラットフォームを初期サポート&lt;/li&gt;
&lt;li&gt;IOMMU、PCIe サブシステム、マルチ GPU サポートの改善&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mesa 25.2.3&lt;/code&gt; で Battlemage と Panther Lake 向けに &lt;code&gt;VK_KHR_shader_bfloat16&lt;/code&gt; を有効化&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intel-media-driver 25.3.0&lt;/code&gt; で Panther Lake のデコードと &lt;code&gt;VP9&lt;/code&gt; エンコードを追加&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intel-compute-runtime 25.31&lt;/code&gt; で Level Zero の &lt;code&gt;USM&lt;/code&gt; プールやローカルデバイスメモリ上のイベント確保戦略を調整&lt;/li&gt;
&lt;li&gt;&lt;code&gt;level-zero 1.24&lt;/code&gt; と &lt;code&gt;level-zero-raytracing 1.1.0&lt;/code&gt; で仕様対応と RTAS 拡張を強化&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-nvidia-デスクトップのサスペンド復帰も安定化&#34;&gt;7. Nvidia デスクトップのサスペンド復帰も安定化
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、Ubuntu はプロプライエタリな &lt;code&gt;Nvidia&lt;/code&gt; ドライバでサスペンド復帰を有効化し、復帰時の破損やフリーズを減らしています。&lt;/p&gt;
&lt;p&gt;見た目に派手な変更ではありませんが、長時間稼働させるデスクトップや、サスペンドと復帰を繰り返す環境ではかなり大事な改善です。&lt;/p&gt;
&lt;h2 id=&#34;8-armraspberry-pirisc-vibm-z-でも要件変更がある&#34;&gt;8. ARM、Raspberry Pi、RISC-V、IBM Z でも要件変更がある
&lt;/h2&gt;&lt;p&gt;GPU ソフトウェアスタック以外にも、今回のリリースノートにはプラットフォーム面で覚えておきたい変更がいくつかあります。&lt;/p&gt;
&lt;h3 id=&#34;arm64-デスクトッププラットフォーム&#34;&gt;ARM64 デスクトッププラットフォーム
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、&lt;code&gt;ARM64&lt;/code&gt; 向け &lt;code&gt;linux-generic&lt;/code&gt; カーネルは、&lt;code&gt;UEFI&lt;/code&gt; で起動する ARM64 デスクトッププラットフォームへの互換性をより広く提供します。&lt;/p&gt;
&lt;h3 id=&#34;raspberry-pi-の新しいブートレイアウト&#34;&gt;Raspberry Pi の新しいブートレイアウト
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; で導入され、&lt;code&gt;26.04&lt;/code&gt; でも継続調整されている変更の 1 つが、Raspberry Pi 向けブートパーティションの新レイアウトです。&lt;/p&gt;
&lt;p&gt;目的はブート信頼性の向上で、新しく書き込まれたブート資産はいったん「テスト」され、問題がなければ新しい &amp;ldquo;known good&amp;rdquo; セットとして確定されます。&lt;/p&gt;
&lt;p&gt;特に覚えておきたいのはファームウェア日付の条件です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Pi 3 / 3+ / CM3+ / Zero 2W&lt;/code&gt;: 追加作業は不要。ブートファームウェアはイメージ自体に含まれる&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pi 4 / 400 / CM4&lt;/code&gt;: ブートファームウェアの日付が &lt;code&gt;2022-11-25&lt;/code&gt; 以前であってはならない&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pi 5 / 500 / CM5&lt;/code&gt;: ブートファームウェアの日付が &lt;code&gt;2025-02-11&lt;/code&gt; 以前であってはならない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;確認コマンドは次の通りです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpi-eeprom-update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ファームウェアが古く、かつ &lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; 以降を使っているなら、次のように更新できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpi-eeprom-update -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;raspberry-pi-デスクトップイメージは-desktop-minimal-ベースに&#34;&gt;Raspberry Pi デスクトップイメージは desktop-minimal ベースに
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、Raspberry Pi 向け Ubuntu Desktop イメージは完全な &lt;code&gt;desktop&lt;/code&gt; seed ではなく、&lt;code&gt;desktop-minimal&lt;/code&gt; ベースになりました。&lt;/p&gt;
&lt;p&gt;Ubuntu が示している利点は明確で、デフォルトのアプリセットが小さくなり、非圧縮イメージと実システムの両方で約 &lt;code&gt;777MB&lt;/code&gt; を節約できます。&lt;/p&gt;
&lt;p&gt;アップグレード後にこのデフォルトアプリ群をまとめて削除したい場合は、次を使えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt purge ubuntu-desktop --autoremove
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一部のアプリを残したいなら、先に &lt;code&gt;apt&lt;/code&gt; で手動インストール扱いにしておけば除外できます。&lt;/p&gt;
&lt;h3 id=&#34;raspberry-pi-の-swap-は-cloud-init-管理に&#34;&gt;Raspberry Pi の swap は cloud-init 管理に
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、Raspberry Pi デスクトップイメージ上の swap ファイル作成は &lt;code&gt;cloud-init&lt;/code&gt; が担当します。&lt;br&gt;
初回起動前に swap サイズを調整したい場合は、ブートパーティション上の &lt;code&gt;user-data&lt;/code&gt; を直接編集できます。&lt;/p&gt;
&lt;h3 id=&#34;risc-v-の要件が引き上げ&#34;&gt;RISC-V の要件が引き上げ
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から、&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; の &lt;code&gt;RISC-V&lt;/code&gt; 版は &lt;code&gt;RVA23S64 ISA profile&lt;/code&gt; を実装したハードウェアを必要とします。&lt;/p&gt;
&lt;p&gt;この要件を満たさないシステムでは &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; を動かせません。もし以前の &lt;code&gt;RVA20&lt;/code&gt; プロセッサコアを使ったボードを使っているなら、&lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; のサポートラインに留まる必要があります。&lt;/p&gt;
&lt;p&gt;Ubuntu の説明では、&lt;code&gt;2026 年 4 月&lt;/code&gt; 時点で実機の &lt;code&gt;RVA23S64&lt;/code&gt; ハードウェアはまだ存在しません。そのため、現在サポートされる唯一の環境は、実質的には &lt;code&gt;-cpu rva23s64&lt;/code&gt; を指定した &lt;code&gt;QEMU&lt;/code&gt; 仮想環境です。&lt;/p&gt;
&lt;h3 id=&#34;ibm-z-の最低要件は-z15-に&#34;&gt;IBM Z の最低要件は z15 に
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;26.04&lt;/code&gt; から、&lt;code&gt;s390x&lt;/code&gt; アーキテクチャの最低要件は &lt;code&gt;z15&lt;/code&gt; へ引き上げられました。&lt;/p&gt;
&lt;p&gt;つまり次のようになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;z14&lt;/code&gt; / &lt;code&gt;LinuxONE II&lt;/code&gt; およびそれ以前のシステムでは &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; をインストールできない&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z15&lt;/code&gt; / &lt;code&gt;LinuxONE III&lt;/code&gt; 以降では性能向上が期待できる&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;9-この内容を先に読むべき人&#34;&gt;9. この内容を先に読むべき人
&lt;/h2&gt;&lt;p&gt;次のようなケースでは、この文章のほうがデスクトップ概要より優先度が高いはずです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 上で &lt;code&gt;CUDA&lt;/code&gt;、&lt;code&gt;ROCm&lt;/code&gt;、&lt;code&gt;SYCL&lt;/code&gt;、ローカル AI 推論を使う&lt;/li&gt;
&lt;li&gt;Intel、NVIDIA、AMD の GPU を使った開発や計算処理を行う&lt;/li&gt;
&lt;li&gt;Raspberry Pi、ARM64、RISC-V、IBM Z など、標準的な x86 以外のプラットフォームを運用している&lt;/li&gt;
&lt;li&gt;アップグレード後のリポジトリ可用性、ドライバ挙動、ランタイム、プラットフォーム要件に敏感である&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;10-ひと言でまとめると&#34;&gt;10. ひと言でまとめると
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; のハードウェアと AI スタック面での要点は、どこか 1 社の GPU だけが大きく強化されたことではありません。&lt;strong&gt;Intel の DPC++、NVIDIA の CUDA、AMD の ROCm が、より公式に、よりリポジトリ内で、より保守しやすい形で Ubuntu エコシステムへ入ってきたこと&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;これまで Ubuntu を「まず OS を入れて、その上に GPU 環境は自分で組むもの」と見ていたなら、&lt;code&gt;26.04&lt;/code&gt; は AI やヘテロジニアスコンピューティングのワークロードを、ディストリビューション側がより積極的に支える方向へ進み始めた版だと言えます。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ubuntu 26.04 LTS リリース：GNOME 50 と Linux 7.0 でデスクトップが大きく更新</title>
        <link>https://knightli.com/ja/2026/04/26/ubuntu-26-04-lts-release-notes/</link>
        <pubDate>Sun, 26 Apr 2026 16:10:25 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/26/ubuntu-26-04-lts-release-notes/</guid>
        <description>&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; は &lt;strong&gt;2026 年 4 月 23 日&lt;/strong&gt; に公開され、コードネームは &lt;code&gt;Resolute Raccoon&lt;/code&gt; です。今回は新しい長期サポート版で、標準サポートは &lt;strong&gt;2031 年 4 月&lt;/strong&gt; まで続きます。&lt;code&gt;Ubuntu Pro&lt;/code&gt; を使う場合は、セキュリティメンテナンスを &lt;strong&gt;10 年&lt;/strong&gt; まで延長できます。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; からアップグレードする場合、この版は単なる定例更新ではありません。&lt;code&gt;24.10&lt;/code&gt;、&lt;code&gt;25.04&lt;/code&gt;、&lt;code&gt;25.10&lt;/code&gt; の主な変化もまとめて取り込んでいます。なので、この記事は「アップグレード前に何を見ておくべきか」を素早く把握するための要約として読むのがいちばん向いています。&lt;/p&gt;
&lt;p&gt;今回のリリースで特に重要な更新だけを先に押さえるなら、まず次の 4 点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GNOME 50&lt;/code&gt; が LTS に入り、デスクトップ体験と表示まわりのサポートが一段進みました&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Linux kernel 7.0&lt;/code&gt; が新しい基準になり、ハードウェア対応と今後の保守基盤が更新されました&lt;/li&gt;
&lt;li&gt;Ubuntu Desktop は正式に全面 &lt;code&gt;Wayland&lt;/code&gt; へ移行しました&lt;/li&gt;
&lt;li&gt;既定アプリ群がまとめて更新され、&lt;code&gt;Firefox&lt;/code&gt;、&lt;code&gt;LibreOffice&lt;/code&gt;、&lt;code&gt;Thunderbird&lt;/code&gt;、&lt;code&gt;GIMP&lt;/code&gt; が大きく新しくなりました&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-まずは重要な更新を確認&#34;&gt;1. まずは重要な更新を確認
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; は長期サポート版で、標準サポートは &lt;code&gt;2031-04&lt;/code&gt; までです&lt;/li&gt;
&lt;li&gt;デスクトップ環境は &lt;code&gt;GNOME 50&lt;/code&gt; に更新されました&lt;/li&gt;
&lt;li&gt;汎用カーネルは &lt;code&gt;Linux kernel 7.0&lt;/code&gt; に更新されました&lt;/li&gt;
&lt;li&gt;Ubuntu Desktop のセッションは &lt;code&gt;Wayland&lt;/code&gt; のみになりました&lt;/li&gt;
&lt;li&gt;古いバージョンから &lt;code&gt;26.04&lt;/code&gt; へ大きく飛び越して直接アップグレードすることはできません&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まだ &lt;code&gt;Ubuntu 22.04 LTS&lt;/code&gt; または &lt;code&gt;25.04&lt;/code&gt; を使っている場合、公式にはまず &lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; か &lt;code&gt;25.10&lt;/code&gt; へ上げてから、さらに &lt;code&gt;26.04 LTS&lt;/code&gt; へ進むことが推奨されています。&lt;/p&gt;
&lt;h2 id=&#34;2-最大の変化その-1gnome-50-が-lts-に入った&#34;&gt;2. 最大の変化その 1：GNOME 50 が LTS に入った
&lt;/h2&gt;&lt;p&gt;今回のデスクトップ側で最もわかりやすい変化は、&lt;code&gt;GNOME 50&lt;/code&gt; がついに LTS に入ったことです。一般ユーザーにとって価値があるのは、単発の目立つ新機能というより、デスクトップ全体の使い勝手がまとめて良くなった点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小型画面や狭いウィンドウでの使いやすさが向上&lt;/li&gt;
&lt;li&gt;通知をアプリ単位でグループ化可能&lt;/li&gt;
&lt;li&gt;HDR、VRR、分数スケーリングなど表示関連の改善が継続&lt;/li&gt;
&lt;li&gt;リモートデスクトップ、Wayland、NVIDIA ドライバ環境での滑らかさと安定性が向上&lt;/li&gt;
&lt;li&gt;アクセシビリティ対応がさらに強化され、&lt;code&gt;Orca&lt;/code&gt; スクリーンリーダーも目立つ更新が入っています&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu 独自の実用的な改善もあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GNOME Shell のグローバル検索から利用可能な &lt;code&gt;snap&lt;/code&gt; アプリを直接探せる&lt;/li&gt;
&lt;li&gt;検索からそのままウェブ検索を始められる&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Yaru&lt;/code&gt; テーマは upstream GNOME の見た目にさらに近づいた&lt;/li&gt;
&lt;li&gt;&lt;code&gt;snap&lt;/code&gt; アプリの権限、ファイルアクセス、ドラッグアンドドロップの体験がより自然になった&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;普段デスクトップ版を使っているなら、この世代の LTS のポイントは「見た目が大きく変わった」ことではなく、以前からあった細かな引っかかりがまとめて減ったことにあります。&lt;/p&gt;
&lt;h2 id=&#34;3-最大の変化その-2既定アプリが広く刷新された&#34;&gt;3. 最大の変化その 2：既定アプリが広く刷新された
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;24.04 LTS&lt;/code&gt; と比べると、&lt;code&gt;26.04 LTS&lt;/code&gt; に含まれる標準アプリはかなり大きく更新されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Firefox&lt;/code&gt; は &lt;code&gt;150&lt;/code&gt; へ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LibreOffice&lt;/code&gt; は &lt;code&gt;24.2&lt;/code&gt; から &lt;code&gt;25.8&lt;/code&gt; へ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Thunderbird&lt;/code&gt; は &lt;code&gt;140&lt;/code&gt; へ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GIMP&lt;/code&gt; は &lt;code&gt;2.10&lt;/code&gt; から &lt;code&gt;3.2&lt;/code&gt; へ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;さらに、日常利用で影響の大きい置き換えもあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PDF ビューアは &lt;code&gt;Evince&lt;/code&gt; から &lt;code&gt;Papers&lt;/code&gt; に変更&lt;/li&gt;
&lt;li&gt;画像ビューアは &lt;code&gt;Loupe&lt;/code&gt; に変更&lt;/li&gt;
&lt;li&gt;ターミナルは &lt;code&gt;Ptyxis&lt;/code&gt; に変更&lt;/li&gt;
&lt;li&gt;システムモニターは &lt;code&gt;Resources&lt;/code&gt; に変更&lt;/li&gt;
&lt;li&gt;既定の動画プレーヤーは &lt;code&gt;Showtime&lt;/code&gt; に変更&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こうした変化から見える方向性は明確です。Ubuntu は &lt;code&gt;GTK4&lt;/code&gt;、&lt;code&gt;libadwaita&lt;/code&gt;、そして一部では Rust で再実装された新世代の GNOME アプリ群へ、より本格的に寄せています。&lt;/p&gt;
&lt;h2 id=&#34;4-最大の変化その-3wayland-が唯一のデスクトップセッションになった&#34;&gt;4. 最大の変化その 3：Wayland が唯一のデスクトップセッションになった
&lt;/h2&gt;&lt;p&gt;これは長く Ubuntu を使ってきた人ほど気になる変更です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;25.10&lt;/code&gt; から始まっていた流れが、&lt;code&gt;26.04 LTS&lt;/code&gt; で正式に定着しました。Ubuntu Desktop は &lt;code&gt;Wayland&lt;/code&gt; バックエンドのみで動作し、&lt;code&gt;GNOME Shell&lt;/code&gt; はもはや &lt;code&gt;X.org&lt;/code&gt; セッションとしては動きません。&lt;/p&gt;
&lt;p&gt;もちろん、これで古いアプリが全部使えなくなるわけではありません。公式リリースノートでも、&lt;code&gt;X.org&lt;/code&gt; 向けアプリは &lt;code&gt;XWayland&lt;/code&gt; 互換レイヤー経由で引き続き動かせると明記されています。ただし、古い GPU ドライバや一部のリモートデスクトップ手法、録画ツール、入力メソッドの細かな挙動に依存しているワークフローなら、アップグレード前の確認はやっておいたほうが安心です。&lt;/p&gt;
&lt;h2 id=&#34;5-最大の変化その-4linux-kernel-70-と低層スタックもまとめて更新&#34;&gt;5. 最大の変化その 4：Linux kernel 7.0 と低層スタックもまとめて更新
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; の GA generic スタックは &lt;code&gt;Linux 6.8&lt;/code&gt; から &lt;code&gt;Linux 7.0&lt;/code&gt; に上がり、HWE スタックも &lt;code&gt;7.0&lt;/code&gt; に統一されました。&lt;/p&gt;
&lt;p&gt;公式が触れている低層側の変更の中で、一般ユーザーや運用担当に関係が大きいのは次のあたりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;デスクトップ版とサーバー版の両方で crash dump が既定で有効&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sched_ext&lt;/code&gt; により、開発者が eBPF を使ってスケジューリングポリシーを実装できる新しい拡張モデルが入った&lt;/li&gt;
&lt;li&gt;&lt;code&gt;linux-lowlatency&lt;/code&gt; バイナリパッケージは廃止され、&lt;code&gt;linux-generic&lt;/code&gt; とユーザー空間の &lt;code&gt;lowlatency-kernel&lt;/code&gt; パッケージによる低レイテンシ調整へ移行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;amd64v3&lt;/code&gt; アーキテクチャ変種は利用可能だが、既定では opt-in のまま&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比較的新しいマシンを使っているなら、&lt;code&gt;amd64v3&lt;/code&gt; は気にしておいてよい項目です。公式が示している有効化方法は次のとおりです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;APT::Architecture-Variants &amp;#34;amd64v3&amp;#34;;&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/apt/apt.conf.d/99enable-amd64v3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ただし、これは自動では有効になりません。Ubuntu は引き続き互換性を最優先にしています。&lt;/p&gt;
&lt;h2 id=&#34;6-ハードウェア要件と導入の目安&#34;&gt;6. ハードウェア要件と導入の目安
&lt;/h2&gt;&lt;p&gt;Ubuntu Desktop 26.04 LTS に対して公式が示している推奨ラインは次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;2 GHz&lt;/code&gt; のデュアルコア CPU 以上&lt;/li&gt;
&lt;li&gt;&lt;code&gt;6 GB RAM&lt;/code&gt; 以上&lt;/li&gt;
&lt;li&gt;&lt;code&gt;25 GB&lt;/code&gt; 以上の空きストレージ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;マシンの性能がやや低めなら、公式には &lt;code&gt;Xubuntu&lt;/code&gt; や &lt;code&gt;Lubuntu&lt;/code&gt; のようなフレーバーも検討するよう案内されています。&lt;br&gt;
サーバー版の下限はもっと低く、ドキュメントでは &lt;code&gt;1.5 GB RAM&lt;/code&gt; と &lt;code&gt;4 GB&lt;/code&gt; ストレージから始められるとされていますが、実際には動かすサービスの負荷次第です。&lt;/p&gt;
&lt;h2 id=&#34;7-どんな人に優先してアップグレード向きか&#34;&gt;7. どんな人に優先してアップグレード向きか
&lt;/h2&gt;&lt;p&gt;すでに &lt;code&gt;24.04 LTS&lt;/code&gt; を使っていて、次のようなものを求めているなら、&lt;code&gt;26.04 LTS&lt;/code&gt; はかなり有力です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小さなパッチではなく、一世代分まとめて更新されたデスクトップスタック&lt;/li&gt;
&lt;li&gt;より成熟した &lt;code&gt;Wayland&lt;/code&gt; と表示サポート&lt;/li&gt;
&lt;li&gt;新しくなった既定アプリ群&lt;/li&gt;
&lt;li&gt;新しいカーネルと、より長い今後のサポート期間&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一方で、古い &lt;code&gt;X11&lt;/code&gt; ワークフローや特殊なドライバ、独自のデスクトップ拡張に強く依存している場合、あるいは本番環境で変更に非常に慎重である場合は、アップグレード前に互換性確認を一度通しておくのが無難です。&lt;/p&gt;
&lt;h2 id=&#34;8-ひとことでまとめると&#34;&gt;8. ひとことでまとめると
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; の価値は、目立つ単独機能ひとつにあるわけではありません。ここ 2 年のデスクトップ、カーネル、アプリ、互換性の進化を、新しい LTS の基準に一気にまとめて載せたところにあります。&lt;/p&gt;
&lt;p&gt;最短で言うなら、&lt;strong&gt;この版は「全体として新しくなり、全体として安定した」Ubuntu LTS であり、ひとつの派手な売りだけで成り立っている版ではない&lt;/strong&gt;、ということです。&lt;/p&gt;
&lt;h2 id=&#34;関連リンク&#34;&gt;関連リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;公式リリースノート：&lt;code&gt;https://documentation.ubuntu.com/release-notes/26.04/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;LTS ユーザー向け要約：&lt;code&gt;https://documentation.ubuntu.com/release-notes/26.04/summary-for-lts-users/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>nftables フレームワークを理解する：テーブル、チェーン、ルール、セット</title>
        <link>https://knightli.com/ja/2026/04/18/nftables-framework-concepts/</link>
        <pubDate>Sat, 18 Apr 2026 10:31:12 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/18/nftables-framework-concepts/</guid>
        <description>&lt;p&gt;&lt;code&gt;nftables&lt;/code&gt; を学び始めると、ついコマンドの細部に入りがちです。ルールをどう追加するか、handle をどう削除するか、ポートマッチをどう書くか。もちろんコマンドは重要ですが、先にフレームワークの概念を整理しておくと、ルールの読解、問題調査、ルールセット設計がかなり楽になります。&lt;/p&gt;
&lt;p&gt;nftables は、次のような階層構造として理解できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;table&lt;/code&gt; はルール空間を分離する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;family&lt;/code&gt; はルールが扱うネットワークプロトコルを決める。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chain&lt;/code&gt; はルールがどの段階で実行されるかを決める。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rule&lt;/code&gt; は具体的なマッチ条件とアクションを持つ。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set&lt;/code&gt;、&lt;code&gt;map&lt;/code&gt;、&lt;code&gt;verdict map&lt;/code&gt; は重複ルールを減らし、ルールセットを保守しやすくする。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下では、概念を階層ごとに整理します。&lt;/p&gt;
&lt;h2 id=&#34;tableルールの名前空間&#34;&gt;table：ルールの名前空間
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;table&lt;/code&gt; は nftables で最も外側にあるルールコンテナです。異なる table は互いに分離されるため、関連するルールを同じ table にまとめるのが一般的です。&lt;/p&gt;
&lt;p&gt;たとえば、フィルタリングルール、NAT ルール、独自のテスト用ルールを分けて置けます。こうすると境界が明確になります。デバッグ時にはどのルール群を変更しているかが分かりやすく、クリーンアップ時にも無関係な内容を誤って削除しにくくなります。&lt;/p&gt;
&lt;p&gt;table 自体はパケットを直接処理しません。実際にパケット処理に関わるのは、table の中にある chain と rule です。&lt;/p&gt;
&lt;h2 id=&#34;familyルールが対象にするプロトコル&#34;&gt;family：ルールが対象にするプロトコル
&lt;/h2&gt;&lt;p&gt;table を作成するときは &lt;code&gt;family&lt;/code&gt; を選びます。これは、その table 内のルールがどの種類のパケットに適用されるかを決めます。&lt;/p&gt;
&lt;p&gt;代表的な family は次のように理解できます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip&lt;/code&gt;：IPv4 のみを処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ip6&lt;/code&gt;：IPv6 のみを処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inet&lt;/code&gt;：IPv4 と IPv6 の両方を処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arp&lt;/code&gt;：ARP を処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bridge&lt;/code&gt;：ブリッジ層のトラフィックを処理する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;netdev&lt;/code&gt;：ネットワークデバイス入口に近く、より早い段階でトラフィックを処理する用途に向く。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常のファイアウォールルールでは、&lt;code&gt;inet&lt;/code&gt; がよく使われます。IPv4 と IPv6 のルールを同じ table に置けるため、似た構造のルールを 2 セット維持する必要がなくなります。&lt;/p&gt;
&lt;h2 id=&#34;chainルールが実行される場所&#34;&gt;chain：ルールが実行される場所
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;chain&lt;/code&gt; は rule のリストです。パケットがある hook に入ると、chain 内のルールを順番に通過します。&lt;/p&gt;
&lt;p&gt;chain は大きく 2 種類に分けられます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;基本 chain：カーネルのネットワーク経路上の hook に接続され、パケット処理の流れから直接呼び出される。&lt;/li&gt;
&lt;li&gt;通常 chain：hook には直接接続されず、他のルールから jump されて呼び出される。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;基本 chain では、通常いくつかの重要な属性を指定します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;：この chain の用途。たとえば &lt;code&gt;filter&lt;/code&gt;、&lt;code&gt;nat&lt;/code&gt;、&lt;code&gt;route&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hook&lt;/code&gt;：接続する処理段階。たとえば &lt;code&gt;prerouting&lt;/code&gt;、&lt;code&gt;input&lt;/code&gt;、&lt;code&gt;forward&lt;/code&gt;、&lt;code&gt;output&lt;/code&gt;、&lt;code&gt;postrouting&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;priority&lt;/code&gt;：同じ hook に複数の chain があるとき、どれを先に実行するか。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;policy&lt;/code&gt;：どのルールにもマッチしなかった場合のデフォルト動作。一般的には &lt;code&gt;accept&lt;/code&gt; または &lt;code&gt;drop&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;chain を理解するうえで重要なのは、ルールは「どこに書いても同じように効く」わけではないという点です。同じルールでも、&lt;code&gt;input&lt;/code&gt;、&lt;code&gt;forward&lt;/code&gt;、&lt;code&gt;output&lt;/code&gt; のどこに置くかで意味はまったく変わります。&lt;/p&gt;
&lt;h2 id=&#34;ruleマッチ条件とアクション&#34;&gt;rule：マッチ条件とアクション
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rule&lt;/code&gt; は、nftables が実際に判断を行う場所です。通常は 2 つの部分で構成されます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;マッチ条件：送信元 IP、宛先 IP、プロトコル、ポート、インターフェイス、接続状態など。&lt;/li&gt;
&lt;li&gt;アクション：&lt;code&gt;accept&lt;/code&gt;、&lt;code&gt;drop&lt;/code&gt;、&lt;code&gt;reject&lt;/code&gt;、&lt;code&gt;counter&lt;/code&gt;、&lt;code&gt;jump&lt;/code&gt;、&lt;code&gt;return&lt;/code&gt; など。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ルールは順番に評価されます。パケットが処理を終了させるアクションにマッチすると、その後ろのルールは実行されません。マッチしなければ、chain の終端またはデフォルトポリシーに到達するまで処理が続きます。&lt;/p&gt;
&lt;p&gt;そのため、ルールの順序は重要です。より具体的なルールは、通常より広い条件のルールより前に置く必要があります。そうしないと、実行される機会がない場合があります。&lt;/p&gt;
&lt;h2 id=&#34;set値の集合をまとめる&#34;&gt;set：値の集合をまとめる
&lt;/h2&gt;&lt;p&gt;多数の IP、ポート、インターフェイスをマッチしたい場合、ルールを大量に並べると保守しにくくなります。&lt;code&gt;set&lt;/code&gt; は、同じ型の値をひとまとめに管理するための仕組みです。&lt;/p&gt;
&lt;p&gt;たとえば、信頼する IP の集合、拒否したいポートの集合、帯域制限したいアドレスの集合を set に入れられます。ルール側では、ある値がその set に含まれるかどうかだけを判定すれば済みます。&lt;/p&gt;
&lt;p&gt;set の利点は次のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ルール数を減らせる。&lt;/li&gt;
&lt;li&gt;可読性が上がる。&lt;/li&gt;
&lt;li&gt;後から要素を追加・削除しやすい。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ルールの中に同じような条件が大量に出てくる場合は、set の利用を検討するタイミングです。&lt;/p&gt;
&lt;h2 id=&#34;mapマッチした値を結果に変換する&#34;&gt;map：マッチした値を結果に変換する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;map&lt;/code&gt; は「参照表」として理解できます。入力値に応じて結果を返します。&lt;/p&gt;
&lt;p&gt;たとえば、ポートごとに異なる mark を返す、アドレスごとに異なる処理パラメータを返す、といった表現ができます。多くの if/else 風ルールを書くより、map のほうが集中管理しやすく、保守もしやすくなります。&lt;/p&gt;
&lt;p&gt;set が気にするのは「集合に含まれるかどうか」です。一方で map が気にするのは「この値に対応する結果は何か」です。&lt;/p&gt;
&lt;h2 id=&#34;verdict-mapマッチした値をアクションに変換する&#34;&gt;verdict map：マッチした値をアクションに変換する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;verdict map&lt;/code&gt; は map の重要な使い方の 1 つです。マッチした値を verdict、つまりルールのアクションに変換します。&lt;/p&gt;
&lt;p&gt;たとえば、IP 範囲ごとに &lt;code&gt;accept&lt;/code&gt;、&lt;code&gt;drop&lt;/code&gt;、または別 chain への jump を対応させられます。これにより、多くの分岐判断を 1 つの構造に圧縮できます。&lt;/p&gt;
&lt;p&gt;ルールセットが複雑になってきたとき、verdict map はとても便利です。重複ルールを減らし、長い条件分岐の列ではなく、表に近い形でポリシーを表現できます。&lt;/p&gt;
&lt;h2 id=&#34;概念からルール設計を考える&#34;&gt;概念からルール設計を考える
&lt;/h2&gt;&lt;p&gt;nftables ルールを設計するときは、次の順序で考えると整理しやすくなります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まずルールが属する &lt;code&gt;family&lt;/code&gt; を決める。&lt;/li&gt;
&lt;li&gt;次に、どの &lt;code&gt;table&lt;/code&gt; に入れるかを決める。&lt;/li&gt;
&lt;li&gt;適切な &lt;code&gt;hook&lt;/code&gt; と &lt;code&gt;chain&lt;/code&gt; を選ぶ。&lt;/li&gt;
&lt;li&gt;具体的な &lt;code&gt;rule&lt;/code&gt; を書く。&lt;/li&gt;
&lt;li&gt;重複条件が多い場合は、&lt;code&gt;set&lt;/code&gt;、&lt;code&gt;map&lt;/code&gt;、&lt;code&gt;verdict map&lt;/code&gt; を導入する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;この順序で書くと、ルールは保守しやすく、問題も切り分けやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;nftables の概念は複雑ではありませんが、階層が重要です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;table はルールの境界を管理する。&lt;/li&gt;
&lt;li&gt;family はプロトコル範囲を管理する。&lt;/li&gt;
&lt;li&gt;chain は実行位置を管理する。&lt;/li&gt;
&lt;li&gt;rule はマッチとアクションを管理する。&lt;/li&gt;
&lt;li&gt;set、map、verdict map は複雑さを管理する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まずこれらの概念を理解してから具体的なコマンドを見るほうが、コマンドを直接暗記するより安定します。特にルールセットが増えてきたあとでは、概念が明確だと、問題がプロトコル範囲、実行段階、ルール順序、またはマッチ条件そのもののどこにあるのかを判断しやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/10/html/configuring_firewalls_and_packet_filters/concepts-in-the-nftables-framework&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/10/html/configuring_firewalls_and_packet_filters/concepts-in-the-nftables-framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>nftables クイック入門：テーブル、チェーン、ルールとよく使う操作</title>
        <link>https://knightli.com/ja/2026/04/18/nftables-quick-start/</link>
        <pubDate>Sat, 18 Apr 2026 10:22:07 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/18/nftables-quick-start/</guid>
        <description>&lt;p&gt;&lt;code&gt;nftables&lt;/code&gt; は、Linux でよく使われるパケットフィルタリングとファイアウォールルール管理の仕組みです。端末の通信制御、トラフィック統計、ポートマッチ、簡単な帯域制限だけを行うなら、最初からルール体系全体を覚える必要はありません。まずは次の 3 つを押さえれば十分です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;table&lt;/code&gt;：ルールを入れるコンテナ。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chain&lt;/code&gt;：ルールが評価される場所。通常は特定の hook に接続します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rule&lt;/code&gt;：実際のマッチ条件とアクション。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下では、まずテスト環境で試しやすい最小構成の流れを整理します。&lt;/p&gt;
&lt;h2 id=&#34;基本構成&#34;&gt;基本構成
&lt;/h2&gt;&lt;p&gt;先にいくつか変数を用意します。以降のコマンドで再利用します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;table&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;customtable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;custom_control
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;drop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;192.168.18.251
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;mac&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;00:00:01:02:03:04
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;IPv4 と IPv6 の両方を扱える &lt;code&gt;inet&lt;/code&gt; table を作成します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add table inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次に、&lt;code&gt;forward&lt;/code&gt; 段階に接続する chain を作成します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; filter hook forward priority 0&lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ここで、&lt;code&gt;type filter&lt;/code&gt; はフィルタリング用のルールであることを示し、&lt;code&gt;hook forward&lt;/code&gt; は転送されるパケットを処理することを示します。&lt;/p&gt;
&lt;h2 id=&#34;よく使うマッチ方法&#34;&gt;よく使うマッチ方法
&lt;/h2&gt;&lt;p&gt;送信元 IP でマッチします。通常はアップロード方向の制御として考えられます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip saddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;宛先 IP でマッチします。通常はダウンロード方向の制御として考えられます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip daddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;MAC アドレスでマッチする場合、&lt;code&gt;ether saddr&lt;/code&gt; で上り方向を制御できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ether saddr &lt;span class=&#34;nv&#34;&gt;$mac&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ブリッジ、転送、アドレス変換を経由するネットワークでは、下りパケットを宛先 MAC で安定してフィルタできない場合があります。端末の通信制御を行うときは、まず &lt;code&gt;ether saddr&lt;/code&gt; または IP ベースのルールから検証するのが安全です。&lt;/p&gt;
&lt;p&gt;ポートでマッチする場合、TCP と UDP をまとめて対象にできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; tcp, udp &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; dport &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ポート範囲をマッチしたい場合は、比較式を使えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; tcp dport &lt;span class=&#34;se&#34;&gt;\&amp;gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;単一端末の通信量を集計する&#34;&gt;単一端末の通信量を集計する
&lt;/h2&gt;&lt;p&gt;特定 IP の上りと下りの通信量を集計したいだけなら、&lt;code&gt;counter return&lt;/code&gt; を使えます。マッチしたらカウンターを記録して戻るため、後続に他の統計ルールがある場合でも余計なマッチ処理を減らせます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip saddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; counter &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip daddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; counter &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;統計結果を確認します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;各ルールの &lt;code&gt;handle&lt;/code&gt; を確認したい場合は、&lt;code&gt;-a&lt;/code&gt; を付けます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft -a list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;handle&lt;/code&gt; は重要です。nftables で単一ルールを削除するときは、通常この値で対象を指定します。&lt;/p&gt;
&lt;h2 id=&#34;簡単な帯域制限&#34;&gt;簡単な帯域制限
&lt;/h2&gt;&lt;p&gt;帯域制限には &lt;code&gt;limit rate over&lt;/code&gt; を使えます。たとえば、MAC アドレスごとに指定速度を超えた通信を制限します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;rate&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mbytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ether saddr &lt;span class=&#34;nv&#34;&gt;$mac&lt;/span&gt; limit rate over &lt;span class=&#34;nv&#34;&gt;$rate&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$unit&lt;/span&gt;/second drop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ここでの &lt;code&gt;mbytes&lt;/code&gt;、&lt;code&gt;kbytes&lt;/code&gt; は、日常的な M、K の単位として理解できます。手動で 8 倍換算する必要はありません。実際に使うときは、まず緩めの値でテストし、マッチ方向と効果を確認してから調整するのが安全です。&lt;/p&gt;
&lt;h2 id=&#34;ルールの削除と整理&#34;&gt;ルールの削除と整理
&lt;/h2&gt;&lt;p&gt;まず &lt;code&gt;handle&lt;/code&gt; 付きでルールを表示します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft -a list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;次に handle を指定してルールを削除します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; handle &amp;lt;handle&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;chain を空にします。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft flush chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;chain を削除します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;table 全体を削除します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete table inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;日常的なデバッグでは、自分で作成した table だけを整理するのがおすすめです。システムや他のサービスが自動生成した table を直接変更しないほうが、ルールを書き間違えた場合でも戻しやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;使い方のポイント&#34;&gt;使い方のポイント
&lt;/h2&gt;&lt;p&gt;nftables を使うときは、まず独立した table と chain を自分で作成すると扱いやすくなります。利点は次の 2 つです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;システム既存のルールと混ざりにくい。&lt;/li&gt;
&lt;li&gt;デバッグ、flush、削除を安全に行いやすい。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ルールを書いたあとは、必ず &lt;code&gt;nft list chain&lt;/code&gt; で実際のマッチ状況を確認します。特に MAC、インターフェイス、ポート、帯域制限のルールは、デバイス、ブリッジ構成、システムバージョンによって挙動が変わることがあります。複雑なルールを一度に書くより、まず小さい範囲で試すほうが安全です。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.right.com.cn/forum/thread-8369750-1-1.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.right.com.cn/forum/thread-8369750-1-1.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Ollama モデルのデフォルトの保存場所と移行方法 (C ドライブがいっぱいになるのを防ぐため)</title>
        <link>https://knightli.com/ja/2026/04/06/ollama-model-storage-path-and-migration/</link>
        <pubDate>Mon, 06 Apr 2026 09:38:00 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/06/ollama-model-storage-path-and-migration/</guid>
        <description>&lt;p&gt;大規模なモデルをローカルで実行する場合、多くの場合、システム ディスクが最初に爆発しやすくなります。 Ollama は、デフォルトでモデルをユーザー ディレクトリまたはシステム ディレクトリにダウンロードします。事前にパスを計画しておかないと、C ドライブがすぐにいっぱいになってしまいます。&lt;/p&gt;
&lt;h2 id=&#34;ollama-共通のデフォルト-モデル-ディレクトリ&#34;&gt;Ollama 共通のデフォルト モデル ディレクトリ
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Windows: &lt;code&gt;C:\Users\&amp;lt;用户名&amp;gt;\.ollama\models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS：&lt;code&gt;~/.ollama/models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux: &lt;code&gt;/usr/share/ollama/.ollama/models&lt;/code&gt; (一部インストール方法が異なる場合があります)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;windows-モデル-ディレクトリをシステム以外のディスクに移行します&#34;&gt;Windows: モデル ディレクトリをシステム以外のディスクに移行します。
&lt;/h2&gt;&lt;p&gt;モデル ディレクトリを &lt;code&gt;D:\OllamaModels&lt;/code&gt; などに移行することをお勧めします。主な方法は、システム環境変数 &lt;code&gt;OLLAMA_MODELS&lt;/code&gt; を設定することです。&lt;/p&gt;
&lt;h2 id=&#34;1-新しいターゲットディレクトリを作成します&#34;&gt;1. 新しいターゲットディレクトリを作成します
&lt;/h2&gt;&lt;p&gt;たとえば、最初に &lt;code&gt;D:\OllamaModels&lt;/code&gt; を作成します。&lt;/p&gt;
&lt;h2 id=&#34;2-システム環境変数を構成する&#34;&gt;2. システム環境変数を構成する
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;変数名: &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;変数値: &lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは、「システムのプロパティ -&amp;gt; 詳細設定 -&amp;gt; 環境変数」で追加することも、コマンド ライン (管理者 PowerShell) を使用して設定することもできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;System.Environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetEnvironmentVariable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;OLLAMA_MODELS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\OllamaModels&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Machine&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-ollama-を再起動します-またはシステムを再起動します&#34;&gt;3. Ollama を再起動します (またはシステムを再起動します)。
&lt;/h2&gt;&lt;p&gt;環境変数が有効になったら、Ollama サービス/アプリケーションを再起動します。有効になったかどうかわからない場合は、コンピュータを直接再起動するのが最も安全です。&lt;/p&gt;
&lt;h2 id=&#34;4-新しいディレクトリが有効かどうかを確認します&#34;&gt;4. 新しいディレクトリが有効かどうかを確認します
&lt;/h2&gt;&lt;p&gt;モデルをダウンロードまたはプルした後、新しいファイルが &lt;code&gt;D:\OllamaModels&lt;/code&gt; の下に表示されるかどうかを確認します。&lt;/p&gt;
&lt;h2 id=&#34;5-古いディレクトリをクリーンアップしますそれが正しいことを確認した後&#34;&gt;5. 古いディレクトリをクリーンアップします（それが正しいことを確認した後）
&lt;/h2&gt;&lt;p&gt;新しいディレクトリでモデルが正常に動作していることを確認してから、古いディレクトリの内容を削除して、C ドライブのスペースを解放します。&lt;/p&gt;
&lt;h2 id=&#34;よくある質問&#34;&gt;よくある質問
&lt;/h2&gt;&lt;h3 id=&#34;設定した後もcドライブに書き込まれたままの場合はどうすればよいですか&#34;&gt;設定した後もCドライブに書き込まれたままの場合はどうすればよいですか?
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;まず、環境変数が「現在のセッションの一時変数」ではなく「システム変数」であることを確認します。&lt;/li&gt;
&lt;li&gt;Ollama プロセスが再起動されたことを確認します。&lt;/li&gt;
&lt;li&gt;変数名が正しいことを確認してください。それは &lt;code&gt;OLLAMA_MODELS&lt;/code&gt; である必要があります。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;古いモデルのファイルを移行する必要がありますか&#34;&gt;古いモデルのファイルを移行する必要がありますか?
&lt;/h3&gt;&lt;p&gt;再度ダウンロードしたくない場合は、Ollama を停止した後、古いモデルを新しいディレクトリに手動でコピーし、Ollama の検証を開始できます。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>Linux 上の Ollama を完全にアンインストールします (残留クリーニングを含む)</title>
        <link>https://knightli.com/ja/2026/04/06/uninstall-ollama-on-linux/</link>
        <pubDate>Mon, 06 Apr 2026 09:16:29 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/06/uninstall-ollama-on-linux/</guid>
        <description>&lt;p&gt;Linux 上で Ollama を完全に削除する必要がある場合は、以下の手順に従ってください。この記事では、サービス、実行可能ファイル、モデル ディレクトリ、および &lt;code&gt;ollama&lt;/code&gt; ユーザーとユーザー グループをクリーンアップします。&lt;/p&gt;
&lt;h2 id=&#34;アンインストール前の注意事項&#34;&gt;アンインストール前の注意事項
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;次のコマンドは、ネイティブ Ollama モデル ファイル (通常は &lt;code&gt;/usr/share/ollama&lt;/code&gt;) を削除します。最初にバックアップする必要があるかどうかを確認してください。&lt;/li&gt;
&lt;li&gt;このコマンドはデフォルトで &lt;code&gt;sudo&lt;/code&gt; を使用します。現在のアカウントに管理者権限があることを確認してください。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-systemd-サービスを停止して削除します&#34;&gt;1. systemd サービスを停止して削除します。
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl stop ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl disable ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -f /etc/systemd/system/ollama.service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;2-ollama-実行可能ファイルを削除します&#34;&gt;2. Ollama 実行可能ファイルを削除します
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v ollama&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  sudo rm -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-ollama-関連のライブラリ-ディレクトリを削除します-存在する場合&#34;&gt;3. Ollama 関連のライブラリ ディレクトリを削除します (存在する場合)。
&lt;/h2&gt;&lt;p&gt;インストール方法によって Ollama ファイルが &lt;code&gt;lib&lt;/code&gt; ディレクトリに書き込まれる場合は、次のようにファイルを消去できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; d in /usr/local/lib/ollama /usr/lib/ollama /lib/ollama&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo rm -rf &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;4-モデルとデータのディレクトリを削除します&#34;&gt;4. モデルとデータのディレクトリを削除します。
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -rf /usr/share/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;5-システム-ユーザーとグループを削除します-存在する場合&#34;&gt;5. システム ユーザーとグループを削除します (存在する場合)。
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;id -u ollama &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo userdel ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;getent group ollama &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo groupdel ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;6-アンインストールが完了したことを確認します&#34;&gt;6. アンインストールが完了したことを確認します
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v ollama &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ollama binary not found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status ollama &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;上記のチェックで &lt;code&gt;ollama&lt;/code&gt; が見つからなかった場合は、アンインストールが完了したことを意味します。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>rsync --delete パラメータの詳細な説明とディレクトリのクリアの実践</title>
        <link>https://knightli.com/ja/2026/03/29/rsync-delete-%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3/</link>
        <pubDate>Sun, 29 Mar 2026 11:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/03/29/rsync-delete-%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3/</guid>
        <description>&lt;p&gt;&lt;code&gt;rsync --delete&lt;/code&gt; の中心的な機能は、ターゲット ディレクトリ内の「ソース ディレクトリが存在しない」ファイルを削除して、ターゲット側とソース側の一貫性を保つことです。&lt;/p&gt;
&lt;p&gt;一般に、次のシナリオで使用されます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同期中にターゲット側の過去の冗長ファイルをクリーンアップする&lt;/li&gt;
&lt;li&gt;空のディレクトリを使用してターゲット ディレクトリをすばやくクリアします&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;基本的な文法&#34;&gt;基本的な文法
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete 源目录/ 目标目录/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-a&lt;/code&gt;: アーカイブ モード、権限やタイムスタンプなどの属性を保持します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--delete&lt;/code&gt;: ターゲット上の余分なファイルを削除します&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;重要な注意事項: &lt;code&gt;源目录&lt;/code&gt; の最後に &lt;code&gt;/&lt;/code&gt; があるかどうかは、同期動作に影響します。 &lt;code&gt;/&lt;/code&gt; を使用すると、ディレクトリの内容を同期することを意味し、&lt;code&gt;/&lt;/code&gt; を使用しない場合は、ディレクトリ自体を同期することを意味します。&lt;/p&gt;
&lt;h2 id=&#34;ターゲットディレクトリを空のディレクトリですばやくクリアします&#34;&gt;ターゲットディレクトリを空のディレクトリですばやくクリアします
&lt;/h2&gt;&lt;p&gt;「ディレクトリ構造は保持するが、中身は空にする」ことが目標の場合は、空のディレクトリをソースとして同期できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1) 创建空目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /tmp/empty_dir
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2) 同步并删除目标目录中的内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete /tmp/empty_dir/ /path/to/target_dir/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;通常、この方法は、大規模なディレクトリのシナリオで 1 つずつ削除するよりも効率的であり、自動スクリプトの作成も簡単です。&lt;/p&gt;
&lt;h2 id=&#34;よく使用される拡張パラメータ&#34;&gt;よく使用される拡張パラメータ
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--delete-before&lt;/code&gt;: 最初に削除してから送信します。これは、シナリオによってはより効率的です。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--progress&lt;/code&gt;: 送信と処理の進行状況を表示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例 (クリーンな Nginx ログ ディレクトリ):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete --progress /tmp/empty_dir/ /var/log/nginx/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;使用方法の提案&#34;&gt;使用方法の提案
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--dry-run&lt;/code&gt;でプレビューし、削除範囲を確認してから実行します&lt;/li&gt;
&lt;li&gt;本番環境で使用する前に、対象ディレクトリのバックアップを作成することをお勧めします。&lt;/li&gt;
&lt;li&gt;クリティカル パスを実行する場合は、オフピーク時間帯の操作を優先する&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Git がファイルの実行可能権限を追跡する方法 (&#43;x)</title>
        <link>https://knightli.com/ja/2026/03/29/git-%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90-x/</link>
        <pubDate>Sun, 29 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/03/29/git-%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90-x/</guid>
        <description>&lt;p&gt;Linux 環境では、Git はファイルの実行可能ビット (&lt;code&gt;+x&lt;/code&gt;) を追跡します。
スクリプトを「実行可能ファイル」としてリポジトリに保持したい場合は、この権限の変更を Git で明示的に記録する必要があります。&lt;/p&gt;
&lt;h2 id=&#34;ファイルに実行可能権限を追加する&#34;&gt;ファイルに実行可能権限を追加する
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git update-index --chmod&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;+x script.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;chore: mark script.sh as executable&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;このコマンドは、&lt;code&gt;script.sh&lt;/code&gt; の実行可能ビット変更を一時記憶領域に追加します。送信してプッシュした後、他のユーザーがリポジトリをプルまたはクローン作成するときに、この権限ステータスが保持されます。&lt;/p&gt;
&lt;h2 id=&#34;ファイルの実行可能権限を削除する&#34;&gt;ファイルの実行可能権限を削除する
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git update-index --chmod&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-x script.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;chore: remove executable bit from script.sh&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;効果があるかどうかを確認する&#34;&gt;効果があるかどうかを確認する
&lt;/h2&gt;&lt;p&gt;次のコマンドを使用して、ワークスペースの権限を確認できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone xxxxxxxxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -l script.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;-rwxr-xr-x&lt;/code&gt; のようなものが表示された場合は、ファイルに実行可能アクセス許可が含まれていることを意味します。 &lt;code&gt;-rw-r--r--&lt;/code&gt; の場合は、実行可能ではないことを意味します。&lt;/p&gt;
&lt;h2 id=&#34;説明する&#34;&gt;説明する
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git update-index --chmod=+x/-x&lt;/code&gt; は、Git によって記録されたファイル モードのみを変更し、ファイル コンテンツ自体の変更を置き換えることはありません。&lt;/li&gt;
&lt;li&gt;チームコラボレーションでは、レビューとバックトラックを容易にするために、このような権限の調整を個別に送信することをお勧めします。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
