CentOS dmesg日志中常見錯誤代碼及解析
ACPI Error: AE_NOT_FOUND
解讀:ACPI(高級配置與電源接口)在評估某個對象時未找到對應項,常見于硬件與BIOS配置不兼容(如新硬件未在BIOS中啟用)或ACPI表損壞。
示例:[ 0.000000] ACPI Error: AE_NOT_FOUND, While evaluating Null (20200831/psparse-542)
排查:進入BIOS檢查硬件配置(如SATA模式、USB控制器是否開啟),更新BIOS至最新版本。
i8042: PNP: No PS/2 controller found
解讀:未檢測到PS/2控制器(負責鍵盤、鼠標輸入),可能是鍵盤/鼠標未正確連接、控制器硬件故障或驅動缺失。
示例:[ 0.000000] i8042: PNP: No PS/2 controller found.
排查:檢查外設物理連接(更換USB/PS/2接口),嘗試使用外接USB鍵盤/鼠標測試。
ata1: SATA max UDMA/133 abar m2048@0xf6000000 port 0xf680 irq 45
解讀:SATA控制器初始化信息(非錯誤,但需關注后續是否有error或fail關鍵字)。若后續出現ataX: softreset failed或link down,則表示硬盤連接故障。
示例:[ 1.234567] ata1: SATA max UDMA/133 abar m2048@0xf6000000 port 0xf680 irq 45
排查:若出現失敗信息,檢查SATA數據線、電源線連接,更換線纜測試。
Out of memory: Killed process 12345 (python)
解讀:系統內存耗盡,觸發OOM Killer(內存殺手)終止進程以釋放內存。常見于內存不足、進程內存泄漏(如Python腳本未釋放內存)。
示例:[ 1234.567890] Out of memory: Killed process 12345 (python) total-vm:1234567kB
排查:用free -m查看內存使用情況(重點關注available列),用top找出內存占用高的進程(按M排序),優化進程或增加內存。
Memory allocation failed
解讀:內存分配失敗,可能是物理內存不足、虛擬內存(Swap)耗盡或內存泄漏。
示例:[ 567.890123] kmalloc: memory allocation failed: size=1048576
排查:用free -m檢查內存和Swap使用情況,若Swap已滿,可添加Swap分區(fallocate -l 2G /swapfile→chmod 600 /swapfile→mkswap /swapfile→swapon /swapfile);若為內存泄漏,需重啟相關服務或修復程序。
modprobe: fatal: module aufs not found
解讀:嘗試加載aufs(高級多層統一文件系統)內核模塊失敗,說明模塊未安裝或內核不支持。常見于需要aufs的容器或虛擬化場景(如Docker)。
示例:[ 2.345678] modprobe: fatal: module aufs not found in directory /lib/modules/$(uname -r)
排查:安裝對應內核版本的aufs模塊(yum install kernel-devel-$(uname -r)→編譯安裝aufs),或改用其他支持的文件系統(如overlay2)。
[drm:intel_modeset_init [i915]] ERROR Failed to initialize intel modesetting
解讀:Intel集成顯卡驅動初始化失敗,可能是驅動版本不兼容、內核更新后未更新驅動或顯卡硬件故障。
示例:[ 3.456789] [drm:intel_modeset_init [i915]] *ERROR* Failed to initialize intel modesetting
排查:更新Intel顯卡驅動至最新版本(yum install xorg-x11-drv-intel),或回滾內核至之前穩定的版本。
e1000e: eth0: link is not ready
解讀:Intel千兆網卡(e1000e驅動)鏈路未就緒,可能是網線未連接、網卡故障或交換機端口問題。
示例:[ 4.567890] e1000e: eth0: link is not ready
排查:檢查網線連接(更換網線、接口),用ip link show eth0查看網卡狀態(若state UP但link not ready,可能是驅動問題,更新驅動)。
NETDEV WATCHDOG: eth1: transmit timed out
解讀:網卡(eth1)發送數據超時,可能是網絡擁塞、網卡硬件故障或驅動bug。
示例:[ 789.012345] NETDEV WATCHDOG: eth1: transmit timed out
排查:檢查網絡連接(用ping測試連通性),更新網卡驅動(yum update e1000e),或更換網卡測試。
EADDRINUSE: Address already in use
解讀:端口已被占用,常見于多個服務綁定同一端口(如兩個Apache實例都綁定80端口)。
示例:bind: Address already in use(對應errno=EADDRINUSE)
排查:用netstat -tulnp | grep :80或ss -tulnp | grep :80查看占用端口的進程,殺掉沖突進程(kill -9 <PID>)或修改服務端口。
ENODEV: No such device
解讀:指定的設備不存在,可能是硬件未連接、設備名稱錯誤或驅動未加載。
示例:[ 5.678901] scsi_hostadapter: device not found (ENODEV)
排查:檢查硬件連接(如USB設備、SATA硬盤),用lsblk或fdisk -l查看設備是否存在,加載對應驅動(modprobe <driver_name>)。
ENOMEM: Cannot allocate memory
解讀:內存不足,無法完成操作(如分配大塊內存、創建進程)。
示例:[ 901.234567] kmalloc: Cannot allocate memory (ENOMEM)
排查:用free -m查看內存使用情況,關閉不必要的進程釋放內存,或增加系統內存。
[ 1234.567890] CPU0: Core temperature above threshold, cpu clock throttled (total events = 123)sensors命令查看CPU溫度(coretemp-isa-0000),清理風扇灰塵(用毛刷+壓縮空氣),檢查散熱片是否松動,必要時更換風扇。[ 567.890123] power_supply BAT0: failed to update statusupower -i /org/freedesktop/UPower/devices/battery_BAT0查看電池健康狀態(health字段為good/warning/critical),更新電源管理驅動(如acpi、battery模塊)。