仕事だけの日常を忘れて、DIYを楽しみましょう。やってみれば今まで見えなかった事も見えてくる。何でもできるよね!dekiruyone.com

RaspberryPiに機能を追加

1.ラズベリーパイの非常用クローンSDを作る

もしソフト的にラズパイシステムが壊れた時のためにSDカードクローンソフトを使って双子を作っておきます。ラズパイでPBXを構築しましたが、管理しているものが電話だけに、

壊れた時は電話が使えないというのでは困ります。

FreePBXメニューからバックアップという手もありますが、これはあくまで電話設定部のバックアップです。OSのバックアップまではやってくれません。OSのインストールからやっているとかなりの時間を要してしまいます。
コマンドラインから使う「raspbx-backup」は運用中のSDカードとバックアップ先のメディアの容量が違うと、一気に面倒臭くなってしまいます。そこで

「rpi-clone」

というソフトを使って現在稼働中のシステムの双子SDを作っておき、非常時にはこれを差し替えてすぐに起動できるようにします。もちろんその他の用途のraspberryPiシステムでも問題なく使えますのでどうぞ。
このソフトの特徴は動作中のパイをクローン出来るんで「楽」なんです。私のパイに挿入しているSDカードは寿命を考えて大き目の32Gにしています。しかしシステム全体の容量は3Gb程度しか使っていません。クローン先は16Gでも8Gでもいいんです。勝手に調整してくれます。
しかしながらまたまたテラタームの黒い画面での作業です。(;^_^A
なお前後しましたが「5.SDカードへの無駄なアクセスを軽減」をやった後にクローンした方がいいです。
※導入と実行
「rpi-clone」はパイに最初は入っていないので導入します。
apt-get install rpi-cloneでは導入できません。

git clone https://github.com/billw2/rpi-clone.git

とやると、今いるディレクトリ(フォルダ)直下にコピーされます。(導入完了)

gitコマンドそのものが実行できないときは
apt-get install git
で導入してください。
cd rpi-clone/                *プログラムのあるフォルダーに移動します
./rpi-clone sda -f           *プログラムを実行します

で実行します。./は「すぐそこの」と言う意味ぐらいに思ってください。パイに起動SD以外の外付けUSBディスク等を増設していなければ「sda」がコピー先になります。
心配な方は

fdisk -l

(不要な文字がいっぱい出ますが最後の方の黄色い表示を見てください)
と打って今回のクローンメディア(USBメディア)を差し込む前と、差し込んだ後を比較すれば増えたものがコピー先になります。USBメディアを1本2本と増やしていくと「sda」「sdb」の様に名前が増えていきます。「sda1」「sda2」とかの表示はパーティションですから気にしないでください。

クローンなので書き込み先のパーティションやデータは更新(消去)されます。

とにかくドライブ対ドライブで双子を作ります。
いっぱい文字が出ますが気にせず入力促進の部分だけ説明?します。

Initialize and clone to the destination disk sda? (yes/no):  y  を入力
(コピー先のディスクsdaを初期化し、クローンしますか? (はい/いいえ):)
Optional destination ext type file system label (16 chars max):  エンターキー 
(オプションの宛先extファイルシステムラベル(最大16文字):)
処理が始まります。



Hit Enter when ready to unmount the /dev/sda partitions ... エンターキー
(/dev/sdaパーティションをアンマウントする準備ができたらEnterを押してください...)
windowsでUSBの安全な取り外しのようなものです。

同じ32GのSDカードで12分弱、16GのUSBメモリで15分弱かかりました(GUIインストールでも2倍までかかりません)。なおUSBメモリにクローンしたものはそのままでは起動できませんからwindowsPCの「USB Image Tool」などでimg化してSDカードに書き込むか保存するかしておいてください。下の画像の様なSDカードアダプタにmicroSDを差し込んクローンすれば、そのカードを保管しておいてトラブルがあったらすぐに差し替えて起動できますから便利です。キー入力3回+待ち時間12分弱で、クローン出来ます。クローン作業中に電話がかかってきても問題なく送受信できます。

 1-1USBアダプタにmicroSD

 1-2パイに挿入してクローン

2.FTPサーバーを立てる

ラズパイにRoot権限でアクセス可能なFPサーバーを立てます。電話のファームウェアをラズパイフォルダに入れようと思いましたが。nanoを使って設定ファイルを書くのと違って、コピペでファイルを新規作成というのが使えなかったのでラズパイにFTPサーバーを導入しました。結局パイのWebサーバー上の電話のファームウェアは使用しませんでしたが (;^_^A
※ftpサーバー導入

apt-get install vsftpd
nano /etc/ftpusers
アクセスさせないリストのrootの頭に#をつける(rootにアクセスさせる)

ctrl+o エンター (保存)
ctrl+x 終了 (編集終わり)

service vsftpd restart(このサービス再起動)

以上でffftp(windowsのFTPクライアントソフトでパイのIPアドレスにアクセス)からテラタームと同じroot+パスワードでログインできます。

3.CUIセットアップ後GUIを導入する

どうしてもパイのGUI画面が見たい人のためにWindowsに標準装備のリモートソフト「リモートデスクトップ」をつかってラズパイをGUIから操作できるようにします。ですがサーバー用途のみ使う方には「遅いし」やれることも「CUIと同等」なのでお勧めはしません。私の場合GUI環境でしか使用できない「SD Card Copier」(パイのクローンソフト)を使うためだけに1度導入しましたが、「rpi-clone」の存在を知ってから全部アンインストールしてしまいました。皆さん色々な目的がお有りと思いますのでその流れを書いておきます。
イ.X window systemの導入。

apt-get install --no-install-recommends xserver-xorg
apt-get install --no-install-recommends xinit

ロ.デスクトップ環境にPIXELを導入。

apt-get install raspberrypi-ui-mods

ハ.リモートデスクトップで接続するためのソフト導入。

apt-get install tightvncserver
apt-get install xrdp

ニ.GUI解像度設定

設定ファイルを開いて
nano /boot/config.txt
下の2行の「#」を外す
#framebuffer_width=1280
#framebuffer_height=720
ctrl+o エンター (保存)
ctrl+x 終了 (編集終わり)

詳しい設定はパイの公式ページにばっちり出ていました。(英語ですが結構わかります)さらに詳しく知りたい方はどうぞ
ホ.自動ログイン設定変更

raspi-config

「3 Boot Options」
「B1 Desktop/CLI」
「B4 Desktop Autologin Desktop GUI, automatically logged in as 'pi' user」
と選び
TABキーで下の
Finish
を選ぶと
Would you like to reboot now?
と聞いてくるので「はい」でリブートします。

ホ.windowsからアクセスしてみる
「windowsスタートメニュー」
「windowsアクセサリ」
「リモートデスクトップ接続」
と選び、ダイアログの接続先コンピュータ欄にパイのIPアドレスを入れて「接続」をクリックします。

 3-1PiのIPアドレスを入れて接続

 3-2sshと同じくID+Pass入力

 3-3GUI画面が表示された

 3-4CUIとGUIのメモリ変化

 3-5ディスク容量の変化とアンインストール方法

作業時間は15分ほどでした。GUI導入前と比較してディスク容量で250M、メモリで200Mbyte程度、使用量が増えました。
なおアンインストールしたい方はインストールした順序の逆に

apt-get install ?????? だったのを
apt-get remove ??????

と読み替えて削除していき

一番最後に
apt-get autoremove
apt-get autoclean

とやると今回導入したパッケージごと全部削除できます。

あと、「SD Card Copier」のためにGUI化してみましたが左上のラズベリーをクリックしても肝心の「SD Card Copier」が無いのに気づきました。
しょうがないのでターミナル(黒い画面)を開いて

apt-get install piclone

で導入したらメニューに表示され、使えるようになりました。

4.ラズベリーパイのファームウェアアップデート

ファームウェアアップデートの必要がある場合はテラタームの黒い画面から 

rpi-update エンター

とコマンドを打ち込んでください。ファーム更新の是非はありますが私はできるだけ最新にしています。サーバー管理などでは既定の動作をしないと数百人とか数千人に被害が及ぶので、サーバーが正常動作しているなら一切設定をいじらないというのが鉄則です。(ズルいようですが誰かが更新してバグッて復旧して新しいパッチが出てしばらく待って導入) でも新しいのがいい自宅なので (;^_^A

rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Your firmware is already up to date

以前はファームウェアアップデートが必要ないときでもアップデートを実行していたように思いましたが、今はこのように表示されて無駄に更新しないようになりました。更新バージョンがネット上にあれば更新確認に「y」と答えるだけでアップデートされます。その後

reboot エンター

で最新ファームが有効になります。

5.SDカードへの無駄なアクセスを軽減

起動運用メディアがSDカードですから寿命を少しでも伸ばすために無駄なディスクアクセスはRam側にするようにセットします。これもテラターム黒画面での作業です。
「1.」のクローンの前にやっておくと容量節約?になるかもしれません。
※スワップファイルを使用しない設定にする

systemctl stop dphys-swapfile
systemctl disable dphys-swapfile
その後FreePbxのダッシュボードに「NO Swapエラー」が出ることが判明しました。freepbxのコミュニティーで調べたら仮想記憶が無いのは危ないとのことでその後、元にもどしました。

dphys-swapfile setup
dphys-swapfile swapon
systemctl enable dphys-swapfile
reboot

で元に戻ります。 (;^_^A 

※テンポラリ領域をRamdisk上にセットする

エディタでfstab設定ファイルを開いて
nano /etc/fstab
最下行に下記の2行を追加します。
tmpfs /tmp tmpfs defaults,size=32m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0

ctrl+o エンター (保存)
ctrl+x 終了 (編集終わり)

SDカード上の /tmp と /var/tmp を削除します。
rm -rf /tmp
rm -rf /var/tmp

※ログそのものの出力項目を減らします。

エディタでrsyslog.confファイルを開いて
nano /etc/rsyslog.conf

使わない項目の行頭に「#」をつけてコメントアウトします。
#daemon.* -/var/log/daemon.log
#lpr.* -/var/log/lpr.log
#mail.* -/var/log/mail.log
 ・
 ・
#mail.warn -/var/log/mail.warn
#mail.err /var/log/mail.err
 ・
 ・
#news.crit /var/log/news/news.crit
#news.err /var/log/news/news.err
#news.notice -/var/log/news/news.notice
 ・
 ・
#*.=debug;\
# auth,authpriv.none;\
# news.none;mail.none -/var/log/debug
ctrl+o エンター (保存)
ctrl+x 終了 (編集終わり)

以上が完了したら再起動します。

reboot

でおしまい!

トップへ戻る