8 Linux is a POSIX-compatible modern operating system developed since
9 1991, released under the GPLv2, with contributions by thousands of
10 people. It is mostly written in C, with some assembly code.
12 It has grown from a non-portable Intel 386 code with thousands lines to
13 a portable code with support for dozens of architectures and hundreds
14 machines and millions of code.
16 # When there was no Linux
22 * Finnish student Linus Torvalds
27 * Torvalds and Tanenbaum flamewar
28 * People's contributions
32 Since version 1.2, it has supported more than only Intel x86
33 architectures, including now SPARC, PowerPC, ARM, Alpha, M68K, MIPS,
34 S/390, and many others.
36 Since version 2.0, it has supported SMP systems, now running in systems
37 with hundreds of processors, multi-core processors, etc. Since then, its
38 SMP support has put to scale, with most bottlenecks removed.
45 - Andrew Tridgell starts reverse-engineering the storage and
49 # GregKH presentations
51 * Linux's growth in the 2.6 cycle
55 # The old development model
58 * Major and minor versions and releases
59 * Even minor versions are stable
60 * Odd minor versions are for development
62 # There is no Linux 2.7
64 * Development cycles were getting long
65 * Sometimes, people talk about 3.0 and breaking stuff
66 * A new development model
68 # The new versioning model
70 * After a given release, there are stable point releases: 2.6.33.X
71 * Release candidates are published by Linus: 2.6.34-rcX
72 * There is a linux-next tree that will help development for the next
75 # The development model (or how Linus gets all those changes)
77 * There are subsystems and there are maintainers for those
78 * People Linus trusts who asks for pulls or send patches
79 * People send patches to maintainers and to LKML for review
80 * Andrew Morton does the "missing patches" collection
84 * Documentation/SubmittingPatches
85 * Documentation/CodingStyle
86 * Documentation/SubmitChecklist
89 # The tools people use
93 * scripts/checkpatch.pl
94 * scripts/get\\_maintainer.pl
100 * kernel.org distributes tarballs, patches and "subpatches"
101 * ketchup makes it easier to get the right files
102 * Reduces download time
103 * Do not forget to import GPG keys or disable signature verification
107 * Compare two files or two trees
109 * Include new files: -N
111 * Show C function: -p
115 * Apply changes in a patch file using standard input
116 * patch file is generated using diff
117 * Strip directory prefix: -p N
122 * Organize patch series into a directory
123 * QUILT\\_PATCHES environment variable
124 * quilt new name.patch
127 * quile edit src/file
131 * Never forget to do 'quilt add' before editing a file
138 * arch/ARCH/include/asm/
143 * arch/ARCH/mach-MACH/
148 * arch/ARCH/include/asm/
149 * include/asm-generic/
161 # Drivers and Filesystems
188 # Your editor of choice
190 * vim works with ctags
191 * emacs works with etags
196 * -k (kernel mode) ignores /usr/include/
207 * Documentation/CodingStyle
208 * scripts/checkpatch.pl
217 # First configuration
219 * make allnoconfig/allyesconfig/allmodconfig
223 * make menuconfig (requires ncurses)
224 * make xconfig/gconfig
226 # Default configurations
228 * make XXX\\_defconfig
231 # Updating configuration
234 * make silentoldconfig
242 # Configuring for another architecture
244 * ARCH=x86\\_64 make menuconfig
251 * make bzImage (for x86)
258 * make modules\\_install
259 - uses INSTALL\\_MOD\\_PATH
261 - uses INSTALL\\_PATH
263 # Building out-of-tree
279 * Documentation/kernel-parameters.txt
280 * Bootloader configuration
285 * Necessary for user space to setup root
286 * filesystem initrd until 2.6.12
287 * initramfs: uses cpio (-H newc)