RaspberryPIにdebianを入れて headlessで運用する方法

ラズパイは非力なハードウェアです.ディスプレイやキーボードをつないで,OSとして Raspbian(ラズビアン)などを使えば,PCのように利用することもできます.しかし所詮はラズパイ.PCの代用としては処理速度が遅く,実用性に欠けます.

またIoTやオーディオサーバのような用途ではGUI自体が不要な場合が多いです.この場合,キーボード,マウスを接続すること自体が無駄,GUI関連のソフトウェアをインストールすることも無駄になります.

というわけで,今回は

  • キーボード,マウスは接続しない
  • ラズパイはLANケーブルでネットワークに接続
  • ラズパイの操作は,ssh経由で遠隔操作

するいわゆる head less で運用する方法をまとめます

また Raspberry pi 3 は64bitモードで使用します.つまり,32bitのARMv7(bcm2707 dts)ではなく,64bitのARM v8 (bcm2837 dts)を使うものとします

手順0) OSの選定

Debianを使います.理由は以下の通り.

  • インストールが簡単
  • 64bit版である
  • インストール直後は必要最低限のソフトウェアしかインストールされていない.つまり軽量&高速です.
  • 必要なソフトが簡単にインストールできる(aptを使うだけ)

RaspberryPiにdebianをインストール,と言っても,原理的にはddでSDカードにイメージを書くだけです.
ただし今回はMacで作業したので,Mac固有のddの使い方として手順をメモします.

手順1) SDカードをMacに接続
手順2) ターミナルを起動
手順3) SDカードのデバイスファイルを確認します

ターミナル上でdiskutilコマンドを使います

$ diskutil list 

今回は /dev/disk2 にSDカードが接続されていました.

/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.0 GB    disk2
   1:             Windows_FAT_32                    31.0 GB    disk2s1

バイスファイル名を確認するだけなら dh コマンドでも大丈夫ですが

$ dh -h

次のステップで結局 diskutil を使う羽目になります.「Macなら diskuitl 」と覚えておいたほうが都合が良いです

手順4) SDカードをアンマウント

diskutilを使います

$ diskutil unmountDisk /dev/disk2

手順5) ddコマンドで,debianのイメージをsdカードに書き込む

今回は RaspberryPi3 Model Bを使いました.
対応するイメージファイルをダウンロードします.preview版を使いました

https://wiki.debian.org/RaspberryPi3

$ wget https://people.debian.org/~stapelberg/raspberrypi3/2018-01-08/2018-01-08-raspberry-pi-3-buster-PREVIEW.img.xz
$ unxz 2018-01-08-raspberry-pi-3-buster-PREVIEW.img.xz
$ dd bs=1m if=2018-01-08-raspberry-pi-3-buster-PREVIEW.img of=/dev/rdisk2 conv=sync

ofオプションでは /dev/rdisk2 を指定します.ここを間違うと大事故(Macが起動しなくなる等)がおきかねません.気をつけましょう.

あとbs=1mも重要なオプションです.このオプションをつけない場合,上記の処理はものすごく遅くなります.詳細は割愛しますが,理由が気になる人は「 dd ブロックサイズ」などで検索して調べてください.

手順6) 確認

成功するとパーティションテーブルが書き換わります.diskutil で確認します

$ diskutil list
/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *31.0 GB    disk2

手順7) 起動

SDカードをラズパイに装着して,有線LANに接続した状態で,ラズパイの電源を入れます.
ディスプレイやキーボードはラズパイに繋ぐ必要はありません.

これでDHCPIPアドレスを自動取得して,sshでログイン可能な状態でラズパイが起動します.

手順8) sshでログイン

ネットワークの設定にもよりますが,うまくいけば,以下のコマンドでラズパイにログインできます.

$ ssh root@rpi3

Password は “raspberry”です

ログインできない場合は,ラズパイのIPアドレスを調べる必要があります.

簡単な方法は,LANのルーターの管理画面で,貸出中のDHCPのアドレスを調べる方法でしょう.

他には ポートスキャンをかけて raspberry piを探す方法があります

nmapを使うなら

$ nmap -p 22 192.168.0.0/24

sshは22番ポートなので"-p 22",192.168.0.0/24はスキャンする範囲で,この場合192.168.0.1から192.168.0.254までの範囲でsshが起動しているホストを探します.


手順9) 初期設定

ルートのパスワードを変更します

$ password

あとは通常のdebianと同じです

まずはパッケージを最新のものに更新します.

$ apt update
$ apt upgrade

デフォルトでは sudo さえインストールされていません.インストールします.

$ apt install sudo

ユーザを作成します

$ adduser アカウント名

sudoできるようにします.設定ファイルを新規作成します.

$ vi /etc/sudoers.d/local

流石にvi は初めからインストール済みです

設定を書きます

アカウント名 ALL=(ALL) ALL

基本設定は以上です.

外部からsshでログインできることを確認します

$ ssh アカウント名@ラズパイのIPアドレス