LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 940|回复: 0

内核编译---slackware10.2 实践傻瓜系列

[复制链接]
发表于 2005-12-13 23:17:58 | 显示全部楼层 |阅读模式
本人有幸来此论坛,受益良多,为了感谢大家并将众人的经验在新的OS中发扬光大,利益后来者;特将我 的成功经验加以总结,供所有对内核编译望而却步的人参考~~

内核编译的原理性认识,建议参考北南的文章
步骤如下:
首先确认 ./usr/src/ 下面有自己的源代码,我的是 /usr/src/linux-2.4.31
(如果升级内核,则拷贝原光盘下面的  linux-2.6.13到主目录下,我的是 /root/linux-2.6.13,然后运行 installpkg  kernel-source*.tgz.  由于编译方法一样,下面以2.4.31为例)

第二步,内核的配置
         #cd  /usr/src/linux*31
         #make  mrproper   (如果初次编译,则此命令可以免了;如果以前编过多次,此命令最好还是运行一下,作用是清除当前目录下 *.o等文件)
         #make  xconfig   (或者make  menuconfig, make gconfig, make oldconfig)

           手工配置各个选项,比如如果声卡出问题了需要编译内核,那么通常是通用设备,声卡,字符设备等,具体根据情况决定。各个选项有帮助文档可以参考,其实多经历几次,也就不会觉得难了。
         选定结束后,注意保存,然后退出

第三步,
  #make dep 我是这么干的,不管3721先make dependence一下
         如果显示什么信息,不要管它。进入下一步

第四步,编译内核:
通用的办法就是:
           #make && make  modules  &&make modules_install &&make install
        按回车,让系统替你编译,你可以趁这段时间(较长)抽抽烟,喝喝酒...

第五步,如何使得新内核工作(一):
也是关键的一步,很容易出现错误,编译不成功,多半在这里没有处理好善后工作。
        具体如下:
        5-1:
          首先确定 /root下有两个新文件  vmlinuz, System.map 。如果没有(多数没有,有时侯有;我也不清出,好象2.6×是有的),则手工拷贝:    /usr/src/linux-2.4.31/arch/i386/boot/bzImage -->/boot/vmlinuz;   /usr/src/linux-2.4.31/System.map-->/boot/System.map;
       5-2:
          #cd   /boot
          #mkinitrd   -c -k  2.4.31  -m  reiserfs  (如果报错说没有 reiserfs module,则删去后面的 -m reiserfs也没有关系)
                      这时候注意看一看,是否有一个initrd.gz的文件,而且修改时间是不是刚才的时间。(很重要)如果不是,那么后面的就不能再看下去了,否则最后出现VFS错误。
但是我实验成功,估计你也会顺利通过的。
        5-3:经过5-2后,确认是否有两个新产生的文件  vmlinuz,   initrd.gz
   如果有,那么修改lilo,具体见下一步

第六步,如何使得新内核工作(二)
      #vi  /etc/lilo.conf
       加入下面一项:
      (注意:是加入,原有选项不要删,以免失败后可以用原系统起动//由于这个原因  ,当初编译前,将原有的重要文件改名,以免覆盖---我前面省略了这些步骤的说明;不过按照我说的步骤一步一步过来,通常不保存也没有关系)

image = /boot/vmlinuz
initrd=/boot/initrd.gz
  root = /dev/hda7            //这里要修改成你的根目录所在的分区,我的是/dev/hda7
  label = Linux-new
  read-only
为了方便理解,贴出我的lilo.conf片段如下:
# Windows bootable partition config begins
other = /dev/hda1
  label = Windows
  table = /dev/hda
# Windows bootable partition config ends
# Linux bootable partition config begins
image = /boot/vmlinuz
initrd=/boot/initrd.gz
  root = /dev/hda7
  label = Linux-new
  read-only
。。。。
第七步,如何使得新内核工作(三)
     在命令终端运行lilo命令
    #lilo
为了避免忘记这关键的一小步,我专门作为一步(我就忘过一次,教训)
回车后,等他自动运行完以后,你就可以重新启动了。(当然还要注意,命令运行时没有出错信息,比如我就遇到过label=linux-2.4.31-new-hand,报错说名字过长  )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表