Edited at

docker (37) Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門「名古屋のIoTは名古屋のOSで」


第1章 Dockerをどっかーらどうやって使えばいいんでしょう。


1.1 Raspberry Pi

ここでは、Raspberry Pi3を使っています。RaspbianのSDカードがあれば、そこにフォルダを作り、Raspbianを退避させてTOPPERS/HRPをコピーして使います。

第一段階:クロスコンパイル

第二段階:シリアルでモニタ

USB-シリアルピンのケーブルがあればモニタで確認できます。

https://www.amazon.co.jp/dp/B01KZWJRRE/

海外だったので2箇所に10本づつ発注。到着日時が同時だったのには驚き。

http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41

第三段階:デバッガでデバッグ(追記予定)

Raspberry Pi2, Raspberry Piを使ったTOPPERS/SSPの動かし方は、

https://github.com/alvstakahashi


1.2 TOPPERS/FMP

https://www.toppers.jp/fmp-e-download.html

のRaspberry PI版を Macintoshで生成するための方法です。

TOPPERSはオープンソースのリアルタイムカーネルを提供しています。

FMPはFlexible Multiprocessor Profileの略で、マルチコアに対応したカーネルです。


1.3 「名古屋のIoTは名古屋のOSで」

この資料は2017年TOPPERS開発者会議において名古屋大学の本田晋也さんが行った演習を基に作成しています。

Raspberry PIをraspbian以外でも使う実験を行います。

名古屋大学で設計されたTOPPERS/FMP, 杉本明加さんと名古屋市工業研究所で実装したTOPPERS/SSPなど名古屋のOSを試します。

2017年12月開催の「名古屋のIoTは名古屋のOSで」セミナで、名古屋市工業研究所の斉藤直希が用意したものに基づいています。

ここではMacintoshで説明します。Windowsでも、同じようにDockerを利用することができます。下記を参考に実行してみてください。


1.4 Docker

Dockerは、コマンドラインの仮想環境を作るソフトです。

Linuxではサーバ機能を使い、Windows, MacintoshではDesktop機能を使います。サーバ、仮想環境ともUbuntuが代表的です。ServerはUbuntuだけでなくDebian系のLinux始め、多くのLinuxで動作するLinux(ubuntu)のコマンド環境を提供してくれます。

MacintoshではDockerのDesktop機能であるdockerアプリを導入します。Dockerアプリの導入・起動は、下の「5つの関門」参照。

第一章はdockerを導入ずみを前提にしています。実行してみて、うまくいかなかったら、第二章の「5つの関門」をお読みください。


1.5 注意点

Macintoshでdockerを使う場合にわかりにくいところは、dockerを起動したコマンドプロンプトの状態とdockerの状態が似ていることです。

そのままさっきとあまり違いがなく、すでにdockerの中にいる状態になる。

Macintoshのコマンドと、dockerの内部とでは"$"の前に付いている文字列が代わっているはずです。

ここでは、固有名詞を避けるためにコマンドプロンプトを省略しています。

以下、dockerの中の入力促進記号(prompt)は"$$"と表記します。お使いの画面には$しか現れていません。


1.6 コマンド実行(Macintosh)

Macintoshのコマンド(プロンプト)で

$ docker pull kaizenjapan/dockertoppersfmprpi64_fmp:kaizenjapan

$は入力促進記号(prompt)です。この文字を入れる必要はありません。

セミナで実行したdockerで一部修正したものを保存(push)したものを取り出す(pull)する作業です。


dockerコマンドのログ(例)

実行のログ(例)のはじめの部分はこちら。

kaizenjapan: Pulling from kaizenjapan/dockertoppersfmprpi64_fmp

8f7c85c2269a: Pull complete
9e72e494a6dd: Pull complete
3009ec50c887: Pull complete
9d5ffccbec91: Pull complete
e872a2642ce1: Pull complete
30b8a79ef712: Pull complete
dd62d57c37c5: Pull complete

続きは

https://researchmap.jp/joxehp3dn-2000107/#_2000107

こんな感じなら大丈夫。

あるいは、一度pullしたことがあると

$ docker pull kaizenjapan/dockertoppersfmprpi64_fmp:kaizenjapan

kaizenjapan: Pulling from kaizenjapan/dockertoppersfmprpi64_fmp
Digest: sha256:52e9f56dd33306e177ec8ed5cba8995a7ff3204a713855cec32601f723f23f5c
Status: Image is up to date for kaizenjapan/dockertoppersfmprpi64_fmp:kaizenjapan


dockerのfmpコンパイル用イメージがうまくできているかの確認。

$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
kaizenjapan/dockertoppersfmprpi64_fmp kaizenjapan b329efb0b44b 23 hours ago 1.24GB

逆に言えば、前docker pullしたことがあれば、docker imagesを実行してみれば、docker pullする必要はない。


1.7docker起動(2つ目のdockerコマンド)

$ docker run -it kaizenjapan/dockertoppersfmprpi64_fmp:kaizenjapan /bin/bash

コマンドの結果、コマンドのプロンプトが「administrator@e40a06773578:~$」と変わっていれば大丈夫。

下記の警告は、すでにdockerで走っている状態。

To run a command as administrator (user "root"), use "sudo <command>".

See "man sudo_root" for details.

apt-getなどは sudo を先につけて実行するとよいことが分かります。

プロンプトが少し変わってることに注目してください。"Machine"という機器名のMacに"user"という名前でMacログインしていたとしたら

# Macintosh

Machine:~ user$
# docker:ubuntu
user@846978ad203c:~$

プロンプトで見分けにくければ、Docker内部にいるかどうかを確かめるには、例えば、

$ ps -ax

PID TTY STAT TIME COMMAND
1 pts/0 Ss+ 0:00 /bin/bash
17 pts/1 Ss 0:00 bash --login
5004 pts/1 R+ 0:00 ps -ax

こんな感じです。Macintoshでは、いっぱいプロセスが走っているはず、、、。


1.8 docker内でコマンド実行

起動したdockerの中で


README.md

$$ cd workdir

$$ sudo ../scripts/build_fmp.sh
# http://bit.ly/2nRx6nN by Satito naoki

$$は入力促進記号(prompt)です。この文字を入れる必要はありません。'#'の行は註釈(comment)です。コマンド列の入力手順の説明が書かれています。


logの例です。

--2018-02-07 16:38:21--  https://releases.linaro.org/components/toolchain/binaries/7.1-2017.08/aarch64-elf/gcc-linaro-7.1.1-2017.08-x86_64_aarch64-elf.tar.xz

releases.linaro.org (releases.linaro.org) をDNSに問いあわせています... 52.77.230.32
releases.linaro.org (releases.linaro.org)|52.77.230.32|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 FOUND
場所: https://publishing-ap-linaro-org.s3.amazonaws.com/releases/components/toolchain/binaries/7.1-2017.08/aarch64-elf/gcc-linaro-7.1.1-2017.08-x86_64_aarch64-elf.tar.xz?

* snip *

../arch/arm64_gcc/common/core_def.csv sample1.cfg
check complete
aarch64-elf-objcopy -O binary -S fmp fmp.bin

fmp.binができていればOK.


docker内のコマンドのログ(docker軌道からの一連のlog)

エラーが出たりして、実行結果が違うかもしれないと比較するためのlogファイルはこちら

https://researchmap.jp/mulbu8wxa-45645/?action=multidatabase_action_main_filedownload&download_flag=1&upload_id=152852&metadata_id=25961


1.9 ファイルのコピー

置くモノ :

fmp.bin ,

config.txt(RPi64Toppers直下) ,

start.elf , bootcode.bin(https://github.com/raspberrypi/firmware/tree/master/boot からダウンロード)


Raspbianのmicro SDカードを利用する場合

backupフォルダを作り、ルートディレクトリにあるファイルを全てbackupフォルダに移動して

上記4ファイルだけにすればTOPPERS/FMPが起動します。

FMPフォルダを作り、4ファイルをFMPフォルダに移動し、backupフォルダの中身をルートに戻せば、Raspbianが起動します。


1.10 USB serial 接続

Raspberry PiでTOPPERS(TRON系OS)

http://domisan.sakura.ne.jp/article/rp_toppers/rp_toppers.html

当方の場合は、黒(gnd:6), 白(8)、緑(10)


1.11 minicomの導入・起動

Mac OS X Mountain Lion で RaspberryPi とシリアル接続する

http://cat-s-tail.blogspot.jp/2013/10/Mac-OS-X-Mountain-Lion-RaspberryPi-serial.html

brew install minicom


1.12 起動

micro SDカードを刺して、電源を入れる。

TOPPERS/FMP Kernel Release 1.4.0 for RPI-ARM64(BCM283X(Cortex-A53)) (Feb  7 2018, 09:25:47)

Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2015 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN

Processor 4 start.
Processor 3 start.
local_inirtn exinf = 4, counter = 1
Processor 1 start.
local_inirtn exinf = 3, counter = 2
local_inirtn exinf = 1, counter = 3
Processor 2 start.
local_inirtn exinf = 2, counter = 4
Server task 3 starts.
Server task 4 starts.
Server task 2 starts.
CPU exception handler1 (p_excinf = 0002e560).
sns_loc = 0 sns_dsp = 1 sns_tex = 1
xsns_dpn = 1 xsns_xpn = 1
Sample program ends with exception.
local_terrtn exinf = 1, counter = 5
local_terrtn exinf = 4, counter = 7
local_terrtn exinf = 3, counter = 7
local_terrtn exinf = 2, counter = 6
global_terrtn exinf = 0, counter = 8

やったー、動いた。


第二章 TOPPERS/FMP on Raspberry Pi with Macintosh編 5つの関門

TOPPERS/FMPをMacintoshでコンパイルするのにいくつかの関門がある。


2.1 関門1 クロスコンパイラのコンパイル

最大の関門はクロスコンパイラのコンパイル。この関門を潜るために、dockerを使う。

Macintoshでは、大文字小文字の識別、ファイル名の長さがの制約がLinuxと異なる。そのためLinuxでうまく行くことがMac OSXではうまくいかないことがある。

設定をいじるより、docker/ubuntuで操作する方が簡単。


docker for TOPPERS/FMP

ビルドするためのDockerプロジェクト.by Saito Naoki

https://github.com/nmiri-nagoya-nsaito/docker-toppers-fmp-rpi64


準備1 Xcodeとコマンドラインツールの導入

XcodeはApple Storeから無償で導入できます。

「Xcode」検索

コマンドラインツールは、Xcode導入後、

$ xcode-select --install


準備2 brewの導入

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


準備3 git, wget, nkf導入

$ brew install git

$ brew install wget
$ brew install nkf


準備4 dockerアプリ導入

Macintoshにdockerアプリを導入

$ brew cask install docker

https://www.docker.com/get-docker


準備5 dockerアプリ起動

アプリケーションフォルダのDockerアプリをダブルクリック。

アプリが起動していないと、コマンドラインで次のエラーが出る。

$ docker ps -a

bash: docker: command not found

dockerの中でも上記のエラーが出る。

dockerのわかりにくいところは、dockerを起動したコマンドプロンプトで、

そのままさっきとあまり違いがなく、すでにdockerの中にいる状態になること(大事なことなので2度書きました)。


dockerの起動状態の確認(プロセス編)

dockerが起動しているかどうかは、dockerアイコンが起動アプリ一覧の中にあるか、または次のコマンドを叩くとわかる。

$ ps -ax | grep docker


実行

gitコマンドを投入


README.md

$ git clone https://github.com/nmiri-nagoya-nsaito/docker-toppers-fmp-rpi64.git

# http://bit.ly/2nRx6nN by Satito naoki

続いて次のコマンドを


README.md

$ cd docker-toppers-fmp-rpi64

$ ./start_shell.sh
# http://bit.ly/2nRx6nN by Satito naoki

目的のdockerがすでに起動していれば、buildしない設定になっているらしい。


start_shell.sh

...

if [ "x$(docker-compose ps -q ${SERVICE})" = "x" ]; then
docker-compose build ${SERVICE}
fi
...
# http://bit.ly/2nRx6nN by Satito naoki


 うまくいったらdockerの内部で次のコマンドを実行。


README.md

$$ cd workdir

$$ ../scripts/build_fmp.sh
# http://bit.ly/2nRx6nN by Satito naoki

うまくいけば、configuratorのコンパイル、設定をし、カーネルをコンパイルする。


2.2 関門2 configuratorの導入

TOPPERSのカーネルのコンパイルで、configuratorの導入で迷うこと、困ることがしばしば。


configuratorのコンパイル

configuratorは、ホストOS(今回はubuntu)のコンパイラでコンパイルする。クロスコンパイラではない。


configuratorの置き場所

configuratorは、任意の場所においておいて、ln -sでシンボリックリンクを作るのが良さげ。

先ほどのスクリプトで、

../scripts/build_fmp.sh: 22 行: cd: RPi64Toppers/fmp/cfg/cfg: そのようなファイルやディレクトリはありません

というエラーが出る。cfgというフォルダが二重に必要。今回は、そのどちらも作成されていない。


scripts/build_fmp.sh

...

cd RPi64Toppers/fmp/cfg/cfg
ln -s ../../../../cfg-1.9.6/cfg/cfg cfg
cd ../../
...
# http://bit.ly/2nRx6nN by Satito naoki

となっている。これは一括実行するスクリプトファイルであるため入力促進記号は表示していない。

...

cd RPi64Toppers/fmp/
mkdir cfg
cd cfg
mkdir cfg
cd cfg
ln -s ../../../../cfg-1.9.6/cfg/cfg cfg
cd ../../
...

に変更した。これでうまく通った。手でコマンドを一つづつ打っても(コピペしても)良い。


configuratorの呼び出し方

シンボリックリンクが貼ってあることと、Pathが通っていることが大事。

dockerの処理の途中でエラーになって、Pathがうまく通っていない状態になったことがある。


scripts/build_fmp.sh

...

echo 'export PATH=$HOME/workdir/aarch64-elf-gcc/bin:$PATH' > ~/.bash_profile
source ~/.bash_profile
...
# http://bit.ly/2nRx6nN by Satito naoki

の各行を順にコピペして実行したらうまく行った。原因は不明。

なお、dockerとmacとのファイル共有の仕方をスクリプトで実現している。


2.3 関門3 カーネルのコンパイル

intelのCPU上で、Raspberry PiのARMのCPU用のコンパイルをするには、クロスコンパイラでコンパイルします。関門1がうまく行っていれば大丈夫。

最初からソースコードを書き換えずに、最初は、あるものがそのままで動くかどうかを確かめてから、少しづつ動かすとよい。あちこち一遍に作ると、何がうまく行かない原因かを特定しづらい。


2.4 関門4 どっかーでエラーが起きた時の対処方法


dockerが起動しているかどうか(docker ps編)

docker以外のコマンドプロンプトから実行。

$ docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a02eaf04fef dockertoppersfmprpi64_fmp "/bin/bash" 37 minutes ago Up 37 minutes dockertoppersfmprpi64_fmp_1


コマンドがない

'command'がない場合と、PATHがきれてない場合がある。

$ find / -name 'command' name -print

でコマンドを探そう。


Macintosh側に必要な'command'の場合は次のいずれか。

$ brew install 'command'

$ brew cask install 'command'


Docker内のUbuntuで"command"名のコマンドがない場合は、

$$ apt-get install command

$$ sudo apt-get install command


PATHがきれてない

$$ echo 'export PATH=$HOME/workdir/aarch64-elf-gcc/bin:$PATH' > ~/.bash_profile

$$ source ~/.bash_profile

といった感じで、~/.bash_profileに設定を追加しよう。


一度失敗すると

一度失敗すると、フォルダはすでに存在している。そのため、

mkdir: cannot create directory 'aarch64-elf-gcc': File exists

というエラーが出て進まないことがある。

mkdirをif文で囲むか、mkdirのないrebuildのようなスクリプトを作るか。

ただ、どこまでmkdirがうまく行ったかで、条件が違うのなら、mkdir をif文で囲むのが良さそう。


文字の間違い

焦っていると、打ち間違いが増えて、余計にややこしくなる。

Pathの設定、ファイル名、フォルダ名など、間違えて作ってしまうと、

ややこしや。

Dockerのよいところは、それまでのものを捨て去って、一からまた始めるのが容易にだということ。


2.5 関門5 通信がうまくいっていない場合


通信エラー

$$ ../scripts/build_fmp.sh 

--2018-02-07 08:45:58-- https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-elf/gcc-linaro-7.1.1-2017.08-x86_64_aarch64-elf.tar.xz
releases.linaro.org (releases.linaro.org) をDNSに問いあわせています... 52.77.230.32
releases.linaro.org (releases.linaro.org)|52.77.230.32|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 404 NOT FOUND
2018-02-07 08:45:59 エラー 404: NOT FOUND。

dockerで最初の導入、実行はうまく行った。wgetコマンドで急に通信エラー。

原因は調査中。他の機材でやったら出なかったのでひとまず放置。


wiresharkでの確認

Wiresharkでパケットを取得すると良い。


Macintosh

$ brew cask install wireshark


参照 MacintoshにWiresharkを導入する5つの壁

https://qiita.com/kaizen_nagoya/items/69eb2d357a125f5368e1


docker/ubuntu

$$ sudo apt-get install wireshark

コマンドラインでのTsharkとしてご利用ください。


参照 tsharkコマンドの使い方

https://qiita.com/hana_shin/items/0d997d9d9dd435727edf


第三章 対処したものをdockerにあげる

せっかくうまく行ったら、dockerに変更したものをあげるとよい。

元がgitにあるのであれば、gitを更新するのがよい。

ただし、いろいろな確認をするために、自分用のdocker hubにあげて、いろんな人に試してもらうのもよい。


3.1 dockerの状況

$ docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d16cdf58b5e5 dockertoppersfmprpi64_fmp "/bin/bash" About an hour ago Exited (0) About a minute ago dockertoppersfmprpi64_fmp_1
8d864084ea72 ubuntu:xenial "/bin/bash" 2 weeks ago Exited (255) 2 weeks ago epic_lichterman


3.2 Docker HUBのID設定

https://cloud.docker.com/

メールアドレス、パスワードを設定する。

メールが来る。

メールの中にURLをダブルクリックする。

(This link will expire in 2 days.)

2日は有効らしい。


3.3 Docker Image の保存

$ docker commit dockertoppersfmprpi64_fmp_1 dockertoppersfmprpi64_fmp:kaizenjapan


Docker HUBへの登録

$ docker push kaizenjapan/dockertoppersfmprpi64_fmp:kaizenjapan

The push refers to repository [docker.io/kaizenjapan/dockertoppersfmprpi64_fmp]
0824ca26fac8: Pushed
a293d97b521d: Pushed
b7bc844f348e: Pushed
3da3c8eae2d4: Pushed
4fe000695a8c: Pushed
7b2fcb653ca7: Pushed
60104d5eb99b: Pushed
85e35c87a208: Pushed
9f8d765fe04e: Pushed
8600ee70176b: Pushed
2bbb3cec611d: Pushed
d2bb1fc88136: Pushed
a6a01ad8b53f: Pushed
833649a3e04c: Pushed
kaizenjapan: digest: sha256:52e9f56dd33306e177ec8ed5cba8995a7ff3204a713855cec32601f723f23f5c size: 3241


3.4 Docker HUBからの利用

$ docker pull kaizenjapan/dockertoppersfmprpi64_fmp:kaizenjapan

$ docker run -it kaizenjapan/dockertoppersfmprpi64_fmp:kaizenjapan /bin/bash

dockerの中で

$$ cd workdir

$$ sudo ../scripts/build_fmp.sh

この節は、最初に出てきたものと同じです。


4 振り返り


4.1 わかったこと

Macintoshのintelセルフコンパイラ(X-code:brewでの導入に使う場合がある)、gccのintelセルフコンパイラ、gccのarmクロスコンパイラの3種類のコンパイラを使う可能性がある。

dockerを使うことで、クロスコンパイラの環境をMacの環境と分離できる

失敗したら丸ごと容易に捨てられる

dockerのわかりにくいところは、dockerを起動したコマンドプロンプトとdockerのコマンドプロンプトとあまり違いがなく、dockerの中にいるのかどうかが分かりにくいこと。(大事なことなので3度書きました)。


4.2 わからなかったこと

クロスコンパイラのコンパイルの課題

configuratorの内容

デバッグの仕方


4.3 よかったこと

やったー。動いた。


4.4 あらためたいこと

gitへの改訂版の登録。元のファイルはgitに登録されている。

デバッグの資料の作成


5 資料


5.1 名古屋のIoTは名古屋のOSで

saito naokiのgit等は「名古屋のIoTは名古屋のOSで」セミナで提供したものです。

https://researchmap.jp/jo39c0wgq-2000107/

https://researchmap.jp/josk89af0-1778110/?block_id=1778110&active_action=journal_view_main_detail&post_id=65395&comment_flag=1

次回は2018年2月22日(土)午後1時から@名古屋市工業研究所(地下鉄六番町下車1分)

Dockerどっかー使い方おかしかったんでしょうか。TOPPERS/SSP on RaspberryPi with Macintosh編:5つの関門

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


5.2 Windows

docker for windowsのInstallerをダウンロード

https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.exe

ダブルクリックして実行。

http://blog.saboh.net/windows10proaddgroup/


5.3 関連情報(related information)

JTAGの接続方法 ​https://www.evernote.com/shard/s32/sh/2d01955e-b8b6-45e5-a779-3681b6ddeec9/52c678c97c6a78ff

JTAGの使い方 ​https://qiita.com/toshinaga/items/146bcb00db235258162f

FMPの実行方法 ​https://qiita.com/toshinaga/items/672c41a1f390922d5bae

ベアメタル情報 ​https://qiita.com/toshinaga/items/8999d3fcda8e2c3e2667

RPi3用 TOPPERS/FMP

https://github.com/YujiToshinaga/RPi64Toppers


5.4 参照資料(reference)

Raspberry PIのSDカードをRaspbian, TOPPERS/FMP, TOPPERS/SSP起動用に利用する

https://qiita.com/kaizen_nagoya/items/814cccdaa59dc09196e3

Dockerコンテナをイメージに保存する

https://qiita.com/momoham/items/df4c5e97fe630cccc1e5

Dockerの作業済みコンテナからイメージを作って移植を楽にする

https://qiita.com/tubone/items/a3bad04abf4c700cae3d

Dockerでcommitしてみる

https://qiita.com/mats116/items/712575dc50513dfdf0a2

DockerImageをDockerHubに登録の仕方

https://qiita.com/kon_yu/items/7c40f4dfbd1cce006ce7

GitHub 入門

https://qiita.com/ay3/items/8d758ebde41d256a32dc

Docker 虎の巻 at GitHub

https://gist.github.com/tcnksm/7700047

機械学習名古屋 勉強会用の Dockerイメージ 解説

https://qiita.com/antimon2/items/07890addf534f2e0b779#_reference-9d9783bf9ca2df932b9c

ゼロから作るDeep Learningの学習環境をDockerで作った at Hatena blog

http://yuki10.hatenablog.com/entry/2017/01/11/020924

だいたい10分でざっくり押さえるDockerの基本 at web professional

https://www.webprofessional.jp/how-to-build-an-image-with-the-dockerfile/

Dockerhubへの初プッシュ

https://qiita.com/moru3/items/32931813db81d891effb

Dockerコンテナのリポジトリ管理 DockerHubへログイン、イメージの取得〜更新、コミットまで。

https://qiita.com/kooohei/items/1e007fe650c6aa7eaac4

Docker Hubのイメージを利用する時の注意点と判断材料

https://qiita.com/satotka/items/5ece24499bcddd9f13b0

Docker Registry Hub にイメージをpushしたい

https://qiita.com/suin/items/20d735823e158196983e

DockerのImageからDockerfileを取り出せるか?

https://qiita.com/PharaohKJ/items/7fa708a19391c80629fe


AArch64

OSのタスク切り替え処理とAArch64(ARM64)の関数呼び出し規約

https://qiita.com/tkato/items/82f095a8f8c55be07cb5


自己資料(self reference)


用語集

Docker https://ja.wikipedia.org/wiki/Docker

  OSを導入(install)作業をせずに利用できる仮想化(virtual)OS.代表的にはubuntuを利用する。

ubuntu

  Debian系のLinux配布(distribution)

Macintosh

  Mac OSXが動作するPC

TOPPERS

http://toppers.jp

FMP:Flexible Multiprocessor Profile

SSP:Smallest Set Profile kernel

qiita

http://qiita.com

Github

http://github.com

Raspberry Pi

https://www.raspberrypi.org

Wireshark

https://www.wireshark.org

gcc

https://gcc.gnu.org

入力促進(command prompt)

記録(log)

コンパイル


コマンド一覧


システムコマンド

docker

https://www.docker.com

wget

https://www.gnu.org/software/wget/

git

https://github.com

ruby

https://www.ruby-lang.org/ja/

brew: mac

https://brew.sh/index_ja.html

apt-get: debian/ubuntu/raspbian

https://wiki.debian.org/apt-get


シェルコマンド

ps

process status。プロセスの状態を表示するコマンド。

ln

リンク。別名で連携するコマンド。

cd

change directory。ディレクトリを移動するコマンド

mkdir

ディレクトリを作成するコマンド

echo

文字を出力するコマンド。

source

シェルスクリプトを実行するコマンド

find

https://ja.wikipedia.org/wiki/Find

grep

https://ja.wikipedia.org/wiki/Grep

sudo

https://ja.wikipedia.org/wiki/Sudo


文書履歴(document history)

ver. 0.10 初稿 20180101

ver. 0.11 講習会実施に伴い記述を訂正 20180313

ver. 0.12 SWEST投稿のため操作確認しながら記述を訂正。 20180717

ver. 0.13 誤植訂正、ファイル共有 追記 20181011

ver. 0.14 参考文献追記 20181102

ver. 0.15 自己資料追記 20190222

ver. 0.16 標題追記 20190813