4x6*_*6hw 6 glibc system-calls linux-kernel
我想用不同的syscall表构建我自己的自定义内核.(相同的系统调用但在不同的位置/数字)
我正在研究内核3.2.29.
更改内核非常简单:
1)更改arch/x86/kernel/syscall_table_32.S中的系统调用位置
2)更改arch/x86/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表编译它?