Skip to content

DNET_LinuxForWindowsUsers

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

WindowsユーザがLinuxに乗り換える際に、知っておくとイイ情報集。

概要

「Linuxってドライブレター無いの?」的な質問をしたら、
「重症」と言われてしまったので、本ページを作成するに至りました。

設計思想の違い。

Windows(設計思想)

Windows OSの設計思想が参考になる。

Linux(設計思想)

Linux OSの設計思想が参考になる。

詳細

論理ボリューム・マネージャ

  • LVM : Logical Volume Manager

Windowsでは

ダイナミック・ディスクに相当する。

  • ソフトウェアRAID等の機能を持つ
  • 不評で、あまり利用されていない。

スタック

以下のようなスタックになっている模様。

  • マウント・ポイント
  • 論理ボリューム(logical volume)
  • ボリューム・グループ(volume group)
  • 物理ボリューム(physical volume)
  • ディスク装置

ファイル・システム

種類

ディレクトリ構造

  • Windows

    • Cドラ、Dドラ、...といったドライブ・レターを頂点にしたツリー構造
    • 階層化には、バックスラッシュ(\)、又は円記号(¥)を使う。
  • Linux

    • ドライブレターは無く、ルートディレクトリ(/)を頂点にしたツリー構造

      先ずディスクをパーティションに区切り、それぞれの上にファイルシステムを用意し、
      それをマウントすることで、一本の巨大なディレクトリツリーができあがる。

    • 階層化には、フォーワードスラッシュ(/)を使う。

    • 各種ディレクトリ

      • /
        Windowsの「SystemDrive」に近いルートディレクトリ

      • /var、/tmp
        Windowsの「SystemRoot」に近いLinuxの動作に必要なディレクトリ

      • /usr、/bin、/lib
        Windowsの「ProgramFiles」に近いソフトウェアを格納するディレクトリ

      • /media
        USBやSDカードなどの記憶媒体がマウントされるディレクトリ

      • /home/userXXX
        Windowsの「USERPROFILE」に相当

  • 参考

断片化

フォルダ移動、ファイル操作コマンド

パス区切りは、「\」(逆スラッシュ)ではなく「/」(スラッシュ)

lsコマンド

Windowsの「dir」は、Linuxで「ls」コマンド

cdコマンド

作業ディレクトリを移動(Windowsと同じ)

mkdir関連コマンド

  • mkdirコマンド
    ディレクトリを作成するコマンド(Windowsと同じ)

  • rmdirコマンド
    ディレクトリを削除するコマンド(Windowsと同じ)
    ※ Linuxにはrdと言うエイリアスがある。

  • cpコマンド
    Windowsの「copy」は、Linuxで「cp」コマンド

  • rmコマンド
    Windowsの「del」は、Linuxで「rm」コマンド

  • mvコマンド
    Windowsの「move」は、Linuxで「mv」コマンド

ファイル編集コマンド

viコマンド

vi

nanoコマンド

nano

catコマンド

ファイル操作を行う

  • ファイルの閲覧

    • -n(--number)
    • -b(--number-nonblank)
    • -s(--squeeze-blank)
    • -E(--show-ends)
    • -T(--show-tabs)
  • ファイル更新

    • 新規作成

      • リダイレクトの「>」を使用

      • 複数行に渡った新規作成

        cat > ファイル <<EOF
        書き込む内容
        EOF
        
    • 追加

      • リダイレクトの「>>」を使用

      • 複数行に渡った追加

        cat >> ファイル <<EOF
        付け足す内容
        EOF
        
    • 結合
      catコマンドの後にファイルを並べる。

シェル、シェルスクリプト

CMDではなくてBash

  • Windows:

    • CMD
    • PowerShell
  • Linux:Bash

.batではなくて*.sh
  • シェルスクリプト、バッチ

    • Windows:

      • Windowsバッチファイル
      • PowerShellスクリプトファイル
    • Linux:UNIXシェルスクリプト

  • それぞれ、拡張子は、

    • Windows:

      • *.bat
      • *.ps1
    • Linux:*.sh

実行ファイル

PEではなくてELF

実行ファイルのファイルフォーマット

  • Windows:Portable Executable (PE)
  • Linux:Executable and Linkable Format (ELF)

EXEでなくて拡張子無し

  • Linuxは全てファイルで拡張子無し。

  • "."は、拡張子ではなくファイル名の一部

  • なので基本的にはルールベース

    • シェルスクリプトは、お約束として"*.sh"
    • ただ、別に、"*.exe"としてもイイ。
  • コンパイラの既定値から、以下のような説もある。

    • Windows:*.exe
    • Linux:*.out

DLLではなくてSO

  • Windows:****.dll
  • Linux:lib****.so.****

メモリ管理

仮想メモリ

  • スワップファイルシステム

    • Windows:ページファイル(pagefile.sys)
    • Linux:ページファイル、スワップファイルシステム
  • API

物理メモリ

  • ページテーブルの容量削減の技術

    • Windows:large page
    • Linux:huge page
  • ファイルのキャッシュ

    • Windows:ファイル・システム・キャッシュ
    • Linux:ページ・キャッシュ
  • ストレージのキャッシュ(ファイル・システムを介さない)

    • Windows:バッファ・キャッシュ
    • Linux:バッファ・キャッシュ
      Linuxカーネル2.4からページ・キャッシュに統合された。

API

Win32 APIではなくてPOSIX

  • Windows:Win32 API
  • Linux:POSIX
    • 開発用のライブラリというより、カーネルに対するC言語用のインターフェイスなので低機能(というか低レベル)
    • Linuxカーネルと、Win32サブシステムを含めたWindows全体を比較するのが間違っているという説。

fork、exec

  • Linux

    • forkはコピーオンライトで親プロセスとメモリを共有する。

    • シェルが(開発を奨励している)フィルタをパイプで連結する。

      • シェルは自分自身をforkし2つの子プロセスを生成
      • 子プロセスがexec(3)ファミリのシステムコールを使って、
        実行コマンドのプログラムをオーバーレイする。
  • Windows

    • fork、exec単独に相当するシステムコールがない。
    • 代わりにspawn()(英語版)ファミリ関数が fork-exec に相当する働きをする。

メモリ管理(API)

参考

移行メモ

  • 「ボリューム(volume group)」は「ボリューム・グループ(volume group)」の 誤記のため修正した。
  • 「シェルはシェルは自分自身をfork」の重複を除去した。
  • 元 Wiki では見出しそのものが他ページへのリンクになっていた箇所 (「viコマンド」「nanoコマンド」「Windows Terminal」「PowerShell Core」 「Windows OSの設計思想」「Linux OSの設計思想」)は、GitHub Wiki では 見出しからアンカが生成されるため、見出しをプレーン・テキストとし、 リンクは直下の本文(箇条書き)に置いた。
  • 同名の見出し(「Windows」「Linux」「メモリ管理」)が複数あり GitHub Wiki でアンカが衝突するため、括弧で文脈を補って一意にした。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの Windows OSの設計思想 / ファイルシステム / 仮想アドレス空間の確保のAPI / Windows Terminal / PowerShell Core に張り替えた。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名 の該当節を参照)」の形に置き換えた。

Tags: 移行, Linux, Windows, ディレクトリ構造, ファイルシステム, シェル, POSIX, ELF, メモリ管理

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally