今回も前回に続いて小型IoTデバイスの1つであるCORE MP135で動くLinuxでコマンドを使ってみます。小型デバイスゆえに実装されているコマンドは控えめ(少なめ)です。シンプルに高速動作がモットーなのかもしれません。なお、M5 Stack社はプログラムや情報などの更新など早いため以後に説明するコマンドや画面の実行結果が異なる可能性があります。以後、説明で使用しているのは発売日に用意されたLinuxのイメージファイルをベースにしたものになります。(M5_CoreMP135_buildroot_20240515, 5.15.118)
コマンドを実行
無事に起動したらコマンドを入力してみましょう。と、その前にプロンプトが、これまでとは何か違っていると感じてる人もいるかもしれません。まず、rootでログインしているのでプロンプトが#になっています。これはrootユーザーでログインしコマンドを実行していることを示しています。一般ユーザーであれば多くの場合$になります。(プロンプトは変更可)
rootユーザーの場合、何でもできてしまうので必須ファイルを削除、変更してしまうと起動しなくなったり全体的に不具合を発生させてしまうことがあります。ですので、注意してコマンドを実行するように心がけてください。もっとも、CORE MP135であればSDカードを差し替えるだけですぐに復旧できるのでrootユーザーでも他とは違って多少気を抜いてコマンドを実行できるでしょう。こういうデバイスで失敗して経験を積むのも悪くはないと思います。(どちらかというとラズベリーパイの方が使いやすくてよいのですが)
最初に感じた違和感はプロンプトが#だから、という理由だけではないかもしれません。実はシェルがこれまで解説で使ってきたbashやzshなど使い慣れたものではありません。CORE MP135のLinuxではシェルの元祖であるshとなっています。確認してみましょう。
以下のようにコマンドを入力するとシェルの名前が表示されます。
echo $0
-shと表示されます。やはりシェルはshのようです。shはシェルの元祖なのでbash/zshからshに戻る(?)と、いろいろ不便なことに気付きます。が、ここは我慢してshでコマンドを入力していきましょう。とは言ってもshにもタブキーによる入力補完機能やヒストリー機能はあります。
まず、簡単なところでlsコマンドを実行してみましょう。
ls -la
次にルートディレクトリに移動してlsコマンドを実行してみましょう。cdコマンドでルートディレクトリに移動できます。
cd /
ls -la
ディレクトリ内容はカラーリングされて表示されます。ls binとするとbinディレクトリ内にある内容が表示されます。
ls bin
ユーザーの追加と削除
それでは次にユーザーの追加と削除をしてみましょう。他の環境では試しにくいこともCORE MP135ならいくらでもやり直しができます。起動も10秒程度なので失敗しても問題ないでしょう。
さて、ユーザーを追加するにはadduserコマンドを使います。adduserの後に追加したいユーザー名を指定します。ここではtestというユーザーを追加してみましょう。以下のようにコマンドを入力します。
adduser test
新規ユーザーなのでパスワードを設定する必要があります。パスワードを入力します。なお、パスワードが短いとtoo shortとメッセージが表示されますが、今回は気にせずに進めても問題ありません。(すぐに削除するため)
ここでよく見ると
adduser: /home/test: No such file or directory
というエラーメッセージが表示されています。これはtestユーザーのディレクトリを作ろうとしたが、ルートディレクトリにhomeディレクトリがなく作成できなかった、という意味です。どうやら、あらかじめhomeディレクトリを作成してからadduserコマンドを実行した方がよかったみたいです。
とりあえず作成したtestユーザーを削除しましょう。ユーザーを削除するにはdeluserコマンドを使います。deluserの後に削除したいユーザー名を指定します。以下のようにするとtestユーザーが削除されます。
deluser test
もう一度同じコマンドを入力してみましょう。すると今度は削除するtestユーザーがないというエラーメッセージが表示されます。つまり、testユーザーは間違いなく削除されたことになります。
それでは今度はルートディレクトリにhomeディレクトリを作成してからadduserを実行してみます。まず、mkdir /homeとしてディレクトリを作成します。
ディレクトリの作成が終わったら再度adduser testとしてtestユーザーを作成します。今度はhomeディレクトリがない、というエラーメッセージは表示されません。
adduser test
せっかくtestユーザーを作成したので、このtestユーザー名でログインしたいところです。suコマンドを使えば異なるユーザーでログインすることができます。以下のように入力します。
su - test
testユーザーのパスワードを尋ねてくるのでパスワードを入力してリターンキーを押します。パスワードが正しければtestユーザーでログインされプロンプトが#から$に変わります。
現在のユーザー名の確認とログアウト
複数のユーザー(アカウント)を作成し使い分けたりしている、もしくはユーザーを横断するような使い方をしている、複数のウィンドウを開いて異なるユーザー名で処理をしていると自分が、どのユーザーでコマンドを実行しているのかわからなくなってしまうことがあるかもしれません。
そんな場合に便利なのが自分が何のユーザーなのかを教えてくれるwhoamiコマンドです。このコマンドを実行すると現在のユーザー名が表示されます。
whoami
ログインしている状態からログアウトする場合はexitと入力します。
exit
今回の場合、プロンプトが#になりrootユーザーに戻ったことがわかります。whoamiコマンドを使っても確認できます。
ネットワークが繋がっているか確認
次にネットワークが接続されているか確認してみましょう。ifconfigと入力するとCORE MP135のネットワークインターフェースの情報が表示されます。
ifconfig
CORE MP135は2つのイーサネットポートがあり、eth0とeth1という名前で情報を確認できます。この場合、eth0にイーサネットケーブルが接続されており、IP(v4)アドレスとして192.168.11.63が割り当てられていることがわかります。他のマシンのターミナルからping 192.168.11.63として反応を確認することもできます。
CORE MP135側からpingコマンドを実行してみましょう。まずは、ルーターのIPアドレス(ここでは192.168.11.1)にpingを打ってみましょう。なお、-cの後に回数を指定しておきます。今回は5回pingを打つことにします。
ping -c 5 192.168.11.1
ルーターまでは問題なくネットワークが通じているようです。それでは次に外部のサーバーにpingを打ってみましょう。ここでは8.8.8.8(Google Public DNS)にしてみます。以下のように入力します。
ping -c 5 8.8.8.8
反応があれば外部のネットワーク、つまりインターネットに接続できていることになります。
なお、標準状態ではsshによるログインはできないようになっています。ログインしようとすると図のようにポートが開かれていません、とエラーが表示されます。