Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 1

Penguin, ChromeOS, and Linux Distributions

Recommended resources

Welcome to your first lesson on Linux! The goal of this course is to get you comfortable using Linux as a daily operating system, building on the experience you already have with the Linux environment on your Chromebook.

In this introductory lesson, we will demystify the specific Linux setup you are using. We'll explore exactly what the "Penguin" environment is, how it fits within ChromeOS, and what it means to be a "Linux distribution." By the end, you'll have a clear mental model of the system you're working with, which will be the foundation for everything we do next.

Your Chromebook's Secret: ChromeOS and Linux

You might be surprised to learn that you've been using Linux all along. ChromeOS, the operating system on your Chromebook, is built on top of the Linux kernel. The kernel is the absolute core of an operating system; it's the fundamental piece of software that manages the computer's hardware and resources.

However, just having a kernel isn't enough to make a complete, usable operating system. ChromeOS adds its own unique, web-focused user interface (the Chrome browser) and a specific set of applications and security features. This is why it feels very different from what people typically call a "Linux system."

To understand this better, let's look at a brief explanation.

Is ChromeOS Linux? — linuxvox.com

This article clarifies the relationship between ChromeOS and the Linux kernel.

Please read the section under the heading "Fundamental Concepts". It explains that while ChromeOS uses a Linux kernel, it is not a traditional Linux distribution due to its different interface and focus.

So, while ChromeOS is powered by Linux, it's designed for simplicity and security, which historically made it difficult to use the development tools you might be familiar with from your web development studies. To solve this, Google created an official feature to run a more traditional Linux environment inside ChromeOS. This feature is officially called the "Linux development environment," but its project codename is Crostini.


Understanding the Crostini Architecture

When you open the Terminal app on your Chromebook, you're not just running a simple program; you're accessing a sophisticated, multi-layered environment. The primary goal of this architecture is security—it isolates the Linux environment from the core ChromeOS system, so nothing you do inside Linux can accidentally break your Chromebook.

This architecture consists of three main layers stacked on top of each other:

  1. ChromeOS: Your main operating system.
  2. A Virtual Machine (VM): A special, lightweight VM named termina. A VM acts like a complete, separate computer running inside your actual computer. This provides a strong security boundary.
  3. A Container: Inside the termina VM, there is a container named penguin. This is where your Linux files and applications actually live. Containers are a more lightweight form of virtualization than VMs; they isolate software without needing to emulate an entire computer.

This "container inside a VM" approach provides the best of both worlds: the strong security of a VM and the flexibility of a container.

The following diagram illustrates this layered structure.

This diagram shows how Linux applications on your Chromebook run inside the 'penguin' container, which itself runs inside the 'termina' virtual machine. This entire structure is managed by ChromeOS, allowing Linux apps to appear seamlessly on your desktop.

To solidify your understanding of this security-focused design, this short video provides a great overview.

Master Linux terminal commands using Crosh and Crostini in ChromeOS

The presenter explains how Crostini uses virtual machines to create a sandboxed (isolated) and secure Linux environment within ChromeOS.

Watch the segment from this timestamp, where the sandboxed nature of the VM is explained.

Now, let's dive into the official documentation to see the reasoning behind this design.

Linux FAQ | ChromeOS.dev

This FAQ from the ChromeOS developers explains why they use this specific architecture.

Please read the following two sections: Start with the section "Why run VMs?" This explains why a VM is used for security instead of just a container. Next, read the section "Why run containers inside the VM?" This explains why your applications live in a container (penguin) instead of directly in the VM (termina). At the end of this section, you'll also see the official names for the default container (penguin) and VM (termina).

By now, you should have a clear picture: when you launch the Terminal, ChromeOS starts the termina VM, which in turn starts the penguin container, giving you access to a Linux command-line environment.


What Is a Linux Distribution?

We've established that your penguin container runs a Linux environment. But what does that actually mean? You'll often hear the term Linux distribution, or "distro" for short.

"Linux" itself is just the kernel. A distribution is the complete package: it takes the Linux kernel and bundles it with all the other necessary software to create a full operating system.

A Linux distribution bundles the Linux kernel with additional software, such as a package manager, system tools, and applications, to create a complete operating system. Examples include Debian, Ubuntu, and Fedora.

This "additional software" includes:

  • Core Utilities: Basic command-line tools (like ls and cd that you already know) that allow you to interact with the system.
  • A Package Manager: A tool for installing, updating, and removing software. This is a critical component you'll learn about later.
  • A Desktop Environment: The graphical user interface (GUI), including the desktop, windows, and menus.
  • Default Applications: A pre-selected set of applications, like a web browser, text editor, and file manager.

The video below gives an excellent breakdown of these components.

Linux DISTRIBUTION: explained

This video from The Linux Experiment explains the different components that make up a Linux distribution.

Watch the following segments to understand what makes a complete Linux OS: Introduction: The initial definition gives a quick summary. The Kernel: This part explains the role of the Linux kernel as the base of the system. Core Tools: This section describes the "GNU toolchain," which provides the essential command-line utilities. Package Manager: This part explains how a package manager works to install and manage software. This concept will be very important in a future lesson.

Different distributions bundle different software and have different philosophies. Some are designed for stability and are used in servers, while others focus on providing the very latest software for desktop users.

Your penguin container runs a specific, very popular, and influential distribution called Debian. It is known for its stability and large software repositories. Many other famous distributions, like Ubuntu, are based on Debian.

Knowing you are running Debian is important because it determines the package manager you will use (apt) and some of the system's default configurations, which we will cover in upcoming lessons.


Conclusion

In this lesson, we've put your Linux environment under the microscope. You now have a solid conceptual map of how it works.

Here are the key takeaways:

  • ChromeOS itself is built upon the Linux kernel but is not a traditional Linux distribution.
  • The "Linux development environment" (codenamed Crostini) allows you to run a standard Linux system on your Chromebook in a secure way.
  • The Crostini architecture uses a Virtual Machine (termina) to isolate the environment from ChromeOS and a container (penguin) inside it to run your applications.
  • A Linux distribution is a complete operating system made from the Linux kernel plus a collection of other software like system tools and a package manager.
  • Your penguin container runs the Debian distribution of Linux.

Now that you understand the structure of your environment, our next step will be to explore what's inside it. In the next lesson, we will navigate the Linux filesystem and learn the purpose of its most important directories.