Virtualization Notes
What is virtualizationvirtualization?
- In computing, it means that we are giving the illusion of something physical, when in reality it may not be physically tangible.
- Virtual memory - the operating system thinks that there is enough memory to run many processes.
- Virtual disks
- a.k.a RAM disks uses memory to give the illusion of a physical drive.
- CD/DVD images can be mounted as if they were a physical device.
- Virtual file systems - make all different file systems look the same. (FAT32, NTFS, AFS, XFS, Btrfs, etc.)
- So, a virtual machinevirtual machine (computer) is a logical representation of a machine in software.
- In fact, early CD players for computers tried to recreate the look of a real, physical CD player:
- Virtual machines have been around since the 1960s.
- Most modern processors provide support for virtualization within the CPU itself.
Why virtualization?
- Cost of ownership. A virtual machine costs less than a real machine.
- Make better use of the computer's resources.
- Virtualization is "green". Less power consumption.
- Need a particular version of an OS to run a particular app. Older OS may not run on newer hardware.
- Isolate programs that could crash the entire system. Only the virtual machine will crash.
- Moving the entire "computer" is simply a file copy operation. Put it on a USB drive and take it anywhere.
- Many others...
Learning Goals: (partial list)
- Install and configure a hypervisor for running
one operating system inside of another. (E.g. running Linux inside of Windows or macOS.)
- Install, configure, and run a Linux operating system (the guest) inside of another running operating system (the host).
- The operating systems don't have to be different. In other words, you can run Linux inside
of Linux or run Windows inside of Windows.
- Configure software repositories.
- Install software from repositories.
- Install software from 3rd party repositories.
- Run certain applications as administrator (root).
- Maintain a Linux operating system by keeping it up-to-date with the latest software.
- Backup and clone your virtual machines.
- Configuring the PATH (very similar to Windows).
- Install and configure multiple compilers and development tools (e.g. gcc, clang, make, valgrind, doxygen, etc).
- Run Windows software inside of Linux using Wine.
- Setting appropriate permissions on files.
- Setting up aliases and shortcuts.
- Getting help from the manual pages (man pages).
- Experiment with text editors (or Google them):
- Experiment with visual diff tools (or Google them):
- Experiment with various terminals (or Google them):
Like everything in life, you get out of it what you put into it. If you choose to put very
little time and effort into this course, you will get nothing out of it. If you choose to
accept the challenge of learning another operating system, then you will be rewarded with
knowledge, skills, and a well-paying job!