提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
很长一段时间WSL2的启动方式并不是systemd,由于ubuntu、debian、centos等一众分支都切换到systemd了,导致使用起来有些不方便,之前一个大神演示了wsl2上启用systemd,我按照他说的做成功了,但是这个方法并不完美,它会导致wsl-gui不能使用,要知道wsl2的一个重磅功能就是gui,有没有方法能既使用systemd,又保留systemd呢?别急,两行配置叫你解决,请仔仔细细看完,最好不要跳过,不然可能引发不可挽回的错误。
systemd即为system daemon,是linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替常用的System V与BSD风格init程序。
与多数发行版使用的System V风格init相比,systemd采用了以下新技术: (1) 采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能; (2) 用Cgroups代替PID来追踪进程,因此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
这个不用我多说了吧,数据无价,一旦操作失误可能数据就永远丢了。这里有两种方法教你备份数据。
这是最简单的方法了,但是绝对有效。使用tar+gzip或者zip等工具将数据归档压缩并拷贝出来。或者直接干脆只归档不压缩。
tar -zcf backup.tar.gz <你的目录>
这个方法我在我的另一篇博客里详细介绍了,将整个分支备份还原。优点是两句话搞定,数据和系统配置原封不动保存下来,推荐这个方法。
WSL2备份还原
方法很多,这里介绍最简单常用的方法,主要还是备份,切记!!!
我先贴出我的内核版本,我这个内核版本成功了,其它的由于时间问题没有一一尝试,如果有问题可以在下面评论,我们一起看下。
Linux DESKTOP-G21E46A 5.15.68.1-microsoft-standard-WSL2 #1 SMP Mon Sep 19 19:14:52 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
我习惯性地把内核版本升级到最新,所以很多测试都是基于内核最新版的。
如果和我的内核一样就不用这个步骤了,如果不一样就按照下面的操作来。
wsl --shutdown #杀死分支
接下来的操作需要administrator权限(俗称管理员权限),先使用管理员权限打开一个powershell,然后输入下面的指令等待升级完成,如果失败检查网络问题,或者多试几次。
wsl --update
在/etc/下面增加一个wsl.conf文件,这个操作需要sudo权限,文件里面输入下面的内容:
[boot]
systemd=true
保存退出,并执行wsl --shutdown,重新进入wsl
切记一个字都不要错,否则可能导致wsl进不去,所以备份很重要
是不是感到一种亲切感涌上心头,接着我们测试下gui还能不能正常使用,打开gedit:
好了,systemd和gui都正常,这才是真正的linux。
方法蛮简单的,主要是微软和systemd的开发团队合作之后新增的功能,配置也极为简单。之前某大神也搞出来一个教程,但是会导致gui失效,我没有找出来解决方法,就废弃了那个方法。
这个方法目前来看应该是完美方案了,不过细化的功能我没有来得及测试,感兴趣的可以都测试下,有问题欢迎讨论。