關于 Linux 內核的 30 件你不知道的事
Linux 內核今年 30 歲了。
Linux 內核今年 30 歲了。這開創(chuàng)性的開源軟件的三個十年,讓用戶能夠運行自由軟件,讓他們能從運行的應用程序中學習,讓他們能與朋友分享他們所學到的知識。有人認為,如果沒有 Linux 內核,我們如今所享受的 開源文化 和自由軟件的累累碩果,可能就不會應時而出現(xiàn)。如果沒有 Linux 作為催化劑,蘋果、微軟和谷歌所開源的那些就不可能開源。Linux 作為一種現(xiàn)象,對開源文化、軟件開發(fā)和用戶體驗的影響,是怎么強調都不為過的,但所有這一切,都濫觴于一個 Linux 內核。
Linux 內核是啟動計算機、并識別和確保計算機內外所連接的所有組件之間通信的軟件。這些對于大多數(shù)用戶從未想過,更不用說能理解的代碼,Linux 內核有很多令人驚訝的地方。以下是 Linux 內核在其三十年生命中每一年的一件事。順序無關。
- Linux 是第一個具有 USB 3.0 驅動的操作系統(tǒng)。Sarah Sharp 在 2009 年 6 月 7 日宣布她的 USB 3.0 設備的驅動程序可以使用了,她的代碼被包含在內核 2.6.31 版本中。
- 當某些事件發(fā)生時,內核會將自己標記為“受污染”,這在以后的故障排除中可能有用。運行一個“被污染”的內核并不是什么問題。但如果出現(xiàn)錯誤,首先要做的是在一個沒有被污染的內核上重現(xiàn)該問題。
- 你可以指定一個主機名或域名作為 ip= 內核命令行選項的一部分,Linux 會保留它,而不是用 DHCP 或 BOOTP 提供的主機名或域名來覆蓋它。例如,ip=::::myhostname::dhcp 設置主機名 myhostname。
- 在文本啟動過程中,可以選擇顯示黑白的、16 色的或 224 色的 Tux 徽標之一。
- 在娛樂業(yè)中,DRM 是一種用來防止訪問媒介的技術。然而,在 Linux 內核中,DRM 指的是直接渲染管理器Direct Rendering Manager,它指的是用于與對接顯卡的 GPU 的庫(libdrm)和驅動程序。
- 能夠在不重啟的情況下給 Linux 內核打補丁。
- 如果你自己編譯內核,你可以將文本控制臺配置為超過 80 列寬。
- Linux 內核提供了內置的 FAT、exFAT 和 NTFS(讀和寫)支持。
- Wacom 平板電腦和許多類似設備的驅動程序都內置在內核中。
- 大多數(shù)內核高手使用 git send-email 來提交補丁。
- 內核使用一個叫做 Sphinx 的文檔工具鏈,它是用 Python 編寫的。
- Hamlib 提供了具有標準化 API 的共享庫,可以通過你的 Linux 電腦控制業(yè)余無線電設備。
- 我們鼓勵硬件制造商幫助開發(fā) Linux 內核,以確保兼容性。這樣就可以直接處理硬件,而不必從制造商那里下載驅動程序。直接成為內核一部分的驅動程序也會自動從新版本內核的性能和安全改進中受益。
- 內核中包含了許多樹莓派模塊(Pi Hats)的驅動程序。
- netcat 樂隊發(fā)布了一張只能作為 Linux 內核模塊 播放的專輯。
- 受 netcat 發(fā)布專輯的啟發(fā),人們又開發(fā)了一個 把你的內核變成一個音樂播放器 的模塊。
- Linux 內核的功能支持許多 CPU 架構:ARM、ARM64、IA-64、 m68k、MIPS、Nios II、PA-RISC、OpenRISC、PowerPC、s390、 Sparc、x86、Xtensa 等等。
- 2001 年,Linux 內核成為第一個 以長模式運行的 x86-64 CPU 架構。
- Linux 3.4 版引入了 x32 ABI,允許開發(fā)者編譯在 64 位模式下運行的代碼,而同時只使用 32 位指針和數(shù)據(jù)段。
- 內核支持許多不同的文件系統(tǒng),包括 Ext2、Ext3、Ext4、JFS、XFS、GFS2、GCFS2、BtrFS、NILFS2、NFS、Overlay FS、UDF 等等。
- 虛擬文件系統(tǒng)Virtual File System(VFS)是 Linux 內核中的一個軟件層,為用戶運行的應用程序提供文件系統(tǒng)接口。它也是內核的一個抽象層,以便不同的文件系統(tǒng)實現(xiàn)可以共存。
- Linux 內核包括一個實體的盲文輸出設備的驅動程序。
- 在 2.6.29 版本的內核中,啟動時的 Tux 徽標被替換為 “Tuz”,以提高人們對當時影響澳大利亞的塔斯馬尼亞魔鬼Tasmanian Devil(即袋獾)種群的一種侵襲性癌癥的認識。
- 控制組Control Groups(cgroups)是容器(Docker、Podman、Kubernetes 等的基礎技術)能夠存在的原因。
- 曾經(jīng)花了大量的法律行動來解放 CIFS,以便將其納入內核中,而今天,CIFS 模塊已被內置于內核,以實現(xiàn)對 SMB 的支持。這使得 Linux 可以掛載微軟的遠程共享和基于云的文件共享。
- 對于計算機來說,產(chǎn)生一個真正的隨機數(shù)是出了名的困難(事實上,到目前為止是不可能的)。hw_random 框架可以利用你的 CPU 或主板上的特殊硬件功能,盡量改進隨機數(shù)的生成。
- 操作系統(tǒng)抖動 是應用程序遇到的干擾,它是由后臺進程的調度方式和系統(tǒng)處理異步事件(如中斷)的方式的沖突引起的。像這些問題在內核文檔中都有詳細的討論,可以幫助面向 Linux 開發(fā)的程序員寫出更聰明的代碼。
- make menuconfig 命令可以讓你在編譯前使用 GUI 來配置內核。Kconfig 語言定義了內核配置選項。
- 對于基本的 Linux 服務器,可以實施一個 看門狗 系統(tǒng)來監(jiān)控服務器的健康狀況。在健康檢查間隔中,watchdog 守護進程將數(shù)據(jù)寫入一個特殊的 watchdog 內核設備,以防止系統(tǒng)重置。如果看門狗不能成功記錄,系統(tǒng)就會被重置。有許多看門狗硬件的實現(xiàn),它們對遠程任務關鍵型計算機(如發(fā)送到火星上的計算機)至關重要。
- 在火星上有一個 Linux 內核的副本,雖然它是在地球上開發(fā)的。