by Falcon of Tinylab.org
2013/08/25
Linux open source related technology is very important for students, especially computer majors, the following are discussed in several aspects:
Research platform
Because of the advantages of open source, there are a lot of open copy can be consulted, there are many interesting ideas can be used to do in-depth research. Any point dug in is a piece of heaven and earth.
Professional Vision
Through these open projects, you can access talented people from all over the world through mailing lists, Linkedin, Google group, not only to improve English reading and writing skills, to know international friends, but also to grasp the frontiers of the field, and even have the opportunity to get the advice of the big boys.
Job Opportunities
Just like 2004 years, in the school resolutely and then choose to go to the Linux platform, and now have the same feeling, Linux and related open source technology because it contains the human win (open, free, Share) of the "Datong" concept, combining the wisdom of many enterprises and geniuses around the world, and its constant renewal of self-renewal, she will continue to prosper.
The current Linux talent seems to be a lot, just graduated from school no coding experience students can quickly write a small drive, seemingly low threshold, but really can solve problems from the system level, do work without others to rub the butt of high-end talent few. If you start crawling from the university, you will graduate with more than four years of experience and thought training. For the follow-up research and work, will be very important competitiveness.
Course Practice
Almost from hardware to software, the Linux platform provides all of Bottom's "soul" learning stories, transforming all courses from armchair to battlefield, greatly improving the efficiency and skills of engineering practices.
Hardware aspects
Hardware simulations are already trending and unstoppable. Including processor emulation, system emulation, the famous qemu, and its great derivation: Android Emulator offers easy-to-use cases that support four, not law firms, arm, X86, PPC, and MIPS. This is not only capable of simulating processor instructions, it also supports simulation of system-level (various peripherals), and also supports executables that execute another schema directly on one schema (via qemu-user-static translation). With it, you don't have to spend money on the development Board, with it, you can study how to simulate the design and implementation of a hardware system, a set of processor instructions, and can also study virtualization technology, virtualization clusters.
Like the founder of the GNU Sequence Tool, Stallman, and the founder of Linux, Linus, the founder of Qemu is also a great pioneer, look at his profile and personal homepage: http://bellard.org/, And that JavaScript-written simulator that can run Linux directly from the browser: http://bellard.org/jslinux/
Fabris Bella is a well-known French computer programmer, known in the industry for projects such as FFmpeg and QEMU. He is also the author of the fastest PI algorithm Beira formula, Tccboot and TCC. 1972 Born in Grenoble, France. During high school, the famous executable compression program Lzexe was developed, which was the first widely used file compression program in the year of DOS.
Exposure to open source, so that we have the opportunity to understand and know these crazy predecessors, this is undoubtedly a very inspirational and let the blood of the interesting.
Boot program/bios
When we were in college, we learned the BIOS, the basic input and output system, what it is, feel it, see the veil, see what she really looks like. but with the uboot:http://www.denx.de/wiki/U-Boot, you can.
You can do uboot experiments directly in QEMU: Using QEMU for Embedded system development, Part 3 or running U-boot and Linux with QEMU emulation cortex-a9
Operating system
Linux itself is mostly open, operating system courses if you can read the source code of Linux 0.11 at the same time in class: http://oldlinux.org/, you will find that the operating system is not dry elevator scheduling algorithm and other algorithms described. You can see real living scenes that can be spoken to in the scene.
What scheduling algorithm, what synchronization mechanism, what interrupt management, what file system , what kind of peripheral drivers , etc., can see the source code implementation and allow to modify, debug and perfect, even through the mailing list to submit patches to the official Linux community, Then have access to the Linux community's impressions of the "God General" reality "approachable" big boys.
You can also make a complete operating system on your own. Look at the building Embedded Linux system book, from the Linux official community: http://www.kernel.org Download a copy of the source code, compile it, and then use Busybox,buildroot, LFS or openembedded make their own file system, then a complete operating system. Then you will know what a full operating system is and what is just an operating system kernel. Then you will understand that the interface of user interaction, in addition to the GUI, in fact, its most essential thing or shell Terminator,gui just put on a flower clothes. You'll really understand what's going on behind this story and how it evolves when you press a key on a keyboard. As a computer student, we should not be kept in the dark, should be opened the flower clothes, pry behind the details, and then, when the day, close your eyes, when the whole story in the mind like a movie clear no longer blurred, you like the Wish, That kind of taste can be verified when a bug needs to be solved.
To do these experiments, there is no need to buy a development board, QEMU more than enough, you can refer to:
Using QEMU for Embedded Systems Development, Part 1
Using QEMU for Embedded Systems development, Part 2
If you want to see Linux 0.11 source code, you can go to http://oldlinux.org/download Open books and source code, in Ubuntu under the experiment with QEMU. Remember to download the Linux 0.11 code that can be compiled with the latest compilers under Ubuntu: Https://gitlab.com/tinylab/tinylinux.git
In addition, here is a more detailed article, introduced the relevant usage: for GDB source debugging with the GCC 4.X compiled Linux 0.11 experimental environment
Assembly
It is estimated that the school is still using teacher Wang's book, This is my sophomore time to write the "assembly language Wang Shuang" after the lesson experiment reference answer.
Share here is very much want to emphasize the importance of practice, do not know how many students have seriously completed all or most of the university computer courses after the experiment, the experiment is really very important. Another reason is that I really want you to be able to X86 in the Linux platform to the assembly, with gas assembler, with the T-t syntax, with GCC to see how the C language is written in assembler. It was a wonderful thing. Of course, you can also use Qemu-user-static to run a debootstrap-made Debian for ARM, MIPS or PPC, Learning Arm,mips and PPC compilations. It is recommended to learn the MIPS assembly, streamline the instruction set, the most beautiful pure natural assembly language.
Combined with the above operating system courses, especially recommended a foreign CS630 of the University of San Francisco, called the school, originally this teacher (Allan B Cruse) in the I386 on the real machine to do experiments, I perfected his makefile, and then directly on the QEMU experiment. Share an interesting thing: I gave the teacher to share the method of doing experiments on QEMU, they say that the student is good, can directly give a, hehe. For specific usage and source code please refer to: Learn CS630 on Qemu in Ubuntu.
BTW: The above Linux 0.11 course, in order to be able to directly use the current popular standard gas and GCC, the boot boot of the 16bit assembly code I can use at/t rewrite.
If you want to learn arm assembly: Recommend "arm system developers ' guide:designing and optimizing System software", if you want to learn MIPS compilation: recommended "See MIPS Run Linux"
If you want to learn X86 compilation, do not miss the CS630 course and Allan B Cruse's personal homepage, there are quite a lot of relevant information.
C language
In terms of language itself, she is so alive, and now, as well as the foreseeable future, she will keep her unique vitality.
Language itself are we still learning to Miss Tam's course? It is advisable to teach yourself the books of C-language authors:
The C programming Language
Then, do not forget to lay a solid foundation, the following basic content can be used as a permanent reference for future study and work, preferably in the university stage of systematic reading and practice, you will benefit:
C Traps and pitfalls
C faq:http://c-faq.com/
Advanced Unix Programming
Special Recommendation Jserv Huang's masterpiece "in-depth shallow out Hello world", it reveals "Linux behind the layers of cloth," he said in the blog:
Many Linux programming files that are flooded with open resources are often only in Syria and in concepts or technical details, and are often collected at the end of the list without full digestion. How can we not think about "Hello world" in the form of "experiment", a subtle change in the timing of this small-scale application, and with the wealth of information on the Internet, is it better to enjoy the beauty of Daigo's top?
He placed the whole sequence of slides here.
Coincidentally, I have a similar mentality in about 2008 years, although compared with the predecessor Jserv is only a toddler, but interested friends can also share, has now been compiled into open source books: "C Language Programming perspective (Open Source Books)", is currently only 0.01 version, is continuously revised.
Forget to mention Gcc,gdb and the like. Under Linux to learn C, you can not leave them, of course, there are editor vim+cscope+ctags, as well as gprof, Gcov and so on.
scripting language
Learn one or two scripting languages, for the usual study and work will play a multiplier effect.
For example, to deal with some data, you can use SED, awk plus gnuplot, this time shell programming is very important. As for the shell, I have written a "shell programming paradigm sequence" that has been published as an open source Book Pleac-shell project.
For example, to do some more complex even with graphical interaction, this time can be used in Python, can efficiently implement some cases, and can learn object-oriented thinking.
Compilation principle
The compiler principle is too important, do you know the story behind Turob C, virtual studio C + +? It's hard, but the GNU Toolchains can.
You can see the whole process from source code editing (VIM), preprocessing (GCC-E, CPP), assembly (AS), compilation (GCC-C), Link (Gcc, LD). You can use Binutils to provide a sequence of tools readelf, Objdump, objcopy, NM, LD, as to understand what an executable file is, what the structure of the executable is, what it contains, what the so-called code snippets, data segments are organized. With Objdump, you can disassemble an interesting executable file and see the implementation ideas behind it. You can also see how the executable is organized to support dynamic linking. You can also learn the details of a program execution, how it can print a "Hello, world!" on the screen, what kind of support is needed, what kind of work does the hardware, operating system, and applications do?
In addition, you can also see the GNU Toolchains source code. If you think this thing is too big. You can also read the genius we just mentioned: Fabris Bella, who wrote Tcc:tiny C Compiler, can see how a complete and compact C compiler is implemented.
By the way, related aspects, I have written a sequence of blog:linux under the C language program developed by the process view, has now been organized into open source books: "C Language Programming perspective (Open Source Book)".
Database
Mysql, PostgreSQL, SQLite? When I was in school, these things were very hot, so many years, still so fire. In particular, the small sqlite,android are in use. And she's small, and you can learn exactly how those SQL languages are implemented.
Perhaps you say enterprise-class Oracle, SQL Server is very useful ah, yes, they are makeup of the expensive women, high above, in the rich circle, not to throw a hug, you never have the opportunity to know their minds.
Network
Back to virtualization, with QEMU (and VirtualBox, of course), you can theoretically create any number of virtual computers, build any number of different network services, create a complex cluster, want to do a bridge, or want to do a NAT you can choose ...
Other
Almost all of the courses you can find open the practice project, see: Source Code Hosting Sites you should Know
Summary
The above analyses the benefits of learning Linux Open source technology from many aspects. The trend is called "community-based learning", the international point is called "Open, Free, Share", the domestic point is called "win", the traditional point called "three people, there will be my teacher."
Why computer students want to learn Linux open source Technology