Win10下安装WSL(Windows Subsystem for Linux)
启用WSL(Windows Subsystem for Linux)
管理员权限运行powershell并运行下面的命令
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
或者:控制面板->程序和功能->启用或关闭Windows功能->勾选 适用于Linux的Windows子系统
然后,重启计算机
在Microsoft Store中搜索下载安装WSL
C:\Program Files\WindowsApps\Microsoft.WindowsStore_22410.1401.4.0_x64__8wekyb3d8bbwe\WinStore.App.exe
通常,对最新Ubuntu版本的支持到下一个版本就会停止。注:每6个月发布一次Ubuntu
对于稳定性和可持续性而言,是一个大问题。为了解决这一问题,官方提供了LTS(Long Term Support,长期支持)版本,有更长的升级周期。
运行Ubuntu 24.04.1 TLS
C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu24.04LTS_2404.1.24.0_x64__79rhkp1fndgsc\ubuntu2404.exe
C:\WINDOWS\system32\wsl.exe ~ -d Ubuntu-24.04 cloud-init status --wait >/dev/null 2>&1
ubuntu配置
ubuntu2404.exe /?
Launches or configures a Linux distribution. Usage: <no args> Launches the user's default shell in the user's home directory. install [--root] Install the distribuiton and do not launch the shell when complete. --root Do not create a user account and leave the default user set to root. run <command line> Run the provided command line in the current working directory. If no command line is provided, the default shell is launched. config [setting [value]] Configure settings for this distribution. Settings: --default-user <username> Sets the default user to <username>. This must be an existing user. help Print usage information and exit.
ubuntu2404.exe config --default-user root // 以后再运行ubuntu2404,则会默认以root登陆
当前windows系统的各个磁盘会挂载到mnt目录中
设置字体(Font)和字符编码(CodePage)
注:CodePage为437,表示美国英语
936 -- GBK(一般情况下为默认编码) 437 -- 美国英语 65001 -- utf-8 1200 -- utf-16 1201 -- utf-16(Big-Endian) 12000 -- utf-32 12001 -- utf-32(Big-Endian)
执行wsl或bash命令
在cmd命令行窗口中,执行wsl或bash也可以
注:执行exit可退出到命令行窗口
wsl [command]或者bash -c [command]
使用wslconfig命令来管理WSL实例
wslconfig /list
适用于 Linux 的 Windows 子系统分发版: Ubuntu-24.04 (默认)
wslconfig /setdefault <DistributionName> // 设置默认运行的linux系统为DistributionName
wslconfig /unregister <DistributionName> // 当系统出现问题,我们可以卸载后重新安装。如:wslconfig /unregeister Ubuntu-24.04
安装软件
安装cmake:apt install cmake
注:安装cmake失败,某些下载源不通
配置国内镜像源
这是因为镜像源除出了问题,一般都会推荐使用国内的镜像源,比如163或者阿里云或者清华大学的镜像服务器 (强烈建议使用清华镜像)
清华镜像源官网:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 注:通过cat /etc/issue可以查看当前系统的版本,如Ubuntu 24.04.1 LTS
将下列文本添加到/etc/apt/sources.list文件里
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse # 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换 deb http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse deb-src http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse
修改镜像源之后,需要执行以下命令来重新更新:
sudo apt-get update
sudo apt-get upgrade
配置阿里云DNS
如果执行更新后,下载仍然报错,问题在于DNS没有配置好
解决方法是在/etc/resolv.conf中添加:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.1.1 #这里用的是阿里云的DNS服务器 nameserver 223.5.5.5 nameserver 223.6.6.6
回车符\r问题
./build.android.arm64.sh: line 6: $'\r': command not found ./build.android.arm64.sh: line 46: syntax error: unexpected end of file
原因是Ubuntu等linux系统上的回车符为\n,windows上为\r\n,所以对\r不能识别,需要将windows上的回车符转成linux上的
缩写 | 全称 | ASCII转义 | 说明 |
---|---|---|---|
CR | Carriage Return | \r | 回车,Mac的换行符 |
LF | Linefeed | \n | 换行,Unix\Linux的换行符 |
CRLF | Carriage Return & Linefeed | \r\n | 回车并换行,Windows的换行符 |
解决方法:
① 安装apt-get install dos2unix
② 执行dos2unix build.android.arm64.sh
WSL系统上的PATH变量
echo $PATH // 输出如下
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/e/VulkanSDK/1.3.243.0/Bin:/mnt/c/Python27/:/mnt/c/Python27/Scripts:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/TortoiseSVN/bin:/mnt/e/Program Files/TortoiseGit/bin:/mnt/g/IncrediBuild:/mnt/e/Qt/Qt5.14.1/5.14.1/msvc2017_64/bin:/mnt/c/Program Files/dotnet/:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/xmake:/mnt/e/Program Files/LLVM/bin:/mnt/c/Program Files/CMake/bin:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/e/Windows Kits/10/Windows Performance Toolkit/:/mnt/e/Program Files/Git/cmd:/mnt/e/NVPACK/android-sdk-windows/extras/android/support:/mnt/e/NVPACK/android-sdk-windows/build-tools:/mnt/e/NVPACK/android-sdk-windows/platform-tools:/mnt/e/NVPACK/android-sdk-windows/tools:/mnt/e/NVPACK/gradle-4.1/bin:/mnt/e/NVPACK/apache-ant-1.8.2/bin:/mnt/e/Android_SDK_update/android-ndk-r21e:/mnt/c/Users/nicochen/AppData/Local/Microsoft/WindowsApps:/mnt/e/MinGW/bin:/mnt/e/Programs/Microsoft VS Code/bin:/mnt/g/svn/vcpkg:/mnt/g/svn/vcpkg/installed/x64-windows/bin:/mnt/e/Android_SDK_update/TencentKona-11.0.25.b1/bin:/mnt/f/ModenVulkan/glfw-3.3.8.bin.WIN64/lib-vc2019:/mnt/f/Tools/SysinternalsSuite:/mnt/c/Users/nicochen/.dotnet/tools:/mnt/e/Program Files/Huawei/DevEco Studio/bin:/snap/bin
注:会将Win10的PATH路径也添加进去
参考
WSL(Windows Subsystem for Linux)的安装与使用
ubuntu 执行apt-get update报错Failed to fetch
Unix\Linux 执行 shell 报错:“$'\r': 未找到命令” 的解决办法