如果正在使用交换映像,我可以重新安装为只读吗?

如果正在使用交换映像,我可以重新安装为只读吗?

当我玩我的 Android 手机(CyanogenMod 10.1,内核 3.0.78)时,我发现了这个:

  • 一个脚本在/etc/init.d/99system.swap.sh
  • 它将 /system 重新挂载为 rw,并在中创建一个映像文件/system/swap/swap.img

手机启动后,通过查看可以找到这个swap.img文件,并且它正在使用中/proc/swaps。但/system安装为 ro。

我尝试在另一部手机上手动执行相同的操作。但是当我尝试重新安装/system,我收到错误消息,指出有资源正在使用。如果我交换文件上的图像swap.img,我可以立即重新挂载/system

我错了,我不能重新表达/system在我将其重新安装为读写拉索夫显示大量进程正在使用/system

答案1

理论上应该是可能的,正如swapon联机帮助页所述:

[...] the swap file implementation in the kernel expecting to be able to write to the file directly, without the assistance of the file system [...]

因此,当您有交换文件时,内核更喜欢将其视为分区,即它确定交换文件在磁盘上的物理位置,然后直接使用该区域,就像使用分区区域一样。这是一个技巧,可以使交换到文件的速度与交换到常规分区的速度一样快。

此时文件系统已脱离循环,应该可以将文件系统本身设置为只读。你是否真的被允许这样做是另一回事;我自己还没有测试过,特别是 Android 的行为可能与常规 Linux 环境不同。

相关内容