搞了两三天,主要为了使用linux2.6.30.4自带的RT73无线网卡驱动,还剩下iwpriv指令不能使用,这里先分两篇文章分别讲述linux2.6.30.4内核的编译、安装、启动项设置和linuxkernel自带的无线网卡驱动安装、使用。这篇主要将linux2.6.30.4内核的编译、安装、启动项设置。
1、下载内核
http://www.kernel.org/
这个地方永远是内核下载的官方地址。
2、将下载的内核包*.tar.bz2拷贝到/usr/src目录下,其实别的地方也可以,不过按照惯例放到这个目录下。
3、解压下载的内核*.tar.bz2到/usr/src目录
4、进入内核源代码树 cd /usr/src/linux-2.6.30.4
5、make mrproper
,命令的作用是在每次配置并重新编译内核前需要先执行“make
mrproper”命令清理源代码树,包括过去曾经配置的内核配置文件“.config”都将被清除。即进行新的编译工作时将原来老的配置文件给删除到,以免影响新的内核编译。
6、配置内核 make menuconfig,其他类似配置内核的指令还有make config 、makegconfig等。
(1)对每一个配置选项,用户有三种选择,它们分别代表的含义如下:
http://www.tyonly.com/archives/536
但有一点比较重要,大家都会提到的:
一定要记得把ext2和ext3文件系统编译进内核,但其实系统默认选项就会将ext2和ext3编译进内核,按默认选项就行。但上面http://www.tyonly.com/archives/536文章里说:ext2和ext3文件系统配置很重要,也是必需的,如果对Ext3、Ext2文件的支持直接编译进内核,在你reboot时机器就会当掉,出现错误信息。具体是不是这样不知道,没有遇到过。
7、make oldconfig,在修改过配置文件之后,或者在用已有的配置文件配置新的代码树的时候,应该验证和更新配置。
8、make。很多教程说在编译内核前还需要make dep,但其实到了2.6以后的内核版本,不需要在每次编译内核之间运行makedep了,代码之间的依赖关系会自动维护。也不必要再指定像老版本中bzImage这样的编译方式或独立地编译模块。默认的Makefile规则会打理一切。
9、模块的安装 makemodules_install。模块的安装是自动的,也是独立于体系结构的,运行这个指令会把所有已编译的模块安装到正确的主目录/lib/modules中。
10、内核安装 make install。使用“makeinstall”命令安装新内核到系统中,并且自动为是用新内核作一些必要的配置,在/boot/目录下会生成vmlinuz-2.6.30.4的文件和system.map的文件,system.map是在内核编译的时候在源代码书的根目录下创建的,是一份符号对照表,用以将内核符号和它们的起始地址对应起来,调试的时候,如果需要把内存地址翻译成容易理解的函数名以及变量名,这会很有用。到这里内核安装便算完成,但离放到启动界面里以供选择还有一段距离。
11、生成启动文件。
#
mkinitramfs -o /boot/initrd.img-2.6.30.4
update-initramfs -c -k 2.6.30.4在/boot/目录下生成initrd.img-2.6.30.4 文件。
update-grub2
自动修改系统引导配置,产生grub.cfg启动文件。
上面还有一条指令,mkinitramfs,这个指令在我制作启动配置的时候其实没有用到,但很多教程列了出来,一并列在这里,对于mkinitramfs,还有一篇转载的文章将专门讲解。
对于update-grub2还多说一点,在最初的linux系统发行版中,使用grub.conf文件来管理启动项;随后
取而代之的是在/boot/grub目录下的menu.lst文件(具体在哪个版本改变的不明),现在的是在/boot/gru/grub.cfg。但不宜去直接修改grub.cfg,利用系统提供的update-grub2指令相对方便和安全些。
12、到此,内核编译、安装、启动配置就全完成了,重新启动,Over。
附录一个讲得比较清楚的内核编译流程:
http://zjuedward.blog.51cto.com/1445231/461376
1、下载内核
2、将下载的内核包*.tar.bz2拷贝到/usr/src目录下,其实别的地方也可以,不过按照惯例放到这个目录下。
3、解压下载的内核*.tar.bz2到/usr/src目录
4、进入内核源代码树 cd /usr/src/linux-2.6.30.4
5、make
6、配置内核 make menuconfig,其他类似配置内核的指令还有make config 、makegconfig等。
(1)对每一个配置选项,用户有三种选择,它们分别代表的含义如下:
<*>或[*]——将该功能编译进内核
[]——不将该功能编译进内核
[M]——将该功能编译成可以在需要时动态插入到内核中的代码
(2)具体的配置选项不说了,可以参考:7、make oldconfig,在修改过配置文件之后,或者在用已有的配置文件配置新的代码树的时候,应该验证和更新配置。
8、make。很多教程说在编译内核前还需要make dep,但其实到了2.6以后的内核版本,不需要在每次编译内核之间运行makedep了,代码之间的依赖关系会自动维护。也不必要再指定像老版本中bzImage这样的编译方式或独立地编译模块。默认的Makefile规则会打理一切。
9、模块的安装 makemodules_install。模块的安装是自动的,也是独立于体系结构的,运行这个指令会把所有已编译的模块安装到正确的主目录/lib/modules中。
10、内核安装 make install。使用“makeinstall”命令安装新内核到系统中,并且自动为是用新内核作一些必要的配置,在/boot/目录下会生成vmlinuz-2.6.30.4的文件和system.map的文件,system.map是在内核编译的时候在源代码书的根目录下创建的,是一份符号对照表,用以将内核符号和它们的起始地址对应起来,调试的时候,如果需要把内存地址翻译成容易理解的函数名以及变量名,这会很有用。到这里内核安装便算完成,但离放到启动界面里以供选择还有一段距离。
11、生成启动文件。
取而代之的是在/boot/grub目录下的menu.lst文件(具体在哪个版本改变的不明),现在的是在/boot/gru/grub.cfg。但不宜去直接修改grub.cfg,利用系统提供的update-grub2指令相对方便和安全些。
12、到此,内核编译、安装、启动配置就全完成了,重新启动,Over。
附录一个讲得比较清楚的内核编译流程:
http://zjuedward.blog.51cto.com/1445231/461376