You've not posted much about your setup, but then you may not know it.
So I'll offer you some background here on how to investigate:
You are stuck in initramfs which failed to find the root file system disk (/). This gives you a minimal busybox shell. But none of your system files are available yet, because loading that is what it failed to do.
The import detail for you to find out is: what is your system configured to load. You can find this with the fllowing command, looking for root=...:
cat /proc/cmdline
You can then start searching for why this isn't there using tools like ls and blkid.
But First: The boot process
The boot process loosly follows a sequence:
- Boot loader loads the kernel, initramfs (temporary filesystem) from disk into memory
- Boot loader starts the kernel, passing in parameters
- The kernel runs through its startup. It doesn't read from the disk at all here.
- The kernel executes a script in initrafs, already loaded by the boot loader, which finds and mounts the root filesystem (this is what failed)
- The initramfs script starts your system manager installed on your root file system
We can't tell you for certain what happened but it's very likely to be one of a handful of things.
You may not have attached all disks
If your system has a seperate disk for /boot, then steps 1 and 2 will run just fine, even though you main disk isn't even attached. Step 3 will fail on the error you've shown because it just can't find a disk if it's not attached.
If all your disks are there, you should be able to find them in /dev with ls. Eg: /dev/sd*. If your root file system disk is just not there, then the VM itself is not properly configured.
You may have re-ordered your disks
The initramfs script usually knows what to mount because the boot loader passes configured kernel parameters to the kernel. The parameter is root=....
If this is configured to a named disk (root=/dev/...) then re-ordering the disks will change their name. Eg: /dev/sda1 could become /dev/sdb1.