我正在尝试使用加密文件系统为整个操作系统创建一个linux操作系统(启动,内核,根目录......)
我修改了EXT4文件系统的读写功能。经过大量的测试一切读写工作正常。
编辑:
我的更改是文件内容的简单XOR。
我的测试包括读/写文本文件,tar存档 创建/删除,声音和视频文件创建/复制/删除和 一些压力测试。
this is dmesg says when trying to run a binary:
traps: a.out[2765] trap invalid opcode ip:400e73 sp:7ffc9f3d6f10 error:0 in a.out[400000+b4000]
下一步是在这个加密的文件系统上启动一个简单的基于Linux的操作系统,我修改了GRUB 2 bootloader,以便从加密磁盘启动内核。 然后我遇到了这个问题:
我可以从之前的消息中看到文件系统是由内核加载的,它实际上是在读取init文件,但拒绝运行init。
我的问题是:是否使用标准读取系统调用以任何其他方式读取内核文件?我在这里做错了吗?
非常感谢任何帮助
编辑:
现在的问题是:
如何通过映射内存来解密内核使用的数据?
答案 0 :(得分:2)
内核会将mmap()
二进制映射到内存(即使用read()
)来执行它。如果您只测试了roll
,那很可能是您的文件系统失败的原因。