VFS: Cannot open root device 解决思路

2023-05-16

理论

VFS: Cannot open root device \"%s\"(A) or %s(B): error %d(C)\n"
Please append a correct \"root=\" boot option; here are the available partitions:\n
VFS: Unable to mount root fs on %s(D)
以上是 init/do_mounts.c 文件中的 函数mount_block_root 做的打印

表示  利用所有的文件系统 调用 do_mount_root  对 一个分区(通过是您指定的) 进行了挂载,但是还是挂载失败
上面的信息就是打印出来的帮助您定位错误的信息

内核会针对不同的情况对 A B C D 进行填充
A : 如果您指定的是 root=/dev/hda2 ,那么 A 为 "/dev/" 后面的 hda2
	如果您指定的是 root=/xxx/hda2(前五个字节不为"/dev/") ,那么 A 为 /xxx/hda2
B : 根据您指定的 root=/dev/hda2 , 根据ROOT_DEV = name_to_dev_t(root_device_name); 算出来的设备号,从而算出来的主次设备号,格式 为 unknown-block(主设备号,次设备号)
C : do_mount_root 的返回值,返回值的定义在 内核代码中的 include/uapi/asm-generic/errno-base.h
D : 和B一样

实例

  • 1
VFS: Cannot open root device "mmcblk0p1" or unknown-block(179,1): error -19

Please append a correct "root=" boot option; here are the available partitions:

----------------------------------------------------------------

A为 mmcblk0p1
B为 unknown-block(179,1)
C为 19

A的格式是对的,mmc设备的分区名请参考 Documentation/block/cmdline-partition.txt
B表示 已经找到了mmc设备的驱动, 因为主次设备已经出来了,且是对的. 请参考 Documentation/devices.txt
C为19 表示 #define ENODEV      19  /* No such device */ 


这个问题的结论是
	1.有驱动
	2.可查磁盘名级分区名是否正确
	3.可查对应的文件系统

  • 2
VFS: Cannot open root device "mtdblock5" or unknown-block(0,0): error -6

----------------------------------------------------------------

A为 mtdblock5
B为 unknown-block(0,0)
C为 -6

A的格式是对的
B 0 = reserved as null device number ,表示没找到该设分区的设备号,驱动可能有问题
C -6 #define ENXIO        6  /* No such device or address */


这个问题的结论是
	1.查驱动是否存在
	2.可查磁盘名级分区名是否正确
	3.可查对应的文件系统

  • 3
VFS: Cannot open root device "nfs" or unknown-block(0,255)
----------------------------------------------------------------
内核中nfs设置不对,必须包括如下配置
CONFIG_INET=y
CONFIG_IP_PNP=y
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_ROOT_NFS=y
同时注意配置 的 nfs 的版本,要和服务器上的nfs版本(nfsstat 可查到)匹配
CONFIG_NFS_V2=y
CONFIG_NFS_V3=y

-------------

VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
b300        31205376 mmcblk0  driver: mmcblk
  b301          529121 mmcblk0p1 00000000-0000-0000-0000-000000000mmcblk0p1
  b302        30410758 mmcblk0p2 00000000-0000-0000-0000-000000000mmcblk0p2
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

通过  指定nfs版本解决 : nfsroot=192.168.1.250:/home/rootfs,proto=tcp,nfsvers=3

-----------------------
VFS: Unable to mount root fs via NFS, trying floppy.
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[<c0039ca8>] (unwind_backtrace+0x0/0xfc) from [<c04cf028>] (dump_stack+0x18/0x1c)
[<c04cf028>] (dump_stack+0x18/0x1c) from [<c04cf08c>] (panic+0x60/0x1ac)
[<c04cf08c>] (panic+0x60/0x1ac) from [<c0008fd0>] (mount_block_root+0x204/0x25c)
[<c0008fd0>] (mount_block_root+0x204/0x25c) from [<c00090b0>] (mount_root+0x88/0xd0)
[<c00090b0>] (mount_root+0x88/0xd0) from [<c0009204>] (prepare_namespace+0x10c/0x1a8)
[<c0009204>] (prepare_namespace+0x10c/0x1a8) from [<c00084c4>] (kernel_init+0xf0/0x130)
[<c00084c4>] (kernel_init+0xf0/0x130) from [<c0034a34>] (kernel_thread_exit+0x0/0x8)

没有网卡驱动

  • 4
No filesystem could mount root, tried:  ext3 ext2 cramfs vfat msdos iso9660 romfs  
kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)
---------------------------
磁盘分区被格式化为xxx文件系统,内核镜像无该xxx文件系统的支持
  • 挂载不上 , 内核给的提示
一般挂载不上的话,会有打印 here are the available partitions:
然后在下面打印如下

Please append a correct "root=" boot option; here are the available partitions:
0300	16777216	hda 	driver:	ide-disk
	0301 	499873		hda1
	0302	16277152 	hda2
1600	4194302 hdc 	driver: ide-cdrom
0800 	2097152 sda 	driver: sd
	0801	2096451	sda1
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

-----------------
以下为注释
0300(十六进制数)	16777216(有多少个磁盘扇区)	hda(磁盘名) 	driver(所用的驱动):	ide-disk
	0301(十六进制数) 	499873(有多少个扇区)		hda1(分区名)
	0302	16277152 	hda2
1600	4194302 hdc 	driver: ide-cdrom
0800 	2097152 sda 	driver: sd
	0801	2096451	sda1
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

init=xxx 中 xxx 的格式

name_to_dev_t 函数的注释

1. 十六进制数
	0x302 302 0X302
		//3为主设备号,2为此设备号
		//0xaaabb
		//aaa代表主设备号
		//bb代表设备号码
2.带冒号的数对
	3:2 
		// 只能是%u:无符号十进制整数
		// 3 为主设备号
		// 2 为此设备号
3. /dev/nfs
	// setenv bootargs 'noinitrd mem=64M console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.3:/nfs ip=192.168.0.5'

4. 不以数字结尾的字符串且代表磁盘
	/dev/sda : 代表第1个硬盘
	
5. 	以数字结尾的字符串且代表分区
	/dev/sda1 : 代表第1个硬盘的第1个分区

6.  已数字结尾的字符串且代表磁盘
	/dev/mmcblk0:代表第1个mmc设备
7.  如果磁盘名以数字结尾,则分区名需要加p : /dev/<disk_name>p<decimal>
	/dev/mmcblk0p1
6.	PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF

如果不为这几种,则返回 return (0,0). 



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VFS: Cannot open root device 解决思路 的相关文章

  • Windows Phone 8.1 C# 应用程序:仅在发布模式下的真实设备上发生严重崩溃 (ExecutionEngineException)

    想象一下以下结构类型 public struct Token IDictionary
  • 在音频设备连接/断开时自动收到通知?

    每当用户连接或断开音频设备时是否可以自动收到通知 在 Vista 中 您可以使用 Core AudioIMMNotificationClient 接口 http msdn microsoft com en us library window
  • Android adb 在列表设备和其他命令中挂起

    当我尝试从终端运行 adb 命令时 尤其是adb devices adb kill server and adb start server它挂起 我需要输入CTRL C退出进程 无法将 APK 部署到物理或虚拟设备 有东西阻止了 adb 进
  • 如何检查 bash 脚本中是否以 root 身份运行

    我正在编写一个需要 root 级别权限的脚本 并且我想这样做 以便如果该脚本不以 root 身份运行 它只是回显 请以 root 身份运行 并退出 这是我正在寻找的一些伪代码 if whoami root then echo Please
  • 开始对计算机以外的其他东西进行编程的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在计算机之外开始编程的最佳方法是什么 我指的不是带有 API 的手机之类的主流产品 请假设具备 C C 的工作知识 我投票给任天堂 DS 不错的
  • 多个超级用户命令 Android

    我正在尝试运行这个 String hin1 su c mount o remount rw t yaffs2 dev block mtdblk3 system try Runtime getRuntime exec hin1 catch I
  • 如何知道节点是 Virtual TreeView 中的根节点?

    我正在使用虚拟树视图 有没有可靠的方法来知道节点是否是根节点 我尝试使用 if not Assigned Node Parent then Output This is root else Output This is not root 但
  • C# 如何知道给定路径是否代表根驱动器?

    我如何知道给定目录是否是根驱动器 除了检查其路径是否等于 A B C 等 检查 DirectoryInfo Parent 是否为空 DirectoryInfo d new DirectoryInfo if d Parent null IsR
  • 将 Rails 更新到 3.1.1 我得到未初始化的常量 Product::RAILS_ROOT

    从 3 0 1 更新到 3 1 1 后 我的应用程序根据相关铁路广播公司 http railscasts com episodes 282 upgrading to rails 3 1我似乎明白了 未初始化常量 Product RAILS
  • C++跨平台蓝牙库

    是否有任何用 C 编写的跨平台库可以知道连接到这台电脑的设备列表 这里有一些额外的库 但没有一个真正适合生产 https github com OpenBluetoothToolbox SimpleBLE https github com
  • 根路径不适用于 php include

    在链接开头获取根文件夹在 php include 中不起作用 例如 example example php 解决办法是什么 我假设根文件夹是指您的网络文档根目录 而不是文件系统根目录 为此 您可以 将 Web 根文件夹添加到包含路径 htt
  • 无法为 Kindle Fire HD 安装 ADB

    我正在尝试root它 尽管在我安装了正确的ADB驱动程序之后 当我插入我的Kindle fire HD 7 时 点燃火 gt Android 复合 ADB 接口 没有出现在设备管理器中 因此我无法执行root 我已将 0x1949 添加到
  • 获取Android中的文件权限(root)

    在尝试了一些获得 root 权限的设备后 我被这些文件困住了 假设我们在根文件夹中的某个位置有一个文件 我想从我的应用程序中读取 写入该文件 到目前为止我发现的唯一方法是更改 文件权限 例如 String cmd su c chmod 77
  • 检测到设备正在关闭?

    在我的 Android 应用程序中 如果设备突然关闭 我需要执行一些操作 有什么方法可以检测设备是否已关闭 广播操作 设备正在关闭 这是广播时 设备正在关闭 完全关闭 而不是睡眠 一次 广播完毕 将进行最后的关闭 所有 未保存的数据丢失 应
  • 使用构建标签进行Android根检测?

    以下方法是我们以编程方式检测 Android 设备是否已 root 的方法之一 public boolean checkRootMethod1 String buildTags android os Build TAGS if buildT
  • Android 应用程序自动且静默更新?

    我开发了一个应用程序 想要更新自身 并想要以下功能 设备已植根 1 自动检查可以每次启动时更新 我可以做到 2 将apk文件下载到本地 我可以做 3 使用自定义对话框更新 或者静默更新 我不知道 编辑 我的应用程序在带遥控器的电视上运行 默
  • Android Studio 无法识别我的设备 - 一加一

    我激活了 开发人员选项 并选中 USB 调试 我在 sdk 上安装了 google usb 驱动程序 但 Android studio 仍然无法识别我的手机 一加一 我在朋友的笔记本电脑上测试了我的手机 它可以工作 当我安装驱动程序时 我的
  • 无法在 root 设备上运行程序“su”

    我有一部运行 Android N AOSP 版本 的 root 手机 我试图从我的应用程序获取 root 权限 但它不断被拒绝 这是我正在尝试的 java lang Process p runtime exec su DataOutputS
  • 放弃root权限

    我有一个以 root 身份启动的守护进程 因此它可以绑定到低端口 出于安全原因 初始化后我非常希望它放弃 root 权限 谁能指点我已知正确C 中的一段代码可以做到这一点 我阅读了手册页 研究了不同应用程序中的各种实现 它们都是不同的 其中
  • 错误 1045 (28000) 用户“root”@“localhost”访问被拒绝(使用密码:YES)

    请原谅我是一个完全的初学者 我正在尝试使用 cmd 行登录到我在 Windows 计算机上使用 easyPHP 安装的第一个 mySQL 数据库 我将进入 mysql bin 并输入命令 mysql u root 为了登录 但我收到以下消息

随机推荐

  • elementUI中el-dropdown的command如何传递多个参数

    el dropdown的command事件默认传递一个参数 xff0c 即每个下拉选项el dropdown item中设定的command的值 xff0c 那么如何传递多个参数呢 xff1f 实现方法 xff1a 动态设置el dropd
  • 记录ubuntu18.04下搭建nuttx RTOS的过程

    官方参考链接 xff1a https nuttx apache org docs latest quickstart install html Getting started 61 61 gt Installing 主要记录一下按照链接指导
  • 词袋

    brief描述子 一般Sb 61 48 Lb为256 brief描述子不具备旋转尺度不变性 词袋 提取大量图片的描述子 xff0c 将描述子用k means聚类成K堆 xff0c 这是第n层 xff0c 把每一堆再次聚类形成下一层 xff0
  • 板子和电脑配置ros通信

    它们需要连在同一个路由器上 1 获取板子和电脑的ip 比如板子名为RV1126 RV1109 xff0c ip为192 168 5 48 电脑名为qian hw xff0c ip为192 168 5 25 2 在电脑端设置 xff1a ba
  • 通过跟踪效果来看vins输出结果

    下面是vins跑出来的结果 xff0c vio输出是绿线轨迹 线速度是0 28m s xff0c 拐角的地方是我根据蓝线把vio轨迹掰正了 vio在初始阶段走的比较弯曲 xff0c 后有一段笔直的轨迹 xff0c 这里旋转非常慢 xff0c
  • vins-fusion 融合rtk原理

    vins fusion融合rtk原理 xff1a 使用优化的方式融合 xff0c 假设融合后的位姿是fusion T n vio输出的位姿是vio T n xff0c rtk输出的位姿是rtk T 只有最后一帧 那么 fusion T的初值
  • Docker 方式搭建 Prometheus + grafana

    prometheus 官方仓库 prometheus 官方文档 GETTING STARTED 参考 基于docker 搭建Prometheus 43 Grafana的过程详解 按照官方仓库文档中写的 Docker images Docke
  • 报错:The following signatures couldn‘t be verified because the public key is not available: NO_PUBKEY

    apt update 最后报错 sudo apt update 报错 91 packages can be upgraded Run 39 apt list upgradable 39 to see them W An error occu
  • ubuntu上 eclipse+arm-linux-gcc+jlink+s3c2440a开发环境搭建

    0 环境搭建概述 所需工具 xff1a xff08 1 xff09 Eclipse Eclipse的本身只是一个框架平台 xff0c 但是众多插件的支持 xff0c 使得Eclipse拥有较好的灵活性 xff08 2 xff09 CDT C
  • 在函数里修改全局变量

    names 61 39 Lilei 39 def change name global name 全局变量我来撑控 names 61 39 Hi 39 print names change name 39 Hi 39 print names
  • 守护进程详解及创建,daemon()使用

    转载于 xff1a http www cnblogs com mickole p 3188321 html 侵删 一 xff0c 守护进程概述 Linux Daemon xff08 守护进程 xff09 是运行在后台的一种特殊进程 它独立于
  • 在VsCode中如何使用Git

    大部分前端都是用VsCode作为代码编辑器 xff0c 那么我们如何在VsCode中使用Git呢 xff1f 准备工作 xff1a 1 在vscode中安装插件GitLens 使用教程 xff1a 1 点击文件 新建窗口 2 克隆git仓库
  • 关于C++继承类和对象

    继承是C 43 43 中一个很好的特性 xff0c 它能够从已有的类派生出新的类 xff0c 而继承类继承了原有类 xff08 称为基类 xff09 的特征 继承类有三种 xff0c 公有继承 保护继承 私有继承 使用公有继承 xff0c
  • 是程序员就去Leetcode刷题吧

    leetcode 是一个美国的在线编程网站 xff0c 上面主要收集了各大IT公司的笔试面试题 xff0c 对于应届毕业生找工作是一个不可多得的好帮手 这个网站的的好处在于它会告诉你测试数据以及你的输出和正确的输出是什么 xff0c 方便大
  • 四旋翼飞行器的控制规律及算法实现

    四旋翼飞行器的控制规律及算法实现 http bbs loveuav com forum php mod 61 viewthread amp tid 61 211 amp fromuid 61 19507 出处 爱无人机 专注无人机开发与设计
  • 基于数据融合和串级PID的小型四旋翼无人机高度测量与控制系统

    作者 xff1a Tomy 摘要 xff1a 简单介绍了一种基于 Mahony 算法无人机姿态解算算法 xff0c 并在这个的基础上设计了一 种融合惯导加速度计和气压计的小型无人机高度测量系统 xff0c 同时利用该高度测量系统设计了 基于
  • 四旋翼飞行器Quadrotor飞控之 PID调节(参考APM程序)

    做四轴也有一段时间了 xff0c 最近一直在做PID方面的工作 现在四轴基本可以实现室内比较稳定的飞行 xff0c 操控手感也可以接受 稍后上试飞视频 在此把一些PID方面的经验总结总结和大家分享一下 首先介绍一下大概的硬件组成 xff1a
  • 四旋翼微型飞行器设计

    作者 xff1a 红桃K 0 引言 微型飞行器 Micro Air Vehicle xff0c 简称MAV 是20世纪90年代发展起来的一种新型飞行 器 根据美国国防高级研究计划局 DARPA 的定义 xff0c 微型飞行器的基本技术指标包
  • 下载软件 (一) JLink_Windows

    硬件下载器 用 jlink 或者 jlink ob 软件用 JLink Windows 套件中的 JFlash span class token punctuation span exe https span class token ope
  • VFS: Cannot open root device 解决思路

    理论 VFS Cannot open root device 34 s 34 A or s B error d C n 34 Please append a correct 34 root 61 34 boot option here ar