Linux笔记 Linux内核的安装.md
RToax 2020年10月

1. 准备工作

1.1. 下载

The Linux Kernel Archives
Index of /pub/linux/kernel/

我下载的版本为:linux-5.9.1.tar.xz

1.2. 解压

tar -xf linux-5.9.1.tar.xz

解压后的大小为:

du -sh linux-5.9.1/
1.1G    linux-5.9.1/

1.3. 移动

mv linux-5.9.1 /usr/src/kernels/

1.4. 复制配置文件

cp -v /boot/config-$(uname -r) .config
"/boot/config-3.10.0-1062.el7.x86_64" -> ".config"

1.5. 安装依赖

yum install build-essential libncurses-dev bison flex libssl-dev libelf-dev

或者

yum group install "Development Tools"

安装

yum install ncurses-devel bison flex elfutils-libelf-devel openssl-devel

1.6. 更新GCC

需要更新较新的GCC编译器,否则会报错如下:

  CC       /usr/src/kernels/linux-5.9.1/tools/objtool/librbtree.oCC      scripts/mod/empty.o
In file included from ././include/linux/compiler_types.h:74:0,from <命令行>:0:
./include/linux/compiler-gcc.h:15:3: 错误:#error Sorry, your compiler is too old - please upgrade it.# error Sorry, your compiler is too old - please upgrade it.^
make[2]: *** [scripts/mod/empty.o] 错误 1
make[1]: *** [prepare0] 错误 2
make[1]: *** 正在等待未完成的任务....LD       /usr/src/kernels/linux-5.9.1/tools/objtool/objtool-in.oLINK     /usr/src/kernels/linux-5.9.1/tools/objtool/objtool

创建缓存

yum makecache

列出可安装的工具组

yum grouplist

安装对应的工具组

yum groupinstall "Development Tools"

安装高版本的gcc编译器
安装 CentOS SCLo RH 仓库:

yum install centos-release-scl-rh

安装 devtoolset-9-gcc rpm 包:

yum install devtoolset-9-gcc

使devtoolset-9生效

scl enable devtoolset-9 bash
gcc --version

1.7. 配置内核

make menuconfig

2. 编译内核

make

或者

## use 4 core/thread ##
$ make -j 4
## get thread or cpu core count using nproc command ##
$ make -j $(nproc)

进入漫长的编译过程

...CC [M]  drivers/pci/hotplug/acpiphp_ibm.oCC [M]  sound/core/isadma.oAR      drivers/pci/hotplug/built-in.aAR      drivers/pci/controller/dwc/built-in.aCC      kernel/crash_dump.oCC [M]  sound/core/sound_oss.oAR      drivers/pci/controller/mobiveil/built-in.aCC      drivers/pci/controller/vmd.o
...CC [M]  fs/nfs/super.oCC      drivers/pci/probe.oCC [M]  sound/core/pcm.o
...

3. 安装内核

3.1. 安装内核模块

sudo make modules_install

我在安装过程中遇到存储不足的情况,用下面命令查看并清理对应文件

du -h -x --max-depth=1

3.2. 安装内核

make install

这会安装三个后续grub会用到的文件

  • initramfs-5.9.1.img
  • System.map-5.9.1
  • /boot/vmlinuz-5.9.1

4. 更新grub配置

如果是CentOS/RHEL/Oracle/Scientific and Fedora Linux

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo grubby --set-default /boot/vmlinuz-5.9.1   #安装自己定义的名称来设置

如果是Debian/Ubuntu Linux

$ sudo update-initramfs -c -k 5.9.1
$ sudo update-grub

可以用下面的命令确认是否执行成功:

grubby --info=ALL | more
grubby --default-index
grubby --default-kernel

5. 重启

reboot

进入系统后:

uname -mrs
Linux 5.9.1 x86_64

6. 参考文章

《How to compile and install Linux Kernel 5.1.2 from source code》

以上内容由RTOAX翻译整理自网络。

Linux内核安装-5.9.1为例相关推荐

  1. 【Linux 内核】编译 Linux 内核 ⑦ ( 安装内核模块 | 安装内核 | 重启系统 | 查看当前内核版本 )

    文章目录 一.安装内核模块 二.安装内核 三.重启系统 四.查看当前内核版本 一.安装内核模块 确保 Linux 内核编译完成 , 没有任何报错之后 ; 参考 [Linux 内核]编译 Linux 内 ...

  2. linux内核安装教程

    linux内核安装教程 内核是操作系统的核心,是一个系统软件.负责管理系统中的进程.内存.设备驱动程序.文件和网络. 内核的组成:进程管理.定时器.中断管理.内存管理.模块管理.虚拟文件系统接口.文件 ...

  3. 【Linux 内核】编译 Linux 内核 ⑥ ( 安装 OpenSSL | 安装其它依赖库 | 内核编译完成 )

    文章目录 一.安装 OpenSSL 二.安装其它依赖库 三.Linux 内核编译完成 一.安装 OpenSSL 参考 [错误记录]编译 Linux 内核报错 ( fatal error: openss ...

  4. linux内核安装教程,Linux内核5.9的最重要功能及安装方法

    原标题:Linux内核5.9的最重要功能及安装方法 Linux内核5.9带来了吸引数据中心管理员的诸多性能提升.本文作者着重介绍了改进之处,并介绍了如何安装主线内核. 与5.8一样,Linux内核5. ...

  5. linux内核安装编译

    Linux内核下载及编译 下载Linux内核 可以从官网下载linux内核,也可以通过第三方网站进行下载. 官网网址:https://www.kernel.org/. 由于官网可能存在被墙的原因,所以 ...

  6. linux内核安装busybox,学习busybox基本配置安装(转载)

    下面是对1.00版本的实验. 1.文件准备 解压busybox-1.00.tar.gz得到busybox-1.00目录,进入,阅读相关的README和INSTALL,没什么特别的,都是提示busybo ...

  7. Linux内核安装后reboot选择,Linux内核配置选项 参考(3)

    Linux 2.6.7内核编译经验. 2.6高级的特点不在说了,服务器应运上其他系统(WIN-DOS什么是比不了的了)这里只说说对我们桌面用户有什么好处. 2.6中一个主要内部改变是现在内核自身是可抢 ...

  8. linux内核安装webkit,Ubuntu下安装基于WebKit 的网页浏览器Midori

    笑红尘为LinuxIDC.com编辑刊发此文,不当之处敬请指教. Midori是一个轻量级的跨平台的基于 WebKit 引擎网页浏览器,该浏览器的最大特色就是十分轻量,包括分页浏览.会话管理.书签收藏 ...

  9. Linux下安装java(Ubuntu为例)

    1.在oracle官网下载jdk.http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...

最新文章

  1. 【SpringMVC】基本概念
  2. oracle password_verify_function,使用PASSWORD_VERIFY_FUNCTION设置用户密码复杂度
  3. 文件读写错误坑 之 UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position
  4. 微信“看一看“个性化推荐:排序篇
  5. Docker中安装Jenkins实时发布.net core 项目(一)
  6. 漫步最优化三十一——梯度法
  7. linux查看cpu占用率_Linux 性能查看
  8. nginx负载均衡实验笔记
  9. npumpy.insert(arr, obj, values[, axis])
  10. Laravel框架学习笔记(一)——phpstudy下的安装配置
  11. 忆2015,迎2016(致敬自己)
  12. matlab设置脚本,MATLAB脚本和功能
  13. Android手机截图怎么做,手机截屏怎么弄,详细教您手机截图方法
  14. 计算机基本组成及功能
  15. 浅谈面试经验(面试官角度)
  16. 论:CMMI 过程改进规程
  17. CRMEB 商城订单发货功能
  18. 树莓派3卡片电脑,指尖上的智慧
  19. 前端开发APP应该采取什么框架?
  20. Scrum框架详解总结

热门文章

  1. 虚拟空间 配置 服务器,虚拟主机空间可以修改服务器配置吗
  2. MyBatis--工具类模板
  3. Vue框架引入JS库的正确姿势
  4. runtime的意义
  5. mybatis 注解忽略属性
  6. kafka 多线程消费
  7. Xcode同一个Workspace中两个工程依赖于Undefined Symbol Error
  8. 学习记录012-NFS
  9. android.content.res.Resources$NotFoundException: String resource ID XXXX
  10. 国三计算机考试难度大吗,报考计算机技术在职研考试科目多吗考试难度大吗需要有计算机国三基础吗...