最近在研究rootfs升级方案。通常由于rootfs正在运行,所以直接写mtd可能造成问题。所以要使用privot_root切换到initramfs。然后
卸载rootfs. 但是由于init进程,使用了rootfs, 又没法杀掉init进程。是没法直接卸载rootfs的。
一个方案是在启动的过程中,就将一些library和bin拷贝到tmpfs. init进程就需要这样做。这样init进程就不依赖于rootfs. 这样杀掉其它进程后,就可以卸载rootfs,进行安全的升级操作了。
一个疑问。如果可执行文件和共享库已经在tmpfs了,那么运行这个可执行文件,内核是不是会double 内存大小呢。实际上是不会的。
tmpfs的文件已经在page cache了。而进程运行mmap的时候,不会重新拷贝一份。