さっと Linux で何かしたいというとき、何を使いますか?Docker を使えば手軽に環境が作れますが、一個のコンピュータとして使うには制約が多くてかえって面倒です。バーチャルマシンを使うのも良いと思います。でも、実体があった方が良いときにはやっぱり Raspberry Pi。ディスク代わりにマイクロ SD を使うので、マイクロ SD を差し替えてしまえば別のホストに早変わりするところなどほとんどバーチャルマシンです。さっと素早く何かしたいときに実に重宝します。ということで、いつも旅には二台のラズパイがお供してくれています。名前もついてますよ。たろ君とじろ君。
これらのラズパイは、ヘッドレスといって、普段はモニタなどにつながずに PC から SSH を使ってログインして使っています。いざというときにはモニタケーブルをつなげば直接操作できますがデスクトップ環境はインストールしないのでかなり不便です。ラズパイ自体はシンプルにしておいて不便なところはPC でサポートすると、結局僕にはその方が楽なためこのような使い方をしています。
そして今日もちょっと使う用があって、たろ君、出番ですよ...ん?電源を入れても反応がない?
あっそうだった。先週 WIFI ルータを替えたばかりで、たろ君はつなぎ方がわからず迷子になっていました。そういうときは慌てずモニタをつないで直接ログインすればいいのさ...あっモニタケーブルなくしちゃった。詰んだ?
いや、有線でネットワークをつないで復旧する方法がありますが、それはまた今度。今回は手っ取り早く、じろ君のシステムを再構築しましょう。と、やってみたら細かいことを忘れていて意外と手間取ったのでまた忘れないように記事にしておきます。
なぜシステムの再構築のほうが手っ取り早いのか?普通の PC なら OS の入れ替えなんて超面倒なんですが、Raspberry Pi では、Raspberry Pi Imager というソフトを使ってすぐ動く OS が簡単にインストールできるようになっています。この Imager では、WIFI 接続方法を含めた初期設定ができるようになっていますから、イメージを焼いて本体に刺して電源を入れるだけでちゃんと走るホストが手に入ります。親切です。
ではさっそくじろ君の SD カードを抜いてPCに差し込んで、Raspberry Pi Imager を使ってみましょう。まずはデバイスの選択、これはただの Raspberry Pi 4 です何も迷うことはありません。
次に OS の選択、ここは注意が必要です。Raspberry Pi OS 64bit を選びたくなるところですが、これはデスクトップ環境などがついた PC として使う環境です。今回はできるだけ余計なものを持ちたくないので、Raspberry Pi OS (Other) に進んでもっと小さな構成の Raspberry Pi OS Lite (64bit) を選びます。他にも General Purpose OS として Ubuntu なんかが使えるようで面白そうですがそれはまた今度。Raspberry Pi OS も Linux です。
メディアを選択して、EDIT SETTING を押して WIFI その他の設定をしたら準備 OK、書き込みをします。
書き込みが終わったらじろ君に SD カードを刺し直して電源を入れ、起動するのを待ちます。じろ君は無事にネットワークを見つけられるでしょうか。はじめてのおつかいっぽいです
無事じろ君がルータ管理画面に現れました。これで SSH を使って接続できますが、ここでもうひと手間必要です。ルータが DHCP という仕組みを使ってデバイスに IP アドレスを割り当てるのですが、DHCP の気が変わって割り当てられた IP アドレがそのうち変わってしまう可能性もあります。よそから SSH で繋ぐときアドレスが変わってしまうと不都合です。それを防ぐために、jiro 君の IP アドレスを予約していつも同じアドレスが割り当てられるようにしておきます。それにしても、近頃のルータの管理ソフトってよくできているな。わかりやすいし使いやすいです。
ここでさらにもうひと手間が必要です。操作用の PC が Linux だった場合、ホスト名 jiro の IP アドレスが何か解決できません。MacOS や Windows ならできるんですが。Windows でも配下で動く Ubuntu からだとできません。ルータは知っているはずなんですが。この解決法は調べたけどわからず、今は手っ取り早く /etc/hosts
ファイルに 設定を書いてすませてしまいます。さて、じろ君に SSH を使って接続確認です。
(追記) Windows サブシステムの Ubuntu では /etc/hosts に書くだけではダメなことがわかりました。もう少し調べて機会があったら記事を書こうと思います
$ ssh jiro
The authenticity of host 'jiro (192.168.0.***)' can't be established.
ED25519 key fingerprint is SHA256:*************************.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'jiro' (*******) to the list of known hosts.
naoki@jiro's password:
Linux jiro 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
naoki@jiro:~ $ git --version
-bash: git: command not found
naoki@jiro:~ $ gcc --version
gcc (Debian 12.2.0-14) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
naoki@jiro:~ $ ninja --version
-bash: ninja: command not found
naoki@jiro:~ $ python3 --version
Python 3.11.2
naoki@jiro:~ $
Bashうむ、色々と抜けてる。まあそういうつもりだったのでそうか。とりあえず今日はここまでです