注意
※失敗ケースの記事です。閲覧は自己責任でお願いいたします。
実施背景
デバイスドライバ開発の勉強をするため、環境構築を実施。
makeファイルを使ってLinuxのモジュール経由でハローワールドするつもりであった。
目的
デバイスドライバのライブラリを使用すること。
結論
デバイスドライバを動かす目的で使用する場合、
WSL2環境での実装は諦めたほうがいい。
理由
AIが嘘を言っている可能性はあるか
0ではないと思われるが、解決する技術力は私にはない。
実装しようとした環境
WSLで動作するUbuntu
ハローワールドモジュールを作成
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "HELLO, WORLD\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "GOODBYE, CUREL WORLD\n");
return 0;
}
module_init(hello_init);
module_exit(hello_exit);
includeヘッダをインストールする
sudo apt install linux-headers-generic
malefileをインストールする
sudo apt install make
makeでエラー
make: *** No targets specified and no makefile found. Stop.
make -f ファイル名でエラー
missing separatorってなんだろう。調べる。
hello_module.c:4: *** missing separator. Stop.
どうやらこれが読み込めていないみたい。
MODULE_LICENSE("Dual BSD/GPL");
以下を参考に、Kernelモジュールを作成してみる。
sudo apt update
aptアップデートして
(※習慣づけると良いかも。クーロンタブ動かして月一パッチするとか?)
sudo apt upgrade
aptアップグレードして
(※習慣づけると以下略)
uname -r
unameコマンドで、このコマンドを入力しているPCのKernelバージョン用ヘッダを取得
sudo apt install linux-headers-$(uname -r)
6.6.87.2-microsoft-standard-WSL2
うまくいってない。ヘッダをインストールできてない。
こちらが使えそうだったが失敗
ここから雲行きが怪しくなる
apt-fileをインストール
sudo apt install apt-file
sudo apt-file update
その後調べたが、うまく行っている記事も見つからず。
失敗
ここで計画が頓挫。白旗を上げることとなる。
今後の展開
仮想環境を使って改めて環境構築を行うこととする。
仮想環境候補
VMware Workstation Player
従来は無償版を手に入れられて過去の私も使用していたが、状況が変わっていた。
うまく環境構築している方をお見かけしたため、メモ
Docker
あまり使ったことがない。
AI大先生もデバイスドライバの学習に使用するには疑問を呈している。
なお、私はAIには人権を認めていないため敬語は使わない。使いたくない。
どうすれば改善できると思うか
1.WSL2環境上でlinuxのヘッダファイルをuname -r環境と紐づけて、makeに書き込む
→makeに関しての知識が浅いため、実施は困難
2.src配下のどれかのファイルをcpして、uname -rで出た名称に書き換える
→力技が過ぎる上、公式でヘッダファイル更新されないため保守性の観点から実用的ではない
今後どうしていくべきか
下記の本を購入してmakeの知識をつける
https://www.oreilly.co.jp/books/4900900605/
後始末
こちらの記事を参考に、WSL2を削除。
今後
VirtualBoxで仮想環境を構築し、Ubuntuで開発学習を行う。






