今回のテーマは、通常はSDから起動しているものを、外部のUSB、eSATA、mSATAから起動させてみるということです。SolidRun社の本家フォーラムでも、いろいろなものから起動させることについて挑戦した報告があがっている。色々な環境のものを「外部メディア」に載せようと考えていると考えられます。最終的な問題点は、いずれのメディアを使おうとも、最初のブートはSDから読み出すということです。即ち、結局ブート以外のファイルをすべて外部メディアに移しての運用はできますが、SDなしでは起動しないということです。
USB、eSATA、mSATAならばどれもやり方は同じです。通常はUSB機器をつなぐのでUSBポートは埋めたくはありません、それでもUSBが一番ありうるパターンでしょう。eSATAはCuBox-i4Proのみが対応可能です。長期間にわたるサーバーの運用を考えるときにはハードディスクが大きなメリットとなります。mSATAはHummingBoard2,2eXで利用可能です。組込みシステムでの利用ではボードの裏側に取り付けて場所をとらないmSATAが大きな利点となるでしょう。ここで紹介する方法は、フォーラムやブログなどで語られたものを集めて検証したものとなっています。
【今回の目標】
今回は、mSATAでのレポートです。USBやeSATAでも同等なので参考にしてもらえれば幸いです。
HummingBoardまずmSATAの調達です。SSDの価格は急激に安くなり大容量のものが実に安く買えるようになりました。128Gでも8,000円程度です。取り付け方は、ボードの裏面にあるコネクタを利用します。スクリュー1本で固定します。
ソフトでは、Linux kernel 3.14 でmSATAがサポートされました。たとえば、Debianでは、Debian jessieを試すとよいでしょう。(USBだとほとんどでサポートされています)
http://www.igorpecovnik.com/2014/08/19/cubox-i-hummingboard-debian-sd-image/
SDからHummingBoardを立ち上げます。jessieの場合であれば、最初に立ち上げると一度立ち上げなおしが行われます。ログインすると最初にrootのパスワード変更が求められる。立ち上がった後はSSH経由でPCのターミナルから操作すると楽にできるでしょう。
ls /dev で確認できますが、mSATA ドライブがsda に割りあてられているとします。(他のカーネルでは異なる可能性もあります)
まずはfdiskで新規パーティションを作ります。
fdisk /dev/sda |
swap partition (1GB)
root partition (rest of disk)
次に/dev/sda1 にスワップ領域を割り当て/dev/sda2 にext4のファイルシステムを作ります。その上でsda2 を/mnt にマウントします。
mkswap /dev/sda1 mkfs.ext4 /dev/sda2 mount /dev/sda2 /mnt |
ここでrsysnc、SDの内容をmSATA へコピーします。最後にエラー表示で止まるかもしれません。(ctrl-cで止めることもあうかもしれません)
|
終了したら、/mnt の権限設定を変更します。
|
/etc/fstabを以下のように変更します。
/dev/sda2 / ext4 defaults,noatime,discard 0 1 /dev/sda1 none swap sw 0 0 |
ここで"noatime,discard"というオプションは、アクセス毎に同じファイルが更新されてしまわないようにしている。(これはmSATAがSSDであるときには不要な書き込みを最小限にすることが重要となります)
そして、/etc/udev/rules.d/ に60-schedulers.rulesというファイルを作り、以下の内容を記述します。
|
(ここの記述はDebian用となっています。他のディストリビューションには変更が必要です)これはカーネルがmSata drive用にno-op schedulerを使うようにする設定で、他のschedulersではSSDでは意味のない最適化となる。
ここまでの作業で一旦シェルから抜けて /boot/uEnv.txtもしくは、(/boot/boot.scr)の編集をします。
root権限で適当なエディタを使って
"root=/dev/mmcblk0p1"
となっている部分を
"root=/dev/sda2"
と変更して保存します。
これで準備は終了です。
再起動して立ち上がることを確認してください。起動しない場合、"root=/dev/sda2" をもとに戻して起動することを確認してみてください。
ここでは、Debianをダウンロードしてきて、立ち上げてすぐの状態で検証としています。すでにサーバーを設定して稼働させているような状況でのメモリを rsync をするようなことは無謀です。
コメントをお書きください