linux kernel 卡在提示信息Waiting for root device /dev/mmcblk0p1...处
一.背景
1.1 移植linux-4.14内核的过程中,此时使用的是ext4文件系统,并且将根文件系统存储在sd卡的第一个分区上
1.2 内核打印完Waiting for root device /dev/mmcblk0p1...这一句信息之后并没有panic,而且串口还可以回应
二.分析
既然处在一直等待根文件系统挂载,那么可以去扒一下内核代码,请看
/*
* Prepare the namespace - decide what/where to mount, load ramdisks, etc.
*/
void __init prepare_namespace(void)
{
...
/* wait for any asynchronous scanning to complete */
if ((ROOT_DEV == 0) && root_wait) {
printk(KERN_INFO "Waiting for root device %s...\n",
saved_root_name); 这里是打印信息的地方
while (driver_probe_done() != 0 ||
(ROOT_DEV = name_to_dev_t(saved_root_name)) == 0) 从此处可以看出程序会判断driver_probe_done(),这个与驱动的probe有关,还有ROOT_DEV = name_to_dev_t(saved_root_name)) == 0这个判断,saved_root_name当前等于/dev/mmcblk0p1,那么name_to_dev_t就去获取这个真实物理设备的设备号,然后将设备号复制给变量ROOT_DEV,再使用ROOT_DEV与0进行比较,如果驱动没有probe ok,driver_probe_done()执行的结果就为非0,当然使用name_to_dev_t获取到的内容也就为0,那么程序就会一直处在这个while循环中,每5毫秒判断一次,直到驱动probe OK
msleep(5);
async_synchronize_full();
}
...
}
三.解决
从以上的分析可以总结如下:
/dev/mmcblk0p1这个物理设备对应的驱动没有被加载,因此驱动一直无法probe,因此加上CONFIG_MMC_SDHCI等与mmc有关的编译选项,然后重新编译内核即可
linux kernel 卡在提示信息Waiting for root device /dev/mmcblk0p1...处的更多相关文章
- [轉]Linux kernel <2.6.29 exit_notify() local root exploit分析(2009-1337)
author : deep_pro目前网上的这个exploit(http://www.milw0rm.com/exploits/8369)的分析是有些问题的(http://forum.evilocta ...
- 用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境【转】
转自:http://www.cnblogs.com/pengdonglin137/p/5023342.html#_label2 阅读目录(Content) 环境介绍: 下载Linux内核 安装arm的 ...
- 用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境
参考: http://blog.csdn.net/linyt/article/details/42504975 环境介绍: Win7 64 + Vmware 11 + ubuntu14.04 32 u ...
- linux kernel 提示VFS: Cannot open root device "mmcblk0p1" or unknown-block(179,1): error -19等信息后发生panic
一.背景 文件系统安装在sd卡的第一个分区中,使用的是ext4文件系统,linux内核版本为4.14 二.思考 在内核启动之前,uboot给内核传递了参数root=/dev/mmcblk0p1,但是为 ...
- 深入linux kernel内核配置选项
============================================================================== 深入linux kernel内核配置选项 ...
- the Linux Kernel: Traffic Control, Shaping and QoS
−Table of Contents Journey to the Center of the Linux Kernel: Traffic Control, Shaping and QoS 1 Int ...
- Linux kernel中断子系统之(五):驱动申请中断API【转】
转自:http://www.wowotech.net/linux_kenrel/request_threaded_irq.html 一.前言 本文主要的议题是作为一个普通的驱动工程师,在撰写自己负责的 ...
- (十四)Linux kernel mmc 框架说明,包括mmc_test使用方法
1.Linux 总线模型 Linux下的任何驱动在内核中最终都抽象为bus, driver以及device三者间的相互作用. 总线是处理器和一个或多个设备之间的通道,在设备模型中,所有 ...
- linux内核可以接受的参数 | Linux kernel启动参数 | 通过grub给内核传递参数
在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB ...
随机推荐
- java FileUtil(文件操作类)
package tools; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; i ...
- LeetCode——Delete Node in a Linked List
Description: Write a function to delete a node (except the tail) in a singly linked list, given only ...
- 解决jquery在IE下removeAttr不生效的问题
使用jquery动态操纵DOM的时候在IE下会遇到remvoeAttr() 不生效的问题, 解决的办法是使用prop()方法: var node = $("div>input" ...
- 170525、解决maven隐式依赖包版本问题
今天在使用dubbo2.5.3版本的时候,启动项目的时候发现一个问题,tomcat启动一直报错 Caused by: java.lang.IllegalStateException: Context ...
- 一个不需要Log4Net的写日志的简单方法
有些项目写日志时会选择大名鼎鼎的Log4Net.而在我们使用它时,总会出现一些诸如版本不匹配而造成的写日志失败的情况,还要改web.config,还要改AssemblyInfo.而且,它的失败,并不是 ...
- Pandas介绍
pandas是python非常好用的一个数据结构包,包含有许多数据操作的方法,能够让你快速简便的提取和保存数据,节省你在这块的数据流操作耗时,从而让你更加专注于逻辑的设计和算法的设计.很多算法的相关库 ...
- redis cluster 集群畅谈(三) 之 水平扩容、slave自动化迁移
上一篇http://www.cnblogs.com/qinyujie/p/9029522.html, 主要讲解 实验多master写入.读写分离.实验自动故障切换(高可用性),那么本篇我们就来聊了聊r ...
- Day20 javaWeb监听器和国际化
day20 JavaWeb监听器 三大组件: Servlet Listener Filter Listener:监听器 初次相见:AWT 二次相见:SAX 监听器: 它是一个接口,内容由我们来 ...
- Mirror--镜像相关操作
其他相关操作1. 关闭镜像--关闭镜像USE [master]GOALTER DATABASE Demo1 SET PARTNER OFFGO 2. 证服务器--移除见证服务器USE [master ...
- Mirror--自增键在镜像中的影响
测试环境: OS: Windows Server 2008 R2 Enterprise SQL: SQL Server 2012 Enterprise 测试场景: 有SERVER A上数据库 DB10 ...