嵌入系统squashfs挂载常见问题总结
由于squahsfs的一些优点,嵌入系统常常直接使用squashfs作为initrd挂载到/dev/ram,作为rootfs。这里对常见的一些问题进行一些分析。
1. kernel启动出现错误
RAMDISK: Couldn't find valid RAM disk image starting at 0.
kernel没有找到文件系统,不能mount到/dev/ram。这不管是squanshfs,还是其他的文件系统作为rootfs,都可能出现。一般是bootloader指定载入rootfs的内存地址和kernel的命令行initrd参数指定的内存地址不符。这样kernel找不到superblock,报出这样的错误。
2. kernel已经找到文件系统,但在挂载是出现错误
squashfs: SQUASHFS error: unable to read xattr id index table
一个squashfs文件系统最多由九个部分组成,按字节对齐方式组合。如下所示:
---------------
| superblock |
|---------------|
| compression |
| options |
|---------------|
| datablocks |
| & fragments |
|---------------|
| inode table |
|---------------|
| directory |
| table |
|---------------|
| fragment |
| table |
|---------------|
| export |
| table |
|---------------|
| uid/gid |
| lookup table |
|---------------|
| xattr |
| table |
---------------
可以看到xattr(扩展属性)表处于整个文件系统的最末尾。出现错误无法读取扩展属性表一般是因为载入的initrd不完整。可能由于bootloader的load指令引起。比如bootloader的-max参数不对,或者有的bootloader的-max参数有缺省值,如果不显式指定的话,可能导致读入的文件不完整。所以最好指定。
load -raw -nz -addr=0x00680000 -offset=0x600000 -max=100000000 usbdisk0:rootfs.squashfs
再一个也有可能是kernel的initrd的大小参数不正确。第二个参数指定initrd的大小。
initrd=0x00680000,100000000
3. 挂载时出现
SQUASHFS error: zlib decompression failed, data probably corrupt
SQUASHFS error: squashfs_read_data failed to read block 0x97eb83
SQUASHFS error: Unable to read fragment cache entry [97eb83]
根据squashfs使用的压缩方法不用,这里可能出现zlib,xz或者其他的压缩方式解压缩失败。出现这种错误一般是因为文件系统数据被破坏了。有可能是因为保存squashfs的介质,比如flash损坏了,自然载入的数据不正确。还有一种情况是,bootloader用load命令把squashfs载入内存时选择的地址不对。squashfs文件系统载入的内存不能和bootloader自身使用的内存地址范围有交叉。还有后面载入内核,以及其他一些操作,比如载入dtb,都有可覆盖squashfs载入的数据导致出现类似的错误。有时候这种错误很隐蔽,系统启动挂载时不出现任何错误,而在系统运行中某个时候才出现。因为你不知道squashfs哪一部分数据被破坏,很可能mount时用到的数据没有被破坏。而直到使用到被破坏数据时才出现这种错误。
嵌入系统squashfs挂载常见问题总结的更多相关文章
- Saiku嵌入系统使用时传参数访问saiku(十六)
Saiku嵌入系统使用时传参数访问saiku Saiku通过iframe嵌入其他系统使用时,我们可以设定参数信息,然后根据url中参数对结果进行筛选哦. 这里我们实现的是根据日期字段进行范围查询,UR ...
- Ubuntu 16.04 系统无法挂载u盘的问题
Ubuntu系统无法挂载U盘设备,提示错误为:mount:未知文件系统类型“exfat”.这是因为Ubuntu默认情况下是不允许挂载U盘的,想在Ubuntu系统下挂载U盘,就要用下面的方法了. sud ...
- linux系统usb挂载
本次例程的环境是在FC6下,通过终端操作的. 注意要挂载U盘需要有管理员的权限. 切换成管理员,输入: su root 然后输入管理员密码,进行密码认证: 成功后,先在 /mnt 下建立一个名叫USB ...
- linux系统磁盘挂载
1.查看系统磁盘挂载情况 fdisk -l 2.格式化磁盘 mkfs -t ext3 /dev/sdb 3.挂在磁盘 mount /dev/sdb /disk2 4.查看磁盘挂载情况 df -h 5. ...
- Raid5之后安装系统,挂载磁盘
配置RAID5 略 2.U盘安装centos系统(我的版本是centos7.0) 这一步骤网上很多,可以参考这篇:http://jingyan.baidu.com/article/359911f571 ...
- Ubuntu双系统无法挂载Windows10 硬盘的解决方法
我的电脑是在Windows 10下安装的Ubuntu 14.04双系统,今天进入Ubuntu系统访问Windows 10 磁盘,出现如下错误: Error mounting /dev/sda1 at ...
- Linux 系统磁盘挂载信息文件
设置文件系统挂载信息的文件(etc/fstab),使得开机能够自动挂载磁盘分区 文件系统挂载 方法一: 直接挂在,临时生效 # 格式化系统(没有格式化就没有文件系统,放不了数据) dd if=/dev ...
- 树莓派Raspbian系统格式化挂载硬盘
1.查看树莓派系统挂载的储存设备 使用工具查看系统识别到的硬盘设备,命令: fdisk -l /dev/sda 和 /dev/sdb 分别是两块硬盘. 2.修改硬盘分区 Linux和windows一 ...
- python读取ubuntu系统磁盘挂载情况
磁盘挂载 利用df -h 的命令 此功能主要实现了python 命令行执行函数进行解析df 返回的数据 代码如下 : # liunx 系统获取 磁盘挂载的情况 代码 #!/usr/bin/pyt ...
随机推荐
- java项目编码格式转换(如GBK转UTF-8)
昨天突然下了个Java项目,把项目导入到eclipse中,发现项目是gbk编码格式想把项目变为utf-8,但是发现转换格式比较麻烦就写了这个代码,后面改进了下,想到说不定有人也需要就把它写了出来 代码 ...
- 关于Java String 类型转换时null的问题(转)
关于Java String 类型转换时null的问题 开发中经常遇到从集合类List.Map中取出数据转换为String的问题,这里如果处理不好,经常会遇到空指针异常java.lang.NullPoi ...
- Ubuntu 发行版的 Linux 操作系统
Ubuntu 发行版的 Linux 操作系统.. ------------------------------------- ------------------------------------- ...
- 【Linux】CentOS7无法使用tab补全功能
公司新项目在云环境上用CentOS7搭服务器的时候,遇见了无法Tab键自动补齐的情况,上网搜了一下,是因为Centos7在使用最小化安装的时候,没有安装自动补全的包,需要自己手动安装. yum ins ...
- b64_md5加密Java、JavaScript实现
问题说明 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串).经过md5后的字符数组中含有 ...
- VS2015企业版和专业版永久密匙
专业版:HMGNV-WCYXV-X7G9W-YCX63-B98R2企业版:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV
- 【转载】makefile经典教程
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客: http://blog.csdn.net/haoel/article/details/2886 makefile很重 ...
- poj 2063完全背包
题意:给出总资金和投资年份 ,n个股票 给出股票价格和其一年的利润.问如何选择能获得最大利润. 思路:股票可以重复选择,完全背包问题,完全背包也是从01背包衍生而行的,其主要区别在于中间那层循环的次序 ...
- Project 6:上楼梯问题
问题简述:梯有N阶,上楼可以一步上一阶,也可以一步上二阶.编写一个程序,计算共有多少中不同的走法. 样例输入: 5 样例输出: 8 #include <stdio.h> int count ...
- java伪代码《大道至简》
阅读<大道至简>第一章,深感作者对编程问题的精炼定义,通过对古老寓言故事<愚公移山>的引用,说明了编程的本质,即顺序,分支,循环.其中又将他们扮演的项目组织者,团队经理,编程人 ...