第六十七讲——内核的编译 本文共有19140个字,关键词: 在内核中,除了最核心的功能不能选择,需要做进内核外,其它的大多数功能在编译的时候都有三种选择: 一是不使用此功能 二是编译成内核模块 三是编译进内核文件,即成为内核的一部分。 编译内核: 红帽系列有一个特性,即在5.x、6.x时使用的都是同一内核,如果我们突然将内核升级到最新,可能会造成不兼容,所以内核的升级一定要慎重。 编译内核需要安装所需的工具: development tools development libraries 下载内核文件并解压缩,一般下载的为源码包。 tar –xf linux-2.6.23.10.tar.gz –C /usr/src指定解压缩目录为/usr/src,/usr/src下为源码 内核解压后是源代码,内核的编译不能像编译软件那样config,因为内核的编译选项非常的多,解压后我们需要创建一个链接文件,一般来说,我们当前使用的内核或当前编译的内核为linux,类似于将解压后的目录改名为linux。 切换到linux目录下: */arch/ 目录下为各类平台 */mm/ 内存管理 */net/ 和网络功能相关 */virt/ 虚拟化的相关功能 /kernel/ 内核相关 /ipc/ 进程间通信 /documentation/文件 应当看一看,在后期深入学习linux时应当学习。 手动编译内核提供了两种方式选择内核的特性: 一是编译时图形环境下内核特性的选择 make gconfig make gconfig为Gnome桌面环境 makekconfig make kconfig 为KDE桌面环境 需要安装图形开发库: GNOME software development(GNOME环境) KDEsoftware development(KDE桌面环境) 需要依赖桌面环境,所以并不是很常用。 二是命令行界面下的操作: 我们在命令行下使用较多,所以在命令行下的操作方式 make menuconfig:打开一个图形的文本窗口,这个窗口必须要能够容纳19行,80列,否则就会报错—>#least 19 lines by 80 columns 我们使用uname –r会发现除了内核的版本还有一长串的字符,这一串字符为本地版本号,我们在make menuconfig弹出的菜单中general setup中有一项local version即为设置此版本号。 在弹出的图形选择界面上使用空格进行选择项的切换,M表示做成模块,*表示做进内核。在选择结束后会询问是否保存,若保存则会在当前目录下生成.config的隐藏配置文件。接下来的编译就和其他软件一样了。 一是执行make,此过程出错的可能性很大,我们可以借助红帽公司的模板/boot/config,在此基础上进行修改,cp到解压缩的目录下更名为.config。 下载内核源码包 tar –xf ./linux /usr/src/ cd /usr/src ln –sv linux.. linux cd linux cp /boot/config ./.config make menuconfig 等待make等待编译结束 make modules-install先安装模块 make install 当安装结束后需要重启操作系统,在引导界面有内核的选择(在内核安装完成后,会自动将信息写入grub) 我们在编译内核时,一定不要使用远程连接,一旦连接中断编译过程也就中断。如果非要使用远程编译内核,我们可以安装screen工具,这个工具可以模拟很多个窗口。 yum install screen 当中断连接断开,重新登录即可,使用screen –ls可以查看模拟的窗口。 我们使用screen –r ID 返回窗口。 screen –ls 显示已经建立的窗口 screen –r ID 还原回某屏幕 ctrl+a,d拆除当前屏幕(类似后台) screen 建立一个新的屏幕 exit退出 二次编译时需要清理之前的编译。 make clean清理之前编译好的二进制模块 make mrproper清理此前编译的任何操作,包括.config也会被清理,在make mrproper清理之前,应当备份配置文件。 我们也可以只编译内核中的一部分,甚至可以只是一个目录。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-02-05 评论 1742 次浏览