操作系统-内核编译

Ubuntu内核编译指南

内核编译

0 必要软件下载

需要下载libncurses5-dev build-essential kernel-package

sudo apt-get install libncurses5-dev build-essential kernel-package

一般来说默认的下载源都是非常慢的,可以去百度一下ubuntu换源,换成清华源或者阿里源。

1 下载内核

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.18.24.tar.xz

2 解压缩并移动

tar -Jxvf linux-3.18.24.tar.xz -C /usr/src/

3 移动至上述目录

cd /usr/src/linux-3.18.24/

4 生成.config文件/内核功能选择

生成配置文件有两种办法:

  • 直接复制当前内核的配置文件
  • 自己生成内核的配置文件

复制当前

cp/boot/config-`uname-r` .config

自己生成

其实有比较多的方式,这边还是推荐make menuconfig

make menuconfig

接下来会出现一个界面,具体每个选项的含义可以参照优快云或者ppt上面的说明,可以直接选在下方的save来产生默认的配置。

5 make

编译内核

make clean bzImage modules

上述步骤大概会需要2-3小时。其中make可以加参数-j n来加快编译。n可以是电脑线程个数(一般而言,英特尔的cpu一个核心可以开启两个线程,所以线程数是核心数的两倍)
在这里插入图片描述

编译模块:

make modules_install

进行内核安装

make install

6 更改grub

按照ppt或者网上的方式,至少在我ubuntu14.04修改是不起作用的。

建议使用如下方式进行更改:

查看可用内核,记下需要启动的内核的标号(从0开始标号的)

grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re "s/(.? )'([^']+)'.*/\1 \2/"

大致的输出结果如下:

在这里插入图片描述

需要启动的是3.18.24, 所以标号为4

更改默认启动内核

vi /etc/default/grub

在这里插入图片描述

将上述第六行改为"1>x"(x为之前内核的标号)

更新grub

 update-grub

重启

reboot

重启之后通过uname -r来查看内核版本。

### Linux内核编译教程及相关信息 Linux内核编译是一项复杂但非常重要的任务,它允许用户根据自己的硬件和需求定制操作系统的核心部分。以下是关于Linux内核编译的相关信息和步骤: #### 1. 下载并解压内核源代码 首先需要从官方站点下载最新的稳定版本内核源代码。推荐从以下地址获取: `http://www.kernel.org/pub/linux/kernel/`[^1] 假设下载的文件名为 `linux-x-y-z.tar.gz`,可以使用以下命令解压: ```bash tar -xvzf linux-x-y-z.tar.gz -C /usr/src/ ``` 为避免冲突,建议将现有内核源代码目录重命名或备份。 #### 2. 配置内核选项 进入解压后的内核源代码目录后,需要配置内核选项。可以通过图形界面工具或者命令行工具完成此操作: - 使用菜单配置工具: ```bash make menuconfig ``` - 或者直接复制当前系统的内核配置作为基础: ```bash cp /boot/config-$(uname -r) .config make oldconfig ``` 通过这些工具,可以根据硬件环境和需求裁剪内核功能,从而减少不必要的模块加载[^1]。 #### 3. 编译内核 配置完成后,开始编译内核及其模块: - 编译内核: ```bash make -j$(nproc) ``` - 编译模块: ```bash make modules ``` #### 4. 安装内核和模块 编译成功后,需要将新编译内核安装到系统中: - 安装内核: ```bash sudo make install ``` - 安装模块: ```bash sudo make modules_install ``` #### 5. 更新引导加载程序 为了使新编译内核生效,需要更新引导加载程序(如GRUB)。执行以下命令以更新引导配置: ```bash sudo update-grub ``` #### 6. 重启系统 最后,重启系统以加载新编译内核: ```bash sudo reboot ``` #### 查看内核编译时间 如果需要查看内核编译时间,可以通过以下命令实现: ```bash cat /proc/version ``` 该命令会显示内核版本以及编译时间等信息[^1]。 #### 注意事项 在某些情况下,编译完成的内核镜像可能会带有额外的头信息,这可能导致启动时出现异常。例如,`uImage` 文件可能需要调整其下载地址和入口地址,以避免冲突[^3]。 --- ### 示例代码:检查内核版本和编译时间 以下是一个简单的脚本,用于检查当前运行内核的版本和编译时间: ```bash #!/bin/bash echo "当前运行的内核版本及编译时间:" cat /proc/version ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值