我遇到一個錯誤,導致我無法啟動系統。我在 SSD 中安裝了 Windows 8 和 Debian 8,在 HDD 中安裝了其他 Windows 7 和 Ubuntu 14.04(當出現此錯誤時,我正在將 SO 遷移到 SSD)。
[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area
[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
*剪斷*
[ 0.000000] WARNING: CPU: 0 PID: 0 at /build/linux-ELRFVQ/linux-3.16.7-ckt11/drivers/iommu/dmar.c:760 warn_invalid_dmar+0x7a/0x8a()
[ 0.000000] Your BIOS is broken; DMAR reported at address fed90000 returns all ones!
BIOS vendor: American Megatrends Inc.; Ver: 1302 ; Product Version: System Version
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.16.0-4-amd64 #1 Debian 3.16.7-ckt11-1+deb8u3
[ 0.000000] Hardware name: System manufacturer System Product Name/P7H55-M, BIOS 1302 04/25/2011
[ 0.000000] ffffffff81016785 ffffffff8150b3a5 ffffffff81803e80 ffffffff81067767
[ 0.000000] ffffffff81af301c ffffffff81803ed0 00000000fed90000 0000000000000000
[ 0.000000] ffffffff81803fb0 ffffffff81067814 ffffffff8176edb0 ffffffff00000030
[ 0.000000] Call Trace:
[ 0.000000] [<ffffffff81016785>] ? show_stack+0x5/0x50
[ 0.000000] [<ffffffff8150b3a5>] ? dump_stack+0x41/0x51
[ 0.000000] [<ffffffff81067767>] ? warn_slowpath_common+0x77/0x90
[ 0.000000] [<ffffffff81067814>] ? warn_slowpath_fmt_taint+0x44/0x50
[ 0.000000] [<ffffffff8192f4fa>] ? __early_ioremap+0x167/0x1fa
[ 0.000000] [<ffffffff8192f736>] ? early_ioremap+0xf/0x10
[ 0.000000] [<ffffffff81340ee9>] ? acpi_tb_acquire_table+0x39/0x66
[ 0.000000] [<ffffffff8150c3b3>] ? warn_invalid_dmar+0x7a/0x8a
[ 0.000000] [<ffffffff819499d6>] ? detect_intel_iommu+0xe3/0x16a
[ 0.000000] [<ffffffff8190bdd3>] ? pci_iommu_alloc+0x46/0x67
[ 0.000000] [<ffffffff8191b0d5>] ? mem_init+0x11/0x92
[ 0.000000] [<ffffffff81902e1a>] ? start_kernel+0x23b/0x49d
[ 0.000000] [<ffffffff81902a04>] ? set_init_arg+0x4e/0x4e
[ 0.000000] [<ffffffff81902120>] ? early_idt_handlers+0x120/0x120
[ 0.000000] [<ffffffff8190271f>] ? x86_64_start_kernel+0x14d/0x15c
這裡'一個包含所有系統日誌的pastebin。我可以啟動 Windows 7、8 和 Ubuntu 14.04,但是當我嘗試啟動 Debian 時,我得到的是這樣的結果。
當我嘗試啟動 GUI 時,startx
內容如下:
[ 98.627889] nvidia 0000:01:00.0: irq 48 for MSI/MSI-X
[ 100.211135] traps: x-session-manag[534] trap int3 ip:7f3258e78d30 sp:7ffef7745cf0 error:0
巴斯德賓與Xorg.0.log
輸出。
答案1
每個現代系統都使用 MMU 將虛擬記憶體映射到實體記憶體。較新的硬體在其他硬體(例如圖形卡)上也具有此功能。這稱為 IO-MMU。
(看http://www.cyberciti.biz/tips/wp-content/uploads/2007/09/mmu-vs-iommu-memory.png對於一個值一千字的圖形)
在您的情況下,您有一張板載 io-MMU 的 Nvidia 卡,但該卡要么在啟動時未正確啟動,要么無法與您的 Debian 安裝中的驅動程式配合使用。
這導致了四種解決方案:
- 修復韌體。 (在顯示卡或主機板上(又稱 BIOS/UEFI)。
- 在驅動程式中解決這個問題。
- 透過啟動正確設定它的作業系統並在熱重啟期間使其處於部分配置狀態來解決此問題。
- 不要使用這個損壞的功能。
後者可以透過軟體輕鬆完成。根據損壞的方式,嘗試停用 VT-d(在 BIOS 韌體中)或透過核心參數。
要設定內核參數,請參閱此鏈接https://www.kernel.org/doc/Documentation/kernel-parameters.txt。
我認為你想要的選項是 iommu=off 或 soft。
如果您想建立一個不支援 IOMMU 的內核,請檢查您的 .config 檔案中的這些值並「嘗試使用它們」以找到適合您的選項。
CONFIG_GART_IOMMU=y
CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
CONFIG_AMD_IOMMU=y
CONFIG_AMD_IOMMU_STATS=y
CONFIG_IOMMU_HELPER=y
CONFIG_IOMMU_API=y
CONFIG_IOMMU_DEBUG
答案2
BIOS已經是最新版本,但我重新刷新了它,現在一切正常。
更新
問題又來了一次。