插件窝 干货文章 配置Linux系统以支持文件系统和存储设备驱动开发

配置Linux系统以支持文件系统和存储设备驱动开发

sudo 内核 support bash 288    来源:    2025-04-16

Linux系统配置指南:文件系统与存储设备驱动开发

系统准备

1. 选择Linux发行版

推荐使用以下发行版进行驱动开发: - Ubuntu LTS (长期支持版) - Fedora - CentOS Stream - Debian稳定版

2. 安装开发工具链

# Ubuntu/Debian
sudo apt update && sudo apt install -y build-essential git make gcc libncurses-dev bison flex libssl-dev libelf-dev

# Fedora/CentOS/RHEL
sudo dnf groupinstall "Development Tools" && sudo dnf install -y kernel-devel ncurses-devel bison flex openssl-devel elfutils-libelf-devel

内核配置

1. 获取内核源码

# 获取当前运行内核版本
uname -r

# 下载对应内核源码 (以5.15为例)
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.tar.xz
tar xvf linux-5.15.tar.xz
cd linux-5.15

2. 内核配置选项

make menuconfig

确保以下选项已启用:

Device Drivers --->
  [*] Block devices --->
    <M> RAM block device support
    <M> Loopback device support

  SCSI device support --->
    <*> SCSI disk support
    <*> SCSI generic support

  [*] Multiple devices driver support (RAID and LVM) --->
    <*> Device mapper support
    <*> Crypt target support
    <*> Snapshot target
    <*> Mirror target
    <*> Zero target

File systems --->
  <*> Second extended fs support
  <*> Ext3 journalling file system support
  <*> The Extended 4 (ext4) filesystem
  <*> Btrfs filesystem support
  <*> XFS filesystem support
  DOS/FAT/NT Filesystems --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
  <*> NTFS file system support
  <*> NTFS write support

3. 编译并安装内核模块

make -j$(nproc)
sudo make modules_install
sudo make install

开发环境配置

1. QEMU虚拟环境设置(可选)

sudo apt install -y qemu qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

2. 调试工具安装

# Ubuntu/Debian
sudo apt install -y gdb crash systemtap strace ltrace

# Fedora/CentOS/RHEL
sudo dnf install -y gdb crash systemtap strace ltrace

3. 内核头文件

# Ubuntu/Debian
sudo apt install -y linux-headers-$(uname -r)

# Fedora/CentOS/RHEL
sudo dnf install -y kernel-devel-$(uname -r)

文件系统开发工具

1. 文件系统工具集

# 常用工具
sudo apt install -y e2fsprogs xfsprogs btrfs-progs ntfs-3g dosfstools

# 调试工具
sudo apt install -y debugfs xfs_db btrfs-progs

2. FUSE开发支持

sudo apt install -y libfuse-dev fuse

存储设备开发支持

1. 设备映射工具

sudo apt install -y dmsetup lvm2

2. SCSI和块层调试

# 启用SCSI调试
echo "scsi_logging_level=0x1ffff" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# 块层调试
echo "1" | sudo tee /sys/block/sdX/queue/make_request_fault

3. udev规则配置

# 创建自定义udev规则
sudo nano /etc/udev/rules.d/99-storage.rules

添加内容示例:

# 为特定设备设置权限
KERNEL=="sd*", SUBSYSTEM=="block", ATTRS{model}=="Your_Device_Model", MODE="0666"

# 为开发设备设置无超时
ACTION=="add", SUBSYSTEM=="scsi", ATTRS{model}=="Your_Device_Model", RUN+="/bin/sh -c 'echo 180 > /sys$DEVPATH/device/timeout'"

开发实践建议

1. 测试模块加载/卸载

# 加载模块
sudo insmod your_module.ko

# 查看内核日志
dmesg | tail

# 卸载模块
sudo rmmod your_module

2. 使用printk调试

#include <linux/printk.h>

printk(KERN_INFO "Debug message: %s\n", variable);

3. 使用GDB调试内核

# 配置内核调试符号
echo "add-auto-load-safe-path /path/to/linux-source" >> ~/.gdbinit

# 启动调试
gdb vmlinux /proc/kcore

4. 使用SystemTap进行动态跟踪

# 简单示例:跟踪块设备请求
sudo stap -e 'probe kernel.function("blk_start_request") { printf("%s\n", ppfunc()) }'

常见问题解决

  1. 模块版本不匹配

    sudo depmod -a
    sudo modprobe your_module
    
  2. 缺少符号信息

    # 确保CONFIG_DEBUG_INFO=y在.config中
    # 重新编译内核
    
  3. 权限问题

    # 将用户加入相关组
    sudo usermod -aG disk,kvm,libvirt $USER
    
  4. 内核崩溃调试

    # 安装crash工具
    crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/dumpfile
    

通过以上配置,您的Linux系统将具备完整的文件系统和存储设备驱动开发环境。根据具体开发需求,可能需要进一步调整内核配置或安装额外的开发工具包。