不吹不黑,WSL才是yyds,在云服务器上CentOs8搞了半天,各种源码编译,不如WSL搭配Ubuntu16.04半小时轻松搞定,但也有一些坑,这篇算是记载帖,所以最好看完再开始弄。

1. 启用windows的WSL

“控制面板”->“程序”->“启用或关闭Windows功能”。

√选“适用于Linux的Windows子体系”和“虚拟机平台”,后者是WSL2有必要的,因此这里直接先√上,然后重启即可。

WSL2-Ubuntu16.04配置qemu+xv6

2. 装置Ubuntu16.04 LTS

打开Windows PowerShell,

wsl -l -o 检查可装置的有效distribution

wsl --install -d Ubuntu-16.04 装置Ubuntu-16.04

装置完成后会弹出一个界面,输入UNIX用户名、暗码之类的,需求注意全新的Ubuntu体系需求sudo passwd激活root并设置暗码(跟一开始让你输入的暗码不是一个东西,但方便记忆你能够设置成相同的),设置完成后就能够su转换成root用户。

这个时分理论上就已经能够在Ubuntu上愉快地玩耍了,但它自带的shell实在太丑了,十分推荐windows terminal,在powershell中运用”wsl”指令就能直接进登录Ubuntu,或者直接下拉点击,十分好用

3. 装置qemu以及必要依靠

装置之前,主张先把apt-get换成国内源,教程随意找就行

sudo apt-get install qemu 装置qemu

sudo apt-get install -y build-essential gdb

sudo apt-get install gcc-multilib

装置完qemu之后能够看看/usr/bin里面有没有qemu-system-xxx一大堆可执行文件,有的话就装置成功了。

4. 下载和编译xv6

git clone git://github.com/mit-pdos/xv6-public.git && cd xv6-public 先从github克隆下来并进入该目录

git checkout -b xv6-rev7 xv6-rev7 这个指令是创建本地分支并相关长途同名分支xv6-rev7,学校试验需求运用rev7

vim Makefile 修正Makefile文件,指定QEMU路径QEMU = qemu-system-x86_64

WSL2-Ubuntu16.04配置qemu+xv6
make 直接编译即可!

5. 晋级WSL2

syntax error: word unexpected (expecting “)”)

没想到功败垂成,在编译的时分呈现这样的报错,是不是很像在写代码的时分IDE报的语法错误,定位到Makefile的一百多行,然后就进去瞧了瞧,然而看不出什么所以然,只好去百度,大概有几个博客都是说是编译器的问题,跟Makefile指定的不一致,我的了解是就比方py2和py3有语法上的区别,相同的代码会呈现编译失利,也便是兼容性问题,但也没有看到一个一致的处理方案。

然后我就突然想到会不会是WSL1的问题,而WSL2是真正的Linux内核,晋级试试看。

比较 WSL 1 和 WSL 2 | Microsoft Docs

旧版 WSL 的手动装置过程 | Microsoft Docs

参照以上教程根本没问题

wsl --set-version Ubuntu-16.04 2 将Ubuntu的version晋级成2

wsl -l -v 检查当时的Distribution并显现详细信息,确认晋级成功。

最后运转WSL2,进入/xv6-public目录下,开make!理论上是再不会呈现error的。

6. 运转xv6

运转十分简单make qemu-nox(即no-graphic)即可,看到下图根本就意味着成功了,能够测验一些ls,echo之类的根底指令。

WSL2-Ubuntu16.04配置qemu+xv6

或许有人要问为什么不make qemu,原因很简单,因为会报错。

Could not initialize SDL(No available video device) – exiting

是因为WSL2没有可用的Xserver(linux下的图形接口服务器),能够装置VcXsrv(免费)以及设置子体系的DISPLAY环境变量来处理该问题,但感觉没啥必要,对于xv6来说便是一个彻底复刻的终端界面罢了,具体的一些操作能够参照 微软官方的这个教程

7. 有点麻烦的退出

值得一提的是,要怎样退出?所有人都是说ctrl+a然后x退出qemu,但真的不会很简单让人误解成要一起按么(麻了)。

正确的操作是按下ctrl+a,然后释放,接着按x键就能退出qemu,而不是需求按下3个键。