关于 linux 内核编译,在此选用 Ubuntu 系统,首先在虚拟机上安装 Ubuntu。然后开始编译工作。
关于 Ubuntu 代理上网问题
此方法要用到 /etc/apt/ 文件夹下的 apt.conf 文件,如果希望 apt-get(而不是其他应用程序)一直使用 http 代理,可以使用这种方式。
注意:某些情况下,系统安装过程中没有建立 apt 配置文件,以下的操作将视情况修改现有的配置文件或者新建配置文件。
命令:sudo gedit /etc/apt/apt.conf
在 apt.conf 文件中加入下面这行(根据实际情况替换yourproxyaddress 和 proxyport)
格式:Acquire::http::Proxy "http://yourproxyaddress:proxyport";
比如,此处我的配置是:
Acquire::http::proxy "http://student102:student@10.1.243.240:8080/";
保存 apt.conf 文件并退出。
Ubuntu 编译内核过程
一、下载源代码和编译软件的准备
下载内核源代码:http://www.kernel.org/。
注意,点击 2.6.39.3 内核的 F 版,即完整版。
如果不想去网站点联接,运行下列命令:
命令:
$cd ~
$ wget http://www.kernel.org /pub/linux/kernel/v2.6/linux-2.6.39.3.tar.bz2
安装有关编译程序。安装 make ,gcc, make-kpkg,运行 menuconfig 等等和编译内核相关的工具。
安装不了,请检查 /etc/apt/sources.list 文件。
有关命令:
命令:
$sudo
libncurses5-dev fakeroot
二、解压源代码
注意,网上很多教程上说应该解压到 /usr/src,纯属以讹传讹,linux 掌门人 linus 说解压到任何目录上都可以。可以放在自己的主目录下的 src 目录。
如果你下载源代码是放到自己的主目录下或者运行上面的 wget 下载的,那么运行下列命令:
命令:
$ cd ~
$ mkdir src && tar jfx linux-2.6.39.3.tar.bz2 -C src/
现在,源代码就在 ~/src/linux-2.6.39.3
进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。
命令:
$ cd ~/src/linux-2.6.39.3
三、开始编译前的准备工作
现在,源代码就在 ~/src/linux-2.6.39.3,进入源代码的目录,准备下一步的工作。后面都在这个目录里面进行。如果先前编译过内核,就需要清除先前编译内核时残留的 .o 文件和不必要的关联。
命令:
$ cd ~/src/linux-2.6.39.3
$ sudo make mrproper
网上很多教程上说把现在使用的内核的config拷贝过来参考,其实是不需要的,ubuntu还有debian会自动做这步。当然也可以将以前的配置拷贝过来。
命令:
代码:
cp /boot/config-`uname -r` ./.config
四、开始配置内核选项
命令:
$sudo make menuconfig
我们选用的是图形界面的配置,在配置选项的最下方有一个Load和Save选项,我们先将第四步复制过来的配置文件.config文件Load进来,在Save就可以了。
五、开始编译内核
ubuntu的工具是make-kpkg,和其他的发行版相比,步骤相对简单。
命令:
$sudo make-kpkg clean
$ sudo make-kpkg --initrd --append-to-version=t61 kernel_image kernel-headers
上述命令中的t61可以用自己喜欢的字符代替,最后的字符一定是数字。输完上述命令回车之前,建议把浏览器还有别的运用程序都关掉,机器开始的工作比较艰苦。
六、安装内核
编译完成就是安装工作。编译好的内核在上一层目录。包括linux-headers-...-_i386.deb和linux-image-...-i386.deb两个文件,如果不搞开发的话,只要安装内核就可以,头文件以后要用的时候再说。
命令:
$ cd ..
$ sudo dpkg -i
文件名很长,如果不用tab自动补足是不可能的。安装完成后和老内核比较一下大小。
命令:
$ ls -l /boot/
七、重新启动验证新内核。
代码:
$ sudo reboot
重启时,电脑可以正常开机,内核也可以正常运行。