Linux – An IntroductionWorkshop IndiaWilson Wingston Sharonwingston.firstname.lastname@example.org
The Beginning of Linux• Finnish UG student : Linus Torvalds• Decided to write an OS and release his code free for anybody to use.• Used the UNIX and BSD systems for the base of the functionality of his OS.• Received Cooperation through many programmers worldwide and spread through the internet.
UNIX• Researchers needed a standard computing framework to help them run their processors.• Developed in Bell Labs – It was spread through universities and schools to educate people on how to use it.• UNIX was very complicated and this enabled the students to be comfortable when working with UNIX in industries.
Linux as a group effort• Unix was commercial – It worked only on a few machines that were expensive for most users.• The Linux project incorporated code ▫ GNU project (Free software foundation) ▫ BSD (Berkeley UNIX) ▫ X11 (MIT)• Developers all over the globe contribute ▫ Improvements ▫ Bug Fixes ▫ Support for devices & platforms
Why Linux?• Rich selection of free application for any and every purpose available. Most of them comparable/superior to their proprietary counterparts.• Peripheral support is extensive and support in linux sometimes comes before anywhere else.• Ported to various Platforms ▫ PowerPC (IBM) ▫ Apple Machines (MkLinux) ▫ MIPS ▫ Motorola mobile processors (1st Gen)
The Source code• Linux follows a philosophy of open and free code.• Documentation projects and support groups help new users share the experience of developing for linux.• This approach made for easy experimentation and playing around with a framework.• All Productive changes would be incorporated in the main linux repostitory so as to make it available to anyone.
GNU• Stands for GNUs Not Unix.• A Free Software Foundation project to write a set of free compilers / debuggers / editors for various platforms.• This enabled similar code to run on a variety of platforms with minimal effort. Since it was free, it was incorporated into Linux.
Why the popularity of Linux?• Hardware ▫ Cost of hardware always decreases. ▫ Usage of a hardware required the device drivers to be available. ▫ Writing new drivers for Linux is the easiest solution. (For unavailable devices) ▫ Once the drivers were ready, they were incorporated into the main source so as to give everybody access to it!
Why the popularity of Linux?• Cost of developing tools ▫ Hardware developers rather than developing a complete OS for a processor, could simply port linux to that platform. ▫ Then everything that works in linux will work seamlessly reducing cost to a fraction. ▫ Driver Maintenance / Bug Fixes and improvements contributions from the FOSS community.
Why the popularity of Linux?• Software Developers ▫ A consistent software environments that is completely machine independent. ▫ Every system will have a GNU toolchain to compile code for the resident platform! ▫ If source distribution is given, the software can be distributed in C without worrying about hardware support.
GNU – GPL - Copyleft• GNU General Public License.• Terms for using Linux ▫ You can modify / copy / redistribute the src code at no cost provided you do so under the GPL ▫ If you get source under the GPL, any changes / improvements / spin offs you make to it are also under GPL ▫ You must always distribute source code + GPL of programs that you develop with the help of GPL software online.
Language of Linux• Linux was written completely in C and ASM.• UNIX (1969) was written in PDP-7 Assembly. ▫ This version of UNIX was unportable to new hardware.• Thomson developed B as a machine independent language to make UNIX portable.• Dennis Ritchie rewrote UNIX in C, a language he developed from B and concepts from other languages.
Why C?• C was designed as a language for a machine independent OS.• It was a high structured but not High-level language.• It supported both easy portability, allowed concepts like bit manupilation and at the same time had a neat – modular framework.• Linux uses gcc and g++ compilers from GNU to compile itself as well as all application within it.
Linux : More than an OS• Like as OS linux supports ▫ Memory Management ▫ Device management ▫ Task Scheduling ▫ User Management ▫ And more…• But it also comes with a set of tools and utilities that make life easier for the user/developers.
Overview of Linux• Kernel Interface• MultiTasking• Hierarchical Filesystem• A Shell Interpreter for the OS• Device independent I/O• Inter Process Communication• GUI• Software Development
Kernel Interface• Kernel is the Heart of the linux OS.• Handles all the background OS tasks. ▫ Divides system resources ▫ Manages memory ▫ Gives access to devices• Kernel abstracts the hardware from the rest of the processes.• Different Hardware need different setup and compiled kernels, and all other functionality will be unchanged.
MultiTasking• Linux was *always* a fully protected multitasking OS. (windows 95 was not!)• Jobs can be run in background, and owned by different users – on the same processor.• Linux manages resource between active processes / background processors and keeps in sync seamlessly.
Hierarchical filesystem• Files are kept in directories• Directories can hold other directories.• FHS – File system Hierarchy standard defines the rules for where certain files will always be kept.• The “root” of the linux fs is always „/‟• Files & directories can be owned by users to enforce security privilieges.
BASH – the linux Shell system• Bourne Again Shell• It acts as an interface between the user and the operating system• Commands / applications can be given to this interpreter which can then make the operating system do various tasks.• Commands can be stored in shell scripts for ease of access..
Device independent I/O• All physical devices – monitor, mouse, keyboard printer appear as files in the Linux file system that are manipulated by the kernel.• This means that if a program is written to manipulate this file, then the kernel will take it to mean an action on the physical I/O device.• This allows for a standard API for I/O in all linux systems.
Inter Process Communication• Different processes have their own memory space in RAM.• Linux provides pipes and filters for IPC.• A pipe connects two different processes – the input of one program to the other program‟s output.• Filter do some changes on a stream on date between two processes. The filters O/P is the I/P to another program.
Software Development• Linux makes it very easy to compile a program of any language. (C / C++ / Java / Python / Lisp / mono (.net))• The build tools sometimes have to be installed separately.• A wide range of IDE‟s such a Eclipse, Netbeans etc exist for programming purposes.
GUI• The X window system was developed by MIT labs.• Given a system that an run X, Linux can provide a graphical window based management system.• “Window Management system” Runs under X and can be changed easily as per the users preferences.
Ubuntu• Linux is divided into distributions.• All distributions run on top of the linux kernel.• Different Distro‟s are exist for taste and performance.• Ubuntu is a Debian based distro designed for both laptops and Desktops.• It focuses a lot on UX while maintaining speed & quality of the distro.
Installing Linux• Linux can be set up on dual boot between any version of windows.• From windows >> computer management >> disk management, you‟ll need to un-allocate some HDD memory for ubuntu. (10 – 30GB)• Then make an ubuntu DVD and boot into that DVD.• Ubuntu automatically detects the free space and Windows and puts itself cleanly inside.