嵌入式Linux移植 备份文件系统或者自主选择文件系统

li_rui_1220 2020-09-11 09:23:26
大家好,请教大家一个嵌入式Linux移植的问题。
现在我的文件系统泡在nandflash上,最近测试的时候发现有时候系统起不来,通过查看串口打印结果来看,是文件系统损坏了。

所以我想是否可以在nandflsh上多设立一个分区,如果第一个文件系统启动不了,能够自动启动另一个文件系统。
kernel是否也可以按照这种方式实现。

但是,这种方法如何实现呢?是否可行
有没有啥其他解决方案。
非常感谢!!
...全文
56673 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
洪大宇 2020-10-28
  • 打赏
  • 举报
回复
zynq的话现在使用petalinux吗,这个uboot,kernel,文件系统,是一起打包成BOOT.bin的,有自动配置和自动分区的功能, 而且有的时候显示的文件系统损坏,也有可能是分区有问题导致的文件系统损坏, 我们这边搞的时候就碰到过,后来发现petalinux更好用,配置rootfs的时候,选择自动配置分区,问题就解决了
glen30 2020-10-26
  • 打赏
  • 举报
回复
有两种方法:
1)把ramdisk保存到flash上,在uboot中启动的时候把ramdisk读到内存,把根文件系统放到内存来启动,这样根文件系统相当于只读(每次启动都会重新释放到内存),不会出现损坏的情况
2)把根文件系统做成只读格式的,比如 cramfs等

启动后,再加载一个可读写的文件系统,加载应用程序即可
li_rui_1220 2020-10-13
  • 打赏
  • 举报
回复
引用 3 楼 zourongrong 的回复:
bootloader设置一个标记,在进入bootloader的时候设置这个标记,同时启动一个看门狗,进入os后跑到某一个阶段(比如初始化成功)就清除这个标记,如果系统没起来,那么这个标记就不会清除,同时看门狗会复位系统。再次从bootloader里面起来的时候,判断这个标记是否被设置过了,如果是被设置过了,说明当前的分区没有启动成功,切换分区再次尝试启动。

我也想过这种方法,苦于我刚开始做Linux和uboot不久,这种方法不知道如何下手啊。
用uboot脚本能实现吗?还是要在uboot上编写程序?可否说的再详细一些,或者帮忙找个链接啥的
非常感谢
zourongrong 2020-10-09
  • 打赏
  • 举报
回复
bootloader设置一个标记,在进入bootloader的时候设置这个标记,同时启动一个看门狗,进入os后跑到某一个阶段(比如初始化成功)就清除这个标记,如果系统没起来,那么这个标记就不会清除,同时看门狗会复位系统。再次从bootloader里面起来的时候,判断这个标记是否被设置过了,如果是被设置过了,说明当前的分区没有启动成功,切换分区再次尝试启动。
li_rui_1220 2020-09-21
  • 打赏
  • 举报
回复
能否说的具体一点,我用的是Xilinx 的zynq,在官方论坛并且查了一些手册,都没有发现啊
河洛千枫 2020-09-14
  • 打赏
  • 举报
回复
目前一些芯片厂商都提供这种机制,一个系统分区异常时,会去读取另一个分区系统.

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧