olbrecht.net journal VMware server on ReadyNAS 4.2.11

VMware server on ReadyNAS 4.2.11

This is an updated and extended how-to, in which I will explain how you can install VMware Server 2 on the Netgear ReadyNAS PRO / 3200 / 4200 platform:

It applies to the following versions:

  • ReadyNAS firmware version Raidiator 4.2.11
  • VMware Server v2.0.2-203138.i386

First of all, let’s prepare:
1. Upgrade your ReadyNAS to the current firmware release using the Frontview control panel -> System -> Update -> Remote -> Reboot.
2. Decide on where you want to put your virtual machines, I decided to put them on a share of their own which I created. I called it “vm”. Create this share via Frontview. This makes sense in so far as VMware will create the files for virtual machines with “root” privileges, meaning only the root user will have access to these files via SMB or other access methods unless you reset share privileges via Frontview.
3. Decide where you want to put the ReadyNAS source code and VMware installation packages. I chose the already existing backup-share.
4. Install the EnableRootSSH addon to gain access to the ReadyNAS via SSH. You can download this add-on here: http://www.readynas.com/download/addons/x86/4.2/EnableRootSSH_1.0-x86.bin and install it via Frontview in System -> Update -> Local. Reboot.
5. You will need an ssh client such as putty.
6. You will need to register an account on vmware.com to download the free VMware Server. Get the i386 package, not the 64-bit package. This guide was compiled against version 2.0.2-203138.i386

Now let’s get started:
With putty, connect to your ReadyNAS and login as the “root” user. The password should be the same as your FrontView admin-password. You are now at the command prompt for your NAS.

#Note the following line:
Linux YOURNASNAME 2.6.33.4.RNx86_64.2.1 #1 SMP Wed May 19 19:36:51 PDT 2010 x86_64 GNU/Linux
#If you did all the earlier preparation right, your NAS will be running the x86_64 Linux Kernel in version 2.6.33.4. Let’s continue some preparations:

apt-get update && apt-get install build-essential

#This will install the necessary Linux components for compiling your kernel and VMware server. There will be a prompt if you really want to install these packages, as well as a prompt that a few packages could not be authenticated. Answer both with YES.

#Then let’s change into our work directory:
cd /c/backup
#We are now on the backup share. All shares you create via Frontview will be created within the directory /c/. Avoid using other Linux paths as they probably will be on the system partition of the NAS, which is only 5GB. It is not a good idea to have that run out of space.

#Then we will download the ReadyNAS GPL Package for Raidiator 4.2.11:
wget -q http://www.readynas.com/download/GPL/RNDP6xxx_4.2.11_WW_src.zip
#Let’s unpack it:
unzip -q RNDP6xxx_4.2.7_WW_src.zip -d ./GPL
#Now we will have to compile a new kernel to get the modules we need to run VMware Server.
cd GPL/linux-2.6.33.4
make ARCH=x86_64 oldconfig && make ARCH=x86_64
#This is going to take a while. You can go get another cup of coffee.

#We will need to tell Linux that we compiled a new kernel and its associated modules, as well as where to find it. For this we make a symbolic link:

ln -s /c/backup/GPL/linux-2.6.33.4/ /usr/src/linux
KERN_DIR=/usr/src/linux

#There has been a slight change in symlinks with kernel 2.6.32 onward which requires us to create two additional symlinks. Without these, VMware setup won’t work later on:

cd /usr/src/linux/include/linux
ln -s ../generated/utsrelease.h
ln -s ../generated/autoconf.h .

Now on to install the VMware server. First let’s copy the downloaded archive for the VMware server on the backup share.
Back in the ssh session, we’re going to unpack it, but first let’s change back into the backup share directory:

cd /c/backup
#and let’s unpack it:
gzip -d VMware-server-2.0.2-203138.i386.tar.gz
tar –xvf VMware-server-2.0.2-203138.i386.tar.gz

#Now we need to install some patches for VMware server to make it compatible with our kernel version:
wget http://risesecurity.org/~rcvalle/VMware-server-2.0.2-203138-update-2.patch

The following is taken from Ramon de Carvalho Valle at rise security (http://risesecurity.org/2010/04/02/vmware-server-2-0-2-update-patch-2/). Thanks to him for creating the patch.

#Extract VMware Server modules:
# Change working directory to vmware-server-distrib/lib/modules/source/
$ tar -xf vmci.tar
tar -xf vmmon.tar
tar -xf vmnet.tar
tar -xf vsock.tar

#Apply the patch:

#Change working directory to vmware-server-distrib/
patch -p1 < ../VMware-server-2.0.2-203138-update-2.patch

#Archive VMware Server modules again:

#Change working directory to vmware-server-distrib/lib/modules/source/
$ rm -f vmci.tar
rm -f vmmon.tar
rm -f vmnet.tar
rm -f vsock.tar
tar -cf vmci.tar vmci-only/
tar -cf vmmon.tar vmmon-only/
tar -cf vmnet.tar vmnet-only/
tar -cf vsock.tar vsock-only/

#And now let’s go install the VMware server:

cd vmware-server-distrib
./vmware-install.pl

#You will get several prompts now which you can all accept at face value except for one: You *must* change the default value for where to put the storage for virtual machines to a path within the /c/ directory. For this I prepared my “vm” share. Hence, I changed the path to “/c/vm/”. This is to make sure your virtual machines won’t kill the system volume of the ReadyNAS.

End notes and limitations:
Thanks to chirpa at the ReadyNAS forum for helping with my questions about the kernel and GPL package and for supplying me with early access to the GPL resources.
Enjoy.

Known limitations:
– The VMware server webinterface seems to have its issues on browsers other than Internet Explorer. I recommend you install the VMware Infrastructure Client to access the VMware host and its virtualised guests.
– Sometimes if you manually restart the VMware services by running “/etc/init.d/vmware restart”, the virtual network service does not want to properly restart. This requires re-running the configuration script “/usr/bin/vmware-config.pl”.

2 thoughts on “VMware server on ReadyNAS 4.2.11”

  1. Hello,

    I tried to install VMware on a readynas pro 4.2.13.
    Somehow it failed…..
    The last entry’s:
    arch/x86/boot/compressed/vmlinux.bin.lzma: No such file or directory
    AS arch/x86/boot/compressed/piggy.o
    gcc: arch/x86/boot/compressed/piggy.S: No such file or directory
    gcc: no input files
    make[2]: *** [arch/x86/boot/compressed/piggy.o] Error 1
    make[1]: *** [arch/x86/boot/compressed/vmlinux] Error 2
    make: *** [bzImage] Error 2

    When i run the command again it gives:
    scripts/kconfig/conf -o arch/x86/Kconfig
    #
    # configuration written to .config
    #
    scripts/kconfig/conf -s arch/x86/Kconfig
    CHK include/linux/version.h
    CHK include/generated/utsrelease.h
    CALL scripts/checksyscalls.sh
    CHK include/generated/compile.h
    LZMA arch/x86/boot/compressed/vmlinux.bin.lzma
    /bin/sh: lzma: command not found
    MKPIGGY arch/x86/boot/compressed/piggy.S
    arch/x86/boot/compressed/vmlinux.bin.lzma: No such file or directory
    AS arch/x86/boot/compressed/piggy.o
    gcc: arch/x86/boot/compressed/piggy.S: No such file or directory
    gcc: no input files
    make[2]: *** [arch/x86/boot/compressed/piggy.o] Error 1
    make[1]: *** [arch/x86/boot/compressed/vmlinux] Error 2

    Any change that i can succesfull install VMware?

  2. Just install lzma:

    apt-get install lzma
    run the make command again

Comments are closed.

Related Post

The perfect home networkThe perfect home network

  1. It’s been a busy year and some of the things I’ve been involved in warrant writing about. So here we go!

We’ve moved to a new home and it’s been quite a project. But let’s settle for the really important stuff: The new home network. Winking smile Having bought into the building just early enough, we took the opportunity to adjust the wiring specifications just slightly from what was luckily already a pretty decent setup. There were plenty of electrical outlets, coax cable in every room and phone lines part of the plans. We only added a few electrical outlets so we would never have to run any power cables around corners (I hate cable clutter!) and then went to town on the data cabling:

I’m a big fan of speed. Especially where networks are concerned. So CAT6 Ethernet was the minimum requirement. While we’ll come to wi-fi later, nothing I’ve seen commercially available will beat a wired connection. So we put at least two RJ-45 sockets into every room.

WP_20161218_16_54_37_Pro_LINot knowing where we’d put the TV on the wall, we set up two walls in the living room for easy placement. To me this means putting all the necessary outlets (Power, Cable TV and Ethernet) right up the wall so they are hidden behind the TV when that is mounted. This way all the cables just vanish from sight. As we don’t need two TVs in the living room, we have the second row of outlets hidden behind a picture frame.

If there is one thing I’ve learned from experience: There is no substitute for planning when it comes to setting up a network. Getting the physical layout and architecture right the first time will save you a lot of money, time and nerves in the long run. So I did not want to compromise when it came to my home setup.

WP_20161218_17_07_55_Pro_LIAll CAT7 cables run into our storeroom. There they meet up with the coax TV cable which currently serves as our ISP line.

At the same location I also have the option to access the POTS wiring if I wanted to switch to xDSL. And there is a proper 19” network cabinet. I won’t call it a rack as it is only 9U – then again it fits all the equipment I’ll ever need it to host.

WP_20161218_17_06_47_Pro_LI

First of all, you’re looking at a Rittal FlatBox DK 7507.110. The enclosure is wall-mounted with just enough space for cleaning (basically making sure our Roomba will fit with no issues).

I use an EQUIP 333293 PDU with some cable modifications: I ran the power cable that enters the enclosure directly into the PDU, replacing the original power cable. At the same time I connected the grounding wires that connect all of the metal parts of the enclosure to the grounding wire that is part of the house electrical installation.

I use an EQUIP 326416 16 port CAT6 patch panel – I only need 12 Ports but I wasn’t able to find a 12 port 19” panel. All CAT6a panels I looked at were 24 ports and I preferred the centered 16 ports on this panel as I’m using small switches with ear extensions. Speaking of switches…

WP_20161218_17_05_57_Pro_LIWe have two 10 port Cisco Small Business switches: One SG300-10 as well as an SG300-10PP for 802.3at POE+. I already had experience with the SG300 line of switches from multiple jobs and so far I can absolutely recommend them for any small business  / edge switching / home lab use. They basically do everything you can ask of a switch right now up to and including Layer 3 routing. But most importantly, the SG300-10PP is the only rack-mountable switch I was able to find with POE+ that is fanless. It has a 60 Watt power budget which for my use cases is plenty.

Completing the network are my cable modem, a Ubiquity UniFi Security Gateway (USG) and a Ubiquity UniFi CloudKey. Then there is my trusty old Netgear ReadyNAS Pro Business – slightly modified with upgrades to the CPU, RAM and fans. The last part being essential: Replacing the stock fans with some Noctua fans was probably the best upgrade to that system.

I’m considering replacing the current NAS with a smaller 4-bay model in the future. My needs here are relatively simple: All I need is lots of storage along with support for SMB, DLNA and Wake-On-LAN. With progress in ARM based storage devices, I’m seriously thinking about taking the plunge just to get the power needs down. Cooling hasn’t been an issue so far but the room does warm noticeably when the door is closed – as was to be expected with it having virtually no ventilation whatsoever.

So on to the wireless setup: Having the best wife in the world, I was actually gifted a Ubiquity UniFi AP AC PRO for my last birthday, right off my Amazon wish list. Only there was a problem. Several actually:

– The dashboard is kind of addictive. The amount of information it can give you – without messing about with SNMP, MIB files etc. – is just amazing. I love solutions that just work.
– As with any entrance drug, UniFi really only works when you set up the whole shebang. So I picked up a USG security gateway to get insight into my network traffic on the WAN side.
– This being my place, any dead spots in coverage or drop-off in throughput could not be tolerated. So the single AP was soon joined by two of it’s brothers.
– I’ve come to appreciate single-use appliances. Things designed to do one thing, and one thing only. And do it well. So I’m running the UniFi controller on the purpose built UniFi CloudKey. I originally thought about using my Raspberry Pi but then remembered how much I actually hate caring and feeding a Linux system on a day-to-day basis.

What I ended up with was this:

WP_20161217_21_05_29_Pro_LI

So how did I set up the Wi-Fi? I’ve been using the UBNT community forum to read up on what works and best practices. Basically the logical network I’m running is rather simple: There is no point in using fancy things like management VLANs around my LAN and while I might set them up for the home lab, everything is just a flat class C private subnet (my provider hasn’t figured out yet how to give me an IPv6 prefix – I wager it’ll take them longer to get that done then it takes Chris Büchler (of pfSense fame and now working at Ubiquity on the Routing & Switching products) to implement IPv6 on the UniFi controller and USG router.

I currently have an open guest network using the UniFi controller to act as a HotSpot gateway using vouchers (Not happy with the open nature of this network, any help in setting up HotSpot 2.0 to get encryption for guests without having to hand out WPA-keys would be appreciated).

And this is how it looks:

2016-12-18This is a view of the UniFi controller running on my home network.

Where things get tricky is the map view. This may help with planning the deployment of hotspots, you’ll see it’s always a good idea to check with reality:

 

2016-12-18 (8)This is just the plain view of locations of the access points. WP_20161217_21_23_55_Rich_LI

What I want is good signal in all rooms as well as fast speeds in all locations that are commonly used by me.

All the UniFi AP AC Pro’s are wall-mounted.

Let’s take a small detour into the ABC’s of Wi-Fi networking:

2.4 GHz is for coverage. WP_20161217_22_12_36_Pro_LI
5 GHz is for speed.

There are only 3 non-overlapping 2.4 GHz channels (1, 6, 11) at 20 MHz channel width. At best this gives you 300 MBit/s linkspeed with a two antenna setup. As 2.4 GHz Wi-Fi will penetrate further, be a good neighbor and don’t use wider channels. Also it is a good idea to turn down the power of the AP so as not to cause interference where you don’t actually need you Wi-Fi coverage anymore.

At 5 GHz, *if* you can use DFS Channels, there are up to 4 non-overlapping channels of 80 MHz bandwidth each. This gives you up to 866 MBit/s linkspeed with two antennas. It is very rare to come across a Wi-Fi client with more than two antennas. Unless you only have drywall, you can forget about getting a useful signal more than one wall away.

There are plenty of rules of thumb about this but nothing beats actually measuring it!

2016-12-18 (10)

Using the free tool Netspot, I made this coverage map of my apartment. In this screenshot I’m showing just the 2.4 GHz coverage. As you can see, the tool gives slightly different locations for the Access Points. It puts them where the signal is strongest – which depending on things like the signal bouncing off surfaces might be quite a bit off: See the bottom right AP which the measurements put right in front of the metal door to the elevator.

On 2016-12-18 (9)the 5 GHz front things look a lot colder. As expected, there is only really a fast connection in the rooms where we actually put the APs. Then again we don’t really need the speed in our guest room.

So that’s it for this project. Please tell me what you think, any suggestions where I can improve or whatever else comes to mind!

-Jan

Issues preparing for upgrade to SCVMM 1801Issues preparing for upgrade to SCVMM 1801

I just ran into a small hickup upgrading my System Center Virtual Machine Manger 2016 to the new version 1801. I wasn’t able to find any documented cases of anyone running into this so here we go:

The upgrade to SCVMM 1801 actually requires uninstalling SCVMM 2016. This failed on my installation just at the point where I was clicking on the “Remove features” button in the setup dialog.

In C:\ProgramData\VMMLogs\SetupWizard.log I found the following entry:

11:52:28:Uncaught Exception: Threw Exception.Type: Microsoft.VirtualManager.Utils.CarmineException, Exception.Message: Unable to detect cluster configuration of the node.
Ensure that the user has permissions to detect cluster node configuration.
11:52:28:StackTrace: at Microsoft.VirtualManager.Setup.ClusterServiceHelper.get_IsAClusterNode()
 at Microsoft.VirtualManager.Setup.AddRemoveComponentsPage.EnterPage()
 at Microsoft.VirtualManager.SetupFramework.PageNavigation.WaitEnterSet(Page page)
 at Microsoft.VirtualManager.Setup.AddRemovePage.RemoveComponent_Click(Object sender, RoutedEventArgs e)
 at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
 at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
 at System.Windows.Controls.Primitives.ButtonBase.OnClick()
 at System.Windows.Controls.Button.OnClick()
 at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
 at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
 at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
 at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
 at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
 at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
 at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
 at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
 at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
 at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
 at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
 at System.Windows.Input.InputManager.ProcessStagingArea()
 at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
 at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
 at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
 at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
 at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
 at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
 at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
 at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
 at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
 at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
 at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
 at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
 at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
 at System.Windows.Application.RunDispatcher(Object ignore)
 at System.Windows.Application.RunInternal(Window window)
 at Microsoft.VirtualManager.Setup.Program.UiRun()
 at Microsoft.VirtualManager.Setup.Program.Main()

So what this means is that the setup is unsuccessfully trying to determine whether SCVMM is installed in a clustered setup. Which mine is not. Has never been.

The solution is to actually *install* the Windows Feature Failover Clustering. This way the check can run and setup will continue. There is no need to actually configure clustering.