推奨されます, 2024

エディターズチョイス

Windows 10でのLinux Bashシェルのしくみ

Windows 10のAnniversary Updateのリリースで、MicrosoftはLinux用のWindows Subsystem (WSL) - ネイティブのLinuxバイナリの実行をサポートするWindows 10上で実際のネイティブBashを実行する方法 - 発表しました。 これは、Windows上でユーザーモードのUbuntu Linuxイメージを実行することによって行われます。

つまり、 lsgreptopchmodなどのLinuxコマンドラインツールを実行できます。 本物のUbuntuを実行しているので、 lsb-release -aを実行すると以下のような出力が得られます。

apt-getとその仲間を使って、 vimgitscreentmuxなどのユーティリティをインストールすることも、あるいはnethack:ゲームをプレイすることもできnethack:

ただし、このシステムはベータ版であり、サーバーのワークロードを対象としていません 。 開発者(および愛好家)にとって、Windows上でLinux中心のアプリケーションを変更することなくテストするためのツールにすぎません。 これはLinuxのGUIアプリケーションやGnomeやKDEなどの環境を実行するためのツールでもありませんが、特定のハックでも可能です。 これをクリアしたので、Windows 10でLinuxシェルがどのように機能するのかを見てみましょう。

Linux用のWindowsサブシステム(WSL)

公式文書によると、「WSLはネイティブのLinux ELF64バイナリをWindows上で実行できるようにするコンポーネントの集まりです」。 それは、Windows NTカーネルの上に仮想化されたLinuxカーネルインターフェースを実装することによって行われます。 つまり、実際のLinuxカーネルのコードは一切使用されません。アプリケーションがLinux固有のシステムコール(syscall)を呼び出すたびに、WSLはそれを同等のWindowsシステムコールに変換します。

仮想マシンとCygwinとの違い

それでは、Windows 10上のLinux Bash Shellが、仮想マシンやCygwinと比べてどのように異なるのかを見てみましょう。

仮想マシン

あなたは考えているかもしれません。 なぜWindowsでLinux VMを使わないのですか?」

仮想マシンと比較して、 WSLは少ないリソースを使用します。 また、共有フォルダやネットワーク共有に頼ることなく、基盤となるWindowsファイルシステムに完全にアクセスできるようにしながら、Linuxと同じようにファイルを操作できます。

サイグウィン

Windows上で人気のあるLinux / Unix系ツールを実行するもう1つの一般的な方法はCygwinです。 2つの方法の最大の違いは、 Cygwinは Windows上でネイティブのLinuxバイナリを実行する方法ではないということです。 Windows上のLinuxディストリビューションにた機能を提供するGNUおよびオープンソースツールのセットのみを提供します。

一方、 WSLツールは 、Windows上で動作するネイティブのLinux ELF-64コンパイル済みバイナリです。 たとえば、WSLでapt-get install emacsコマンドを実行すると、公式のUbuntuリポジトリから、Ubuntu 14.04インストールと同じファイルがダウンロードされ、インストールされます。

WSLのユーザー、権限、およびファイルシステム

ファイルシステム階層

WSLは、現在のユーザーの%LocalAppData%\lxss\rootfsディレクトリにインストールされてい%LocalAppData%\lxss\rootfs 。 これはWSL環境と呼ばれ、Linuxの「 / 」(ルート)ディレクトリとして機能します。 たとえば、Windowsでのユーザー名がbeebom場合、LinuxのルートディレクトリはC:\Users\beebom\AppData\Local\lxss\rootfs. つまり、各Windowsユーザーは自分のWSL環境を持つことができ、 apt-get install software packagesなどの変更を他のWindowsユーザーに影響を与えることなく行うことができます。

WSLで基礎となるWindowsファイルシステムにアクセスすることは可能です。 すべてのドライブは/mnt.下にマウントされてい/mnt. たとえば、 C:\/mnt/c下にマウントされ、 D:\/mnt/d下にマウントされます。

ユーザーと権限

あなたが最初にWSLをインストールするとき、それは新しいデフォルトのLinuxユーザを作成するようにあなたに促します。 このユーザーは現在のWindowsユーザーと同じ名前である必要はなく、一般に別のエンティティとして扱われます。 単一のWindowsユーザーによって制御される複数のLinuxユーザーを作成することもできます。

sudoコマンドを使用してroot権限を取得することが可能です。 WSLのrootになることは、Linux環境およびファイルシステム内でのユーザーの権限にのみ影響することに注意してください。それらは、付与されたWindows特権には影響を与えません。 たとえば、Windowsの管理者権限を持つWSLセッションはcd /mnt/c/Users/Administratorなることがありますが、管理者権限を持たないBashセッションにはPermission Deniedが表示されます。 sudo cd /mnt/c/Users/Administratorと入力しても、アクセス許可はWindowsによって制限されるため、Administratorのディレクトリへのアクセスは許可されません。

Linux固有のファイルシステム機能

Linuxは大文字と小文字を区別するシステムです。 つまり、 photo.pngPhoto.pngは2つの異なるファイルとして扱われます。 Windowsはデフォルトでは大文字と小文字を区別しませんが、それでも大文字と小文字は区別されます。 つまり、 photo.pngPhoto.pngは2つの異なるファイルとして扱われませんが、 photo.pngPhoto.png違いは認識されています。

WSLはLinuxと同じように大文字と小文字を区別します。 WSL環境の外では大文字と小文字だけが異なる2つのファイルを作成することさえ可能です。 ただし、多くのWindowsアプリケーションはこのような状況に対処できず、ファイルの一方または両方を開くことができない可能性があることに注意してください。

同様に、NTFSファイルシステムを実行している場合は、 シンボリックリンクもサポートされています。 ただし、シンボリックリンクはWSL内でのみ機能し、他のWindowsアプリケーションでは解決できません。

Linuxはファイル名内のほぼすべての特殊文字もサポートしますが、Windowsはより制限的です。 ただし、WSLでは、Linuxシステムの環境に限定されていれば、そのような特殊文字を使用できます。

WindowsでLinuxのコマンドラインを実行する準備はできましたか?

そのため、Ubuntu BashまたはLinux Bash Shell(Linux用Windowsサブシステム)は、Windows 10(Anniversary update付き)で動作します。 その作業とともに、Windows上でLinux固有のコマンドを実行する従来の方法とは異なり、それがどのように優れているかについても学びました。 それで、もしあなたがいつもLinuxコマンドを使いたかったのなら、始めて、あなたが質問、コメント、または助言を持っているなら、私たちにコメントセクションで知らせてください。

Top