Chapter 05

はじめてのプログラムを実行する

みつきん
みつきん
2020.12.16に更新

ラズパイの起動

まず最初に、ラズパイにLANケーブルを挿して起動したあとにネットワークに接続できるようにしておいます。次にLinuxを書き込んだマイクロSDカードをラズパイのカードスロットに差し込みます。準備が整ったら、ラズパイに電源を入れます。

ちょっとしたあと、Linux PCで次のコマンドを実行します。

$ ssh root@raspberrypi4.local

もし下記のようなメッセージが表示された場合はssh-keygen -f "/home/user/.ssh/known_hosts" -R "raspberrypi4.local"を実行してください。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:dfpaoiwejpfwaoiejfpawoejfpawoijf.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:42
  remove with:
  ssh-keygen -f "/home/user/.ssh/known_hosts" -R "raspberrypi4.local"
ECDSA host key for raspberrypi4.local has changed and you have requested strict checking.
Host key verification failed.

いくつか質問メッセージが表示されることもありますが、全てにyesと答えると下記のようなメッセージが表示されます。

root@raspberrypi4:~#

これでラズベリーパイと接続できました。

プログラムの転送

これでプログラムを動かす準備が整いました。いよいよ作成したプログラムをLinux PCからラズパイへ転送します。

Linux PCで次のコマンドを実行します。

$ scp ~/hello/hello.ko root@raspberrypi4.local:/home/root

ラズパイと接続したターミナルウィンドウで次のコマンドを実行し転送が成功したかを確認します。

root@raspberrypi4:~# cd
root@raspberrypi4:~# ls
hello.ko

hello.koと表示されていれば転送が成功しています。

プログラムの起動

ここまでいろいろとやってきましたが、やっと初めて作成したプログラムを動かす準備ができました。

まずは何も考えずに下記のコマンドを実行してください。

root@raspberrypi4:~# insmod ./hello.ko

一見何も起こっていないように見えましたね。

先程のとおり、Linuxのプログラムを起動するにはinsmodというコマンドを使用します。
insmodで実行されたプログラムの出力結果は次のコマンドで確認することができます。

root@raspberrypi4:~# dmesg | tail

下記のように「Hello world!」と表示されていれば成功です!

[ 3516.000145] hello: loading out-of-tree module taints kernel.
[ 3516.006323] Hello world!

おめでとうございます!あなたはLinuxのプログラムを作成して無事に動かすことができました!
これで深い深いLinuxプログラミングの世界に足を踏み入れたことになります。