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 heavy resources like VS Code.

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 A LOT of your total RAM. We recommend at least 8GB if you have 32GB
  5. Set the CPU Cores to A 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 VS Code. This will allow you to use the terminal to push and pull your code, and program on VS Code 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
git push

# Pull your code
git pull

# Create and switch to a new branch
git checkout -b <branch>

# Switch to a branch
git checkout <branch>

# Delete a branch
git branch -d <branch>