LinuxSir.cn,穿越时空的Linuxsir!

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

关于重新编译2.6.X版本linux内核

[复制链接]
发表于 2004-5-21 15:58:51 | 显示全部楼层 |阅读模式
我中午试了一遍,重新编译了一下,把经验写写吧,不当之处各位指正。

1.下载文件,不用我说了吧?bingle/google都上吧,反正是要找到内核源码,我编译的是最新的2.6.6版本,开始吧

2.随便找个目录,我用/home/huggin/,把内核源码放在里面

3,解压,bz2的就用tar jxvf *.bz2,gz的就用tar zxvf *.tar.gz

4,好,现在进入cd linux-2.6.6,你的内核不一样就是不同的目录

5,先看一下README把,cat README | more,还有Documetation下面的Changes文件都看一看吧,cd Documetation, cat Changes | more
可以发现很多东西哦,最关键的是需要的包的安装,很多新手编译不成功或者编译好了不能用都是因为缺少包,我列在下面了
o  Gnu C                  2.95.3                  # gcc --version
o  Gnu make               3.79.1                  # make --version
o  binutils               2.12                    # ld -v
o  util-linux             2.10o                   # fdformat --version
o  module-init-tools      0.9.10                  # depmod -V
o  e2fsprogs              1.29                    # tune2fs
o  jfsutils               1.1.3                   # fsck.jfs -V
o  reiserfsprogs          3.6.3                   # reiserfsck -V 2>&1|grep reiserfsprogs
o  xfsprogs               2.6.0                   # xfs_db -V
o  pcmcia-cs              3.1.21                  # cardmgr -V
o  quota-tools            3.09                    # quota -V
o  PPP                    2.4.0                   # pppd --version
o  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep version
o  nfs-utils              1.0.5                   # showmount --version
o  procps                 3.2.0                   # ps --version
o  oprofile               0.5.3                   # oprofiled --version

#号后面的命令用来查看你本机这些工具的版本,小于列出的版本就需要升级
再回到我的实际情况中来,我在fedora core 1上编译的,需要升级quota-tools和module-init-tools,当然如果你不用限额之类的东西,不升级quota也无所谓
module-init-tools是一定要升级的,如果不升级,编译好后就会出现很多模块加载不上的错误,呵呵

6,好升级所需要的包,不用再说了吧?bingle/google上啊,我下载了一个module-init-tools-0.9.14.tar.bz2,注意在这里你可能可以搜到2.X.X版本的,这是老版本,一定要module-init-tools-0.9.10版本或者以上,新的0.9.XX版本可以向下兼容老的2.X.X版本

废话少说,装tar jxvf module-init-tools-*.bz2, cd module-init-tools-0.9.14,先看README,它告诉怎么装,好,开始
./configure --prefix=/
make moveold (这步很关键,保存以前的工具,万一失败可以恢复)
make
make install(这个要用root执行)
在make install之后还要有一步
./generate-modprobe.conf /etc/modprobe.conf  用来产生能加载的模块,关键

7.总算把最麻烦的搞定了,回到你的源码解压目录,我的是cd /home/huggin/linux-2.6.6 开始编内核
make mrproper
make O=/home/huggin/build/kernel menuconfig (O为大写的o,不是零,这句的意思是把结果放到/home/huggin/build/kernel/目录下,你用你自己的目录,随便哪都行),选择选项的时候最好多看看help,网上也可以找到很多相应的选项的意思
make O=/home/huggin/build/kernel
make O=/home/huggin/build/kernel modules_install install(这个要用root执行)
其实可以make O=/home/huggin/build/kernel && make O=/home/huggin/build/kernel modules_install install,一个命令把后面的事情都做了,呵呵,偶就是这样然后去吃午饭,睡了一觉再回来一看新内核已经编好了
把make menuconfig,make等的结果用O表示放在别的目录下的好处是不根源码放一块,编译完后不用了你可以直接删了,而且不用make clean

8。修改grub.conf 或者lilo.conf ,其实2.6.X已经很智能话了,我用的是grub,几乎不用该,只需要把kernel /vmlinuz-2.6.6 ro root=LABEL=/改为kernel /vmlinuz-2.6.6 ro root=/dev/hda5就可以了,当然我的根文件系统/是/dev/hda5,你的可能不一样啊,lilo的修改请参考lilo手册!

9,最后reboot,enjoy your new kernel!

10,总结一下,我从来没有编译过2.6.6内核,也没有看任何别人写的经验,今天中午一次成功,要点就是在linux下不管做任何事情,最关键的是要多看README,多看HELP,不行的话就google,发帖子,总之不要想当然。切记切记!!!另外发帖子之前你通过自己的查找是会发现很多问题的,而通过自己花工夫去得来的答案比别人在帖子上告诉你的记忆得更深刻多了!另外最好不要装rpm,因为你跟本就不知道一个rpm -i下去你的系统会怎么样!!!最好什么都用源码,有了源码就不怕他作怪了!

11.最后声明一下,本人不对本编译内核方法的正确性进行担保,如果你出现系统崩酷,硬盘坏掉,电脑爆炸,甚至出门碰上仇人老婆或者女友怀孕等等情况,一概不负责任!

ps:没有排版,斑竹见谅,转载请注明huggin@linuxsir!
发表于 2004-5-21 16:12:04 | 显示全部楼层
写的很好!而且有新的东西,如果兄弟可以介绍一下make menuconfig 的注意事项的话,就更好了。感谢huggin的努力!
发表于 2004-5-21 21:32:53 | 显示全部楼层
不能说大家不想去看Readme
主要都是E文的,要么E文不好,要么看了眼花所以没去看

E文很重要,大家一定要好好学
发表于 2004-5-22 08:52:26 | 显示全部楼层
废话少说,装tar jxvf module-init-tools-*.bz2, cd module-init-tools-0.9.14,先看README,它告诉怎么装,好,开始
./configure --prefix=/
make moveold (这步很关键,保存以前的工具,万一失败可以恢复)
make
make install(这个要用root执行)
在make install之后还要有一步
./generate-modprobe.conf /etc/modprobe.conf 用来产生能加载的模块,关键



我装的时候没有用最后一步,这样会有影响吗?如果最后一步出错怎么办?
发表于 2004-5-22 09:00:35 | 显示全部楼层
最初由 orioner 发表
废话少说,装tar jxvf module-init-tools-*.bz2, cd module-init-tools-0.9.14,先看README,它告诉怎么装,好,开始
./configure --prefix=/
make moveold (这步很关键,保存以前的工具,万一失败可以恢复)
make
make install(这个要用root执行)
在make install之后还要有一步
./generate-modprobe.conf /etc/modprobe.conf 用来产生能加载的模块,关键



我装的时候没有用最后一步,这样会有影响吗?如果最后一步出错怎么办?


正如楼顶贴子所说的,在安装模块升级工具前先要升级系统里的一些"旧"的软件包.为升级模块做好准备.如果在升级模块时出错的话,可以把错误信息贴上来让大家分析一下.
发表于 2004-5-22 21:25:42 | 显示全部楼层

err: ./generate-modprobe.conf /etc/modprobe.conf

Warning: not translating path[boot]=/lib/modules/boot
Warning: not translating path[toplevel]=/lib/modules/2.4.20-8
Warning: not translating path[toplevel]=/lib/modules/2.4
Warning: not translating path[kernel]=/lib/modules/kernel
Warning: not translating path[fs]=/lib/modules/fs
Warning: not translating path[net]=/lib/modules/net
Warning: not translating path[scsi]=/lib/modules/scsi
Warning: not translating path[block]=/lib/modules/block
Warning: not translating path[cdrom]=/lib/modules/cdrom
Warning: not translating path[ipv4]=/lib/modules/ipv4
Warning: not translating path[ipv6]=/lib/modules/ipv6
Warning: not translating path[sound]=/lib/modules/sound
Warning: not translating path[fc4]=/lib/modules/fc4
Warning: not translating path[video]=/lib/modules/video
Warning: not translating path[misc]=/lib/modules/misc
Warning: not translating path[pcmcia]=/lib/modules/pcmcia
Warning: not translating path[atm]=/lib/modules/atm
Warning: not translating path[usb]=/lib/modules/usb
Warning: not translating path[ide]=/lib/modules/ide
Warning: not translating path[ieee1394]=/lib/modules/ieee1394
Warning: not translating path[mtd]=/lib/modules/mtd
Warning: not translating prune modules.dep
Warning: not translating prune modules.description
Warning: not translating prune modules.generic_string
Warning: not translating prune modules.pcimap
Warning: not translating prune modules.isapnpmap
Warning: not translating prune modules.usbmap
Warning: not translating prune modules.parportmap
Warning: not translating prune modules.ieee1394map
Warning: not translating prune modules.pnpbiosmap
Warning: not translating prune System.map
Warning: not translating prune .config
Warning: not translating prune Kerntypes
Warning: not translating prune build
Warning: not translating prune vmlinux
Warning: not translating prune vmlinuz
Warning: not translating prune bzImage
Warning: not translating prune zImage
Warning: not translating prune .rhkmvtag
Warning: not translating generic_stringfile=/lib/modules/2.4.20-8/modules.generic_string
Warning: not translating pcimapfile=/lib/modules/2.4.20-8/modules.pcimap
Warning: not translating isapnpmapfile=/lib/modules/2.4.20-8/modules.isapnpmap
Warning: not translating usbmapfile=/lib/modules/2.4.20-8/modules.usbmap
Warning: not translating parportmapfile=/lib/modules/2.4.20-8/modules.parportmap
Warning: not translating ieee1394mapfile=/lib/modules/2.4.20-8/modules.ieee1394map
Warning: not translating pnpbiosmapfile=/lib/modules/2.4.20-8/modules.pnpbiosmap
Warning: not translating depfile=/lib/modules/2.4.20-8/modules.dep
Warning: not translating persistdir=/var/lib/modules/persist
发表于 2004-5-22 22:29:48 | 显示全部楼层
CC [M]  drivers/char/watchdog/wdt_pci.o
/usr/src/linux-2.6.6/drivers/char/watchdog/wdt_pci.c: In function `wdtpci_init_one':
/usr/src/linux-2.6.6/drivers/char/watchdog/wdt_pci.c:684: warning: label `out_rbt' defined but not used
  CC [M]  drivers/char/watchdog/machzwd.o
  CC [M]  drivers/char/watchdog/eurotechwdt.o
  CC [M]  drivers/char/watchdog/softdog.o
  CC [M]  drivers/char/watchdog/w83877f_wdt.o
  CC [M]  drivers/char/watchdog/sc520_wdt.o
  CC [M]  drivers/char/watchdog/alim7101_wdt.o
  CC [M]  drivers/char/watchdog/alim1535_wdt.o
  CC [M]  drivers/char/watchdog/sc1200wdt.o
  CC [M]  drivers/char/watchdog/wafer5823wdt.o
  LD      drivers/char/built-in.o
  CC [M]  drivers/char/rocket.o
  CC [M]  drivers/char/cyclades.o
/usr/src/linux-2.6.6/drivers/char/cyclades.c:686: warning: `cy_get_user' defined but not used
  CC [M]  drivers/char/stallion.o
  CC [M]  drivers/char/istallion.o
/usr/src/linux-2.6.6/drivers/char/istallion.c: In function `istallion_module_exit':
/usr/src/linux-2.6.6/drivers/char/istallion.c:854: warning: too few arguments for format
  CC [M]  drivers/char/epca.o
/usr/src/linux-2.6.6/drivers/char/epca.c: In function `pc_tiocmset':
/usr/src/linux-2.6.6/drivers/char/epca.c:3023: warning: control reaches end of non-void function
/usr/src/linux-2.6.6/drivers/char/epca.c: In function `do_softint':
/usr/src/linux-2.6.6/drivers/char/epca.c:3332: warning: `MOD_DEC_USE_COUNT' is deprecated (declared at /usr/src/linux-2.6.6/include/linux/module.h:513)
  CC [M]  drivers/char/specialix.o
/usr/src/linux-2.6.6/drivers/char/specialix.c: In function `sx_check_io_range':
/usr/src/linux-2.6.6/drivers/char/specialix.c:290: warning: `check_region' is deprecated (declared at /usr/src/linux-2.6.6/include/linux/ioport.h:121)
  CC [M]  drivers/char/moxa.o
  CC [M]  drivers/char/mxser.o
/usr/src/linux-2.6.6/drivers/char/mxser.c: In function `mxser_module_init':
/usr/src/linux-2.6.6/drivers/char/mxser.c:607: warning: unused variable `index'
  CC [M]  drivers/char/ip2main.o
/usr/src/linux-2.6.6/drivers/char/ip2main.c: In function `ip2_tiocmget':
/usr/src/linux-2.6.6/drivers/char/ip2main.c:1962: warning: unused variable `wait'
/usr/src/linux-2.6.6/drivers/char/ip2main.c: At top level:
/usr/src/linux-2.6.6/drivers/char/ip2/i2cmd.c:142: warning: `ct89' defined but not used
/usr/src/linux-2.6.6/drivers/char/ip2main.c:204: warning: `set_modem_info' declared `static' but never defined
发表于 2004-5-23 02:24:18 | 显示全部楼层
你的错误都在modules上了,重新来过,
安装modules-init-tool很重要,不能出错
发表于 2004-5-23 13:18:31 | 显示全部楼层
./generate-modprobe.conf /etc/modprobe.conf

Warning: not translating path[boot]=/lib/modules/boot
Warning: not translating path[toplevel]=/lib/modules/2.4.20-8
Warning: not translating path[toplevel]=/lib/modules/2.4
Warning: not translating path[kernel]=/lib/modules/kernel
Warning: not translating path[fs]=/lib/modules/fs
Warning: not translating path[net]=/lib/modules/net
Warning: not translating path[scsi]=/lib/modules/scsi
Warning: not translating path[block]=/lib/modules/block
Warning: not translating path[cdrom]=/lib/modules/cdrom
Warning: not translating path[ipv4]=/lib/modules/ipv4
Warning: not translating path[ipv6]=/lib/modules/ipv6
Warning: not translating path[sound]=/lib/modules/sound
Warning: not translating path[fc4]=/lib/modules/fc4
Warning: not translating path[video]=/lib/modules/video
Warning: not translating path[misc]=/lib/modules/misc
Warning: not translating path[pcmcia]=/lib/modules/pcmcia
Warning: not translating path[atm]=/lib/modules/atm
Warning: not translating path[usb]=/lib/modules/usb
Warning: not translating path[ide]=/lib/modules/ide
Warning: not translating path[ieee1394]=/lib/modules/ieee1394
Warning: not translating path[mtd]=/lib/modules/mtd
Warning: not translating prune modules.dep
Warning: not translating prune modules.description
Warning: not translating prune modules.generic_string
Warning: not translating prune modules.pcimap
Warning: not translating prune modules.isapnpmap
Warning: not translating prune modules.usbmap
Warning: not translating prune modules.parportmap
Warning: not translating prune modules.ieee1394map
Warning: not translating prune modules.pnpbiosmap
Warning: not translating prune System.map
Warning: not translating prune .config
Warning: not translating prune Kerntypes
Warning: not translating prune build
Warning: not translating prune vmlinux
Warning: not translating prune vmlinuz
Warning: not translating prune bzImage
Warning: not translating prune zImage
Warning: not translating prune .rhkmvtag
Warning: not translating generic_stringfile=/lib/modules/2.4.20-8/modules.generic_string
Warning: not translating pcimapfile=/lib/modules/2.4.20-8/modules.pcimap
Warning: not translating isapnpmapfile=/lib/modules/2.4.20-8/modules.isapnpmap
Warning: not translating usbmapfile=/lib/modules/2.4.20-8/modules.usbmap
Warning: not translating parportmapfile=/lib/modules/2.4.20-8/modules.parportmap
Warning: not translating ieee1394mapfile=/lib/modules/2.4.20-8/modules.ieee1394map
Warning: not translating pnpbiosmapfile=/lib/modules/2.4.20-8/modules.pnpbiosmap
Warning: not translating depfile=/lib/modules/2.4.20-8/modules.dep
Warning: not translating persistdir=/var/lib/modules/persist

./generate-modprobe.conf /etc/modprobe.conf   执行了这步后就出现上面这个,这正不正常, 如果不正常问题出在哪里:confused: :confused: :confused: :confused: :confused: :confused:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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