Educating the world

Our blog has over 10,000 readers a month

Cloning a VirtualBox machine running CentOS causes network interfaces to fail

January 11th, 2013

When you clone a VirtualBox machine in order to create a new virtual machine (as opposed to creating a back up of an existing machine) then you must check Reinitialize the MAC address of all network cards and use the Full clone type to make sure that the original and the clone don’t share any resources.

After booting the new (freshly) cloned machine you will notice that all the network interfaces are down. Trying to raise them gives you the following:

[root@myhost ~]# ifup eth0
Device eth0 does not seem to be present, delaying initialization.
[root@myhost ~]# ifup eth1
/sbin/ifup: configuration for eth1 not found.
Usage: ifup <device name>

When Linux boots the clone image for the first time it sees the new MAC address. It compares it with the MAC address it has saved for eth0 and realises that they are different. In order to avoid a conflict (in case the old network card comes back), Linux creates a new interface called eth1.

We are running VirtualBox (2.4.6) and don’t have network cards in the virtual machine. We just want it to be the same as the original machine without a lot of faff.

  1. Edit the NIC cache:

    vi /etc/udev/rules.d/70-persistent-net.rules

  2. Delete the line where NAME="eth0″
  3. Find the line with NAME="eth1″ and change eth1 to eth0
  4. Save file
  5. Edit the new interface file:

    vi /etc/sysconfig/network-scripts/ifcfg-eth0

  6. Strip out everything but the bare minimum:


  7. Save file, then reboot:


The virtual machine will come back with eth0 raised and a brand new IP address.

If I didn’t know any better I’d say someone is trying to recreate the behaviour that Windows has if you clone it. Each clone of a windows system remembers all the MAC addresses and names of previous NICs but what it means is that when you clone a system and update the drivers then all your names change back to the default plus one. for example if you rename your “Local Area Connection” to “outbound-if” and clone the system when it boots up on a different host with a slightly different firmware revision or different NIC then when the cloned system boots up, “outbound-if” will not be there “Local Area Connection 2″ will be there instead. You can’t change the device name to “outbound-if” because that name is taken by the system. There is no way to change this.

I think the idea is that those settings are tied to the MAC address (hardware). So when the hardware changes you get a default configuration as standard. In my experience I’ve never had to add extra settings and my hardware changes have always been like-for-like. It has always been a nightmare that has taken ages to fix.

What does Omnishambles mean?

January 5th, 2013

The Oxford Dictionaries UK Word of the Year 2012 was awarded to a word popularised in the BBC2 satirical policial comedy In The Thick Of It. It hasn’t been accepted into the dictionary yet. They have to wait a few years to see if it will take to the language or just get dropped.

Most of the dictionary sites don’t list it because it isn’t really a word yet like tnetennba. There aren’t many definitions that were as descriptive as the one given in the OED’s YouTube clip.

Omnishambles is used to mean any kind of situation which has been mis-managed or mis-handled and is characterised by a series of blunders.

It has derivatives for example omnishamblic.

    It also has one off or sometimes humorous coinages:
  • romnishambles - Mitt Romney’s gaff about not thinking that London was ready to successfully host the 2012 Olympics.
  • omnivorshambles - talking about the proposed badger cull in England and Wales.
  • scomnishambles - talking about Scotland’s place in the E.U. should it become an independent country.

Being in IT I’ve seen plenty of projects go belly up through poor management and mis-handling on all fronts. There have even been a few you might of heard of like the NHS fiasco. If this word had been around in 2007, I think it would have been used to describe this project. Every aspect of this project failed, and they are still dealing with the blunders.

I think this word will be used A LOT !

Free Hydrogen and Oxygen for the World

January 4th, 2013

The trouble with splitting Hydrogen and Oxygen from water is that it takes a lot of energy. This means making Hydrogen fuel cells for cars is not sustainable. Luckily those clever boffins at the Weizmann Institute lead by Prof. David Milstein have developed a brand new way to use photosynthesis to split the water.

Unlimited free Hydrogen and Oxygen, think about how that will change the world? Their will be no need for oil. Make the fuel cells small enough and we could see batteries full of water. You could refill your car from the tap or even more importantly from the rain. Imagine that! In the United Kingdom we’ed never have to stop for “water” again.

According to the Royal Institution’s 2012 Christmas Lectures the scientists have only got it to work with ultraviolet light. The catalyst metals to speed up the process may even be re-generated just by boiling it in water!

When Edison was looking for a material to put in his light bulbs, he went through hundreds of different substances looking for one which could take the current required to heat up and glow without oxidising. He tried everything from his own hair to cotton to gold before finding tungsten. There is a world wide effort to find the correct catalyst metal compound that will allow photosynthesis to work in normal day light. There are a few more variables this time but we’ll get it eventually. I can’t wait to stick it to The [Oil] Man and for the time when I never have to talk to a car mechanic.

You can read more about it here. You’d better put your chemistry head on though!

Plesk update causes makewhatis to fail

November 7th, 2012

During the Plesk 10.4 update the installer tries to “clean up” your platform. “Clean up” is Plesk code for “Break". The update deletes everything in /var/cache. While this area is reserved for caching, most of the applications that use it don’t expect their directory structure (that they created on installation) to disappear from under them. This was the case for the /etc/cron.daily/makewhatis.cron cron program which runs makewhatis which requires the directory /var/cache/man.


/usr/sbin/makewhatis: line 388: /var/cache/man/whatis: No such file or directory
chmod: cannot access `/var/cache/man/whatis’: No such file or directory
/usr/sbin/makewhatis: line 388: /var/cache/man/whatis: No such file or directory
chmod: cannot access `/var/cache/man/whatis’: No such file or directory
/usr/sbin/makewhatis: line 388: /var/cache/man/whatis: No such file or directory
chmod: cannot access `/var/cache/man/whatis’: No such file or directory
/usr/sbin/makewhatis: line 388: /var/cache/man/whatis: No such file or directory
chmod: cannot access `/var/cache/man/whatis’: No such file or directory

There are a couple of ways to fix this but the majority will possibly get overridden on the next update if Plesk doesn’t address this issue, which they probably won’t because they usually don’t!

The simplest thing to do is create the missing folder branch and check it is still there after the next update.

Log in to your Plesk server and issue the following command:

mkdir /var/cache/man

More Plesk fixes are available on Fixing problems caused by updating Plesk

Unable to generate a temporary class

November 2nd, 2012

If you use serialisation then IIS dynamically compiles the extra classes it needs to perform the serialisation and it uses the Windows temporary folders to store the class files definition and class compilation artefacts. If IIS can’t write to the temporary folder you will get this error message:

Server Error in ‘/application’ Application.
Unable to generate a temporary class (result=1).
error CS2001: Source file ‘C:\Windows\TEMP\1kcmvhly.0.cs’ could not be found
error CS2008: No inputs specified

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Unable to generate a temporary class (result=1).
error CS2001: Source file ‘C:\Windows\TEMP\1kcmvhly.0.cs’ could not be found
error CS2008: No inputs specified

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:
[InvalidOperationException: Unable to generate a temporary class (result=1).
error CS2001: Source file ‘C:\Windows\TEMP\1kcmvhly.0.cs’ could not be found
error CS2008: No inputs specified

System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence) +1357
System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies) +2809
System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence) +366
System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) +951
WebApplication1.LicenseManager.getLicenceRequestResult(String url) in D:\views\davidne_view\kernel\WIP\WebApplication1\WebApplication1\LicenseManager.cs:16
WebApplication1.LicenseManager.obtainLicenseKey(String version, String feature, String sessionid, String username) in D:\views\davidne_view\kernel\WIP\WebApplication1\WebApplication1\LicenseManager.cs:33
WebApplication1.LicensedSessionModule.OnPreRequestHandlerExecute(Object source, EventArgs e) in D:\views\davidne_view\kernel\WIP\WebApplication1\WebApplication1\LicensedSessionModule.cs:55
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +270

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

If IIS can’t create files in that folder then the application will fail at runtime so, you must give IIS write access to C:\windows\temp.

  1. Right click on C:\windows\temp select Properties.
  2. Select the Security tab.
  3. Click Edit
  4. When the Permissions for Temp dialgue box opens click Add.
  5. In the Enter the object names to select(example) box enter iis_iusrs.
  6. Click Check Names and the system will change the name to HOST\IIS_IUSRS. Click OK.
  7. Highlight IIS_IUSRS (HOST\IIS_IUSRS) and in the Permissions for IIS_IUSRS box, check all the security boxes in the Allow column. You can’t check Special permissions so ignore that one.
  8. Then OK all the way out.

It moans about changing permissions on system folders so just click Yes to that. Now you should be able to reload the page without a problem.

There is a way to get around it by recompiling the classes needed for serialisation but I’ll save that one for another time.