「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[Linux OSの設計思想]] --[[Linuxを触ってみる。]] *目次 [#n54d8442] #contents *概要 [#x549ea3f] 「Linuxってドライブレター無いの?」的な質問をしたら、~ 「重症」と言われてしまったので、本ページを作成するに至りました。 *設計思想の違い。 [#f78c9253] **Windows [#ge4f2253] [[こちら>https://techinfoofmicrosofttech.osscons.jp/index.php?Windows%20OS%E3%81%AE%E8%A8%AD%E8%A8%88%E6%80%9D%E6%83%B3]](Windows OSの設計思想)が参考になる。 **Linux [#zf7c1a89] [[こちら>Linux OSの設計思想]](Linux OSの設計思想)が参考になる。 *詳細 [#a4d79c36] **論理ボリューム・マネージャ [#a786ed5c] -LVM : Logical Volume Manager ***Windowsでは [#j1928516] ダイナミック・ディスクに相当する。 -ソフトウェアRAID等の機能を持つ -不評で、あまり利用されていない。 ***スタック [#uc147015] 以下のようなスタックになっている模様。 -マウント・ポイント -論理ボリューム(logical volume) -ボリューム(volume group) -物理ボリューム(physical volume) -ディスク装置 **ファイル・システム [#xa32166c] ***種類 [#jbcdf618] -Windows --FAT32 --NTFS -Linux --ext4 --XFS --Btrfs -参考 --【ゼロから解説】Linuxのフォーマットの方法~ https://eng-entrance.com/linux-format --Linuxファイルシステムをまとめてみました~ https://qiita.com/sion_cojp/items/c8e015db39ddbf43012e ***ディレクトリ構造 [#gd5d9232] -Windows --Cドラ、Dドラ、...といったドライブ・レターを頂点にしたツリー構造 --階層化には、バックスラッシュ(\)、又は円記号(¥)を使う。 -Linux --ドライブレターは無く、ルートディレクトリ(/)を頂点にしたツリー構造 >先ずディスクをパーティションに区切り、それぞれの上にファイルシステムを用意し、~ それをマウントすることで、一本の巨大なディレクトリツリーができあがる。 --階層化には、フォーワードスラッシュ(/)を使う。 --各種ディレクトリ ---/~ Windowsの「SystemDrive」に近いルートディレクトリ ---/var、/tmp~ Windowsの「SystemRoot」に近いLinuxの動作に必要なディレクトリ ---/usr、/bin、/lib~ Windowsの「ProgramFiles」に近いソフトウェアを格納するディレクトリ ---/media~ USBやSDカードなどの記憶媒体がマウントされるディレクトリ ---/home/userXXX~ Windowsの「USERPROFILE」に相当 -参考 --ここがWindowsと違う、Linuxのディレクトリ構造 [Linuxの使い方] All About~ https://allabout.co.jp/gm/gc/438840/ ***断片化 [#b4a66959] -Windows:起きる。 -Linux:断片化が起こりづらい。 -参考 --ファイルシステム - マイクロソフト系技術情報 Wiki > デフラグ > Linuxにデフラグが無い理由~ https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0#vb3134de **フォルダ移動、ファイル操作コマンド [#p5ea3e98] パス区切りは、「\」(逆スラッシュ)ではなく「/」(スラッシュ) -ASCII.jp:Windowsのパス区切り文字は、~ なぜ逆スラッシュになったのか?|Windows Info~ https://ascii.jp/elem/000/001/763/1763591/ ***lsコマンド [#d76e2694] Windowsの「dir」は、Linuxで「ls」コマンド ***cdコマンド [#i515e7b7] 作業ディレクトリを移動(Windowsと同じ) ***mkdir関連コマンド [#abd40780] -mkdirコマンド~ ディレクトリを作成するコマンド(Windowsと同じ) -rmdirコマンド~ ディレクトリを削除するコマンド(Windowsと同じ)~ ※ Linuxにはrdと言うエイリアスがある。 -cpコマンド~ Windowsの「copy」は、Linuxで「cp」コマンド -rmコマンド~ Windowsの「del」は、Linuxで「rm」コマンド -mvコマンド~ Windowsの「move」は、Linuxで「mv」コマンド **ファイル編集コマンド [#fd5949d0] ***[[vi]]コマンド [#o069af69] ***[[nano]]コマンド [#b43f6dbe] ***catコマンド [#m30d6f93] ファイル操作を行う -ファイルの閲覧 -- -n(--number) -- -b(--number-nonblank) -- -s(--squeeze-blank) -- -E(--show-ends) -- -T(--show-tabs) -ファイル更新 --新規作成 ---リダイレクトの「>」を使用 ---複数行に渡った新規作成 cat > ファイル <<EOF 書き込む内容 EOF --追加~ ---リダイレクトの「>>」を使用 ---複数行に渡った追加 cat >> ファイル <<EOF 付け足す内容 EOF --結合~ catコマンドの後にファイルを並べる。 **シェル、シェルスクリプト [#l6178abc] ***CMDではなくてBash [#e68ece16] -Windows: --CMD --PowerShell -Linux:Bash ****.batではなくて*.sh [#ra1c937d] -シェルスクリプト、バッチ --Windows: ---Windowsバッチファイル ---PowerShellスクリプトファイル --Linux:UNIXシェルスクリプト -それぞれ、拡張子は、 --Windows: ---*.bat ---*.ps1 --Linux:*.sh **実行ファイル [#r0d60646] ***PEではなくてELF [#p176c59d] 実行ファイルのファイルフォーマット -Windows:Portable Executable (PE) -Linux:Executable and Linkable Format (ELF) ***EXEでなくて拡張子無し [#zc86cb9d] -Linuxは全てファイルで拡張子無し。 -"*.*"は、拡張子ではなくファイル名の一部 -なので基本的にはルールベース --シェルスクリプトは、お約束として"*.sh" --ただ、別に、"*.exe"としてもイイ。 -コンパイラの既定値から、以下のような説もある。 --Windows:*.exe --Linux:*.out ***DLLではなくてSO [#y81d4bc4] -Windows:****.dll -Linux:lib****.so.**** **メモリ管理 [#uc3370ee] ***仮想メモリ [#lf833caa] -スワップファイルシステム --Windows:ページファイル(pagefile.sys) --Linux:ページファイル、スワップファイルシステム -[[API>#h59b6623]] ***物理メモリ [#wf110cea] -ページテーブルの容量削減の技術 --Windows:large page --Linux:huge page -ファイルのキャッシュ --Windows:ファイル・システム・キャッシュ --Linux:ページ・キャッシュ -ストレージのキャッシュ(ファイル・システムを介さない) --Windows:バッファ・キャッシュ --Linux:バッファ・キャッシュ~ Linuxカーネル2.4からページ・キャッシュに統合された。 **API [#y0ca1946] ***Win32 APIではなくてPOSIX [#p6598902] -Windows:Win32 API -Linux:POSIX --開発用のライブラリというより、カーネルに対するC言語用のインターフェイスなので低機能(というか低レベル) --Linuxカーネルと、Win32サブシステムを含めたWindows全体を比較するのが間違っているという説。 ***fork、exec [#l96162d2] -Linux --forkはコピーオンライトで親プロセスとメモリを共有する。 --シェルが(開発を奨励している)フィルタをパイプで連結する。 ---シェルはシェルは自分自身をforkし2つの子プロセスを生成 ---子プロセスがexec(3)ファミリのシステムコールを使って、~ 実行コマンドのプログラムをオーバーレイする。 -Windows --fork、exec単独に相当するシステムコールがない。 --代わりにspawn()(英語版)ファミリ関数が fork-exec に相当する働きをする。 ***メモリ管理 [#h59b6623] -malloc --Windows:HeapAlloc --Linux:mmap -メモリ マップト ファイル、デマンド ページング、コピーオンライト --Windows:CreateFileMapping --Linux:mmap -参考 --仮想アドレス空間の確保のAPI - マイクロソフト系技術情報 Wiki~ https://techinfoofmicrosofttech.osscons.jp/index.php?%E4%BB%AE%E6%83%B3%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E7%A9%BA%E9%96%93%E3%81%AE%E7%A2%BA%E4%BF%9D%E3%81%AEAPI *参考 [#bea01d18] **[[Windows Terminal>https://techinfoofmicrosofttech.osscons.jp/index.php?Windows%20Terminal]] [#c66af2ba] **[[PowerShell Core>https://techinfoofmicrosofttech.osscons.jp/index.php?PowerShell%20Core]] [#o791761d]