I have co-workers who are supposedly senior engineers, device driver developers, firmware engineers who have been working on Linux based systems for 5 or more years and 20 years or more in total. But they are lying. They certainly work, but they aren't good at what they do. For example I had an incident where the colleague still doesn't understand how to install a something that is missing on a Linux distribution. This is something that a 1st year student would already know how to do. If I was in charge I would fire them but, since I'm not the boss I can't, so what should I do?
Plant yourself where you can grow. If you're frustrated at the lack of talent, you're not happy, so you should look for somewhere you will be happy. I understand the generic responses that not everyone is superstar, but your post clearly indicates gross incompetence on their part. You'll learn more and enjoy your job more working in a shop with better people. True, not everyone will be great, and every place has a weakest link, but it's equally true that some places are on the bottom of the spectrum. Somebody, in fact, works for the lowest quality shop. It sounds like you're exploring that area. Get out now before your skills dull.
By Definition, Average People in the Average Workplace Are "Average"
The work world is often filled with mediocrity for a variety of reasons, not least of which is that (by its very definition) the center of a bell curve is average. Assuming that you aren't suffering from the Dunning-Kreuger Effect and are actually awesome at your job, your expectations of your coworkers may simply be unrealistic.
It is extremely likely that these people are doing a satisfactory job from management's viewpoint. Even if they aren't, management may prefer to keep them because they fit the company culture and have experience in their specific role at the company.
The cost of hiring and training someone new is a real cost to the company. It is also a risk, with no guarantees that the next hire will be any better in the long run.
In addition, what management values may not be just the technical skills you clearly value. Your management team is likely basing their hiring decisions on things they value, such as company loyalty or personality fit.
Mind Your Own Business
Your post in no way explains why any of this is your problem. You aren't a manager, so unless their deficiencies (real or perceived) are creating additional work for you or are impacting your paycheck and performance bonus, then it is management's job to manage them rather than yours.
You should concentrate on making yourself stand out in positive ways. Criticizing your coworkers, especially those who have been with the company a long time and therefore shown that they excel at working for that specific company, will not help you to do that. Instead, find ways to show off your technical skills without throwing your colleagues under the proverbial bus.
If that doesn't work for you for some reason, you will remain unhappy at your current job. Dust off your resume, and apply elsewhere. If you do that a few times, and experience the same situation over and over, you will quickly learn what workplace norms look like. In addition, if you can't find a happy work situation, that will at least help you identify the constant in your various work environments: you.
If I was in charge I would fire them but, since I'm not the boss I can't, so what should I do?
As you indicate, you are not the boss, so you cannot fire them. And just complaining to you boss or their boss that "Bobby is sub-par" isn't likely to sit well. You don't get to decide what is "par" for people who don't work for you.
On the other hand, if you depend on their services, you can expect them to get the things done that you truly need in a reasonable time period. And in the cases where they don't, you can make it clear to your boss that you are still waiting for something to get done.
Instead of complaining about the individuals, because you have concluded that they are "sub-par", concentrate on the work you need done, so that your job can get done. If you need a Linux install completed, then your status report to your boss and team could indicate that you are still waiting for the install. If you feel you need to slow your work down to help them solve issues, then check in with your boss first, explain what you need to do and why, and indicate your estimate of how much time you expect to lose.
And it's not your business how the work gets done. If these individuals can get your install done through others, then that's their call and their bosses call, not yours. You want to focus on the tasks you need completed, not on the process that gets them done.
Not everyone in a company is top-notch. It's up to their boss to decide if they are good enough to keep around or not. But others in the company need to understand what they can expect from these individuals and their department, and need to make it known when the tasks aren't being delivered adequately.
sashang, that senior developer is probably quite unhappy that he has to suffer you and can't fire you. Here's the thing: Why would I, as a senior developer, waste my time to learn something that I can hand over to a first year student, when my time really needs to be spent on making drivers rock solid? Is your ability to install that missing bit of software something that makes the business money? You applied it once, will you be ever able to apply it again?
Something to consider: Are you coming fresh out of education? Where you spent all day learning? And now you have tons of fresh knowledge? Wait a year, and you will have tons of one year old knowledge. Wait two years, and you will have tons of two year old knowledge. These guys have four years knowledge how their product works, which is what really counts, and probably much more knowledge how to create products that work.
Now what you should do, and that is the workplace question: Be very careful. "They are lying" is a very, very serious accusation. That may be down to not enough knowledge of the English language, maybe you mean "what they say isn't true" which is something different.
If one of those "sub-par" developers hears about your opinions of them, do you know how deep that hole is that you dug yourself? If you have a team of four or five not "so-called senior developers", but senior developers, and they want you out, you are history. By all means, try to demonstrate that you are good at what you are doing, but calling a whole team "sub-par" is one dangerous move.