ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Win10下用WSL安装Ubuntu 18.04并设置中文全攻略

Win10下用WSL安装Ubuntu 18.04并设置中文全攻略 Win10里跑Linux最省事的方案就是WSL也就是Windows Subsystem for Linux。不用装虚拟机不用折腾双系统直接在Windows应用商店装一个Ubuntu 18.04就能拥有一个原汁原味的Linux命令行环境。这篇我重点讲两件事怎么从商店把Ubuntu 18.04装好以及装完之后怎么把系统设置成中文界面。为什么单独提18.04因为直到今天很多学校课程、开源项目文档、生产环境用的还是这个长期支持版本LTS它的依赖库和工具链相对老但特别稳适合跑旧代码、编译嵌入式项目、学Linux基础。这个教程适合谁适合刚接触WSL的新手也适合之前装过但没成功的折腾党。我会把从环境准备到初始化配置、再到中文设置的完整过程全部拆开讲包括我这些年踩过的坑和总结出来的经验保证你能顺顺利利装完。1. 安装前的准备把WSL的大门先打开1.1 为什么推荐应用商店版而不是自己下载镜像很多人第一次知道WSL可能是在网上看到有人说去下载一个rootfs镜像手动导入或者用命令行工具直接指定版本安装。这些方式不是不行但对于绝大多数人来说应用商店版是最省心、最不容易出错的一条路。为什么这么说第一个原因是微软官方维护更新商店里搜出来的是官方发布的App不存在什么第三方魔改版安全性和稳定性有保障。第二个原因是安装包体积很小Ubuntu 18.04的商店安装包大概只有几十MB下载速度很快不用像虚拟机镜像那样动辄几个GB。第三个原因是商店版安装完成之后系统会自动帮你注册好WSL的发行版信息以后管理、卸载、重置都非常方便不需要手动去清理注册表或者删除文件。当然也有人说商店版不能自定义安装位置确实有这个限制。但说实话对于日常使用来说默认位置放在C盘完全够用。如果C盘空间紧张后面我会说一个通过导出导入来迁移的做法比手动改商店版位置更安全。1.2 开启WSL功能这一步不做就是白忙活装商店版之前必须先确保Windows的WSL功能已经开启。这一步很多人会漏掉结果商店下载完了打开就报错。开启方法有两种你选一个顺手的来。方法一图形界面开启打开“控制面板”找到“程序和功能”点击左侧的“启用或关闭Windows功能”在弹出的列表里往下找勾选“适用于Linux的Windows子系统”然后点确定系统会提示重启电脑重启即可。方法二PowerShell命令开启右键开始菜单选择“Windows PowerShell管理员”执行下面这行命令dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart执行完看提示如果提示需要重启就重启一次。如果没有提示需要重启那也可以继续。我个人的习惯是无论提不提示都重启一次省得后面出现莫名其妙的报错。这里要提一个非常关键的点如果你用的是Win10较新的版本系统里可能默认已经支持WSL2。WSL2和WSL1的区别简单说就是——WSL1是一个系统调用转换层把Linux的系统调用翻译成Windows的调用文件访问速度比较快但有些Linux内核特性支持不了WSL2则是在轻量级虚拟机里跑了一个完整的Linux内核兼容性更好但也因此访问Windows文件系统的速度会慢一些。对于Ubuntu 18.04这种老版本来说如果你不做Docker、不做需要内核模块的开发用WSL1就够了。你要是想升级到WSL2把默认版本设置改一下就行后面我会提一句。1.3 确认系统版本和硬件要求WSL对Windows版本有要求Win10的系统内部版本号要在16215以上并且是64位系统。怎么看版本按住WinR输入winver回车就能看到当前系统的版本号。如果你用的是老旧的Win10长时间没更新建议先检查Windows更新把补丁打齐了再装。否则有可能出现商店里搜不到Ubuntu 18.04或者安装之后启动闪退的情况。另外如果电脑上装了第三方安全软件特别是带主动防御功能的那种建议在安装和首次初始化的时候先暂时退掉或把WSL相关进程加入白名单。我遇到过不止一次安全软件把WSL的内核进程拦截了导致子系统启动黑屏或者直接报错排查了半天最后发现是软件拦截。2. 商店下载与首次启动5分钟完成安装2.1 在应用商店中搜索并安装Ubuntu 18.04准备工作做完接下来就是实际动手了。打开开始菜单里的Microsoft Store在搜索框输入Ubuntu 18.04你会看到好几个相关结果。认准发布者是Ubuntu或者Canonical Group Limited的那一个这个是官方发布。有些第三方做的Linux发行版界面看着名字差不多但不是官方维护的装了可能有问题不建议碰。点击进入详情页然后点“获取”或“安装”按钮剩下的就是等待下载完成。这个过程中不需要任何手动干预下载速度取决于网速快的话一两分钟内就好了。安装完成后开始菜单里会出现一个Ubuntu 18.04图标同时在应用商店里那个按钮会变成“启动”。先别急着点如果你刚才没有重启电脑现在务必先重启一次确保WSL功能完全生效。2.2 首次启动创建用户和密码重启之后点击Ubuntu 18.04图标会弹出一个命令行窗口。第一次启动时系统会提示Installing, this may take a few minutes...这是在解压和初始化文件系统耐心等一两分钟看到下面这行提示就说明初始化完成了Please create a default UNIX user account.这里会让你输入用户名和密码。注意几个细节用户名不要用大写字母也别带空格全部小写字母加数字最稳妥。我之前见过有人设了个带大写字母的用户名导致后面有些软件路径识别出现问题。密码输入的时候屏幕上不会显示任何字符这是Linux的正常行为别以为键盘坏了正常盲打输入两遍确认就行。创建完之后你会看到类似这样的提示符usernameDESKTOP-XXXXXX:~$到这里Ubuntu 18.04子系统已经成功安装并可以正常使用了。你可以随便输几个Linux命令玩玩比如pwd、ls、whoami感受一下真实的Linux环境。2.3 快速验证子系统是否安装成功安装完了怎么确认这个子系统真的装好了有几个方法。第一个方法在Windows的PowerShell或CMD里执行wsl -l --running如果Ubuntu 18.04正在运行你会看到它的名字和运行状态。第二个方法查看列出的所有发行版wsl --list --verbose这里会显示你安装了哪些WSL发行版以及当前的WSL版本是1还是2。如果你想要更完整的Linux内核支持可以在PowerShell里先把默认版本设成WSL2wsl --set-default-version 2然后把现有的这个Ubuntu 18.04转换过去wsl --set-version Ubuntu-18.04 2这个转换过程需要下载一个内核更新包时间可能比较久但转完之后系统会好使很多特别是运行需要系统调用的程序时不容易报错。第三个方法直接在Ubuntu子系统里查看版本信息lsb_release -a输出里能看到Distributor ID是UbuntuRelease是18.04说明系统版本正确。3. 让Ubuntu说中文语言设置全流程3.1 先更新软件源别卡在语言包下载上系统装好之后第一件事不是急着切中文而是先把软件源更新一下。因为默认的软件源指向的是官方Ubuntu服务器从国内访问速度一言难尽下载语言包这种事会慢到让人想砸键盘。操作方法是编辑软件源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo nano /etc/apt/sources.list把文件里的源地址换成国内镜像。如果你不想手动编辑也可以直接用sed命令替换比如换成清华源sudo sed -i s//.*archive.ubuntu.com//mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list sudo sed -i s//security.ubuntu.com//mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list换完之后执行更新sudo apt update sudo apt upgrade -y这个过程会拉取最新的软件包列表并且升级系统自带的软件第一次执行可能需要几分钟中间会停在一个问你是否继续的界面直接回车确认就行。升级完成后再做语言设置就会顺畅很多。3.2 安装中文语言包并切换全局语言Ubuntu 18.04的最小系统默认只带英文语言包所以必要的一步是手动安装中文语言包。在终端里执行sudo apt install language-pack-zh-hans -y这个包安装的是简体中文语言支持。装完之后查看系统当前的语言设置locale如果输出里LANG不等于zh_CN.UTF-8就说明还没切过去。执行下面的命令修改全局语言配置sudo update-locale LANGzh_CN.UTF-8改完之后重新启动Ubuntu子系统关掉窗口重新打开或者输入exit退出再打开再执行locale你会发现LANG已经变成了zh_CN.UTF-8系统提示信息也会变成中文。这里有个坑要特别提醒如果你只是想看电影时期望终端里的中文能正常显示只做上面这一步就够了。但如果你是想在图形界面里看到完整的中文菜单和界面光装language-pack还不够还需要安装中文字体否则界面上会显示一堆方框和乱码像什么口口口这种。补一条命令sudo apt install fonts-noto-cjk -yNoto CJK字体是Google和Adobe联合推出的中文字体在Linux下的显示效果非常清楚装完之后图形界面的中文渲染就能正常了。3.3 输入法方案让子系统里能打中文如果你属于那种需要在WSL里直接输入中文的人比如写中文笔记、发中文邮件那还需要额外配一个输入法框架。Ubuntu下最常用的是fcitx和ibus。我个人的经验是fcitx更轻量跟WSL配合的毛病也少一些。安装fcitx和拼音输入法sudo apt install fcitx fcitx-googlepinyin -y装完之后需要设置一下输入法环境变量。编辑 ~/.bashrc 文件nano ~/.bashrc在文件末尾追加这几行export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx保存退出重新打开终端执行fcitx 然后按CtrlSpace就能切换中英文输入了。如果你用的是WSL2并且配合了Windows的图形界面方案比如安装了VcXsrv或者用了Windows Terminalfcitx的窗口也能正常弹出来。3.4 终端中文字体与乱码处理很多人在WSL里遇到中文乱码其实不是系统没设置好而是Windows终端本身的默认字体不支持中文。用过老版本CMD窗口的人应该深有体会中文全是框框。解决办法很简单如果你用的是Windows Terminal微软商店里可以免费下载直接在设置里把终端字体改成微软雅黑或者等距更纱黑体这类中文字体就行。如果用的是Ubuntu 18.04自带的终端窗口右键窗口标题栏选择属性在字体选项卡里选择带中文支持的字体比如NSimSun或者Microsoft YaHei Mono中文就能正常显示了。另外如果你在子系统里用vim查看中文文档发现显示乱码可以在vim里执行:set encodingutf-8 :set termencodingutf-8或者直接编辑/etc/vim/vimrc添加set fileencodingsutf-8,gbk,gb2312这样打开GBK编码的中文文件也不会乱码了。这个小技巧很实用因为从Windows那边复制过来的文档经常是GBK编码的。4. 日常使用的实操经验与问题排查4.1 安装完成后的几项基础配置建议装好WSL之后我建议先把下面这几件事做了能让后续使用体验好很多。第一设置root密码。虽然你创建了普通用户但有时候sudo操作还是需要root权限的而且某些开发工具会要求你直接以root身份运行。执行sudo passwd root设置一个root密码以后如果需要切换到root直接su root就可以。第二安装一些基础工具。Ubuntu 18.04的最小安装里很多常用命令都没有比如网络请求用的curl、搞代码用的git、编译用的build-essential。一条命令全安排上sudo apt install curl wget git build-essential -y这些工具属于那种平时不觉得需要的时候发现没装就特别耽误事的类型。第三如果C盘空间紧张可以考虑把整个发行版迁移到其他盘。方法是用wsl命令导出再导入。先在PowerShell里执行wsl --export Ubuntu-18.04 D:\ubuntu18.tar导出完成后注销原来的系统wsl --unregister Ubuntu-18.04再导入到新位置wsl --import Ubuntu-18.04 D:\WSL\Ubuntu18 D:\ubuntu18.tar注意导入之后默认会以root用户登录你刚才设置的那个普通用户信息还在系统里只需要进系统后用命令切换即可。这个方法比网上那些修改商店版安装位置的教程安全得多不会破坏系统文件。4.2 跨系统文件访问与Windows路径互操作WSL有一个非常方便的特性就是能直接访问Windows的文件系统。在Ubuntu里Windows的C盘挂载在/mnt/cD盘挂载在/mnt/d比如你想读D盘下的某个项目文件夹cd /mnt/d/projects/myproject这样你在Windows下开发、在Linux下编译的工作流就能无缝衔接了。反过来Windows里也能访问WSL的文件系统。在资源管理器的地址栏输入\\wsl$\Ubuntu-18.04回车就能看到整个Linux文件系统包括/home目录下的用户文件。这个功能非常适合用来快速把Linux里的文件拖到Windows桌面。不过要提醒一句跨系统访问文件的时候千万别直接从Windows侧去修改Linux子系统里的文件权限或者用Windows的记事本编辑Linux里的文件。我说过不止一次这样做很容易搞坏文件权限导致Ubuntu里的某些服务启动失败。正确的做法是由Linux那边对文件进行操作Windows这边只做查看和拷贝的工作。4.3 安装过程中常见的错误与解决办法速查我遇到过很多人卡在安装过程的某一环然后到处发帖求助其实大部分问题都是可以预料到的。下面这几个是我整理的高频问题。错误一安装时提示0x80070003。这个错误通常出现在从商店安装或者启动Ubuntu的时候原因是Windows功能未开启或者系统更新未完成。解决办法是重新检查适用于Linux的Windows子系统是否勾选同时确认系统已更新到最新版本。可以先去Windows Update设置里检查补丁再重启一次。错误二首次启动卡在Installing界面一直不动。这种情况多半是网络问题系统在下载某个初始化组件时连不上服务器。可以先把网络切换到稳定的网络环境或者暂时关闭防火墙和第三方安全软件然后再试。如果还是不行可以尝试在商店里把Ubuntu 18.04卸载重新获取安装。错误三启动后直接闪退没有任何提示。闪退的原因比较复杂最常見的是Windows版本过旧。另一个常见原因是没有以管理员身份运行PowerShell或CMD。还有可能是系统里已经有冲突的WSL版本需要用wsl --list查看一下情况。如果实在解决不了就把WSL功能关闭重启再重新打开。错误四执行sudo apt update时提示Unable to locate package。这个是因为软件源列表里没有对应的包索引执行一下sudo apt update刷新索引再试就好了。错误五想删除Ubuntu 18.04重新装。在PowerShell里执行wsl --unregister Ubuntu-18.04这会彻底删除子系统及其所有文件之后可以在商店里重新安装。注意这个是删除操作不能恢复执行前想清楚。4.4 一些值得一试的日常玩法WSL绝对不只是个装来玩一下的玩具。我身边不少同事的日常开发就是在WSL里搞的给大家分享几个我比较推荐的用法。第一个是用WSL搭建本地开发环境。比如把MySQL、Redis、Python、Node.js这些直接装在Ubuntu里在本机开发调试的时候数据和配置都在Linux环境下跟生产环境保持一致不会出现Windows下好好的一上服务器就出问题的尴尬。第二个是拿来跑Linux shell脚本。很多在Windows下没法直接跑的.sh脚本放到WSL里瞬间就能跑。我在Windows上处理一些批量文件重命名的需求就是用WSL里的shell脚本搞定的比写bat批处理爽太多。第三个是配合Docker用。如果你升级到了WSL2可以直接在Ubuntu里安装Docker引擎不需要安装Docker Desktop用原生的Docker体验内存占用更小。对于需要跑容器化服务的人来说这套组合很舒服。第四个是拿来学习Linux命令和运维知识。WSL可以随时重置、随时重装完全不担心折腾坏了系统。我学vim操作、学shell编程、学网络配置的时候全是在WSL里练的比自己搞台云服务器成本低多了。4.5 中文设置后的一些小细节很多人设完中文之后发现有些地方还是英文比如man手册、某些软件的输出信息。这其实是正常的因为你装的中文包只覆盖了系统核心组件的翻译。要让更多软件显示中文可以执行sudo apt install manpages-zh -y装一下中文man手册。另外系统里有些命令的提示信息本身就是英文写死的跟语言环境无关这种没法改也不用纠结。还有一个小细节如果你把locale设成了中文但某些开发工具比如某些老版本的GCC的编译输出会出现乱码那是因为工具内部用的还是英文locale。这时候可以在用户配置里单独设置工具的运行环境或者干脆保持LANGC只让系统信息显示中文。这个属于具体环境的微调用到的时候再说。5. 写在最后的几句心得WSL这个东西我刚接触的时候也觉得不就是个玩具吗但用久了才感受到它真正的价值。它让Windows用户可以无障碍地学习和使用Linux不必为了跑一个简单的命令就去装一个几百GB的虚拟机也不用为双系统重启浪费时间。特别是对于18.04这个版本虽然它已经是很早的版本了但它的稳定性和兼容性是很多老项目的首选这也是为什么我坚持推荐它的原因。根据我的实际经验装WSL和设置中文这个过程中80%以上的问题都出在没有确认功能是否开启、系统是否更新、网络是否正常这几个基础环节上。所以如果你遇到了麻烦不要急着上网搜各种高级解法回去把基础步骤一步一步重做一遍多半就能解决。希望这篇教程能帮你顺利用上Ubuntu 18.04子系统在里面找到Linux的自由和乐趣。
返回列表