【Linux驱动开发 ---- 1.1_Linux 基础操作入门】

Linux驱动开发 ---- 1.1_Linux 基础操作入门

目录

学前预览

目标 :熟悉 Linux 基本操作,为后续驱动开发奠定基础。
重点

  • Linux 常用命令:lscdchmodpstopgrepfind 等。
  • 进程管理与系统监控:pstophtopkillnice 等。
  • 文件系统结构:/etc/var/dev/sys/proc 等。
  • 了解 procfssysfs 的作用。

1. Linux 目录结构概述

Linux 采用 树状结构 的文件系统,主要目录如下:

目录 说明
/ 根目录,所有文件和目录的起点
/bin 二进制可执行文件,包含常用命令 (ls, cp, mv 等)
/etc 系统配置文件 (passwd, fstab 等)
/home 用户目录 (/home/your_username)
/var 变量数据 (日志 /var/log/, 进程 /var/run/)
/dev 设备文件 (如 /dev/sda1, /dev/ttyUSB0)
/proc 内核和进程信息 (虚拟文件系统)
/sys 设备驱动和硬件信息

实践任务

sh 复制代码
ls /
ls /proc
cat /proc/cpuinfo    # 查看 CPU 信息
cat /proc/meminfo    # 查看内存信息
ls /sys/class        # 观察设备分类

2. 常用命令

(1)文件与目录操作

sh 复制代码
ls -al            # 列出所有文件(含隐藏文件)
cd /etc           # 进入 /etc 目录
pwd               # 显示当前路径
mkdir test_dir    # 创建目录
rm -rf test_dir   # 删除目录

案例 :创建一个 driver_project 目录,并在其中创建 srcdocs 子目录:

sh 复制代码
mkdir -p ~/driver_project/src ~/driver_project/docs
ls -R ~/driver_project  # 递归列出结构

(2)文件权限管理

sh 复制代码
chmod 755 my_script.sh  # 赋予可执行权限
chown root:root myfile  # 更改文件所属用户和组

案例 :让脚本 test.sh 仅当前用户可执行:

sh 复制代码
chmod 700 test.sh
ls -l test.sh  # 确认权限

(3)进程管理

sh 复制代码
ps aux        # 显示所有进程
top           # 实时监视系统进程
kill -9 PID   # 强制终止进程

案例 :查找并终止 vim 进程:

sh 复制代码
ps aux | grep vim
kill -9 <PID>

3. procfssysfs 介绍

(1)/proc 目录

  • /proc/cpuinfo ------ 查看 CPU 信息。
  • /proc/meminfo ------ 查看内存信息。
  • /proc/interrupts ------ 查看中断信息(与驱动相关)。
  • /proc/modules ------ 查看已加载的内核模块。

案例:获取当前系统的进程信息:

sh 复制代码
cat /proc/uptime
cat /proc/loadavg

(2)/sys 目录

  • /sys/class/ ------ 显示设备分类信息,如 gpio, net, tty
  • /sys/devices/ ------ 存放设备相关信息,驱动开发时需要关注。

案例:查找当前加载的 USB 设备:

sh 复制代码
ls /sys/bus/usb/devices
cat /sys/bus/usb/devices/usb1/product

4. Shell 脚本基础

目标:学会编写简单的 Shell 脚本,提高 Linux 操作效率。

案例:写一个自动打印系统信息的脚本:

sh 复制代码
#!/bin/bash
echo "系统信息概览:"
echo "CPU 信息:"
cat /proc/cpuinfo | grep "model name" | uniq
echo "内存信息:"
cat /proc/meminfo | head -n 5

执行脚本

sh 复制代码
chmod +x system_info.sh
./system_info.sh

5. 总结与作业

今日学习回顾

  • 掌握了 Linux 目录结构。
  • 熟悉了 lscdchmodpstop 等命令。
  • 了解了 /proc/sys 的作用。
  • 编写了一个简单的 Shell 脚本。

📌 作业

  1. 编写一个 Shell 脚本 monitor.sh,每 5 秒监控 CPU 和内存使用情况:

    sh 复制代码
    while true; do
        echo "CPU 使用率:$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')%"
        echo "可用内存:$(free -m | awk 'NR==2{print $7}') MB"
        sleep 5
    done

    执行方式

    sh 复制代码
    chmod +x monitor.sh
    ./monitor.sh
  2. 查找 procfs 目录下,列出所有当前加载的模块 (lsmod 命令等价的方式)。

    使用 cat 命令读取 /proc/modules 文件:

    复制代码
    cat /proc/modules

    输出解释:

    • 该命令会列出当前加载的所有内核模块。
    • 每行的格式通常是:
      • 模块名:模块的名称
      • 模块大小:该模块占用的内存大小
      • 使用计数:模块当前的引用计数
      • 依赖的模块:该模块依赖的其他模块(如果有)
      • 模块的地址:模块在内存中的起始地址
  3. sysfs 方式,查看系统中的所有 USB 设备,并尝试找到 产品名称

    查看所有 USB 设备的产品名称,可以编写一个循环来查看每个设备的 product 文件。例如:

    复制代码
    for device in /sys/bus/usb/devices/*; do
        if [ -f "$device/product" ]; then
            echo "$(basename $device): $(cat $device/product)"
        fi
    done

    这个脚本会遍历所有设备节点,并显示每个设备的 product 信息。

    解释:

    /sys/bus/usb/devices/ 目录下的每个设备节点对应系统中的一个 USB 设备。

    每个设备节点包含许多文件,其中 product 文件存储了 USB 设备的产品名称。

    通过循环遍历该目录下的设备,读取每个设备的 product 文件,可以获取所有 USB 设备的产品名称。


相关推荐
硬汉嵌入式2 分钟前
专为 MATLAB 优化的 AI 助手MATLAB Copilot
人工智能·matlab·copilot
北京盛世宏博24 分钟前
如何利用技术手段来甄选一套档案馆库房安全温湿度监控系统
服务器·网络·人工智能·选择·档案温湿度
搞科研的小刘选手29 分钟前
【EI稳定】检索第六届大数据经济与信息化管理国际学术会议(BDEIM 2025)
大数据·人工智能·经济
Code Warrior33 分钟前
【Linux】传输层协议UDP
linux·运维·udp
半吊子全栈工匠36 分钟前
软件产品的10个UI设计技巧及AI 辅助
人工智能·ui
2501_9411119938 分钟前
C++中的装饰器模式变体
开发语言·c++·算法
怕什么真理无穷1 小时前
C++_面试15_零拷贝
c++·面试·职场和发展
Evan芙1 小时前
Bash 变量命名规则与类型使用
linux·运维·开发语言·chrome·bash
Wave8451 小时前
STM32_标准库转hal库
stm32·单片机·嵌入式硬件
AA陈超1 小时前
ASC学习笔记0007:用于与GameplayAbilities系统交互的核心ActorComponent
c++·笔记·学习·ue5·虚幻引擎