编译Linux内核(笔记)

颜色注记:文件名,重要文档的内容 命令名/终端返回

这里是编译Linux内核的笔记。希望能整理出一份易学易用的手册。

ps 现在还没编译成功……

1,下载Linux内核源码,命令如下


2,应该是用root吧(没测试),登录root,拷贝到某个文件夹中

据Linus说不是一定要把源代码拷贝到/usr/src/kernel里的,这里还是保留在timi的家目录里

然后解压,刷屏之后,解压好了


进入目录,ls一下


3,有文档说,可以将/lib/modules/`uname -r`/build/.config拷贝至当前目录,但是我的CentOS6.4没有编译过源代码,所以/里没有,于是暂时不考虑这个

4,执行make mrproper把之前编译产生的垃圾清除掉


提示没有安装gcc,所以应该安装个gcc:yum install gcc安装后,执行成功

5,拷贝现有的配置文件到.config ,这个文件位于/boot/config-2.6.32-358.e16.x86_64


6,执行make menuconfig,进行配置,但是提示某个组件没有安装


执行yum install ncurses-devel(注意不是yum install ncurses,因为系统已经安装了这个组件了),安装完毕后,进入配置Menu


7,保存(好像步骤冲突了,有待考证)


8,执行make bzImage

ps:在make的时候,我仍然用了之前从/boot目录拷贝的.config文件,因为我认为那个才是比较准确的吧?当然了,make之后,会有一大堆提示,我都给yes掉了。现在正在编译,一会儿看结果。

9,经过压缩后的内核编译好了(如下图)


10,编译模块 make modules


11,编译好之后的内核路径是


12,安装模块

make modules_install


安装后,模块的位置如上图(在/lib/modules/2.6.32.65里)

13,制作ramdisk


上面的命令中,2.6.32.65是12步骤中,模块安装好之后的目录名,在/lib/modules

14,将bzImage拷贝到/boot目录

完成13和14步之后,/boot目录的ls结果如下


15,修改/boor/grub/menu.lst

如下:

在文档的后面加入:

title linux_xxx

        root( hd,0,0)

        kernel /vmlinuz-xxxx ro root= LABEL=\ rhgb quiet

        initrd /initrd-xxxx

上面的vmlinuz-xxxx和/initrd-xxxx就是/boot下面的文件,经测试不用添加/boot否则提示找不到文件

16,init 6 重启

17,重启后遇到了问题:


不知道什么原因,猜测与步骤8中被我PS掉的那些信息有关。这个问题没有解决,我删掉了所有东西之后重新编译内核了。

18,重新编译内核后,还是遇到了这个问题。

19,最后的解决方法:在最后一步执行make install,虽然有若干个报错,如下


但是重启之后,仍然能成功进入内核,如下


查看/boot/grub/menu/lst,如下


然后做了一个实验

将make install命令自动生成的title CentOS(2.6.32.65Timi)中的kernel和initrd改成我们一开始生成的那两个(注意kernel文件已经被自动加了个.old,挺人性化的)

然后启动成功,如下图



可见:编译出来的内核,还有ramfs应该是没问题的,关键在于其他的配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值