Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今日からはじめるWSL実践入門

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 今日からはじめるWSL実践入門

Windows上で完全なLinux環境をシームレスに利用できるのが『Windows Subsystem for Linux (WSL)』です。この勉強会ではWSLとはなにか、その特徴的な構造から使い方までを簡単に解説します。

Avatar for とことんDevOps

とことんDevOps

January 29, 2025
Tweet

More Decks by とことんDevOps

Other Decks in Technology

Transcript

  1. WSLの何が嬉しいの? • 現代的なWebシステムのターゲットはほとんどがLinux • そのためLinuxの開発環境が必須となる • でも一般的な会社のデスクトップはWindowsが支配的 • Windowsじゃ開発しづらい •

    でも会社的にLinuxデスクトップは使わせてもらえない • 開発サーバーを用意して、SSHでリモート作業するのが定番だった • でも手元に開発環境がないと効率が悪い…… • そこで、Web開発ならMacみたいな時代があった • 2000年代後半〜、スタバでMBAがナウい時代 5
  2. とはいえMacはMacでつらみ • macOSはUNIXだけどLinuxではない • Unixライクなツールは動作するけど、Linuxとのギャップがある • 当時のWindows 7あたりと比較すれば、たしかに開発環境を立ち上げやす かったのは事実ではある •

    Hogehogeを動かすには、Macならxxしてxxすれば簡単にセットアップが〜み たいなブログ記事とかよく見かけるけど、それ本当に簡単ですか的な • カウンターとしてDELLのProject Sputnikとかあった(今でもある) 6
  3. WSL1とWSL2の違い • WSL1はWindows上でPico Processとして起動している • Linuxカーネルは動作していない • LXCore/LXSSという変換レイヤーを使ってシステムコールを変換している • そのためシステムコールに完全な互換性がない

    • まあCygwinと似たようなもんよ • これらはNTカーネルモードドライバーとして実装されている • WSL2はHyper-Vを使い、VM上で本物のLinuxカーネルを動かしている • そのためWSL2はシステムコールに完全な互換性がある • ただしWSL2が1の完全な上位互換というわけではない • プロセスの動作はWSL2の方が高速だが、Windowsファイルシステムへのアクセス はWSL1の方が高速 • Windowsのファイル操作にLinuxを使いたいような場合は、WSL1を使った方がいい ケースもある 20
  4. WSLのinit • WSLでPID1として起動しているinitは「/init」 • 「/sbin/init」ではない • systemdではない • これはMicrosoft製の特別なinit •

    systemdを別途有効にすることもできる • /etc/wsl.confに以下を追記 • 最近のUbuntuやDebianではこれがデフォルト 21 [boot] systemd=true
  5. Windows つまりこんな感じ • ホスト上の仮想NICがWSLのデフォルトゲートウェイになる • WindowsからWSL内へアクセスする際にもここを通る • 物理NICからNATして外へ 35 Hyper-V

    仮想スイッチ WSL 仮想NIC (eth0) Ubuntu Debian Hyper-V 仮想NIC 物理NIC 内部ネットワーク 172.31.32.0/20 WSLから見た デフォルトゲートウェイ 172.31.32.1/20 Windows NAT コンテナ間で共有 172.31.37.42/20