# buaa_pintos **Repository Path**: kaiyan3/buaa_pintos ## Basic Information - **Project Name**: buaa_pintos - **Description**: 用docker一键部署pintos学习环境 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2021-10-07 - **Last Updated**: 2023-09-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 用docker一键部署pintos学习环境 # 使用前准备 - 安装docker**并保持docker在后台运行** - 如果在终端运行`docker run -it alpine`进入了linux环境则说明安装成功 - [Windows用户安装docker以及常见问题](https://gitee.com/kaiyan3/buaa_pintos/blob/master/Windows.md) - 在你的电脑上准备好那个名为pintos的文件夹 # Get Started 运行 ``` docker run -it --rm -v pintos文件夹本地路径:/env/pintos --workdir /env/pintos/src --name mypintos eightgames/mypintos ``` 上面这行代码的作用: - 从[docker官网](docker.com)上拉取我的名为`eightgames/mypintos`的[image](https://hub.docker.com/repository/docker/eightgames/mypintos) - 创建名为`mypintos`的container - 将本地目录的pintos文件夹挂载为container的`/env/pintos`文件夹 - 面向用户给container分配一个终端, 若终端退出则自动删除container 如果运行成功, 则应该成功进入了container的运行环境, 并能如下启动pintos ``` root@1c0a24c5d2af:/env/pintos/src# ls LICENSE Makefile Makefile.kernel devices filesys misc threads utils Make.config Makefile.build Makefile.userprog examples lib tests userprog vm root@1c0a24c5d2af:/env/pintos/src# pwd /env/pintos/src root@1c0a24c5d2af:/env/pintos/src# cd threads/build/ root@1c0a24c5d2af:/env/pintos/src/threads/build# ../../utils/pintos -- run alarm-multiple Prototype mismatch: sub main::SIGVTALRM () vs none at ../../utils/pintos line 935. Constant subroutine SIGVTALRM redefined at ../../utils/pintos line 927. squish-pty bochs -q ======================================================================== Bochs x86 Emulator 2.6.7 Built from SVN snapshot on November 2, 2014 Compiled on Oct 2 2021 at 15:19:45 ======================================================================== 00000000000i[ ] reading configuration from bochsrc.txt 00000000000e[ ] bochsrc.txt:8: 'user_shortcut' will be replaced by new 'keyboard' option. 00000000000i[ ] installing nogui module as the Bochs GUI 00000000000i[ ] using log file bochsout.txt PiLo hda1 Loading........... Kernel command line: run alarm-multiple Pintos booting with 4,096 kB RAM... 383 pages available in kernel pool. 383 pages available in user pool. Calibrating timer... 204,600 loops/s. ``` 此时就可以进行开发了。修改本地的pintos文件夹, 在container内也会做同步更改。 # alias 目前以下内容已被`alias`到`/root/.bashrc`中,可以直接使用,方便日常开发 ```sh alias pintos="cd /env/pintos/src/threads/build; ../../utils/pintos -- run alarm-multiple" alias threads='cd /env/pintos/src/threads; make check; cd -' ``` # FAQ - 如何从vscode进入container? > 在vscode内安装Microsoft的以下插件: > - `Docker` > - `Remote Development`插件包 > 然后在左侧侧边栏里面右键名为`mypintos`的container, 点击`Attach Shell`或者`Attach vscode` - 我想用qemu作为pintos的模拟器 > 对不起,该镜像暂时不支持qemu作为pintos模拟器,请使用bochs。 > 请确保`src/filesys/Make.vars`, `src/filesys/Make.vars`, `src/vm/Make.vars`三个文件中都是`SIMULATOR = --bochs` - 你的docker image似乎有问题 > 在这里提交issue或者私聊我, 我会尽力修复并更新我的image # 声明 北航软院张开颜 本项目所使用镜像基于[该仓库](https://github.com/huahuaxiaomuzhu/pintos-docker)使用`docker commit`生成, 本镜像已通过本人所在OS实验小组的测试,所有pintos测试点均已pass。 本教程仅供参考, 本人不对安装过程不当造成的后果负任何责任,如果发现bug,请立即联系我,我会尽快更新镜像