memo/20250930
created 2025-09-30 modified 2025-09-30
Graphviz の dot コマンドでカーネルモジュールの依存関係を図にする
make-module-graph.sh
(横に大きな画像になったので一部のみ)

【* 日々のメモ】
スクリプト
make-module-graph.sh
#!/bin/bash
PNG_FILENAME=module-graph.png
put_header()
{
cat <<EOF
digraph G1 {
"(module A is using)" -> "(module B)";
EOF
}
put_trailer()
{
cat <<EOF
}
EOF
}
put_main()
{
while read MOD1 SIZE COUNT MOD2LIST
do
for MOD2 in $(echo $MOD2LIST| tr "," " ")
do
echo "$MOD2 -> $MOD1;"
done
done
}
put_dot()
{
put_header
LINES=$(lsmod | wc -l)
lsmod \
| tail -n $(($LINES - 1)) \
| put_main
put_trailer
}
main()
{
put_dot | \
/usr/bin/dot -T png -o $PNG_FILENAME
}
main
実行
bash ./make-module-graph.sh
結果例
(横に大きな画像になったので一部のみ)

【* 日々のメモ】