今回も前回に続いて小型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によるログインはできないようになっています。ログインしようとすると図のようにポートが開かれていません、とエラーが表示されます。

USB接続デバイスを確認

 CORE MP135にはUSBポートが2つあります。SDカードやUSBメモリなどを接続してアクセスしたい場合もあります。USBポートにデバイスが接続されているか確認するにはlsusbコマンドを使います。まず、USBポートにはキーボードのみ接続されており、片方のUSBポートには何も接続されていない状態で実行すると以下のようになります。

lsusb

確認したらUSBポートに何か接続します。ここではSDカードリーダーとSDカードを接続しlsusbコマンドを実行しました。項目が1つ増えているのが確認できます。

lsusb

USB接続デバイス(SDカード)をマウント

 せっかくUSBデバイス(SDカード)を接続したのでアクセスできるようにしてみましょう。なお、一回限りの接続ということでmountコマンドを使います。と、その前に接続したデバイスは一度外しておきます。
 次にUSBデバイスの場所(パス/名前)を確認します。以下のようにコマンドを入力します。何も接続されていない場合は、そのようなファイルやディレクトリはありません、とエラーが表示されます。

ls /dev/sd*

 次にSDカードリーダーにSDカードを差し込んでCORE MP135に接続します。接続したら上記のコマンドを再度実行します。ヒストリー機能を使ってカーソルキーの上の矢印を1度押せば、先ほど入力したコマンドが表示されます。

ls /dev/sd*

 今度はデバイスが接続されているので/dev/sda, /dev/sda1のように表示されます。mountコマンドでマウントするのは/dev/sda1の方です。(SDカードを抜くと/dev/sdaのみが表示されます)
 mountコマンドでSDカード(FAT32形式)を特定の場所に割り当てる(マウント)します。ここでは/mntディレクトリにsdcardというディレクトリを作成し、そこにマウント(SDカードのルートがそのディレクトリパスになる)します。
 まず、以下のようにコマンドを入力し/mnt/sdcardディレクトリを作成します。

mkdir /mnt/sdcard

 ディレクトリを作成したら以下のようにコマンドを入力します。

mount -t vfat /dev/sda1 /mnt/sdcard

 SDカードのファイルの一覧をみてみましょう。lsコマンドでパスを指定すると一覧が表示されます。正しくマウントされアクセスできるファイルフォーマットであれば一覧が表示されるはずです。

ls - /mnt/sdcard

USB接続デバイス(SDカード)の接続解除(アンマウント)

 接続したデバイス(SDカード)で処理を終えたら取り外すこともあります。MacやWindowsのGUIであればゴミ箱に入れたりイジェクト(取り出し)のメニュー項目を選択することで接続を解除できます。UNIXではこのような操作はアンマウントするコマンドを入力します。
 まず、現状どのようなデバイス等がマウントされているかを確認します。これはmountとだけコマンドを入力すると一覧で表示されます。

一覧の中に先ほどマウントしたSDカード、/mnt/sdcardの文字があるのがわかります。これをアンマウントします。これは以下のようにumountコマンドを使います。

umount /mnt/sdcard

 特にエラーメッセージが表示されなければ問題なくアンマウント(イジェクト)されたことになります。mountコマンドで確認してみましょう。

 /mnt/sdcardの文字が見当たらなくなっています。問題なくアンマウント(イジェクト)されたのがわかります。

 CORE MP135はIoTデバイスなので様々なセンサーを接続して何かする場合には、IoT関係の記事を検索した方がよいでしょう。多分、いろいろ面白いことができるのではないかと思います。気が向いたら、またネタで取り上げるかもしれませんが、CORE MP135に関してはこれで一旦おしまいとします。
 では、また次回。

著者 仲村次郎
いろいろな事に手を出してみたものの結局身につかず、とりあえず目的の事ができればいいんじゃないかみたいな感じで生きております。