You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
4.3 KiB

\chapter{WSL2 安装配置}
\section{WSL2 系统导入导出}
在 powershell 或者 cmd 窗口进行 wsl2 系统的导入导出:
\begin{enumerate} [(1),nosep]
\item 查看子系统是否运行:
\shellcmd{bash}{wsl -l --running}
\item 终止子系统运行:
\shellcmd{bash}{ wsl -t <子系统名> }
\item 备份子系统:
\shellcmd{bash}{wsl --export <子系统名> <保存路径>}
例如:
\shellcmd{pwsh}{wsl --export Ubuntu-22.04 e:\ubuntu-22.04-wsl2.zip}
\item 注销子系统:
\shellcmd{bash}{wsl --unregister <子系统名>}
\item 恢复子系统:
\shellcmd{bash}{wsl --import <子系统名> <子系统安装路径> <子系统保存路径>}
例如:
\shellcmd{pwsh}{wsl --import Ubuntu-22.04 e:\wls2\ubuntu2204 e:\ubntu-22.04-wsl2.zip}
\item 修改默认登录用户:
\shellcmd{bash}{wsl --distribution Ubuntu-22.04 --user <user>}
或者:
\shellcmd{bash}{<子系统名>.exe config --default-user <默认用户名>}
例如:
\shellcmd{bash}{ubuntu2204.exe config --default-user <默认用户名>}
\end{enumerate}
\section{vhd 文件挂载}
\subsection{Windows 下用 WSL 工具}
\noindent{}使用 Microsoft Store 中的 WSL 可以直接挂载:
\shellcmd{bash}{wsl --mount --vhd <pathToVHD>}
例如:
\shellcmd{pwsh}{wsl --mount --vhd e:\wsl2\rk3588\rk3588.vhdx --partition 1 --name rk3588}
\subsection{linux 下用 qemu-nbd}
\noindent{}安装 qemu-nbd 工具:
\shellcmd{bash}{apt-get install qemu-utils}
加载 nbd 驱动:
\shellcmd{pwsh}{modprobe nbd nbds_max=64}
用 qemu-nbd 加载:
\shellcmd{bash}{qenum-nbd -c /dev/nbd0 /path/to/vhdx}
接下来就可以用 parted 工具查看或修改分区,用 mount 挂载文件系统等,总之就把 /dev/nbd0 当做一个磁盘进行使用。
\section{USB 设备共享}
在 windows 上安装 \href{https://github.com/dorssel/usbipd-win/releases}{usbipd-win}。使用方法可以参考这里:\\
\url{https://learn.microsoft.com/zh-cn/windows/wsl/connect-usb}
共享 usb 设备可以按以下步骤进行:
\begin{enumerate}[(1), nosep]
\item 通过以管理员模式打开 PowerShell 并输入以下命令,列出所有连接到 Windows 的 USB 设备。 列出设备后,选择并复制要附加到 WSL 的设备总线 ID:
\shellcmd{bash}{usbipd list}
\item 在附加 USB 设备之前,必须使用命令 usbipd bind 来共享设备,从而允许它附加到 WSL。 这需要管理员权限。 选择要在 WSL 中使用的设备总线 ID,然后运行以下命令。
运行命令后,请再次使用命令 usbipd list 验证设备是否已共享:
\shellcmd{pwsh}{usbipd bind --busid 2-1}
\item 若要附加 USB 设备,请运行以下命令。 (不再需要使用提升的管理员提示。)确保 WSL 命令提示符处于打开状态,以使 WSL 2 轻型 VM 保持活动状态。
请注意,只要 USB 设备连接到 WSL,Windows 将无法使用它。 附加到 WSL 后,任何作为 WSL 2 运行的分发版本都可以使用 USB 设备。
使用 usbipd list 验证设备是否已附加。 在 WSL 提示符下,运行 lsusb 以验证 USB 设备是否已列出,并且可以使用 Linux 工具与之交互:
\shellcmd{bash}{usbipd attach --wsl --busid 2-1}
\item 打开 Ubuntu(或首选的 WSL 命令行),使用以下命令列出附加的 USB 设备:
\shellcmd{bash}{lsusb}
\item 在 WSL 中完成设备使用后,可物理断开 USB 设备,或者从 PowerShell 运行此命令:
\shellcmd{bash}{usbipd detach --busid <busid>}
\end{enumerate}
\section{Windows 端口转发}
按下面的步骤进行设置:
\begin{enumerate}[(1), nosep]
\item 管理员权限启动windows powershell,运行如下代码。这里以设置80端口转发WSL的地址的80端口为例:
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{pwsh}
netsh interface portproxy add v4tov4 listenport=80 \
listenaddress=0.0.0.0 connectport=80 \
connectaddress=172.19.11.104 protocol=tcp
\end{minted}
\item 查看端口转发情况:
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{bash}
netsh interface portproxy show all
\end{minted}
\item 删除端口转发:
\begin{minted}[bgcolor=lightgray!30,fontsize=\scriptsize]{pwsh}
netsh interface portproxy delete v4tov4 listenport=80 \
listenaddress=0.0.0.0
\end{minted}
\end{enumerate}