我想用另一个syscall表构建我自己的定制内核。 (相同的系统调用,但在不同的位置/数字)更改linux内核系统调用号
我正在研究内核3.2.29。
改变内核是很容易:
1)改变在拱系统调用位置/ 86 /内核/ syscall_table_32.S
2)改变在拱系统调用宏数/ 86 /include/asm/unistd_32.h
3)编译和安装新内核
我换周围的系统调用:sys_open
注意到sys_read
地点和数量,反之亦然。
我想如果我编译glibc
与修改后的内核头文件,我可以有一个正在运行的系统,但不幸的是,这是不够的,我的系统将无法启动。
我错过了什么吗?为了建立一个正在运行的系统,我还需要做些什么?
我所采取的步骤是:
1)建筑和安装内核在我的问题
2描述)中提取新的内核头文件使用make headers_install INSTALL_HDR_PATH=[path]
3)建筑glibc参数--with-headers=[path/include]
4)我用一个live cd来访问外部的文件系统以便安装新的glibc
,使用make install install_root=[the original file system]
(所以系统在安装过程中不会中断)
我希望新的glibc
被正确构建,但我不确定。
之后,启动系统时,启动在(initrafms)shell屏幕停止: 我想我需要重建initrd
,但是如何根据新的syscall表编译它?
请不要对题目问题进行近距离投票,特别是当他们有upvotes和答案时。 –
为什么会这样做? –
@JonasWielicki在某人“帮助”编辑出问题之前,有人解释说,这是在学校任务后添加一个新的系统调用的实验。尽管存在有问题的效用,但这里所考虑的改变确实提醒人们注意事情是如何工作的,并且存在许多依赖关系。破解一个没有人依赖的系统可能是学习东西的好方法。 –