博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 4.15.7内核fedora(Ubuntu)下编译安装
阅读量:4071 次
发布时间:2019-05-25

本文共 1728 字,大约阅读时间需要 5 分钟。

1. 内核源代码链接:

Latest Stable Kernel is : 4.15.7

2. 3个重要路径:

1>内核源码放置路径:/usr/src/kernels/

2>模块安装路径:/lib/modules/$(uname -r)/kernel/,这个内核版本在之后创建虚拟文件系统需要用到,即$(uname -r)这个目录名,必须一致.

3>  内核功能与模块配置文件,内核文件,虚拟文件系统放置目录/boot/

3.  编译过程

1>make mrproper确保内核功能选择文件删除

2>make clean 删除中间目标文件

3>make menuconfig 以图形界面的方式选择内核功能

根据不同类型的选择,有不同的标识:

「 [ ] 」(excludes)表示该选项没有被选取,编译后的kernel 将不会有此功能。

「 < > 」(module capable)表示该选项没有被选取,而且是可以被当做是module,可以在开机之后另外载入的。

「 [*] 」(built-in)表示该选项有被选取,编译后的kernel 包含此功能,而且该功能会被编入kernel image 中,这意味着在kernel 被载入时该功能就已经存在,有些功能是一定要在kernel 被载入时就存在的,例如读取filesystem,因为kernel 无法从它认不出的filesystem 里读取档案。 虽然将各能选成内建可以将整个kernel 的功能包成一个kernel image 档,但它也会造成执行时一些不必要的记忆体以及初始化时间的浪费。

「 <M> 」(module)表示该选项有被选取,而且是被编译成module 的形式,它会存放在filesystem中,并在kernel 被载入后才动态地载入。 编译成module 的优点是减少kernel image 的空间、加快开机时间,以及方便开发kernel 功能,因为module 是在开机后才被载入,每次修改该功能时只需要重新编译并载入module ,而不需要重新编译整个kernel 并且重新开机

依据自己电脑选择适当功能,安装完save退出将生成一个.config的配置文件

4.  make bzImage 编译经过压缩的内核(fedora提前安装好openssl-devel,Ubuntu  sudo apt-get install opensll, sudo apt-get install libssl-dev 不然会提示错误) (Image — image)

5.  make modules 编译模块

6.  make modules_install安装模块,模块安装在/lib/modules/下

7.  cp /usr/src/kernels/linux-4.15.7/arch/x86/boot/bzImage  /boot/vmlinuz-4.15.7  移动内核到/boot

8. cp /usr/src/kernels/linux-4.15.7/.config /boot/config-4.15.7 备份设置文件

9.  mkinitrd -v /boot/initramfs-4.15.7.img    4.15.7

(Ubuntu:  mkinitramfs -o /boot/initrd.img-4.18.5  4.18.5)

新建虚拟文件系统,4.15.7即是上面提到的$( uname -r)目录,因为SCSI硬盘需要模块化,加载模块需要在根目录,但是此时硬盘根本无法使用,目录树不存在,故使用initrd来新建虚拟文件系统,仿真成为根目录。

10.  grub2-mkconfig   -o   /boot/efi/EFI/fedora/grub.cfg  自动更新grub文件,UEFI机器上   (Ubuntu   sudo update-grub2)

11. 重新启动,在选择操作系统界面会出现4.15.7这个操作系统,我第一次安装进入了紧急模式,在编译3次之后在可以进入操作系统(不知道哪里错了…),只是内核变了,界面依旧是fedora的界面,执行命令uname -r 能看到版本是4.15.7

转载地址:http://lfgji.baihongyu.com/

你可能感兴趣的文章
[转]开源中最好的Web开发的资源
查看>>
Docker上部署SpringBoot项目并推送镜像到Docker Hub上---以MacOS为例
查看>>
bibtex I was expecting a `,‘ or a `}‘ 问题解决
查看>>
sql server中各类范式的理解
查看>>
进程同步
查看>>
Python中列表元素删除
查看>>
Eclipse中改动jsp文件的编码格式以及字体大小
查看>>
二分查找与递归式二分查找
查看>>
全排列问题
查看>>
Eclipse常用快捷键
查看>>
用Python实现与WeChat交互
查看>>
Oracle 11g数据库安装包
查看>>
用springmvc上传文件后Eclipse不会自动更新文件
查看>>
Hibernate中复合主键配置
查看>>
在Navicat for MySQL中修改表的编码格式
查看>>
Django+layui 实现多文件上传,文件下载
查看>>
dubbo 入坑笔记之命名空间错误
查看>>
JSP中实现关键字高亮显示
查看>>
form表单嵌套提交
查看>>
Error:(3, 32) java: 程序包org.springframework.boot不存在
查看>>