Skip to content

Commit

Permalink
Merge branch 'lecture' of https://github.com/AstatineAi/CS130-Project
Browse files Browse the repository at this point in the history
…into lecture
  • Loading branch information
AstatineAi committed Mar 2, 2024
2 parents 67f5c9f + cd85135 commit 5a14e40
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 108 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# CS130 Project - pintos

# CS130 Project - pintos

ShanghaiTech University Spring 2024.
227 changes: 121 additions & 106 deletions lecture_note/docs/lec0.md
Original file line number Diff line number Diff line change
@@ -1,107 +1,122 @@
# Lecture 0 : environment configurations

!!! note "我的环境"
```
Linux version 5.15.133.1-microsoft-standard-WSL2

Ubuntu 22.04

GCC 11.2.0
```

64 位系统.

## 其他可能更优的教程

1. 使用 UC Berkeley 的仓库 : https://github.com/Berkeley-CS162
2. 使用 JHU 的仓库 : https://www.cs.jhu.edu/~huang/cs318/fall17/project/guide.html
3. 使用 PKU 的 docker : https://pkuflyingpig.gitbook.io/pintos/

## 环境要求

https://web.stanford.edu/class/cs140/projects/pintos/pintos_12.html

## 前置安装/下载

首先: `sudo apt-get update` 并且 `sudo apt-get upgrade`

`sudo apt-get -y install build-essential automake git libncurses5-dev texinfo expat libexpat1-dev wget`

获取 pintos: `git clone git://pintos-os.org/pintos-anon pintos`

由于这里是 git protocol, 设置 git 的 `http.proxy` 是一点用没有的, 下载速度慢是正常现象.

## 模拟器

### QEMU

`sudo apt-get -y install qemu-system`

### Bochs 2.6.7

下载 bochs: https://sourceforge.net/projects/bochs/files/bochs/2.6.7/

切换到 `.tar.gz` 文件的目录:

```
tar zxvf bochs-2.6.7.tar.gz
cd bochs-2.6.7
./configure --enable-gdb-stub
make
sudo make install
```

然后回到 pintos 的目录, 运行命令 `bochs --help` 会提示你版本是 `2.6.7` 且是刚刚编译的.

## 配置 Pintos (使用 qemu)

为了方便运行 pintos, 在 `.bashrc` 加上对应位置的 export 命令.

- 切换到 `pintos/src/utils` 目录, 打开 `pintos-gdb`, 修改 `GDBMACROS``pintos/src/misc/gdb-macros`.
- 打开 `Makefile`, 把变量名 `LOADLIBES` 改为 `LDLIBS`
- 由于高版本 Linux 没有 `stropts.h` 库, 在 `/usr/include/` 下面新建一个空的即可
- 注释掉 `squish-pty.c` 288 - 294 行

此时在 `pintos/src/utils``make`, 只有 warning.

-`pintos/src/utils/pintos` 260 行的 `kernel.bin` 改成 `kernel.bin` 的完整路径 (在 `src/threads/build` 下).
-`pintos/src/utils/Pintos.pm` 362 行的 `loader.bin` 换成完整路径 (和上面的 `.bin` 在同一个目录)
- `/src/threads/Make.vars` 7 行 `bochs` 改为 `qemu`
- `/utils/pintos` 103 行左右 `bochs` 改为 `qemu`
- `/utils/pintos` 621 行左右: `qemu` 改为 `qemu-system-x86_64`

`pintos/src/threads` 下:

```
make
cd build
pintos -- run alarm-multiple
```

能跑就是基本成功.

`pintos/src/threads` 下:

```
make check
```

进入漫长的等待时间.

不是 27 fail 27 就是完全成功.

在我用 WSL 命令行和 vim 改了许久之后, 突然想起来其实直接在打开了对应文件夹的 VS Code 就能快速完成这些破事了.

## 使用 gdb 进行 debug

开启两个终端, 第一个在 `pintos/src/threads/build/``qemu --gdb -- run yourTest`

`pintos/src/threads/build/``pintos-gdb`, 进入后运行 `set architecture i386:x86-64`, 然后运行 `debugpintos`

# Lecture 0 : environment configurations

**deprecated**: 仅仅记录开课前在自己电脑上安装遇到的问题和 trouble shooting, 具体配置请参考习题课.

!!! note "我的环境"
请尽量选择旧版本的 Debian 及其衍生发行版, 如 Ubuntu 18.04 LTS. (参见下方安装时 `stropts.h` 部分)

```
Linux version 5.15.133.1-microsoft-standard-WSL2

Ubuntu 22.04 (extremely bad choice, not recommanded)

GCC 11.2.0
```

64 位系统.

WLS 提示无法安装请参考 https://learn.microsoft.com/zh-cn/windows/wsl/troubleshooting#installation-issues.

## 其他可能 (显然) 更优的教程

1. 使用 UC Berkeley 的仓库 : https://github.com/Berkeley-CS162
2. 使用 JHU 的仓库 : https://www.cs.jhu.edu/~huang/cs318/fall17/project/guide.html
3. 使用 PKU 的 docker : https://pkuflyingpig.gitbook.io/pintos/
4. https://github.com/youcunhan/cs130-OperatingSystem-pintos/blob/master/pintos-install.sh

## 环境要求

https://web.stanford.edu/class/cs140/projects/pintos/pintos_12.html

## 前置安装/下载

首先: `sudo apt-get update` 并且 `sudo apt-get upgrade`

`sudo apt-get -y install build-essential automake git libncurses5-dev texinfo expat libexpat1-dev wget`

获取 pintos: `git clone git://pintos-os.org/pintos-anon pintos`

由于这里是 git protocol, 设置 git 的 `http.proxy` 是一点用没有的, 下载速度慢是正常现象.

## 模拟器

### QEMU

`sudo apt-get -y install qemu-system`

### Bochs 2.6.7

下载 bochs: https://sourceforge.net/projects/bochs/files/bochs/2.6.7/

切换到 `.tar.gz` 文件的目录:

```
tar zxvf bochs-2.6.7.tar.gz
cd bochs-2.6.7
./configure --enable-gdb-stub
make
sudo make install
```

然后回到 pintos 的目录, 运行命令 `bochs --help` 会提示你版本是 `2.6.7` 且是刚刚编译的.

## 配置 Pintos (使用 qemu)

为了方便运行 pintos, 在 `.bashrc` 加上对应位置的 export 命令.

- 切换到 `pintos/src/utils` 目录, 打开 `pintos-gdb`, 修改 `GDBMACROS``pintos/src/misc/gdb-macros`.
- 打开 `Makefile`, 把变量名 `LOADLIBES` 改为 `LDLIBS`
- 由于高版本 Linux 没有 `stropts.h` 库, 在 `/usr/include/` 下面新建一个空的即可
- 注释掉 `squish-pty.c` 288 - 294 行

此时在 `pintos/src/utils``make`, 只有 warning.

-`pintos/src/utils/pintos` 260 行的 `kernel.bin` 改成 `kernel.bin` 的完整路径 (在 `src/threads/build` 下).
-`pintos/src/utils/Pintos.pm` 362 行的 `loader.bin` 换成完整路径 (和上面的 `.bin` 在同一个目录)
- `/src/threads/Make.vars` 7 行 `bochs` 改为 `qemu`
- `/utils/pintos` 103 行左右 `bochs` 改为 `qemu`
- `/utils/pintos` 621 行左右: `qemu` 改为 `qemu-system-x86_64`

上面的 "替换为完整路径" 操作均可通过把对应的文件夹添加到 `PATH` 解决.

`pintos/src/threads` 下:

```
make
cd build
pintos --qemu -- run alarm-multiple
```

能跑就是基本成功.

`pintos/src/threads` 下:

```
make check
```

进入漫长的等待时间.

27 fail 20 就是完全成功.

在我用 WSL 命令行和 vim 改了许久之后, 突然想起来其实直接在打开了对应文件夹的 VS Code 就能快速完成这些破事了.

## 使用 gdb 进行 debug

开启两个终端, 第一个在 `pintos/src/threads/build/``qemu --gdb -- run yourTest`

`pintos/src/threads/build/``pintos-gdb`

尝试运行 `debugpintos` (在 gdb macros 里面声明的, 用处是连接到 qemu, 直接用 `target remote localhost:1234` 也可以)

无报错或者运行后再运行指令 `c` 可以正常继续就是配置正确.

如果出现 `architecture` 相关报错, 进入后运行 `set architecture i386:x86-64`, 然后运行 `debugpintos`

之后可以正常打断点运行.

0 comments on commit 5a14e40

Please sign in to comment.