win10+ubuntu20.04双系统搭建QEMU下xv6-riscv环境
回顾总结为时两天的安装之路
从准备回校开始,发现自己在家用的主机也搬不到学校,但是VMware安装虚拟机失败次数过多心理阴影极重,转而投奔双系统的怀抱…想要记录一下走过的弯路。
1.设置分区安装双系统
参考教程,设置好了分区(下面这个图是成功安装之后的样子,正常来讲图中箭头对应的磁盘位置应该是<未分配>字样):
我笔记本进入boot menu是需要用牙签戳一下笔记本侧面电源指示灯旁的小按钮,选择U盘启动那个选项,然后选择ubuntu。
但是ubuntu安装过程里有“与现存系统并存”的选项,我就选择了该选项,然后意识到我不知道把ubuntu装到了哪里…
问题就来了,我发现我设置的分区未分配也没有被使用,它空着了,于是乎,我就把分区又加到win10分区里,再次开机,直接进入gnu grub界面,需要命令行引导开机,原因大概是因为我又改变了硬盘分区,ubuntu找不到引导分区了,但是win10没有问题,根据视频(步骤如下)进入了win10。
grub> ls
(proc) (hd0) (hd0,gpt3) ....
grub> ls (hd0,gpt1)/efi/microsoft/boot/bootmgfw.efi
bootmgfw.efi
grub> set root=(hd0,gpt1)
grub> chainloader /efi/microsoft/boot/bootmgfw.efi
grub> boot
就可以愉快地进入win10开机画面了
通过度娘的<删除双系统中ubuntu>以及<开机进入grub引导>教程中各种操作把ubuntu系统删掉,删掉bios引导项,开机恢复了没装ubuntu之前win10开机画面,重新设置好了分区,开始自定义安装(系统分区+交换分区+主分区),按照上面的教程这一步没有遇到什么问题。安装成功开机会进入到这个界面:
在Ubuntu里设置开机默认系统(我试了win10里设置开机默认系统,开机直接进到win10),步骤如下:
> cd etc/default
> sudo gedit grub
修改GRUB_DEFAULT=0修改为GRUB_DEFAULT=2
(就是上图中windows系统的序号,0号为Ubuntu)
> sudo update-grub
重启系统
2.安装riscv-toolchain
整体搭建环境过程可以参考教程
> sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev
> git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
> cd riscv-gnu-toolchain
> ./configure (这一步必须在有configure文件下执行,所以要进入文件夹)
> make
3.安装qemu
> sudo apt-get install gcc libc6-dev pkg-config bridge-utils uml-utilities zlib1g-dev libglib2.0-dev autoconf automake libtool libpixman-1-dev ibglib2.0-dev
> wget https://download.qemu.org/qemu-5.2.0.tar.xz
> tar xvJf qemu-5.2.0.tar.xz
> cd qemu-5.2.0
> ./configure
> make
需要单独安装ninja,不然会报错:
> git clone git://github.com/ninja-build/ninja.git && cd ninja
> ./configure.py --bootstrap
> cp ninja /usr/bin/
4.安装xv6-riscv
> git clone git://github.com/mit-pdos/xv6-riscv-fall19.git
> make qemu
顺利的话直接进入shell(make不可以在root下执行,会报错),可以输入ls这种指令简单验证一下。
5.测试+验证
为了简化命令的话可以设置环境变量,但是我使用的指令是暂时的,每次进入终端都得用这条指令。。。qemu默认安装到/usr/local/bin
下,riscv安装时规定了路径/opt/riscv
,所以要将/opt/riscv/bin
加入环境变量:
> export PATH=/opt/riscv/bin:$PATH
不放心可以使用下列两个指令查看是否安装成功:
> qemu-system-riscv64 --version
> riscv64-unknown-elf-gcc --version
编译
> riscv64-unknown-elf-gcc hello.c -o hello
编译完成就可以在文件夹里找到hello
文件。
这里,我看到有的教程是 riscv64-unknown-linux-gnu-gcc hello.c -o hello
,可以到安装时设置的目录下bin文件夹里看一下,确认一下到底是哪个。
运行
> qemu-riscv64 -L $RISCV/sysroot hello
qemu-riscv64
也可以在安装路径下bin文件夹中找到。