linux编译内核详解(转并修改)

来源:互联网 发布:idea tostring json 编辑:程序博客网 时间:2024/05/16 08:51

从源码编译内核 (简体中文)  

 获取源码
例:$ wget -c ftp://ftp.us.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.tar.bz2
  • 将源码拷贝到你的家目录:

$ cp linux-2.6.27.tar.bz2 ~/kernelbuild/

  • 解压源码:

$ cd ~/kernelbuild

$ tar -xvjf linux-2.6.27.tar.bz2

$ cd ~/kernelbuild/linux-2.6.27

 编译前设置

  • (推荐) 如果你想使用linux的默认配置,可以拷贝你现在正在运行的内核的 .config 设置文件。

$ zcat /proc/config.gz > .config

  • 设置内核。

$ make oldconfig (仅当你已经拷贝了内核配置文件)

$ make menuconfig

你也可以使用make xconfig(依赖Qt)或者make gconfig(依赖 GTK),来代替终端模式的make menuconfig。

  • 适当更改内核设置并保存。如果你希望通过多次配置探索达到最优配置的话,每次将你的内核配置文件备份将是明智之举。
  • 如果你希望用你现在的配置文件编译内核,不要忘了更改你的内核版本号,否则你可能会覆盖掉你现在正使用的内核。

$ make menuconfig

一般设置 ---> (-ARCH) Local version - append to kernel release

 What about /usr/src/ ?

用/usr/src/目录编译,连同建立连接这种方法已经不用了,很多 hackers 并不赞同这种方法。最洁净的方法是简单地利用自己的家目录,作为一个普通用户设置并编译自己的内核,以root身份安装,或者用 makepkg 和pacman (上面提过)

编译和安装

选择以下一种方法:

1.手动的传统的方法

警告: 不要运行 make all 如果你用的是 GRUB ,并且依然装有 LILO; 它最后会设置 LILO,这样你可能再也不能启动你的机器了。如果你使用的是 GRUB 运行前make all先卸载 LILO(pacman -R lilo)。

  • 开始编译。

$ make clean

$ make dep

$ make modules

$ make bzImage

# make modules_install

(如果你是以普通用户身份编译的话,先运行make clean && make,然后以root身份运行make modules_install。

  • 拷贝内核。

# cp -v arch/i386/boot/bzImage /boot/vmlinuz-2.6.27-revision1

(你也可以拷贝配置文件和System.map到/boot,但是一般来说他们再也不需要了。

  • (推荐) 如果需要可以做一个启动盘(多数用户需要这个)

mkinitcpio -k 2.6.27-revision1 -g /boot/kernel26-revision1.img

  • 设置 /boot/grub/menu.lst 然后你的内核安装完成.
  • 另外,如果你用的是 LILO,则安装脚本直接会自动拷贝相应文件并且设置LILO:

$ cd ~/kernelbuild/linux-2.6.27/arch/i386/boot/ # sh ./install.sh

当然,你可以将vmlinuz, Kconfig, and System.map 文件更名; 然而, 版本号系统对控制和跟踪系统中的内核(如你编译了多少个内核)。你也可以试试在名称中加入日期和时间,当然你可以坚持你想要的简单的名字。

最后要说就是如果你是使用lilo的话,一旦sh ./install是无效的话

那么就修改/etc/lilo.conf中的配置节

修改完之后一定要记得/sbin/lilo 来完成关联,否则Lilo不知道已经修改配置节

建议,你就模仿已经存在就可以!

 

原创粉丝点击