Linux内核源码 - 23.介绍&内核升级

连接视频


为什么要阅读linux内核?

爱好,就是喜欢linux(黑客精神)

想深入理解linux底层运行机制,对操作系统有深入理解

阅读Linux内核,你会整个计算机体系有一个更深刻的认知。作为开发者,不管你从事是驱动开发,应用开发还是后台开发,你都需要了解操作系统内核的运行机制,这样才能写出更好的代码。

作为开发人员不应该只局限在自己的领域,你设计的模块看起来小,但是你不了解进程的调用机制,你不知道进程为什么会阻塞、就绪、执行几个状态。那么很难写出优质的代码。

作为追求的程序员,还是应该深入的了解一个操作系统的底层机制,比如(linux/unix)最好是源码级别的,这样你写多线程高并发程序,包括架构,优化,算法等,高度不一样,当然也不是要求把一个非常庞大的Linux系统内核每一行都读懂,起码至少你看几个核心的模块。



linux0.01内核源码

基本介绍

Linux的内核源代码可以从网上下载,解压缩后文件一般都位于linux目录下。内核源代码有很多版本,可以从linux0.01 内核入手,总共的代码1w行左右,版本 5.9.8 总共代码超过700w行,非常庞大。

内核地址:http://www.kernel.org
在这里插入图片描述

很多人害怕都Linux内核,Linux内核这样大而复杂的系统代码,阅读起来确实有很多困难,但是也不象想象的那么高不可攀。建议可以从 linux0.01 入手。


linux0.01内核源码目录&阅读

阅读内核源码技巧

1、linux0.01 的阅读需要懂c语言

2、阅读源码前,应知道Linux内核源码的整体分布情况。现代的操作系统一般有进程管理、内存管理、文件系统、驱动程序和网络等组成。Linux内核源码的各个目录大致与此相对应。

3、在阅读方法或顺序上,有纵向与横向之分。所谓的纵向就是顺者程序的执行顺序逐步进行;所谓的横向,就是按模块进行。它们经常结合在一起进行。

4、对应Linux启动的代码可顺者Linux的启动顺序一步步来阅读;对于像内存管理部分,可以单独拿出来进行阅读分析。实际上这是一个反复的过程,不可能读一遍就理解


linux内核源码阅读&目录介绍&main.c 说明

在这里插入图片描述
目录说明:
boot:和系统引导相关的代码
fs:存放linux支持的文件系统代码
include:存放linux核心需要的头文件,比如:asm、linux、sys
init:包含了内核启动的处理代码(INITiation)。main.c是内核的核心文件,这是用来衔接所有的其他文件的源代码主文件。
kernel:系统内核相关的源码
lib:存放库代码
mm:和内存管理相关的代码
tools:和内核交互的工具
Makefile:编译文件

main.c 文件
在这里插入图片描述

void main(void)         /* This really IS void, no error here. */
{                       /* The startup routine assumes (well, ...) this */
/*
 * Interrupts are still disabled. Do necessary setups, then
 * enable them
 */
        time_init(); 	# 初始化运行时间
        tty_init();		# tty初始化 终端 
        trap_init();	# 陷阱门(硬件中断向量)初始化
        sched_init();	# 调度程序初始化
        buffer_init();	# 缓存管理初始化
        hd_init();		# 硬盘初始化
        sti();			# 所有初始化工作完后,开启中断 
        move_to_user_mode();	# 进入到用户模式
        if (!fork()) {          /* we count on this going ok */
                init();
        }
/*
 *   NOTE!!   For any other task 'pause()' would mean we have to get a
 * signal to awaken, but task0 is the sole exception (see 'schedule()')
 * as task 0 gets activated at every idle moment (when no other tasks
 * can run). For task0 'pause()' just means we go check if some other
 * task can run, and if not we return here.
 */
        for(;;) pause();
}

linux内核最新版本和内核升级

内核地址

http://www.kernel.org

下载&解压最新版本

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.16.tar.gz【下载】
tar -zxvf linux-5.8.16.tar.gz【解压】

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.16.tar.gz
在这里插入图片描述
在这里插入图片描述
tar -zxvf linux-5.8.16.tar.gz
在这里插入图片描述


linux内核升级应用实例

将Centos系统从 7.6内核升级到7.8版内核(兼容性问题)

在这里插入图片描述


具体步骤,演示

uname -a 【查看当前的内核版本】
yum info kernel -q 【检测内核版本,显示可以升级的内核】
yum update kernel 【升级内核】
yum list kernel-q 【查看已经安装的内核】

uname -a
在这里插入图片描述
yum info kernel -q
在这里插入图片描述
yum update kernel
在这里插入图片描述
yum list kernel -q
在这里插入图片描述
重启选择内核版本
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值