あれもこれも、入れたいのに、いちいちSDカードなんて、抜き差ししてるのめんどいよね、ってことで、工夫してみました。
こんな感じで、SD Card にOS は入れずに、ネットワーク越しのiSCSI Disk から、OS をブートしてPi2 を楽しむことを試しました。
まさか、RasPi がiSCSI Boot するなんて思っていなかったので、最初は本当かな? って。で、試したところ問題ない速度で楽しめることがわかりました。BerryBoot v2.0 を使って実際に試してみましたよ。
図では、わかりにくいのですが、osx にバーチャルボックスで起動した、FreeNAS でiSCSI のターゲットを提供し、pi は、Boot 領域のSD Card を指したまま、ネットワーク越しのディスクから起動します。
OS 切り替えは、osx のブラウザーからFreeNAS の iSCSI のディスクを交換し、Pi2 をリブートすれば OK な感じです。
ZFS の操作はまったくわかりませんが、とりあえず物理ディスクをバーチャルボックスで80Gくらい割り当てたものを上記な感じで作ります。
iSCSI にする DISK はあらかじめたくさん作っておいて、上図のような感じでエクステントと対応ディスクのセットを作っておきます。
ターゲット名は変わらないので、Pi2 の SDCard の中は変更しなくてOK です。
こんな感じで、ブートしたいディスクに交換し、
Pi2 をリブート(電源を落として変更するのがベストですかね)すれば、OK。
BerryBoot v2.0 の説明は、親切な作者のページがあるので、省略しますが、
http://www.berryterminal.com/doku.php/berryboot
iSCSI でのインストールは、以下に説明があります。
http://www.berryterminal.com/doku.php/storing_your_files_on_a_synology_nas_using_iscsi
一度、インストールをすると、boot の中の設定ファイルは以下のような感じになります。
---- iscsi.sh # iscsistart -i [initiatorName] -t [targetIqn] -g [Lun] -a [Address] /sbin/iscsistart -i "iqn.2012-08.com.berryboot:myPi" -g 1 -t "iqn.freenas:piboot" -a "192.168.1.45" ---- cmdline.txt smsc95xx.turbo_mode=N elevator=deadline quiet bootmenutimeout=10 ipv4=192.168.1.24/255.255.255.0/192.168.1.1 datadev=iscsi ---- config.txt disable_overscan=1 start_x=1 gpu_mem=128 # Berryboot settings, do not change initramfs berryboot.img [pi2] kernel=kernel_rpi2_aufs.img [pi1] kernel=kernel_rpi_aufs.img cma_lwm=16 cma_hwm=32 cma_offline_start=16 ---- uEnv.txt ipv4=192.168.1.24/255.255.255.0/192.168.1.1 datadev=iscsi
再度インストールするときは、uEnv.txt と iscsi.sh と cmdline.txt の datadev=iscsi を消して Pi2 をリブートすれば インストールウィザードが走ります。iSCSI の設定は再度必要ですが、自身のIP 設定などは、残したままなので、ターゲットのポータル名と、IP を入れればOK な感じです。
あと、このBerryboot は Github にソースがあって、Qt4 でGUI 作っているようです。
https://github.com/maxnet/berryboot
統合開発環境 Qt Creator のプロジェクトファイル(BerrybootGUI2.pro)があったので、これらの開発環境についても折を見て勉強してみたいです。GTK による開発と、QT の開発、どっちが入りやすいのでしょうかね。
Linux の組み込みの世界は、奥が深いですね。
最後に、iSCSI Boot した Raspbian の UnixBench を乗せておきます。
======================================================================== BYTE UNIX Benchmarks (Version 5.1.3) System: pi: GNU/Linux OS: GNU/Linux -- 3.18.10v7-aufs -- #1 SMP PREEMPT Wed Apr 1 00:07:44 CEST 2015 Machine: armv7l (unknown) Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968") CPU 0: ARMv7 Processor rev 5 (v7l) (0.0 bogomips) CPU 1: ARMv7 Processor rev 5 (v7l) (0.0 bogomips) CPU 2: ARMv7 Processor rev 5 (v7l) (0.0 bogomips) CPU 3: ARMv7 Processor rev 5 (v7l) (0.0 bogomips) 16:46:43 up 8 min, 2 users, load average: 0.12, 0.32, 0.19; runlevel 2 ------------------------------------------------------------------------ Benchmark Run: 土 7月 11 2015 16:46:43 - 17:15:08 4 CPUs in system; running 4 parallel copies of tests Dhrystone 2 using register variables 13034196.3 lps (10.0 s, 7 samples) Double-Precision Whetstone 2201.6 MWIPS (9.9 s, 7 samples) Execl Throughput 1115.2 lps (29.6 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 67394.5 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500 maxblocks 18209.0 KBps (30.0 s, 2 samples) File Copy 4096 bufsize 8000 maxblocks 217804.3 KBps (30.0 s, 2 samples) Pipe Throughput 820546.2 lps (10.0 s, 7 samples) Pipe-based Context Switching 143190.3 lps (10.0 s, 7 samples) Process Creation 3197.5 lps (30.0 s, 2 samples) Shell Scripts (1 concurrent) 2604.1 lpm (60.1 s, 2 samples) Shell Scripts (8 concurrent) 344.4 lpm (60.4 s, 2 samples) System Call Overhead 1752660.9 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX Dhrystone 2 using register variables 116700.0 13034196.3 1116.9 Double-Precision Whetstone 55.0 2201.6 400.3 Execl Throughput 43.0 1115.2 259.4 File Copy 1024 bufsize 2000 maxblocks 3960.0 67394.5 170.2 File Copy 256 bufsize 500 maxblocks 1655.0 18209.0 110.0 File Copy 4096 bufsize 8000 maxblocks 5800.0 217804.3 375.5 Pipe Throughput 12440.0 820546.2 659.6 Pipe-based Context Switching 4000.0 143190.3 358.0 Process Creation 126.0 3197.5 253.8 Shell Scripts (1 concurrent) 42.4 2604.1 614.2 Shell Scripts (8 concurrent) 6.0 344.4 573.9 System Call Overhead 15000.0 1752660.9 1168.4 ======== System Benchmarks Index Score 406.1 pi@pi /usr/local/src/UnixBench $