「Linuxを学ぶにはどうしたらいいですか。」
という質問をいただくことがある。
「Linuxを覚えるにはどうしたらいいでしょうか。」ではない。
Linuxを使っていれば、いつか学んだことになる。
習うより、慣れろ。
Windowsは、Linux/Unixの祖先にあたるDEC VMXを開発していた人たちが開発したOS.
Linux/Unixの祖先にあたるOSで、POSIXができるよりも前の設計思想で、無理にPOSIXには準拠していない。CygwinというLinuxに揃える道具を入れると、グループ以外はPosixに対応していることがわかる。
Windowsでプログラム開発ができていれば、Linuxでプログラム位開発するのはすごく楽なはず。
オープンソースが多く、ソースコードを読んだり、ソースコードをビルドすればわかることがある。
目的
目的による。
-
Linux の Server機能を利用したい。dockerのServer機能を利用したい。
-
Linuxのコマンドを利用したい。dockerのコマンドを利用したい。
-
LinuxのGuiを利用したい。
-
Linuxのカーネルをコンパイルしたい。
-
複数のLinuxのシステムを管理しないといけない。
-
Linuxのシステム(上の5つすべて)を把握しネットワーク設計をしないといけない。
-
C/C++コンパイラ・クロスコンパイラをコンパイルしたい。
前提
CコンパイラとPOSIXの関係がわかっていると、道に迷うことが少ないかも。
POSIXにそれなりに対応できるOSと、POSIXライブラリは知らんぜというfreestandingで行く人と。
POSIXで行くのなら、UNIX(BSD含む)でも、MacOSでも、Linuxでもよく、WindowsならWLSを入れていればいいかも。
「本物のC」は「Cの精神」と 「freestanding と hosted」と「未定義、未規定、処理系定義」
1. Linux の Server機能を利用したい。
Linuxを利用できるクラウドを利用するとよい。
最初の教育期間は無償だったり、安価だったりすることがあるかも。
2. Linuxのコマンドを利用したい。
今、利用しているシステムが何かによる。WindowsならWLS、Mac OSならdocker。
今、利用しているシステムとは関係なく始めるのであるなら、
2.1 Mac OS + docker
2.2 Windows + WLS
https://docs.microsoft.com/ja-jp/windows/wsl/install
2.3 Raspberry PI
2.4 Ubuntu
「LinuxをやるならmacOS」派です。「Linuxを学ぶにはMacが近道」派です。MacOS 上のdockerのubuntu上で。
あなたもdocker, 私もdocker。docker(130)
Qiitaで優秀賞をいただきました。ありがとうございます。MacOS上のdockerだけで作業しました。
4. LinuxのGUIを利用したい。
GUIはRaspberry PIからでどうでしょう。
3.1 Raspberry PI
3.2 Windows + WLS
3.3 Ubuntu
4. Linuxのカーネルをコンパイルしたい。
上記で Raspberry PIは除外したい。
メモリは32GB欲しい。
4.1 Debianでソースコード導入
4.2 dockerのDebian系でソースコード導入
5. 複数のLinuxのシステムを管理しないといけない。
今、何を利用しているかによる。
異なるLinuxシステムに触れているとよいのが経験則。
5.1 Windows + WLS と Raspberry PI
5.2 Mac OS と Raspberry PI
5.3 Raspberry PI 複数台
6. Linuxのシステム(上の5つすべて)を把握しネットワーク設計をしないといけない。
ネットワーク設計する場合に、すべてがLinuxとは限らない可能性を考慮し、
Android端末、iOS端末を含むネットワーク設計ができるように構えるとよいのが経験則。
6.1 Windows + WLS と Mac OS と Raspberry PI
6.2 Raspberry PI 複数台
ネットワーク設計対象数が20台を超える場合は、Raspberry PIをその台数分用意して、
いろいろ試験すると面白い。
特に、サイバーセキュリティ対策などをぜひぜひ。
LinuxPCはなくてもいいので、BSD PCを立てて試験してもらえるといいかも。
ネットワーク ReferenceとしてのBSD
7. C/C++コンパイラ・クロスコンパイラをコンパイルしたい。
C/C++コンパイラ・クロスコンパイラをコンパイルするにはdockerがお勧め。
メモリはできれば32GB欲しい。
7.1 Mac OS + docker
7.2 Windows + WLS + docker
7.4 Ubuntu + docker
Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門。「名古屋のIoTは名古屋のOSで」。docker (37)
https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af
8. Linux と Freestanding環境のOSを同じソースに統合してみる。
自動車用OSを網羅する OSEK(9)
https://qiita.com/kaizen_nagoya/items/a61144daf500a3f2b4f4
まとめじゃないもの
Linuxを学ぶのに、Linuxを使えばいいという意見に遭遇することがある。
カーネルのコンパイルが目的だったら、一番の早道だと思う。
コンパイルしたカーネルをすぐに試験できるから。
そうじゃなければ、わざわざLinuxを覚えるのにLinuxを使う必要はないかも。
自分は、Mobile IPという通信規約の実験をするため、カーネルのコンパイルが必要で、
PCにDebianを導入した。通信規約なので、対向試験はBSDを利用した。都合PC2台。
あ、Linuxを学びたい訳ではないので、本題からははずれる。
Linuxを学びたいと思ったことはないかも。POSIX OSが嫌いだから。OSEK(AUTOSAR) OSは好き。っていうか、人の仕事を邪魔しないOSが本当のOSかなって思うんです。。
OSよりも苦手なのはDBとX-Window。
得意なのは、C言語、Ethernet(TCP/IP), html。C/C++コンパイラ・クロスコンパイラ、EthernetもhtmlもPOSIX OS上で動いてた。ありがとうございます。
世界ソフトウェア品質会議で、Linux, Mac OS, cygwinのPOSIX Testについて、品質指標にもとづいた発表している。
Testing and Verification for Embedded Linux
https://www.juse.or.jp/upload/files/3wcsq.pdf
Posix Test Suite docker downloads, tar, install。docker(110)
https://qiita.com/kaizen_nagoya/items/f1e24be04a2405ede00f
参考資料
Linux教育15日(3週間)を企画、運営、評価する。
https://qiita.com/kaizen_nagoya/items/6601ec31d5c7f3186b7d
10歳児がサイバセキュリティの専門家になるには
https://qiita.com/kaizen_nagoya/items/0aa201b09187bbe39ff3
最初に覚えるプログラミング言語は何がいいですか?
https://qiita.com/kaizen_nagoya/items/590704e76e287707637b
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
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 初稿 20220307
ver. 0.02 追記 20240107
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.