Linux内核修改与编译图文教程.docx

上传人:小飞机 文档编号:3061597 上传时间:2023-03-10 格式:DOCX 页数:7 大小:39.18KB
返回 下载 相关 举报
Linux内核修改与编译图文教程.docx_第1页
第1页 / 共7页
Linux内核修改与编译图文教程.docx_第2页
第2页 / 共7页
Linux内核修改与编译图文教程.docx_第3页
第3页 / 共7页
Linux内核修改与编译图文教程.docx_第4页
第4页 / 共7页
Linux内核修改与编译图文教程.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Linux内核修改与编译图文教程.docx》由会员分享,可在线阅读,更多相关《Linux内核修改与编译图文教程.docx(7页珍藏版)》请在三一办公上搜索。

1、Linux内核修改与编译图文教程Linux 内核修改与编译图文教程 1 1、 实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、 任务概述 2.1 下载新内核 http:/www.kernel.org/ 2.2 修改新内核系统调用 添加新的系统调用函数,用来判断输入数据的奇偶性。 2.3 进行新内核编译 通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试 3、 实验步骤 3.1 准备工作 查看系统先前内核版本: (终端下)使用命令:uname -r 2 3.2 下载最新内核 我这里使用的内核版本是

2、3.3 解压新版内核 将新版内核复制到“/usr/src”目录下 在终端下用命令:cd /usr/src进入到该文件目录 解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令: bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar 文件将解压到/usr/src/linux目录中 3 使用命令:ln -s linux-2.6.36 linux 3.4 安装必要的工具 在终端下输入一下命令: sudo apt-get install build-essential kernel-package

3、 libncurses5-dev fakeroot sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt 4 3.5 内核修改 3.5.1添加新的系统调用 在文件:usr/src/ linux /arch/x86/kernel/syscall_table_32.S最后增加一个系统表项: .long sys_mycall 3.5.2 添加系统调用号 usr/src/linux/include/ asm-generic /unistd.h中添加: #define _NR_mycall 2

4、45 #define NR_syscalls (343为先前在系统调用表中占用的位置,即为新添加的系统调用分配系统调用号为343) 5 3.5.3添加系统调用的处理函数 在usr/src/linux/kernel/sys.c中添加以下处理函数: 函数源码如下:(判断奇偶数) asmlinkage int sys_mycall(int n) if(n%2=0) return 1; else return 0; 3.6 清除从前编译内核时残留的.o 文件和不必要的关联 终端下切换至cd /usr/src/linux 输入以下命令: 6 3.7 asm、linux和scsi等链接是指向要升级的内核源

5、代码 # cd /usr/include/ # rm -r asm linux scsi # ln -s /usr/src/linux/include/asm-generic asm # ln -s /usr/src/linux/include/linux linux # ln -s /usr/src/linux/include/scsi scsi 7 3.8配置内核,修改相关参数 3.8.1 如何配置内核参数? y:将该功能编译进内核。 n:不将该功能编译进内核。 m:将该功能编译成在需要时动态插入到内核中的模块。 单击“Main Menu”按钮,返回主配置窗口; 单击“Next”按钮,配置

6、下一个配置项; 单击“Prev”按钮,配置上一个配置项。 选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于缩减内核,减少内核消耗的内存。与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。 (终端下)修改路径为:cd /usr/src/linux 在图形界面下,make xconfig 8 字符界面下,make menuconfig 9 3.8.2 修改内核范围(更新后能否启动至关重要): 1)文件系统 请务必要选中ext3文件系统, File systems- * Ext3 journalling file system support * Ex

7、t3 Security Labels * JBD (ext3) debugging support (一定要修改) 以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有CONFIG_EXT3_FS=y这一项. 如果不是CONFIG_EXT3_FS=y而是CONFIG_EXT3_FS=m,你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed 2)网卡驱动(在Ubuntu10.04中已默认选择,可省略这一步) 请务必把自己网卡对应的驱动编译进内核,比较普遍

8、的网卡是realtek 8139,以下就是这种网卡的配置,以供参考 Device Drivers- Networking support- Ethernet (10 or 100Mbit) - RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL) RealTek RTL-8139 PCI Fast Ethernet Adapter support 3)声卡驱 选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考 Device Drivers - Sound -

9、 Sound card support Advanced Linux Sound Architecture - Advanced Linux Sound Architecture Sequencer support Sequencer dummy client OSS Mixer API OSS PCM (digital audio) API* OSS Sequencer API RTC Timer support PCI devices - Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111 Open Sound S

10、ystem - Open Sound System (DEPRECATED) 3.8.3 生成依赖 配置内核后,返回命令窗口。为确保关键文件,在正确的位置输入以下命令: make dep(这一步不是必须的): 10 为确保所有有关文件都处于最新版本状态,需要输入命令: make clean : 检查是否生成依赖信息并清除旧的编译结果。 3.8.4编译二进制内核映像文件 在“/usr/src/linux”目录下建立二进制的内核映像文件,命令如下: make bzImage : make modules 11 make modules_install: cp /usr/src/linux/Syst

11、em.map /boot/System.map-2.6.36 cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.36 cp .config /boot/config-2.6.36 mkinitramfs -o /boot/initrd.img-2.6.36 2.6.36 修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件: 12 cd /boot;rm -f System.map vmlinuz ln -s vmlinuz-2.6.36 vmlinuz ln -s System.map-2.6.36 System.map 3.9 配置启动管理器 在终端下输入一下命令: sudo apt-get install startupmanager 执行完之后,通过菜单栏中“系统” - “系统管理”- “启动管理器”打开 13 3.10选择已编译的内核版本: 3.11 重启系统 重启系统后在终端下输入一下命令查看内核版本: 通过系统监视器查看内核版本 14 3.12 修改编译内核完成 4、 测试新系统调用 4.1 编写测试程序 15 PS:转自网络,好东西让和我一样的菜鸟们共享吧! 16

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号