annotate master.idx @ 93:1bd46b3c996d

sed is greedy, so limit the regex match
author jim@jtan.com
date Sat, 10 Nov 2007 19:54:09 -0500
parents ac8a8db09cd1
children d00b5e91cba8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
1 <html>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
2 <title>Linux Kernel Documentation</title>
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
3 <body>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
4
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
5 <h2>Linux Kernel Documentation Index</h2>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
6
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
7 <p>This page collects and organizes documentation about the Linux kernel, taken
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
8 from many different sources. What is the kernel, how do you build it, how do
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
9 you use it, how do you change it...</p>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
10
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
11 <p>This is a work in progress, and probably always will be. Please let us know
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
12 on the
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
13 <a href=http://vger.kernel.org/vger-lists.html#linux-doc>linux-doc</a> mailing
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
14 list (on vger.kernel.org) about any documentation you'd like added to this
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
15 index, and feel free to ask about any topics that aren't covered here yet.
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
16 This index is maintained by Rob Landley &lt;rob@landley.net&gt;, and tracked in
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
17 <a href=http://landley.net/hg/kdocs>this mercurial repostiory</a>. The
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
18 cannonical location for the page is <a href=http://kernel.org/doc>here</a>.</p>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
19
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
20 <hr>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
21
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
22 <put_index_here>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
23
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
24 <hr>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
25
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 <span id="Sources of documentation">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
27
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 <p>These are various upstream sources of documentation, many of which are linked
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
29 into the <a href=http://kernel.org/doc>linux kernel documentation index</a>.</p>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
30
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
31 <span id="From the kernel">
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
32 <ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
33 <li><a href=Documentation>Text files in the kernel's Documentation directory.</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
34 <li><a href=htmldocs>Output of kernel's "make htmldocs".</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
35 <li><a href=menuconfig>Menuconfig help</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
36 <li><a href=readme>Linux kernel README files</a></li>
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
37 <li><a href=rfc-linux.html>IETF RFCs referred to by kernel source files.</a></li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
38 </ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
39 </span>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
40 <span id="Out on the web">
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
41 <ul>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
42 <li><a href=xmlman>html version of man-pages package</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
43 <li><a href=http://lwn.net/Kernel/Index/>Linux Weekly News kernel articles</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 <li>Linux Device Drivers book (<a href=http://lwn.net/Kernel/LDD3/>third edition</a>) (<a href=http://www.xml.com/ldd/chapter/book/>second edition</a>)</li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
45 <li><a href=ols>Ottawa Linux Symposium papers</li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 <li><a href=http://www.linuxjournal.com/xstatic/magazine/archives>Linux Journal archives</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
47 <li><a href=http://www.ibm.com/developerworks/views/linux/library.jsp>IBM Developerworks Linux Library</a> (also <a href=http://www.ibm.com/developerworks/linux/library/l-linux-kernel/>here</a>)
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 </li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
49 <li><a href=http://www.tux.org/lkml/>Linux Kernel Mailing List FAQ</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
50 <li><a href=http://kernelplanet.org>Kernel Planet (blog aggregator)</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 <li><a href=video.html>Selected videos of interest</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
52 <li><a href=local>Some locally produced docs</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
53 </ul>
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
54 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
55
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
56 <span id="Standards">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
57 <ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
58 <li><a href=http://www.opengroup.org/onlinepubs/009695399/>Single Unix Specification v3</a> (Also known as Open Group Base Specifications issue 6, and closely overlapping with Posix. See especially <a href=http://www.opengroup.org/onlinepubs/009695399/idx/xsh.html>system interfaces</a>)</li>
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
59 <li>C99 standard (defining the C programming language): <a href=http://www.open-std.org/jtc1/sc22/wg14/www/standards>ISO/IEC C9899 PDF</a> or <a href=http://c0x.coding-guidelines.com/>searchable website</a>.</li>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
60 <li><a href=http://www.linux-foundation.org/spec/refspecs/>Linux Foundation's specs page</a> (ELF, Dwarf, ABI...)</li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
61 </ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
62 </span id="Standards">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
63
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
64 <span id="Translations">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
65 <ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
66 <li><a href=http://tlktp.sourceforge.net/>Linux Kernel Translation Project</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
67 <li><a href=http://kernelnewbies.org/RegionalNewbies>Kernel Newbies regional pages</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
68 <li><a href=http://www.linux.or.jp/JF/index.html>Japanese</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
69 <li><a href=http://zh-kernel.org/docs>Chinese</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
70 </ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
71 </span id="Translations">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
72
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
73 </span id="Sources of documentation">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
74
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
75 <span id="Building from source">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
76 <span id="User interface">
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
77 <p>Building source packages is usually a three step process: configure, build,
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
78 and install.</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
79
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
80 <p>The Linux kernel is configured with the command "make menuconfig", built
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
81 with the command "make", and installed either manually or with the command
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
82 "make install".</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
83
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
84 <blockquote>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
85 <pre>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
86 tar xvjf linux-2.6.??.tar.bz2
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
87 cd linux-2.6.??
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
88 make menuconfig
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
89 make
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
90 make install
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
91 </pre>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
92 </blockquote>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
93
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
94 <p>For a description of the make options and targets, type <a href=makehelp.txt>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
95 make help</a>.</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
96
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
97 <span id="Get and extract the source">
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
98 <p>The Linux kernel source code is distributed by
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
99 <a href=http://kernel.org>kernel.org</a> as tar archives. Grab the most recent
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
100 "stable" release (using the tiny little letter F link) to grab a file of the
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
101 form "linux-2.6.*.tar.bz2" from the
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
102 <a href=http://kernel.org/pub/linux/kernel/v2.6/>Linux 2.6 releases
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
103 directory</a>. Then extract this archive with the command "tar xvjf
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
104 linux-2.6.*.tar.bz2". (Type the command "man tar" for more information on the
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
105 tar command.) Then cd into the directory created by extracting the archive.</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
106
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
107 <p>To obtain other Linux kernel versions (such as development releases and
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
108 kernels supplied by <a href="#Distibutions">distributions</a>)
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
109 see <a href="Following_Linux_development">Following Linux development</a>.</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
110
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
111 <p>To return your linux kernel source directory to its original (unconfigured)
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
112 condition after configuring and building in it, either either delete the
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
113 directory with "rm -r" and re-extract it from the tar archive, or run the
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
114 command "make distclean".</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
115 </span>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
116
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
117 <span id="Configuring">
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
118
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
119 <p>Before you can build the kernel, you have to configure it. Configuring
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
120 selects which features this kernel build should include, and specifies other
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
121 technical information such as buffer sizes and optimization strategies.
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
122 This information is stored in a file named ".config" in the top level directory
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
123 of the kernel source code. To see the various user interfaces to the
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
124 configuration system, type "<a href=makehelp.txt>make help</a>".</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
125
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
126 <p>Note that "make clean" does not delete configuration information, but the
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
127 more thorough "make distclean" does.</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
128
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
129 <span id="Using an existing configuration">
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
130
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
131 <p>Often when building a kernel, an existing .config file is supplied from
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
132 elsewhere. Copy it into place, and optionally run "make oldconfig" to run
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
133 the kernel's diagnostics against it to ensure it matches the kernel version
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
134 you're using, updating anything that's out of sync.</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
135
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
136 <p>Several preset configurations are shipped with the kernel source code.
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
137 Run the command <b>find . -name "*_defconfig"</b> in the kernel source
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
138 directory to seem them all. Any of these can be copied to .config and
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
139 used as a starting point.</p>
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
140
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
141 <p>The kernel can also automatically generate various configurations,
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
142 mostly to act as starting points for customization:</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
143 <ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
144 <li><b>make defconfig</b> - Set all options to default values</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
145 <li><b>make allnoconfig</b> - Set all yes/no options to "n"</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
146 <li><b>make allyesconfig</b> - Set all yes/no options to "y"</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
147 <li><b>make allmodconfig</b> - Set all yes/no options to "y" and all "yes/module/no" options to "m"</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
148 <li><b>make randconfig</b> - Set each option randomly (for debugging purposes).</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
149 <li><b>make oldconfig</b> - Update a .config file from a previous version of the kernel to work with the current version.</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
150 </ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
151
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
152 </span>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
153 <span id="Creating a custom kernel configuration">
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
154 <p>The most common user interface for configuring the kernel is
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
155 <b>menuconfig</b>, an interactive terminal based menuing interface invoked
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
156 through the makefiles via "<b>make menuconfig</b>". This interface groups the
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
157 configuration questions into a series of menus, showing the current values
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
158 of each symbol and allowing them to be changed in any order. Each symbol
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
159 has associated help text, explaining what the symbol does and where to find
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
160 more information about it. This help text is
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
161 <a href=menuconfig>also available as html</a>.</p>
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
162
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
163 <p>The menuconfig interface is controlled with the following keys:</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
164
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
165 <ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
166 <li><b>cursor up/down</b> - move to another symbol</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
167 <li><b>tab</b> - switch action between edit, help, and exit</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
168 <li><b>enter</b> - descend into menu (or help/exit if you hit tab first)</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
169 <li><b>esc</b> - exit menu (prompted to save if exiting top level menu)</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
170 <li><b>space</b> - change configuration symbol under cursor</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
171 <li><b>?</b> - view help for this symbol</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
172 <li><b>/</b> - search for a symbol by name</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
173 </ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
174
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
175 <p>Other configuration interfaces (functionally equivalent to menuconfig)
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
176 include:</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
177 <ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
178 <li><b>make config</b> - a simple text based question and answer interface
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
179 (which does not require curses support, or even a tty)</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
180 <li><b>make xconfig</b> - QT based graphical interface</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
181 <li><b>make gconfig</b> - GTK based graphical interface</li>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
182 </ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
183
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
184 </span>
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
185
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
186 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
187 <span id="building">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
188 <span id="Building out of tree">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
189 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
190 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
191 <span id="Installing">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
192 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
193 <span id="running">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
194 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
195 <span id="debugging">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
196 <span id="QEMU">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
197 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
198 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
199 <span id="cross compiling">
68
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
200 <span id="Cross compiling vs native compiling">
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
201 <p>By default, Linux builds for the same architecture the host system is
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
202 running. This is called "native compiling". An x86 system building an x86
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
203 kernel, x86-64 building x86-64, or powerpc building powerpc are all examples
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
204 of native compiling.</p>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
205
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
206 <p>Building different binaries than the host runs is called cross compiling.
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
207 <a href=http://landley.net/writing/docs/cross-compiling.html>Cross
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
208 compiling is hard</a>. The build system for the Linux kernel supports cross
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
209 compiling via a two step process: 1) Specify a different architecture (ARCH)
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
210 during the configure, make, and install stages. 2) Supply a cross compiler
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
211 (CROSS_COMPILE) which can output the correct kind of binary code. An
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
212 example cross compile command line (building the "arm" architecture) looks
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
213 like:</p>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
214
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
215 <blockquote>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
216 <pre>make ARCH=arm menuconfig
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
217 make ARCH=arm CROSS_COMPILE=armv5l-
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
218 </pre>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
219 </blockquote>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
220
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
221 <p>To specify a different architecture than the host, either define the "ARCH"
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
222 environment variable or else add "ARCH=xxx" to the make command line for each
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
223 of the make config, make, and make install stages. The acceptable values for
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
224 ARCH are the names of the directories in the "arch" subdirectory of the Linux
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
225 kernel source code, see <a href="#Architectures">Architectures</a> for
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
226 details. All stages of the build must use the same ARCH value, and building a
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
227 second architecture in the same source directory requires "make distclean".
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
228 (Just "make clean" isn't sufficient, things like the include/asm symlink need
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
229 to be removed and recreated.)</p>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
230
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
231 <p>To specify a cross compiler prefix, define the CROSS_COMPILE environment
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
232 variable (or add CROSS_COMPILE= to each make command line). Native compiler
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
233 tools, which output code aimed at the environment they're running in, usually
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
234 have a simple name ("gcc", "ld", "strip"). Cross compilers usually add a
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
235 prefix to the name of each tool, indicating the target they produce code for.
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
236 To tell the Linux kernel build to use a cross compiler named "armv4l-gcc" (and
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
237 corresponding "armv4l-ld" and "armv4l-strip") specify "CROSS_COMPILE=armv4l-".
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
238 (Prefixes ending in a dash are common, and forgetting the trailing dash in
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
239 CROSS_COMPILE is a common mistake. Don't forget to add the cross compiler
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
240 tools to your $PATH.)</p>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
241 </span>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
242
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
243
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
244
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
245 <span id="User Mode Linux">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
246 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
247 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
248 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
249 <span id="Infrastructure">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
250 <span id="kconfig">
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
251 <p>The Linux configuration system is called Kconfig. The various
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
252 configuration front-ends (such as menuconfig) parse data files
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
253 written in the <a href=Documentation/kconfig-language.txt>Kconfig language</a>,
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
254 which define the available symbols and provide default values, help entries,
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
255 and so on.</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
256
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
257 <p>The source code for the front ends is in scripts/kconfig. The
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
258 Makefile in this directory defines the make targets for the configuration
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
259 system.</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
260
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
261 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
262 <span id="kbuild">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
263 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
264 <span id="build and link (tmppiggy)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
265 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
266 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
267 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
268
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
269 <span id="Installing and using the kernel">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
270 <span id="Installing">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
271 <span id="Kernel image">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
272 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
273 <span id="Bootloader">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
274 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
275 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
276 <span id="A working Linux root filesystem">
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
277 <p><a href=ols/2002/ols2002-pages-176-182.pdf>Advanced Boot Scripts</a></p>
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
278 <span id="Finding and mounting /">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
279 <span id="initramfs, switch_root vs pivot_root, /dev/console">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
280 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
281 </span>
61
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
282 <span id="Running programs">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
283 <span id="init program and PID 1">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
284 <span id="What does daemonizing really mean?">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
285 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
286 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
287 <span id="Executable formats">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
288 <p>The Linux kernel runs programs in response to the
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
289 <a href=xmlman/man3/exec.html>exec</a> syscall, which is called on a
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
290 file. This file must have the
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
291 executable bit set, and must be on a filesystem that implements mmap() and which
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
292 isn't mounted with the "noexec" option. The kernel understands
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
293 several different <a href="#executable_file_formats">executable file
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
294 formats</a>, the most common of which are shell scripts and ELF binaries.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
295 <span id="Shell scripts">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
296 <p>If the first two bytes of an executable file are the characters "#!", the
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
297 file is treated as a script file. The kernel parses the first line of the file
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
298 (until the first newline), and the first argument (immediately following
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
299 the #! with no space) is used as absolute path to the script's interpreter,
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
300 which must be an executable file. Any additional arguments on the first
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
301 line of the file (separated by whitespace) are passed as the first arguments
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
302 to that interpreter executable. The interpreter's next argument is the name of
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
303 the script file, followed by the arguments given on the command line.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
304
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
305 <p>To see this behavior in action, run the following:</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
306 <blockquote>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
307 <pre>echo "#!/bin/echo hello" > temp
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
308 chmod +x temp
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
309 ./temp one two three
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
310 </pre>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
311 </blockquote>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
312
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
313 <p>The result should be:</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
314 <blockquote>hello ./temp one two three</blockquote>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
315
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
316 <p>This is how shell scripts, perl, python, and other scripting languages
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
317 work. Even C code can be run as a script by installing the
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
318 <a href=http://en.wikipedia.org/wiki/Tiny_C_Compiler>tinycc</a> package,
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
319 adding "#!/usr/bin/tcc -run" to the start of the .c file, and setting the
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
320 executable bit on the .c file.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
321 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
322 <span id="ELF">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
323 <span id="Shared libraries">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
324 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
325 </span>
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
326 </span>
61
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
327
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
328 <span id="C library">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
329 <p>Most userspace programs access operating system functionality through a C
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
330 library, usually installed at "/lib/libc.so.*". The C library wraps system
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
331 calls, and provides implementations of various standard functions.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
332
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
333 <p>Because almost all other programming languages are implemented in C
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
334 (including python, perl, php, java, javascript, ruby, flash, and just about
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
335 everything else), programs written in other languages also make use of the
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
336 C library to access operating system services.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
337
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
338 <p>The most common C library implementations for Linux are
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
339 <a href=http://www.linuxfromscratch.org/lfs/view/6.2/chapter06/glibc.html>glibc</a>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
340 and <a href=http://uClibc.org>uClibc</a>. Both are full-featured
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
341 implementations capable of supporting a full-featured desktop Linux
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
342 distribution.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
343
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
344 <p>The main advantage of glibc is that it's the standard implementation used by the
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
345 largest desktop and server distributions, and has more features than any other
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
346 implementation. The main advantage of uClibc is that it's much smaller and
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
347 simpler than glibc while still implementing almost all the same functionality.
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
348 For comparison, a "hello world" program statically linked against glibc is half
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
349 a megabyte when stripped, while the same program statically linked against
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
350 uClibc strips down to 7k.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
351
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
352 <p>Other commonly used special-purpose C library implementations include
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
353 <a href=http://en.wikipedia.org/wiki/Klibc>klibc</a> and
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
354 <a href=http://www.sourceware.org/newlib/>newlib</a>.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
355
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
356 <span id="Exporting kernel headers">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
357 <p>Building a C library from source code requires a special set
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
358 of Linux kernel header files, which describe the API of the specific version
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
359 of the Linux kernel the C library will interface with. However, the header
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
360 files in the kernel source code are designed to build the kernel and contain
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
361 a lot of internal information that would only confuse userspace. These
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
362 kernel headers must be "exported", filtering them for use by user space.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
363
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
364 <p>Modern Linux kernels (based on 2.6.19.1 and newer) export kernel headers via
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
365 the "make headers_install" command. See
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
366 <a href=Documentation/make/headers_install.txt>exporting kernel headers for
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
367 use by userspace</a> for more information.</p>
61
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
368 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
369 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
370 <span id="Dynamic loader">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
371 </span>
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
372 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
373 <span id="FHS directories">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
374 <p>FHS spec</p>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
375 <a href="pending/hotplug.txt">populating /dev from sysfs</a>.
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
376 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
377 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
378 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
379
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
380 <span id="Reading the source code">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
381 <span id="Source code layout">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
382 <span id="Following the boot process">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
383 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
384 <span id="Major subsystems">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
385 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
386 <span id="Architectures">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
387 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
388 </span>
49
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
389 <span id="Concept vs implementation">
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
390 <p>Often the first implementation of a concept gets replaced.
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
391 Journaling != reiserfs, virtualization != xen, devfs gave way to udev...
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
392 Don't let your excitement for the concept blind you to the possibility
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
393 of alternate implementations.</p>
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
394 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
395 <span id="Concepts">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
396 <span id="rbtree">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
397 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
398 <span id="rcu">
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
399 <p>RCU stands for "Read Copy Update". The technique is a lockless way to manage data structures
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
400 (such as linked lists or trees) on SMP systems, using a specific sequence of reads and updates,
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
401 plus a garbage collection step, to avoid the need for locks in both the read and the update
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
402 paths.</p>
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
403
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
404 <p>RCU was invented by Paul McKenney, who maintains an excellent page of
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
405 <a href=http://www.rdrop.com/users/paulmck/RCU/>RCU documentation</a>.
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
406 The Linux kernel also contains some <a href=Documentation/RCU>additional RCU
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
407 Documentation</a>.</p>
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
408
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
409 <p>RCU cannot be configured out of the kernel, but the kconfig symbol
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
410 <a href=menuconfig/lib-Kconfig.debug.html#RCU_TORTURE_TEST>CONFIG_RCU_TORTURE_TEST</a> controls the
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
411 <a href=Documentation/RCU/torture.txt>RCU Torture test module</a>.</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
412
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
413 <p>References:</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
414 <ul>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
415 <li><a href=ols/2001/read-copy.pdf>Read-Copy Update</a> (OLS 2001)</li>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
416 </ul>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
417
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
418 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
419 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
420 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
421
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
422 <span id="Kernel infrastructure">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
423 <span id="Process Scheduler">
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
424
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
425 <span id="History of the Linux Process Scheduler">
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
426 <p>The original Linux process scheduler was a simple design based on
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
427 a goodness() function that recalculated the priority of every task at every
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
428 context switch, to find the next task to switch to. This served almost
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
429 unchanged through the 2.4 series, but didn't scale to large numbers of
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
430 processes, nor to SMP. By 2001 there were calls for
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
431 change (such as the OLS paper <a href=ols/2001/elss.pdf>Enhancing Linux
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
432 Scheduler Scalability</a>), and the issue
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
433 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020107_149.html#1>came to a head</a> in December 2001.</p>
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
434
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
435 <p>In January 2002, Ingo Molnar
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
436 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020114_150.html#4>introduced the "O(1)" process scheduler</a> for the 2.5 kernel series, a design
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
437 based on separate "active" and "expired" arrays, one per processor. As the name
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
438 implied, this found the next task to switch to in constant time no matter
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
439 how many processes the system was running.</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
440
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
441 <p>Other developers (<a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020513_166.html#4>such as Con Colivas</a>) started working on it,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
442 and began a period of extensive scheduler development. The early history
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
443 of Linux O(1) scheduler development was covered by the website Kernel
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
444 Traffic.</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
445
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
446 <p>During 2002 this work included
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
447 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020121_151.html#8>preemption</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
448 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020121_151.html#9>User Mode Linux support</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
449 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020211_153.html#2>new drops</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
450 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020211_153.html#7>runtime tuning</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
451 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020304_156.html#6>NUMA support</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
452 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020429_164.html#4>cpu affinity</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
453 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020617_171.html#4>scheduler hints</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
454 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020701_173.html#1>64-bit support</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
455 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020715_175.html#5>backports to the 2.4 kernel</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
456 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020715_175.html#4>SCHED_IDLE</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
457 discussion of <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20020729_177.html#1>gang scheduling</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
458 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20021014_188.html#4>more NUMA</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
459 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20021118_192.html#9>even more NUMA</a>). By the end of 2002, the O(1) scheduler was becoming
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
460 the standard <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20021223_197.html#1>even in the 2.4 series</a>.</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
461
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
462 <p>2003 saw support added for
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
463 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20030124_202.html#14>hyperthreading as a NUMA variant</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
464 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20030330_211.html#3>interactivity bugfix</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
465 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20030616_219.html#4>starvation and affinity bugfixes</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
466 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20030616_219.html#8>more NUMA improvements</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
467 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20030811_227.html#2>interactivity improvements</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
468 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20030811_227.html#8>even more NUMA improvements</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
469 a proposal for <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20031026_237.html#7>Variable Scheduling Timeouts</a> (the first rumblings of what
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
470 would later come to be called "dynamic ticks"),
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
471 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20031201_243.html#10>more on hyperthreading</a>...</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
472
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
473 <p>In 2004 there was work on <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20040120_248.html#2>load balancing and priority handling</a>, and
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
474 <a href=http://mirell.org/kernel-traffic/kernel-traffic/kt20040212_252.html#5>still more work on hyperthreading</a>...</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
475
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
476 <p>In 2004 developers proposed several extensive changes to the O(1) scheduler.
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
477 Linux Weekly News wrote about Nick Piggin's
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
478 <a href=http://lwn.net/Articles/80911/>domain-based scheduler</a>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
479 and Con Colivas' <a href=http://lwn.net/Articles/87729/>staircase scheduler</a>. The follow-up article <a href=http://lwn.net/Articles/96554/>Scheduler tweaks get serious</a> covers both. Nick's scheduling domains
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
480 were merged into the 2.6 series.</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
481
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
482 <p>Linux Weekly News also wrote about other scheduler work:</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
483
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
484 <ul>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
485 <li><a href=http://lwn.net/Articles/83633/>Filtered wakeups</a></li>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
486 <li><a href=http://lwn.net/Articles/105366/>When should a process be migrated</a></li>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
487 <li><a href=http://lwn.net/Articles/109458/>Pluggable and realtime schedulers</a></li>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
488 <li><a href=http://lwn.net/Articles/120797/>Low latency for audio applications:</a></li>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
489 <li><a href=http://lwn.net/Articles/176635/>Solving starvation problems in the scheduler:</a></li>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
490 <li><a href=http://lwn.net/Articles/186438/>SMPnice</a></li>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
491 </ul>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
492
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
493 <p>In 2007, Con Colivas proposed a new scheduler, <a href=http://lwn.net/Articles/224865/>The Rotating Staircase Deadline Scheduler</a>, which
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
494 <a href=http://lwn.net/Articles/226054/>hit a snag</a>. Ingo
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
495 Molnar came up with a new scheduler, which he named the
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
496 <a href=http://lwn.net/Articles/230501/>Completely Fair Scheduler</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
497 described in the LWN writeups
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
498 <a href=http://lwn.net/Articles/230574/>Schedulers: the plot thickens</a>,
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
499 <a href=http://lwn.net/Articles/231672/>this week in the scheduling discussion</a>, and
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
500 <a href=http://lwn.net/Articles/240474/>CFS group scheduling</a>.</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
501
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
502 <p>The CFS scheduler was merged into 2.6.23.</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
503 </span>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
504
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
505 <span id="fork, exec">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
506 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
507 <span id="sleep">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
508 </span>
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
509 <span id="realtime">
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
510 <p><a href=ols/2001/rtai.pdf>The Real-Time Application Interface</a> (OLS 2001, obsolete)</a></p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
511 </span>
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
512 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
513 <span id="Timers">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
514 <span id="Interrupt handling">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
515 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
516 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
517 <span id="memory management">
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
518 <ul>
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
519 <li><a href="gorman">Understanding the Linux Virtual Memory Manager</a>, online book by Mel Gorman.</li>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
520 <li> What every programmer should know about memory, article series by Ulrich Drepper,
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
521 parts
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
522 <a href=http://lwn.net/Articles/250967/>one</a>,
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
523 <a href=http://lwn.net/Articles/252125/>two</a>,
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
524 <a href=http://lwn.net/Articles/253361/>three</a>,
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
525 <a href=http://lwn.net/Articles/254445/>four</a>,
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
526 <a href=http://lwn.net/Articles/255364/>five</a>.
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
527 </li>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
528 <li>Ars technica ram guide, article series by Jon "Hannibal" Stokes, parts
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
529 <a href=http://arstechnica.com/paedia/r/ram_guide/ram_guide.part1-1.html>one</a>,
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
530 <a href=http://arstechnica.com/paedia/r/ram_guide/ram_guide.part1-1.html>two</a>,
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
531 <a href=http://arstechnica.com/paedia/r/ram_guide/ram_guide.part3-1.html>three</a></li>
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
532 </ul>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
533 <span id="mmap, DMA">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
534 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
535 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
536 <span id="vfs">
68
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
537 <span id="Pipes, files, and ttys">
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
538 <p>A pipe can be read from or written to, transmitting a sequence of bytes
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
539 in order.</p>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
540
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
541 <p>A file can do what a pipe can, and adds the ability to seek to a location,
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
542 query the current location, and query the length of the file (all of which are
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
543 an integer number off bytes from the beginning of the file).</p>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
544
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
545 <p>A tty can do what a pipe can, and adds a speed (in bits per second)
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
546 and cursor location (X and Y, with the upper left corner at 0,0). Oh, and
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
547 you can make it go beep.</p>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
548
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
549 <p>Note that you can't call lseek() on a tty and you can't call termios
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
550 (man 3 termios) functions on a file. Each can be treated as a pipe.</p>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
551 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
552 <span id="Filesystems">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
553 <span id="Types of filesystems (see /proc/filesystems)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
554 <span id="Block backed">
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
555 <span id="ext2">
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
556 <ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
557 <li><a href=ols/2002/ols2002-pages-117-129.pdf>Online ext2 and ext3 Filesystem Resizing</a> (OLS 2002)</li>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
558 </ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
559 </span>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
560 <span id="jffs2">
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
561 <ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
562 <li><a href=ols/2001/jffs2.pdf>JFFS: The Journalling Flash Filesystem</a> (OLS 2001)</li>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
563 </ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
564 </span>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
565 <span id="vxfs">
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
566 <ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
567 <li><a href=menuconfig/fs-Kconfig.html#VXFS_FS>CONFIG_VXFS_FS</a></li>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
568 <li><a href=ols/2002/ols2002-pages-191-196.pdf>Reverse engineering an advanced filesystem</a></li>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
569 </ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
570 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
571 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
572 <span id="Ram backed">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
573 <span id="ramfs">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
574 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
575 <span id="tmpfs">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
576 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
577 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
578 <span id="Synthetic">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
579 <span id="proc">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
580 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
581 <span id="sys">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
582 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
583 <span id="internal (pipefs)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
584 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
585 <span id="usbfs">
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
586 http://www.linux-usb.org/USB-guide/x173.html
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
587 http://www.linux-usb.org/USB-guide/c607.html
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
588 http://www.linuxjournal.com/article/7466
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
589 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
590 <span id="devpts">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
591 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
592 <span id="rootfs">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
593 </span>
53
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
594 <span id="devfs (obsolete)">
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
595 <p>Devfs was the first attempt to do a dynamic /dev directory which could change
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
596 in response to hotpluggable hardware, by doing the seemingly obvious thing of
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
597 creating a kernel filesystem to mount on /dev which would adjust itself as
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
598 the kernel detected changes in the available hardware.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
599
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
600 <p>Devfs was an interesting learning experience, but turned out to be the wrong
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
601 approach, and was replaced by sysfs and udev. Devfs was removed in kernel
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
602 version 2.6.18. See
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
603 <a href=local/hotplug-history.html>the history of hotplug</a> for details.</p>
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
604
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
605 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
606 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
607 <span id="Network">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
608 <span id="nfs">
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
609 <p><a href=ols/2001/nfsv4_ols.pdf>Linux NFS Version 4: Implementation and Administration</a> (OLS 2001)</a></p>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
610 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
611 <span id="smb/cifs">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
612 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
613 <span id="FUSE">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
614 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
615 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
616 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
617 <span id="Filesystem drivers">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
618 <span id="Using">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
619 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
620 <span id="Writing">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
621 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
622 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
623 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
624 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
625
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
626 <span id="Drivers">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
627 <span id="Filesystem">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
628 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
629 <span id="Block (block layer, scsi layer)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
630 <span id="SCSI layer">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
631 <ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
632 <li><a href="Documentation/scsi">Documentation/scsi</a> scsi.txt scsi_mid_low_api.txt scsi-generic.txt scsi_eh.txt</li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
633 <li><a href="http://sg.torque.net/sg/p/sg_v3_ho.html">SCSI Generic (sg) HOWTO</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
634 <li><a href="xmlman/man4/sd.html">man 4 sd</a></li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
635 <li><a href="http://www.t10.org/scsi-3.htm">SCSI standards</a></li>
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
636 <li><a href=ols/2002/ols2002-pages-40-49.pdf>Incrementally Improving the Linux SCSI Subsystem</a> (OLS 2002)</li>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
637 </ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
638 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
639 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
640 <span id="Character">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
641 <span id="serial">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
642 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
643 <span id="keyboard">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
644 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
645 <span id="tty">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
646 <span id="pty">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
647 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
648 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
649 <span id="audio">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
650 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
651 <span id="null">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
652 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
653 <span id="random/urandom">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
654 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
655 <span id="zero">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
656 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
657 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
658 <span id="DRI">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
659 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
660 <span id="Network">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
661 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
662 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
663
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
664 <span id="Hotplug">
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
665 <p><a href=http://kernel.org/ols/2001/hotplug.pdf>Hotpluggable devices and the Linux kernel</a> (OLS 2001)</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
666 <p><a href=local/hotplug-history.html>The history of hotplug</a></p>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
667 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
668 <span id="Input core">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
669 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
670 <span id="Network">
68
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
671 <pre>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
672 physical
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
673 plip
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
674 serial/slip/ppp
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
675 ethernet
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
676 routing
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
677 ipv4
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
678 ipv6
68
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
679 </pre>
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
680 <p><a href=ols/2001/mipl.pdf>MIPL Mobile IPv6 for Linux in HUT Campus Network MediaPoli</a> (OLS 2001)</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
681 <p><a href=ols/2001/sctp.pdf>Linux Kernel SCTP: The Third Transport</a> (OLS 2001)</p>
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
682 <p><a href=ols/2002/ols2002-pages-8-30.pdf>TCPIP Network Stack Performance in Linux Kernel 2.4 and 2.5</a></p>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
683 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
684 <span id="Modules">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
685 <span id="Exported symbols">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
686 <p>EXPORT_SYMBOL() vs EXPORT_SYMBOL_GPL()</p>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
687 <p>List of exported symbols.</p>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
688 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
689 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
690 <span id="Busses">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
691 </span>
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
692 <span id="Security">
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
693 <span id="Traditional Unix security model">
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
694 Users, groups, files (rwx), signals.
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
695 </span>
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
696 <span id="More complicated security models">
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
697 <p>The traditional Unix security model is too simple to satisfy the
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
698 certification requirements of large corporate and governmental organizations,
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
699 so several add-on security models have been implemented to increase
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
700 complexity. There is some debate as to which of these (if any) are actually an
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
701 improvement.</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
702
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
703 <span id="Posix capabilities">
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
704 http://www.gentoo.org/proj/en/hardened/capabilities.xml
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
705 </span>
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
706 <span id="SELinux">
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
707 <p><a href=ols/2001/selinux.pdf>Meeting Critical Security Objectives with Security-Enhanced Linux</a> (OLS 2001)</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
708 <p><a href=ols/2002/ols2002-pages-65-72.pdf>SE Debian: how to make NSA SE LInux work in a distribution</a> (OLS 2002)</p>
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
709 </span>
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
710 </span>
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
711 <span id="Encryption">
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
712 <p><a href=ols/2002/ols2002-pages-73-92.pdf>The Long Road to the Advanced Encryption Standard</a></p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
713 </span>
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
714 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
715 <span id="API (how userspace talks to the kernel)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
716 <span id="Syscalls">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
717 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
718 <span id="ioctls">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
719 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
720 <span id="executable file formats">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
721 <span id="a.out">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
722 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
723 <span id="elf">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
724 <span id="css, bss, etc.">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
725 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
726 </span>
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
727 <span id="scripts">
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
728 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
729 <span id="flat">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
730 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
731 <span id="misc">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
732 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
733 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
734 <span id="Device nodes">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
735 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
736 <span id="Pipes (new pipe infrastructure)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
737 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
738 <span id="Synthetic filesystems (as API)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
739 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
740 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
741 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
742
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
743 <span id="Hardware">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
744 <span id="Architectures">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
745 <pre>
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
746 alpha
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
747 arm
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
748 avr32
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
749 blackfin
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
750 cris
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
751 frv
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
752 h8300
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
753 i386
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
754 ia64
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
755 m32r
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
756 m68k
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
757 m68knommu
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
758 <a href=ols/2002/ols2002-pages-130-145.pdf>Running Linux on a DSP: Exploiting the Computational Resources of a programmable DSP Micro-Processor with uClinux</a> (OLS 2002)
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
759 mips
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
760 parisc
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
761 <a href=ols/2002/ols2002-pages-183-190.pdf>Porting Drivers to HP ZX1</a>
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
762 powerpc
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
763 <a href=ols/2001/iseries.pdf>The Linux Kernel on iSeries</a> (OLS 2001)
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
764 <a href=ols/2001/ppc64.pdf>PowerPC 64-bit Kernel Internals</a> (OLS 2001)
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
765 <a href=http://perso.magic.fr/l_indien/qemu-ppc/PowerPC_ref/PowerPC_ref.html>PowerPC implementation reference for QEMU</a>
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
766 ppc
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
767 s390
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
768 sh
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
769 sh64
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
770 sparc
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
771 sparc64
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
772 um
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
773 <a href=ols/2001/uml.pdf>User-Mode Linux</a> (OLS 2001)
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
774 <a href=ols/2002/ols2002-pages-107-116.pdf>Making Linux Safe for Virtual Machines</a> (OLS 2002)
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
775 v850
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
776 x86_64
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
777 <a href=ols/2001/x86-64.pdf>Porting Linux to x86-64</a> (OLS 2001)
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
778 xtensa
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
779
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
780 include/asm-generic
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
781 uml
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
782 </pre>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
783 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
784 <span id="DMA, IRQ, MMU (mmap), IOMMU, port I/O">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
785 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
786 <span id="Busses">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
787 <span id="PCI, USB">
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
788 http://www.linux-usb.org/USB-guide/book1.html
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
789 Documentation/usb
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
790 <p><a href=ols/2001/pci.pdf>PCIComm: A Linux Device Driver for Communication over PCI Shared Memory</a> (OLS 2001)</p>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
791 <p><a href=ols/2001/powertweak.pdf>Linux performance tuning using Powertweak</a> (OLS 2001)</p>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
792 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
793 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
794 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
795
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
796 <span id="Following Linux development">
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
797 <span id="Distibutions">
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
798 </span>
49
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
799 <span id="Releases">
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
800 <span id="Source control">
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
801
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
802 <p>Linux releases from 0.0.1 through 2.4.x used no source control system, just
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
803 release tarballs. Releases 2.5.0 through 2.6.12-rc2 used a proprietary
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
804 source control system called BitKeeper. Releases 2.6.12-rc2 through the
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
805 present use a source control system called git.</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
806
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
807 <p>Early Linux development didn't use source control. Instead Linus would
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
808 apply patches to his copy of the source, and periodically release tarball
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
809 snapshots of his development tree with a hand-edited changelog file noting who
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
810 contributed each patch he'd applied. Most of these patches were posted to the
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
811 Linux Kernel Mailing List, and with a little effort could be fished out of the
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
812 mailing list archives.</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
813
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
814 <p>This worked for many years, but didn't scale as Linux development grew.
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
815 Eventually the issue came to a head [link], and after some discussion Linus
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
816 decided to use a proprietary distributed source control system called
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
817 BitKeeper for the 2.5 development branch. Linux releases v2.5.0 through
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
818 v2.6.12-rc2 were put out this way.</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
819
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
820 <p>Linux development no longer uses BitKeeper, due to the sudden
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
821 <a href=http://lwn.net/Articles/130746/>expiration of the
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
822 "Don't piss off Larry license"</a> under which BitKeeper was made available
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
823 to the Linux community (<a href=http://lwn.net/Articles/132938/>more here</a>).
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
824 This prompted Linus to take a month off from Linux development to write his own
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
825 distributed source control system, git. This is why the current source control
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
826 history in the main git development repository goes back to 2.6.12-rc2.
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
827 (The revision history from the BitKeeper era was later
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
828 <a href=http://git.kernel.org/?p=linux/kernel/git/tglx/history.git;a=summary>converted to git</a>, but remains separate for historical reasons.)</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
829
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
830 <p>Linus initially chose BitKeeper because he wanted a distributed source
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
831 control system, and the open source alternatives available at the time were
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
832 all centralized source control systems.</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
833
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
834 <p>In a distributed source control
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
835 system, every user has a complete copy of the project's entire revision
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
836 history, which they can add their own changes to locally. A centralized source
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
837 control system requires a single central location, with user accounts to
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
838 control access and either locking the tree or rejecting attempts to apply out
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
839 of date patches. A distributed source control system is instead designed to
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
840 download and merge changes from many different repositories after they're
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
841 checked in to those other repositories. The source control system handles
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
842 almost all of this merging automatically, because it can trace the changes in
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
843 each repository back to a common ancestor, and then use three-way merge
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
844 algorithms to better understand the changes. (Patches don't indicate
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
845 which version they apply to. A distributed source control system has
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
846 more information avialable to it, and uses that information to automatically
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
847 merge changes more effectively.)</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
848
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
849 <p>This allows Linux subsystem maintainers to develop
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
850 and test their own local versions, then send changes to Linus in large batches
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
851 (without smearing together the individual patches they committed), and finally
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
852 resync with Linus's repository to get everyone else's changes. Open source
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
853 development is already distributed, so distributed source control is a better
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
854 fit. In this development model, Linus's repository serves as a coordination
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
855 point, but not a development bottleneck for anything except putting out
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
856 releases (which come from Linus's repository).</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
857
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
858 <p>Linus described the appeal of distributed source control, and his reasons
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
859 for developing git, in the Google Video tech talk
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
860 <a href=http://video.google.com/videoplay?docid=-2199332044603874737>Linus Torvalds on git</a>.</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
861
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
862 <p>To get started with git, see <a href=local/git-quick.html>git quickstart</a>.</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
863
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
864 <p>The linux kernel source is also available as a
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
865 <a href=http://kernel.org/hg/linux-2.6>mercurial repository</a>, another
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
866 popular open source distributed source control system.</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
867
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
868 <p>This paper still serves as a decent introduction to distributed source
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
869 control: <a href=http://kernel.org/doc/ols/2002/ols2002-pages-197-212.pdf>BitKeeper
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
870 for Kernel Development</a> (OLS 2002, obsolete)</p>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
871
49
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
872 </span>
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
873 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
874 <span id="community">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
875 <pre>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
876 CATB
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
877 http://vger.kernel.org/vger-lists.html
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
878 http://www.tux.org/lkml/
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
879 lwn, kernel traffic, kernelplanet.
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
880 http://www.kernel.org/faq
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
881 http://www.kernel.org/kdist/rss.xml
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
882 git/mercurial
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
883 Documentation/{CodingStyle,SubmitChecklist}
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
884 The four layer (developer, maintainer, subsystem, linus) model.
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
885 Politics
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
886 Stable API nonsense
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
887 Why reiser4 not in.
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
888 </pre>
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
889 </span id="community">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
890 <span id="Submitting Patches">
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
891 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
892 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
893
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
894
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
895 <span id="Glossary">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
896 </span>
47
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
897 </body>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
898 </html>