annotate master.idx @ 104:7bcba6e2acc3

OLS papers are up to 2009 now.
author Rob Landley <rob@landley.net>
date Fri, 01 Jan 2010 04:54:13 -0600
parents d00b5e91cba8
children
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>
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
35 <li><a href=makehelp.txt>Output of kernel's "make help".</a></li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
36 <li><a href=menuconfig>Menuconfig/kconfig help for each configuration option.</a></li>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
37 <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
38 <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
39 </ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
40 </span>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
41 <span id="Out on the web">
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
42 <ul>
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
43 <li><a href=http://kernel.org/doc/man-pages>Linux man-pages website, includes HTML versions of man pages</a></li>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 <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
45 <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>
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
46 <li><a href=ols>Ottawa Linux Symposium papers</a></li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
47 <li><a href=als1999>Atlanta Linux Showcase CD (1999)</a></li>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
48 <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
49 <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
50 </li>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 <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
52 <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
53 <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
54 <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
55 </ul>
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
56 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
57
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
58 <span id="Standards">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
59 <ul>
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
60 <li><a href=http://www.opengroup.org/onlinepubs/9699919799/>Single Unix Specification v4</a> (Also known as Open Group Base Specifications issue 7, and POSIX 2008. See especially <a href=http://www.opengroup.org/onlinepubs/9699919799/idx/xsh.html>system interfaces</a>)</li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
61 <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>, <a href=http://busybox.net/~landley/c99-draft.html>html</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
62 <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
63 </ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
64 </span id="Standards">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
65
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
66 <span id="Translations">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
67 <ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
68 <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
69 <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
70 <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
71 <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
72 </ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
73 </span id="Translations">
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="Sources of documentation">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
76
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
77 <span id="Building from source">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
78 <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
79 <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
80 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
81
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
82 <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
83 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
84 "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
85
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
86 <blockquote>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
87 <pre>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
88 tar xvjf linux-2.6.??.tar.bz2
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
89 cd linux-2.6.??
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
90 make menuconfig
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
91 make
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
92 make install
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
93 </pre>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
94 </blockquote>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
95
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
96 <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
97 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
98
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
99 <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
100 <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
101 <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
102 "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
103 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
104 <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
105 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
106 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
107 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
108
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
109 <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
110 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
111 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
112
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
113 <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
114 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
115 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
116 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
117 </span>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
118
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
119 <span id="Configuring">
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
120
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
121 <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
122 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
123 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
124 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
125 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
126 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
127
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
128 <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
129 more thorough "make distclean" does.</p>
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 <span id="Using an existing configuration">
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
132
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
133 <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
134 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
135 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
136 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
137
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
138 <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
139 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
140 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
141 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
142
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
143 <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
144 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
145 <ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
146 <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
147 <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
148 <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
149 <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
150 <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
151 <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
152 </ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
153
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
154 </span>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
155 <span id="Creating a custom kernel configuration">
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
156 <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
157 <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
158 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
159 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
160 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
161 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
162 more information about it. This help text is
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
163 <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
164
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
165 <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
166
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
167 <ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
168 <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
169 <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
170 <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
171 <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
172 <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
173 <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
174 <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
175 </ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
176
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
177 <p>Other configuration interfaces (functionally equivalent to menuconfig)
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
178 include:</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
179 <ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
180 <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
181 (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
182 <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
183 <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
184 </ul>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
185
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
186 </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
187
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
188 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
189 <span id="building">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
190 <span id="Building out of tree">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
191 </span>
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="Installing">
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="running">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
196 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
197 <span id="debugging">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
198 <span id="QEMU">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
199 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
200 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
201 <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
202 <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
203 <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
204 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
205 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
206 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
207
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
208 <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
209 <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
210 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
211 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
212 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
213 (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
214 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
215 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
216
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
217 <blockquote>
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>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
219 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
220 </pre>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
221 </blockquote>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
222
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
223 <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
224 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
225 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
226 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
227 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
228 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
229 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
230 (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
231 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
232
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
233 <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
234 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
235 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
236 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
237 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
238 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
239 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
240 (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
241 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
242 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
243 </span>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
244
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
245
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
246
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
247 <span id="User Mode Linux">
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>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
250 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
251 <span id="Infrastructure">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
252 <span id="kconfig">
89
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
253 <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
254 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
255 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
256 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
257 and so on.</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
258
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
259 <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
260 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
261 system.</p>
ac8a8db09cd1 Fluff out master.idx still more.
Rob Landley <rob@landley.net>
parents: 79
diff changeset
262
39
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="kbuild">
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 id="build and link (tmppiggy)">
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 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
269 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
270
47
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="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
272 <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
273 <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
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 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
276 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
277 </span>
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="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
279 <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
280 <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
281 <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
282 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
283 </span>
61
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
284 <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
285 <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
286 <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
287 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
288 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
289 <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
290 <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
291 <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
292 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
293 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
294 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
295 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
296 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
297 <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
298 <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
299 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
300 (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
301 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
302 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
303 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
304 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
305 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
306
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
307 <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
308 <blockquote>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
309 <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
310 chmod +x temp
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
311 ./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
312 </pre>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
313 </blockquote>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
314
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
315 <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
316 <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
317
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
318 <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
319 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
320 <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
321 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
322 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
323 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
324 <span id="ELF">
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
325 <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
326 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
327 </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
328 </span>
61
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
329
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
330 <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
331 <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
332 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
333 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
334
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
335 <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
336 (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
337 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
338 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
339
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
340 <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
341 <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
342 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
343 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
344 distribution.</p>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
345
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
346 <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
347 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
348 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
349 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
350 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
351 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
352 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
353
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
354 <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
355 <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
356 <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
357
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
358 <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
359 <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
360 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
361 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
362 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
363 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
364 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
365
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
366 <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
367 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
368 <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
369 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
370 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
371 </span>
3ea83bc83471 Add a little initial content under "Installing and using the kernel".
Rob Landley <rob@landley.net>
parents: 53
diff changeset
372 <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
373 </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
374 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
375 <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
376 <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
377 <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
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 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
380 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
381
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
382 <span id="Reading the source code">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
383 <span id="Source code layout">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
384 <span id="Following the boot process">
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="Major subsystems">
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 id="Architectures">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
389 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
390 </span>
49
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
391 <span id="Concept vs implementation">
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
392 <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
393 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
394 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
395 of alternate implementations.</p>
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
396 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
397 <span id="Concepts">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
398 <span id="rbtree">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
399 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
400 <span id="rcu">
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
401 <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
402 (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
403 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
404 paths.</p>
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
405
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
406 <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
407 <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
408 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
409 Documentation</a>.</p>
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
410
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
411 <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
412 <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
413 <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
414
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
415 <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
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 <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
418 </ul>
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
419
39
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 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
422 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
423
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
424 <span id="Kernel infrastructure">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
425 <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
426
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
427 <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
428 <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
429 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
430 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
431 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
432 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
433 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
434 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
435 <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
436
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
437 <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
438 <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
439 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
440 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
441 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
442
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
443 <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
444 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
445 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
446 Traffic.</p>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
447
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
448 <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
449 <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
450 <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
451 <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
452 <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
453 <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
454 <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
455 <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
456 <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
457 <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
458 <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
459 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
460 <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
461 <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
462 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
463
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
464 <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
465 <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
466 <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
467 <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
468 <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
469 <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
470 <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
471 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
472 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
473 <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
474
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
475 <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
476 <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
477
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
478 <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
479 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
480 <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
481 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
482 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
483
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
484 <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
485
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
486 <ul>
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/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
488 <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
489 <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
490 <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
491 <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
492 <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
493 </ul>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
494
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
495 <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
496 <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
497 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
498 <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
499 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
500 <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
501 <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
502 <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
503
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
504 <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
505 </span>
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
506
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
507 <span id="fork, exec">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
508 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
509 <span id="sleep">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
510 </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
511 <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
512 <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
513 </span>
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
514 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
515 <span id="Timers">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
516 <span id="Interrupt handling">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
517 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
518 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
519 <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
520 <ul>
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
521 <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
522 <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
523 parts
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/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
525 <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
526 <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
527 <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
528 <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
529 </li>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
530 <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
531 <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
532 <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
533 <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
534 </ul>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
535 <span id="mmap, DMA">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
536 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
537 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
538 <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
539 <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
540 <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
541 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
542
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
543 <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
544 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
545 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
546
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
547 <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
548 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
549 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
550
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
551 <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
552 (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
553 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
554 <span id="Filesystems">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
555 <span id="Types of filesystems (see /proc/filesystems)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
556 <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
557 <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
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 <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
560 </ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
561 </span>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
562 <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
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 <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
565 </ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
566 </span>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
567 <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
568 <ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
569 <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
570 <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
571 </ul>
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
572 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
573 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
574 <span id="Ram backed">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
575 <span id="ramfs">
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 id="tmpfs">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
578 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
579 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
580 <span id="Synthetic">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
581 <span id="proc">
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="sys">
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
584 <p>Although the sysfs filesystem probably wasn't intentionally named after the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
585 greek myth about pushing a rock to the top of a hill only to see it forever
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
586 roll back down again, this is a remarkably accurate analogy for the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
587 task of documenting sysfs.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
588
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
589 <p>The maintainers of sysfs do not believe in a stable API, and change
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
590 userspace-visible elements from release to release. The rationale is that
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
591 sysfs exports information from inside the kernel to outside the kernel
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
592 (what API doesn't?) and the kernel internals change, thus sysfs changes to
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
593 reflect it. This doesn't explain why sysfs regularly changes things that aren't
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
594 dictated by kernel internals, such as moving partition directories under block
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
595 device directories after initially exporting them at the same level, moving
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
596 /sys/block into /sys/devices, removing the "devices" symlink, and so on.<p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
597
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
598 <p>In reality, sysfs is treated as a private API exported for the use of the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
599 "udev" program, which is maintained by the same developers as sysfs. Any
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
600 attempt to use sysfs directly from other programs is condemned by sysfs'
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
601 authors as an abuse of sysfs, and attemps to document it are actively resisted
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
602 and ridiculed. (Yes, you must often update udev when you update the kernel.)</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
603
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
604 <p>The following documentation reflects the current state of sysfs. This is
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
605 likely to change in future, as its maintainers break compatability with
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
606 existing userspace programs they didn't personally write.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
607
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
608 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
609 <span id="internal (pipefs)">
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="usbfs">
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
612 http://www.linux-usb.org/USB-guide/x173.html
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
613 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
614 http://www.linuxjournal.com/article/7466
39
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 id="devpts">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
617 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
618 <span id="rootfs">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
619 </span>
53
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
620 <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
621 <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
622 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
623 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
624 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
625
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
626 <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
627 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
628 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
629 <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
630
87598e3a8e3c Quick note about devfs (obsolete) and first half of hotplug-history.html.
Rob Landley <rob@landley.net>
parents: 49
diff changeset
631 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
632 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
633 <span id="Network">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
634 <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
635 <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
636 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
637 <span id="smb/cifs">
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 id="FUSE">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
640 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
641 </span>
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="Filesystem drivers">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
644 <span id="Using">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
645 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
646 <span id="Writing">
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>
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
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
652 <span id="Drivers">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
653 <span id="Filesystem">
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="Block (block layer, scsi layer)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
656 <span id="SCSI layer">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
657 <ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
658 <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
659 <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
660 <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
661 <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
662 <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
663 </ul>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
664 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
665 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
666 <span id="Character">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
667 <span id="serial">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
668 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
669 <span id="keyboard">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
670 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
671 <span id="tty">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
672 <span id="pty">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
673 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
674 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
675 <span id="audio">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
676 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
677 <span id="null">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
678 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
679 <span id="random/urandom">
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
680 <p><a href=http://eprint.iacr.org/2006/086.pdf>Analysis of the Linux Random Number Generator</a> - Zvi Gutterman, Benny Pinkas, Tzachy Reinman (iacr 2006)</p>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
681 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
682 <span id="zero">
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>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
685 <span id="DRI">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
686 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
687 <span id="Network">
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
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
691 <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
692 <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
693 <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
694 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
695 <span id="Input core">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
696 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
697 <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
698 <pre>
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
699 physical
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
700 plip
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
701 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
702 ethernet
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
703 routing
1f41643cfe8e Move and update the cross compile stuff, note differences between pipe/file/tty,
Rob Landley <rob@landley.net>
parents: 67
diff changeset
704 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
705 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
706 </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
707 <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
708 <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
709 <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
710 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
711 <span id="Modules">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
712 <span id="Exported symbols">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
713 <p>EXPORT_SYMBOL() vs EXPORT_SYMBOL_GPL()</p>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
714 <p>List of exported symbols.</p>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
715 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
716 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
717 <span id="Busses">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
718 </span>
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
719 <span id="Security">
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
720 <span id="Traditional Unix security model">
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
721 Users, groups, files (rwx), signals.
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
722 </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
723 <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
724 <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
725 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
726 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
727 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
728 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
729
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
730 <span id="Posix capabilities">
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
731 http://www.gentoo.org/proj/en/hardened/capabilities.xml
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
732 </span>
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
733 <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
734 <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
735 <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
736 </span>
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
737 </span>
79
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
738 <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
739 <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
740 </span>
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
741 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
742 <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
743 <span id="Syscalls">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
744 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
745 <span id="ioctls">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
746 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
747 <span id="executable file formats">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
748 <span id="a.out">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
749 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
750 <span id="elf">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
751 <span id="css, bss, etc.">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
752 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
753 </span>
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
754 <span id="scripts">
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
755 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
756 <span id="flat">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
757 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
758 <span id="misc">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
759 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
760 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
761 <span id="Device nodes">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
762 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
763 <span id="Pipes (new pipe infrastructure)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
764 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
765 <span id="Synthetic filesystems (as API)">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
766 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
767 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
768 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
769
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
770 <span id="Hardware">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
771 <span id="Architectures">
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
772 <p>Linux supports many more hardware platforms than its original PC.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
773 The first modern port of Linux was to the DEC Alpha processor
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
774 [TODO: open sources]</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
775
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
776 <p>The most widely used modern ports are i386, x86-64, ARM, mips, and powerpc,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
777 all of which are supported by the emulator <a href=http://qemu.org>QEMU</a>.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
778 Bootable kernel and filesystem images for those platforms (bootable under
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
779 QEMU) are available <a href=http://landley.net/code/firmware>here</a>.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
780
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
781 <p>Alpha, sparc, parisc, itanium are primarily of historical interest.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
782 Each of those platforms used to have a bigger developer community than it
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
783 does now, but has peaked and gone into a pronounced decline.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
784
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
785 <p>Most of the other platforms have special-purpose niches. For example,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
786 super-hitachi is widely used in the Japanese auto industry.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
787
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
788 <pre>
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
789 avr32
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
790 blackfin
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
791 cris
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
792 frv
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
793 h8300
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
794 i386
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
795 m32r
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
796 m68k
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
797 s390
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
798 sh
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
799 sh64
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
800 sparc
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
801 sparc64
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
802 v850
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
803 xtensa
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
804
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
805 </pre>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
806 <span id="alpha">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
807 <p>The now-obsolete
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
808 <a href=http://en.wikipedia.org/wiki/DEC_Alpha>DEC Alpha</a> was one of the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
809 first 64-bit processors, one of the fastest and cleanest processor
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
810 designs of its time, and still has fans to this day. Despite excellent
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
811 performance and widespread use in supercomputers, manufacturing of
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
812 Alpha was
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
813 <a href=http://news.zdnet.co.uk/hardware/0,1000000091,2127122,00.htm>repeatedly
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
814 disrupted</a> and a series of acquisitions by PC vendors uninterested in any
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
815 non-PC architecture. Despite pressure from users and even
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
816 <a href=http://www.ftc.gov/opa/1998/04/digitala.shtm>government intervention</a>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
817 to preserve the Alpha processor, new development of the hardware ceased
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
818 towards the end of the 1990's.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
819
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
820 <p>The legacy of Alpha lives on in the x86-64 architecture. When
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
821 <a href=http://www.chron.com/content/chronicle/page1/98/01/27/com.html>Compaq
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
822 bought DEC</a> it acquired the rights to the Alpha processor, but not the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
823 chip design team. Many ex-Alpha chip designers wound up at AMD, where they
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
824 <a href=http://arstechnica.com/cpu/3q99/athlon/athlon-1.html>designed
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
825 the Athlon</a> (x86) and Opteron (x86-64) processors. Intel also
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
826 <a href=http://www.news.com/Compaq-Life-after-Alpha/2100-1001_3-268986.html?tag=st.ref.goo>licensed</a> and <a href=http://www.news.com/Intel-hyperthreading-shows-Digital-roots/2100-1001_3-961495.html?tag=st.ref.goo>incorporated</a>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
827 Alpha technology into all its processor lines. Internally, modern PC
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
828 processors owe more to the Alpha than to the original 8086 processor.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
829
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
830 <p>Alpha is of great historical importance to Linux as the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
831 <a href=http://www.oreilly.com/catalog/opensources/book/linus.html>first non-PC
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
832 port incorporated into Linus's tree</a>, as well as the first 64-bit port.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
833 <a href=http://qemu.org>QEMU</a> recently grew preliminary support for
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
834 emulating Alpha processors.</a>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
835
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
836 <ul>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
837 <li><a href=http://www.alphalinux.org/>AlphaLinux.org</a></li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
838 </ul>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
839
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
840 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
841 <span id="arm">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
842 <p>The ARM processor is the most popular embedded processor, powering 80-90% of
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
843 the cell phone market and most battery powered handheld devices. The iPod,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
844 iPhone, Nokia N800, and Nintendo DS are all ARM-based.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
845
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
846 <p>While the x86 family has the world's leading price/performance ratio,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
847 the ARM processor family has the best ratio power consumption to performance.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
848 By delivering the best bang for the watt, ARM has become overwhelmingly popular
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
849 in embedded devices.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
850
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
851 <p>ARM originally for "Acorn RISC Machine", a processor designed by a British
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
852 company in the early 80's to replace the 8-bit 6502 in Acorn's successful BBC
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
853 Micro. Unlike most RISC design efforts which focused on using RISC techniques
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
854 to increase performance, Acorn focused on creating a small, simple processor
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
855 design, initially with under 25,000 transistors (these days with about 43,000
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
856 transistors worth of core logic, before adding a cache and memory controller).
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
857 In 1990, the processor design team moved to a new company,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
858 <a href=http://www.arm.com>ARM Ltd</a>, which doesn't manufacture chips but
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
859 instead licenses its designs to other companies interested in fabricating
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
860 chips. This also allows ARM designs to be easily customized, and
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
861 embedded in things like network cards or system-on-chip designs.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
862
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
863 <p>Arm processor generations are divided by "architecture", which among other
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
864 things indicates the instruction set the processor can run:</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
865 <ul>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
866 <li>ARMv3 - The oldest 32-bit ARM architecture, now considered obsolete.</li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
867 <li>ARMv4 - The oldest architecture still in widespread use.</li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
868 <li>ARMv5 - The oldest architecture still in production. The baseline
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
869 modern" architecture.</li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
870 <li>ARMv6,v7 - An architecture ARM inc has used NDA terms to prevent QEMU
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
871 developers from releasing support for (apparently because it wants to sell
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
872 proprietary emulators, and considers a GPLed emulator a threat). These
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
873 processors run ARMv4/v5 code.</li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
874 </ul>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
875
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
876 <p>The newest archtecture that can be emulated by
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
877 <a href=http://qemu.org>QEMU</a> is ARMv5TEJ (I.E. ARMv5
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
878 with the Thumb, Enhanced DSP, and Java extensions). Unfortunately, ARM Ltd.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
879 has leveraged its NDAs with prominent open source developers to
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
880 <a href=http://lists.gnu.org/archive/html/qemu-devel/2007-02/msg00426.html>explicitly
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
881 forbid</a> them from contributing ARMv6 support to QEMU, apparently because
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
882 it's trying to sell a competing proprietary emulation product.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
883
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
884 <p>Newer ARM processors run older instruction sets, and are thus backwards
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
885 compatible. The advantage of newer instruction sets is that they execute
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
886 faster (and are thus more energy efficient), and some produce smaller binary
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
887 sizes (the "Thumb" extensions are designed specifically for small code size,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
888 but may exchange performance to get it). Recompiling an ARMv4 program as ARMv5
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
889 usually results in a 25% performance improvement.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
890
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
891 <ul>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
892 <li><a href="http://www.arm.com/products/CPUs/architecture.html">The ARM instruction set architecture</a>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
893 <li><a href="http://www.elinux.org/ARM_Processor">List of ARM processors</a></li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
894 <li><a href="http://www.arm.linux.org.uk">The ARM Linux web page</a></li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
895 <li><a href=http://www.arm.linux.org.uk/developer/machines/>List of
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
896 over 1500 known arm systems</a>.</li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
897 <li><a href=http://www.ot1.com/arm/armchap1.html>History of the ARM CPU</a></li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
898 </ul>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
899 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
900
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
901 <span id="ia64">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
902 <p>The Itanium was a failed attempt to create a 64-bit successor to the x86, a
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
903 role that went to AMD's x86-64 design instead. In 1994, Intel partnered with
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
904 HP to produce a successor to both x86 and HP's PA-RISC, with a new instruction
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
905 set ("ia64") fundamentally different from both. To support software written
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
906 for the older processors, the designers included a complete implementation of
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
907 each, because the new chip was already so big and complex that including _two_
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
908 entire previous processors wasn't a significant increase to either. (If this
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
909 sounds unlikely to end well...)</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
910
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
911 <p>The result was a late, slow, inefficient chip that was difficult to
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
912 manufacture, more expensive than available alternatives, difficult to write
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
913 efficient compilers for, quickly nicknamed "Itanic" and essentially ignored by
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
914 the market. (This was remarkably similar to Intel's earlier
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
915 <a href=http://en.wikipedia.org/wiki/Intel_iAPX_432>i432 project</a>,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
916 a 1970's attempt to jump straight from the 8 bit 8080 to a
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
917 32-bit processor which also resulted resulted in a slow, late, overcomplicated
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
918 and overpriced design which the industry ignored. The i432 was finally killed
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
919 off by the arrival of the 80286, which outperformed it by a factor of four.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
920 History does repeat itself.)</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
921
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
922 <p>For comparison purposes, the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
923 <a href=http://www.failuremag.com/arch_history_edsel.html>Ford Edsel</a> sold
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
924 64,000 units in its first year. Itanium took over four years to sell that
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
925 many:
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
926 only <a href=http://news.com.com/2100-1001-276880.html?tag=nl>500 units in
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
927 2001</a>, <a href=http://www.theinquirer.net/?article=7983>3,500 in 2002</a>,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
928 and around
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
929 <a href=http://www.theregister.co.uk/2005/02/28/itanium_04_sales/>19,000 in
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
930 2003 and 30,000 in 2004</a>. In 2005, x86-64 systems emerged as the new
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
931 64-bit PC standard, at which point Dell and IBM discontinued their Itanium
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
932 servers and HP discontinued its Itanium workstations.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
933
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
934 <p>To give a <a href=http://media.corporate-ir.net/media_files/irol/19/197211/press/Q12007EarningsRelease.pdf>sense of perspective</a>, in the first quarter of
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
935 2007, the licensees of ARM Inc. shipped 724 million ARM processors. (In one
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
936 quarter, not a full year.) In the third quarter of 2007, the PC market shipped
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
937 <a href=http://www.news.com/8301-10784_3-9825843-7.html>http://www.news.com/8301-10784_3-9825843-7.html>68.1 million</a> systems (mostly x86-64).
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
938 Over in <a href=http://www.wikinvest.com/concept/Game_Consoles_Wars:_Xbox_360_vs._PS3_vs._Wii>PowerPC land</a>,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
939 from their launch through August 2007 the Wii had sold 9 million units, Xbox
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
940 360 8.9 million, and Playstation 3 3.7 million (all three PowerPC based).
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
941 Shipments of
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
942 <a href=http://www.mdronline.com/publications/epw/issues/epw_31.html>many other
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
943 interesting processor families</a> each number in the millions of units
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
944 annually</a>. The Itanium's cumulative total of 0.05 million
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
945 in its first four years combined doesn't even show up on the same graph.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
946
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
947 <p>The history of Itanium through 2003 was extensively detailed
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
948 <a href=http://www.catb.org/~esr/halloween/halloween9.html#itanium>here</a>.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
949 A more recent obituary for the chip is zdnet's
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
950 <a href=http://news.zdnet.com/2100-9584_22-5984747.html>Itanium: A cautionary
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
951 tale</a>.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
952
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
953 <p>Despite the Itanium's failure to gain any marketplace traction
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
954 (and <a href=http://www.theinquirer.net/en/inquirer/news/2003/02/24/linus-torvalds-itanium-threw-out-all-the-good-parts-of-the-x86>Linus Torvalds'
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
955 personal disdain for the chip</a>, the billions
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
956 of dollars poured into Itanium resulted in lots of corporate engineers assigned
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
957 to developing extensive Linux support for this virtually nonexistent hardware.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
958 But despite a documented instruction set, no open source emulators run Itanium
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
959 code due to lack of interest. (HP does offer a binary-only Itanium
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
960 emulator called
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
961 <a href=http://www.hpl.hp.com/research/linux/ski/download.php>SKI</a>, last
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
962 updated in 2004.)</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
963
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
964 <p>Silicon Graphics still produces Itanium systems. HP no longer produces
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
965 Itanium workstations, but offers some Itanium servers. Intel still spends
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
966 money on it.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
967
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
968 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
969 <span id="m68knommu">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
970 <p>The most popular nommu 68k variant is Coldfire, which uses a subset of the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
971 68k instruction set and has no memory management unit. Coldfire is currently
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
972 used in a small number of high volume devices. (I.E. Coldfire isn't used in
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
973 many different products, but the products it's used in are produced in high
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
974 volume.)</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
975
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
976 <p><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)</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
977 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
978 <span id="mips">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
979 <p>Mips is probably the main competitor to ARM. One advantage of MIPS is its
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
980 availability as a FPGA program, allowing easy prototyping of custom
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
981 hardware.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
982
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
983 <p>SGI produced primarily MIPS systems back in the Irix days. Sony's
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
984 Playstation 2, and PSP are MIPS based, as are some Tivo and Linksys devices.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
985
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
986 <p><a href=http://en.wikipedia.org/wiki/MIPS_architecture>MIPS architecture</a></a>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
987 <p><a href=http://linux-mips.org>The Linux/MIPS web page</a></p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
988
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
989 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
990 <span id="parisc">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
991 <p>The PA-RISC is from Hewlett Packard. It was scheduled to be discontinued in
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
992 favor of the Itanium, but the failure of ia64 led to a restart of
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
993 PA-RISC development.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
994
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
995 <a href=ols/2002/ols2002-pages-183-190.pdf>Porting Drivers to HP ZX1</a>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
996 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
997 <span id="powerpc">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
998 <p>The PowerPC was created in the early 90's by a parnership between IBM,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
999 Apple, and Motorola. Apple switched to x86-64 in 2005 and Motorola spun off
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1000 its processor division as Freescale (which now also manufactures Coldfire and
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1001 ARM processors). But IBM is still strongly behind PowerPC, and the various
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1002 users of PowerPC formed a <a href=http://powerpc.org>consortium</a> to
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1003 promote and develop it.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1004
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1005 <p>PowerPC is commonly used in high volume set-top boxes and game consoles
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1006 such as the PlayStation 3, Xbox and Xbox 360, and Nintendo Wii. PowerPC
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1007 is the third most common processor type in the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1008 <a href=http://top500.org>Top 500</a> supercomputers list, and was used in
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1009 older cell phones (before Motorola spun off Freescale).</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1010
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1011 <p>The most interesting recent PowerPC development is the <a href=http://en.wikipedia.org/wiki/Cell_microprocessor>Cell processor</a>,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1012 which combines a PowerPC core with 8 DSP-like "synergistic processing
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1013 units" which can offload compute-intensive tasks like 3D acceleration,
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1014 compression, encryption, and so on.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1015
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1016 <p>The PowerPC 7xx is the "386" of PowerPC systems, meaing most modern PowerPC
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1017 processors can run code compiled fro PowerPC 7xx (although such older code
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1018 may not take full advantage of the new chip's capabilities, especially
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1019 with regard to performance). The PowerPC family also has
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1020 <a href=http://en.wikipedia.org/wiki/PowerPC_970>64-bit variants</a> (an
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1021 early version of which Apple marketed as the "G5") that can still run 32-bit
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1022 PowerPC code.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1023
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1024 <p>The main exceptions to 7xx compatability are two embedded subsets of the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1025 PowerPC, which were separately developed by IBM (the 4xx series) and Motorola
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1026 (the 8xx series) for use in low power devices. These are stripped down PowerPC
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1027 processors in roughly the same way Coldfire was a stripped down 68k:
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1028 instructions were removed from the architecture to get the transistor count
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1029 down, and thus code must be recompiled to avoid using those instructions.
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1030 Unfortunately, the two vendors chose a different subset of the PowerPC
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1031 instruction set, so code compiled for 4xx won't run on 8xx, and vice versa.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1032
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1033 <p>The 4xx line was purchased by <a href=http://www.amcc.com/Embedded/>AMCC</a>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1034 (which has the most annoying website design ever, click one of the tabs to
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1035 get it to STOP MOVING). Freescale mostly seems to have lost interest in the
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1036 8xx now that Motorola has switched its' cell phones to arm, but information
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1037 is <a href=http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=0162468rH3bTdGJk194204>still available</a>.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1038
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1039 <p>The Linux PowerPC developers hang out on the #mklinux channel on
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1040 irc.freenode.net.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1041
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1042 <a href=ols/2001/iseries.pdf>The Linux Kernel on iSeries</a> (OLS 2001)
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1043 <a href=ols/2001/ppc64.pdf>PowerPC 64-bit Kernel Internals</a> (OLS 2001)
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1044 <a href=http://perso.magic.fr/l_indien/qemu-ppc/PowerPC_ref/PowerPC_ref.html>PowerPC implementation reference for QEMU</a>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1045 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1046
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1047 <span id="ppc">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1048 <p>The "ppc" architecture is obsolete, and
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1049 <a href="Documentation/feature-removal-schedule.txt">scheduled for removal
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1050 in June 2008</a>.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1051
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1052 <p>Once upon a time, ARCH=ppc was for 32-bit PowerPC processors (7xx and up),
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1053 and ARCH=powerpc was for 64-bit (970/G5 and up), but the two architectures were
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1054 merged together and support for most boards has since been ported over to
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1055 powerpc. If you care about any of the remaining boards, bug the powerpc
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1056 maintainers.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1057
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1058 <p>Note that ARCH=ppc does not support newer features like "make
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1059 headers_install", but ARCH=powerpc does.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1060 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1061 <span id="um">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1062 <p>User Mode Linux is a port of Linux to run as a userspace program. Instead
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1063 of talking to the hardware, it makes system calls to the C library. Instead
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1064 of using a memory managment unit it makes clever use of mmap.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1065
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1066 <p>UML is sort of like an emulator: it can run Linux programs under itself
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1067 (its processes show up as threads to the host system). It's sometimes used
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1068 as a superior "fakeroot", and sometimes used to provide an emulated system
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1069 for honeypots or shared hosting services. It's an excellent tool for
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1070 learning and debugging the Linux kernel, because you can use all the normal
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1071 userspace debugging techniques, up to and including putting "printf()"
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1072 statements into the source code to see what it's doing. (It's great for
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1073 developing things like filesystems, not so good for device drivers.)</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1074
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1075 <ul>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1076 <li><a href=ols/2001/uml.pdf>User-Mode Linux</a> (OLS 2001)</li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1077 <li><a href=ols/2002/ols2002-pages-107-116.pdf>Making Linux Safe for Virtual Machines</a> (OLS 2002)</li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1078 <li><a href=http://landley.net/writing/docs/UML.html>User Mode Linux HOWTO</a></li>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1079 </ul>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1080 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1081 <span id="x86_64">
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1082 <p><a href=http://x86-64.org>x86-64</a> is the 64-bit successor to x86, and
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1083 the new dominant PC processor. Essentially all current PCs are now shipping
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1084 with x86-64 processors, including traditionally non-x86 architectures such
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1085 as Apple's Macintosh and Sun's servers.</p>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1086
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1087
75
baf5a8bc72a0 Sprinkle in the OLS 2001 papers. (Several were about user space only things,
Rob Landley <rob@landley.net>
parents: 69
diff changeset
1088 <a href=ols/2001/x86-64.pdf>Porting Linux to x86-64</a> (OLS 2001)
103
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1089 </span>
d00b5e91cba8 Changes that have accumulated over the past couple years.
Rob Landley <rob@landley.net>
parents: 89
diff changeset
1090
67
992a411c98b6 History of the process scheduler, notes about cross compiling, and some tweaks.
Rob Landley <rob@landley.net>
parents: 62
diff changeset
1091
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1092 include/asm-generic
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1093 uml
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1094 </pre>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1095 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1096 <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
1097 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1098 <span id="Busses">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1099 <span id="PCI, USB">
69
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
1100 http://www.linux-usb.org/USB-guide/book1.html
0c10e3aad7d2 RCU and more notes.
Rob Landley <rob@landley.net>
parents: 68
diff changeset
1101 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
1102 <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
1103 <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
1104 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1105 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1106 </span>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1107
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1108 <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
1109 <span id="Distibutions">
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1110 </span>
49
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
1111 <span id="Releases">
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
1112 <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
1113
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1114 <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
1115 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
1116 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
1117 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
1118
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1119 <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
1120 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
1121 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
1122 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
1123 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
1124 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
1125
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1126 <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
1127 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
1128 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
1129 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
1130 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
1131
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1132 <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
1133 <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
1134 "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
1135 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
1136 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
1137 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
1138 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
1139 (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
1140 <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
1141
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1142 <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
1143 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
1144 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
1145
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1146 <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
1147 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
1148 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
1149 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
1150 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
1151 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
1152 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
1153 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
1154 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
1155 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
1156 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
1157 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
1158 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
1159 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
1160
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1161 <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
1162 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
1163 (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
1164 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
1165 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
1166 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
1167 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
1168 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
1169
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1170 <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
1171 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
1172 <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
1173
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1174 <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
1175 <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
1176 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
1177
4b9263d24970 More links, and some material on the history of Linux source control.
Rob Landley <rob@landley.net>
parents: 75
diff changeset
1178 <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
1179 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
1180 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
1181
49
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
1182 </span>
aa424ac2ce30 Generate index.html from master.idx.
Rob Landley <rob@landley.net>
parents: 47
diff changeset
1183 </span>
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1184 <span id="community">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1185 <pre>
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1186 CATB
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1187 http://vger.kernel.org/vger-lists.html
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1188 http://www.tux.org/lkml/
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1189 lwn, kernel traffic, kernelplanet.
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1190 http://www.kernel.org/faq
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1191 http://www.kernel.org/kdist/rss.xml
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1192 git/mercurial
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1193 Documentation/{CodingStyle,SubmitChecklist}
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1194 The four layer (developer, maintainer, subsystem, linus) model.
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1195 Politics
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1196 Stable API nonsense
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1197 Why reiser4 not in.
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1198 </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
1199 </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
1200 <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
1201 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
1202 </span>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
1203
39
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1204
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1205 <span id="Glossary">
33e0b133a517 Skeleton source file for the master index.
Rob Landley <rob@landley.net>
parents:
diff changeset
1206 </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
1207 </body>
0df6348fc276 Teach indexsections to output index and contents in one pass, and put index
Rob Landley <rob@landley.net>
parents: 40
diff changeset
1208 </html>