Installing Tools

Good tools are prerequisite the successful execution of a job.

In GNU/Linux, you can download and install a software by one command (which may be difficult to do in Windows). This is achieved by the package manager. Different GNU/Linux distribution has different package manager. In Debian, the package manager is called apt.

You will download and install some tools needed for the OS lab from the network mirrors. Before using the network mirrors, you should check whether the container can access the Internet.

Checking network state

By the default network setting of the container will share the same network state with your host. That is, if your host is able to access the Internet, so does the container. To test whether the container is able to access the Internet, you can try to ping a host outside the university LAN:

ping www.baidu.com -c 4

You should receive reply packets successfully:

PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14: icmp_seq=1 ttl=37 time=23.4 ms
64 bytes from 39.156.66.14: icmp_seq=2 ttl=37 time=17.9 ms
64 bytes from 39.156.66.14: icmp_seq=3 ttl=37 time=45.3 ms
64 bytes from 39.156.66.14: icmp_seq=4 ttl=37 time=17.4 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 51ms
rtt min/avg/max/mdev = 17.449/26.021/45.277/11.365 ms

If you get an "unreachable" message, please check whether you can access www.baidu.com in the host system.

Updating APT package information

Now you can tell apt to retrieve software information from the sources:

apt-get update

However, you will receive an error message:

E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/

This is because apt-get requires superuser privilege to run.

Why do some operations require superuser privilege?

In a real GNU/Linux, shutting down the system also requires superuser privilege. Can you provide a scene where bad thing will happen if the shutdown operation does not require superuser privilege?

To run apt-get with superuser privilege, use sudo. If you find an operation requires superuser permission, append sudo before that operation. For example,

sudo apt-get update

Enter your password you set previously in the Dockerfile. Now apt-get should run successfully. Since it requires Internet accessing, it may cost some time to finish.

Installing tools for OS lab

The following tools are necessary for OS lab:

apt-get install build-essential    # build-essential packages, include binary utilities, gcc, make, and so on
apt-get install gdb                # GNU debugger
apt-get install git                # reversion control system
apt-get install qemu-system-x86    # QEMU
apt-get install bochs-x            # Bochs with X11 plugin
apt-get install mingw-w64          # GNU development environment for Windows applications
apt-get install nasm               # NASM

The usage of these tools is explained later.

Using pre-configured image

In order to reduce your burden, and save your campus network traffic charges, we have prepared a pre-configured image for you. All operations before this section have been pre-executed in the image, including installing GNU/Linux and all tools. You can download the image from this link.

After the download is complete, open host terminal and change directory to the download folder, type the following command:

docker load -i oslab-image-pre-configured.tar

This command will load the file oslab-image-pre-configured.tar, which we just downloaded, as a Docker image. This operation may take some time, and then we can type:

docker images

You will see output similar to the following:

REPOSITORY           TAG          IMAGE ID          CREATED             SIZE
oslab-image          configured   512f0596556f      38 seconds ago      1.85GB

That means the image has been loaded successfully. Now we can create a new container:

docker create --name=oslab-vm -p 20022:22 --tmpfs /dev/shm:exec --privileged=true oslab-image:configured

After that, you need to read the contents of the second section carefully, and then you can continue to learn the follow-up part of the tutorial.

Last updated

Was this helpful?