I had this really old laptop (Sony Vaio PCG-Z1XSP). It's a sleek looking computer and packed a powerful processing punch in its day. It was well loved, well used, and well... to be honest, it had spent the past 10 years on a shelf! But I had recent need to play with a Linux distribution and thought it was time to breath life back into the old beast!
I needed a Debian based distro, so naturally went for the no-fuss Ubuntu.
My laptop is pretty old, it runs Windows XP. The first thing I wanted to do is prove that Linux could actually run on it and had drivers for the display and wifi. Only here's my first problem... The BIOS had no support for booting from USB devices and the internal DVD was knackered.
I found that out after unsuccessfully attempting installs via both media. (I lost my first few hours here.)
I then came across Wubi:
The Windows-based Ubuntu Installer (Wubi) allows you to install and uninstall Ubuntu from within Microsoft Windows. It lets a Microsoft Windows user try Ubuntu without risking any data loss due to disk formatting or partitioning.
Only despite having a formal page on the Ubuntu website and their wiki, Ubuntu don't actually support Wubi anymore and the SourceForge link is dead. But the GitHub page is still going strong and supports all the latest Ubuntu versions!
Wubi worked great and logged me into a live Ubuntu installation. Only it was slow. Dog slow. Even the mouse pointer lagged. And don't expect anything to happen for at least 30 seconds if you happen to double click anywhere.
I needed a lightweight version of Ubuntu. I then found out that Ubuntu also comes in other flavours. Lubuntu is supposedly really good for older computers. Then there's Linux Mint Xfce which is the (popular) Linux Mint but with the lightweight Xfce Desktop environment which also makes it good for old computers.
(As a bonus Zorin is also a cool villain from James Bond. Man, this OS is a no-brainer!)
But Wubi only supports pure Ubuntu distributions (I hadn't seen this video). So how do I install it on my laptop?
EasyBCD lets your Windows machine boot from an .ISO file - awesome! I downloaded the latest 2.4 version. It crashed on startup. But many (older) blogs swore by it!? I tried hunting for downloads of older versions. v2.3 crashed too. v2.0 gave a strange error that it couldn't find the correct boot records. v2.1 then explained itself - it only works with the newer Win7 boot loader. Thwarted.
Next I looked at UNetbootin as it could create a Live-USB type installer with dual boot, but on my local hard-drive - it looked promising. But it didn't support Zorin out of the box and just hinted that it might work! Yeah, I didn't really want to chance it as it didn't say anything about handling the older WinXP boot loader - and I didn't want to brick my laptop.
Wanting to look at Zorin to see if it's worth the effort I used Rufus to create a boot USB. Rufus was no fuss and just worked. Trying it out on a different machine, it looked good. But how do I install it on my laptop?
USB install? No. DVD install? No. Hard-drive install? Dubious, and no. Which just left Network install.
Bugger. Never in a million years will this work!
Then I found Serva and there was new hope. Serva is actually bloody brilliant and, despite the problems below, is well worth supporting and buying, even though there's a free community version. The guy has obviously put many, many hours into updating and tweaking his software - and continues to do so.
There is a LOT to read on setting up Serva - and a lot of it is really useful. But boy, I really wished there was quick start guide! There is this page that explains how to do a network install of Windows. And then there is this page that expands on the first, with explainations for doing the same with Ubuntu.
So let me sum up what I did. On starting Serva, edit the settings and:
Under the TFTP tab:
- enable the TFTP Server
- set a path to some newly created
Under the DHCP tab:
- enable the
- tick the
Expand the Zorin .ISO to:
+- SERVA_REPO/ +- NWA_PXE/ +- Zorin/
Copy the Zorin ServaAsset.inf file to
Download the specified INIT_XXX.GZ and copy it (don't unzip it) to
Create a new Windows user called
serva with a password of
avres (serva backwards!), share the
NWA_PXE/ directory as
NWA_PXE_SHARE (go to folder
Properties -> Sharing -> Advanced Sharing to change the share name), and give the
serva user some read access rights.
Plug your old laptop into wired Ethernet connection (your Serva computer can be on the wifi), configure it to boot from the network and turn it on...
...and the laptop connects to Serva and configures itself through the DHCP proxy; this is magic to me! Serva offers up boot options from the
ServaAsset.inf files. You select one on the laptop and the Pre-boot eXecution Environment (PXE) then downloads the named Linux kernel files through TFTP, including the
INIT_XXX.GZ file. This is a (gzipped) hand-rolled script that the Serva guy (Patrick Masotta) wrote - it does a lot of network stuff and mounts the Windows shared directory under
And from there Zorin can just install itself as if booting from a CD. Magic!
Only here's what actually happens...
DHCP... check. TFTP... check. WARNING: PAE disabled. Use parameter 'forcepae' to enable at your own risk! This kernel requires the following features not present on the CPU. Unable to boot - please use kernel appropriate for your CPU. As soon as the kernel files run,
What the fudge is this!?
As it turns out PAE is some sort of CPU enhancement required by all modern Ubuntu systems. Most really old processors were already PAE enabled but forgot to check a flag to inform the residing OS. So my installer crashed out not knowing if my CPU has PAE or not.
There is a
forcepae -- forcepae option you can set (yes, you have to set it twice - just to make sure!). But where!?
Turns out (after a lucky guess) I can just append it in the
append_bios = ... NFSOPTS=-ouser=serva,pass=avres,sec=ntlm,vers=1.0,ro ip=dhcp ro ipv6.disable=1 forcepae -- forcepae
Note I only bother changing the
append_bios line as I know my old laptop doesn't support the newer
Restart Serva, restart Laptop, ... Yes! I get further.
mount error(121): Remote I/O Error
There's a problem mounting my shared network drive. The error code is next to useless but there's lots of talk on the Serva website and StackOverflow about tweaking the
NFSOPTS to make sure they're inline with what your Windows machine is dishing out.
I spent hours methodically tweaking these options and then restarting Serva and my laptop. I finally spotted two things:
1). When the network install gives up the ghost, it gives a Linux BusyBox bash prompt. So you can type in the mount command without restarting anything - a much faster method of debugging!
For instance, I would type (your IP address and dir name would be different):
mount.cifs //192.168.1.139/NWA_PXE_SHARE/Zorin-OS-12.4-Lite-32 /cdrom -ouser=serva,pass=avres,sec=ntlm,vers=1.0,ro
2). All the errors in the docs and blogs speak of:
mount error(13): Permission Denied
Where I was actually getting:
mount error(121): Remote I/O Error
The only thing my Google foo could find on the topic was a short German blog post which suggested updating the following registry settings:
HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ LargeSystemCache = 1 HKLM \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters \ Size = 3
I'm not a fan of randomly changing registry settings, but I was running out of options. So I did. I restarted my
Server service and the next
mount.cifs just worked!
Alright! Restart Serva, restart the laptop, and...
mount error(112): host is down
Damn it. I ran my
mount.cifs command again and it worked. Confused, I resigned to having to do a lot more cmd prompt typing. So to make my life easier I renamed the
Zorin-OS-12.4-Lite-32 directory to just
Zorin and tried again.
And then... the Zorin OS booted up a live instance and presently me with a desktop.
Hallelujah - it worked!
Now if only I could remember what I wanted Linux for in the first place?