【Linux驱动开发 ---- 1.1_Linux 基础操作入门】
Linux驱动开发 ---- 1.1_Linux 基础操作入门
目录
- Linux驱动开发 ---- 1.1_Linux 基础操作入门
- **学前预览**
- **1. Linux 目录结构概述**
- **2. 常用命令**
- **(1)文件与目录操作**
- 在这里插入图片描述
- **(2)文件权限管理**
- **(3)进程管理**
- **3. `procfs` 和 `sysfs` 介绍**
- **(1)`/proc` 目录**
- **(2)`/sys` 目录**
- **4. Shell 脚本基础**
- **5. 总结与作业**
学前预览
目标:熟悉 Linux 基本操作,为后续驱动开发奠定基础。
重点:
- Linux 常用命令:
ls
、cd
、chmod
、ps
、top
、grep
、find
等。 - 进程管理与系统监控:
ps
、top
、htop
、kill
、nice
等。 - 文件系统结构:
/etc
、/var
、/dev
、/sys
、/proc
等。 - 了解
procfs
和sysfs
的作用。
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 | 设备驱动和硬件信息 |
实践任务:
ls /
ls /proc
cat /proc/cpuinfo # 查看 CPU 信息
cat /proc/meminfo # 查看内存信息
ls /sys/class # 观察设备分类
2. 常用命令
(1)文件与目录操作
ls -al # 列出所有文件(含隐藏文件)
cd /etc # 进入 /etc 目录
pwd # 显示当前路径
mkdir test_dir # 创建目录
rm -rf test_dir # 删除目录
案例:创建一个 driver_project
目录,并在其中创建 src
和 docs
子目录:
mkdir -p ~/driver_project/src ~/driver_project/docs
ls -R ~/driver_project # 递归列出结构
(2)文件权限管理
chmod 755 my_script.sh # 赋予可执行权限
chown root:root myfile # 更改文件所属用户和组
案例:让脚本 test.sh
仅当前用户可执行:
chmod 700 test.sh
ls -l test.sh # 确认权限
(3)进程管理
ps aux # 显示所有进程
top # 实时监视系统进程
kill -9 PID # 强制终止进程
案例:查找并终止 vim
进程:
ps aux | grep vim
kill -9 <PID>
3. procfs
和 sysfs
介绍
(1)/proc
目录
/proc/cpuinfo
—— 查看 CPU 信息。/proc/meminfo
—— 查看内存信息。/proc/interrupts
—— 查看中断信息(与驱动相关)。/proc/modules
—— 查看已加载的内核模块。
案例:获取当前系统的进程信息:
cat /proc/uptime
cat /proc/loadavg
(2)/sys
目录
/sys/class/
—— 显示设备分类信息,如gpio
,net
,tty
。/sys/devices/
—— 存放设备相关信息,驱动开发时需要关注。
案例:查找当前加载的 USB 设备:
ls /sys/bus/usb/devices
cat /sys/bus/usb/devices/usb1/product
4. Shell 脚本基础
目标:学会编写简单的 Shell 脚本,提高 Linux 操作效率。
案例:写一个自动打印系统信息的脚本:
#!/bin/bash
echo "系统信息概览:"
echo "CPU 信息:"
cat /proc/cpuinfo | grep "model name" | uniq
echo "内存信息:"
cat /proc/meminfo | head -n 5
执行脚本:
chmod +x system_info.sh
./system_info.sh
5. 总结与作业
✅ 今日学习回顾:
- 掌握了 Linux 目录结构。
- 熟悉了
ls
、cd
、chmod
、ps
、top
等命令。 - 了解了
/proc
和/sys
的作用。 - 编写了一个简单的 Shell 脚本。
📌 作业:
-
编写一个 Shell 脚本
monitor.sh
,每 5 秒监控 CPU 和内存使用情况:while true; doecho "CPU 使用率:$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')%"echo "可用内存:$(free -m | awk 'NR==2{print $7}') MB"sleep 5 done
执行方式:
chmod +x monitor.sh ./monitor.sh
-
查找
procfs
目录下,列出所有当前加载的模块 (lsmod
命令等价的方式)。
使用 cat 命令读取 /proc/modules 文件:cat /proc/modules
输出解释:
- 该命令会列出当前加载的所有内核模块。
- 每行的格式通常是:
- 模块名:模块的名称
- 模块大小:该模块占用的内存大小
- 使用计数:模块当前的引用计数
- 依赖的模块:该模块依赖的其他模块(如果有)
- 模块的地址:模块在内存中的起始地址
-
用
sysfs
方式,查看系统中的所有USB
设备,并尝试找到产品名称
。
查看所有 USB 设备的产品名称,可以编写一个循环来查看每个设备的 product 文件。例如:for device in /sys/bus/usb/devices/*; doif [ -f "$device/product" ]; thenecho "$(basename $device): $(cat $device/product)"fi done
这个脚本会遍历所有设备节点,并显示每个设备的 product 信息。
解释:
/sys/bus/usb/devices/ 目录下的每个设备节点对应系统中的一个 USB 设备。每个设备节点包含许多文件,其中 product 文件存储了 USB 设备的产品名称。
通过循环遍历该目录下的设备,读取每个设备的 product 文件,可以获取所有 USB 设备的产品名称。