LoginSignup
17
13
この記事誰得? 私しか得しないニッチな技術で記事投稿!

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

Last updated at Posted at 2018-02-07

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

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

1.1 Raspberry Pi

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

第一段階:クロスコンパイル
第二段階:シリアルでモニタ
USB-シリアルピンのケーブルがあればモニタで確認できます。
https://www.amazon.co.jp/dp/B01KZWJRRE/
海外だったので2箇所に10本づつ発注。到着日時が同時だったのには驚き。

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

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などは 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

準備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つの壁

docker/ubuntu

$$ sudo apt-get install wireshark

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

参照 tsharkコマンドの使い方

第三章 対処したものを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
ver. 0.17 docker update 20210626
ver. 0.18 ありがとう追記 20230417

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

17
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
13