Linux在系统引导期间查找rootfs
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,它就无法装入。
这是所发生情况的简单
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
什么是Socket
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix
系统的输入和输出的话,就很容易了解 ......
ARM Linux启动过程分析
摘 要: 嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不
同体系结构的处理器来说Linux的启动过程也有所不同。本文以S3C2410 ARM处理器为例,
详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。
关键词:ARM Linux boot ......