首页
登录 | 注册

target使用overlay实现在squashfs只读区写操作

这其实是openwrt中的一个功能,现在把它移到普通的target中
target文件系统是squashfs,它是只读的,每升级一个文件都得整个区擦除然后重新写,很麻烦,使用overlayfs可以使只读区中单个文件进行替换修改,很方便。
根目录是squashfs只读的挂载设备是/dev/mtdblock2,其上有/overlay /rootdir文件夹, 分配出一个jffs2分区mtdblock3来做为可写区, 内核中使能overlay文件系统,
在init中实现overlay挂载

  1. #!/bin/sh
  2. init_sys()
  3. {
  4. mount -t proc proc /proc
  5. mount -t sysfs sysfs /sys
  6. mount -n -t jffs2 /dev/mtdblock3 /overlay
  7. mount -n -t overlayfs overlayfs -o lowerdir=/,upperdir=/overlay /rootdir
  8. mount -n /proc -o noatime,--move /rootdir/proc
  9. mount -n /dev -o noatime,--move /rootdir/dev
  10. mount -n /tmp -o noatime,--move /rootdir/tmp
  11. mount -n /sys -o noatime,--move /rootdir/sys
  12. mount -n /rootdir/overlay -o noatime,--move /overlay
  13. }
  14. fini_system()
  15. {
  16. umount /proc
  17. umount /sys
  18. umount /dev
  19. }
  20. boot()
  21. {
  22. fini_system
  23. if [ -x /sbin/init ]; then
  24. exec chroot /rootdir /sbin/init
  25. fi
  26. }
  27. start_shell()
  28. {
  29. /sbin/getty -L ttyS1 115200 vt100 -n -l /bin/ash
  30. }
  31. init_sys
  32. bootm=1
  33. times=0
  34. # read -n1 -t2 bootm
  35. case $bootm in
  36. 1)
  37. # echo "Boot the normal pid: $$...."
  38. boot
  39. ;;
  40. 9)
  41. # echo "Start the shell pid: $$...."
  42. start_shell
  43. ;;
  44. *)
  45. boot
  46. ;;
  47. esac
作者:帅得不敢出门



相关文章

  • 使用ffmpeg的overlay filter为视频增加跑马灯-T
    在看视频时,图像上面有流动字幕,或者流动图片,这个效果一般名为跑马灯效果,可以通过overlay的filter实现该效果 overlay是ffmpeg的filter中常用的filter,可以深入的研究一下,先解决跑马灯问题: overlay ...
  • 从dpdk 1811实现看virtio 1.1——inorder特性支持
    从dpdk 1811实现看virtio 1.1--inorder特性支持 --lvyilong316   VIRTIO_F_IN_ORDER 这个feature是virtio1.1引入的,其官方文档是这样介绍的:" Some de ...
  • 【实战】Docker 入门实战一:安装Dockeer
    Docker是什么Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实 ...
  • GNU C 增加一个 __atttribute__ 关键字用来声明一个函数.变量或类型的特殊属性.声明这个特殊属性有什么用呢?主要用途就是指导编译器在编译程序时进行特定方面的优化或代码检查.比如,我们可以通过使用属性声明指定某个变量的数据边 ...
  • 原文地址:Linux内核对per-cpu变量的实现 作者:MagicBoy2010 在Linux中,per-cpu变量用在多处理器系统中,用来为系统中的每个cpu都生成一个变量的副本,以避开多处理器互斥中的加锁问题,另一个是cpu本地的变量 ...
  • 第四章 容器
    第四章 容器       容器是Docker的另一个核心概念.       简单地说,容器是镜像的一个运行实例,所不同的是,它带有额外的可写文件层.       如果认为虚拟机是模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑 ...

2019 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号