====== Running MINIX 3 on VirtualBox ======
This page describes the process of installing MINIX 3 on VirtualBox.
===== Preliminaries =====
Please install [[http://www.virtualbox.org|VirtualBox]]. VirtualBox binaries can be downloaded from their webpage. If you're running a Linux distribution, you can install VirtualBox via the package manager.
===== Virtual Machine Setup =====
Before you install Minix 3, you will need to create a new virtual machine configuration. The VM configuration specifies the parameters of your Virtual machine, e.g., how much memory you want the VM to use, how big you want the virtual hard disk to be, etc.
In the main screen of ''VirtualBox'', press the big **New** button.
- Press **Next** in the Welcoming Screen.
- At the //VM Name and OS Type screen//, for //Name// write **MINIX3**. //Operating System// and //Version// select **Other**.
- At the //Select a Guest Operating System//, select **Other** and Version **Other**.
- For //Virtual Machine Name//, write **MINIX3** (anything would work).
- At the //Memory// screen, select the amount of memory for this Virtual Machine. 256 MBs is more than enough.
- In //Virtual Hard Disk// screen we set the size and properties of the Virtual Hard Disk. The default is a 2GBs partition, which is sufficient.
- Pressing **Finish** will create the Disk Image and the Virtual Machine that we will run.
Select network configuration and choose an adapter PCNET-PCI II (am79c970a).
===== Installation =====
Assuming you have downloaded and decompressed a MINIX 3 ISO image from the [[http://www.minix3.org/download|download page]], you can mount the ISO file:
- Select **MINIX3** on the list on the left.
- In the menu on the right, press **CD/DVD-ROM**.
- In the next menu, tick **Mount CD/DVD Drive**, and select **ISO Image File**.
- Browse, select the **.iso** Minix image we downloaded earlier and press **OK**.
Then you can follow the [[.:doinginstallation#runningsetup|normal installation instructions]].
**Warning: select Lance for network adapter.**
7 lance - AMD LANCE (also emulated by VMWare and VirtualBox)
When the installation is over, type
shutdown
to exit Minix. When you get the **d0p0s0>** prompt, select **Machine-Close-Power off the machine** from the menu, in order to shutdown the Virtual Machine.
===== Booting MINIX 3 =====
Now you have installed MINIX 3 on the virtual machine. First thing that needs to be sorted, is that next time you boot, you want to boot from the operating system, and not from the CD image.
- In the menu on the right, press **CD/DVD-ROM**.
- In the next menu, untick **Mount CD/DVD Drive**
Great, now you can boot into the newly installed operating system.
- Press the big Start Button on the main menu.
===== Post-install Configuration =====
You should read [[.:postinstallation|Post Installation]] for some configuration tips.
==== X.org ====
VirtualBox's guest additions are not available for MINIX3. Therefore, MINIX cannot correctly guess the screen resolution. The desired screen resolution has to be set manually in the xorg.conf file.
=== Changing screen resolution ===
Make sure you are not running X!
Login as root, and run the following command:
# Xorg -configure
This command should create a ''xorg.conf.new'' file in ''/root''.
In ''Section "Screen"'' from ''xorg.conf.new'' file, make sure to remove all ''SubSection "Display"'', except the one containing: ''Depth: 16''.
Add the desired screen resolution. Possible screen resolutions can be found in ''/var/log/Xorg.0.log''. Search for ''Modes:'' containing ''BitsPerPixel: 16'', this is important!.
Example:
*Mode: 117 (1024x768)
[...]
XResolution: 1024
YResolution: 768
[...]
BitsPerPixel: 16
[...]
These resolutions can be added to the newly generated ''xorg.conf.new'' (in the example above: ''1024x768''). I was able to use the following resolutions: ''320x200'', ''640x480'', ''800x600'', ''1024x768'', ''1280x1024'', ''1152x864''.
Add the desired resolution to the ''Modes:'' key in ''SubSection "Display"''.
Example:
[...]
Section "Screen"
[...]
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1024x768"
EndSubSection
EndSection
[...]
The ''xorg.conf.new'' file can now be moved to ''/usr/pkg/X11R6/lib/X11/xorg.conf'':
# mv xorg.conf.new /usr/pkg/X11R6/lib/X11/xorg.conf
Test the new configuration file with by starting ''X.org'':
# startx
=== Sample xorg.conf ===
Sample xorg.conf, location: /usr/pkg/X11R6/lib/X11/xorg.conf
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
RgbPath "/usr/pkg/X11R6/lib/X11/rgb"
FontPath "/usr/pkg/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/pkg/X11R6/lib/X11/fonts/TTF/"
FontPath "/usr/pkg/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/pkg/X11R6/lib/X11/fonts/CID/"
FontPath "/usr/pkg/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/pkg/X11R6/lib/X11/fonts/100dpi/"
EndSection
Section "Module"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/mouse"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Device"
Identifier "Card0"
Driver "vesa"
VendorName "Unknown Vendor"
BoardName "Unknown Board"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1152x864"
EndSubSection
EndSection
===== Port Forwarding =====
VirtualBox has eight networking adapters and can be separately configured to operate in one of the following six modes:
* Not attached.
* Network Address Translation (NAT).
* Bridged networking.
* Internal networking.
* Host-only networking.
* Virtual Distributed Ethernet networking.
It is possible to browse the Web, download files and view e-mail inside the guest (MINIX 3) with the [[http://en.wikipedia.org/wiki/Network Address Translation|Network Address Translation]] mode. In this default mode (NAT) the guest operating system can not access the host machine or other computers on the same network and vise versa. However, like a physical router, !VirtualBox can make selected services available through [[http://en.wikipedia.org/wiki/Port_forwarding|port forwarding]]. This means that VirtualBox listens to certain ports on the host and resends all packets which arrive there to the guest, on the same or a different port.
For example, to forward SSH traffic from host machine to guest machine on port 22 or vise versa:
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,22,,22"
The "VM name" is the name of VM on the VirtualBox management screen, and "guestssh" is purely descriptive name and will be auto-generated if omitted.
Connecting to guest machine with following command on host machine
ssh -p 22 localhost
The guest operating system is available for host machine and other machines on the network as well though the same port 22 at the host's IP address (if host machine firewall allows it). This is useful for remote development and navigation with [[..:developersguide:eclipsetutorial|Eclipse Remote System Explorer]].
===== Workarounds =====
==== VirtualBox 3.1 ====
VirtualBox 3.1 is not able to boot MINIX 3. Please use VirtualBox 3.2.
==== MINIX 3.1.5 - 3.1.8 install issue (w/o hardware acceleration) ====
Symptom: kernel panic right after boot menu (CD loads and displays boot menu but panics right after)
Workaround:
- If you can enable hardware acceleration:
* Verify that your processor has the virtualization extensions (VT-x, AMD-V)
* Enable hardware acceleration in your BIOS.
* Go to the Settings dialog for your VM image. Right-click your image and click **Settings**.
* Click on **System**
* Click on the **Acceleration** tab.
* Check **Enable VT-x/AMD-V**.
- If you aren't able to use hardware acceleration (e.g. VirtualBox 3.1.2 + Core 2 Duo + Minix 3.1.5):
* Follow all the installation steps as above.
* Uncheck **Enable VT-x/AMD-V**.
* Start your VM with this command: ''VBoxSDL --startvm minix --norawr0 --norawr3''.
* Replace your VM image's name for //minix// in the preceding command.
* VirtualBox 4.0 has not **Enable VT-x/AMD-V** button, while you can just issue this command to avoid kernel panic during installation: ''VBoxSDL --startvm minix --norawr0 --norawr3''
==== Lance workaround ====
In MINIX 3.1.3, the Lance driver set-up is broken, resulting in **no network support** for Minix3 in ''VirtualBox''.
You can use [[.:lancefix|this set of instructions]] to get the Lance driver to work.
===== Time zone issues =====
If you have configured a time zone in MINIX3 (by for example putting the line "export TZ=CET" in /etc/rc.timezone), and you find that your **clock** (printed by for example the "date" command) ends up being **ahead** of real time by one or more hours, then take the following steps (tested on VirtualBox 4.1.6):
- Shut down and power off the virtual machine (at the moment this requires a hard power-off through the VirtualBox GUI);
- Go to the //Settings// of the virtual machine;
- Go to the //System// tab;
- Under //Extended features//, check the "Hardware clock in UTC time" option;
- Click on //OK// to save the change;
- Restart the virtual machine, and the problem should now be fixed, even though the "wrong" (GMT) date will be printed at bootup.
Note that if your clock is **behind** for any reason, the MINIX3 **vbox** VirtualBox time sync driver will automatically correct the time for you.