新浪博客

Windows11子系统Ubuntu22.04Unity开发环境

2023-08-09 21:49阅读:
系统更新换代喽~ 不想安装虚拟机,继续 WSL~
事隔多年,之前在 Windows10 下搭建的子系统 Ubuntu18.04,已经许久。
想到了当时在 Microsoft Store 中购买的 X410 - X Server for Windows,现在已经变更内购收取月费、年费的模式了...
真是物是人非,今天要在 Windowds11 下安装个 Ubuntu22.04,搭建个 Unity 开发环境。
WSL2 已经发展的很好了,不搞那多门门道道,咱这次都用原生环境来搞事情~

Windows 上安装 Linux 子系统

WSL1 和 WSL2 比较:
功能 WSL 1 WSL 2
Windows 和 Linux 之间的集成
启动时间短
与传统虚拟机相比,占用的资源量少
可以与当前版本的 VMware 和 VirtualBox 一起运行
TD>
托管 VM
完整的 Linux 内核
完全的系统调用兼容性
跨 OS 文件系统的性能
Windows11 运行 WSL2 所需条件
  • • WSL 2 确实利用了 Hyper-V 架构,但并不需要使用 Windows 11 专业版或者安装 Hyper-V 组件,WSL 功能支持所有 Windows 11 SKU。
  • • WSL 2 支持 x64 和 ARM 处理器。如果你在基于 ARM 的设备上使用它,需要使用具有 ARM 版本的 Linux,比如 Ubuntu。
  • 如果你的虚拟机软件支持嵌套虚拟化并启用了该功能,WSL 2 也可以在 Windows 内部的虚拟机中运行。

Windows 环境设置

打开 Linux 子系统功能Win11 设置 -> 启用或关闭 Windows 功能
Windows11子系统Ubuntu22.04Unity开发环境

需要安装箭头指向的这四个功能组件。安装重启的时候,记得进 主板BIOS 把虚拟化支持打开,否则后面是无法正常运行 Ubuntu 的。
  • 使用命令行设置以管理员权限启动 PowerShell
    # 启用虚拟机平台 下面两个语法运行任意一个都行
    Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    #
    启用 Linux 子系统功能 下面两个语法运行任意一个都行
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

    #
    开启 Hyper-V 服务
    bcdedit / set hypervisorlaunchtype auto
    # 关闭 Hyper-V 服务
    bcdedit / set hypervisorlaunchtype off


安装 Ubuntu


命令行安装 Ubuntu 22.04
可以在 Microsoft Store 安装 和 用命令行安装。
Microsoft Store 比较简单,之前的 WLS 课程中也讲到过,这里使用命令行,先看下有相关命令介绍:
# 安装 wsl
wsl --install

#
切换为 WSL 1
wsl --set-default-version 1
# 切换为 WSL 2
wsl --set-default-version 2

#
查看 wsl 版本
wsl -l -v
wsl -l --all -v

#
查看 wsl 在线支持的子系统
wsl --list --online

#
安装 wsl 子系统,以 ubuntu 为例
wsl --install -d Ubuntu-22.04

#
查看子系统状态
wsl --status

#
卸载 wsl 子系统
wsl --unregister Ubuntu-22.04

#
关闭 wsl 子系统,不用的时候想着关闭,不关闭大约会占用1-2G内存
wsl --shutdown

#
启动 wsl 子系统,在 cmd 中执行 bash 命令,可以启动 wsl 子系统
wsl

#
导出 Linux 发行版 tar 文件到 D盘
wsl --export Ubuntu-22.04 d:/wsl-ubuntu-22.04.tar
# 导入并安装 WSL2 D盘
wsl --import Ubuntu-22.04 d:/wsl-ubuntu-22.04 d:/wsl-ubuntu-22.04.tar --version 2

#
设置默认登录用户为安装时用户名
ubuntu2204 config --default-user ming.xu

Windows11子系统Ubuntu22.04Unity开发环境
上面演示了一下,查询、卸载、安装 Ubuntu 22.04 的过程,一气呵成!哈哈~
  • 相关错误:
    • 启动 Ubuntu 22.04 时候提示错误:WslRegisterDistribution failed with error: 0x800701bc
      • 出现这个 error 的原因是:wsl1 升级到 wsl2 之后,内核却没有升级,因此需要更新内核。
      • 解决方法:适用于 x64 计算机的 WSL2 Linux 内核更新包:、
      • https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

    • 启动 Ubuntu 22.04 时候提示错误:WslRegisterDistribution failed with error: 0x80370102
      • 出现这个 error 的原因是:没有开启虚拟化,其实前面已经讲到了这个问题,总结概论。
      • 解决方法:
      • Enable Hyper-V
      • Enable Hardware Virtualization
      • Enable Nested Virtualization & Change RAM Settings


  • 设置 Ubuntu 账号和密码
  • 《Windows10 安装子系统 Ubuntu18.04 Xfce图形界面》教程中,已经详细地讲过设置 Ubuntu 账号和密码。
  • 这里准备都使用 root 登录了,就不再建其他的 Ubuntu 账号和密码了。由于远程登录时需要密码,因此还是需要使用 passwd root 设置一下 root 的密码的。

  • Windows11 Ubuntu22.04 文件访问

    • 如何从 Windows11 访问 Ubuntu22.04 文件系统

    • 与在虚拟机中使用 Linux 不同,从 Linux 访问 Windows 文件很容易,反之亦然。
    • 打开「文件资源管理器」在左边的导航窗格中选择「Linux」。在 Windows 和 Linux 之间移动文件时,确保使用的是副本,而不是原始件。(一些文件类型存在兼容性问题,有时文件会损坏。)
    如何从 Ubuntu22.04 访问 Windows11 文件系统
    在 Linux bash shell 中,使用命令 cd /mnt/c/ 移动到根目录。
    然后使用ls命令列出目录和文件。可以看到它们都是 Windows 目录和文件。
    Windows11子系统Ubuntu22.04Unity开发环境

Windows 下 Ubuntu 的桌面连接

在 Windows 中可以使用 LINUX GUI APPS 运行应用程序,但是有些时候还是在 Linux 下看效果的,是很有必要的。
因此我还是选择,安装 Linux 图像界面,然后在操作系统中进行操作。
连接桌面之前,首先 Ubuntu 要有个图像界面。
Ubuntu 发行版本中可以根据自己的喜好安装 KDE、Gnome、xfce、lxde 等桌面环境。
个人比较喜欢 Xfce。它是一种快速,稳定且轻巧的桌面环境,非常适合在远程服务器上使用。
也可以使用 Gnome,Gnome 是 Ubuntu 的默认桌面上环境,也是多数发行版的默认桌面环境。
Gnome与xfce相比,xfce由于其轻巧,它可以安装在低端台式机上。Xfce优雅的外观,增强了用户体验,它对用户非常友好,性能优于其他桌面环境,它提供了许多可定制的接触点以供灵活使用。
Gnome与xfce相比,Gnome它具有简单但有效的用户界面。用户在屏幕上有更多动态的工作区域。它具有内置的恢复功能,可帮助用户保持工作的连续性非常适合初学者浏览所有功能并学习。它为开发着的应用程序的运行提供了一个完美的兼容平台。

Ubuntu 安装图形界面 Xfce4



  • 安装 Xfce4
    sudo apt update
    sudo apt install xfce4
    sudo apt install -y xfce4-goodies


  • 在安装 xfce4 时候提示错误:/usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
  • 解决方法:
  • 分析原因,/usr/lib/wsl/lib/ 目录下都是文件而不是链接,又因为该目录只读,因此只能将在其他目录操作,具体步骤如下:
    cd /usr/lib/wsl
    sudo mkdir lib2
    sudo ln -s lib/* lib2
    sudo ldconfig

    注意更改链接路径之后,以后更新驱动之后需要重新链接,否则 lib2 中和 lib 中不一致从而导致 wsl 中不可使用 windows 下的驱动需要将 /etc/ld.so.conf.d/ld.wsl.conf 中的 /usr/lib/wsl/lib 改为 /usr/lib/wsl/lib2
    # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
    # [automount]
    # ldconfig = false
    /usr/lib/wsl/lib2

    但是设置之后重启 wsl 会自动还原 /etc/ld.so.conf.d/ld.wsl.conf 文件,如果不想还原,还需要修改文件 /etc/wsl.conf
    [boot]
    systemd=true
    [automount]
    ldconfig = false

  • 我们用 cat 命令看一下这两个文件的修改内容如下:
  • Windows11子系统Ubuntu22.04Unity开发环境

Ubuntu 安装远程桌面 xrdp

  • 安装 xrdp
    # 安装xrdp
    sudo apt install -y xrdp

  • 配置 xrdp
    • 由于xrdp安装好后默认配置使用的是和 Windows 远程桌面相同的 3389 端口,为了防止和 Windows 系统远程桌面冲突,建议修改成其他的端口 3390
    • 需要将 /etc/xrdp/xrdp.ini 文件中的 更改为 port=3390
      # 配置xrdp端口
      sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini

    • 需要将当前用户指定登录 session 类型,注意这一步很重要,如果不设置的话会导致后面远程桌面连接上闪退。
    • 新建文件 ~/.xsession 添加一行 xfce4-session
      # 向xsession中写入xfce4-session
      sudo echo xfce4-session >~/.xsession

    • 由于 WSL2 里面不能用 systemd ,所以需要手动启动:
      # 启用远程桌面
      sudo /etc/init.d/xrdp start
      * Starting Remote Desktop Protocol server [ OK ]

      #
      关闭远程桌面
      sudo /etc/init.d/xrdp stop
      * Stopping Remote Desktop Protocol server [ OK ]


Windows 通过远程桌面连接 Ubuntu

桌面连接也有多个选择,可以通过 Windows 远程桌面连接 ,也可以使用 X Server Window
之前我选择的 X Server Window 方式。我使用的 X410, 也可以使用 VcXSrv 或者 Xming
之前购买的 X410 真让人心碎,已经更改为月费、年费模式了,当然官网也可以购买单机独立版,不过也是小贵,需要 $89.99。
果断放弃了,反而觉得 Windows 远程桌面连接 很香。
  • 远程桌面连接使用 Windows 远程桌面连接 访问,就比较简单了。
  • 运行 mstsc 命令启动 远程桌面连接,地址栏输入 localhost:3390,连接即可。
  • Windows11子系统Ubuntu22.04Unity开发环境
  • 输入WSL2 中使用的账号密码,我用 root 登录的。
  • Windows11子系统Ubuntu22.04Unity开发环境
  • 开启音量控制时提示: Establishing connection to PulseAudio. Please wait...解决方法:
    pulseaudio --check
    pulseaudio -D

  • 输入法安装:
    # 安装 输入法
    sudo apt install ibus
    # 安装 拼音
    sudo apt install ibus-pinyin
    # 重启 ibus 输入法
    ibus-daemon -d -x -r

    启动输入法错误提示:
Windows11子系统Ubuntu22.04Unity开发环境
  • 解决方法:
  • 译:IBus 已启动!若还不能用 Ibus,请您将以下的三行代码加到 $HOME/.bashrc,再重新登录。
    export GTK_IM_MODULE=ibus
    export XMODIFIERS=@im=ibus
    export QT_IM_MODULE=ibus

    注意:
  • 虽然 Ibus 使用一个后台程序,但不是被 systemd 管理的那种后台程序:
  • 普通用户也可以运行,当登录时,会自启动。
  • 若 ibus 尚未启动,
  • 将那些'export'的代码复制到$HOME/.xprofile,
  • 将这行代码加到该文件:'ibus-daemon -drx'
  • 再重新登录。这时输入法便可以正常运行了。

  • • Ubuntu 中文支持
  • 安装中文支持在《Windows10 安装子系统 Ubuntu18.04 Xfce图形界面》也详细地讲解过。
  • 如果有需要的话,自行安装即可,因为后面使用浏览器浏览中文网站的时候,都是小方块,因此我安装了中文支持。

Ubuntu 上安装 Unity 开发环境

安装 Unity



  • 安装浏览器 Microsoft Edge
  • 由于运行浏览器的时候会提示错误:Failed to execute default web browser. input/output error
  • UnityHub 登录的时候,正需要浏览器的支持。
  • 因此需要选择一个浏览器,个人一直比较喜欢 Microsoft Edge ,因此就选择它了~

  • 官网下载地址:https://www.microsoft.com/zh-cn/edge/download/insider?platform=linux
  • 我下载的是开发版本:microsoft-edge-dev_116.0.1938.16-1_amd64.deb
  • 安装提示:
    sudo dpkg -i microsoft-edge-dev_116.0.1938.16-1_amd64.deb
    提示依赖:fonts-liberation 和 libu2f-udev 。
    sudo apt install -y fonts-liberation
    sudo apt install -y libu2f-udev

    在Ubuntu 中用 apt 安装软件,系统报出 Unmet dependencies 错误。提示错误:Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
  • 解决方法:
    sudo apt --fix-broken install
    sudo apt-get update
    sudo apt-get upgrade

    安装后,在 root 账户下是无法运行的,很烦...
  • 如果是非 root 账号应该是不存在问题的。

  • 运行的时候提示错误:ERROR:zygote_host_impl_linux.cc(90)] Running as root without --no-sandbox is not supported.
  • 解决办法:如果在终端启动下运行的,比较容易,添加 --no-sandbox 参数即可。
    microsoft-edge-dev --no-sandbox

  • 问题是在开始菜单栏中、默认浏览器中如何设置?

  • 开始菜单栏
    要找到快捷图标的根源位置,目录 /usr/share/applications/
    Windows11子系统Ubuntu22.04Unity开发环境
    在属性中,设置添加 --no-sandbox 参数。
    Windows11子系统Ubuntu22.04Unity开发环境
    默认浏览器
    这个是很有必要的,因为在 UnityHub 点击登录时,会打开默认浏览器访问登录界面。
    默认浏览器的设置,在默认应用程序中来设置:
    Windows11子系统Ubuntu22.04Unity开发环境
  • 这样就可以随时打开任意打开 Microsoft Edge 畅游网络了。

  • 安装 UnityHub
    • 要在 Ubuntu Linux 发行版上安装 UnityHub,您需要添加 UnityHub 存储库以及公共签名密钥,以验证软件包的完整性。
      wget -qO - https://hub.unity3d.com/linux/keys/public | gpg --dearmor | sudo tee /usr/share/keyrings/Unity_Technologies_ApS.gpg > /dev/null
    • 要添加 UnityHub 存储库,您需要在终端中输入一个条目。
    • 运行以下命令以添加 UnityHub 存储库:/etc/apt/sources.list.d
      sudo sh -c 'echo 'deb [signed-by=/usr/share/keyrings/Unity_Technologies_ApS.gpg] https://hub.unity3d.com/linux/repos/deb stable main' > /etc/apt/sources.list.d/unityhub.list'
    • 更新包缓存并安装包:
      sudo apt update
      sudo apt-get install unityhub

    • 要从系统中删除 UnityHub,请运行以下命令:
      sudo apt-get remove unityhub
  • 安装 Unity 有了 UnityHub ,安装 Unity 就轻松加愉快了~
    直接上图 展现一下成果:
    Windows11子系统Ubuntu22.04Unity开发环境

安装 IDE

万事俱备,只欠东风~
有了 Unity,还需要写代码的 IDE,这里选择 Rider 和 Visual Studio Code。
  • 安装 Rider
  • 官网下载地址:https://www.jetbrains.com/rider/
  • 下载文件:JetBrains.Rider-2023.1.3.tar.gz
  • 是个压缩包,看看如何安装它。
  • 解压安装:
    sudo mkdir /opt/jetbrains
    sudo tar zxf JetBrains.Rider-2023.1.3.tar.gz -C '/opt/jetbrains/'

    创建快捷方式,终端执行:
    cat > /usr/share/applications/JetBrains.Rider-2023.1.3.desktop <<EOL
    #!/usr/bin/env xdg-open
    [Desktop Entry]
    Version=1.0
    Type=Application
    Name=JetBrains Rider
    Icon=/opt/jetbrains/JetBrains Rider-2023.1.3/bin/rider.svg
    Exec='/opt/jetbrains/JetBrains Rider-2023.1.3/bin/rider.sh' %f
    Comment=A cross-platform IDE for .NET
    Categories=Development;IDE;
    Terminal=false
    StartupWMClass=jetbrains-rider
    EOL

    方便吧,直接就可通过快捷方式启动 Rider 了。

  • 安装 Visual Studio Code
  • 官网下载地址:https://code.visualstudio.com/
  • 下载文件:code_1.80.0-1688479026_amd64.deb
  • 命令安装:
    sudo dpkg -i code_1.80.0-1688479026_amd64.deb
    OK,安装完成!
  • 运行 vs code ,也存在沙箱问题,跟浏览器的解决方案一致,需要添加 --no-sandbox 参数。
至此,整个开发环境的安装算是完成了~
Windows11子系统Ubuntu22.04Unity开发环境

我的更多文章

下载客户端阅读体验更佳

APP专享