ラズベリーパイ おすすめの環境設定編

手のひらサイズのコンピュータ

Raspberry Pi2

僭越ながら、筆者が薦めるラズベリーパイの環境設定を紹介。
lhaをインストールしたり、vimを使えるようにしたりといった"筆者の癖"みたいな部分も多々ありますが、 参考になれば幸いです。

使いやすいエディタ "vim" をインストールしよう

viはUnix系OSに標準のエディタとして搭載されているが、カーソルキーが使えないので少々使いにくい。 viを改良したvimをインストールして、viコマンドで起動するように設定しよう。 まずは管理者権限で vim をインストールする。


sudo apt-get install vim
                      

これで vim [ファイル名] でエディタが使えるようになった。 次は vi コマンドで vim が起動するようにエイリアス設定をしよう。
sudo vim ~/.bashrc
                      

.bashrc を開いたら、適当な個所に下記一行を追加する。
alias vi='vim'
                      

これで viコマンド で vimが使えるようになった。
余談だが、筆者はこのvimが大好きだ。CUI環境では最強のエディタだと思う。 WindowsのDOSプロンプトでも使いたいので、私の愛機 Let's Note CF-AX3 (Win8.1)にも、vimをインストールしている。 余談だが、"GOW"というパッケージをWindowsにインストールすると、ls や grep といったLinuxのコマンドが使えるようになる。 DOSコマンドはちょっと…という人は試してもらいたい。

無線LAN子機を省エネモードにしない設定

筆者が使っている無線LAN子機(PLANEX GW-USNano2)で、SSHがつながらなくなったことが複数回あった。色々調べると、省電力モードになったからだと判明。 ドライバ[Realtek 8192cu]の設定ファイルを作成することで回避できるようだ。

まず、下記のファイルを新規作成する。


sudo vim /etc/modprobe.d/8192cu.conf
                      

ファイルの内容を下記のように設定する。


# 省エネモードOFF
options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1
                      

保存して再起動すれば、OK。 確認方法は、次のコマンドを打つだけ。


cat /sys/module/8192cu/parameters/rtw_power_mgnt
                      

0:省電力モードOFF / 1:省電力モードON
0になっていれば成功。
これで筆者の環境では、サーバを見失うことがなくなった。ホッ…。

ルータのポートマッピングをせずに外部から接続

LAN内での遠隔操作は簡単だが、サーバを外部に公開するには意外と手間とリスクがかかる。

ハッキングされない為の技術というのは、セキュリティの専門職でない限り、習得することはかなり難しい。 そのセキュリティを考慮したハッキングされにくいネットワーク構築を、簡単にしてくれるのが今回紹介したい 『 Weaved 』 というサービスだ。
これはラズパイに専用プログラムを組み込むことで、WEBブラウザからSSHやHTTP接続を安全に行う為の情報を教えてくれる。なお、この情報は30分毎に無効になる。 筆者の環境でSSHとHTTPについては動作確認済み。 先述したように30分毎にポートが無効になり接続が切れてしまうが、外部から何時間も作業することは稀だし、外部に向けて自分でポート開放するリスクも多少あるので こういうサービスは嬉しい。なお、このサービスは現在無料で利用可能だ。

まず、『 Weaved 』 のサイトに行き、無料のアカウントを作成する。

Weaved

アカウントを作成したら、公式サイト上のインストール手順を見ながらセットアップする。基本、コピペで問題なかった。

Weaved

SSHやHTTPなどが選択できるので、筆者はSSHをセットアップした後、続けてHTTPをセットアップした。 サインインすると、自分の設定一覧が出てくるので、設定名を選択するとSSHであればホストとポート番号が表示され、ターミナル上で接続できる。 ポート番号のみ毎回変更されるが、サーバのアドレスは今後も変更されないので、クライアントに登録しておくと便利だ。 HTTPであれば、そのままブラウザが表示され運用しているWEBページが閲覧できる。

USBメモリを認識させる(マウント)

microSDカード内のソフトウェア資源を外部に定期的にバックアップしたい。 余っている小型のUSBメモリ( ver2.0 / 32GB )をバックアップ用として利用した。 まずは、"usbmount"を管理者権限でインストールする。


sudo apt-get install usbmount
                      

インストール完了後、USBメモリを挿入し df -h コマンドでデバイスを確認する。 "/media/usb0"とあればOK。 あとは cdコマンドでディレクトリを移動し、適当なファイルを書き込んでチェックしておく。

あれ?chownコマンドでファイルの所有者を変更しようとしたら失敗。 調べてみると、FATフォーマットのUSBメモリはchownやchmodが失敗する様子。 メインストレージでchown/chmodして、コピーしてもダメ。うむむむ…。 とりあえず保留にしておく。

データをlzh形式に圧縮・展開できるようにする ( lhaコマンド )

データの圧縮・解凍はcompressやunzipコマンドがあるけれど、 過去のデータ資産にlzh形式に圧縮されたファイルもあるので、lhaコマンドを使えるようにしておきたい。 手順としては、古いソースをダウンロードして解凍し、ソースを編集してコンパイル後インストールする。 まずはパッケージをダウンロードする為にディレクトリを作成し、カレントディレクトリを移動しておく。


sudo mkdir /usr/src/package
cd /usr/src/package
                      

引き続き、ソースをダウンロードし解凍してsrcディレクトリに移動する。


sudo wget http://iij.dl.sourceforge.jp/lha/22231/lha-1.14i-ac20050924p1.tar.gz
cd /usr/src/
sudo tar xvzf ./package/lha-1.14i-ac20050924p1.tar.gz
cd lha-1.14i-ac20050924p1
./configure -enable-multibyte-filename=utf8 prefix=/usr
cd src
                      

続いて、header.cを書き換えるのでバックアップを取り編集する。


sudo cp -p header.c header.c.bak
sudo vim header.c
                      

 if (from_code == CODE_SJIS && to_code == CODE_UTF8) {
  for (i = 0; i < len; i++) 
  { /* 追加*/             
    /* FIXME: provisionally fix for the Mac OS CoreFoundation */
    if ((unsigned char)name[i] == LHA_PATHSEP)  name[i] = ‘/';
    else if ((unsigned char)name[i] == ‘\\’)  name[i] = ‘/';  /* 追加 */
  } /* 追加 */
                      

続いて、manの文字コードを変換する。EUC→UTF8へ。


cd ../man
sudo mv lha.man lha.man.euc
iconv -f EUC-JP -t UTF8 lha.man.euc > lha.man
sudo mv lha.n lha.n.euc
iconv -f EUC-JP -t UTF8 lha.n.euc > lha.n
                      

最後にメイクしてインストールすれば完了!


cd ..
sudo make
sudo make install
                      

これでlhaコマンドが使えるようになったはず。


# 例 拡張子が.cのファイルを全て test.lzh に圧縮する
sudo lha -a test.lzh *.c

# 例 test.lzhの内容を閲覧する
lha -l test.lzh

# 例 test.lzhを解凍する
sudo lha -e test.lzh
                      

LAMP (Linux/Apatch/MySQL/PHP) 環境を構築

せっかく省エネのマシンだから、サーバ化して色々してみたい。 今回のラズパイ2からは4コアなのでMySQLも難なく動作する。Wordpressをインストールしてブログを運用するのもいいかもしんない。 まずはApacheのインストール。これでWEBサーバが実行できる。


sudo apt-get install apache2
                      

引き続き、MySQLをインストールする。これは必須ではないがWordpressを利用するなら入れておこう。


sudo apt-get install mysql-server
                      

最初はrootユーザでパスワードが掛かっていないので、下記コマンドで好きなパスワードを割り当てる。

mysqladmin -u root password '**********'
                      

続いて、PHPを利用できる環境をインストール。


sudo apt-get install php5 php5-mysql
                      

とりあえず、これでLAMPの構築は完了。色々とセットアップは必要だけれど最低限動くはずだ。 ちなみに、『 /var/www 』 ディレクトリに"index.html"を作成してLAN内のコンピュータのブラウザから http://ラズパイのIP/ とすれば、ホームページが表示されるのを確認できる。

FTPサーバの設定

FTPが動いていると何かと便利なので、FTPサーバを設定しておく。まずはインストール。


sudo apt-get upgrade && sudo apt-get update
sudo apt-get install vsftpd
                      

FTPデーモンの設定ファイルである/etc/vsftpd.confを編集していく。今回はユーザ"pi"が使えるようになる最小限の設定を行う。


sudo cp -p /etc/vsftpd.conf vsftpd.conf.bak
sudo vi /etc/vsftpd.conf                     
                      

変更箇所のみ記載

# anonymousでのFTPログイン
anonymous_enable=NO #anonymousユーザを禁止(デフォルトはYES)

# ユーザ権限設定
local_enable=YES #ローカルユーザを有効に(デフォルトはコメントアウト)
write_enable=YES #書き込み可能に(デフォルトではコメントアウト)
local_umask=022  #書き込んだ際のパーミッションのマスク(デフォルトではコメントアウト)

# ASCIIモードの設定
ascii_upload_enable=YES   #アスキーでアップロードを有効(デフォルトではコメントアウト)
ascii_download_enable=YES #アスキーでダウンロードの有効(デフォルトではコメントアウト)

# ユーザ権限
chroot_local_user=YES   #ローカルユーザの制限(デフォルトではコメントアウト)
chroot_list_enable=YES  #リストにより制限を行う(デフォルトではコメントアウト)
chroot_list_file=/etc/vsftpd.chroot_list #リストのパス
                      

引き続き、ユーザ権限の設定ファイルである /etc/vsftpd.chroot_list を新規作成する。今回はユーザ"pi"を追加。


vi /etc/vsftpd.chroot_list

pi
                      

サービスをリスタート。その後、LAN内のPCからFFFTPなどでアクセスしてチェックする。



sudo service vsftpd restart
                      

NTPサーバの設定

時刻合わせの為のntp設定もしておこう。まずは設定ファイルのバックアップ。


sudo vi /etc/ntp.conf
                      

ntp.confを開き、0~3の行をコメントアウトして1行追加する。


###server0~3をコメントアウト 
#server 0.debian.pool.ntp.org iburst 
#server 1.debian.pool.ntp.org iburst 
#server 2.debian.pool.ntp.org iburst 
#server 3.debian.pool.ntp.org iburst 
###代わりに下記を追記
pool ntp.nict.jp iburst
                      

ntpを再起動する。

pi@raspberrypi ~$ sudo service ntp restart 
                      

しばらくしてから下記コマンドで同期確認を。


ntpq -p
                      

日本語環境の設定

直接ディスプレイを繋げて、コンソール画面を開くと日本語が文字化けする。 次の設定をすることで日本語環境がONになる。 まずはDebian用の日本語フォントをインストールする。(フリー)


sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
                      

コンソールで日本語を表示できるようにjfbtermをインストールし、日本語入力用にuimをインストールする。


sudo apt-get install jfbterm uim uim-anthy
                      

日本語と英数字の切り替えを Ctrl + Space のショートカットに割り当てる。


vi /usr/share/uim/generic-key-custom.scm 
                      

下記のように変更する。<control>の横の空白を忘れずに入力しておくように。


  #(define-custom 'generic-on-key '("zenkaku-hankaku" "<Shift> ")     # コメントアウト
  #(define-custom 'generic-off-key '("zenkaku-hankaku" "<Shift> ")    # コメントアウト
 (define-custom 'generic-on-key '("zenkaku-hankaku" "<Control> ")     # 追加
 (define-custom 'generic-off-key '("zenkaku-hankaku" "<Control> ")    # 追加
                      

コンソールをjfbtermに変更し、uim-fepを起動する。


jfbterm
uim-fep
                      

これでOKだが、再起動したらもう一度起動しないといけないので、スタートアップさせる。
piでログイン後、"~/.bashrc"の末尾に追加


sudo vi ~/.bashrc

#下記コードを末尾に追加する
case $TERM in
linux)
if [ -c /dev/fb0 ]; then
  jfbterm -q -e uim-fep -u anthy
  exit
fi
;;
esac
                      

これで、コンソールにおいては再起動しても日本語化されている筈だ。

C++でMySQLを利用する最低限の設定

MySQLのライブラリをインストールしておく。


sudo apt-get install libmysqlclient-dev
                      

とりあえず、テスト用の下記コードを"db.c"として保存してコンパイルが通れば開発できる環境になっているはず。


#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>

int main(){
  printf("MySQL - OK!!\n");
  return 0;
}
                      

コンパイル方法は次のようにリンク指定をしないと通らないから気を付けてください。

sudo g++ -o db db.c `mysql_config --cflags` `mysql_config --libs` 
                      

ちなみに、` (バッククォート)は、Shift + @ で入力できる。

コンパイルしたものを実行して、"MySQL - OK!!" と表示されれば成功。


./db

MySQL - OK!!
                      
  • 2015年06月15日 ケンゴン

    噂のラズベリーパイ購入!

    おいしそ~♪…って食べ物じゃありません(笑) クレジットカードサイズのコンピュータ「Raspberry Pi」の話です。 購入から初期設定までのお話です。

    記事を読む
    2015年06月01日 ケンゴン

    おすすめの環境と設定

    ラズパイを快適に使うための設定を解説。ディスプレイ設定や無線LAN子機の省エネモード回避などのテクニックから、 おすすめのソフトウェアや目的の一つであるWEBサーバ立ち上げを紹介。

    記事を読む
    2015年06月02日 ケンゴン

    ねぇ、生きてる?

    Twitterを使ってラズベリーパイが稼動しているか定期チェックしてみます。 15分間隔くらいでいいかな。ツイート内容はディスク容量とCPU温度。

    記事を読む