Raspberry Piで仮想端末とシリアルコンソールを無効にして軽量化

標準

Raspberry Piでは、という、Linuxの多くは複数のユーザーが同時にログインするケースを想定しているので、仮想端末(コマンドラインシェル)を常時複数起動しています。

当然、起動している仮想端末数分だけメモリを消費しているので、1つだけを利用することとして軽量化します。

「絶対にGUIしか使わない!」というのであれば、全部コメントアウトして無効化するのもアリかも知れません。(あまりおススメしませんが・・・)

また、シリアルポートからの接続も利用しなければ、無効化して更なる軽量化を行いましょう。

$ sudo vi /etc/inittab
1:2345:respawn:/sbin/getty --noclear 38400 tty1
# 2:23:respawn:/sbin/getty 38400 tty2
# 3:23:respawn:/sbin/getty 38400 tty3
# 4:23:respawn:/sbin/getty 38400 tty4
# 5:23:respawn:/sbin/getty 38400 tty5
# 6:23:respawn:/sbin/getty 38400 tty6

(中略)

# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

簡単でリスクも少ないチューニングなのでやっておいて損は無いでしょう!

Raspberry PiでDHCPクライアントを無効化して軽量化

標準

DHCPで自動的にIPアドレスを取得することは便利ですが、Raspberry Piの場合、IPは固定した方がネットワークアクセスが便利ですし、メモリの消費を約1.9MByte抑えることができます。

DHCPの自動割り当て範囲外に固定するように設定する必要があるので、予めルーターのDHCP割り当て範囲などを確認しておきましょう。

/etc/network/interfaces を以下を参考に編集します。

iface etc0 inet static
address 192.168.1.121
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

Wifiの場合は「Raspberry PiのWIFIをシェルで設定するには」の記事も参考にしてみてください。

これだけで、約1.9MByteのメモリ消費を抑えられるのですから、オススメです!

Raspberry PiでSSHサーバーを軽量化

標準

Raspberry PiのRaspbianではSSHサーバーとして一般的なOpenSSHサーバーがインストール済みです。

OpenSSHを「Dropbear」に置き換えることで、メモリー消費量を1MByteから563KByteと役半分に抑えることができます。

まずはインストール。

$ sudo apt-get install dropbear

次に、Dropbearが常時起動するように設定ファイルを編集します。

$ sudo vi /etc/default/dropbear
NO_START=0
DROPBEAR_PORT=22
DROPBEAR_EXTRA_ARGS="-w"

NO_START=0 は、 自動起動許可、
DROPBEAR_PORT=22 は、ポート番号、
DROPBEAR_EXTRA_ARGS=”-w” は、rootログイン禁止です。

次に、OpenSSHサーバーを停止し、Dropbearを起動します。

$ sudo service ssh stop
$ sudo service dropbear start

一応、SSHでちゃんとログインできるか確認します。

$ ssh [email protected]
# exit

無事接続できたら、OpenSSHサーバーをアンインストールして終了です。

$ sudo apt-get purge openssh-server

500KByteほどの軽量化ですが、Raspberry Piくらいのスペックだとじわじわ効いて来るので試す価値はあると思います!

Raspberry PiにPLANEX GW-USMicroN(Wifiドングル)を認識させる

標準

以前「Raspberry PiのWIFIをシェルで設定するには」で少し触れましたが、
ちょっと古いWifiドングルだと、Raspberry Piが認識してくれません。

手元にあった「PLANEX GW-USMicroN」がまさにソレでした。
PLANEX GW-USMicroNは「RalinkTechnology RT2870」というチップのようで、
そのチップを認識させるという方法になります。

Raspberry Piで認識させるというか、Debianで認識させる方法というほうが正しいかも知れません。

手順は下記の通り「gw-usmicron.conf」に設定を書き込みます。

$ sudo vi /etc/modprobe.d/gw-usmicron.conf
install rt2800usb /sbin/modprobe --ignore-install rt2800usb;
/bin/echo "2019 ed14" > /sys/bus/usb/drivers/rt2800usb/new_id

 

次に「rt2800usb」を読み込ませます。

$ sudo modprobe rt2800usb

 

Raspberry Pi起動時に自動的に読み込ませるようにもしておきます。
「modules」の末尾に下記を追加します。

$ sudo vi /etc/modules
rt2800usb

以上で完了ですが、ちゃんと読み込まれているかを確認しましょう。

$ ifconfig

「wlan0」がちゃんと表示されていればOKです。

あとは、「Raspberry PiのWIFIをシェルで設定するには」を参考にWifiの設定をして終了です^^

 

Raspberry Piを簡単に高速化する方法

標準

ターミナルで使っているとそんなに体感できませんが、 Raspberry Piは設定で簡単にオーバークロックすることができます。 オーバークロックすると不安定になったり、電力がかかると思われますが、 神経質になるシステムをRaspberry Piで組むことは無いと思われますので、 あまり気にしなくても良いかもしれません。 まずは、下記コマンドでコンフィグ画面を開きます。

# sudo raspi-config

設定するのは2か所。

  • memory_split … ビデオメモリ設定です。

デスクトップを使わないのであれば16Mしか使わないよう設定すればOKでしょう。 カメラなどを使う場合は、あまり下げないほうが良いかも知れません。

 

  • overclock

Turbo 1000MHz ARM, 500MHz core, 600MHz SDRAM, 6 overvold が一番高いオーバークロックになります。

  とりあえずは、以上が最も簡単な高速化。 「/boot/config.txt」を編集することで、更に細かい設定も可能ですが、 それはまた次の機会に。

Raspberry Piにホスト名でアクセスするには

標準

Raspberry Piにアクセスするのに一番簡単な方法は、
本体にモニタを接続してキーボードで操作する方法ですが、
真骨頂はやはりリモート接続することでしょう。

リモート接続するには、SSH接続やVNC接続、HTTP接続などこれまた色々ありますが、
その際に必ず必要になるのはRaspberry Piのアドレスです。

通常はIPアドレスなどを使いますが、
正直覚えておくのは面倒ですし、
IPが固定されていなければ毎回調べなければならずとても面倒です。

そこで、Raspberry Piにホスト名を割り当てて、
「raspberrypi.local」などと打ち込んでアクセスできるようにしておけばとても楽になります。

 

Avahiを使う

Apple社が開発したBonjour互換のAvahiというゼロ・コンフィギュレーションシステムを使います。
iTunesなどのApple製のアプリをインストールする時にインストールされるアレです。

「ゼロ・コンフィギュレーション (Zero Configuration)」とは、
「何の設定も行わず機器を使用可能にする」技術のことで、
Mac使いはご存知のAppleTalkの後継技術にあたります。

Appleが何年もかけて作り上げた技術もAvahiというフリーの技術でまかなえてしまえる時代なのです^^;

 

インストールと設定

$ sudo vi /etc/hostname
raspberrypi

raspberrypiのところを他のホスト名と衝突しないものに変えます。

うちの会社には複数台のRaspberry Piがあるので、以下のようにしてます。

  • 玄関に設置したカメラ用Pi … rpi-door
  • 仕事場に設置してカメラ閲覧用Pi … rpi-work
  • 会議室に設置したPi … rpi-metts

「rpi-door.local」と、後ろに「.local」を付けるとアクセスできるようになります。
デフォルトのままだと、「raspberrypi.local」ということですね。

$ sudo vi /etc/hosts
127.0.1.1 raspberrypi

上記と同様に、raspberrypiのところを設定したホスト名に変更します。
127.0.1.1となってますが、これで正解です。127.0.0.1では無いです。

最後にavahi-daemonのインストールは、

$ sudo apt-get install avahi-daemon

で、完了です。

ちゃんとアクセスできるか確認してみましょう。

この設定は、Raspberry Piでは最初に必ずしておくことをおすすめします!

Raspberry PiのWifiをシェルで設定するには

標準

Raspberry PiにUSB無線LAN(Wifi)ドングルを挿入することで、
Raspberry Piを無線化できます。

あまり古いUSB無線LAN(Wifi)ドングルだと、
使えない or 設定が必要(これについては後日別記事で)になりますのでご注意を。

また、Wifiは結構電力を消費するので、
電源は少なくとも1Aのものを使いましょう。
100均などで売っている(200円だった)500mAのものだと、
頻繁に切断したりします。これに気付くのに時間がかかりました・・・・。

 

/etc/network/interfaces の編集

まず、/etc/network/interfaces を以下のように編集します。

■ DHCPによるIP割り当ての場合

$ sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
wireless-power off

■ 固定IP割り当ての場合

auto lo
iface lo inet loopback
#iface eth0 inet dhcp
iface etc0 inet static
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet static
wireless-power off

address 192.168.1.121
netmask 255.255.0.0
gateway 192.168.1.1

※address, netmask, gateway は環境に合わせて設定してください。

 

無線LANの SSID とパスワードを登録

$ cd /etc/wpa_supplicant
$ sudo wpa_passphrase SSID PASSWORD >> wpa_supplicant.conf

SSID には無線LANの SSID を PASSWORD には無線LANの接続パスワードを入力してください。

$ sudo vi wpa_supplicant.conf

下記のように登録されているはずです。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
     ssid="SSID"
     #psk="PASSWORD"
     psk=c2161655c6ba444d8df94cbbf4e9c5c4c61fc37702b9c66ed37aee1545a5a333
}

無線LANの設定に応じた設定の変更を行います。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="SSID"
    psk=c2161655c6ba444d8df94cbbf4e9c5c4c61fc37702b9c66ed37aee1545a5a333
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=TKIP
    auth_alg=OPEN
}

proto, key_mgmt, pairwise, auth_alg を追加し、
セキュリティ的には、psk の記載は削除しておくべきでしょう。

アクセスポイントをANY接続無効、ステルス設定で使用している場合は、
「scan_ssid=1」を追記します。

proto, key_mgmt, pairwise, auth_alg の値がわからない場合は、
一度デスクトップモードで起動して、Wifi設定アプリで設定してみるのも手です。
その後に、上記コマンドで暗号化したpskだけ書き換えればOKです。

 

ネットワークインターフェースを初期化

$ sudo ifdown wlan0
$ sudo ifup wlan0

上記コマンドを入力しても無線LANに接続できない場合は、
「/etc/network/interfaces」「/etc/wpa_supplicant/wpa_supplicant.conf」の設定を見直しましょう。