raspberry pi 4Bにubuntu18.04-Serverをインストールし、有線LANでSSH接続する
はじめに
こんにちは、uchinarupowerです。私はとある大学のロボット系サークルで水中ロボットを開発するチームに所属しています。
元々、ロボットの制御はROSで開発していたのですが、この度ROS2への移行を行うことになったので、備忘録として色々記事を残していこうと思っています。
今回は、ROS2開発に関する記事の前段階にあたる部分の、raspberry-piのセットアップです。
この記事を残すことで私と同じところで躓く人が少しでも減ればいいなと思います。
やること
- raspberry-pi4Bにubuntu18.04-serverをいれる
- 自分のPC(ubuntu18.04)からraspberry-piに、有線LANでSSH接続する
環境
version | |
---|---|
PC | Ubuntu18.04 |
Rapsberry-pi | Ubuntu18.04-server |
(ROS) | (Melodic) |
(ROS2) | (Dashing) |
世間では、ubuntu20.04とROS2 foxyがメジャーだと思いますが、現在ROS Melodicからの移行をしているため、ubuntu18.04とROS2 Dashingを選択しています。
前はDesktop版のubuntuを使って開発したりしていましたが、raspberry-piで動かすにはまあまあ重いというのと、結局raspberry-piでrvizとか動かさなくね?などの理由でserver版に移行しました。
ubuntu-serverのインストール
これは様々な記事がすでにネットに上がっているので、簡潔に済ませようと思います。
raspberry-pi用ubuntu-serverのインストール
このURLから、
- ubuntu-18.04.5-preinstalled-server-armhf+raspi4.img.xz
をダウンロードします。
いろいろなサイトを見ましたが、raspberry-pi4Bなのに3B用のイメージファイルを焼いている人が何故か多かったので、4B用のイメージファイルを探しました。もしかしたら、4B用のだと何かクリティカルな問題があるのかもしれませんが、しばらく使った現状で問題ないのでおそらく大丈夫だと思います。
Raspberry Pi Managerのインストール
次に、このURLからイメージファイルをmicroSDカードに焼くために、Raspberry Pi Managerをダウンロードします。
ubuntu20.04以降なら、わざわざ外からubuntu-serverをダウンロードしなくても、Raspberry Pi Managerだけでraspberry-piにubuntu-serverをインストールできます。最初にこれを見つけたとき、便利になったなと感動しました...
イメージファイルをmicroSDカードに書き込む
Raspberry Pi Managerを起動し、
- Operating System -> Use custom -> ダウンロードしておいたubuntu-18.04.5-preinstalled-server-armhf+raspi4.img.xzを選択
- SD Card -> インストールしたいmicroSDカードを選択
- WRITEを選択し、書き込む
ubuntuの起動
書き込みが終われば、ubuntuがraspberry-piで起動できると思います。
ディスプレイとキーボードを接続し、起動してみましょう。
ログイン
起動すると、ログイン画面になると思います。
ユーザー名とパスワードの初期値は、
- ユーザー名: ubuntu
- パスワード: ubuntu
なので、それを入力します。
ログインすると、パスワードを変更するかと聞かれるので、任意のパスワードに変更しましょう。
raspberry-pi セットアップ
さて、ここからraspberry-piのセットアップを本格的に始めていきたいと思います。
日付
sudo apt updateするために現在時刻に合わせます。だいたい合っていればOK。
sudo date --set="YYYY-MM-DD HH:MM:SS"
更新
いつものおまじない。
sudo apt update
sudo apt upgrade
SSH設定
今回ubuntu-serverを利用するので、有線LANを用いたPC->raspberry-piのSSH環境を整備します。SSH接続できれば、raspberry-piにキーボードやディスプレイを接続しなくても作業できるようになるので、必ずやっておきたいですね。
有線LANなのは、水中では電波はすぐに減衰してしまうので、無線LANを用いたSSH接続ができないからです。
IPアドレス
SSH接続するために、2つのデバイスを同一ネットワークに配置します。
今回は、次のようなIPアドレスを使用します。
device | ip address |
---|---|
Raspberry-pi | 192.168.2.100 |
PC | 192.168.2.101 |
IP固定
PCからSSH接続するために、上記のIPアドレスになるようにIPアドレスを固定します。
$ sudo vi /etc/netplan/99_config.yaml
を実行し、中身を以下のように変更します。これは有線LANのIPアドレス固定なので、無線LANでSSH接続したい場合、別の設定が必要になります。
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
addresses:
- 192.168.2.100/24
$ sudo netplan apply
を実行し、変更を適用しましょう。
Open SSH Server
このraspberry-piをホストにし、PCのSSH ClientからSSH接続できるように、Open SSH Serverをインストールし、起動します。
# install
$ sudo apt install openssh-server
$ sudo systemctl start ssh
$ sudo systemctl status ssh
$ sudo systemctl status ssh
の実行結果が、active (running)
になっていればraspberry-piの準備はOK。
PC セットアップ
SSH接続の準備ができたので、PCでの作業に移ります。
SSH接続
-
PCとraspberry-piを有線LANで接続。
-
PCの有線LANの設定を以下のように変更する。
-
raspberry-piの電源を入れ、起動まで少し待つ。
-
PCでターミナルを開き、
ping 192.168.2.100
が通るか確認。 -
PCのターミナルで
ssh ubuntu@192.168.2.100
を実行し、raspberry-piに接続。 -
passwordを入力し、接続できれば成功!
できた!
ここまで無事にできたのなら、raspbbery-piの開発環境は完成です!
PCからSSH接続して、raspbeery-piでたくさん遊びましょう。
備考
開発の際、raspberry-piはインターネットに接続できないが、gitコマンドを使いたい!みたいな状態になったことがあります。その際、以下の記事のようにPC->raspberry-piでSSH接続すれば、SSH Client側(PC)のインターネットを利用して、SSH Server(raspberry-pi)側でインターネット接続できました。ありがとう...
最後に
raspberry-pi(ubuntu18.04)とPC(ubuntu18.04)を有線LANでSSH接続するというピンポイントな記事が意外と少なく、SSH接続するまでに結構時間がかかってしまいました。
この記事が誰かのお役に立てば幸いです。
Discussion