Linux内核init在加密文件系统中失败

时间:2015-06-27 06:09:02

标签: linux encryption linux-kernel filesystems boot

我正在尝试使用加密文件系统为整个操作系统创建一个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,以便从加密磁盘启动内核。 然后我遇到了这个问题:

  • grub可以加载linux内核和内核启动,但是当它尝试运行init进程时,我得到内核恐慌,并显示以下消息:" init Not tained"。

我可以从之前的消息中看到文件系统是由内核加载的,它实际上是在读取init文件,但拒绝运行init。

我的问题是:是否使用标准读取系统调用以任何其他方式读取内核文件?我在这里做错了吗?

非常感谢任何帮助

编辑:

  

现在的问题是:

     

如何通过映射内存来解密内核使用的数据?

1 个答案:

答案 0 :(得分:2)

内核会将mmap()二进制映射到内存(即使用read())来执行它。如果您只测试了roll,那很可能是您的文件系统失败的原因。