工欲善其事, 必先利其器。在开始操作系统实验之前,你应该先完成相关环境的配置, 这是十分重要的。
为了减轻同学们配环境的负担,我们决定使用 Docker 环境。Docker 是一个开源的容器化平台,可以帮助开发者将应用程序及其依赖项打包到一个独立的容器中,并在任何环境中运行。
首先,我们建议你下载轻量级代码编辑器 VSCode, 并安装 Docker 插件,请阅读 VSCode 下载与安装 部分。
其次,我们需要你的操作系统支持 Docker ,如果你之前没有安装过 Docker ,请先参考 Docker 安装 章节进行 Docker 的配置。 如果你之前有使用过 Docker ,则可以跳过这一步。
验证你的操作系统支持 Docker:
按 win + R 打开运行窗口,输入 cmd 打开命令行窗口。
C:\Users\noonering> docker --version
Docker version 28.1.1, build 4eba377
打开终端, 输入以下命令验证 Docker 是否安装成功:
$ docker --version
Docker version 28.1.1, build 4eba377
打开终端, 输入以下命令验证 Docker 是否安装成功:
$ docker --version
Docker version 28.1.1, build 4eba377
如果输出了 Docker 的版本信息, 则说明你的操作系统支持 Docker 。
完成上述配置之后就可以开始实验了。
我们会提供一个包含所有实验环境的 Docker 镜像的 tar.gz 包,将其下载到本地,并记住这个地址(绝对地址)。
Windows 下可能会遇到需要使用 \ 来代替 / 作为文件路径符的问题,但 Windows 的 Docker 一般支持正斜杠。
另外打开 Docker Desktop 似乎会更顺利地加载镜像。
# 加载 docker 环境
# 将其中的 C:/docker-image-os/ustb-os-v1.1.tar.gz 替换为你下载的地址
docker load -i C:/docker-image-os/ustb-os-v1.1.tar.gz
# 查看加载的镜像
docker images
# 输出结果如下
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
wamingmo/ustb-os:1.1 768567a64921 7.53GB 0B
# 运行容器,挂载本地目录到容器中的 /oslab 目录
# 这样你对容器中 /oslab 目录的修改会反映在你的目录中
# 其中 ${HOME}/ustb-os-rustlings 是你本地的目录,你可以将其替换为你自己的目录
# 意思是,${HOME}/ustb-os-rustlings 下的所有文件将会在容器的 /oslab 路径中
# 当之后你进行内核实验的时候你可以将其改为 ${HOME}/ustb-os-kernel
docker run -it --name myoslab -v ${HOME}/ustb-os-rustlings:/oslab --entrypoint /bin/bash wamingmo/ustb-os:1.1
# 加载 docker 环境
# 将其中的 /mnt/c/docker-image-os/ustb-os-v1.1.tar.gz 替换为你下载的地址
# 如果你使用的是 WSL 那这个路径就是 Windows 的 C 盘目录下 docker-image-os/ustb-os-v1.1.tar.gz 这个文件
docker load -i /mnt/c/docker-image-os/ustb-os-v1.1.tar.gz
# 查看加载的镜像
docker images
# 输出结果如下
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
wamingmo/ustb-os:1.1 768567a64921 7.53GB 0B
# 运行容器,挂载本地目录到容器中的 /oslab 目录
# 这样你对容器中 /oslab 目录的修改会反映在你的目录中
# 其中 ~/ustb-os-rustlings 是你本地的目录,你可以将其替换为你自己的目录
# 意思是,~/ustb-os-rustlings 下的所有文件将会在容器的 /oslab 路径中
# 当之后你进行内核实验的时候你可以将其改为 ~/ustb-os-kernel
docker run -it --name myoslab \
-v ~/ustb-os-rustlings:/oslab \
--entrypoint /bin/bash \
wamingmo/ustb-os:1.1
docker load -i C:/docker-image-os/ustb-os-v1.1.tar.gz
docker run -it --name myoslab -v ${HOME}/ustb-os-rustlings:/oslab --entrypoint /bin/bash wamingmo/ustb-os:1.1
如果你在 docker load 的过程中遇到了问题,你可以尝试:
docker pull wamingmo/ustb-os:1.1
这将从 DockerHub 中拉取。
如果想要详细了解更多关于 Docker 的内容可以参考 Docker 官方文档 和 Linux 101 - Docker.
比如,我执行 docker run -it --name myoslab -v ~/yyn:/oslab --entrypoint /bin/bash wamingmo/ustb-os:1.1 容器中的 /oslab 目录被挂载到了本地的 ~/yyn 目录中。
在容器中的 /oslab 中创建了 test 文件夹,在退出之后,你可以在本地的 ~/yyn 目录中看到 test 文件夹。
如此你就可以将代码保存到本地,然后使用 Docker 的环境进行开发。
或者你可以使用 VSCode 的容器插件,可以轻松启动容器镜像。