Linux教育15日(3週間)を企画、運営、評価。wireshark(24)

Linux教育を企画、運営、評価する、何通りかの方法を検討する。

Linuxを学ばずに使
https://qiita.com/kaizen_nagoya/items/b9859782bab0cf6c78a4

<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words in order.
#  ねらい
Linuxシステムの構築、運用、廃棄ができるようになる。
Git, Dockerを使いこなし、システム設計、運用の記録を残すようにする。
コンパイラのコンパイル、Linuxのコンパイルを経験しておくことにより、どんなシステムの設計でもできるようになる。
Etehrnet/TCP/IPを使いこなし、Wiresharkで記録をとり、分析できるようにする。

Windowsは、Linux/Unixの祖先にあたるDEC VMXを開発していた人たちが開発したOS.
Linux/Unixの祖先にあたるOSで、POSIXができるよりも前の設計思想で、無理にPOSIXには準拠していない。CygwinというLinuxに揃える道具を入れると、グループ以外はPosixに対応していることがわかる。

Windowsでプログラム開発ができていれば、Linuxでプログラム位開発するのはすごく楽なはず。
オープンソースが多く、ソースコードを読んだり、ソースコードをビルドすればわかることがある。

# 1 道具
Linuxを教育するための道具類を３種類検討する。

## 1.1 Linux PC
intelまたはarmのPCを１台教育用に専用に用意する。
性能は、教育に参加する人に応じて、メモリ、HDDを増やしていくものとする。

Linux を教育するのだから、LinuxPCを用意するのは当たり前だと思うかもしれない。
いえ、当たり前なんです。

課題は、じゃ、端末は何にするかかもしれません。

候補としては、LinuxPC、macOS PC, M.S. Windows OS PC, iPad, Android Pad, iPhone, Android phoneの７種類を候補にあげておきます。 

### Linux PCの利点

### Linux PCの欠点
欠点はないような気がします。
あるとすれば、それぞれの端末がLinuxPCだったときに、システムの管理を経験できる人が限られるか、
システムの管理をする時間が限られるということでしょう。

この欠点は、端末もLinuxPCにすれば成り立ちません。

その場合の欠点は、ネットワーク管理が必要になるということかもしれません。
他の場合は、その１台で閉じることもできるため、ネットワークの管理が必要だとは限らないからです。

この欠点は利点にもなります。クライアントとサーバの両方の管理の経験を積むことができるのですから。

## 1.2 Windows Subsystem for Linux 
そんなにありえない選択だとは思っていません。

一度Windows10PCに導入して確認しています。

Ubuntuを選べば、本当にUbuntuとして動作しています。

Windows 10 用 Windows Subsystem for Linux のインストール ガイド
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10

Windows 10の機材が存在していることを前提とする。

なければ、すぐに買いにいってください。

ノートPCを想定します。できればメモリは16GBがいいです。
そうじゃなきゃだめというわけではありません。
コンパイルするときに、メモリが少ないと、時間がかかりすぎて泣く。

7万円くらいするらしい。
https://kakaku.com/item/K0001328656/

ディスクトップで探しても、kakaku.comではうまく見つからない。

九十九電機で16GBで探しても７万円切るのは１種類しかない。
https://shop.tsukumo.co.jp/goods/4529327911616/

パソコン工房でさがしたら５万円代でもあった。
https://www.pc-koubou.jp/products/detail.php?product_id=818868&pre=bct1872_bnr_int

最初のノートPCはコア４を指定していた。

やっぱり、Windows10PCがすでにある場合いがい、この選択肢はなさそう。

## 1.3 Raspberry PI
Raspbianを想定します。
理由は、Raspbianしか使ったことがないことと、Debian系のOSしかカーネルソースのコンパイルをしたことがないという個人的な経験の制約によります。

自分の博論の実験機器が、サーバ側がDebianで、Mobile IPをコンパイルする際に、カーネルのパッチ当てが必要だったのですが、apt install によるカーネルの導入とpatchあてとビルドが円滑にできました。

対抗試験としては、FreebSDのカーネルもコンパイルしています。

# 2. 題材
Linuxの醍醐味の一つは、コンパイル・ビルドかもしれない。

## 2.1 コンパイル・ビルド 
### 2.1.1 コンパイラのコンパイル
コンパイラのコンパイルは、一つの山場です。

intelとarmで考えると、セルフコンパイルとクロスコンパイルを検討してみましょう。

### 2.1.2 カーネルのコンパイル
Linux自身のコンパイルも、二番目の山場です。
コンパイラがコンパイルできたからといって、カーネルがコンパイルできないのであれば、
オープンソースとしてのLinuxの価値が半減してしまうかもしれません。

### 2.1.3 他のアプリのコンパイル
Debian系のaptであっても、すべてのアプリのバイナリがあるとは限りません。

アプリのコンパイルも大切です。

## 2.2 docker
次はgithubにするかdockerにするか悩みました。
dockerにした理由は、dockerの方が使い慣れているからだけです。

macOS, Windows OSの端末の場合は、それそれのdocker用アプリの導入が必要になります。

cloc をdockerで
https://qiita.com/kaizen_nagoya/items/e56636e53ee12904f111

### 2.2.1 docker上でのコンパイラのコンパイル
### 2.2.2 docker 上でのカーネルのコンパイル
### 2.2.3 docker上でのアプリのコンパイル
## 2.3 git
### 2.3.1 github/gitlab/bitbacketの利用
多くのオープンソースの活動は、公開のGithubなどにソースを置いて運営しています。
これらを利用することから始めましょう。

すでに、コンパイル、dockerの利用で使っているかもしれません。
意識して再整理するだけでも結構です。

卒業論文、修士論文、博士論文は　github/gitlab/bitbacketのprivate利用をお勧め
https://qiita.com/kaizen_nagoya/items/eb9945a2649f6f3eabd0

bitbucket/github/gitlab連携環境構築　悪戦苦闘
https://qiita.com/kaizen_nagoya/items/87352fe88ceed2c1732d

アジャイルサムライ & 公開算譜は機敏だ(An Open Source Project is Agile)GitHub with Docker。仮説（51）
https://qiita.com/kaizen_nagoya/items/5dd49a046b5991af3a5e

### 2.3.2 gitlabの導入
セルフマネージドGitLabをインストール
https://www.gitlab.jp/install/

公開のサーバや、プライベートのサーバでも、サーバの利用に制限がある場合は、gitlabを導入しましょう。

### 2.3.3 git 系の　他の作業
未定

## 2.4. 文書分類
### 2.4.1 Web/html
Web, Browserによる処理は、いろいろな作業の過程で必要になることがあります。
資料の整理や、発表などです。

### 2.4.2 markdown/wiki
Web, browserを使っても、使わなくてもmarkdownは必須だと思います。
### 2.4.3 LaTeX
え、jsonじゃないのとか、XMLはどうしたと思われるかもしれません。
それらはデータ形式の方に追いやっておきます。

## 2.5 データ形式
### s.5.1 json
### 2.5.2 XML
### 2.5.3 その他のデータ形式
## 2.6. プログラミング言語
### 2.6.1 C言語
C言語規格のソースコード断片のコンパイルと、MISRA C, CERT Cなどのコーディング標準のソースコードのコンパイルは行います。

### 2.6.2 C++
C++規格のソースコード断片のコンパイルと、MISRA C++, CERT C++, AUTOSAR C++などのコーディング標準のソースコードのコンパイルは行います。

### 2.6.3 python
JAVAじゃないのかとか、C#はどうしたとか、javascritpはって思うでしょう。
ごめんなさい。今、興味がまだ湧いていません。
JAVAについては、興味が冷めたといった方がいいかもしれません。

## 2.7. 試験
### 2.7.1 単体試験
### 2.7.2 POSIX Test suite
Posix Test Suite docker downloads, tar, install。docker(110)
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00f

### 2.8.3 その他の試験
# 3 人数
## 3.1 4人未満
演習系で、一人の講師で、手が届くのは４人くらいかもしれません。
人の能力によります。絶対にそうだとはいえません。

## 3.2 16人未満
４人以上になったら、3人に一人、グループリーダを決めてもらいます。
そうすると、15人なら５グループできることになります。
５人のリーダに話を伝えたり、５人のリーダから報告を聞けばよいような仕組みを作ります。

この人数の課題の一つは、機材管理です。経験的に8台以上の機材があると、
どれか一台はなにかしてくれちゃうことがあります。

故障の場合もあります。OSのインストールのし直しが必要なこともあります。
呼びの機材が１台以上必要です。

## 3.3 64人未満
３人づつのグループが最大２１あります。７グループごとにグループリーダを決めてもらいます。
基本的に３人のグループリーダが、６人のリーダと、自分のグループのメンバに対応してくれます。

この人数になると、最大の課題は機材管理です。
グループリーダごとに２台の呼びの機材があ必要で、合計６台の予備を用意します。

# 4. 進捗管理
## 4.1 Github/Gitlab/Bitbucket またはWeb
## 4.2 進捗管理ツールのカスタマイズ
## 4.3 統計分析ツールの作成
場合によっては機械学習も。

# 5 日程計画
## 案1 
### 1日目。
Windows PCの場合は、WSLを導入して、Ubuntuを起動するまでに数時間かかる。

PCにLinuxを導入する場合には、１時間くらいで済みそう。

Raspberry PIはRaspbianのSDカードがあること前提だけど、
ない場合には、PCでSDにダウンロードする作業が慣れないと、１時間以上かかるかも。

初日にはコンパイラをコンパイルしたい。

場合によってはクロスコンパイラでもいい。

Raspberry PIで作業をする場合に、Raspberry PI でコンパイルするよりも、
もっと高速でメモリのたくさんあるPCでコンパイルした方がいいかもしれないし。

Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 ５つの関門。「名古屋のIoTは名古屋のOSで」。docker (37)
https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af

仮説（175）コンパイラを書くのは難しいか
https://qiita.com/kaizen_nagoya/items/a87c65d487bc7a67da11

LLVMソースコードのコンパイルをしようと思ってハマった罠とそこから脱出するための努力
https://qiita.com/kaizen_nagoya/items/16f270e42b947756ced3

### 2 日目　C言語標準
[C][C++]の国際規格案の例題をコンパイルするときの課題７つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de

### ３日目　ツール類
すでにdockerが入っていれば、その上にいろいろいれてみる。

cloc をdockerで。docker(142)
https://qiita.com/kaizen_nagoya/items/e56636e53ee12904f111

dockerでathrill(アスリル) TOPPERSと相性のよいv850シミュレータ。docker(144)
https://qiita.com/kaizen_nagoya/items/599ccdd07276aae5d29e

### 4日目
##### latex
今日LaTeXでpngを取り込んだ
https://qiita.com/kaizen_nagoya/items/3d188cbeeaa844f880b0

LaTeX2ε美文書作成入門　奥村 晴彦
https://qiita.com/kaizen_nagoya/items/8d10a18bb5c8cf2f5530

LaTeX Ieeeに投稿する準備
https://qiita.com/kaizen_nagoya/items/cd371a58b833bd7b8788

##### doxygen

### 5日目　MISRA C, CERT C
MISRA C まとめ #include <misra_c.h>
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

docker(200) Misra Example Suite at docker コンパイル完了までの道のり
https://qiita.com/kaizen_nagoya/items/71f04a0204d5a1114577

### 15日目。
今日から、Ethernet/TCP/IP

Linuxを触っていて、TCP/IPを操れないと意味がないかも。

まず、wiresharkの導入。

Wireshark 導入、記録、分析。無線網（Wi-Fi）空中線(antenna)(64)
https://qiita.com/kaizen_nagoya/items/d1d452d5f3eadd420d6e

```ubuntu:ban
# apt install wireshark
```

「かんたんな疎通確認」をwiresharkで
https://qiita.com/kaizen_nagoya/items/93acbe7ea1a43ffd56e4

### 統計・解析
wiresharkのプラグイン開発まとめ
https://qiita.com/rotace/items/674202417ba6b68b423f

Wiresharkを利用したMalware Traffic Analysis手順まとめ
https://qiita.com/harapeco_nya/items/3bdca678821abd939d8b

Wiresharkの基本的な使い方
https://qiita.com/masaomi346/items/a2c99700686e4c8a7a41

パケット解析で役立つWiresharkの機能
https://qiita.com/tomoyk/items/31fff62a29cb8e8813cf

Wiresharkの使い方（RTTの表示方法）https://qiita.com/hana_shin/items/09dc972c6a2daf36187c

WiresharkでLuaスクリプトを使った GUI 表示の方法
https://qiita.com/izuki_y/items/ce21711b42541951167c

物理記事　上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

数学関連記事１００
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

言語・文学記事　１００
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

通信記事１００
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

自動車　記事　１００
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

Qiita(0)Qiita関連記事一覧（自分）
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

鉄道（０）鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/26bda595f341a27901a0

日本語（０）一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

LaTeX(0) 一覧　
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

仮説（0）一覧（目標100現在40）
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

安全（0）安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

Ethernet 記事一覧　Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48) 
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網（Wi-Fi）空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

OSEK OS設計の基礎　OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

官公庁・学校・公的団体（NPOを含む）システムの課題、官（０）
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

Error一覧(C/C++, python, bash...) Error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

C++ Support(0)　
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding Rules(0) C Secure , MISRA and so on 
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

プログラムちょい替え（0）一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

TOPPERSまとめ　#名古屋のIoTは名古屋のOSで
https://qiita.com/kaizen_nagoya/items/9026c049cb0309b9d451

自動制御、制御工学一覧（０）
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

自動制御、制御工学一覧（０）
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧　
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

小川清最終講義、小川清最終講義（再）計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

＜この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。＞
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
#### 文書履歴(document history)
ver. 0.01 初稿 　20210827
ver. 0.02 URL added 20240107
### 最後までおよみいただきありがとうございました。
いいね　💚、フォローをお願いします。
#### Thank you very much for reading to the last sentence.
Please press the like icon 💚　and follow me for your happy life.