操原作业(一)Ubuntu系统编译一个新的内核

本文围绕操作系统原理作业,介绍在Ubuntu系统编译新内核的方法。先说明可参考前文安装win10+Ubuntu双系统,接着阐述准备工作,包括获取内核源码并转移、安装相关依赖,然后详述编译内核的配置与编译过程,最后介绍生成新内核及启动的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统原理这门课布置了一项作业,要求在Ubuntu系统中编译一个新的内核。下面介绍怎么在Ubuntu系统中编译一个新的内核。

安装Ubuntu系统

如何安装win10+Ubuntu双系统,我已经在上一篇文章介绍了,还没安装的,或者感兴趣的,可以去看一下。

准备工作

获取linux内核源代码

可以在官方网站https://www.kernel.org/上下载linux内核源代码的压缩包。在这里插入图片描述
最新的内核源代码可以点击1处下载,如果要减少编译内核的时间,也可以下载历史版本,点击2处任意版本
下载压缩包之后,先解压缩,然后通过mv指令将压缩后的文件夹转移到/usr/src/目录下

sudo mv /home/ck/下载/linux-5.0.2/ /usr/src/

mv指令后面第一个参数填写自己的路径,第二个指令填写要转移到的路径

安装相关依赖

安装相关依赖直接在终端进行。先打开终端,依次输入如下命令:

sudo apt-get update
sudo apt-get install libncurses5-dev libssl-dev 
sudo apt-get install build-essential openssl 
sudo apt-get install zlibc minizip 
sudo apt-get install libidn11-dev libidn11
sudo apt-get install bison
sudo apt-get install flex

如下图所示
在这里插入图片描述
注意,这里一定要安装完所有相关的依赖,否则下面在编译内核的时候会出错。如果编译更新版的内核,可能会要求有更多的依赖性,不要经,根据编译时候的报错原因,继续安装相关的依赖就可以,安装完成之后再重新编译内核。

编译内核

做好前置的准备工作之后,就可以开始编译内核了。编译内核分为一下两个过程:

1.配置

依次输入以下命令:

sudo make mrproper
sudo make clean
sudo make menuconfig

如图所示
在这里插入图片描述
其中
sudo make mrproper可以清除编译过程中产生的所有中间文件
sudo make clean可以清除上一次产生的编译中间文件
sudo make menuconfig指令输入后会出现选择的图形化界面,如下图所示
在这里插入图片描述
在这个图形界面中,可以根据自己需要配置内核,也可以直接按右方向键选择到exit退出,退出提示中选择保存,实现内核的默认配置

编译

输入命令

sudo make -j4

如图所示
在这里插入图片描述
这里我的电脑是四核的,就用了-j4,如果电脑是八核的,也可以用-j8。j后面的数字越大,编译的时间就越快。这一步需要的时间比较久,笔者编译3.16.63用了20+分钟,编译5.0.2用了40分钟。编译过程如下图所示
在这里插入图片描述

生成新内核

编译完成之后,就可以生成新内核了。
首先,我们要先安装内核,依次输入如下命令:

sudo make modules_install        //安装内核模块
 
sudo make install      //安装内核

如图所示:
在这里插入图片描述
在这里插入图片描述
这两个过程不会需要很长的时间,等安装完内核之后,就重新启动计算机,进入Ubuntu高级选项界面,即可见到编译好的内核,选择该内核启动,如图所示
在这里插入图片描述
到这里,就成功编译完一个新的内核了。
下一篇文章,笔者将会介绍删除内核的方法,感兴趣的可以看看。

### Ubuntu 内核编译过程中虚拟机卡死解决方案 当在Ubuntu虚拟机中编译内核时遇到卡死现象,这通常与资源分配不当有关。为了有效解决问题并顺利完成内核编译工作,建议采取以下措施: #### 增加虚拟机资源配置 确保为虚拟机分配足够的硬件资源可以显著提高性能稳定性。对于编译任务而言,推荐至少提供4GB以上的RAM以及多个CPU核心支持[^2]。 ```bash # 使用命令查看当前系统的内存情况 free -m ``` #### 扩展磁盘空间 如果之前因为磁盘容量不足而遭遇困难,则应优先考虑扩展虚拟硬盘大小。虽然直接通过图形界面调整可能面临挑战,但可以通过其他方法实现扩容,比如利用VBoxManage工具(针对VirtualBox用户)来增大存储卷尺寸。 #### 减少并发线程数 默认情况下make会尽可能多地占用处理器来进行多线程编译,这对于某些环境来说可能是过度消耗资源的因之。因此,在执行`make`指令前设置合理的作业数量参数能够缓解这状况。 ```bash # 设置最大并发进程数目为物理CPU核心数减 export CONCURRENCY_LEVEL=$(($(nproc)-1)) ``` #### 编辑器优化 关闭不必要的后台程序和服务,特别是那些耗费大量计算能力的应用软件;同时也可以适当调低桌面特效等级以释放更多可用资源给到编译过程[^1]。 #### 更新至稳定版内核源码 从官方渠道获取最新的稳定版本内核代码库有助于规避潜在兼容性和效率方面的问题。访问[Ubuntu Kernel PPA](http://kernel.ubuntu.com/~kernel-ppa/mainline/)下载适合目标平台架构的tarball文件[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值