Raspberry PIは買ったけど、Raspbianの導入に四苦八苦した人は、もう別のOSを入れたくないと思うかもしれません。
ちょっと考えてみてください。
HDDに複数のOSを入れられたのなら、SDにも複数のOSを起動用として利用できるのではと思いませんか?
用意するもの
Raspbianの起動するSDカード(16GB以上推奨)
TOPPERS/FMPのコンパイルしたもの<別記事>
TOPPERS/SSPのコンパイルしたもの<別記事>
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は使ってはいけない
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でコンテナとホストの間のファイルのコピー
$ 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
$ 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をいれてから、上記の操作の、退避・複写部分を実行してください。
参考文献
現在整理中。
<この項は書きかけです。順次追記します。>
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
文書履歴(document history)
ver. 0.01 初稿 20180220
ver. 0.02 ありがとう追記 20230513
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.