HOWTO Compile Kernel
出自Gentoo Linux Wiki
目录 |
[编辑] 安装内核源代码
| 代码: 安装内核源代码 |
$ USE=symlink emerge gentoo-sources |
使用symlink的目的是建立符号连接/usr/src/linux,以指向安装好的内核源代码目录。
| 警告: 目前使用上面的命令装的是2.6内核,下面的命令也适用于2.6内核,但不一定适用于2.4内核。不过现在没有必要再用2.4内核。特别是在目前glibc 2.4已经稳定了的情况下,已经根本无法再用2.4内核。 |
[编辑] 配置
配置内核对于新手来说是一个噩梦。不过事实上,配置过程要远比一般人想象的容易。只是有些技巧了解的人不多。
[编辑] 配置命令介绍
[编辑] make defconfig
非交互式命令,作用是生成一个缺省的配置文件。这个配置文件里各内核组件基本完整,只需修改硬件和文件系统即可。仅在第一次配置时使用。
[编辑] make menuconfig
最通用的配置方式。它的运行几乎不限环境,远程登录也可以用它配置,所以我们重点介绍。
交互式命令。用法如下:
- 方向键选择菜单项/按钮
- 回车进入子菜单
- 按高亮字母直接选择相应菜单项
- Y键包含,N键排除,M键配置成模块
- <Esc><Esc>退出,?键查看当前菜单项帮助信息,/键搜索
- 图例:[*] 包含 [ ] 排除 <M> 模块 < > 可配置成模块
[编辑] make oldconfig
交互式命令。利用已有的.config来生成新的.config。如果遇到新内核新增的选项,会挨个提示你是否启用。建议选择默认,即直接按回车。同时记录下有疑问的选项,以便下面再make menuconfig手工配置。仅在升级配置时使用。
[编辑] 第一次配置
| 代码: 第一次配置 |
$ cd /usr/src/linux $ make defconfig $ make menuconfig |
make menuconfig这一步就是要修改硬件和文件配置。可能需要改动的主要有这么几个部分,分别是
- CPU类型(默认是CONFIG_MK7)
- IDE驱动(CONFIG_BLK_DEV_VIA82CXXX)
- 网卡(CONFIG_E100)
- AGP(CONFIG_AGP_VIA)
- DRM(CONFIG_DRM_RADEON,建议不要启用,使用portage里的x11-drm)
- Framebuffer(CONFIG_FB_RADEON)
- 声卡(CONFIG_SND_VIA82XX)
- 文件系统(只有CONFIG_EXT2_FS/CONFIG_[V]FAT_FS,ext3/reiserfs/xfs/jfs均未设置)
- NLS CODEPAGE(需手工增加CONFIG_NLS_CODEPAGE_936)
以上括号里是默认配置情况。虽然不知道这是谁的配置,不过可以看出这个人的CPU是AMD的,主板是VIA的,显卡是ATI Radeon,只用ext2/fat32文件系统,且不是中文用户。
| 注意: 善用make menuconfig的搜索功能来搜索某选项(CONFIG_...)相关的菜单项的位置。如果你需要使用内核的其他功能,请参阅相关的官方文档或wiki,一般这样的文章里都有内核配置相关章节。如果实在不知道应该配置哪个选项,可以利用Linux内核配置档案 |
[编辑] 升级时配置
| 代码: 升级时配置 |
$ cd /usr/src/linux $ cp /boot/config .config $ make oldconfig $ make menuconfig[可选] |
[编辑] 编译和安装
| 代码: 编译和安装 |
$ make $ make modules_install $ make install |
| 注意: make install时如已有同名文件,原文件会被改名,文件名后会添加一个.old。如果确认不需要保留这些旧文件,可以自行删除。 |
[编辑] 配置grub.conf(menu.lst)
建议使用wildcard命令(SUSE grub才有此命令)。看下面的示例:
| 代码: grub.conf |
title Gentoo-emergence-*
wildcard (hd0,1)/boot/vmlinuz-*
kernel (hd0,1)/boot/vmlinuz-* root=/dev/hda2 video=vesafb:ywrap,1024x768-32@60 splash=silent,fadein,theme:emergence quiet CONSOLE=/dev/tty1 resume2=swap:/dev/hda3
initrd (hd0,1)/boot/fbsplash-emergence-1024x768
|
这个配置是一劳永逸的。每次安装完内核后,你的升级过程就结束了,不用再理会grub.conf。
