ICS实验入门手册

I. Linux系统

本学期的实验需要使用Linux系统。如果你的电脑不是Linux系统,建议使用虚拟机安装Linux系统。

手册中介绍VMWare Workstation Player和WSL 2两种虚拟机方案。 建议Windows系统的同学选择WSL 2。

VMWare Workstation Player

VMWare Workstation Player供个人免费使用,可在官方网站下载。VMWare Workstation Player的图形界面设计较为清晰,不需要额外教学,大家可以自行尝试。

VMWare Workstation Player使用的系统镜像可以从各Linux发行版官网下载,如Ubuntu

WSL 2

WSL 2是Microsoft推出的虚拟机方案,仅支持Windows系统,使用体验极佳。对于Windows 10 2004以上版本或Windows 11系统,可以参考WSL官方文档安装WSL 2。该文档中还包含其它一些有用的信息,推荐感兴趣的同学完整浏览,特别是跨系统文件访问和跨系统网络访问。(当然,完整浏览不是实验必要的)

如果直接wsl --install失败,请参考文档中提供的手动安装步骤和常见问题。仍有疑问欢迎联系GPT和助教。对于C盘可用容量堪忧的同学,可以参考这篇知乎文章来把WSL迁移到别的盘。 注:用户名不要用大写,不要用中文!(经热心同学踩坑后加上)

WSL已默认使用WSL2,其与WSl1之间的差异见官方文档

Mac等特殊情况

VMWare Workstation Player不支持Mac。如有使用Mac系统的同学,请尝试DockerVirtualBox

后续部分实验基于x86-64架构设计。如有使用Mac M1芯片,或其它非x86-64指令集CPU(如龙芯——不会真有人用吧)的同学,建议联系助教为你安排服务器进行实验,也可尝试UTM或QEMU,但性能可能略低。

Linux命令行

对于虚拟机和Windows 11版本的WSL 2,可以自行为Linux系统安装合适的图形界面应用,但使用命令行在后续实验中是必须掌握的基础技能。命令行的基本用法可以参考Linux Manual。如果你不想硬啃这个官方手册,我们也推荐通过MIT Missing Semester上的第一、二节入门Linux命令行使用。

一般来说,各种命令都可以通过在后面加上--help的方式输出用法,如运行ls --help可输出ls命令的用法。 如果你需要更加详细的说明,可以通过man查询命令对应的文档,如man tar,也可以在GNU网站上找到相关软件的具体说明。 另外推荐一个命令常用用法速查的命令行工具 tldr ,这是GITHUB仓库地址,可以自行安装。(看不懂怎么安装的话 pip3 install tldr 即可)

下列基本命令和操作较为有用,推荐同学可以试试看:

  • cd ls mv rm cp cat echo mkdir rmdir sudo pwd
  • 输出重定向(>) 输入重定向(<) 管道(|) 结束程序(Ctrl+C) 自动补全(Tab)
  • chgrp chmod chown jobs kill fg bg ln top grep find export
  • 后台运行(&) 暂停程序(Ctrl+Z) 引用job(%) EOF(Ctrl+D) 临时环境变量(=)

II. 包管理器

以Ubuntu系统的apt包管理器为例,其它发行版可以自行查找有关资料。

包管理器全称是软件包管理器,顾名思义是用来管理软件包的软件。在大家熟悉的Windows系统中,通常下载软件就是去软件的官网上下载。而在Linux系统中,最常见的安装软件的方式是使用软件包管理器从“软件仓库”中下载。包管理器会负责一个软件的全生命周期,包括下载、安装、依赖关系、卸载、更新等等。

Ubuntu发行版中带有apt和dpkg包管理器,我们一般使用apt,基本用法可以参考Ubuntu包管理器文档中的apt一节。完整的官方文档可以运行man apt查阅。

请注意使用apt时一般都需要sudo。

你也可以自行安装aptitude包管理器,官方文档中也有对其的介绍。该管理器用法与apt类似,且提供了图形化界面。

换源(非常重要!!!!!!!!!!)

apt默认的软件源服务器在国外,访问速度较慢。建议将其更换为科大镜像(P.S. 咱学校的CSLG未来或许会搭建复旦自己的镜像站),Ubuntu的更换方法如下:

1
2
3
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
sudo apt update

其中第一行是将原来的文件进行备份,这是一个好习惯! 上面几行的详细说明可以参考这个链接,如果你使用其他发行版,可以去这个链接中寻找相关说明。

如需要在命令行下使用代理,建议了解一下proxychains。

III. 常用软件

GNU Tools

请在Linux系统中安装常用的GNU工具链。参考命令:sudo apt install binutils diffutils gcc gdb grep g++ make tar

GNU工具链中包含了许多的常用工具,如grep、tar、gcc、g++、make、objdump、gdb等。我们在后续课程中会重点介绍其中的一些工具。

Vim

Vim的基本用法为运行vim something.txt打开文件,然后按i键编辑文件,此时可以直接打字,完成后按ESC键,输入:wq保存并退出,或输入:q!不保存直接退出。

因为学习难度较大,我们更推荐大家使用开箱即用的VS Code。

Vim的用法非常丰富,如有兴趣可以通过Vim自带的教程程序 vimtutor 学习(直接在命令行输入这个即可),也可以通过Vim学习网站学习,也可参考视频

Git

Git的常用操作可以通过Git学习网站学习,也可参考视频。完整的官方文档可以运行man git查阅。

你也可以使用图形化的Git界面,如VS Code的git插件。

此外,要将代码库上传到云端,你可能需要注册一个GitHub或其它类似网站的账号。本课程暂时不会涉及需要使用git的场景,但或许你可以注册一个账号给我们的课程网站仓库一个star

SSH

在ICS课程中没有直接使用SSH连接服务器的内容,但你可能会需要在Git中使用SSH。SSH的完整文档可以通过man ssh查阅。

如果你从未使用过SSH,你可能需要为自己创建一个密钥对,参考指令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"。密钥对的默认保存位置为 ~/.ssh/,其中的 id_rsa 为私钥,id_rsa.pub 为公钥。 请务必妥善保管你的私钥,不要将其发给别人!

VS Code

建议安装一个好用的代码编辑器,如VS Code。如果你使用的是VMWare,需要将VS Code安装在虚拟机里,并可以在本机上也安装一份,以便编写代码。如果你使用的是WSL 2,建议直接将VSCode装在本机上,可使用本机上的VS Code编辑和运行虚拟机中的代码

VS Code会提示你安装常用插件,本文不再给出插件安装的建议。

关于VS Code安装与配置的更多问题,可参考VS Code官方文档

WSL2常用用法: code some.txt 即可用Windows上的VSCode打开文件。 code . 即可用Windows上的VSCode打开当前文件夹。