WSL 셸에서 Windows 디스크의 볼륨 레이블을 얻는 방법은 무엇입니까?

WSL 셸에서 Windows 디스크의 볼륨 레이블을 얻는 방법은 무엇입니까?

WSL에서 Ubunutu 20.04를 실행하면 Windows 디스크가 다음과 같이 설치됩니다.

/mnt/c
/mnt/d
/mnt/e

등.

Bash 쉘에서 /mnt/d에 있는 디스크의 볼륨 레이블을 얻는 방법은 무엇입니까?

lsblktune2fs /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(기본적으로 가상 머신) 내에서는 이것이 불가능합니다.

관련 정보