2023-06-29
VMWareやVirtualBox無しでもこのWSL(Windwos Subsystem for Linux)によってWindowsでLinuxを動かすことができる。
仮想マシンでは無くWindowsソフトそのものとして動くため、システムリソース=ディスクフォルダ、IPアドレス、ポートなど=はすべてWindowsと共有となる。
またsystemd/init.dによる各アプリケーション(sshdやapache2など)の自動起動などはしてくれない。手動起動するか、Windowsバッチファイルにwslコマンドを書いて起動させるかの手段を取る(後述)。
1、インストール・起動
Windwos PowerShellを管理者モードで起動して以下コマンドを実行
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
再起動しますか?でYとし再起動
LinuxのダウンロードはMicrosoft Storeから行うので、Storeアプリを消してしまっている場合同じくWindwos PowerShellを管理者モードで起動し以下コマンドで復活させる。
Get-AppXPackage -AllUsers -Name microsoft.WindowsStore | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" -Verbose}
Microsoft Storeを起動し「Debian」と検索し「入手」「インストール」すると、普通にプログラムリストにあっさり「Debian」が加わるので、起動する。
Installing, this may take a few minutes... Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username: hogeuser New password: Retype new password: passwd: password updated successfully Installation successful! hogeuser@DESKTOP-QSLA6C0:~$
ユーザー名とパスワードを決める。Windowsユーザーと同じでなくてもよい。
2、ファイルシステムの確認と共有
df -h Filesystem Size Used Avail Use% Mounted on rootfs 233G 103G 131G 45% / none 233G 103G 131G 45% /dev none 233G 103G 131G 45% /run none 233G 103G 131G 45% /run/lock none 233G 103G 131G 45% /run/shm none 233G 103G 131G 45% /run/user cgroup 233G 103G 131G 45% /sys/fs/cgroup C:\ 233G 103G 131G 45% /mnt/c D:\ 100M 33M 68M 33% /mnt/d G:\ 466G 181G 285G 39% /mnt/g
Windows上の各ディスクへは、/mnt以下に行けばアクセスできることがわかる。
逆にWindowsからDebianファイルシステムへは、エクスプローラーを開いて、
\\wsl$\Debian
と打てばアクセスできる。便利!
3、パッケージアップデートと再起動
sudo -s cd / cp -Rp etc etc.default # バックアップ apt update apt -y upgrade apt -y dist-upgrade
と、普通のDebianインストール直後のようにアップデートを行う。問題は再起動で、
reboot System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down
と怒られてできない。これはDebianがWindowsソフトそのものであるので、rebootはWindowsを再起動することにほかならない。ので、タイミングを見てWindowsごと再起動すればよい。
なお、このサブシステム=Linux Debian=を停止する、ということは以下でできる。
コマンドプロンプトを管理者モードで開いて、
wsl -t Debian
とするか、
wsl --shutdown
とする(全サブシステム終了)
wslコマンドリファレンスはこちら。
https://docs.microsoft.com/ja-jp/windows/wsl/reference
4、基本パッケージインストールと自動起動
ひとまず基本ソフト群インストール
apt install ssh net-tools build-essential rsync git libssl-dev
としてから、ifconfigすると、普通にコマンドプロンプトでipconfigしたのと同じ結果となる。つまり一心同体、このDebianにsshするなら、接続先IPをこのWindowsにしてsshするだけである。
ただし前述したように、サーバーソフト(sshサーバなど)は自動起動してくれないので、以下のようにしてWindowsのスタートアップフォルダにbatファイルを置くことで起動させる。
Windowsキー+R で「ファイル名を指定して実行」を開く
shell:startup
と打つと、自分のスタートアップフォルダがエクスプローラーで開くので、ここに
@echo on
wsl -u root -- /etc/init.d/ssh start
などと書いたファイル(wsl.bat)などと保存し、置く。
再起動してコマンドプロンプトから
wsl
と打ってDebianプロンプトに切り替え、
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 8892 304 ? Ssl 10:38 0:00 /init
root 18 0.0 0.0 19816 860 ? Ss 10:38 0:00 /usr/sbin/sshd
root 36 0.0 0.0 8896 212 tty1 Ss 10:49 0:00 /init
などとして、sshdが居れば無事スタートアップが効いている。apache2なども同じように追加していける。
サブシステムそのもの(Debian)はWindowsが自動起動してくれているようで、都度プログラムメニューからDebianを選んで起動させる必要はないようである。
これで他の設定やアプリケーションは基本普通のDebianと同じように以下のように行っていけます。
・【Debian】タイムゾーン設定と時刻同期【FreeBSD】
・【Debian初期設定1】CD Insatall,Network,apt Kernel/Package Update【Buster】
・【Debian初期設定2】group、passwd、sudo、sshログインルール
・【Debian初期設定3】bash系シェル初期設定ファイル
・【Debian初期設定4】LDロードパスに/usr/local/libを常時加える
・【Debian】Sambaインストール/アンインストールメモ【FreeBSD】
・DebianにウェブサーバーApache2をセットアップ
・DebianにメールサーバーPostfixをセットアップ
5、すべてを削除する(無かったことにする)
・必要なデータはバックアップしておく。
・スタートアップフォルダに入れたバッチファイルを削除しておく。
・コントロールパネル→プログラム→プログラムと機能→Windowsの機能の有効化または無効化
Windows Subsystem for Linux のチェックをはずしてOKする。
・再起動する。
・Linuxだけ使いたかったのでストアアプリそのもの本体とストアアプリも全部いらない、という場合、
Windows 10 設定メモ【ストアアプリを完全消去】
などを参照して全消しする。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
Windows版Google Driveが使用中と言われアンインストールできない場合
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Linux】iconv/libiconvをソースコードからインストール
Ubuntu Server 21.10でイーサリアムブロックチェーン【その5】