WSLでUbunutu 20.04を実行すると、Windowsディスクが次のようにインストールされます。
/mnt/c
/mnt/d
/mnt/e
など。
Bashシェルから/mnt/dにあるディスクのボリュームラベルを取得するには?
lsblk
tune2fs /mnt/d
ボリュームラベルを提供していません
答え1
ほとんどのものはそうですが、@ Edwardの回答本当です、あります。はいWSLの回避策を使用すると、ボリューム名を読み取ることができます。
(少なくともデフォルトでは)WSLを使用すると、コマンドラインやその他のWindows実行可能ファイルを呼び出すことができるため、WSLを介してPowerShellを簡単に使用してWindows固有のデータを読み取ることができます。
$ powershell.exe -c "(Get-Volume d).FileSystemLabel"
Crucial SSD 2TB
もちろん、次のスクリプトを使用できます(インストールのためにWSL2のみ)。
mount |
grep "^drvfs on .* 9p" |
awk '{print $3}' |
xargs -I{} bash -c '''
mnt={}
drv="${mnt:0-1}"
echo -en "${mnt}\t"
powershell.exe -c "(Get-Volume $drv).FilesystemLabel"
'''
答え2
WSL2は、実際にMicrosoftカーネルを実行しているVMです。
root@test-ubuntu-wsl2:/home/edward# uname -a
Linux test-ubuntu-wsl2 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Windows側のユーザースペースを使用してディスクに接続できますwsl.exe
。例をご覧ください。https://learn.microsoft.com/en-us/windows/wsl/wsl2-mount-diskまたはhttps://devblogs.microsoft.com/commandline/access-linux-filesystems-in-windows-and-wsl-2/。
Windowsファイルシステムは、9p
次のプロトコルを使用してマウントされているようです。
root@test-ubuntu-wsl2:/home/edward# mount | grep '\\'
C:\ on /mnt/c type 9p (rw,noatime,dirsync,aname=drvfs;path=C:\;uid=1000;gid=1000;symlinkroot=/mnt/,mmap,access=client,msize=65536,trans=fd,rfd=8,wfd=8)
M:\ on /mnt/m type 9p (rw,noatime,dirsync,aname=drvfs;path=M:\;uid=1000;gid=1000;symlinkroot=/mnt/,mmap,access=client,msize=65536,trans=fd,rfd=8,wfd=8)
Windowsホストは、WSLインスタンスが接続されている9pサーバーを実行します。したがって、直接デバイスアクセス(ハードウェアアクセスなし)はなく、他のすべての直接デバイスユーザースペースツールにはlsblk
ホストtune2fs
ドライブが表示されません。
また見てくださいhttps://superuser.com/questions/1643551/windows-10-wsl-mount-creates-9p-filesystem-instead-of-drvfs。
長すぎます。ディスクラベルを表示するには、デバイスに直接アクセスする必要があります。 WSL2(デフォルトでは仮想マシン)内ではこれは不可能です。