歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Linux 技巧: 在系統引導期間查找 rootfs

作為一名 Linux? 管理員,您可能會在增加外部存儲卷之後或者甚至在安裝新 Linux 操作系統之後,嘗試重新啟動服務器時遇到諸如 cannot mount rootfs 和 kernel panic 之類的 rootfs 錯誤。本文將概要介紹 x86 平台上的 Linux 引導進程,顯示出現此問題的原因,並提供避免或修正此問題的四個技巧。

問題概述

根文件系統(在樣例錯誤消息中名為 rootfs)是 Linux 的最基本的組件。根文件系統包含支持完整的 Linux 系統所需的所有內容。它包含所有應用程序、配置、設備、數據等。沒有根文件系統,您的 Linux 系統將無法運行。

在重新啟動系統後,您可能會遇到 cannot mount rootfs 錯誤(在 Linux 主機得到 kernel panic 之後)。這種問題經常會在從外部存儲中增加一些存儲卷之後出現,也可能會在完成文件復制並需要重新啟動來完成安裝時出現。

如果出現此問題,您的系統將不會重新啟動。診斷和修正此問題都需要花時間。本文介紹的 4 個技巧應當可以幫助您解決問題並節省時間。

另一個問題是 Linux 內核需要裝入根文件系統,但是它找不到目標設備。換言之,根文件系統沒有出現在它應該在的位置。例如,您把 Linux 根文件系統安裝在 /dev/sda 磁盤中,但是您的系統在重新啟動時無法裝入它。出現這個問題有兩個可能的原因:

1.磁盤 /dev/sda 在系統重新啟動時沒有顯示。

出現這種情況的可能的原因是您的 Linux 主機沒有裝入根文件系統的關鍵驅動器。情況未必如此。Linux 安裝程序將把需要的所有驅動器構建到 initrd 映像中,以便 Linux 系統可以在啟動時輕松地載入設備驅動器。但是,如果您是手動安裝了磁盤,則可能會出現此錯誤。

2.顯示了磁盤 /dev/sda,但是它不是根文件系統。在重新啟動後,您的根文件系統已經改為 /dev/sdb。

這是最可能出現的情況。

那麼,系統重新啟動後 /dev/sda 是如何被重命名為 /dev/sdb 的?在 Linux 中,/dev/sd* 表示 SCSI 設備。Linux 將把這些設備的名稱從 sda 改為 sdz(以及從 sdaa 改為 sdzz,以此類推)。它將把第一個 SCSI 設備命名為 /dev/sda,把第二個 SCSI 設備命名為 /dev/sdb,以此類推。

如果使用在根文件系統設備適配器驅動器之前裝入的驅動器(最初位於 /dev/sda)在適配器中安裝設備,則根文件系統將移到命令鏈的下一個字母(/dev/sdb),並且根文件系統不是遇到的第一個設備。因此,如果它在行首找不到 rootfs,它就無法裝入。

這是所發生情況的簡單說明,但是為了給這個場景補充更多上下文,讓我們概要說明一下 Linux 引導進程(如果您了解 “根本” 原因,請直接跳到 修正問題的四個技巧)。

Copyright © Linux教程網 All Rights Reserved