アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【WindowsDebian
Windows Subsystem for LinuxでDebianを動かす
POSTED BY
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 設定メモ【ストアアプリを完全消去】
などを参照して全消しする。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

【キーワード検索】