linux内核-源码编译安装

Posted by fishcried on October 8, 2014

1. 关于几个文件说明

  • 内核文件
    • kconfig 每个kconfig分表描述了所属目录源文件相关的内核配置菜单
    • /usr/src/linux-xxx/.config 保存配置kconfig文档的配置结果
    • Makefile 读取.config,进行编译控制
  • /boot/bzImage 压缩的内核,使用gzip压缩的
  • /boot/vmlinuz-xxx 可引导的,压缩的内核
  • /boot/initrd-xxx 临时的文件系统
  • /boot/System.map 内核符号表,内核没有使用该文件,但是很多程序驱动可能会使用到.

2. 编译步骤

编译需要的软件包

# duild-essential开发工具链,gcc,make等
apt-get install build-essential

2.1 安装步骤

1.下载并解压代码

wget xxx
cd /usr/src
xz -d linux-xxx.tar.xz
tar -xvf linux-xxx.tar

2.配置

手工配置内核的方法:

  • make config 纯文本方式,一般不适用
  • make menuconfig 用文本菜单的方式,这个比较直观.

    • * 将功能编译进内核
    • [] 不将功能编译进内核
    • [M] 将功能编译成模块
  • make xconfig 基于图形窗口

通过文本菜单的方式配置内核.

# 先准备一个配置文件
make oldconfig # 使用当前的配置生成.config
make defconfig # 使用默认配置生成.config

# 进行个性化定制
menuconfig

3.编译安装

# 先清理一下
make clean
make mrproper

# 编译	
make -jx

# 安装
sudo make modules_install
sudo make install

替换内核

正常的话,以下步骤是不需要手动的.在make install的使用会自动执行.

# 拷贝bzImage
cp /usr/src/linux-xxx/arch/x86/boot/bzImage /boot/
# 拷贝System.map
cp /usr/src/linux-xxx/arch/x86/System.map /boot/
# 生成镜像img-xxx
mkinitramfs xxx -o /boot/initrd/img-xxx
# 更新initramfs
update-initramfs -c -k 3.12.6
# 更新grub
update-grub2

变更记录

Why Who When
create fishcired 2014-10-08