Success is determined by you: Your can only set up an opportunity for research and provide feedback along the way. What you do with it is primarily up to you. Don't expect your advisor to tell you what to do from the very beginning till your very end of your studies. After a certain point, the ideas, the implementations, the papers, and the success will be mostly because of your talent and hard work.
Learn on your own: Computer systems is a huge, fast moving field. Don't expect your advisor to know everything. Read and learn on your own. Attend seminars and conferences, talk with your colleagues (students or professors), read papers, follow references. Once you know a few new things about a topic, teach your advisor and project mates about it...
Show initiative: There are many quite students who can execute a task once they are told exactlyw what to do. The students that really excel are those who are active participants in a research group. Those who ask questions, offer replies, suggest new problems to work on, come up with innovative solutions to problems, spend extra time trying to analyze and verify the results of an experiment. So, don't sit back and wait to be told what to do. Be active. Every now and then you may ask a "stupid" question or suggest a "bad" idea. This is a natural part of the learning process... And don't get intimidated by the intelligence of the faculty or other students.
Work in group project: Computer systems research is almost always a group activity. There are few great research ideas that can be handled by a single student these days. Many students have a hard time working in groups. The don't like sharing their new ideas or mistakes with others and have a general insecurity about who gets credit for what. Make your research group an asset instead of a problem. If you are a good team player you can benefit greatly from a group project. First, you will learn much more than your immediate research (expert in one topic and knowledgeable in many other). Second, you will probably end up with many more papers than if you worked on your own. You will have access to all the tools and technology developed in the group (less time spent implementing basic tools). In addition, the influence of the other team members will become a source of inspiration for you. Finally, you will make some good friends that will be very useful in the future, no matter what you do next...
Be broad: Several student rush to overspecialize on a niche research domain. While this may seem the fastest way to get to results, you should try to resist the temptation. The importance of your research topic and the impact of your thesis will be much higher if you have a broad understanding of computer systems technology. Don't just take architecture classes. Take classes in compilers, operating systems, networking, and other systems area. Don't just attend seminars or talk just to students and faculty specializing in one field.
Be organized: Organize your work to achieve short-term (daily, weekly) and long-term (monthly yearly) goals. Your time is a very valuable commodity. Use it in a smart way. In addition, keep good notes of the ideas, issues, and bugs you run into. This is the best way to avoid duplicating work and to have a head start on all papers, reports, etc.
Be honest about your work: The worst thing you can do is to ruin your reputation as a student or as a researcher. Be honest when you promise to deliver something (result, paper, etc). Be honest when you present your research accomplishments. It is easy to be dishonest with both and get away with it in the short term. However, your advisor and colleagues will eventually catch up with you and, once your reputation is damaged, it is very difficult to recover. [Ref: Original copy, Christos Kozyrakis]