syncing contents of virtual machines - virtual-machine

I usually sync two computers (mac and linux) using rsync so that I can work on either machine. Is it also possible to sync virtual machines (running Windows XP, specifically) on both systems that have been created by VirtualBox? Probably not...?

You can probably do it with all kinds of routing rules and port forwarding, but what about having each VM use a shared folder that you are rsyncing? This way you can rsync through hosts as you normally do and the VMs will pick up and make changes since the folder is shared between host and guest.

You can try putting VM on Dropbox as well.. http://forums.dropbox.com/topic.php?id=6520

Related

Can I run one WSL2 virtual machine instance on two system?

I'm new to the WSL2 and wondering if it's possible to run the same WSL2 ubuntu instance on both my desktop and laptop.
Now I am able to use wsl --export and wsl --import method to save and load the system to/from my portable hard drive. But these methods takes a long time.
I notice that wsl --import load a file named ext4.vhdx. Is there a way to load straightly from this file?
Update v2.0:
I was able to get a workaround and it works great.
Thanks to Booting from vhdx here, I was able to load straightly from my vhdx file on my portable hard disk. Windows track down its subsystem with regedit, So we can write our own(p.s: make sure to get BasePath right, it starts with "\\\\?", or you will not be able to access the subsystem' filesystem on your host system.):
Windows Registry Editor Version 5.00
[HKEY_USERS\【your SID here】\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{【UUID here】}]
"State"=dword:00000001
"DistributionName"="distribution name"
"Version"=dword:00000002
"BasePath"="vhdx folder path" 【 e.g. "\\\\?\\E:\\S061\\WSL\\ubuntu-20"】
"Flags"=dword:0000000f
"DefaultUid"=dword:000003e8
I suppose the best way to do this would be to store ext4.vhd on a network storage device accessible to both devices.
I have previosly mentioned how to move ext4.vhd. You can check that out here
Basically you need to export from one machine and import it while making sure the vhd file is configured for wsl to access from the network storage
Since this should *officially* not supported expect some performance hits
Another way would be to run WSL on one computer and ssh/remote desktop to it from another device on the network
I'm of the strong belief that sharing the same ext4 vhd between two VM's simultaneously would be a bad idea. See this and this Unix & Linux StackExchange, including the part about ...
note that sharing LVs/partitions on a single disk between the servers at the same time is NOT very safe. You should only access whole disks from any of the servers at one time.
However, as dopewind's answer mentioned, you can access the WSL instance on one computer (probably the desktop) from another (e.g. the laptop). There are several techniques you can use:
If you have Windows 10 Professional or Enterprise on one of the computers, you can enable Remote Desktop, which allows you to access pretty much everything on one computer from another. RDP ("Remote Desktop Protocol") even works from other devices such as an iPad or Android tablet (or even a phone, although that's a bit of a small screen for a "desktop"). That said, there are better, more idiomatic solutions for WSL ...
You could enable SSH server on the Windows 10 computer with the WSL instance (instructions). This may sound counterintuitive to some people, since Linux itself running in the WSL instance also includes an SSH server (by default). But by SSH'ing from (for example) your laptop into your desktop's Windows 10, you can then launch any WSL instance you have installed (if you choose to install more than one) via wsl -d <distroName>. You also avoid a lot of the network unpleasantness in the next option ...
You could, as mentioned above, enable SSH on the WSL instance (usually something like sudo service ssh start) and then ssh directly into it. However, note that WSL2 instances are NAT'd, so there's a whole lot more hackery that you have to do to get access to the network interface. There's a whole huge thread on the WSL Github about it. Personally, I'd recommend the "Windows SSH Server" option mentioned about to start out with, then you can worry about direct SSH access later if you need it.
Side note: Even though I have SSH enabled on my WSL instances, I still use Windows SSH to proxy to them, to avoid these networking issues.

QEMU Virtual Machine: Creating a shared folder between Windows 10 (host) and Solaris 2.7 (guest)

I was wondering if anyone could give me wisdom on how to create a shared folder between my host machine (running Windows 10) and the virtual machine I created in qemu which is running Solaris 2.7. I need a way to get files in and out of the VM.
I've managed to "plug in" a folder as a virtual drive into the VM, using
-drive file=fat:rw:[folder],bus=0,unit=1,if=scsi,format=raw,media=disk
in the VM invocation. Solaris sees this as a disk, but I'm unsure where to go from here. I can't seem to format it because I don't know the "disk" geometry (apparently Solaris was very particular about this). I tried mounting the unformatted drive in Solaris but it wasn't able to do that either. I even tried giving it an entry in /etc/vfstab to see if I could get it to automount, but that didn't work either.
Is there a different way I should be mounting it? Or is there a trick to getting Solaris to use this virtual drive? I'm also open to other alternatives people are aware of for transferring files in/out of my VM, but since Solaris 2.7 is a rather old operating system, things like networking (for example) aren't trivial to set up (and even basic things like ssh are missing).
Any help would be appreciated!

scp between two virtual machines in virtualbox

I am currently running two virtual machines using virtualbox, one is an ubuntu 14.04 and the other one is a centOS7 on a redhat (64 bit) system. What I am trying to do is to write a shell script that simply copies a file to my centOS7 machine, I am running this script in my ubuntu machine and the file is on the Ubuntu virtual hard drive. I have so far set the IP in my CentOS7 to be static to xxx.xxx.xxx and the script is simply written as scp file_to_move username#xxx.xxx.xxx:/here/.
but it does not work I wonder is there something I need to configure in my virtualbox or is the script plain wrong?
1) Have you installed ssh-server on your ubuntu machine
2) Have you generated the public/private e.g. RSA keys pair to enable the batch usage of ssh client in your script
3) Have you properly configured the VirtualBox eth cards so that both your machines are in the same network (machines can ping one another)
...
As you can see there may be a lot of reasons why you cannot copy files between your machines and without additional environment information it is hard to say what is causing the issue in your case.

How to backup and restore Virtual machine OS?

In VM ware Virtual machine i have installed the Centos in Window 7.Now i want to re install my Window 7 but i do not want to loose my virtual machine Centos. I Google many time for this topic but did not find any helpful information.
Any help?
Thanks
Your virtual machine is saved under the form of multiple files, which you can easily back-up on an external hard-drive, or in the cloud. If you are using VMWare, then your machine will be split into .vmdk, .vmx, .vmxf, .vmsd and .nvram files, depending on your VM configuration.
Just check where you store the VM files, and back them up before re-installing the host system. Afterwards, just import the .vmx file back into VMWare.
In VMWare Player right-click on your VM, go to Settings, then Options, and under Working Directory you should see where your VM files are stored. Just back-up that entire folder before reinstalling.

Ubuntu on VirtualBox and Rails server

I have Windows 7. Installed VirtualBox and Ubuntu 11.04 as guest OS.
Networking is done by NAT.
Everything is fine: I have internet on Ubuntu.
I can access Windows from Ubuntu by its ip.
But i can't access Ubuntu by it's ip which is shown by ifconfig.
I run rails on Ubuntu.
How can I solve this problem: connect to Ubuntu/Rails server on ort 3000 from my Windows?
By default, VirtualBox's NAT allows the virtual machine to access the Internet ; but doesn't allow the physical machine to access the Virtual one.
The simplest solution would be to use another networking setting than NAT, for your Virtual Machine -- for instance, bridge should work fine (your VM would be visible on your network, though).
Another solution would be to use port forwarding ; about that, this article might help : Howto Access via ssh a Virtualbox Guest machine.
I used to struggle with configuring a similar setup until I found Vagrant. Vagrant makes it very simple to setup, connect to and work with a Linux virtual machine. After Vagrant is configured you can just type vagrant ssh to enter the virtual machine and your account has automatic sudo rights and everything works as expected - you don't even have to deal with logging into the vm. The initial setup for ssh does look to be a little more work under Windows though as you need to configure Putty before you can connect.
There is a simple configuration file in Vagrant that you use to specify which ports from the VM you want forwarded to your machine using a syntax like:
config.vm.forward_port("rails", 80, 3000)
config.vm.forward_port("tomcat", 8000, 8080)
and everything is taken care of. Details are here
If, for example, you are using Rails and you start vagrant with the command vagrant up in your Rails project directory than that directory is available on the VM. Since it is the same shared directory between machines, any changes you make in your Rails project directory on your machine using your regular editor is seen on the VM also. This makes testing in other environments very easy.
Instructions for setting Vagrant up with Windows are here and a RailsCast about it is here. Note that Vagrant has nothing to do directly with Rails - you can use it for setup of any virtual machine environment you need.
In short, you can't.
It is a local host not a public domain therefore not publicly accessible outside of your virtualbox environment.
Maybe someone has a clever hack for this but why would you want to do this in the first place?
Your solution is to either use firefox to browse to your localhost within your virtualbox linux session or develop on windows.
Personally I work the other way round I run Ubuntu 11.04 and I have virtualbox installations of xp, 2,000, me, vista and 7 so I can test in different environments. Inevitably I end up sharing my project folder from Ubuntu so that I can run the project in whatever OS I am testing for.