WSL에서 Ubunutu 20.04를 실행하면 Windows 디스크가 다음과 같이 설치됩니다.
/mnt/c
/mnt/d
/mnt/e
등.
Bash 쉘에서 /mnt/d에 있는 디스크의 볼륨 레이블을 얻는 방법은 무엇입니까?
lsblk
tune2fs /mnt/d
볼륨 레이블을 제공하지 않습니다
답변1
대부분의 것들이 그렇긴 하지만@에드워드의 답변사실이에요, 있어요예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(기본적으로 가상 머신) 내에서는 이것이 불가능합니다.