之前一直使用我大爱的X230作为开发机,一直比较难受的是分辨率太低(最高1366*768), 然后屏幕素质也比较差,今年618入手了一部RedmiBook16锐龙版,下面记录一下我建设开发环境的过程。
先说一下我对环境的需求吧:
1. 代码开发一般都在linux环境,最好是centos
2. python3.7以上版本
3. IDE我习惯使用Pycharm和VsCode
4. 偶尔需要使用windows进行一些非代码类的工作
通常的选择有两种:
1. 虚拟机, 不管是centos下的win10虚拟机,还是win10下安装linux虚拟机,虚拟机运行时占据的大量系统资源都会造成机器的卡顿,毕竟咱的机器也不是很强力。
2. 双系统, 我之前一直选择这种方式,而且已经习惯了在centos的Gnome桌面下工作,缺点是切换系统时需要重启,并且在两个系统之间共享文件不方便。
下面是我新机(redmibook16)的配置信息--Win+R 运行dxdiag可以查看系统信息:
处理器是 AMD Ryzen 5 4500U with Radeon Graphics (6 CPUs), ~2.4GHz 这款处理器是AMD比较新的处理器,给我带来了不小的麻烦
内存 16384MB RAM 当时选择这款电脑就是看上了16G内存,又够便宜
双系统能不能行?
电脑原装系统是正版的win10家庭版,又赠送了正版的office,我一开始的想法还是双系统,准备就保留原装系统再安装一个CentOS,反正win10也不是常用的系统,家庭版凑合用吧,就不不改装我钟爱的企业版win10了。
尝试CentOS失败
于是尝试安装Centos,首先是用惯了的Centos7.2版本,然后就What了---
各种百度以后,基本可以判断是系统缺少驱动导致无法继续运行,更换了最新版本的CentOS8.2仍然提示这个错误,看来这台电脑是与Centos无缘了。
再试Ubuntu失败
然后我又尝试了Ubuntu的两个最新发行版本18.04和20.04,毕竟Ubuntu是针对桌面电脑的,而Centos主要针对服务器,对AMD平台的支持不如Ubuntu。结果喜人,我终于进入了Ubuntu的桌面,然而,高兴的太早了,很快我就发现了问题--主要有两点,因为这两点问题已经导致系统无法正常使用,就没有继续发掘。
1. 亮度始终在最高亮度,调节亮度的快捷键是可以使用的,数值也在变,只是屏幕的实际亮度不会变。
2. 网页上的视频无法播放,本地视频没有尝试
最终判断问题,仍然是显卡驱动问题。
寻找显卡驱动失败
我首先到小米的官网寻找驱动,结果当然是失败的,只有win10的驱动程序。不怕,我们还有amd的官网,于是我找到了---
https://www.amd.com/zh-hans/support/apu/amd-ryzen-processors/amd-ryzen-5-mobile-processors-radeon-graphics/amd-ryzen-5-4500u
然后我绝望了,官网也只有win10版本驱动
难道只能放弃?或者使用虚拟机?
在安装Ubuntu的时候,因为不熟悉安装流程,我把我原装的win10破坏了,此时,带着非常强烈挫败感的我,只好先重新安装win10系统,既然重装,当然选择我所钟爱的企业版Win10了
一番努力后,我的Win10企业版LTSC又上线了,各种驱动也装好了,首先还是来个打底的虚拟机尝试一下吧,如果这都不行,那就只能退货88了。Win+R 运行winver 命令可以查看win10系统的详细版本信息
所幸,还算顺利,Oracle的virtualbox装下去,centos顺利的跑起来了,毕竟16G内存,跑起来还不算卡,能接受。宝宝心里苦啊,难道就这样忍了吗?还是果断退货呢?这一晚上,我纠结的睡不着。
睡不着,就漫无目的的在百度上乱搜,然后有一个以前没接触过的东东映入了我的眼帘--WSL--这是什么东东?为什么搜linux的东西的时候总是会跑出来。(可能是因为我之前一直用centos,没怎么接触ubuntu,然后windows的wsl又没有centos,我以前搜索习惯用centos做关键字,竟然一直没有发现wsl这个东东)。
救世主来了,就是WSL!!!
wsl(Windows Subsystem for Linux--适用于 Linux 的 Windows 子系统)官方文档地址:https://docs.microsoft.com/zh-cn/windows/wsl/
wsl 目前有两个版本,wsl1 和 wsl2。wsl2 要求win10更新到版本 2004 的内部版本 19041 或更高版本,因为我用的是win10企业版LTSC 1809的版本,不满足WSL2的条件,此处就不讨论WSL2的内容了。
WSL安装
1. 先启用“适用于 Linux 的 Windows 子系统”可选功能,以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2. 重启计算机,从微软商店安装想要的linux分发版本。那么问题来了,win10企业版没有微软商店----好吧,先想办法安装个微软商店,还是要靠万能的搜索引擎啊。(有需要商店找不到的可以给我留言,我发给你。)
在微软商店搜索linux有100多条结果,免费的里面最眼熟的当然是ubuntu,支持同时安装多个不通版本,但是不能同时安装多个相同版本。搜索Centos发现只有收费版本,不太贵,有时间了我可能会试试。这段时间一直在用的就是Ubuntu18.04版本。
WSL与正常Linux的差别
下面是我使用一个多月总结的几点差别
1. wsl不能使用systemd相关的命令,也不能使用poweroff/reboot等命令,同样的,如果需要服务自启动,方式和正常的linux也不相同
2. 使用netstat命令获取不到网络相关信息
3. gdb生成不了内核转储文件(网上说是通过ulimit开启生成后,默认生成转储文件在程序目录下,但是找不到)
4. 生成不了共享内存
后面2点我也并不理解,毕竟内核的东西还是比较深的。
WSL下的服务自启动设置
1. 在wsl中创建或修改文件 /etc/init.wsl, 写入以下内容,需要启动的服务可以根据需要自行定义,命令最好先进行测试
#! /bin/sh
# 启动ssh服务
/etc/init.d/ssh restart
# 启动rredis服务
/etc/init.d/redis-server restart
# 启动mariadb服务 服务名mysql
/etc/init.d/mysql restart
# 启动Celery
/etc/init.d/celery restart
添加执行权限 添加以后可以执行下验证是否能打开需要的服务
sudo chmod +x /etc/init.wsl
2. 在windows中添加启动项:
win+R运行 shell:startup 进入启动目录 注意不要有空格
创建vbs文件,名称自定义.vbs,在文件中写入以下两行内容
Set ws = WScript.CreateObject("WScript.Shell")
ws.run "wsl -u root /etc/init.wsl start", vbhide
3. 重启系统,此时服务已经可以随win10启动一起启动了
WSL系统的桌面我还没研究过,不过通常服务器我们很少使用桌面系统,在开发时我们可以使用远程开发的方法,现在主流的IDE应该都能支持,下面简单介绍以下Pycharm
pycharm--tools菜单下有一个Deployment子菜单可以配置远程主机,需要配置Connection和Mappings
配置以后即可在本地和远程目录间同步代码。
同时,需要配置远程的Interpreter,这样就可以在远端执行代码了。
用了1个多月,感觉WSL比起双系统或者虚拟机来说还是有很多优势的,对系统资源的占用,不通系统的切换,系统间的文件通信都要方便很多。win10的硬盘是挂载在/mnt对应盘符下的,从wsl很方便的即可访问win10下的文件。