Install a Windows VM on CentOS/RHEL 7 using QEMU — this is the hard way.
VMware won’t build properly on CentOS 7 and all of the suggest fixes failed. The simplest answer is using the included virtual machine, QEMU.
See this quickstart guide first. Sadly, they don’t tell you to install libvirt:
yum install libvirt
Then, turn on the libvirt service:
systemctl enable libvirtd.service
systemctl start libvirtd.service
It still won’t run properly, so reboot!
Whatever OS you wish to install, extract an ISO image from CD/DVD. This way you won’t have to fight permissions. This is true of everything you want to use with your VM. There are various ways to pull off the CD/DVD into an ISO.
Sine I’m running KDE, it’s simplest to use K3B. Select the option to copy your CD/DVD and on the “Options” tab, check the box for “Only create image.” Also, click the “Image” tab because you may want to move the image from the default location up in the
/tmp/ directory. Click the folder icon button and select someplace like your home folder.
When you open the Qemu manager (in the main menu under “System > Virtual Machine Manager”) you’ll be prompted for root credentials. It won’t run in user mode.
I didn’t have much luck installing XP; it kept hanging and entering a race condition. Win2K worked fine for this experiment.
Click the button for a new machine. Give it a name like “win2k”. Select to install from “Local install media” then on the next tab choose “ISO image” and navigate to where you had K3B save it. Select OS type and version. I had to tell Qemu to show me all the options for Windows before it listed “Windows 2000″.
The defaults for RAM and CPU are okay, but you can double the CPU if your machine actually has two or more cores and you think you’ll need it. The defaults for storage are probably fine unless you know you need a big storage space.
The rest is a matter of having installed Windows a time or two. There may be some errors flash on the screen at times, but unless they persist, they don’t mean anything. Play with the settings; I found the Cirrus display gave me a lot more screen real estate.
Qemu is downright cranky and sometimes cryptic. I had to manually tell it to add a USB passthrough option so I could connect a jump drive to the VM. Unlike other VMs, Qemu will not make it easy to link the VM to your host file system. You’d have to run a file server (Samba for Windows VMs) and connect through the virtual network link. Worst of all, it takes lots of system resources to run any 32-bit VM and it’s quite laggy, so if you intend to use it a lot, you’ll have to be ready for that. I don’t recommend Qemu for Windows VMs.
CentOS 7 comes with the ERS (Extended Release Support) version of Mozilla software. This is typical of the basic concept behind RHEL/CentOS and other clones, that you probably only have to install the OS once in the lifetime of the hardware. It will be supported in some fashion for a very long time, so if it runs okay when you first install it, chances are you are done with that.
For example, a default install gives you Firefox 24.x, which is the current ERS version. If you want to install Thunderbird from the standard repositories, you’ll get the same thing. For now, Seamonkey is not available from the repositories I know about. Should you decide you really want the newest version, you’ll need to be careful to find the latest in 64-bit. The typical route through the Mozilla.org websites will not get you there easily. In fact, 64-bit Thunderbird is hidden completely. It’s there, but not easily found.
The proper route is simply start from the FTP folders in the first place: go here. From that starting point, you can drill down into each of the various folders until you find what you seek. For example, the latest and greatest 64-bit Thunderbird as of this posting date is in this folder. Notice where that takes you and observe how it is structured. It’s similar for the other Mozilla projects. You may not want the various releases with lower case letters like “b” as they are beta software.
Once you download what you seek, you’ll find a big, fat b-zipped tar file. Decompress it unwrap it. I do it the old way from the CLI:
tar -xvf thunderbird-31.0.tar
I like to watch stuff one step at a time, but if you want to know the shortcuts, you can try other hints you find by searching on the Net or in the manpages (i.e.,
You’ll end up with a “thunderbird” folder wherever you performed this operation. Simply move that over into your basic “home” folder. Since I’m using the KDE4 desktop on CentOS 7, I need only right-click on the desktop and chase the context menu listings to create a link to application. Change the name to something meaningful to you, say “Thunderbird” and then on the “Application” tab go down to the “command” line and click “Browse”. The window that opens will allow you to select your own home folder (tagged by your username), then you can drop down into the “thunderbird” folder and find the only file there simply named “thunderbird”. Click that and create the desktop link. The icon will be generic, but for some reason you can’t change that until the thing exists. Right-click on this icon and select “Properties” and you’ll get a slightly different window with that generic icon prominently displayed. Click that and select “Other icons” and “Browse”. Chase back down through the “thunderbird” folder this way:
thunderbird/chrome/icons/default/ and select the largest one there. Finish up and you now have your latest and greatest version installed in your own home folder.
The advantage here is updating. You don’t need root credentials to update an executable in your own files. While the application is open, click in the menu line “Help” and select “About Thunderbird” and it will open a smaller window and check for updates. If it needs to update, it should download for you the update of the exact same 64-bit version and tell you to restart once it’s finished. Thus be it ever from now on, we hope.
If you chose to do this with Seamonkey, it’s pretty much the same deal. However, for Firefox we have a complication, because there is already a Firefox installed by default. You either have to log in as root and remove it, or teach them to coexist and run side-by-side. That’s not easy with stuff from Mozilla. They like to use the same profile by default and argue about which version of your add-ons will work. On top of that, even with two profiles, the one already running will simply respawn a new instance of the same version. It’s tricky. We’ll fix this by using the commandline switches that come with Firefox.
First, open any terminal application (I prefer KDE’s Konsole for most things) and launch Firefox there, but with a switch to create a new profile:
This opens a little window that lists what you have — likely “default” — and allows you to create another. Pick a simple name, perhaps your system username, and create a new profile. Now, decide which one will use which version of Firefox. Simplicity suggests you would leave default for the ERS version and your new profile for the latest version of Firefox. Now, right-click on your main menu button on the panel and select “Edit Applications”. You’ll find a window with the menu system outlined. Find and open the item for launching the pre-installed version of Firefox (under “Internet”). Find the “command” and change it to something like this:
firefox -P default -new-instance %u
What we do here is add some switches. The “-P” means use a particular profile, followed by the name — “default” in this case. The “-new-instance” tells Firefox not to connect this launch with any already running Firefox instance. That “%u” is used by KDE in case you have Firefox set as your default browser. When you create the launcher for your newly installed Firefox running from your home folder, use a similar command for that launcher, but change the profile name to whatever you created for that.
If you run Windows, you can find some really great advice from Black Viper about which services you need or don’t need and under what circumstances. Scroll down and check the page links he has. For quite some years his has been the most reliable voice on such matters.
So far, I haven’t found anything equivalent for RHEL/CentOS 7. You can learn about how to check and turn on/off and enable/disable them on this page but there is nothing us mere mortals can read to discern what we need and what we don’t for our home or SOHO desktop use.
In this new release, RHEL has designed lots of things differently. Used to there would be a lot of services you just didn’t need and could easily turn them off using a GUI tool. That tool is gone, but so is the long list of services to kill. It’s pretty simple these days:
In each case I run both the commands for stopping and for disabling. I suppose you realize that if you are doing this on a machine where you plan to connect Bluetooth devices, you leave that one alone. That
rpcbind is for NFS file server systems, and
ssh is for use by technicians who need to log in remotely. That’s also a security risk for those of us who aren’t running these machines remotely, but right in front of us with a keyboard and all that stuff.
Please note that if you aren’t at all using my trick for connecting to a Windows machine that is sharing your home Internet connection, you also don’t need
nfs-lock. If you need to run a Samba client, then you need nfs-lock. So far as I can tell, just about everything else in that list is pretty important to keep running.
CentOS is a lot smarter than you might expect. It knows when it is connected to a home router. The new firewall quickly adjusts and generally does the right thing.
However, it won’t automatically allow you to link to the other computers on your home network. It’s defensive by nature and pretty tight. Once you tell the firewall things are okay for this or that, it will relax just a bit.
Let’s say that you have at least one other computer on your home network running Windows. This is not about Windows, so you’ll have to research how, but your Winbox can share files and any peripherals attached to it with your CentOS 7 machine (start by reading this for XP/Vist and this for Win7). The nickname for the protocol Linux uses to talk to Windows is called “Samba” which is taken from the abbreviation SMB (server message block). By default, it’s likely your CentOS machine is running a Samba client. It simply needs permission from the firewall to use it on the home network.
In your main menu, find the system administration tool for the firewall. It will demand your root credentials. The window that will open is pretty complicated, but we only need to worry about one thing: In the window pane on the left, select “home” — it’s the zone of operations CentOS knows comes from home networking traffic. In the window pane on the right, scroll down to find “samba-client” and select that box. The firewall immediately opens that channel for traffic only inside the router network.
Now test it by opening your file browser window. Look for something that indicates the Network connections and click that. Find the icon for Samba shares. Click and it should offer you a list of the Windows networks. By default, Windows computers will be set up to use “workgroup” as the name for this. Click that icon and you should find a list of Windows computers within that default workgroup. If you attempt to connect to any Windows “host” listed there with whatever name you gave it when you set it up (like “winbox”), you’ll need a name and password for any of the accounts on that machine. You can have your file browser window remember the password so you can log on at will. Once logged in, you can browse the file system as if it were your own on CentOS.
I’m not going to detail here the chase to find printer drivers for Linux; it’s pretty complicated. CentOS 7 comes with most of those available. You can find more at this page. Also, note that several major printer manufacturers have begun offering their own special Linux drivers, so do your own research. So let’s assume for now you know you have a Linux driver for a printer connected to your Winbox.
When you run the printer setup tool on CentOS, one of the options is a network printer using Samba (SMB). Click that option and fill in the information as required for your Windows Samba share. This assumes you’ve set up things on your Winbox to share and have given the printer share a simple name — I used “winprint.” Thus, it was a simple matter of
smb://winbox/winprint for me. Then I chose the appropriate driver and set it up using the tool on CentOS. I was able to print a test page in just a couple of minutes.
The key was simply getting the firewall to open up for the samba client.
This is simply my own recommendation. In order to run CentOS 7 on the desktop, most folks want stuff you can’t get from CentOS directly.
For example, most of us still use websites that require Flashplayer. Adobe has set up a Yum repository that updates as it should with anything related to Red Hat. Using your CentOS box and your favorite browser, go here. The webpage should detect you’ll be running 64-bit and offer a button with a drop-down — select the YUM version and download. It’s an RPM you can install as root. Run “yum update” and you can then elect to install Flashplayer.
For almost everything else you would use on the desktop, I recommend you add the EPEL and Nux repositories. The quickest and easiest path is go here and read the short explanation. The Nux provider links back to the EPEL release as a prerequisite and puts it all in a simple single CLI copy-n-paste command for you:
However, I prefer to download the linked release packages and install from Yum. These release packages will install the repo references to Yum, so run “yum update” again and you are ready. For example, one of the biggest things is adding the necessary packages to run a wider range of multimedia using the default Dragon player on the KDE4 desktop. It uses GStreamer as the backend, so all we need is the rest of the GStreamer plugins:
yum install gstreamer-ffmpeg gstreamer-plugins-bad-nonfree gstreamer-plugins-ugly
You can peruse the list of goodies on Nux and EPEL to see what else you might want. I note that EPEL is still considered a beta repo because they are still working on the packages and the collection itself. That should all update for you automatically once they feel it’s ready. I’m quite certain they’ll add the matching 32-bit packages after CentOS makes that version ready for CentOS 7. However, it’s highly unlikely you’ll need to mix the two architectures unless you just have to run something like Wine to enable running Windows apps.
In other words, using Nux and EPEL on CentOS 7 64-bit just about covers everything you are likely to need and it’s virtually hassle-free. Kudos to EPEL and Nux for the hard work to make us comfortable.
As a side note, building your own stuff from SRPMs requires keeping track of how RHEL/CentOS draws from both FC18 and FC19. I noticed that almost everything KDE is from FC18. I was able to build Bibletime, GKrellM, Xscreensaver (KDE’s screensavers seem perpetually broken in all versions), PySolFC and everything necessary to build them that wasn’t already available from CentOS. It can be time consuming, but you learn an awful lot when chasing the prerequisites through RPMbuild. Please note that you should check the Fedora Updates repository for both FC18 and FC19 as well as the “Everything” list.
So you either built it from SRPMs or simply got the necessary libraries and got the source. Either way, you’ve got PySolFC on your CentOS/RHEL 7 machine and it won’t work. If you try to launch it from the CLI, here’s the error:
Traceback (most recent call last): File "pysol.py", line 26, in init() File "/home/ed/src/PySolFC-2.0/pysollib/init.py", line 120, in init root = Tkinter.Tk(className=settings.TITLE) File "/usr/lib64/python2.7/lib-tk/Tkinter.py", line 1745, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: unknown color name "BACKGROUND"
I fought with this for hours and no one wants to answer the question as to what causes this. Finally, I discerned it’s a problem with no defaults for Tk interface elements. The color “BACKGROUND” is defined in the default theme. Most Linux distros work this out for you through various system scripts and settings. It’s not included in the packages you can get or build on CentOS 7. The answer is to create a dot-file in your home directory:
.Xdefaults. You’ll need one line in it:
Save the file and run this command:
xrdb -load .Xdefaults
Try again to launch PySolFC. It should work now. Remember that you’ll have to reload that on every login.
In terms of our meat space activity, the mission always comes first.
Nobody said you can’t have hobbies and entertainment, but you must evaluate them as to whether they hinder the mission. No one ever really grows up to the point they need no play time and God tends to be more indulgent than you know. The stern pretense of marching troops is completely out of place, but so is the wild and unrestrained lascivious tendencies of military break-time. I’ll even go so far as to say that inebriation in itself is no sin, but if it changes your personality, you need some serious help. The point here is that if you don’t seek the joy of the Lord in things that draw your attention, you will always be wrong no matter what you do.
I openly confess that much of my blather about computer technology is just a hobby. It happens to be a pretty useful hobby in that it permits mission opportunities I can’t otherwise see. For the poor soul wrapped up in computing itself as the ultimate mission, it’s a slavery that makes him the enemy of almost everyone he otherwise helps. You cannot dive too deeply into the technology without losing your soul and your link to the rest of humanity. That such lost souls are the captains of most hardware and software development is a major source of conflict between developers and users. I keep trying to remind them that computers serve human needs; otherwise no one can justify the investment of time and resources. Like fire, computers are grand servants and fearful masters. My primary justification for getting involved is human needs filtered through mission needs.
So while my activity essentially serves the user, I still have to help the user understand they can’t just seek their own pleasure through computers. Not that I waste much time moralizing to those I help — I’ll tell them frankly how to avoid getting in trouble with whatever vice they pursue. Most people are deeply confused about the difference between what works in meat space versus what serves well in cyber space, whether it be vice or virtue they seek. CompSec that works for one serves the other just as well. The morality of computer use is in the user, not the computer itself. That’s the part I play: I do my best to help them find their own way and let God take care of the parts He didn’t put into my hands. The core of our mission from God is guiding people out of confused mythology into the truth.
Too many of my fellow believers are deeply confused about how that works. The carry a huge load of crap about what God has placed in their hands, and presume far too much authority over the lives of others. Were I to operate by such false notions, I would be serving far fewer people; the rest of my mission would wither against a senseless barrier.
The bulk of my efforts are aimed more at mediating between the all-too-natural conflict between users and providers. Not just the software and hardware providers, but the service providers, too. I am by no means a technology wizard, just some fellow with more knowledge and experience than the average user. I’m trying to keep track of hardware, software and networking technology all together while also keeping track of human fashion (in the sense of what folks tend to want at any given time). From the midst of this maelstrom I have to feel my way along and keep a firm grip on the mission calling. I have to make sure I discard all the things that conflict with that mission.
To some, it appears I’m just a wandering mind that can’t commit to anything. I move my computers among multiple operating systems rather frequently. Guess what? That’s simply a reflection of trying to know each OS well enough to be helpful. I can’t afford to house and operate a half-dozen systems and what I can afford won’t run too many virtual machines, so I have to immerse myself in whatever it is I’m using until I have a firm grasp on how it will or won’t serve the users I encounter. No one system answers all needs. I know what I like for myself, but very few people share that interest. Even when my perception sings that one thing or another is the answer to all computing ills, I know better than to put on a big campaign to sell that. People are not that easily moved away from their comfort zone.
It would require a major catastrophe with Windows to get everyone to adopt something else. That could well happen soon. In a certain sense, it already has (given the Snowden disclosures) but the broad perception hasn’t caught up with reality. I’m not in a position to do much with that, given all the factors far beyond my control. Does it not occur to anyone that those evil forces using Windows like a virus to gain a foothold in every life will also control the message those victims hear? But for some, their personal mission demands using Windows because nothing else will serve the purpose. I can’t make that decision for them; it’s immoral to try.
So take this with a grain of salt: I’m very pleased with how things are going in my testing of CentOS 7. For now, it’s totally 64-bit, with no capacity for running 32-bit binaries. And it works just fine, which is a big deal. I can’t explain all the details and you aren’t likely interested, but I hope we can spread the awareness that 64-bit computing has arrived and is now viable on its own. Starting with the bulk of desktops and laptops sold in the past year or so, the hardware is ready. Open Source software is just getting there, in the sense that most of the hassles moving to 64-bit seem to be solved so that most software works. In the past I’ve had trouble building stuff for 64-bit, but it seems coding practices have improved across the Open Source community and compiling breaks less often. At the same time, Open Source is quickly eclipsing commercial software in terms of what the user wants and wants to do.
If you as a computer user can develop a stronger focus on the mission, and your mission is not bound to the software or OS itself, you might consider keeping an eye on my computer blather on this blog. I’m going to suggest that we can change the nature of the battle for most users. Instead of fighting external hassles, they would struggle only with themselves. I can promise that using something like CentOS 7 will reduce most external threats, and it becomes a question of whether you can make it work for your mission.
Still, the biggest question is simply understanding your own mission.
It’s been a quiet few days. I spent the time upgrading my laptop to stronger network diagnostic and recovery tools, starting with installing CentOS 7. It’s currently all 64-bit, with none of the typical 32-bit support for now. This is a first among the Red Hat clones. The CentOS team is working on the 32-bit stuff, but some of the packages are tricky. They’ll announce the release of the 32-bit version (“i686″) as soon as it works.
Debian is still the very best way to learn Linux. However, some folks need the shortest path to something that works with lots of hand-holding, and that would be Kubuntu. I still like OpenSUSE, but it’s a little tougher. For serious work among Westerners, I recommend CentOS. You can use my introductory book on CentOS 6, the previous release. I don’t think I’ll be writing a new guide to cover 7, but will post a few notes here.
If you haven’t chosen an AV client for your Windows computer, I am now favoring BitDefender Free. For a malware cleaner, I’ve been experiencing trouble with Malwarebytes lately, and I’ve found that Super Anti-Spyware catches things the others missed.
Finally, Revo Uninstaller is a great tool for total removal of anything the spyware removers miss. What happens is most of this crap gets bundled and when you remove the critical gatekeeper package, the other junk won’t uninstall cleanly, if at all. Revo can wipe it all away and remove every trace of it, including Registry entries.
Remember, if it has “toolbar” in the name, you don’t want it.
Go here and choose your mirror, then your ISO. The KDE-Live and GNOME-Live don’t install, just run from DVD to get a preview. The other Live-CD is GNOME but a lot of larger packages removed so it fits on a CD. There’s a regular installer DVD, then a much larger “Everything” DVD. I chose the Netinstall.
For now, only the 64-bit is available. The CentOS developers are working in a 32-bit version but, it’s a bit of work since the sources (Red Hat) didn’t release a 32-bit version. Keep in mind: Red Hat Enterprise Linux (RHEL) is the source and it is sold as industrial grade software. It’s not as if you can’t run 32-bit stuff on it, but you have deal with dual libraries for 64 and 32. If you don’t have 4GB of RAM or more, you should wait for the 32-bit release coming out later.
If you want to try booting with UEFI enabled on your system, feel free. It does boot on most hardware, but tends to freeze at some point on a lot of machines. Be prepared to reset your BIOS to legacy boot. There is a very brief visual walk-through here at Red Hat. A more detailed installation guide is here.
Most of the stuff requiring your direction attention is collected as icons on one single masterpage once you get past the most basic hardware configuration. You’ll see a caution icon on those items which absolutely require your attentions. However, take a look at all of them. You can’t proceed until all the icons have the caution marker removed. I wish I could give you a simple walk-through on setting up your install medium (hard drive, usually), but they made it complicated. Don’t be afraid to go back through it several times until you get it right. Look around at each page you see and realize a great many items are icons you can click. For example, when you finish each item, the “Done” button is oddly placed near the upper left.
If you choose the Netinstall ISO as I did, one of the first things you’ll need to do is set up networking before trying to select your download mirror. You’ll have to supply the URL by typing it in manually. The complete mirror list is here and what you have to type into the installer follows a standard format: baseURL followed by
/centos/7/os/x86_64. Have this ready at hand when you start the installer.
Under the heading of software, you can choose one of several profiles. I am assuming most of my readers will want a standard workstation desktop. For now, you can choose between GNOME3 and KDE4. If you like GNOME3, there’s no sense in discussing it. If you don’t know what you want, you had best try KDE as less painful for most people rather new to Linux. There are plenty of places scattered around the Net on how to configure KDE4 once installed, so I won’t duplicate that here. Maybe later the CentOS folks will offer something more sane like XFCE or Mate (GNOME2 continued) for a default desktop. Right now, Mate is an add-on and XFCE is not available from any existing software repository that I know about.
One more point for installation: passwords. Again, this is industrial-grade software and annoyingly elitist on some things. One of them is passwords. The installer will grouch about almost any passwords you are likely to choose. It won’t be happy until you type in something you can’t possibly remember, so don’t be surprised when it complains. While the Netinstaller is pulling down the packages, you’ll be presented with a page that notes both the root account and the user account(s) don’t have passwords. You can set the passwords while its downloading everything.
I recommend the same thing I always have because it has never failed: Use a phrase or line from a song you know you’ll remember. Don’t try to string together recognizable words or names. Take the first letter from each word, making sure it adds up to at least ten characters, and twelve is probably close to max. Use upper case where it makes sense. Substitute digits and symbols so that you are likely to remember it. For example, in the old days one of my first passwords was based on the song by Twila Paris, “God Is in Control”:
Ginctrl!God is in … and “ctrl” is the abbreviation for the Control key on your keyboard … followed by an exclamation point
Try to avoid repeating any character and consider using digits (4=for, 2=to or too, 7=t, 5=s, etc.) and other symbols for some letters (@=at or e, !=L or I, $=s, #=h, etc.) and don’t be afraid to punctuate as normal, such as using a comma or ampersand where appropriate. The point is that you can repeat the phrase or line of the song and type out your password consistently.
You will need two such passwords; one for the user account and one for the administrator (“root”) account.
I’m sure I’ve forgotten something, so feel free to remind me in the comments.
It drove me crazy.
Yes, I am competent to make it work for most things, but some issues were just too much trouble. Keep in mind that when RHEL 6 (followed by the clones like CentOS) came out, it was capable of handling XP hardware and some early Vista stuff. Try installing it as a desktop on a Win7 machine and you will suffer. Things keep breaking because the drivers don’t match the hardware quite well enough.
The desktop machine was given to me needing repair from a law office that had closed. Turns out it was still under warranty but only to a company no longer in existence. It came with Win7 Pro but I never could get along with that once I fixed it. So I’ve run several different things, but I keep coming back to Debian Wheezy because it’s the most sane. For sure CentOS 6 was just not up to it.
So I’ve finished the tutorial and it will be my next book in a few days. It’s just fine for SOHO stuff on older XP machines, but I am not doing SOHO stuff, nor do I have any old machines like that. And CentOS is pretty corporate straight-laced and no fun.