iSCSI Boot で OS をいろいろ切り替え

あれもこれも、入れたいのに、いちいちSDカードなんて、抜き差ししてるのめんどいよね、ってことで、工夫してみました。

こんな感じで、SD Card にOS は入れずに、ネットワーク越しのiSCSI Disk から、OS をブートしてPi2 を楽しむことを試しました。

iscsiBoot_raspi

まさか、RasPi がiSCSI Boot するなんて思っていなかったので、最初は本当かな? って。で、試したところ問題ない速度で楽しめることがわかりました。BerryBoot v2.0 を使って実際に試してみましたよ。

 

図では、わかりにくいのですが、osx にバーチャルボックスで起動した、FreeNAS でiSCSI のターゲットを提供し、pi は、Boot 領域のSD Card を指したまま、ネットワーク越しのディスクから起動します。

OS 切り替えは、osx のブラウザーからFreeNAS の iSCSI のディスクを交換し、Pi2 をリブートすれば OK な感じです。

freenas_-_FreeNAS-9_3-STABLE-201506292332

ZFS の操作はまったくわかりませんが、とりあえず物理ディスクをバーチャルボックスで80Gくらい割り当てたものを上記な感じで作ります。

 freenas_-_FreeNAS-9_3-STABLE-201506292332 2

iSCSI にする DISK はあらかじめたくさん作っておいて、上図のような感じでエクステントと対応ディスクのセットを作っておきます。

freenas_-_FreeNAS-9_3-STABLE-201506292332 3

ターゲット名は変わらないので、Pi2 の SDCard の中は変更しなくてOK です。

freenas_-_FreeNAS-9_3-STABLE-201506292332 4

こんな感じで、ブートしたいディスクに交換し、

freenas_-_FreeNAS-9_3-STABLE-201506292332 5

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 $