RaspberryPi
SSP
TOPPERS
FMP
名古屋のIoTは名古屋のOSで

「名古屋のIoTは名古屋のOSで」Raspberry PIのSDカードをRaspbian, TOPPERS/FMP, TOPPERS/SSP起動用に利用する

Raspberry PIは買ったけど、Raspbianの導入に四苦八苦した人は、もう別のOSを入れたくないと思うかもしれません。
ちょっと考えてみてください。
HDDに複数のOSを入れられたのなら、SDにも複数のOSを起動用として利用できるのではと思いませんか?

用意するもの

Raspbianの起動するSDカード(16GB以上推奨)

TOPPERS/FMPのコンパイルしたもの<別記事>

https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af

TOPPERS/SSPのコンパイルしたもの<別記事>

https://qiita.com/kaizen_nagoya/items/cbf40186ae4da48ec4c7

SDカードを読み書きできるパソコン

Raspberry PIでも良い

作業手順<FMP編>

コマンドプロンプトの現在位置(current directory)はSDカードの根(root)にいるものとします。ここではMacintoshのターミナル(command)で説明します。bootというSDカードの根 (root)は/Volumes/bootです。Linuxではどうなるか調べてください。Docker側の入力促進状態(command)ではありません。
fmpディレクトリはdocker側の/home/administrator/worker/RPi64Toppers/にあるものとします。

Raspbianのルートディレクトリファイルの退避

$ mkdir RB
$ cp *.* RB

$は入力促進記号(command prompt)です。$を入力する必要はありません。入力促進記号の文字はOSの設定によって異なります。
mkdirは紙挟み(folder, directory)を作成する命令。

「RB」は名前が重複しなければ、どんな名前でも結構です。ただし、「com」「aux」「prn」「nul」などはMS-DOSで特定の装置に既定値として割り当てている名前で、Windowsなどに複写するとファイルの中身が消えるかエラーになる可能性があります。これらの名前は使わないようにしましょう。

ファイル名やフォルダー名にprnは使ってはいけない

https://qiita.com/muro/items/032c54ec8d7e61c9cae8

cpは複写(copy)命令。
.」はすべてのファイルという意味の万能切り札(wild card)。

dockerのIDの確認(Host OS:ここではMac OS)

$ docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
f6069be2d268        dockertoppersssp_ssp        "/bin/bash"         2 hours ago         Up 2 hours                              dockertoppersssp_ssp_1
2a02eaf04fef        dockertoppersfmprpi64_fmp   "/bin/bash"         12 days ago         Up 12 days                              dockertoppersfmprpi64_fmp_1

dockerでコンテナとホストの間のファイルのコピー

https://qiita.com/gologo13/items/7e4e404af80377b48fd5

$ mkdir fmp
$ docker cp 2a02eaf04fef:/home/administrator/worker/RPi64Toppers/fmp/build/fmp.bin /Volumes/boot/fmp
$ cp -r fmp .

これだけ。cpはcopy命令です。
docker cp DockerID:/ディレクトリ/ファイル 送り先フォルダ/(ファイル)

念のために、SDの中身を確認してください。
(ここではMacintosh osx 10.12.6利用しています。macosxが生成するものは表示していません。)

$ ls -al /Volumes/boot
total 5803
drwxrwxrwx  1 administrator  staff     1536  2 13 15:00 RP
-rwxrwxrwx@ 1 administrator  staff    52064  2 13 16:07 bootcode.bin
-rwxrwxrwx  1 administrator  staff       73  2  7 08:51 config.txt
drwxrwxrwx  1 administrator  staff      512  2 20 09:18 fmp
-rwxrwxrwx  1 administrator  staff    84472  2  7 09:18 fmp.bin
drwxrwxrwx  1 administrator  staff    10240 11 29 02:49 overlays
-rwxrwxrwx@ 1 administrator  staff  2821796  2 13 16:07 start.elf

Raspberry Pi以外で操作している場合は、

SDを「取り出し」を選択して、SDカードをRaspberry Piに挿し直して電源投入。

Raspbianで作業しているのであれば、

$ reboot

でTOPPERS/FMPが起動するはず。

作業手順<SSP編>

SDカードの根(root)にいるものとします。
SSPはdocker側のディレクトリ/home/administrator/worker/docker-toppers-ssp/ssp にあるものとします。すでにRaspbianの退避用フォルダが作ってあって、退避させている場合には次を飛ばしてください。

$ mkdir RB
$ cp *.* RB

$は入力促進記号(command prompt)です。$を入力する必要はありません。入力促進記号の文字はOSの設定によって異なります。
ここではMacintoshのターミナル(command)で説明します。Linuxでもほぼ同様です。Docker側の入力促進状態(command)ではありません。

dockerのIDの確認(Host OS:ここではMac OS)

$ docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
f6069be2d268        dockertoppersssp_ssp        "/bin/bash"         2 hours ago         Up 2 hours                              dockertoppersssp_ssp_1
2a02eaf04fef        dockertoppersfmprpi64_fmp   "/bin/bash"         12 days ago         Up 12 days                              dockertoppersfmprpi64_fmp_1

ssp用のフォルダも作っておきます。(sspを退避させる用)

$ mkdir ssp

ファイルの複写。ついでにfmpに合わせてssp.binにする。sspだけだとフォルダ名と紛らわしい。

$ docker cp f6069be2d268:/home/administrator/work/docker-toppers-ssp/workdir/build/ssp /Volumes/boot/ssp/ssp.bin
$ cp ssp .

これだけ。念のために、中身を確認してください。ファイルをコピーする場合は、ファイル名まで指定。
フォルダ名の最初は/が要るかどうか。
例えば、逆に、現在のフォルダにあるファイルを、dockerにコピーする場合,コピー先のファイル名を書く。

$ docker cp train.py e04975e7b61f:etc/init.d/train.py
$ ls -al
total 5820
drwxrwxrwx  1 administrator  staff     1536  2 13 15:00 RP
-rwxrwxrwx@ 1 administrator  staff    52064  2 13 16:07 bootcode.bin
-rwxrwxrwx  1 administrator  staff       73  2  7 08:52 config.txt
drwxrwxrwx  1 administrator  staff      512  2 20 09:18 fmp
drwxrwxrwx  1 administrator  staff    10240 11 29 02:49 overlays
drwxrwxrwx  1 administrator  staff     1024  2 20 13:33 ssp
-rwxrwxrwx  1 administrator  staff   232420  2 20 13:34 ssp.bin
-rwxrwxrwx@ 1 administrator  staff  2821796  2 13 16:07 start.elf

Raspbianにいるのであれば、

$ reboot

でTOPPERS/SSPが起動します。Raspberry Pi以外で操作している場合は、
SDを「取り出し」を選択して、SDカードをRaspberry Piに挿し直して電源投入。

付録 Macintoshでは

cd /Volumes/boot

でRaspbianのSDの根(root)に行けます。<bootという名前でSDを作成した場合>

先にTOPPERSをいれた場合

先に TOPPERSをいれた場合には、一旦PC等にSDのファイルをコピーして、
Raspbianをいれてから、上記の操作の、退避・複写部分を実行してください。

参考文献

現在整理中。

<この項は書きかけです。順次追記します。>