WSL2-Ubuntu16.04配置qemu+xv6

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

1. 启用windows的WSL

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

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

image.png

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. 安装qume以及必要依赖

安装之前,建议先把apt-get换成国内源,教程随便找就行

sudo apt-get install qume 安装qume

sudo apt-get install -y build-essential gdb

sudo apt-get install gcc-multilib

安装完qume之后可以看看/usr/bin里面有没有qume-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

image.png
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即可,看到下图基本就意味着成功了,可以尝试一些ls,echo之类的基础命令。

image.png

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

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享