%%{init: {'theme': 'neutral', 'themeVariables': { 'fontFamily': 'monospace', "fontSize":"16px"}}}%%
flowchart TD
  VM("Virtual Machine")
  Linux("Linux Distro 🐧")
  HostSystem{"Host<br>Operating<br>System"}
  CPU("Virtual CPU")
  RAM("Virtual RAM 🧠")
  Disk("Virtual Disk 💽")
  HostSystem-->VM
  VM-->Linux
  VM-->CPU
  VM-->RAM
  VM-->Disk
  
    style HostSystem fill:#fefefe,font-size:16px,stroke:#000,stroke-width:1px,rx:3,ry:3
    style VM fill:#,font-size:15px,stroke:#000,stroke-width:2px
    style Linux fill:#fefefe,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
    style CPU fill:#efefef,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
    style RAM fill:#efefef,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
    style Disk fill:#efefef,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
Set-Ups
This section details the practical aspects of preparing your environment to work with a Linux system. We’ll cover options for setting up a virtual machine and working with shells and terminals.
Virtual Machines
Virtual Machines are software-based emulations of a physical computer that allow users to run Linux distributions in an isolated environment, utilizing virtualized hardware resources from the host system.
This chapter covers virtualization software options, various Linux distributions, and provides an example of setting up Ubuntu on VirtualBox.
Shells
Shells are the command-line interpreters that allow users to interact with the operating system by executing commands and running scripts.
%%{init: {'theme': 'neutral', 'themeVariables': { 'fontFamily': 'monospace', "fontSize":"16px"}}}%%
flowchart TD
    Shell["Shell"]
    Shell --> Exec("Executes Commands")
    Shell --> Script("Runs Scripts")
    Exec --> OS["Host Operating System"]
    Script --> OS
    style Shell fill:#fefefe,font-size:14px,stroke:#000,stroke-width:2px,rx:3,ry:3
    style Exec fill:#fefefe,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
    style Script fill:#efefef,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
    style OS fill:#efefef,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
    
Terminals
Terminals are text-based interfaces that allow users to interact with the operating system by entering commands directly.
%%{init: {'theme': 'neutral', 'themeVariables': { 'fontFamily': 'monospace', "fontSize":"16px"}}}%%
flowchart TD
    User[User] --> Term["Terminal<br>Emulator"]
    Term --> Shell["Shell<br>(Command<br>Processor)"]
    Shell --> Prog["Other Programs"]
    Shell --> Out["Returns Output"]
    Prog --> Out
    style User fill:#,font-size:16px,stroke:#000,stroke-width:1px
    style Term fill:#fefefe,font-size:14px,stroke:#000,stroke-width:2px,rx:3,ry:3
    style Shell fill:#fefefe,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
    style Prog fill:#efefef,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3
    style Out fill:#efefef,font-size:14px,stroke:#000,stroke-width:1px,rx:3,ry:3