Skip to content

Boot xv6 (Easy)

实验任务

安装VMware + Ubuntu + Qemu + xv6

  • VMware 16.2.5
  • Ubuntu 24.04.1
  • Qemu 5.1.0
  • xv6-LABS-2020

1.安装VMware + Ubuntu

...

2.配置静态网络

bash
sudo apt install net-tools
sudo apt install vim
sudo vim /etc/netplan/01-netcfg.yaml

增加内容(对应VMware进行配置)

yaml
network:
  version: 2
  ethernets:
    ens33:  # 替换为你的网络接口名称
      dhcp4: no
      addresses:
        - 192.168.10.129/24  # 静态 IP 地址
      gateway4: 192.168.10.2  # NAT 网关地址
      nameservers:
        addresses:
          - 8.8.8.8  # Google DNS
          - 8.8.4.4

应用配置

bash
sudo netplan apply

验证连通性

bash
ping 192.168.10.2
ping www.baidu.com

界面设置 Wire -> ipv4->Manual

安装git

bash
sudo apt install git

3.安装Qemu5.1

选择在work文件夹下操作(可任意)

bash
mkdir work
cd work

下载解压

bash
wget http://sources.buildroot.net/qemu/qemu-5.1.0.tar.xz
tar xf qemu-5.1.0.tar.xz
cd qemu-5.1.0

安装依赖

bash
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu
bash
sudo apt-get install libglib2.0-dev
sudo apt-get install libpixman-1-dev

编译安装

bash
./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
bash
make
sudo make install

4.安装xv6

bash
cd ..
git clone git://g.csail.mit.edu/xv6-labs-2020
cd xv6-labs-2020
git checkout util

编译启动

bash
make qemu

若出现runcmd报错:

可在57行插入

diff --git a/user/sh.c b/user/sh.c
index 83dd513..c96dab0 100644
--- a/user/sh.c
+++ b/user/sh.c
@@ -54,6 +54,7 @@ void panic(char*);
 struct cmd *parsecmd(char*);
 
 // Execute cmd.  Never returns.
 __attribute__((noreturn))
 void
 runcmd(struct cmd *cmd)
 {

重新编译启动

5.配置git 绑定远程仓库(可选)

bash
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub (拷贝至github)

后续见 http://xv6.dgs.zone/labs/use_git/git1.html

6.配置vscode ssh(推荐)

bash
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
sudo ufw allow ssh

vscode桌面端:

安装Remote SSH插件

+(ssh eason@192.168.10.129)