<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Logind on Tarragon</title><link>https://tarrragon.github.io/blog/tags/logind/</link><description>Recent content in Logind on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 03 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/logind/index.xml" rel="self" type="application/rss+xml"/><item><title>logind Session 與 Seat（VT 與輸入權的持有者）</title><link>https://tarrragon.github.io/blog/linux/dotfile/knowledge-cards/logind-session-seat/</link><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/linux/dotfile/knowledge-cards/logind-session-seat/</guid><description>&lt;p>systemd-logind 是 systemd 的登入管理服務：追蹤每一次登入（session）、把實體輸入輸出裝置組成 seat、並依「哪個 session 在 active VT 上」決定誰拿得到顯示與輸入裝置的存取權。教材裡「為什麼不能從 SSH 跑桌面」「為什麼 loginctl 說沒鎖但畫面進不去」這兩類問題，根因都在這一層的概念。&lt;/p>
&lt;p>兩個核心名詞各承擔一個語意：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Session&lt;/strong>：一次登入。從圖形 &lt;a href="https://tarrragon.github.io/blog/linux/dotfile/knowledge-cards/tty/" data-link-title="TTY" data-link-desc="恢復操作提到切 TTY 但不知道 TTY 是什麼時讀 — Linux 核心直接提供的純文字終端機介面">VT&lt;/a> 登入、從 SSH 連入、在另一個 tty 登入，各自是一個獨立 session。&lt;code>loginctl list-sessions&lt;/code> 列出全部。&lt;/li>
&lt;li>&lt;strong>Seat&lt;/strong>：一組綁在一起的實體裝置——螢幕、鍵盤、滑鼠。單人單機只有一個 &lt;code>seat0&lt;/code>。&lt;code>loginctl seat-status seat0&lt;/code> 看它掛了哪些裝置、哪個 session 是 active。&lt;/li>
&lt;/ul>
&lt;p>裝置存取權的發放規則是這張卡的重點：&lt;strong>只有掛在 seat 上、且位於 active VT 的 session，才拿得到 DRM master（顯示卡獨佔繪圖權）與 input 裝置&lt;/strong>。&lt;a href="https://tarrragon.github.io/blog/linux/dotfile/knowledge-cards/compositor/" data-link-title="Compositor（合成器）" data-link-desc="教材反覆出現 compositor / 合成器、想確認它到底負責什麼、跟 window manager 和桌面環境差在哪時讀 — Wayland 下把畫面合成與視窗管理合一的核心程式">Compositor&lt;/a> 啟動時透過 libseat 向 logind 要 seat，SSH 連線的 session 是 pty（&lt;code>tty&lt;/code> 指令回 &lt;code>/dev/pts/N&lt;/code>）、不屬於 seat0，於是 compositor 的預設 backend 從 SSH 起會直接失敗、報 seat / DRM / backend 相關的錯——判讀與繞法（headless backend、回實體 VT 啟動）見&lt;a href="https://tarrragon.github.io/blog/linux/debug/ssh-and-terminal-troubleshooting/" data-link-title="遠端連線與終端機問題" data-link-desc="SSH 連線斷掉後本機終端機卡住噴亂碼、遠端打字變亂碼、或想從 SSH 操控遠端圖形桌面卻起不來時，判斷是哪一層出問題並修復">遠端連線與終端機問題&lt;/a>。&lt;/p>
&lt;p>判讀 seat 狀態的權威指令組：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">tty &lt;span class="c1"># 現在這個 session 的終端機：/dev/tty1 是圖形 VT、/dev/pts/N 是 SSH&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">loginctl seat-status seat0 &lt;span class="c1"># seat0 的 active session 掛在哪個 tty&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">cat /sys/class/tty/tty0/active &lt;span class="c1"># kernel 認定的實體 active VT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">systemctl is-active getty@tty1 &lt;span class="c1"># 那個 VT 上有沒有 getty 給登入提示&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>實測有一個假象值得警惕：&lt;code>loginctl&lt;/code> 可能把 seat0 掛在某個 pts session 上、看似持有 DRM master，但 pts 不在 active VT、KMS 照樣失敗——loginctl 的歸屬顯示跟「真的能畫」是兩回事，交叉比對 &lt;code>tty&lt;/code> 與 &lt;code>/sys/class/tty/tty0/active&lt;/code> 才定案。另一個常見狀態是 &lt;code>getty@ttyN&lt;/code> 顯示 &lt;code>enabled&lt;/code> 但開機後 &lt;code>inactive&lt;/code>（logind 的 autovt 沒觸發）、VT 切過去一片空白沒登入提示，&lt;code>sudo systemctl start getty@tty&amp;lt;N&amp;gt;&lt;/code> 補起來、&lt;code>sudo chvt &amp;lt;N&amp;gt;&lt;/code> 切 active VT。&lt;/p>
&lt;p>logind 也持有一個「session 鎖定提示」（&lt;code>loginctl show-session &amp;lt;id&amp;gt; -p LockedHint&lt;/code>），它跟 Wayland compositor 的 &lt;code>ext-session-lock&lt;/code> 鎖是獨立兩層——&lt;code>LockedHint=no&lt;/code> 不代表畫面進得去。兩層的方向、持有者與判讀方式見 &lt;a href="https://tarrragon.github.io/blog/linux/dotfile/knowledge-cards/session-lock/" data-link-title="Wayland Session Lock（鎖屏安全狀態）" data-link-desc="hyprlock / swaylock 畫面卡住、pkill 後進不了桌面、或要在 VM / 自動化環境測試鎖屏時回來讀">Session Lock&lt;/a>。&lt;/p>
&lt;p>相關概念：&lt;a href="https://tarrragon.github.io/blog/linux/dotfile/knowledge-cards/tty/" data-link-title="TTY" data-link-desc="恢復操作提到切 TTY 但不知道 TTY 是什麼時讀 — Linux 核心直接提供的純文字終端機介面">TTY&lt;/a>（VT 是 seat 存取權的判定基準）、&lt;a href="https://tarrragon.github.io/blog/linux/dotfile/knowledge-cards/compositor/" data-link-title="Compositor（合成器）" data-link-desc="教材反覆出現 compositor / 合成器、想確認它到底負責什麼、跟 window manager 和桌面環境差在哪時讀 — Wayland 下把畫面合成與視窗管理合一的核心程式">Compositor&lt;/a>（透過 logind 取得 seat 與 DRM master 的程式）、&lt;a href="https://tarrragon.github.io/blog/linux/dotfile/knowledge-cards/session-lock/" data-link-title="Wayland Session Lock（鎖屏安全狀態）" data-link-desc="hyprlock / swaylock 畫面卡住、pkill 後進不了桌面、或要在 VM / 自動化環境測試鎖屏時回來讀">Session Lock&lt;/a>（logind 鎖定提示與 compositor 鎖的分層）。&lt;/p></description><content:encoded><![CDATA[<p>systemd-logind 是 systemd 的登入管理服務：追蹤每一次登入（session）、把實體輸入輸出裝置組成 seat、並依「哪個 session 在 active VT 上」決定誰拿得到顯示與輸入裝置的存取權。教材裡「為什麼不能從 SSH 跑桌面」「為什麼 loginctl 說沒鎖但畫面進不去」這兩類問題，根因都在這一層的概念。</p>
<p>兩個核心名詞各承擔一個語意：</p>
<ul>
<li><strong>Session</strong>：一次登入。從圖形 <a href="/blog/linux/dotfile/knowledge-cards/tty/" data-link-title="TTY" data-link-desc="恢復操作提到切 TTY 但不知道 TTY 是什麼時讀 — Linux 核心直接提供的純文字終端機介面">VT</a> 登入、從 SSH 連入、在另一個 tty 登入，各自是一個獨立 session。<code>loginctl list-sessions</code> 列出全部。</li>
<li><strong>Seat</strong>：一組綁在一起的實體裝置——螢幕、鍵盤、滑鼠。單人單機只有一個 <code>seat0</code>。<code>loginctl seat-status seat0</code> 看它掛了哪些裝置、哪個 session 是 active。</li>
</ul>
<p>裝置存取權的發放規則是這張卡的重點：<strong>只有掛在 seat 上、且位於 active VT 的 session，才拿得到 DRM master（顯示卡獨佔繪圖權）與 input 裝置</strong>。<a href="/blog/linux/dotfile/knowledge-cards/compositor/" data-link-title="Compositor（合成器）" data-link-desc="教材反覆出現 compositor / 合成器、想確認它到底負責什麼、跟 window manager 和桌面環境差在哪時讀 — Wayland 下把畫面合成與視窗管理合一的核心程式">Compositor</a> 啟動時透過 libseat 向 logind 要 seat，SSH 連線的 session 是 pty（<code>tty</code> 指令回 <code>/dev/pts/N</code>）、不屬於 seat0，於是 compositor 的預設 backend 從 SSH 起會直接失敗、報 seat / DRM / backend 相關的錯——判讀與繞法（headless backend、回實體 VT 啟動）見<a href="/blog/linux/debug/ssh-and-terminal-troubleshooting/" data-link-title="遠端連線與終端機問題" data-link-desc="SSH 連線斷掉後本機終端機卡住噴亂碼、遠端打字變亂碼、或想從 SSH 操控遠端圖形桌面卻起不來時，判斷是哪一層出問題並修復">遠端連線與終端機問題</a>。</p>
<p>判讀 seat 狀態的權威指令組：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">tty                                <span class="c1"># 現在這個 session 的終端機：/dev/tty1 是圖形 VT、/dev/pts/N 是 SSH</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">loginctl seat-status seat0         <span class="c1"># seat0 的 active session 掛在哪個 tty</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">cat /sys/class/tty/tty0/active     <span class="c1"># kernel 認定的實體 active VT</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">systemctl is-active getty@tty1     <span class="c1"># 那個 VT 上有沒有 getty 給登入提示</span></span></span></code></pre></div><p>實測有一個假象值得警惕：<code>loginctl</code> 可能把 seat0 掛在某個 pts session 上、看似持有 DRM master，但 pts 不在 active VT、KMS 照樣失敗——loginctl 的歸屬顯示跟「真的能畫」是兩回事，交叉比對 <code>tty</code> 與 <code>/sys/class/tty/tty0/active</code> 才定案。另一個常見狀態是 <code>getty@ttyN</code> 顯示 <code>enabled</code> 但開機後 <code>inactive</code>（logind 的 autovt 沒觸發）、VT 切過去一片空白沒登入提示，<code>sudo systemctl start getty@tty&lt;N&gt;</code> 補起來、<code>sudo chvt &lt;N&gt;</code> 切 active VT。</p>
<p>logind 也持有一個「session 鎖定提示」（<code>loginctl show-session &lt;id&gt; -p LockedHint</code>），它跟 Wayland compositor 的 <code>ext-session-lock</code> 鎖是獨立兩層——<code>LockedHint=no</code> 不代表畫面進得去。兩層的方向、持有者與判讀方式見 <a href="/blog/linux/dotfile/knowledge-cards/session-lock/" data-link-title="Wayland Session Lock（鎖屏安全狀態）" data-link-desc="hyprlock / swaylock 畫面卡住、pkill 後進不了桌面、或要在 VM / 自動化環境測試鎖屏時回來讀">Session Lock</a>。</p>
<p>相關概念：<a href="/blog/linux/dotfile/knowledge-cards/tty/" data-link-title="TTY" data-link-desc="恢復操作提到切 TTY 但不知道 TTY 是什麼時讀 — Linux 核心直接提供的純文字終端機介面">TTY</a>（VT 是 seat 存取權的判定基準）、<a href="/blog/linux/dotfile/knowledge-cards/compositor/" data-link-title="Compositor（合成器）" data-link-desc="教材反覆出現 compositor / 合成器、想確認它到底負責什麼、跟 window manager 和桌面環境差在哪時讀 — Wayland 下把畫面合成與視窗管理合一的核心程式">Compositor</a>（透過 logind 取得 seat 與 DRM master 的程式）、<a href="/blog/linux/dotfile/knowledge-cards/session-lock/" data-link-title="Wayland Session Lock（鎖屏安全狀態）" data-link-desc="hyprlock / swaylock 畫面卡住、pkill 後進不了桌面、或要在 VM / 自動化環境測試鎖屏時回來讀">Session Lock</a>（logind 鎖定提示與 compositor 鎖的分層）。</p>
]]></content:encoded></item></channel></rss>