Opensuse 13.1 guest will not boot on OpenSuse VirtualBox host

I have been made several attempts to upgrade a VirtualBox guest from OpenSuse 12.3 to 13.1 since 13.1 was released, but cannot get the upgraded guest to boot. I’ve also tried installing a brand new guest as 13.1 and it won’t boot either. I have 13.1 running under VirtualBox on a Windows 7 host just fine. However, 13.1 will not run under an OpenSuse host.

Currently, I’m running a fully patched OpenSuse 13.1 host with VirtualBox rpm VirtualBox-4.3-4.3.12_93733_openSUSE123-1.x86_64 installed along with the matching guest extensions. I updated my guest from 12.3 to 13.1 this morning and the installation completed successfully. However, the updated guest fails to boot. The initial graphical screen keeps restarting over and over again infinitely. I found another thread about this from February that recommended using a community version of VirtualBox, but that won’t even begin to boot because of missing support for USB 2.0 and no available guest extensions for that version of VirtualBox.

I have tried this on two completely different physical machines: one with an 8 core AMD processor, the other with a dual core Intel processor and the results are the same with both.

How do I troubleshoot and resolve this problem?

Worked fine here everytime, and I installed 13.1 a few times on different openSUSE hosts.

I am using openSUSE’S virtualbox packages though, but it should work with Oracle’s package as well.
Btw, for USB2 support you need to install the Extension Pack, that’s the same with openSUSE’s and Oracle’s package(s). The standard package(s) only support USB1.1, but even then openSUSE 13.1 boots fine here (I actually don’t have the Extension pack installed, because I don’t need it).

Have you tried other operating systems inside VirtualBox? Have you tried to boot the guest into failsafe/recovery mode? (“Advanced Options” if you’re using grub2)

Try booting with the boot option “plymouth.enable=0” to see how far it gets.
Try adding init=/bin/sh (or mount the guests hard disk on your host with vdfuse) and take a look into the kernel log (/var/log/messages).
(you can add kernel boot options by just typing them at the boot menu (grub1) or pressing ‘e’ to enter edit mode and appending them to the line starting with “linux” (grub2).
Is the user that runs VirtualBox part of the “vboxusers” group?

Do you have “Hardware Virtualization Support” enabled in the BIOS settings? (AMD-V or Intel-VT respectively)

This is why I’m using the extension pack.

Have you tried other operating systems inside VirtualBox?

Yes. I have run every opensuse release since 11 in VirtualBox. I’ve also run Window XP for years.

Have you tried to boot the guest into failsafe/recovery mode? (“Advanced Options” if you’re using grub2)

I assume that’s the 2nd entry listed?
http://i118.photobucket.com/albums/o95/dilireus/boot13-1_advanced.png

When selecting this, I get this over and over again:
http://i118.photobucket.com/albums/o95/dilireus/boot13-1.png

Try booting with the boot option “plymouth.enable=0” to see how far it gets.

This is the result:
http://i118.photobucket.com/albums/o95/dilireus/bootfail.png

Try adding init=/bin/sh

Same as above, but can’t type anything. Message about “Welcome to emergency mode!” repeats ad infinitum.

(or mount the guests hard disk on your host with vdfuse) and take a look into the kernel log (/var/log/messages).

I don’t see a package called vdfuse available. How do I do this?

Is the user that runs VirtualBox part of the “vboxusers” group?

Yes

Do you have “Hardware Virtualization Support” enabled in the BIOS settings? (AMD-V or Intel-VT respectively)

Yes

Ok, but you stated that the community version of virtualbox would not even begin to boot because of missing USB 2.0 suppport.
But you can add that support in the same way there, by installing the same Extension Pack.
And as I said, that “community version” works fine here, and openSUSE 13.1 boots without problems.

Btw, you also wrote that there are “no available guest extensions for that version of VirtualBox”, which is not true either.
openSUSE 13.1 comes with the guest extensions and installs them by default when you install it inside VirtualBox. And it should boot without the guest additions installed as well anyway.

Yes. I have run every opensuse release since 11 in VirtualBox. I’ve also run Window XP for years.

Ok, so it’s not a general problem with VirtualBox.

I assume that’s the 2nd entry listed?

Yes.

Same as above, but can’t type anything. Message about “Welcome to emergency mode!” repeats ad infinitum.

Well, the system enters emergency mode in both cases.
That message about “Welcome to emergency mode!” repeating ad infinitum is a known bug in systemd.

But the system should not even enter emergency mode of course.
Most of the times this happens if a necessary partition (like /home f.e.) cannot be mounted.
But you say this also happens on a fresh installation of a 13.1 guest?

Maybe the DVD image you downloaded is broken?

How exactly did you do the upgrade?

I don’t see a package called vdfuse available. How do I do this?

It’s available here:
http://software.opensuse.org/package/vdfuse

You can mount the virtual hard drive like that:

sudo vdfuse -f image-file mountpoint

You will then find all the partitions under mountpoint, which you can mount normally with “mount”.

PS: Maybe check what the default systemd target is set to, I don’t really see an error message that would cause your system to enter emergency mode in your screenshots:

ls -l /etc/systemd/system/default.target

You should be able to get into a minimal text mode system by adding “init=/bin/sh” to the kernel boot options as mentioned earlier.

  1. Need to understand if USB is required for initial Guest boot. If not, then try booting first without the Extensions and if necessary disable unnecessary mounts including in the fstab.
  2. Can a new Guest be created that works correctly? Any other Guests you can check? You need to identify whether your problems are specific to this Guest only.
  3. Recommend installing my mod so you can see what the Grub menu options are displaying so you can stop guessing
    http://en.opensuse.org/User:Tsu2/12.3/Modified_GRUB_Menu
  4. A standard troubleshooting practice is to simplify. Simplify your Guest configuration and setup only what should be required to boot. If you can get that to work, then you can start from there.
  5. If worse comes to worse, I suppose you could do a backup/restore to a working Guest, but IMO that ordinarily shouldn’t be necessary.

IMO,
TSU

I tried what you suggested with vdfuse. i was able to mount the partition and get to /var/log, but it was last updated in 2013. I’m assuming this has something to do with snapshots I’ve taken since then. I also tried to use vdfuse to get into the snapshots, but that doesn’t work. I bailed on this attempt and went back to the snapshot I took right before upgrading.

I then created a new 64-bit 13.1 guest from scratch with its own 40GB dynamic partition. I gave it 2 of the 8 available processors and 4GB of the total 16GB RAM. Also gave the video card 128MB. Did a basic 13.1 installation from a brand new download instead of using the DVD I used previously. It worked great…for 2 days. This morning I applied new patches to the 13.1 host. When I got home from work, I went to boot up the 13.1 guest that was running yesterday, and found that I had to rebuild the vbox driver because today’s update contained a kernel update affecting VirtualBox. So I built the driver (service vboxdrv setup) and tried again. Now, I’m right back to where I was. The guest starts to boot, but keeps restarting over and over in a loop.

I was able to access the virtual machine partition for this new machine using vdfuse. However, /var/log/messages has no entries since yesterday. The only files in /var/log that have updated today are wtmp and boot.log, but boot.log is 0 bytes.

ll default.target
lrwxrwxrwx 1 root root 40 May 17 19:16 default.target -> /usr/lib/systemd/system/runlevel5.target

Booting with “init=/bin/sh” produced:

http://i118.photobucket.com/albums/o95/dilireus/bootfail3.png

So the new install worked, but after the kernel update it doesn’t boot any more?
Try to boot the previous kernel (Advanved Options in the boot menu), that should still work.

How did you install the guest kernel module in the first place?
As I said, you should not manually install any guest additions, they are included in openSUSE.

And together with the kernel update an updated guest module was released. If you install all updates, this should work.
If you installed the guest module manually, you have to recompile it yourself for the new kernel though.

So I built the driver (service vboxdrv setup) and tried again. Now, I’m right back to where I was. The guest starts to boot, but keeps restarting over and over in a loop.

???
“vboxdrv setup” is for building the host kernel module, isn’t it?
This has nothing to do with booting the guest.

I was able to access the virtual machine partition for this new machine using vdfuse. However, /var/log/messages has no entries since yesterday. The only files in /var/log that have updated today are wtmp and boot.log, but boot.log is 0 bytes.

Of course. boot.log is the log from the latest boot, and is only created when plymouth is running.

Well, I suppose then that the boot is failing because the guest kernel module cannot be loaded.
See above, can you boot the previous kernel?

ll default.target
lrwxrwxrwx 1 root root 40 May 17 19:16 default.target -> /usr/lib/systemd/system/runlevel5.target

Good.

So the new install worked, but after the kernel update it doesn’t boot any more?

Correct.

Try to boot the previous kernel (Advanved Options in the boot menu), that should still work.

Boot the HOST in the previous kernel version?

How did you install the guest kernel module in the first place?
As I said, you should not manually install any guest additions, they are included in openSUSE.

  1. Added Oracle’s VirtualBox repository for Opensuse 12.3/13.1
  2. Installed Virtuabox 4.3 from said repository.
  3. Compiled the kernel module using: “service vboxdrv setup” as directed by the popup window that appeared when I tried to start a guest VM.
  4. Installed Oracle’s guest additions as directed by the popup window that appeared when I tried to start a guest VM a second time.

That is all.

I also reinstalled the VirtualBox from Oracle’s repository and disabled USB2.0 support from the guest so I didn’t have to load the guest additions. It still fails to boot.

???
“vboxdrv setup” is for building the host kernel module, isn’t it?
This has nothing to do with booting the guest.

The new kernel was updated on the host, so I rebuilt the host kernel module as directed by the popup window. I have not applied any additional patches to the guest --including the new kernel – because it won’t boot.

I also tried deleting Oracle’s version of Virtualbox and using the Opensuse community version as you suggested earlier.

http://i118.photobucket.com/albums/o95/dilireus/yast.png

That fails because there is no host kernel module installed.
http://i118.photobucket.com/albums/o95/dilireus/drivermissing.png

When I tried running “/etc/init.d/vboxdrv setup” with the community version, it failed.

http://i118.photobucket.com/albums/o95/dilireus/kernelwillnotinstall.png

Am I missing some packages?

No, the guest obviously.
It’s the guest that doesn’t boot after the kernel update.
Or am I misunderstanding you, and this is after the host’s kernel update?

  1. Added Oracle’s VirtualBox repository for Opensuse 12.3/13.1
  2. Installed Virtuabox 4.3 from said repository.
  3. Compiled the kernel module using: “service vboxdrv setup” as directed by the popup window that appeared when I tried to start a guest VM.
  4. Installed Oracle’s guest additions as directed by the popup window that appeared when I tried to start a guest VM a second time.

That is all.

Again, you should not install the guest additions in an openSUSE guest, as they should be installed automatically.

I also reinstalled the VirtualBox from Oracle’s repository and disabled USB2.0 support from the guest so I didn’t have to load the guest additions. It still fails to boot.

But you said a fresh installation in the VM did work?

I’m getting confused now.

The new kernel was updated on the host, so I rebuilt the host kernel module as directed by the popup window. I have not applied any additional patches to the guest --including the new kernel – because it won’t boot.

Ah, ok.

I also tried deleting Oracle’s version of Virtualbox and using the Opensuse community version as you suggested earlier.

Have you installed the openSUSE packages after you removed Oracle’s version?

Otherwise removing Oracle’s version might remove files from the openSUSE packages.

When I tried running “/etc/init.d/vboxdrv setup” with the community version, it failed.

Yes, you cannot/need not run vboxdrv setup with openSUSE’s packages.

Am I missing some packages?

Well, what packages do you actually have installed now?

rpm -qa | egrep -i "virtualbox|kernel"

It appears this problem is related to mounting vbox shared folders in guest VMs through /etc/fstab. When I include a mount point in /etc/fstab in a post-12.3 openSUSE guest VM to a vboxsf partition on my host, the guest fails to boot. Since discovering this, I’ve gone back to all of my old guests that fail to boot and removed the vbox shared partition from /etc/fstab and they all boot now. I have fixed it for now by adding a root cron on guest VMs:

@reboot sleep 30; mount -t vboxsf -o rw,uid=<uid>,gid=<gid> <sharename> /path/to/mount/point

Hi,

Just a guess here, it seems that the vboxguest additions module is not loaded yet when the fstab is mounted, but anyway Have you tried using the

/etc/initd./after.local

file? for mounting your shared folder?

Also there is a VBoxManage command for assigning the default mount point for the shared folder, you can do that in the host.

COMMAND ON THE HOST:

First get the value if there is already an existing mount point, it defaults to nothing (at least on the latest coming from vbox.org)
Replace the value of vmname or uuid according to your vms.

VBoxManage guestproperty get <uuid|vmname> /VirtualBox/GuestAdd/SharedFolders/MountDir

Now set the default value according to your own hearts content.
Replace the /path/to/mount/point

VBoxManage guestproperty set  <uuid|vmname> /VirtualBox/GuestAdd/SharedFolders/MountDir /path/to/mountpoint

Add the folder to share.

VBoxManage sharedfolder add <uuid|vmname> --name <name_of_shared_folder_to_appear_in_the_guest> --hostpath <path_of_directory_from_the_host> --automount

–automount is there because it will automount during boot. More options are available.

VBoxManage sharedfolder
Usage:


VBoxManage sharedfolder     add <uuid|vmname>
                            --name <name> --hostpath <hostpath>
                            --transient] --readonly] --automount]


VBoxManage sharedfolder     remove <uuid|vmname>
                            --name <name> --transient]



COMMAND ON THE GUEST:

Create directory (a mount point on the guest) if it does not exists already.

mkdir /path/to/mount/point

Thats about it, if you want to change the prefix sf_ on the shared folder name , you can see

VBoxManage guestproperty get <uuid|vmname> /VirtualBox/GuestAdd/SharedFolders/MountPrefix

Change it to something like

VBoxManage guestproperty set <uuid|vmname> /VirtualBox/GuestAdd/SharedFolders/MountPrefix VBoxShare

Again replace VBoxShare according to your own hearts content.