Linux内核的编译

Linux内核的编译

www.jz123.cn  2010-10-03   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

  作为一名Linux系统工程师怎么可以不会编译Linux内核呢,就像当兵不会打仗。男人不会保护自己心爱的人一样,太丢人了..

  Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。

  客套的话,空洞的话咱都不说了,说了也没费劲,你还不一定看。下面以Linux 2.6.15.5内核源代码为例:

  第一步:下载Linux 2.6.15.5内核源代码linux-2.6.15.5.tar.bz,放入/usr/src 目录。

  第二步:一般情况下要用下面命令来配置内核,可以使用下面命令的任意一个,看自己喜欢了:

  #make config(基于文本的最为传统的配置界面,不推荐使用)

  #make menuconfig(基于文本菜单的配置选项)

  #make xconfig(要求QT被安装)

  #make gconfig(要求GTK安装) 其中最值得推荐的当然是menuconfig选项,不需要额外的库,还直观形象

  

内核配置

 

  选择了自己要用的选项后保存退出。我这里为了以后能将自己写的内核驱动模块加入内核,选择了"Enable loadable module support",嵌入式产品一般不需

  要动态卸载模块,所以"可以卸载模块"不用选,当然你说哥非要选,就是要跟你做对,你能把我咋滴。说真的,我还真不能把你咋滴..

  第三步:#cd ****进入内核源码目录,,编译内核,并将映像复制到相应的目录:

  #make bzImage (生成使用giz压缩的内核,生成的文件位于/usr/src/linux/arch/i386/boot 目录)

  #make modules modules_install (编译内核模块并安装到/lib/modules/2.6.15.5 目录)

  #cd /usr/src/linux

  #mv arch/i386/boot/bzImage /boot/bzImage2.6.15.5

  #mv System.map /boot/System.map-2.6.15.5 (System.map-2.6.15.5是编译生成的Linux 2.6.15.5内核的符号表)

  #cd /boot

  #mv System.map oldSystem.map

  #ln –s System.map-2.6.15.5 System.map(创建相应的System.map符号链接)

  第四步:修改启动选项。以支持从Linux 2.6.15.5启动选择菜单

  修改/boot/grub/grub.conf文件,进行如下配置:

  title Red Hat Linux (2.6.15.5)

  root (hd0,0)

  kernel /boot/vmlinuz ro root=/dev/hda2 hdc=ide-scsi //---你的linux所在的分区

  进过此配置后,Linux启动时就会出现选择菜单。

  说明:最后在上面的Linux 2.6.15.5启动中,没有设置initrd,这是因为我们直接把SCSI,EXT3等编译进了内核。如果将他们编译成模块,initrd则是必须的,否则

  启动会提示"VFS:unable to mounting root fs".为使用initrd,则需要下载较新的mkinitrd并安装,由于程序包mkinitrd依赖程序包device-mapper,而程序包

  device-mapper又依赖于lvm2,因此还要同时下载程序包device-mapper和程序包lvm2。安装完毕后#mkinitrd /boot/initrd_2.6.15.5.img 2.6.15.5就可以

  了,如果执行mkinitrd命令时,提示“No module dm-mem-cache found for kernel 2.6.29.4, aborting.”时,表明该版本的mkinitrd有bug。升级mkinitrd或

  参考这篇文章解决这个问题。解决方法:

  1是当使用mkinitrd时,使用”–without-dmraid”这个参数。

  2是在使用mkinitrd之前,先创建一个noraid文件。创建方法如下:

  # echo "DMRAID=no" > /etc/sysconfig/mkinitrd/noraid

  # chmod 755 /etc/sysconfig/mkinitrd/noraid

  然后再运行mkinitrd命令。

  initrd(Bootloader initialized RAM disk)是指由Bootloader初始化的内存盘。在linux内核启动前,Bootloader会将存储介质中的initrd文件加载到内存,内核

  启动时会在访问真正的根文件系统前先访问该内存的initrd文件系统。

  为了启动时加载initrd,只需修改grub.conf引导配置文件,在最后添加"initrd /boot/initrd-2.6.15.5.img "这样就没问题了。

六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)内容概要:本文档围绕六自由度机械臂的ANN人工神经网络设计展开,详细介绍了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程的理论与Matlab代码实现过程。文档还涵盖了PINN物理信息神经网络在微分方程求解、主动噪声控制、天线分析、电动汽车调度、储能优化等多个工程与科研领域的应用案例,并提供了丰富的Matlab/Simulink仿真资源和技术支持方向,体现了其在多学科交叉仿真与优化中的综合性价值。; 适合人群:具备一定Matlab编程基础,从事机器人控制、自动化、智能制造、电力系统或相关工程领域研究的科研人员、研究生及工程师。; 使用场景及目标:①掌握六自由度机械臂的运动学与动力学建模方法;②学习人工神经网络在复杂非线性系统控制中的应用;③借助Matlab实现动力学方程推导与仿真验证;④拓展至路径规划、优化调度、信号处理等相关课题的研究与复现。; 阅读建议:建议按目录顺序系统学习,重点关注机械臂建模与神经网络控制部分的代码实现,结合提供的网盘资源进行实践操作,并参考文中列举的优化算法与仿真方法拓展自身研究思路。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值