Rusty Blog

My rusty corner on the Web.

View the Project on GitHub EchoStone1101/RustyBlogs

11 September 2023

ICS: Getting Started

by EchoStone

2023 Fall Semester

为了完成 ICS 课程的实习部分,你或多或少需要做一些准备。这份指南集合了一些对 ICS beginners 可能会有帮助的通用信息,希望能助你快速上手。

TL;DR: 你需要一个足够稳定的 Linux 环境,并掌握 bash 命令行的使用方式。

Linux 虚拟机配置指南

每个同学都会拥有自己的 Class Machine 服务器账号,作为完成 Lab 的统一 Linux 环境。你当然可以完全在 Class Machine 上完成 ICS 的实习部分,不过你也可以选择在本地配置一个自己的 Linux 虚拟机。这么做的好处是:

如果你希望在自己的电脑上配置本地的 Linux 环境:

虚拟机选择

关于 docker docker 本质上是一个容器管理工具,只是在 Mac 或 Windows 上会附赠虚拟 Linux 环境的功能。你事实上可以在 docker 中使用多种 Linux 发行版,甚至是预先配好的开发环境。 docker 默认只提供命令行界面,对新手而言或许不太友好。然而,docker 本身大概率会是你未来开发不可或缺的工具之一,也是相对来说更轻量级的虚拟机选项。推荐有心提前学习的同学借此机会上手 docker。

Linux系统版本

尚不确定 Class Machine 的系统版本如何。按照往年经验来看,一般选择 Ubuntu 18.04 LTS 及以上的稳定版本都无问题。选择 Ubuntu 以外发行版的话,可能需要面对包管理系统和其他同学不同的问题。以下的包管理系统都假定是 apt

系统基本配置

安装完虚拟机和 Linux 系统之后,你还可以(并且需要)进一步配置这套系统,以适应 ICS Lab 的需要。这方面每个 Lab 可能有各自的依赖,一般会在 Lab Writeup 里指明;但总体而言,你需要在你的 Ubuntu 里安装上以下的组件:

sudoapt 会成为你经常键入的命令。

tldr 是我个人非常推荐安装的一个工具;对于你不记得用法的命令行,你只需要tldr它,比如:

(base)  ~ > tldr apt

apt

Package management utility for Debian based distributions.
Recommended replacement for `apt-get` when used interactively in Ubuntu versions 16.04 and later.
For equivalent commands in other package managers, see <https://wiki.archlinux.org/title/Pacman/Rosetta>.
More information: <https://manpages.debian.org/latest/apt/apt.8.html>.

- Update the list of available packages and versions (it is recommended to run this before other "apt" commands):
    sudo apt update

- Search for a given package:
    apt search package

- Show information for a package:
    apt show package

- Install a package, or update it to the latest available version:
    sudo apt install package

- Remove a package (using "purge" instead also removes its configuration files):
    sudo apt remove package

- Upgrade all installed packages to their newest available versions:
    sudo apt upgrade

- List all packages:
    apt list

- List installed packages:
    apt list --installed

相比 man apt 的输出会友善很多。

STFW

仍然需要强调的一点是:配环境是计算机学习过程中不得不评鉴的一环;没有什么操作是完全适配所有人情况的,所以我在上面故意省略了安装各个包的具体命令。Get your hands dirty!并且记住:很多时候别人能给你的最好建议,就是 S(earch)T(he)F(ucking)W(eb)!

Bash 命令行指南

基本命令行操作

这篇文章包含了一些常用的命令行指令的用法;文章前面也包含了虚拟机安装教程,不过似乎不如我上面链接里详细,仅供参考。如前所述,如果你安装了tldr,绝大多数情况下就只需要记住常用命令的名字了(当然,它们最基本的用法很快也会成为你的本能);如今的 ChatGPT 也能起到很大的帮助作用。

你可以试试完成以下的任务,看你有没有大概掌握基本的命令行用法:

(Optional)配置 Remote VSCode

上面的指南是希望你能用 vim + 终端完成一个简单 C 程序的编写。不过一般而言,vim并不适合新手用来开发程序,还是建议大家选择顺手的 IDE。

你固然可以在虚拟机里安装 VSCode(官方应用商店就可以);这里我们换一种方式,让你可以用自己的主系统上的 VSCode 来远程管理 Linux 环境里的项目,同时顺带熟悉一下 sshscp 这些重要操作。

sudo apt-get install openssh-server
# Make sure ssh-daemon is running by running "ps -aef | grep sshd"
ssh localhost # this should work now; it's normal that nothing is shown when inputting your password

如果你不知道什么是 SSH,你可以单纯地把它理解为一个远程 Shell 服务。在这个 SSH 连接里,你可以通过命令行随意地控制目标机器。

<username>@<ip_address>

其中 username 是你虚拟机账户的名字。敲下回车,像之前一样输入密码;不出意外的话,你的 VScode 现在应该已经连接进入你的虚拟机了。今后要完成 Lab,可以直接在这个界面打开相应的文件夹,然后就可以像在本地一样敲代码啦~

scp username@ip:~/folder/log.txt ./
scp -r ./datalab-handout username@ip:~/ICS-Labs/

自学指南

由我们的的史诗级学长 PKUflyingpig 倾情打造的CS 自学指南 ,相信总有你没学过的吧。

目前你只需要关注“必学工具”部分,以及“编程入门”里的 MIT-Missing Semester。里面都附上了深入学习的资料,也部份覆盖了上面提到的一些操作。有空可以尝试学习看看~

tags: ICS