LPI Linux 認證/配置基本 BIOS 設定
權重:1
- 以下是使用的檔案、術語和實用程式的部分列表
- /proc/ioports
- /proc/interrupts
- /proc/dma
- /proc/pci
| BIOS 提示與技巧 |
|---|
| 熟悉 裝置中的 BIOS 設定 您支援的。 |
| 瞭解蜂鳴聲:您可能 在出現問題時無法訪問 網際網路。 |
| 變更控制:始終 確保您可以撤消 您在 BIOS 中進行的任何更改。 |
| BIOS 更新:保持知情。 不要在它們出現在映象上時就立即 推出它們。等待 幾個月,然後檢查 製造商論壇以瞭解 更新存在的問題。 一旦您滿意,更新 一個系統,監控它,然後 推廣到您的其餘 系統。記錄 更改,BIOS 更新通常是 難以 撤消的。 |
| 注意F1鍵以 繼續,尤其是在 重新啟動遠端伺服器時。 |
| 遠端管理 如果可用,請使用它。 |
| 認真考慮 實施 BIOS 安全。 是否可以在 其他地方實施 相同級別的安全?通常可以。 |
| 瞭解 BIOS 日期和時間的限制。 系統日期和時間是否可以 透過 其他方式更好地維護? |
BIOS(基本輸入/輸出系統)可以被認為是一套小型程式,在任何給定計算機上的作業系統和硬體之間執行。它提供許多服務,使計算機能夠啟動任何給定的作業系統。BIOS 還可以根據作業系統和/或安裝的硬體型別向作業系統提供或呈現其他服務。還應注意,現代計算機可能有多個 BIOS 晶片連線各種不同的硬體元件,這些元件共同構建了整臺計算機。其中包括磁碟陣列控制器、顯示卡、音效卡,以及可能的一些其他元件。首先,讓我們看一下 BIOS 提供的服務,無論安裝了哪個作業系統:即POST(加電自檢)、硬體管理、安全和日期與時間。
英特爾和其他製造商已經開發了另一種名為EFI(可擴充套件韌體介面)的標準,它執行與 BIOS 相似的功能,但以不同的方式完成工作。EFI 比 BIOS 更加靈活和強大,但它並沒有獲得那麼多的商業成功。目前,探索 EFI 超出了本文件的範圍。
- POST 過程涉及一個小型診斷程式,該程式檢查系統硬體,例如 RAM 或主機板元件。如果存在特定硬體,則會執行基本測試以檢查故障。可能會執行更高階的測試,例如長記憶體測試,但通常需要在 BIOS 中手動啟用這些功能。
- 如果 POST 過程發現錯誤,它通常會在主機板揚聲器上發出蜂鳴聲和/或透過主機板上的 LED 和/或螢幕上的訊息顯示一些視覺資訊。這被稱為“不規則 POST 條件”。
- 蜂鳴聲、燈光或訊息的數量(在某些情況下還有模式)將幫助您診斷問題;但是,不同的主機板型號(即使是同一製造商的型號)也具有不同的這些訊號實現方式,因此始終明智的做法是為支援的每個型號準備一份印刷參考手冊或在另一臺機器上訪問網際網路以快速查詢。
- 在 POST 過程中,BIOS 允許您透過儲存在CMOS(互補金氧半導體)記憶體中的設定來靈活自定義系統的某些方面。CMOS 記憶體是易失性記憶體,但您的主機板有一個備用電池來儲存您所做的任何自定義系統配置。這個電池最終會失效。如果您發現您的計算機無法在一個電源週期內保留 BIOS 設定,通常的原因是您需要更換這個電池。
- 使用者和系統管理員經常編輯的有用 BIOS 設定可能包括
- 啟動裝置優先順序
- 啟用/停用主機板功能,如整合影片、區域網或聲音
- 為 PCI(或更舊的)卡設定首選記憶體地址或 IRQ 向量
- 在較舊的主機板上,這些配置是透過將某些跳線或DIP 開關置於硬體製造商的規格來完成的。現代 CMOS 選單已經幾乎取代了所有這些裝置,除了設定 SCSI ID 或重置 BIOS 密碼。仍然有一些“老式”主機板在執行,因此請始終牢記跳線的可能性。
- 大多數 BIOS 允許使用者設定密碼。計算機在完成啟動過程之前需要輸入此密碼。通常,此 BIOS 密碼會帶來不便,而沒有任何真正的安全性:繞過這些密碼的資訊在網際網路上公開提供。如果使用者忘記此密碼,則計算機將不會繼續載入作業系統。不難看出為什麼 BIOS 密碼在企業級很少被使用。
- 許多現代計算機能夠檢測配置更改,例如記憶體大小更改,甚至機箱是否被移除。如果此更改是可以接受的,BIOS 通常會報告這些更改並提示使用者按一個鍵(通常是 F1 鍵)繼續。根據特定的 BIOS 製造商,使用者可能需要按另一個鍵進入 BIOS 配置螢幕以更改引數。
- 設定時間和日期是任何現代 BIOS 中的選項。這是一個“即時”時鐘,持續執行,由與保留 CMOS 設定相同的電池供電。它並不十分準確,甚至與手錶相比,但擁有這個不太準確的時鐘總比每次重啟都需要使用者手動輸入時間要好。(這就是早期計算機的運作方式。)
- Linux(像其他作業系統一樣)透過計算計算機中振盪器電路產生的中斷來在軟體中維護自己的時鐘。此時鐘僅在作業系統執行時起作用。
- BIOS 在啟動時將日期和時間提供給作業系統。作業系統收集此資訊後,BIOS 時鐘和作業系統時鐘將繼續獨立執行。這意味著 BIOS 時鐘很快就會與作業系統時鐘不同,即使僅相差幾毫秒。
- Linux 有一個名為 hwclock 的命令,可用於將作業系統時鐘與 BIOS 同步。但是,同步後,它們又會逐漸出現偏差。(這是由於 BIOS 時鐘的硬體特性和作業系統時鐘的軟體特性導致的。)
- 在課程的後面,您將開始瞭解 ntp 以及維護一致的“網路時間”的重要性。瞭解 BIOS 和作業系統維護獨立時鐘將有助於您制定解決方案。
- BIOS 不處理時區或夏令時調整。這些由作業系統處理。因此,某些管理員可能會選擇將其 BIOS 時鐘設定為 UTC 而不是本地時間。
大多數計算機使用 硬碟驅動器 來儲存作業系統和使用者資料。一些較新的計算機使用 固態硬碟驅動器 代替。儘管物理裝置差異很大,但在配置 Linux 或其他作業系統方面幾乎沒有區別。
首先,讓我們解決磁碟驅動器術語(如 IDE/ATA(整合驅動電子/高階技術附件)和 SATA(序列高階技術附件),以及 PATA(並行高階技術附件))帶來的困惑,它們都使用 ATA(高階技術附件)標準與裝置通訊。縮寫詞的第一部分可以簡單地理解為修訂版。例如,IDE、Fast IDE、EIDE 等修訂版。這些修訂版改變了連線磁碟驅動器到計算機的物理電纜或帶狀電纜,從而實現了某些功能,例如處理更多磁碟空間或加快與裝置的通訊速度。SATA 就像重寫一樣,一旦 SATA 出現,就決定將所有早於 SATA 的歷史 ATA 裝置(IDE 等)歸類為 PATA 術語。
SCSI 是另一種流行的連線介面,多年來經歷了幾個版本的修訂:SCSI、SCSI-2、SCSI-3、U160、U320 和 SAS。如果需要,請點選本段開頭處的連結以獲取更多詳細資訊。SCSI 系列連線介面在硬體上與 ATA 系列不相容,也不使用相同的軟體命令集,因此不能將 SCSI 驅動器與 ATA 控制器混合使用,也不能將 ATA 驅動器與 SCSI 控制器混合使用。由於它們使用不同的命令,因此 Linux 將使用不同的標籤對其進行列舉。這將在以後變得重要時進行更詳細的處理。
為了瞭解現代硬碟驅動器,瞭解一些背景知識很有幫助。BIOS 傳統上使用 INT13h 作為與硬碟驅動器的介面。從歷史的角度來看,INT13h 有一定的限制。另一方面,IDE/ATA 介面也存在限制。下表中重點介紹了這些限制。
| 規格 | 最大柱面數 | 最大磁頭數 | 最大扇區數 | 最大容量 |
|---|---|---|---|---|
| IDE/ATA | 65,536 | 16 | 256 | 138GB |
| INT13h | 1,024 | 256 | 63 | 528MB |
顯然,您可以看到由於 INT13h 和 IDE/ATA 的限制(我們已突出顯示),在上述情況下,普通計算機可以處理的最大驅動器為 528MB。我們將此規範稱為 CHS(柱面-磁頭-扇區)。您可能還記得,要計算硬碟驅動器的總容量,請使用以下公式
- 柱面數 * 磁頭數 * 扇區數 * 512 = 容量
為了解決這個問題,實施了一種新的規範,稱為 ECHS(擴充套件柱面-磁頭-扇區),有時也稱為“大模式”。它在 BIOS 和 INT13h 之間引入了一個轉換層。然後,轉換層允許計算機處理最大容量為 8.4GB 的磁碟驅動器。我們可以透過修改上面的表格來檢視這一點,我們在下面列出了該表格並突出顯示了相關的行。
| 規格 | 最大柱面數 | 最大磁頭數 | 最大扇區數 | 最大容量 |
|---|---|---|---|---|
| IDE/ATA | 65,536 | 16 | 256 | 138GB |
| ECHS | 620 | 128 | 63 | 2.5GB |
| INT13h | 1,024 | 256 | 63 | 8.4GB |
為了瞭解轉換的工作原理,讓我們以一個具有 4960 個柱面、16 個磁頭和 63 個扇區的 2.5GB 硬碟為例。轉換程式檢視柱面數,並與 INT13h 的 1024 個柱面的限制進行“最佳擬合”。轉換程式通常透過除法來實現這一點。它將柱面數除以以下數字之一:2、4、6、8,在某些情況下為 16。在我們的例子中,4960 / 8 = 620,這並沒有違反 INT13h 的限制。現在,轉換程式將磁頭數乘以 8,所以 16 * 8 = 128。透過這種方式,轉換程式維護了 INT13h 標準,並提供了一種計算機可以檢視整個磁碟的方法。我們可以透過計算轉換前後的磁碟空間來檢視這一點。
- 原生 4960 * 16 * 63 * 512 = 2.5GB
- 轉換 620 * 128 * 63 * 512 = 2.5GB
上表需要進一步說明。您會注意到,ECHS(轉換層)的最大磁頭數為 128,這與 IDE/ATA 層不相容,後者指定了 16 的限制。我們之所以能夠做到這一點,是因為轉換層只關心 INT13h,並且與 IDE/ATA 層沒有任何關係。下表將顯示此模型的真實外觀。
| 規格 | 最大柱面數 | 最大磁頭數 | 最大扇區數 | 最大容量 |
|---|---|---|---|---|
| 物理驅動器 | 4,660 | 16 | 63 | 2.5GB |
| IDE/ATA | 65,536 | 16 | 256 | 138GB |
| INT13h | 1,024 | 256 | 63 | 8.4GB |
| ECHS | 620 | 128 | 63 | 2.5GB |
不用說,硬碟驅動器的容量遠遠超過了 8.4GB,因此需要一些其他的方法,因為柱面-磁頭-扇區方法不再是一種可行的選擇。這將在下一節中介紹,我們將帶您瞭解最新的情況。
LBA(邏輯塊定址)是當今最常見的方案,用於克服對 IDE/ATA 磁碟驅動器施加的 528MB 限制。使用 LBA,每個塊都有一個唯一的標識號,從 0 開始,然後是 1、2、3、4、5... 為了使這種機制能夠工作,它必須得到 BIOS、作業系統和 IDE 驅動器的支援。關於 LBA 的一個常見誤解是,它是 LBA 本身繞過了 528MB 的限制,而實際上 LBA 使用的是轉換。當您在 BIOS 中啟用 LBA 模式時,實際上是在啟用轉換。轉換可以與上面討論的 ECHS 相同,也可以由第三方使用其他演算法。研究這些演算法超出了本課程的範圍。但應該說明第三方演算法的重要性。隨著現代作業系統的普及,BIOS 在“與驅動器通訊”方面正在逐漸退居次要地位,現代作業系統現在使用自己對 ATA 規範的解釋來執行此功能,更傾向於完全繞過 BIOS。
x86 架構上存在 16 個 IRQ(中斷請求)通道。其中只有少數幾個是可用的。下表以紅色列出了無法使用的 IRQ,以橙色列出了可以重新分配的 IRQ(前提是您的系統中不存在某些硬體),以及以白色列出了您可以自由分配的 IRQ。
| IRQ 編號 | 硬體分配 | IRQ 編號 | 硬體分配 | IRQ 編號 | 硬體分配 | IRQ 編號 | 硬體分配 |
|---|---|---|---|---|---|---|---|
| 0 | 系統定時器 | 4 | COM1 | 8 | 即時時鐘 | 12 | PS2 滑鼠 |
| 1 | 鍵盤 | 5 | LPT2 / 音效卡 | 9 | 可用 | 13 | 浮點處理器 |
| 2 | 處理 IRQ 8 - 15 | 6 | 軟盤控制器 | 10 | 可用 | 14 | 主 IDE |
| 3 | COM2 | 7 | 並行埠 | 11 | 可用 | 15 | 次 IDE |
從本質上講,IRQ 用於停止計算機進一步處理任何資訊,並立即為來自中斷的請求提供服務。也就是說,分配給中斷的裝置。上表說明了在 PIC(可程式設計中斷控制器)下 IRQ 架構的外觀,但是它隱藏了優先順序問題。IRQ 結構的優先順序由 0-1-2-8-9-10-11-12-13-14-15-3-4-5-6-7 給出。8-15 具有更高優先順序的原因是它們連線到 IRQ 2,實際上 IRQ 2 可以說是 IRQ 9。我們在這裡看到的有點歷史了。在上述場景下,新增新硬體很快成為一項藝術和痛苦!PCI 和 USB 的出現使得地址範圍更大,並且能夠即插即用。
DMA(直接記憶體訪問)是現代計算機的一項功能,它使裝置能夠在需要將資訊寫入或讀取到另一個裝置時繞過 CPU,這樣做的目的是減輕 CPU 的負擔並利用 DMA 控制器和 RAM 將資料塊從一個區域移動到另一個區域。儘管在 DMA 傳輸中 CPU 從未完全消除,但其作用純粹是啟動過程而不是管理過程。
I/O(輸入/輸出)是指在現代計算機系統中所有裝置(包括外部和內部裝置)之間移動資料。某些裝置可以執行輸入和輸出功能。例如 網絡卡。顯然,鍵盤、滑鼠等是輸入裝置的例子,而 顯示器 和 印表機 是輸出裝置的例子。
當您開啟 PC 時,BIOS 指令將從主機板上的永久可用 ROM 晶片載入到 RAM 中。這些指令在執行 POST 後,可能會進一步通知處理器作業系統位於何處以及如何將其載入到 RAM 中。為了允許作業系統和應用程式在 PC 上執行,BIOS 提供了一層標準的服務,作業系統可以使用這些服務與硬體“通訊”。反過來,作業系統為應用程式提供標準服務以執行其功能。重要的是要理解,並非所有作業系統都使用所有 BIOS 服務:有些作業系統使用自己的指令來訪問硬體。直接訪問硬體的方法可能會提高效能。
BIOS 利用多種技術來執行我們上面討論的服務。但是,與計算機行業的所有事物一樣,技術正在快速發展。BIOS 在系統中發揮著至關重要的作用,新增到主機板的新技術通常需要 BIOS 的配合,以便作業系統能夠利用新技術。
到目前為止,您應該對 BIOS 及其在硬體中扮演的角色有了很好的瞭解。在下一節中,我們將瞭解 Linux 及其如何與 BIOS/硬體互動。這將有望為您提供系統管理員對這些關係的看法。
從這一點開始,有必要訪問 Linux PC。儘管涉及一些理論,但我們將越來越多地與 Linux 互動。我建議您在遇到命令時嘗試一下,在學習過程中測試您的理解。請注意某些命令,因為錯誤的開關,或者在某些情況下從錯誤的目錄執行命令是不健康的。(一個著名的例子是從 / 作為 root 執行 rm -R *。)因此,如果您是 Linux 新手,請小心:不要濫用 root 帳戶。僅在必須時才使用它。我個人建議為課程單獨安裝一個 Linux 系統,其中不包含任何個人資料。
請理解,本書的任何作者/貢獻者對任何資料丟失或任何硬體損壞概不負責,無論其原因如何。打字錯誤可能會發生,並且任何人都可以編輯此書,無論其知識水平如何。
/proc 是一個偽檔案系統,用作核心資料結構的介面。大部分是隻讀的,但某些檔案允許更改核心變數,特別是在 /proc/sys 中。如果您要列出 /proc 中的檔案系統,您將看到如下內容
user@host:~$ cd /proc user@host:/proc$ ls 1 4190 5071 5462 5859 6 dma pagetypeinfo 128 4312 5103 5478 5867 6024 driver partitions 1475 44 5162 5547 5868 6553 execdomains sched_debug 1481 45 5164 5563 5871 6583 fb scsi 1508 4589 5205 5574 5879 6593 filesystems self 1524 4590 5224 5579 5880 6685 fs slabinfo 1526 4594 5227 5655 5884 6694 interrupts stat 165 4595 5289 5660 5890 6714 iomem swaps 166 4597 5302 5661 5892 6716 ioports sys 1784 4765 5315 5695 5901 6717 irq sysrq-trigger 1786 4805 5318 5697 5902 6735 kallsyms sysvipc 1787 4878 5328 5698 5903 7 kcore timer_list 2 4932 5336 5816 5905 acpi key-users timer_stats 207 4934 5356 5820 5912 asound kmsg tty 2272 4956 5362 5821 5915 buddyinfo loadavg uptime 2273 4972 5363 5829 5918 bus locks version 2515 4986 5370 5832 5925 cgroups meminfo version_signature 2718 4999 5373 5842 5938 cmdline misc vmcore 3 5 5378 5851 5941 cpuinfo modules vmnet 3181 5021 5416 5854 5970 crypto mounts vmstat 4 5042 5419 5856 5973 devices mtrr zoneinfo 41 5043 5423 5858 5982 diskstats net
您首先會注意到這些編號的目錄代表系統上正在執行的程序。每個編號的目錄都有一組通用的子目錄,這些子目錄提供有關該程序的資訊。表示目錄的數字與使用 ps 命令看到的程序號一致。我們將在後面的章節中介紹程序。
我們感興趣的目錄和檔案如下
/proc/acpi * Power Management /proc/bus/pci * Note on some distributions this may be /proc/pci /proc/cpuinfo * processor information /proc/devices /proc/dma /proc/interrupts /proc/iomem /proc/ioports /proc/irq /proc/meminfo
/proc 是一個偽檔案系統,用作核心資料結構的介面。大部分是隻讀的,但某些檔案允許更改核心變數。
可用目錄的示例包括
[Number]: Process information running on the system. cmdline: The complete command line, cwd: The working directory, ...
/proc/uptime Since when the system is up and running. /proc/sys/kernel Kernel information. /proc/sys/net Network information. /proc/partitions Hard drive partitions information. /proc/scsi SCSI information. /proc/mounts Mounted file system information. /proc/devices List the loaded drivers. /proc/bus Bus information. /proc/version Linux version.
acpi 是用於監視事件和狀態的介面。
要獲取磁碟資訊,請使用 hdparm。更多資訊可在 hdparm 手冊頁 中找到。
hdparm [options] [devices] Common options: -g: Get the disk geometry. -C: Display the power mode of the hard drive. active/idle: Normal operation, Standby: Low power mode, or sleeping: Lowest power mode. -v: Display all settings, except -i (same as -acdgkmnru for IDE, -gr for SCSI or -adgr for XT). This is also the default behaviour when no flags are specified.
示例
hdparm -g /dev/hda /dev/hda: geometry = 3648/255/63, sectors = 58605120, start = 0
hdparm -C /dev/hda /dev/hda: drive state is: active/idle
以及更多... **粗體文字**
- 您系統的 RAM 大小是多少?
- 哪些裝置共享中斷線?
- 使用 lspci 實用程式和正確的選項繪製系統的 PCI 架構。
- 有多少個 PCI 匯流排和橋接器?
- 是否存在任何 PCI/ISA 橋接器?
- 列出所有 Intel PCI 裝置的 lspci 選項是什麼?
- 將 IDE 硬碟設定為只讀模式的命令是什麼?
- 開啟/關閉硬碟磁碟快取的命令是什麼?
- setpci 實用程式的作用是什麼?(在上面的文章中沒有提到,但請進行網路搜尋以瞭解其作用)
- 寫入 PCI 裝置暫存器 N 中的一個字的命令是什麼?
- 顯示可用物理 RAM 量:使用 free 或 cat /proc/meminfo | grep MemTotal
- 哪些裝置共享中斷線?cat /proc/interrupts | more
- 有多少個 PCI 匯流排和橋接器?lspci | wc -l
- 是否存在任何 PCI/ISA 橋接器?lspci | grep 'PCI\|ISA'
- 列出所有 Intel PCI 裝置的 lspci 選項是什麼?lspci -d 8086:*
- 將 IDE 硬碟設定為只讀模式的命令是什麼?hdparm -r1 <device>
- 如何開啟/關閉磁碟快取硬碟? hdparm -W1 <裝置> hdparm -W0 <裝置>
- setpci 實用程式有什麼作用? setpci 是一個用於查詢和配置 PCI 裝置的實用程式。
- 如何向 PCI 裝置的暫存器 N 寫入一個字? setpci -s 12:3.4 N.W=1