- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Linux内核修改与编译图文教程
1
1、实验目的
针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。
2、任务概述
下载新内核
/
修改新内核系统调用
添加新的系统调用函数,用来判断输入数据的奇偶性。
进行新内核编译
通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试
3、实验步骤
准备工作
查看系统先前内核版本:
(终端下)使用命令:uname-r
2
下载必威体育精装版内核
我这里使用的内核版本是
解压新版内核
将新版内核复制到“/usr/sr目c”录下
在终端下用命令:cd /usr/src进入到该文件目录
解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令:
bzip2-dlinux-2.6.36.tar.bz2tar-xvflinux-2.6.36.tar
文件将解压到/usr/src/linux目录中
3
使用命令:ln-slinux-2.6.36linux
安装必要的工具
在终端下输入一下命令:
sudoapt-getinstallbuild-essentialkernel-packagelibncurses5-devfakeroot
sudoaptitudeinstalllibqt3-headerslibqt3-mt-devlibqt3-compat-headerslibqt3-mt
4
内核修改
添加新的系统调用
在文件:usr/src/linux/arch//x86/kernel/syscall_table_32.S最后增加一个系统表项:
.longsys_mycall
添加系统调用号
usr/src/linux/include/asm-generic/unistd.h中添加:#define_NR_mycall 245
#defineNR_syscalls
(343为先前在系统调用表中占用的位置,即为新添加的系统调用分配系统调用号为343)
5
添加系统调用的处理函数
在usr/src/linux/kernel/sys.c中添加以下处理函数:
函数源码如下:
函数源码如下:(判断奇偶数)
asmlinkageintsys_mycall(intn)
{
if(n%2==0)
return1;else
return0;
}
清除从前编译内核时残留的.o文件和不必要的关联(如果从前没有进行内核编译的话,则可以省略这一步)
终端下切换至cd/usr/src/linux
输入以下命令:
6
asm、linux和scsi等链接是指向要升级的内核源代码
#cd/usr/include/
#rm-rasmlinuxscsi
#ln-s/usr/src/linux/include/asm-genericasm#ln-s/usr/src/linux/include/linuxlinux
#ln-s/usr/src/linux/include/scsiscsi
7
配置内核,修改相关参数
如何配置内核参数?
y:将该功能编译进内核。n:不将该功能编译进内核。
m:将该功能编译成在需要时动态插入到内核中的模块。单击“MainMenu”按钮,返回主配置窗口;
单击“Next”按钮,配置下一个配置项;单击“Prev”按钮,配置上一个配置项。
选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于缩减内核,减少内核消耗的内存。与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。
(终端下)修改路径为:cd/usr/src/linux
在图形界面下,makexconfig
8
字符界面下,makemenuconfig
9
修改内核范围(更新后能否启动至关重要):
文件系统
请务必要选中ext3文件系统,Filesystems---
[*]Ext3journallingfilesystemsupport[*]Ext3SecurityLabels
[*]JBD(ext3)debuggingsupport(一定要修改)
以上三项一定要选上,而且要内建(即标*).这个非常重要,在配置完后一定要检查一下.config文件有没有
CONFIG_EXT3_FS=y这一项.如果不是CONFIG_EXT3_FS=y而是CONFIG_EXT3_FS=m,你在运行内核时就会遇上以下错误:pivotroot:pivot_root(/sysroot,/sysroot/initrd)failed
文档评论(0)