linux内核开启overlay,Linux-overlay启动挂载为只读或写文件异常
背景
路由器在使用过程中,偶像启动挂载文件系统异常,查看打印后发现挂载overlay异常,打印错误代码-39,跟踪代码发现由于work目录非空导致清除失败,接下来分析原因。
overlay原理
通过overlay挂载,可保护lower分区使其只读,对lower分区需改文件放在upper目录,workdir目录用于文件的原子性保证。
错误打印overlayfs: cleanup of 'work/work' failed (-39)
Unable to handle kernel NULL pointer dereference at virtual address 00000030
pgd = ffffffc034282000
[00000030] *pgd=00000000343ca003, *pud=00000000343ca003, *pmd=000000003e1c6003, *pte=0000000000000000
Internal error: Oops: 96000007 [#1] PREEMPT SMP
Modules linked in:
CPU: 1 PID: 910 Comm: rm Not tainted 4.1.27 #1
Hardware name: Broadcom-v8A (DT)
task: ffffffc03e103100 ti: ffffffc033c7c000 task.ti: ffffffc033c7c000
PC is at ovl_do_remove+0x158/0x394
LR is at ovl_do_remove+0x150/0x394
pc : [] lr : [] pstate: 20000145
sp : ffffffc033c7fcd0
x29: ffffffc033c7fcd0 x28: ffffffc033c7c000
x27: 0000000000000000 x26: 00000000ffffffec
x25: 00000000ffffffeb x24: 0000000000000000
x23: ffffffc03e5817d0 x22: ffffffc03423a7c0
x21: ffffffc03e581728 x20: 00000000fffffff4
x19: ffffffc03e57f0d8 x18: 0000000000000000
x17: 0000000000000000 x16: ffffffc00014541c
x15: 0000000000000000 x14: 0000003fffffffff
x13: 0000003fffffffff x12: 0000000000000000
x11: 0000000000000000 x10: 0000000000000000
x9 : 0000000000000000 x8 : 0000000000000000
x7 : ffffffc0007f7678 x6 : ffffffc03423a838
x5 : 0000000000000000 x4 : 0000000000000000
x3 : 0000000000000000 x2 : ffffffc03e1035c8
x1 : ffffffc03ea9f9c0 x0 : ffffffc03e55cd98
解决思路
1、最简单的方式在启动脚本种检查work非空就删除文件并重启进行恢复,方法简单但是有副作用导致二次重启;dir="/xxx/work/work"
is_empty_dir(){
return `/bin/ls -A $1|wc -w`
}
if [ -d $dir ]; then
/bin/echo "$dir is dir"
if is_empty_dir $dir
then
/bin/echo "$dir is empty"
else
/bin/echo "$dir is not empty, cleanup!"
/bin/rm -rf $dir/*
reboot
fi
else
echo "$dir is NULL!"
fi
2、在启动挂载overlay时,发现work目录非空也强制进行删除,work目录下存放的时中间文件,可以直接删除的;
解决
网上搜索发现有网友遇到此问题,并通过内核补丁解决此问题,这个问题应该算是overlay的bug,在后面高版本的内核已经解决了此问题,所以问题很简单了,找到补丁或者对比高版本内核,合入清除work代码;
总结
需要对overlay文件系统工作方式熟悉,并跟踪代码发现问题和解决问题。
linux内核开启overlay,Linux-overlay启动挂载为只读或写文件异常相关推荐
- linux内核开启ssh,linux开启ssh服务
本文概略:1)ubuntu发行版开启ssh.2)centos发行版开启ssh 1.ubuntu发行版安装/开启ssh服务 1.1 安装ssh服务端 sudo apt-get install opens ...
- Linux内核开启DebugFS以及查看debug信息(/sys/kernel/debug及debugfs)
一.Linux内核开启DebugFS 进入内核配置界面,查找DebugFS: 开启配置: 二.Linux内核挂载DebugFS mount -t debugfs none /sys/kernel/de ...
- 编译Linux内核没有zImage,Linux 编译系统的简单介绍与内核编译安装
这里不只是讲怎样编译.安装Linux内核的,更主要的是介绍内核的编译系统和各个重要的文件.最后还利用学到的编译.安装Linux内核去修改Linux的01调度变成随机调度.如果你只是需要编译.安装内核的 ...
- 武汉linux内核好找吗,Linux内核入门
Linux内核入门 收藏 如何获取Linux内核源代码 下载Linux内核当然要去http://www.kernel.org/了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补 ...
- linux 内核优化实战,Linux编译优化必须掌握的几个姿势总结
01.编译选项和内核编译 Linux内核(英语:linux kernel),是一种计算机操作系统内核,已C语言和汇编语言写成,匹配POSIX标准,以GNU通用公共许可证发布.从技术上说Linux只是一 ...
- linux 内核 课程,Linux内核分析课程-全面剖析Linux内核技术 揭开Linux内核的面纱 Linux内核学习视频教 ......
课程名称 Linux内核分析课程-全面剖析Linux内核技术 揭开Linux内核的面纱 Linux内核学习视频 课程目录 (1)\1, 计算机是如何工作的?:目录中文件数:0个 (2)\2, 操作系统 ...
- 编译3.0的linux内核,1-3-编译Linux内核
1-3-编译Linux内核 1.将Linux源码包拷贝到共享文件夹. 2.进入共享文件夹. 3.解压,命令#tar xvfj Kernel_3.0.8_TQ210_for_Linux_v2.2.tar ...
- linux内核精髓:精通linux内核必会的75个绝技,Linux内核精髓精通Linux内核必会的75个绝技 PDF 高清扫描版...
经过近20年的发展,Linux操作系统已经成为当今最成功的开源软件之一,使用广泛,影响深远.随着Linux操作系统功能的不断丰富和完善,Linux内核的源代码也从最初的几万行增加到如今的数百万行,庞大 ...
- 2021-10-16python笔记(Linux内核简介与Linux基础命令)
前面的博文已经教会了大家如何下载和安装Linux操作系统,并且使用Xshell软件远程连接Linux服务器,这节课我们要进入真正的Linux基础学习中. 知识点概括: 1.Linux的心脏-Linux ...
最新文章
- requests模拟登陆 验证码
- 如何查找cvpr类的论文_如何查找期刊论文?(3个实用的方法)
- unity3d为对象添加脚本的两种方法
- 10个有趣的Python教程,附视频讲解+练手项目。
- 计算机网络 --- 数据链路层CSMA/CA协议
- samba在企业网应用
- 11.python之线程,协程,进程,
- 具体数学-第7课(取整基础)
- mysql存储过程的学习(mysql提高执行效率之进阶过程)
- 5个Web前端开发软件,零基础入门完全够用了!
- 如何实现电脑端和手机端数据传输与共享
- 计算机服务添加打印机服务,windows7系统添加打印机Print Spooler服务教程
- 通信原理学习笔记6-1:数字解调——基础解调链路、匹配滤波器和AWGN信道最佳接收机
- 房地产企业项目管理的特点与目标
- WPS office 2019中如何改变Word公式编辑器中公式的颜色???
- vant swipe 三图一屏
- 下属被阿里挖角的那个早晨,我开始想念周鸿祎!
- 2019-2-27-VisualStudio-插件-翻译注释
- ROS基础(13)——机器人建模之运动仿真
- Ubuntu安装luminati
热门文章
- 安卓手机上用termux编译TeX文档并生成PDF
- opencv训练样本分类器
- 计算最短路径的A* 算法简介
- 9_less中的层级结构
- ES6_字符串模板以及其使用
- .net oracle 连接超时_ADO.NET (一) 前言
- HTML基础知识点(2)——常用标签
- hdfs 数据迁移_基于 JindoFS+OSS 构建高效数据湖
- mysql可扩展数据库_五大技巧提高MySQL可扩展性
- python中if控制语句_了解Python控制流语句——if语句