為什麼 Fedora 有兩個「ptmx」檔案?

為什麼 Fedora 有兩個「ptmx」檔案?

我知道該文件/dev/ptmx用於生成偽終端的主文件。但我發現Fedora還有另一個ptmx文件( /dev/pts/ptmx):

在此輸入影像描述

第二個文件的目的是什麼?

答案1

與計算世界中的許多事情一樣,原因是歷史和向後相容性。

早在 2.4.* 核心中,在 Linux 中存在udev(目前的虛擬檔案系統解決方案/dev)之前,有兩種相互競爭的解決方案:將裝置放在根檔案系統上的真實目錄中的“傳統Unix 方式” ,以及devfs第一個虛擬檔案系統/dev

問題是,作者devfs為各種裝置建立了一個全新的命名方案,人們對此有相當強烈的感覺:有些人希望遷移到新方案並廢除舊方案,有些人則認為沒有遷移的必要。有些發行版使用舊的靜態設備,其他發行版則選擇devfs.

此時,安裝時會建立固定數量的偽 TTY 裝置。 (順便說一句,如果CONFIG_LEGACY_PTYS在編譯內核時設定了該選項,這仍然是可能的。)

然後,引入了Unix98風格的動態分配PTY設備。在靜態/dev目錄上實作它們需要一個虛擬檔案系統/dev/pts,稱為devpts檔案系統。此外,將其作為單獨的檔案系統可能也可以將其應用在動態之上,devfs而無需重複程式碼。

動態分配的 PTY 設備很快就成為最受歡迎的選擇,因為/dev數百個靜態分配的 PTY 設備雜亂無章,其中大多數很可能在系統的生命週期中永遠不會使用,這顯然是無意義的。

然後 Linux 2.6udev隨之而來。它很快就淘汰了靜態/devdevfs解決方案。出於向後相容性的原因,devpts檔案系統仍然存在,但現在相同的功能可以移回主/dev檔案系統,因為它現在完全基於 RAM。

例如,今天,Debian 9 仍然掛載devpts檔案系統以/dev/pts實現舊版相容性,但/dev/pts/ptmx預設分配零權限 - 這表示該devpts檔案系統可能已被棄用,並將在將來的某個時候被刪除。

# ls -l /dev/ptmx /dev/pts/ptmx
crw-rw-rw- 1 root tty  5, 2 Nov 22 11:47 /dev/ptmx
c--------- 1 root root 5, 2 Nov 12 14:59 /dev/pts/ptmx

如果某些程式仍然需要/dev/pts/ptmx,可以透過調整預設權限來允許,但這可以讓人們知道哪些程式仍在使用舊的已棄用的裝置名稱。

答案2

當進程開啟 /dev/ptmx 時(使用posix_openpt()),它取得偽終端主設備(PTM)的檔案描述符,並在 /dev/pts 目錄中建立偽終端從設備(PTS)。

當主設備開啟時,從設備被鎖定。您可以取得從站的名稱並設定其權限等,然後解鎖從站。這允許在從屬設備可存取之前對其進行控制。

從機模擬真實的文字終端設備,主機提供終端模擬器進程控制從機的方法。

從設備是實體終端的虛擬實現,主設備是在該終端上打字的虛擬實現;電腦對待發送到從機的字元就像人類在真實終端上鍵入它們一樣(受創建主機時的權限設定的限制)。

相關內容