Published on

配置wsl+qemu+xv6环境

Authors

配置wsl+qemu+xv6

  1. 打开wsl(不多赘述),在命令行中输入官网的qemu安装命令

    apt-get install qemu-system
    
  2. 安装相关依赖

    sudo apt-get install -y build-essential gdb
    
    sudo apt-get install gcc-multilib
    
  3. 用git或者别的方法克隆xv6的源码

    git clone https://github.com/mit-pdos/xv6-public.git
    
  4. 进入源码目录,用vim修改Makefile,把QEMU = qemu-system-i386行注释去掉

    vim Makefile
    
  5. 【可选】命令行创建以及启动虚拟机,-f选项用于指定镜像的格式,qcow2格式是QEMU最常用的镜像格式,采用写时复制技术来优化性能。fedora.img是镜像文件的名字,10G是镜像文件大小。

    [kelvin@kelvin tmp]$ qemu-img create -f qcow2 fedora.img 10G
    Formatting 'fedora.img', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 
    [kelvin@kelvin tmp]$ ls
    fedora.img
    

    镜像文件创建完成后,可使用qemu-system-x86来启动x86架构的虚拟机:

    qemu-system-x86_64 fedora.img
    

    因为fedora.img中并未给虚拟机安装操作系统,所以会提示“No bootable device”,无可启动设备。

    参考:https://developer.aliyun.com/article/111184

  6. 这个时候如果出现gtk initialization failed,则要设置全局变量

    export DISPLAY=:0
    
  7. 若要永久设置该全局变量,需要vim ~/.bashrc 并在文件末尾添加以上命令

  8. 然后输入验证,关闭qemu是先ctrl a后x,启动流程一般是先make再make qemu

    qemu-system-i386
    
  9. 如果验证打开gtk图形化窗口后发现有./sign.pl: Command not found”和“ No bootable device问题,则为可能是由于 Windows 行尾 ( \r\n) 造成的。可以通过强制使用 Unix 样式行尾 ( ) 来修复此问题\n。首先在文件夹中运行以下命令:

    git config core.eol lf
    git config core.autocrlf false
    

    接下来,需要删除并再次签出所有文件,以便获得正确的行尾。执行以下操作:

    git rm --cached -r .
    git reset --hard
    
  10. 然后再make qemu即可