【发布时间】:2015-09-14 03:36:39
【问题描述】:
我正在尝试为整个操作系统(启动、内核、根目录...)制作一个带有加密文件系统的 linux 操作系统
我修改了 EXT4 文件系统的读写函数。在运行大量测试后一切读写工作正常。
编辑:
我的更改是对文件内容的简单异或。
我的测试包括读/写文本文件、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 引导加载程序,以便它从加密磁盘引导内核。 然后我遇到了这个问题:
- grub 可以加载 linux 内核和内核启动,但是当它尝试运行 init 进程时,我得到内核恐慌并显示以下消息:“init Not tained”。
我可以从之前的消息中看到文件系统是由内核加载的,它实际上正在读取 init 文件但拒绝运行 init。
我的问题是:内核是否以任何其他方式读取初始化文件,而不是使用标准读取系统调用?我在这里做错了吗?
任何帮助将不胜感激
编辑:
现在的问题是:
如何通过映射内存来解密内核使用的数据?
【问题讨论】:
-
grub 可以在 luks 上处理开箱即用的 lvm,甚至 /boot;使用 GRUB_ENABLE_CRYPTODISK;阅读wiki.archlinux.org/index.php/GRUB以获得完整的解释
-
@gengisdave 问题不在于 grub。它正在工作并加载内核。问题是内核不运行init。我的加密方法是文件内容的简单按位。我没有使用任何标准的磁盘加密方法。
-
所以如果我的理解是正确的,您可以从加密的 FS 手动启动任何应用程序,但是当您使用加密的 root 启动内核时,它无法启动 init?
-
@AlexHoppus 是的,我在安装有修改后的 ext4 模块的加密文件系统中测试了一些二进制文件(我的系统文件系统是 btrfs)。他们正在工作
-
你试过这个特殊的初始化二进制文件吗?而杀戮的原因是什么,你能在日志中看到这个吗?
标签: linux encryption linux-kernel filesystems boot