分享
 
 
 

《边学边干-Linux内核指导》学习笔记一

王朝system·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

写在前面的话:刚毕业,找的工作是嵌入式开发,在学校自学了几年Windows平台下的C/C++开发,可现在工作是在Linux平台下,所以一切都要从头开始(当然语言基础还是有用的)。从操作系统应用开始学,再到开发,经过几个月的学习,现在基本能胜任工作。在这个几个月之中,自己感觉大学里面荒废了太多时间。在学校时,总是认为学的东西没用(我想大概现在很多在校的学生还是这么认为吧),到现在才感觉自己基本功不够扎实。所以,决定好好研究一下linux内核,一方面是为了对操作系统有更深层次的理解,另一方面在研究内核的同时,学习linux底层编程。我用的教材是 浙江大学出版社《Linux内核情景分析》上下册还有就是现在看的这本。希望有相同兴趣的朋友多多交流。

第一章 了解Linux内核

这一章是对Linux内核的总体概括,我把我学会以及自己在实践过程中的理解并且觉得比较容易用的到东西分别叙述如下:

一、重新编译内核

1. 首先要确认你系统里面是否有linux的源代码,在Linux安装的时候有选项是否安装源代码。如果你在安装时没有选,不用担心,你可以到www.kernel.org/pub/linux/kernel去下载你的系统对应的内核源代码。

2. 下载以后当然是将源代码包解压到你所要放的目录下,书上用的是下面两个命令:

#mv linux-2.4…. your directory

#tar zxvf linux-2.4…

3.配置内核

配置内核的过程可以分为以下几步:

a. 清除目录下所有配置文件和先前生成核心时产生的中间文件,在你的源代码目录执行如下命令:

#make mrproper

注意:Kernel HOWTO对上面这个命令是这样解释的:

`make mrproper' 将会做更广泛的 `清除' 工作.这个动作有时候是必须的,所以你可能会希望在每次修补的时候执行它. `make mrproper' 还会将你的配置文件杀掉,所以如果你认为它重要的话应该先做一备份(在 .config).

b.对内核进行配置,有以下几种方法可供选择:

#make config(基于文本的传统界面)

#make menuconfig(基于文本的选单式配置界面,书中推荐的方式)

#make xconfig(基于图形的配置界面)

#make oldconfig(用于在原来配置的基础上作些小的修改)

注:我在我的机器上(redhat 9)执行make oldconfig这个命令的时候,系统根本没有让我配置内核,而是自动执行了配置,那我要怎么样用这个命令来配置内核呢,希望知道的朋友可以告诉我。在Kernel Howto中对这个命令的解释是:

make oldconfig' 会尝试由一旧的配置文件来配置你的核心.它会为你执行 `make config'。如果你还未曾编译过核心或没有旧的配置文件,那么你可能不该做这个,因为你几乎确定会更改缺省的配置。

c. 对每一个配置项,用户有三种选择:

“Y”——将该功能编译进内核;

“N”——不将该功能编译进内核;

“M”——将该功能编译成可以在需要时动态插入到内核中的模块。

d.编译内核和模块

接下来需要运行下面两条命令:

#make dep(对内核源代码文件的依赖性和完整性进行检验,确保关键文件在正确的位置)

#make clean(清除目标文件,自己写过makefile或通过源码包装过软件的,这个命令应该很熟悉了)

下面的命令将编译产生压缩形式的内核文件:

#make zImage 或 #make bzImage(压缩率更高)

编译后产生的内核文件的位置在:/usr/src/linux/arch/i386/boot目录下(假定你CPU的是Intel X86,内核源代码所在的目录为/usr/src/linux)

如果选择了可加载模块,编译完内核后需编译选择的模块:

#make modules

或用下面的命令编译模块并安装到标准的模块目录中:

#make modules_install

模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为了安全起见在运行这个命令之前最好对/lib/modules进行备份(#lsmod 可以了解当前内核中已经装载了哪些内核)。

e. 配置启动文件

执行以下命令

#cp /usr/src/linux/arch/i386/boot/zImage /boot/zImage-2.4.18

#cp /usr/src/linux/System.map /boot/System.man-2.4.18

#ln –sf /boot/System.map-2.4.18 /boot/System.map (相当于Windows中创建一个快捷方式)

如果你是使用lilo启动Linux,请修改/etc/lilo.conf来加载新内核;

如果你是使用grub启动Linux,请修改/etc/grub.conf来加载新内核,具体的修改请参照这个两个文件的中的例子。

现在,你可以试试按照上面的方法,根据你的需求,编译内核啦。这就是Linux比Windows爽的地方——你可以很清楚的知道操作系统在干什么。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有