Posts filed under ‘suse’
This blog documents my experience with running Novell Opensuse 11.2 on Acer Aspire 3680-2633. Previously, this laptop had been running Linux Mint 8. I decided to give Opensuse a tried again.
Suse used to be one of the most popular distros. It is still popular but its popularity has been eclipsed by Ubuntu. One reason to try Opensuse is that it’s a fairly Gnome / KDE neutral distro. Unlike Ubuntu and Mint, which comes in separate Gnome and KDE editions, Opensuse allow you to install either Gnome and KDE from the same disc.
Opensuse also worked a bit to tweak their desktop and supposedly have better integration with Microsoft stuff. They also have a build service where different developers can share build packages. I used it to get a build of the wicd. My reason for trying Opensuse again was to play around with mono and just plain curiousity since I use Suse a long time ago and was wondering how they improved.
According to uname -a, my machine is running kernel 22.214.171.124-0.1-desktop126.96.36.199-0.1-desktop. Note that I install the Gnome desktop.
|Hardware Component||Status under OS||Notes|
|Intel Celeron M520 1.6 Ghz CPU||Working||Note that there is no frequency or voltage scaling on this Celeron.|
|Intel 943 GML Video||Working||Compiz seems to work perfectly.|
|14 inch LCD||Working||Brightness function keys works.|
|Intel 82801G HDA Audio||Working with slight modifications||Correctly detected headphone and disable speaker.Volume function keys work. For some bizarre reason, you can set your volume control to 150%, which makes the laptop speaker actually audible (this laptop has terrible speakers).
You can mute by pressing Fn+F8, but cannot unmute. This is apparently a Gnome configuration issue.
|2 Gb RAM, DDR2||Working||The full 2 Gb ram is available.|
|Western Digital WD800BEVS 80 Gb SATA Hard Drive||Working|
|Optiarc CD-RW CRX880A||Working|
|Keyboard||Working||Many of the Hot keys works.|
|Marvel 88E8038 PCI-E Ethernet||Working|
|Atheros AR2413 802.11bg Wireless||Working with modifications||Connection is only reliable if you install madwifi,which is available as a package, but the package turned out to be unreliable. I ended up building madwifi from source.You’ll also need to use wicd to maintain a steady connection. Wicd is available through the Opensuse build service.|
|Modem||Untested||Unlike Linux Mint, no soft modem driver is offered.|
|TI 5-in-one Card Reader||Working||Tested only with SD card|
|TI Cardbus||Untested||Probably works|
|Sitecom Bluetooth (third party install)||Working||This is a USB module that plugs into the Acer 3680′s internal bluetooth connector. Note that this is a third party module.|
|Laptop Power Management||Working||Note that Celeron do not have frequency scaling. Sleep and hibernation works properly.|
|Suspend to RAM||Working with Modification||Suspends works fine with ath5k. Too bad ath5k doesn’t work with the wireless. Need to add ath_pci to the unload modules list.|
|Suspend to Disk||Working|
|Multimedia playback||Working||Was unable to get Totem to work, but was able to install vlc and mplayer and play virtually all of the video formats without issues.|
Unlike Fedora 12, I encountered no strange install errors during installation. Unlike Linux Mint, there were no mysterious kernel panic lockups. Madwifi was also available as a package, which means I didn’t have to compile madwifi. Wicd package was available in Opensuse’s build service, but was more tricky to install than Linux Mint.
If you like Mono, this may be the distribution to use since MonoDevelop is almost always available for Opensuse. However, I was able to easily found the latest MonoDevelop for Ubuntu based distros.
You will need an ethernet connection since your wireless will not be working during the install. One gotta to watch out for is that Opensuse defaults to automatic login. If you don’t like automatic login, you should keep an eye out of the option and uncheck it. The automatic installation option makes the installation faster, but it doesn’t give you an option to set the host name. You can set it later. Another nice touch is that Opensuse automatically detected my “/”, “/home”, and swap partitions on my hard drive.
- Install Opensuse 11.2 on the laptop. I used the default options except for partitioning, which I setup with a 3 partition for “/”, “/home”, and swap. When setting up partition, make sure you have a swap that’s at least 2 Gb. The reason is that when you hibernate, it will save the memory to swap and you will need swap space that’s the same size as your RAM or larger. I also make sure that I did not use automatic login. I also disabled UTC because I plan to run windows under Virtualbox. It’s not easy to make windows use UTC time.
- Shutdown and hook the laptop to Ethernet.
- Restart the laptop. The Opensuse installer will use the connection to download the rest of the software.
- After installation, login, click on YAST and go to Network Settings and set your host name (since I didn’t like the default one set by the installer.
- Do a software update.
Opensuse has GUI method of installing madwifi, but it’s faster to copy and paste from the command line. So a lot of the following madwifi install will be using the command line.
Fixing the Unmute issue
When you press Fn+F8, the volume mutes, but pressing the hotkey again does not unmute. According to Novell, this is because they are following Thinkpad convention; this is contrary to the behavior on the other distros. To correct, do the following:
- Run Gnome Configuration Editor.
- Go to /apps/gnome_settings_daemon/
- Set toggle_mute to true (default is false).
As in both Linux Mint 8 and Fedora 12, ath5K is not yet reliable enough for use with the Acer 3680′s Atheros wireless. I encountered massive drop outs and low performance of less than 1 Mb. Based on my previous experience with Linux Mint, the NDISwrapper will not work with WPA authentication. Note that I am using WPA2 with AES.
I originally use the wireless from the repository in http://download.opensuse.org/repositories/driver:/wireless/openSUSE_11.2 using the madwifi madwifi-kmp-desktop. Initially, it worked great, but then would mysteriously stop working completely for several hours. WPA authenication which worked fine before would stopped working. Reboots and removing the battery did not resolve the issue. Eventually the problem will clear on its own only to return again. To resolve the problem, I downloaded the madwifi and installed it.
- Download the madwifi to your home directory. I use the following driver: http://snapshots.madwifi-project.org/madwifi-0.9.4-current.tar.gz
- Extract the archive.
- Open a terminal window and become super user.
- cd to the madifi directory you extracted and run the following commands:
zypper install gcc make linux-kernel-headers kernel-desktop-devel make clean make make install
- Add a file “50-blacklist-ath_pci.conf” to the /etc/modprobe.d directory with the following lines:
- Add a file “60madwifi” to /etc/pm/config.d and add the following line:
This will tell the OS to unload ath_pci during suspend, otherwise suspend may fail.
- Reboot the computer.
The Gnome network manager does not work reliably with the madwifi. Every 10 minutes or so, it would drop the wireless connection and then reconnect. Normally, this will not interrupt a download because it recovers before download times out, but it is very annoying to get URL not found when you are web surfing and will disconnect your remote desktop sessions. From my experience with Linux Mint, the KDE network manager has the same problem. There is an alternate network manager call wicd which appears to be entirely stable and do not have the disconnect issue.
Wicd is not available in the standard repository, but it appears that it is available through the Opensuse build service.
Wicd do not co-exists well with Network Manager. After install wicd, the Network Manager should be removed to avoid conflict.
- Open a terminal window and become super user.
- Enter the following lines:
zypper -v ar http://download.opensuse.org/repositories/home:/dmitry_serpokryl:/Enlightenment-cvs-core-metapackage/openSUSE_11.2/ Wicd zypper mr -r Wicd zypper install wicd
- When prompted about the key, enter a and return.
- Answer y to install the package.
- We need to delete the network manager:
zypper remove NetworkManager
- Answer y to remove the package.
- In YAST, Network Configuration. change the network method to “Traditional Method with ifup”. Click on OK.
Like most Linux distros, Opensuse comes with no restricted codec support. Fortunately, Opensuse now offers a one-click install. However, part of the installation can be confusing.
- Go to http://opensuse-community.org/Restricted_Formats/11.2.
- Click on the one-click for your desktop (gnome, kde, etc).
- Press OK to use the Yast Meta Package Handler to open the ymp file.
- Keep clicking on next until you get a warning asking if you review the changes. Press Yes. You may need to enter your admin password.
- When prompted to enter a key, press Import.
- At some point, you will receive several prompt stating “There are some conflicts on the transaction that must be solved manually”. The dialog wil list a bunch of packages with a conflict issue. Each package listed will be have several options including options to install, not install, and break dependency. For each package, make sure you select the radio button for install (with vendor change).
- Press Apply to do the actual installation.
Unfortunately, after you complete the installation, you’ll find that streaming from your web bowser does not work for a lot of the podcast. Many of the podcast will start playing and then stop with an error. Apparently, the built-in Totem browser plug-in does not work very well. An alternative is the vlc browser plug-in, but that is unacceptable because player has no visual controls, forcing you to navigate by keys. I eventually settle on the using the Gecko Media Player. It should available in the Packman repository that you have setup using the one-click.
- You have to had run the one-click for multimedia to add the Packman repository before you start.
- Open a terminal, and go to root.
- Next you want to remove the totem plug-in and replace it with the Gecko Media Player plug-in. You don’t want to remove totem entirely. The Nautilus file manager uses a Totem plug-in (a different one than the browser plug-in) to generate thumbnails. Remove just the Totem plugin by running the following command:
zypper remove totem-browser-plugin
- Once removed, we can install the Gecko Media player by running:
zypper install gecko-mediaplayer
- This should install both Gnome MPlayer and the Gecko plug-in.
- When you first run the Gnome MPlayer, you may get this error:
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
This is caused by Gnome MPlayer attempting to use the default VDPAU for outpput, which does not exists. To fix, open Gnome Mplayer, select Edit->Preference, and enter xv into the video output.
- You may need to go into the browser’s preference and Manage Content Plug-in to add set each MIME type to use the new plug-in.
MonoDevelop 1.0 has finally been release on March 14, 2008. I figured that I’ll install the MonoDevelop since I like an IDE that will do stuff like autocomplete and because Yast should also include all of the dependent components.
I have heard of numerous problems with installing MonoDevelop on linux distros because a package were not available. I was expecting Novell to make certain that MonoDevelop would install smoothly on Suse 10.3. While installation were far easier on Suse than on other distros, it still was not trouble-free.
The following are instructions on how to install MonoDevelop 1.0 on Suse 10.3. Note that I was installing on a virtual machine, but installation for a real machine should be exactly the same.
Adding the Mono Repository
The first step is to add the Mono distro to Yast, so that the package will appear in the package selector.
- In Suse 10.3, launch Yast. You will be prompted to enter the root password. Enter the password and press OK.
- Click on Software Repositories in Yast. Click on the Add button. Select the option “Specify URL” and press Next. Enter the name of the repository of “Mono Repository” and the URL to “http://www.go-mono.com/download-stable/suse-103-i586″ and the press Next.
- Press Finish. You will be prompted to sign with untrusted public key. Press Trust and Import key. The Software Repository window will close.
Now that the Mono repository has been added to Yast, we can install the MonoDevelop package. This is where the troubles begin. Gnome and Banshee both use an older version of Mono library that was installed by default by Suse. When you attempt to install a new version of Mono, Yast doesn’t like it because you are changing the packages that Gnome and Banshee depend on. The trick is to tell Yast to ignore the dependencies since the library should be backwards compatible (“should” but who knows).
- Click on the Software Management in Yast. This brings up package selector.
- Type “monodevelop” in the search. This brings up MonoDevelop on the left pane.
- Select Monodevelop and press Install. This move MonoDevelop to the right pane.
- Press the Accept button. A change summary window will displaying dependencies.
- Press the Confirm button. A resolve window appears, it will warned you that mono-nunit cannot be installed due to missing dependencies. The problem is that mono-nunit wants a later version of mono-core than the one installed by default by Suse 10.3.
- Click on “Install mono-core although it would change the vendor” and press confirm. You are changing vendors because you are now getting it from the go-mono.com instead of Novell. Now another resolve window pops up. This time it warns that gnome_multimedia, banshee-engine-gst, banshee, banshee-plugins-default, and banshee-plugins-DAAP has missing dependencies. This is because Banshee and gnome-multimedia uses mono-core and you are installing a new version of mono-core.
- Select “Ignore this requirement just here” for each conflict and press Confirm. Selecting the other option and you may find Banshee deleted!
Unfortunately, we are not home free, when I launch MonoDevelop and create a new project, I get the following error:
Exception occurred: Exception has been thrown by the target of an invocation.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.TypeInitializationException: An exception was thrown by the type initializer for MonoDevelop.SourceEditor.Gui.SourceEditorDisplayBinding —> System.DllNotFoundException: libgtksourceview-1.0.so.0
at (wrapper managed-to-native) GtkSourceView.SourceTagTable:gtk_source_tag_table_get_type ()
at GtkSourceView.SourceTagTable.get_GType () [0x00000]
at GtkSharp.GtksourceviewSharp.ObjectManager.Initialize () [0x00000]
at GtkSourceView.GtkSourceViewManager.Init () [0x00000]
at MonoDevelop.SourceEditor.Gui.SourceEditorDisplayBinding..cctor () [0x00000] — End of inner exception stack trace —
at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (object,object)
at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object parameters, System.Globalization.CultureInfo culture) [0x00000] — End of inner exception stack trace —
at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object parameters, System.Globalization.CultureInfo culture) [0x00000]
at System.Reflection.MonoCMethod.Invoke (BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object parameters, System.Globalization.CultureInfo culture) [0x00000]
at System.Reflection.ConstructorInfo.Invoke (System.Object parameters) [0x00000]
at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000]
at System.Activator.CreateInstance (System.Type type) [0x00000]
at Mono.Addins.TypeExtensionNode.CreateInstance () [0x00000]
at Mono.Addins.InstanceExtensionNode.GetInstance () [0x00000]
at MonoDevelop.Ide.Codons.DisplayBindingCodon.get_DisplayBinding () [0x00000]
at MonoDevelop.Ide.Gui.DisplayBindingService.GetCodonPerFileName (System.String filename) [0x00000]
at MonoDevelop.Ide.Gui.DisplayBindingService.GetBindingPerFileName (System.String filename) [0x00000]
at MonoDevelop.Ide.Gui.Workbench.RealOpenFile (System.Object openFileInfo) [0x00000]
at MonoDevelop.Ide.Gui.Workbench.OpenDocument (System.String fileName, Int32 line, Int32 column, Boolean bringToFront, System.String encoding, IDisplayBinding binding) [0x00000]
at MonoDevelop.Ide.Gui.Workbench.OpenDocument (System.String fileName, Int32 line, Int32 column, Boolean bringToFront) [0x00000]
at MonoDevelop.Ide.Gui.Workbench.OpenDocument (System.String fileName, Boolean bringToFront) [0x00000]
at MonoDevelop.Ide.Gui.Workbench.OpenDocument (System.String fileName) [0x00000]
at MonoDevelop.Ide.Templates.OpenFileAction.Run (MonoDevelop.Projects.ProjectCreateInformation projectCreateInformation) [0x00000]
at MonoDevelop.Ide.Templates.ProjectTemplate.OpenCreatedCombine () [0x00000]
at MonoDevelop.Ide.Gui.Dialogs.NewProjectDialog.OpenEvent (System.Object sender, System.EventArgs e) [0x00000]
at GLib.Signal.voidObjectCallback (IntPtr handle, IntPtr gch) [0x00000]
Fixing the dependency issue
A quick search through the google reveal this bug. What seemed to be happening is that an exception is thrown when MonoDevelop attempts to display your code using gtksourceview. Apparently, gtksourceview-2.0.0-5 can not be use in place of gtksourceview18-1.8.5-16. To fix this, do the following:
- Make sure you have the Suse Disc in the drive, since gtksourceview18 is on the disc. Launch Yast.
- Click on Software Management. This launches the Package Selector.
- Type in gtksourceview18.
- Select gtksourceview18 and press Install, and then accept.
- Click confirm on Change summary window.
- When prompted to install or remove more packages, press No.
With gtksourceview18 installed, Monodevelop seems to work now. Banshee still seems to work just fine. Hopefully, the next version of MonoDevelop will be less painful to install.
Problems with Help
When I select Help, I get the following error: “The help window can’t be shown. Monodoc v1.2.3 is not installed or could not be found.”. Apparently, Monodoc is not installed and it wasn’t obvious which package in Yast it was. After some experimentation, I discovered it was the package mono-tools.
- Launch Yast and select Software Management.
- Type in mono-tools in the search, select mono-tools and click install.
Unfortunately, there are additional problems that still needs to be resolved:
- When I toggle the bookmark on my editor, I get the following exception:exception occurred: libglib-2.0.so
at (wrapper managed-to-native) MonoDevelop.SourceEditor.Gui.SourceEditorBuffer:g_slist_free (intptr)
at MonoDevelop.SourceEditor.Gui.SourceEditorBuffer.ToggleMark (Int32 linenum, SourceMarkerType type) [0x00000]
at MonoDevelop.SourceEditor.Gui.SourceEditorBuffer.ToggleBookmark (Int32 linenum) [0x00000]
at MonoDevelop.SourceEditor.Gui.SourceEditorView.OnButtonPressEvent (Gdk.EventButton e) [0x00000]
at Gtk.Widget.buttonpressevent_cb (IntPtr widget, IntPtr evnt) [0x00000]
The following are tidbits I have learn while running Virtualbox on various systems.
Host Related Issues
Running Virtualbox on an Ubuntu Host
There are two issues:
- When you click attempt to open the settings on a virtual machine, you get the following error:
Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might be not installed on the host computer.
The cause of this problem is that usbfs is not turned on in Ubuntu. To fix this, you need to edit the file /etc/init.d/mountdevsubfs.sh (remember to use sudo). Search and uncomment out all of the code lines:
# Magic to make /proc/bus/usb work
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount --rbind /dev/bus/usb /proc/bus/usb
- Unfortunately, this does not solve the problem entirely. When I attempt to access the USB from the guest, I get the following error message.
Failed to attach the USB device
Even though you enabled usbfs, the user do not have permission to use USB. You can set up a rule to give each user access. Because everyone who use Virtualbox has to be in the group vboxusers. The easiest way to give every Virtualbox user access would be to give vboxusers access. Sudo edit the file /etc/udev/rules.d/40-permissions.rules, locate the following line:
# USB devices (usbfs replacement)
Change the line to:
# USB devices (usbfs replacement)
SUBSYSTEM=="usb_device", GROUP="vboxusers", MODE="0664"
Running Virtualbox on a Mandriva Host
When you install Virtualbox on Mandriva (I am using Virtualbox 1.6.2 on Mandriva 2008.1), it throws an exception when I run the VM:
Virtualbox kernel driver not installed.
This error is encountered if I install the Virtualbox OSE from the Mandriva repository or the Virtualbox rpm from Virtualbox.org (note: the version I am using is for Mandriva 2008.0, a 2008.1 was not available). The problem is that Mandriva needs a kernel package to compile the Virtualbox kernel driver. First, you need to determine what kernel module you are using. On a desktop, you are likely to be using kernel-desktop-devel-latest and on a laptop you are likely to be using kernel-laptop-devel-latest. When you boot up your machine, you can see which one you have in the boot menu. You should install Virtualbox in the following order.
- Install the kernel-desktop-devel-latest or kernel-laptop-devel-latest (depending on whether you have a laptop or desktop). This must be install first because Virtualbox need it to compile a new kernel module.
- Download and install the Mandriva Virtualbox rpm from Virtualbox.org
- Add the users that will use Virtualbox to the group vboxusers.
Guest Related Issues
Installing guest additions on CentOS / RedHat
The following have been tested on CentOS 5.2 and 5.4, which is a clone of RedHat enterprise Linux 5.2. You’ll need to install the gcc and kernel source by running the following command as root:
yum install gcc -y yum install kernel-devel -y
When you run the Linux addition, you’ll get an error indicating that the Linux module cannot be built. Before you compile, you need to set the KERN_DIR variable. To figure out where the directory is, go to /usr/src/kernels. Inside should be the kernel version directories.
type the following command:
The command will return the kernel version and the type of processor. For example, mines return the following:
In the /usr/src/kernels is the directory 2.6.18-164.11.1.el5-i686, so we will set the directory using the command:
Now you can run the Linux Additions.
After the installation, you may notice that the OS was unable to detect the correct resolution, so you have to manually add the the appropriate modes line to your display section. The following is an example from my laptop:
Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1280x800" EndSubSection EndSection
Note that seamless and automatic guest display will not work because it requires xorg server 1.3 or later. CentOS / RHEL 5.2 only has version 1.1.
Installing guest Additions on Linux Mint
Install build-essentials. This will install the kernel header, source, and compiler so you can run the guest additions.
Installing guest Additions on Suse 10.3
When you try to run the guest addition, you’ll get an error message that you have to install header, source, and gnu c. You need to use YAST to do the following
- Use YAST and add OSS source to the repository list.
- Install the packages gcc, kernel-source, linux-kernel-headers.
After the header, source and compiler is installed, the guest additions seems to work only some of the time. Suse runs the init scripts in parallel and sometimes the vboxadd script end up running after the Xorg.
There are two way to fix this:
- Set RUN_PARALLEL=no in /etc/sysconfig/boot. This may cause a slight delay in runtime.
- You can add a dependency to /etc/init.d/.depend.start so that vboxadd is executed after xorg. To do this, find the line for xdm: and add vboxadd to the end of the line. If you reinstall the guest addition, you may have to do this again.
Shared Folder on a Linux Guest
Virtualbox allow you to pass data between host and guest through a shared folder. The instructions in the manual is not necessary very clear. The manual states that you are suppose to run the following command in a Linux host to mount the shared folder:
mount -t vboxsf [-o OPTIONS] sharename mountpoint
The trouble is that users may not understand what the sharename and mountpoint is and that shared folder under Linux is quirky and weird.
Here’s how it works, in the settings for each machine, you can add a shared folder. The process is fairly intuitive, you click on the add button and select a directory where the share directory will be a sharename is automatically created. This is the share name you will use in the mount command. The mount point is simply a directory that you will mount the share folder to. You will have to do this as root or use sudo. For example:
mount -t vboxsf vshare /home/paulsiu/vshare
The problem is when you tried this, you get the following error:
/sbin/mount.vboxsf: mounting failed with the error: Protocol error
If you look at syslog, you’ll see the following error:
Nov 8 19:28:09 wxbuilder kernel: vboxvfs: sf_glob_alloc: vboxCallMapFolder failed rc=-102
Nov 8 19:28:09 wxbuilder kernel: sf_read_super_aux err=-71
Apparently, you’ll only get this error if you use the default sharename. When you create a new shared folder, Virtualbox will ask where your shared directory is on the host. When you select the shared directory, the sharename will default to that directory. If I create a shared folder at “/home/paulsiu/vshare”, virtualbox will generate a sharename of “vshare”. Unfortunately, if you use this default sharename, you will get a protocol error, so you should rename the sharename to something other than default, such as “vboxshare” for example. I have no idea why, but that appears to be what’s happening.
With the new shared name, you can now mount the shared directory. Unfortunately, the directory is mounted as root with the group of root and read writable only by root. Since it is a bad idea to login as root, your shared directory is readonly.
The user manual suggests using the mount options and set the uid, gid, and mode. But the manual lies, you cannot set the mode. The permission on the shared directory is locked to writable by user only. This mean you cannot create a single persistent directory for all users on the system.
One way around this is to create a vshare directory in each of the user’s home directory and have the login script mount the shared directory to this home directory as the user.
mount -t vboxsf -o uid=<user> <sharename> /home/<user>/vshare
Seamless Mode or Auto-resize Guest Display is grey out on a Linux Guest
According to the user manual, you must have Xorg Server 1.3 or later. To check what version you have type the following command at the command line:
If the Xorg X server is lower than 1.3, Seamless and Auto-resizing will probably be disabled. Ironically, enterprise Linux like RedHat, CentOS, and SLED are likely to be using an older Xorg Server, so corporate users will most likely to be hit by this limitation.
Windows guest startup with a inaccessible boot device message
When I boot up windows 2000, I got the message “INACCESSIBLE_BOOT_DEVICE”. The problem was traced to the IDE controller type. I had set the IDE controller to PIIX4 when it was previously set to PIIX3. Setting it back to PIIX3 corrected the problem.
64-bit Guest Issue
You can only install 64-bit OS on a 64-bit host. In addition, you will need hardware virtualization support like Intel VT-x or AMD-V for your cpu. In the case of Intel, be real careful of what cpu you buy because Intel has multiple virtualization technologies. The Intel P7350 (used in popular machines like HP-DV5) is listed on the Intel web site of supporting hardware virtualization, but it appears that it has VT-d and not VT-x. Virtualbox needs Intel VT-x, so if you have a Intel processor and don’t have VT-x, you cannot use a 64-bit guest.
On the Linux box, you generally uninstall the old version and install the new version. On windows, running the installer generally upgrade the old version. There are things to watch out for such as snapshot incompatibility. Follow the following instructions for best results.
Close down all of the virtual machines.
Go through each of the virtual machine and make sure that you get rid of snapshots. The reason is that snapshots are not necessary compatible from version to version. If you don’t do this, you may find that you cannot start your machine any more. To recover, you will have to reinstall the old version and then get rid of the snapshots.
Virtualbox stores the the settings and virtual machine files in .VirtualBox in the user’s home directory on Linux. I am not sure where it is stored in windows. In any case, backup this directory in case somethings goes terribly wrong.
Uninstall Virtualbox. If you are using Windows Host or a Linux with package management, all you need to do is to run the uninstall. If you installed Virtualbox from source, I have no idea how you would uninstall (the manual doesn’t list a way to do it). I assume you just halt Virtualbox and then install over the previous version.
Install the new version of Virtualbox. With luck, all of your virtual machine should come up. When upgrading, I got the following error message:
RTR3Init failed with rc=-1912 (rc=-1912)
The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing
may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.
To fix this, do exactly as the mesage tell you to do:
sudo /etc/init.d/vboxdrv setup
Note that this only works if you have the compiler installed.
You may find that your guest additions no longer work and will have reinstall the guest additions.
Virtual Disk setup
You can create virtual disk, but one problem is that they will run out of space and there is no easy way to extend them. The following are my recommendations:
- Create a really large dynamic virtual disk (ex: 200 Gb), and then create a much smaller partition on it (ex: 5 Gb). Because the disk is dynamic, the actual VDI file is small initially no matter how “large” the drive is. Now, we create a small actual partition on it because we want to limit the actual size of the file. For example, if we run a disk defrag utility, it may cause the drive to take its full size. By keeping the actual partition small, you can avoid the disk from growing to the maximum size of the disk. When we start nearing the end of the partition, we can extend it by using an utility like gparted. By doing this, you can have tons of VDI file all at 200 GB, but actually taking up a fraction of actual disk space.
- On a Linux guest, do not use UUID references in your /etc/fstab. A lot of distro these days try to be helpful and use UUID references. By using UUID reference, you can move the drive from hda to hdb and it would still reference the partition. While this is very helpful with hardware, this is not so useful on a VM since there’s really no disk to swap around. In addition, when you clone a drive, it will generate a new UUID. If you attempt to swap the new cloned drive with the old one and you use UUID, the OS will not be able to find the drive and crash.
- Keep it simple by using one partition per virtual disk. With the new SATA configuration, you can have as many drives as you like,
- For a lot of Linux virtual machines, I generally use a 3 disk configuration: root, home, and swap. This way, I will be able to reinstall without wiping out home. If home or root runs out of space, I can swap in a larger disk.
Bugs and workarounds
Disk Cloning corruption in Virtualbox 2.10
In release 2.1, the command to clone virtual disk change from clonevdi to clonehd. Normally, you can clone a virtual disk by running the command:
vboxmanage clonehd olddisk newdisk
However, this did not work in version 2.10 for some reason. The disk image is corrupted. To get around this problem do the following instead:
- Use your host’s copy command to make a copy of the virtual disk.
- The copy of the virtual disk has the same UUID as the old disk, so you will need to reassign a new UUID by using the following command:
VBoxManage internalcommands sethduuid <newVirtualDiskFile>
Keyboard corrupted by Linux Guest Addition in Virtualbox 2.1.0
Recently, I installed Linux Mint as a guest on Virtualbox 2.1.0. Whenever I type a space, Gnome Do would pop up. This happens when I type a space in any field. Normally, Gnome Do is triggered by <super>space, where <super> is the windows key. Virtualbox 2.1.0 addition apparently corrupted the keyboard so that the <super> key doesn’t exists any more. So far, it may only affect US keyboards. See http://www.virtualbox.org/ticket/2793
One work around is to install an earlier virtualbox 2.0.6 guest addition, which works with 2.1.0 and do not have this problem. The guest addition can be download here and you can mount it as a CD.