「[[.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]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS