Skip to content

该脚本主要是将当前的系统设备树导出为DTS文件 设备树的导出源为/proc/device-tree目录在的所有节点信息。

shell
#!/bin/bash

# 显示使用说明


<NolebasePageProperties />




usage() {
    echo "用法: $0 [输出目录]"
    echo
    echo "如果未指定输出目录,设备树源文件将保存在当前目录。"
    echo "输出目录必须是有效的目录路径。"
    echo
    echo "例如:"
    echo "  $0 /path/to/output/directory"
    echo "  $0  # 将生成的文件保存在当前目录"
    exit 1
}

# 检查参数个数
if [[ $# -gt 1 ]]; then
    usage
fi

# 设置默认输出目录(当前目录)
OUTPUT_DIR="."
DTS_FILE="extracted_device_tree.dts"
TEMP_DIR="/tmp/device_tree"

# 如果用户提供了输出路径,则使用用户提供的路径
if [ ! -z "$1" ]; then
    OUTPUT_DIR="$1"
fi

# 检查输出目录是否存在
if [ ! -d "$OUTPUT_DIR" ]; then
    echo "错误: 输出目录 '$OUTPUT_DIR' 不存在!"
    usage
fi

# 设置输出文件的完整路径
DTS_FILE_PATH="$OUTPUT_DIR/$DTS_FILE"

# 确保脚本以 root 权限运行
if [[ $EUID -ne 0 ]]; then
    echo "请以 root 权限运行此脚本!"
    exit 1
fi

# 检查是否安装了 dtc 工具
if ! command -v dtc &> /dev/null; then
    echo "未找到 dtc (设备树编译器)。请安装后重试。"
    echo "例如,在 Ubuntu 上运行: sudo apt install device-tree-compiler"
    exit 1
fi

# 创建临时目录
echo "创建临时目录: $TEMP_DIR"
mkdir -p "$TEMP_DIR"

# 复制 /proc/device-tree 到临时目录
echo "复制 /proc/device-tree 到临时目录..."
cp -R /proc/device-tree/* "$TEMP_DIR"

# 将临时目录转换为设备树源文件 (DTS)
echo "生成设备树源文件: $DTS_FILE_PATH"
dtc -I fs -O dts -o "$DTS_FILE_PATH" "$TEMP_DIR"
if [[ $? -ne 0 ]]; then
    echo "生成 DTS 文件失败!"
    rm -rf "$TEMP_DIR"
    exit 1
fi

# 清理临时目录
echo "清理临时目录..."
rm -rf "$TEMP_DIR"

# 提示完成
echo "生成完成!"
echo "设备树源文件: $DTS_FILE_PATH"

贡献者

The avatar of contributor named as Px Px

页面历史

撰写