After upgrading to Ubuntu 10.04,some get “init: ureadahead main process (329) terminated with status 4″ error at startup.This can be fixed by directly remove the file:/etc/init/ureadahead.conf.
open terminal from Applications->Accessories menu and type this to do it:
sudo mv /etc/init/ureadahead.conf /etc/init/ureadahead.conf.disable
Something about ureadahead written by Ubuntu developer:
All about ureadahead
Hey folks, we developers don’t get the spare time to hang out on the forums for most of the release cycle, but in the past day I’ve tried to keep up with various boot-related issues and I’ve seen a few posts about ureadahead – and people recommending removing it.
I thought it might be a good idea to try and explain what it does, how it does it, and why “status 4″ is a good thing.
Also I want to stress that I’m not going to tell you that there’s nothing wrong with it, and that you haven’t had a genuine issue, but just that I haven’t heard about it if you have! I’d really appreciate it if anybody who is having problems could help out with some debugging to understand the problem, then I’ll be able to fix it for you and everyone else!
What does ureadahead do?
In order to boot Ubuntu, we need to read somewhere between 100MB and 200MB of data from the disk and into memory. Unfortunately the slowest part of your otherwise awesome machine is its hard disk — that’s why we want this data into memory in the first place.
Hard disks aren’t just slow to read data, they’re slow to find it as well! So we can lose a time of time during boot just waiting for the hard disk to find the data we need, and then read it into memory.
What ureadahead does is figure out what pieces of which files we actually need, and read everything from the disk into memory in one go. By doing it at once we don’t need to spend so much time finding everything, and because it’s already in memory, we don’t waste anywhere near as much time during boot.
It’s just for SSD right, not rotational HDD?
No, quite the opposite. You’re thinking of sreadahead (“Super-readahead”). This was a similar tool written by Intel for their Moblin project, and is very unashamedly optimised for SSDs.
We tried it for a while, but found that its performance was simply terrible on rotational hard drives.
I sat down, drank a large amount of Tea, and wrote ureadahead (“Über-readahead”) to replace it. ureadahead from the get go was unashamedly optimised for rotational hard drives, that’s not to say it’s poor on SSD either, it performas at least as well as sreadhead there.
But ureadahead takes several seconds of my boot!
Yes it does; it’s reading all the data in one go. If you didn’t have it, those several seconds would be simply spread out across everything else, and probably last two or three times longer!
I looked at bootchart, and ureadahead doesn’t get full throughput
Even though ureadahead reads everything in one go, and is heavily optimised to read everything in the actual order it’s on the disk, it still has to skip over the bits it doesn’t need.
This “seek time” is the same performance penalty as finding data in the first place.
The only way to avoid this is defragmenting your disk.
But Linux filesystems don’t need defragmenting!
Whoever told you that is deeply mistaken, this is one of the most common myths of Linux.
What is true is that Linux filesystems avoid, where possible, fragmenting their inode tables. This means that the index of how files are split up (fragmented) across the disk, and where those parts are, tends to be kept together as a whole.
That’s a good thing; fragmentation of inode tables is a big problem for other filesystems (FATs in that filesystem, etc.) so by keeping them together, it wins a lot of performance.
But the data itself is still fragmented, and spread all over your disk in a random order. And unfortunately during boot, it’s the data we need.
One of the future things we want to do is use the ureadahead analysis of what we need during boot to feed into a defragmenter, so everything we need is in one big block on the disk.
When does ureadahead reprofile?
Any time a package is installed or upgraded that contains a file in /etc/init or /etc/init.d; this is a bit brute-force, and means we’re probably reprofiling a bit more than we’d like.
To force a reprofile, simply remove the “pack” files in /var/lib/ureadahead and reboot.
In a future version we intend to move to each boot improving the pack file by identifying things read that were never used, and new things that weren’t read last time.
When does ureadahead stop profiling?
ureadahead slightly assumes you’re using auto-login; so waits about 45s after the display manager starts before it stops reprofiling. If you’re logging in with a password, and want your desktop files included in the pack, type quickly
(This will be addressed in a future version too).
ureadahead slows down my boot!
I want to hear from you! It really shouldn’t; to give you an example of the savings, my trusty laptop boots in about 1m30s without ureadahead – and only 30s with it.
Make sure you have the bootchart package installed. Remove the ureadahead pack files, and move the /etc/init/ureadahead.conf file to something like ureadahead.disabled. Reboot, login, etc. and wait for the bootchart to appear (“watch status bootchart” until stop/waiting).
Now put the ureadahead conf file back, reboot and login again and wait for bootchart to appear.
Finally reboot and login once more, and wait for bootchart to appear.
You’ll now have three bootcharts. One is without ureadahead, one is when ureadahead is profiling, and the final one is with ureadahead behaving normally.
File a bug report on ureadahead (Ubuntu-bug ureadahead) and attach these three files along with the output of “sudo ureadahead –dump” (this is quite a bit, so capture it in a file).
I’ll take a look, and we’ll see if we can fix that bug for you!
ureadahead exits with status 4!
This isn’t actually a bug
Status 4 (usually ureadahead-other exits with this) means that you had a mountpoint in your fstab that didn’t have any files on it needed during boot. Probably that drive with all those MP3s and movie files on it.
It still reads everything needed during boot, the status is just there for me to debug other issues.
The real bug here is that Upstart spams the console with that message,even though the ureadahead-other.conf file has “normal exit 4″ in it!
(In other words, If your boot fails, this message is completely unrelated to that! It’s more likely that there is an issue with the X server starting, or an issue with init scripts not being run — a good clue might be whether you see a login: screen after pressing Alt+F2)
Last edited by keybuk; March 22nd, 2010 at 08:23 AM..



Bret Jordan Reply:
September 24th, 2010 at 10:40 pm
My frustration with the whole ureadahead and upstart and for that matter the new Grub 2.0 crap is that the developers and marketing departments are talking about how much time we are saving and how much faster things will boot. But what they are forgetting to put in to their magic formula is how much time it takes to troubleshoot a problem when one of these three things does not work just right. So I save 60 seconds on booting a server with ureadahead and I save a few minutes here and there due to alleged easy of use for the 2% use case with upstart and grub 2.0. But I loose hour upon hour of troubleshooting when one of these three things does not work right. So in the server case, I have a server that does not boot right because of ureadahead, upstart, or grub2.0. How many HOURS is this server off line while I try to troubleshoot the problem and fix it? I have more then lost any value in these tools when historically for the 98% use case, I could easily just edit a file here and there and recover a system. In the server offering it needs to be just brain dead simple. Stop trying to think for the admin and anticipate what they may or may not need. Give us a simple text file of the order that things should load (think slackware) and be done with it.
[Reply]
Eric Reply:
November 16th, 2010 at 8:02 am
The trouble with this reasoning is that your time aperture for analyzing is too small. Everyone will go through a little pain now while the kinks in the feature are worked out, but then everyone’s system will boot faster for decades to come.
Based on your reasoning, we would need to abandon forward progress (or at least significantly slow it down) in the name of keeping everyone’s system running perfectly.
Nothing risked, nothing gained.
[Reply]
Bret Jordan Reply:
November 17th, 2010 at 11:39 am
No that is not my reasoning at all. The server platform and the desktop platform are different and should be viewed differently. We should be very cutting edge on the desktop platform. But the server platform needs to be rock solid and simple. Once all of the issues and bugs and flow issues get resolved in the desktop platform, we can move them over to the server platform.
I had a server that would not boot and after several hours of research I found that it was a problem with ureadahead. I worked through many forums and guides trying to “fix” the issue. But after another hour or so, I could not have the server off line anymore, I just removed ureadahead “apt-get purge ureadahead” and the server came right up. So the server was off line for nearly 3 hours what does that do to my four 9s of uptime? Saving 30 seconds on each reboot, where I may reboot 3-4 times a year, does not make up for it.
Another problem, Upstart. There is NO way to figure out what starts in what order. So when you have service that does not start at the right time and then dies because everything that it needs is not ready, this is very frustrating and painful to troubleshoot. I have had several discussions with the author of upstart and he has plans of adding something like this. But it is a long time out. Once again, we are jumping the gun with adding this to the server platform. The server platform needs to just work and be simple brain dead easy to troubleshoot and fix. Lets NOT run down the M$ path of doing things. Lets not artificially make things difficult for the 1-2% use case.
Matt Wall Reply:
March 27th, 2011 at 8:31 pm
“Nothing risked, nothing gained.”
Yea, that’s very good I agree! And Keep It Up, Please!
That’s the success of ubuntu. I don’t doubt that.
But don’t release a buggy release. An ordinary user don’t see it that way. All they see is that Ubuntu is well not worth the trouble. And Ubuntu is for the ordinary users, right!