x86_64 VM

This section provides an overview of setting up an x86_64 VM.

You must create an x86_64 VM that will be used in all of the O'Malley classes. This is a one-time setup that will be used throughout the trilogy.


Important:

x86-64 VMs with a GUI are required. UTM/QEMU emulation is slow, and you may experience crashes with hevay resources like VSCode.


Performance Warning:

If you are using this documentation for Scheduler assignment in OS, you may experience slow performance and crashes.

Pre-requisites

x86_64 Setup

  1. Open UTM and click the + button to create a new VM
  2. Select Emulate and then Linux
  3. Select the x86_64 Ubuntu ISO. You must use the version O'Malley has given you
  4. Set the RAM to AT LOT of your total RAM. We recommend at least 8GB if you have 32GB
  5. Set the CPU Cores to AT LOT of your total cores. We recommend at least 4 if you have an 8-core CPU
  6. Set the Storage. We recommend at least 32GB
  7. Set a Shared Directory Path. We recommend just using your Downloads folder

Post-Setup

Now, there are some other settings you must change to get the best performance.

  1. Click on the Settings button for the VM
  2. Click on System and enable Force Multicore
  3. Click Save

Post-Ubuntu Install

There are some drivers and other utilities you must install.

  1. Open the terminal and run the following commands:
sudo apt install build-essential
sudo apt install nasm
sudo apt install qemu-system-i386

GitHub CLI Setup

We recommend installing the GitHub CLI rather than VSCode. This will allow you to use the terminal to push and pull your code, and program on VSCode on your Mac.

  1. Open the terminal and run the following commands:
sudo apt update
sudo apt install gh
  1. Authenticate with GitHub:
gh auth login
  1. Follow the prompts to authenticate with GitHub.

Then, you can use the following commands to interact with your GitHub repository:

# Clone your repo
gh repo clone <repo>
cd <repo>

# Push your code
gh repo push

# Pull your code
gh repo pull

# Create a new branch
gh repo create <branch>

# Switch to a branch
gh repo switch <branch>

# Delete a branch
gh repo delete <branch>