linux 如何查看 major

lsblkblkid 命令查看 Linux 设备的主设备

Linux系统中,”major“通常指主设备号内核版本号中的主版本标识,以下是关于如何查看这两种不同场景下的详细说明:

linux 如何查看 major


查看设备的主设备号(Major Number)

当涉及硬件驱动开发时,每个设备文件都有一个唯一的标识符,由主设备号(Major)和次设备号(Minor)组成,在/dev目录下的设备节点会关联到特定的驱动程序,而主设备号决定了使用哪个驱动模块处理该类设备。

方法1:通过 /proc/devices 文件

直接查看系统已分配的所有主/次设备号组合:

cat /proc/devices

输出示例如下:
| 设备类型 | 主设备号 (Major) | 名称 |
|———-|——————|——————–|
| char | 1 | mem |
| block | 8 | sd |
| … | … | … |
此文件中每一行对应一种类型的设备及其对应的主设备号范围,主设备号为8通常代表SCSI磁盘设备。

方法2:使用宏定义解析现有设备号

若已知某个具体设备的路径(如 /dev/ttyS0),可通过编程接口提取其主设备号,在C语言中使用内核提供的宏:

#include <linux/kdev_t.h>
dev_t dev = MKDEV(int major, int minor); // 合成设备号
unsigned major = MAJOR(dev_t dev);      // 提取主设备号
unsigned minor = MINOR(dev_t dev);       // 提取次设备号

MKDEV(ma, mi)将两个数字合并为一个32位整数,高12位存储主设备号,低20位存储次设备号,这种机制允许动态分配和管理设备资源。

方法3:手动检查设备节点属性

对于特定设备文件(如 /dev/null),可以使用命令行工具获取详细信息:

linux 如何查看 major

ls -l /dev/null

虽然不会直接显示数字形式的主设备号,但结合上述工具可进一步分析,驱动程序注册时会调用类似以下的函数来声明支持的主设备号:

register_chrdev_region(dev_t first, unsigned int count, char name);

这里的参数first即起始的主设备号。


查看Linux内核版本的主版本号(Kernel Major Version)

Linux内核采用语义化版本控制策略,格式为 major.minor.patch-build.desc,其中的“major”表示重大架构变更后的迭代更新。

常用命令:

  1. uname -a
    完整输出包含内核版本信息:

    Linux localhost 5.4.0-91-generic #1 SMP Debian 5.4.78-1 (2020-06-09) x86_64 GNU/Linux

    这里的第一个数字 5 就是主版本号,代表这是一个较新的稳定分支。

  2. cat /proc/version
    显示更详细的编译信息:

    linux 如何查看 major

    Linux version 5.4.0-91-generic (buildd@lgvb12n64) (gcc version 9.3.0 (...) ) #1 SMP ...

    同样可以看到主版本号为 5

  3. lsb_release -a(适用于发行版)
    如果需要确认整个系统的发行版是否基于某个特定内核系列,该命令会返回类似结果:

    Distributor ID: Ubuntu
    Description:    Ubuntu 20.04.4 LTS
    Release:        20.04
    Codename:       focal

    尽管未直接展示内核细节,但可通过关联推断使用的内核大版本。


应用场景对比

场景 目标 典型工具
设备驱动开发 确定设备的主设备号 /proc/devices, MAJOR()
系统升级兼容性检查 识别当前运行的内核主版本 uname -a, cat /proc/version
硬件故障排查 验证是否正确加载对应驱动模块 dmesg | grep <主设备号>

相关问答FAQs

Q1: 如果两个设备具有相同的主设备号会怎样?

答:这是允许的设计模式,相同主设备号的不同设备通过唯一的次设备号区分,多个串口可能共享同一主设备号,但分配不同的次要编号(如 ttyS0~ttyS3),驱动程序内部会根据次设备号进行多路复用处理。

Q2: 为什么内核版本中的主版本极少变化?

答:根据Linux社区规范,只有发生根本性架构改动(如内存模型重构、调度器重写)才会递增主版本号,这种保守策略确保向后兼容性,避免破坏现有软件生态,从内核4.x升级到5.x意味着重大改进而非简单修复

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/94234.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年8月5日 19:49
下一篇 2025年8月6日 00:01

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN