因为是第一次写博客,在搭完环境后靠回忆写下来这篇博客,有可能会有一些不准确的地方,欢迎各位大佬指正!
浅浅记录一下花了两天时间完成的xv6环境搭建过程~也写下搭建过程中遇到的至今仍未解决的bug,希望有大佬看到能够给予解答
配置环境:windows10 x64
使用工具:virtualbox ubuntu desktop
一、软件下载
首先附上mit实验课程官网链接和官网截图,基本上需要的步骤在/Labs/tools里都有提到,点击链接跳转至相关页面下载需要的虚拟机和ubuntu版本
6.S081 / Fall 2020https://pdos.csail.mit.edu/6.828/2020/xv6.html
我下载的是virtualbox的windows hosts版本,在同一页面还可以下载拓展包,可以一起下载,后续调整虚拟机屏幕大小和共享主机粘贴板都会用到这个拓展包
ubuntu下载页面,点击download即可
ubuntu下载页面下拉可以看到相关教程,我基本上是根据第二个教程来安装的
二、虚拟机创建
附上我参考的官方教程链接
How to run Ubuntu Desktop on a virtual machine using VirtualBox | Ubuntu
虚拟机创建过程基本上没有什么好说的,已经有很多大佬做过分享,说一下我的具体数值配置吧
虚拟机位置:D盘
因为C盘已经快满了
主存:2048MB
没有选择1024MB,在后续操作中虚拟机上安装系统的时候我看到很多人分享说swap区需要至少是主存2倍或者1.5倍大,但如果主存超过1024MB也可以不设置swap区
硬盘:
创建动态硬盘
硬盘文件:
VDI
硬盘存储:
动态分配,据说这样会慢一些但是占用物理空间小一些
硬盘大小:
此处建议大一些,文档里推荐的10GB根本不够用。我一开始选择了10GB结果在安装ubuntu磁盘分区的时候捉襟见肘,后来只好删了重建,选择了80GB(后续安装xv6工具时磁盘需要至少6GB的空间)
三、ubuntu安装
创建好虚拟机后点击start,系统会自动提示你选择含有需要安装的操作系统的iso文件,当然也可以后续在菜单——设备中选择分配光驱
选择好之后等一会,就会出现期待已久的ubuntu安装页面啦!
选择install Ubuntu,选择语言,安装方式我选择的正常安装+安装时更新+为其他媒体格式下载第三方软件
接下来是我踩坑的地方!一开始我选择了其他选项打算自己分区,尝试了分以下几个分区
/ (etx4,逻辑分区)
/boot (etx4,逻辑分区)
/home (etx4,逻辑分区)
/swap (etx4,逻辑分区)
但是一直提示我没有efi分区和boot reserved分区,但是我上网查好像这两个东西是同一个功能(引导程序),也不知道我弄对没有。。。。。总之后来我就放弃了,选择了清除整个磁盘并安装ubuntu,反正磁盘文件也是特意为了安装ubuntu新建的 ,清空也没什么影响,然后发现系统只给我建了两个分区 / 和 /boot/efi
然后就是选择所在地区和创建用户和密码了!创建后记得自己的密码就好
接下来等待安装。点击skip可以跳过安装更新过程,之后还可以手动操作。
安装完成后根据提示重启。
重启过程中会黑屏提示拔出光驱后回车,在这一步两种方式都可以
VirtualBox管理器——虚拟机设置——存储——控制器(IDE),找到含有操作系统的光驱(命名类似ubuntu-22.04-desktop-amd64.iso),右键“移除盘片”
或者虚拟机运行页面——左上角设备——分配光驱,点击移除虚拟盘(我的图片是已经移除完之后的效果,可以看到ubuntu-22.04-desktop-amd64.iso前面没有✔)
四、安装增强功能
虚拟机页面右上角设备——安装增强功能
系统此时会报错,忽略
此时系统菜单栏会出现一个光盘,这就是我们之前在第一步软件安装中下载的拓展包,里面有所需要的VBoxLinuxAdditions.run
在该页面右键打开终端
运行代码
sudo ./VBoxLinuxAdditions.run
运行完成后根据提示重启
接下来常规设置中的高级处将共享粘贴板和拖放设置为双向
存储中SATA控制器勾选固态驱动器 (这一步我是看到有人分享可以这样解决文件拖放失败的问题,但似乎没有什么用。。。。。。)
总之,这样设置后我只能实现共享粘贴板,无法实现文件拖拽,无论是把文件拖拽到桌面上还是文件夹中都显示红叉,也无法实现宿主机和虚拟机同时截屏
分辨率的调整这里就略过了,可以根据其他大牛的分享按步骤操作即可
五、xv6工具链安装
再附一遍官网链接~
工具链安装在/usr/local目录下
需要注意的是,在使用下面这句git clone时,我查看了最新的md文档(GitHub链接:GitHub - riscv-collab/riscv-gnu-toolchain: GNU toolchain for RISC-V, including GCC),文档里提到子模块都会自动下载所以不需要--recursive,但是我没用--recursive下下来的文件只有5.9MB,所以最后还是用了官方文档里这一句
btw不用镜像源真的下的很慢,我下了足足一天,还是在好不容易连上服务器的情况下,后来连了VPN好像速度快一些,但是宿主机连VPN对虚拟机的网络有影响吗。。。。。。(网络小白无知发问)
$ git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
接下来按照官网步骤走就行了!
注意在配置工具链的时候如果编译失败可以参考以下解决方案,附上原文链接
=======================================
如果上述配置失败,请安装下列两个软件包:
$ sudo apt-get install libglib2.0-dev
$ sudo apt-get install libpixman-1-dev
然后重新配置。
=======================================
然后耐心等待就好了!
最后可以输入一下指令查看版本,确定是否已经安装成功!
$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 10.1.0
...
$ qemu-system-riscv64 --version
QEMU emulator version 5.1.0
附上一张成功的截图
到这里环境安装和工具链安装就完成了!其实安装过程中还有很多地方本人都是一个人云亦云的懵逼状态,如果有说的不对的地方请大家帮助指正,不要误人子弟才好~