Linux 内核编译

一、编译一个内核

1.下载Linux2.6.*的内核源代码
2.tar解压到目录dd后,在dd内操作:
1)从/boot里拷贝一份config文件命名为.config; 并make menuconfig 保存
2)make -j 8
3)make modules_install
4)make install
(如果缺包,http://archives.fedoraproject.org/pub/archive/fedora/
)
3.重启。

一言以蔽之:

make -j 8 && make modules_install && make install

二、怎么删除多余的内核?

cd到/boot目录下
ll
删除所有的带有旧版本内核的文件

rm *4.9.6*

更新grub

sudo update-grub2

三、centos下的一个错误

错误:

ERROR: modinfo: could not find module mlx5_ib

解决:

yum install libpciaccess libpciaccess-devel

四、arch Linux下编译安装内核

安装核心软件包

安装 base-devel 软件组 pacman -S base-devel

下载内核并解压

简单配置

导出当前内核设置
导出正在运行的内核的 .config 配置文件:

$ zcat /proc/config.gz > .config

警告: 如果使用导出的 .config 文件,不要忘了在 General Setup —> 选项中修改内核版本,这样可以避免编译的内核覆盖当前内核文件。(其实这个可以不用做,版本错不了的)

编译内核

编译时间将从15分钟到超过一小时不等。这很大程度依赖于选择了多少选项/模块和处理器性能。详情参考 Makeflags[broken link: invalid section]。.config 配置好之后,在内核目录允许:

$ make

编译内核模块

Warning: 从这里开始,需要 root 权限执行命令,否则会失败.
编译完内核后编译模块:

# make modules_install

该命令将编译好的模块拷贝至 /lib/modules/-,例如 /lib/modules/3.18.28-ARCH。这样,这些模块和那些被你电脑上其他内核使用的模块就独立开来。

Tip: 如果系统需要正常 Linux 内核外的模块,需要在定制内核安装完成之后重新编译它们。

拷贝内核到 /boot 目录

内核编译完成后会生成内核的 bzImage (big zImage) 文件,根据系统架构,将此文件复制到 /boot 目录,以 3.18 内核为例:

32-bit (i686) kernel:

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-linux318

64-bit (x86_64) kernel:

# cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-linux318

制作初始化内存盘

自动生成

复制和修改 mkinitcpio preset,就能用官方内核一样的方式生成自定义内核的 initramfs 镜像。下面例子中将已有的 preset 复制到 linux318 要使用的版本:

# cp /etc/mkinitcpio.d/linux.preset /etc/mkinitcpio.d/linux318.preset

针对定制内核编辑和修改此文件,ALL_kver= 应该和定制内核匹配:

/etc/mkinitcpio.d/linux318.preset
...
ALL_kver="/boot/vmlinuz-linux318"
...
default_image="/boot/initramfs-linux318.img"
...
fallback_image="/boot/initramfs-linux318-fallback.img"

用官方内核一样的方式生成 initramfs 镜像:

# mkinitcpio -p linux318

拷贝System.map

如果 /boot 支持软链接(i.e., not FAT32), 将 System.map 复制到 /boot, 然后创建 /boot/System.map 软链接到 /boot/System.map-YourKernelName:

# cp System.map /boot/System.map-YourKernelName
# ln -sf /boot/System.map-YourKernelName /boot/System.map

完成以上所有步骤之后,你的/boot目录中应该多出以下三个文件和一个软链接:

  • Kernel: vmlinuz-YourKernelName
  • Initramfs: Initramfs-YourKernelName.img
  • System Map: System.map-YourKernelName
  • System Map kernel symlink

Bootloader 设置

在你的启动器(bootloader)配置文件中为你神奇的新内核添加一个入口。范例见GRUB, LILO, GRUB2 or Syslinux。

参考文献

  1. https://wiki.archlinux.org/index.php/Kernels/Compilation/Traditional_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E7.AE.80.E5.8D.95.E9.85.8D.E7.BD.AE
  2. 2.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值