<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;feed=atom&amp;action=history</id>
		<title>Work on Tiny Linux Kernel - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;action=history"/>
		<updated>2013-05-26T02:47:55Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.22alpha</generator>

	<entry>
		<id>http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;diff=38443&amp;oldid=prev</id>
		<title>Falcon at 05:06, 18 March 2011</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;diff=38443&amp;oldid=prev"/>
				<updated>2011-03-18T05:06:09Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 05:06, 18 March 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Linux has gained more and more new features in recent years but at the same&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Linux has gained more and more new features in recent years but at the same&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;time increased the kernel image size bit by bit. The new features do expand &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;time &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;has &lt;/ins&gt;increased the kernel image size bit by bit. The new features do expand&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;applications a lot but their increased size also limit the application of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Linux&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/ins&gt;applications a lot but their increased size also limit the application of&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;in some specific places(e.g. Linux as bootloader, Damn Small Linux, small&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Linux &lt;/ins&gt;in some specific places(e.g. Linux as bootloader, Damn Small Linux, small&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;storage devices using old 2.4 kernel). Is it possible to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;elimiate &lt;/del&gt;or at least&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;storage devices using old 2.4 kernel). Is it possible to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;eliminate &lt;/ins&gt;or at least&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;lighten this limitation?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;lighten this limitation?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 108:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 108:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; obvious, the current available kernel compression support include gzip,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; obvious, the current available kernel compression support include gzip,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; bzip2, lzma, lzo and lately XZ embedded becomes available. To get smallest&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; bzip2, lzma, lzo and lately XZ embedded becomes available. To get smallest&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; size, lzma or XZ &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;embdded &lt;/del&gt;may be the best choice, but to consider&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; size, lzma or XZ &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;embedded &lt;/ins&gt;may be the best choice, but to consider&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; decompression speed, lzo may be the choice, the other two are more or less&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; decompression speed, lzo may be the choice, the other two are more or less&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; in-between.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; in-between.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 261:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 261:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Contractor Candidates ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Contractor Candidates ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I have already finished some of the above proposed work in [&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1&lt;/del&gt;], So I would be&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I have already finished some of the above proposed work in [&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;11&lt;/ins&gt;], So I would be&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;interested in working on some of these items myself.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;interested in working on some of these items myself.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Falcon</name></author>	</entry>

	<entry>
		<id>http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;diff=34621&amp;oldid=prev</id>
		<title>Tim Bird: /* Comments */ add Rob Landley comment</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;diff=34621&amp;oldid=prev"/>
				<updated>2011-02-10T23:26:23Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Comments: &lt;/span&gt; add Rob Landley comment&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 23:26, 10 February 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 289:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 289:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Comments ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Comments ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Rob Landley writes:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I note my old rant about a &amp;quot;hello world&amp;quot; kernel:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http://www.mentby.com/rob-landley/what-happened-to-linux-tiny.html&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Stripping down the Linux kernel by removing stuff is a red queen's race,&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;running to stay in place.&amp;#160; You need to be able start with a&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;configuration that does essentially nothing, and then _add_ only what&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;you need.&amp;#160; (And that includes things like &amp;quot;do I really need the process&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;scheduler, if I just have a blob of realtime code that fits in a kernel&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;module and I want the system to do nothing but run that blob, monitor&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;two serial ports, and talk to the outside world via netconsole.&amp;quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I am reminded of the 2.2 kernel trick where people would bring up&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;interfaces, set up routing and ipchains rules, and then intentionally&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;panic the system (make init exit) so the process scheduler stopped...&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;but the system was still responding to interrupts and thus routing&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;packets.&amp;#160; The general idea was &amp;quot;ok, the router's been lototomized and&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;even I can't change the config without a reboot.&amp;#160; Just TRY to break into&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;it, I dare you.&amp;quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Project proposals 2011]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Project proposals 2011]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tim Bird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;diff=33445&amp;oldid=prev</id>
		<title>Wmat: added in body of page Work on Tiny Linux Kernel</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/index.php?title=Work_on_Tiny_Linux_Kernel&amp;diff=33445&amp;oldid=prev"/>
				<updated>2011-02-01T20:20:27Z</updated>
		
		<summary type="html">&lt;p&gt;added in body of page Work on Tiny Linux Kernel&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Work on Tiny Linux Kernel&lt;br /&gt;
&lt;br /&gt;
; Summary: Work on Tiny Linux Kernel&lt;br /&gt;
&lt;br /&gt;
; Proposer: Wu Zhangjin&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
Linux has gained more and more new features in recent years but at the same&lt;br /&gt;
time increased the kernel image size bit by bit. The new features do expand the&lt;br /&gt;
applications a lot but their increased size also limit the application of Linux&lt;br /&gt;
in some specific places(e.g. Linux as bootloader, Damn Small Linux, small&lt;br /&gt;
storage devices using old 2.4 kernel). Is it possible to elimiate or at least&lt;br /&gt;
lighten this limitation?&lt;br /&gt;
&lt;br /&gt;
The answer is 'Yes' but also 'No'. 'Yes' means there were lots of works on&lt;br /&gt;
reducing the kernel size,  'No' means more effort need to be taken to achieve&lt;br /&gt;
the goal.&lt;br /&gt;
&lt;br /&gt;
Some of the existing works have been collected and documented at [1], here&lt;br /&gt;
lists them and introduces their status:&lt;br /&gt;
&lt;br /&gt;
* Configuration Options&lt;br /&gt;
&lt;br /&gt;
  [2] documentes about measuring kernel size and configuring the kernel for&lt;br /&gt;
  smallest size.&lt;br /&gt;
&lt;br /&gt;
  But more features are not configurable currently, such as kernel and module&lt;br /&gt;
  parameters support, random number generator, ptrace system call, they may be&lt;br /&gt;
  not necessary for &amp;quot;Linux as bootloader with kexec&amp;quot;. So, more efforts should&lt;br /&gt;
  be taken to define what is a minimal kernel(e.g. only as bootloader or be&lt;br /&gt;
  able to start X, the definition can be application-guided-classified) and&lt;br /&gt;
  investigate which features are really necessary for the defined minimal&lt;br /&gt;
  kernel. At last a smallest but application-objected-functional features(e.g&lt;br /&gt;
  system calls, components) should be documented and provided for each specific&lt;br /&gt;
  definition of the minimal kernel and therefore the others should be&lt;br /&gt;
  configurable with more patches.&lt;br /&gt;
&lt;br /&gt;
  The size measuring methods introduced in [1] are cool but a full-featured&lt;br /&gt;
  size mearsuing and reporting tool(or tools collection) is still missing. Such&lt;br /&gt;
  a tool (or tools collection) should be able to generate a detailed size&lt;br /&gt;
  report for compiled kernel image, run-time kernel and eventually reduce the&lt;br /&gt;
  kernel size automatically or at least provide the 'hotspot' for size&lt;br /&gt;
  reducing.&lt;br /&gt;
&lt;br /&gt;
  The report can be divided into several different types and corresponding&lt;br /&gt;
  grains. Basic types include component/feature, object, function and data.&lt;br /&gt;
  component/feature include init, time, irq, scheduler, mm, fs, drivers...,&lt;br /&gt;
  objects are linked with lots of smaller objects, function consists of&lt;br /&gt;
  branches (e.g.  switch...case, if...else...), inline functions, data includes&lt;br /&gt;
  array, structure If those details can be defined, measured and reported&lt;br /&gt;
  carefully, the eventual automatic or manual size reducing may be very cleared&lt;br /&gt;
  and easier.&lt;br /&gt;
&lt;br /&gt;
* The Linux-tiny patchset&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;The Linux Tiny patch set is a collection of patches which can be used to&lt;br /&gt;
  make the Linux kernel consume less space. The long-term goal of the&lt;br /&gt;
  Linux-tiny project is to mainline these patches. Several patches have been&lt;br /&gt;
  mainlined over the last few years, and work continues in this area.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Although lots of patches have been mainlined, but some of them are still only&lt;br /&gt;
  available for 2.6.23. So, more work is needed to forward-port them to the&lt;br /&gt;
  latest new kernel version and git repository may be needed to simplify the&lt;br /&gt;
  maintaining, testing and eventually speedup the upstream.&lt;br /&gt;
&lt;br /&gt;
* Compiler options for reducing kernel size&lt;br /&gt;
&lt;br /&gt;
  -Os is already available with CONFIG_CC_OPTIMIZE_FOR_SIZE=y, but the &amp;quot;Section&lt;br /&gt;
  garbage collection patchset&amp;quot; is not completely mainlined for a linker&lt;br /&gt;
  bug(only affects parisc).  Those patches can shrink kernel size by ~10% by&lt;br /&gt;
  improving dead code/data elimination at link time. So, it is really important&lt;br /&gt;
  to upstream it completely and more works are needed to make the other kernel&lt;br /&gt;
  features survive even with this patchset(e.g. Ftrace and Gcov have been&lt;br /&gt;
  broken by this patchset).&lt;br /&gt;
&lt;br /&gt;
* Runtime size of kernel&lt;br /&gt;
&lt;br /&gt;
  The above methods only focus on the size of the statically compiled image for&lt;br /&gt;
  the kernel. However, the kernel also allocates memory dynamically when it&lt;br /&gt;
  runs. If the memory size is limited, the runtime size of kernel should be&lt;br /&gt;
  concerned(e.g. the corresponding malloc/free should be measured).&lt;br /&gt;
&lt;br /&gt;
And here collects more methods which are missing above:&lt;br /&gt;
&lt;br /&gt;
* Strip kernel image&lt;br /&gt;
&lt;br /&gt;
  The basic idea here is everything which is useless for the kernel running can&lt;br /&gt;
  be removed (if don't consider potential debugging).&lt;br /&gt;
&lt;br /&gt;
  The compiler-generated local symbols can be stripped with &amp;quot;strip -X&amp;quot;&lt;br /&gt;
  (CONFIG_STRIP_ASM_SYMS=y), more symbols can be stripped with --discard-all&lt;br /&gt;
  and --strip-all, and even more bytes(section table) can be removed by the&lt;br /&gt;
  sstrip tool provided by elfkickers [5](or the one from openwrt [6]).&lt;br /&gt;
&lt;br /&gt;
  Specific sections can be removed with &amp;quot;strip -S&amp;quot;, If your bootloader support&lt;br /&gt;
  binary format of the kernel image, vmlinux.bin can be used instead of vmlinux&lt;br /&gt;
  for more sections have been removed by objcopy.&lt;br /&gt;
&lt;br /&gt;
  If the above tools are not enough, a manual stripping method can be&lt;br /&gt;
  referenced in &amp;quot;A Whirlwind Tutorial on Creating Really Teensy ELF Executables&lt;br /&gt;
  for Linux&amp;quot; [7].&lt;br /&gt;
&lt;br /&gt;
* Compress kernel image&lt;br /&gt;
&lt;br /&gt;
  To reduce the kernel image size itself is really important, but with&lt;br /&gt;
  compression, smaller kernel image size can be gained and the effect is very&lt;br /&gt;
  obvious, the current available kernel compression support include gzip,&lt;br /&gt;
  bzip2, lzma, lzo and lately XZ embedded becomes available. To get smallest&lt;br /&gt;
  size, lzma or XZ embdded may be the best choice, but to consider&lt;br /&gt;
  decompression speed, lzo may be the choice, the other two are more or less&lt;br /&gt;
  in-between.&lt;br /&gt;
&lt;br /&gt;
  Besides, UPX [10] is another competitive project, which includes those&lt;br /&gt;
  features: excellent compression ratio, very fast decompression, no memory&lt;br /&gt;
  overhead, safe, universal, portable, extendable and free(Lincensed under GPL&lt;br /&gt;
  v2+), another important feature is the compressed packages are&lt;br /&gt;
  self-decompressed. But UPX still only work for some architectures, more work&lt;br /&gt;
  should be taken to port it for more architectures and their variants.&lt;br /&gt;
&lt;br /&gt;
Ok, then, There are multiple work items here that could be of interest:&lt;br /&gt;
&lt;br /&gt;
* Define a long-term goal of kernel size reducing&lt;br /&gt;
&lt;br /&gt;
  Define a minimal kernel with the application-guided method(e.g. Use Linux as&lt;br /&gt;
  a bootloader or as a kernel for rescue system...), analyze the necessary&lt;br /&gt;
  features it needs and make the left features configurable.&lt;br /&gt;
&lt;br /&gt;
  Using linux as a bootloader with kexec may be a candidate of the definition&lt;br /&gt;
  of &amp;quot;a minimal kernel&amp;quot;. then, the investigation becomes what is necessary for&lt;br /&gt;
  a basic scalable bootloader.&lt;br /&gt;
&lt;br /&gt;
* Make a size measure, report and automatically reducing utility&lt;br /&gt;
&lt;br /&gt;
  Collect all exisiting measuring methods and tools, write new tools and&lt;br /&gt;
  eventually build a size-utils tool package. Of course, related documentation&lt;br /&gt;
  should be added.&lt;br /&gt;
&lt;br /&gt;
* Make kernel more configurable&lt;br /&gt;
&lt;br /&gt;
  ** ptrace system call&lt;br /&gt;
  ** alram, getitimer, setitimer system call&lt;br /&gt;
  ** kernel and module parameters support&lt;br /&gt;
  ** remove sysfs support of specific drivers for !CONFIG_SYSFS&lt;br /&gt;
  ** random number generators: /dev/{random, urandom}&lt;br /&gt;
  ** NR_IRQS, COMMAND_LINE_SIZE, MAX_NR_CON_DRIVER, MAX_NR_CONSOLES ...&lt;br /&gt;
  ** convert big static array to configurable variable: e.g. modedb,&lt;br /&gt;
     ata_device_blacklist&lt;br /&gt;
  ** make &amp;quot;kexec on crash&amp;quot; configurable&lt;br /&gt;
  ** make duplicated features configurable: e.g. emulated software FPU and&lt;br /&gt;
     hardware FPU support&lt;br /&gt;
&lt;br /&gt;
* Forward-port Linux-tiny patchset to new kernel version&lt;br /&gt;
&lt;br /&gt;
* Enhance 'Section garbage collection patchset'&lt;br /&gt;
&lt;br /&gt;
  ** Ensure the other features(e.g. Ftrace, Gcov, Perf...) survive with it&lt;br /&gt;
  ** Enhance it for specific architectures (e.g. add -ffunction-sections and&lt;br /&gt;
    -fdata-sections for specific arch; move the functions and data in assembly&lt;br /&gt;
    to their own sections...)&lt;br /&gt;
&lt;br /&gt;
* Add sstrip to scripts/&lt;br /&gt;
&lt;br /&gt;
  Can apply the one from openwrt [6] directly.&lt;br /&gt;
&lt;br /&gt;
* Add or enhance compressed kernel image support&lt;br /&gt;
&lt;br /&gt;
 ** If the arch doesn't support compressed kernel image support, add it&lt;br /&gt;
 ** Add(or port) more algorithm support: e.g. uImage(compress kernel image&lt;br /&gt;
    for U-boot), XZ embedded, UPX.&lt;br /&gt;
&lt;br /&gt;
* Use/Add light-weight implementation instead of exisiting implementation&lt;br /&gt;
&lt;br /&gt;
 ** Use BFS instead of CFS&lt;br /&gt;
 ** Port lwip or uip support&lt;br /&gt;
&lt;br /&gt;
* Convert dynamic probing to static definition&lt;br /&gt;
&lt;br /&gt;
  Mark the variables for probing, run the kernel once, dump out the probed&lt;br /&gt;
  value and convert them to macros(e.g. cpu-feature-override support of MIPS).&lt;br /&gt;
&lt;br /&gt;
  The probing include PCI probing, CPU-feature probing ....&lt;br /&gt;
&lt;br /&gt;
  With the method from [15], this converting may be possible to be autmated&lt;br /&gt;
  with some enhancement of the gcc or ld.&lt;br /&gt;
&lt;br /&gt;
* Launch an open project(git repository) to develop/maintain all of&lt;br /&gt;
the above work&lt;br /&gt;
&lt;br /&gt;
 ** Collect and maintain patches, tools and documentations&lt;br /&gt;
 ** Release snapshots for testing&lt;br /&gt;
 ** Upsteam one by one when they are acceptable by mainline&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
&lt;br /&gt;
This should be a long-term project, can not estimate an accurate time for the&lt;br /&gt;
whole project. but for some specific contents, they are estimated below:&lt;br /&gt;
&lt;br /&gt;
* Linux-Tiny patchset forward-porting&lt;br /&gt;
&lt;br /&gt;
  Most of them have been ported to 2.6.36 in [1], This porting (for 2.6.39?)&lt;br /&gt;
  probably be finished in 1-2 weeks.&lt;br /&gt;
&lt;br /&gt;
* Add sstrip to scripts/&lt;br /&gt;
&lt;br /&gt;
  This probably can be finished in several hours.&lt;br /&gt;
&lt;br /&gt;
* Enhance 'Section garbage collection patchset'&lt;br /&gt;
&lt;br /&gt;
  To ensure the other kernel features work with it may need several weeks for&lt;br /&gt;
  enough testing. Enhance it for specific architectures may need several weeks&lt;br /&gt;
  too, different arch may need different effort, the work for MIPS has been&lt;br /&gt;
  finished in [1].&lt;br /&gt;
&lt;br /&gt;
* Make kernel more configurable&lt;br /&gt;
&lt;br /&gt;
  Basic development for the above proposed part have been finished in [1], but&lt;br /&gt;
  only for experimentation in current stage and more effort need for specific&lt;br /&gt;
  archs and testing. and some of them may not be acceptable for mainline. so,&lt;br /&gt;
  the whole time needed is hard to be estimated, at least several weeks.&lt;br /&gt;
&lt;br /&gt;
* Add or enhance compressed kernel image support&lt;br /&gt;
&lt;br /&gt;
  Add compressed kernel image support for a new arch may need several weeks,&lt;br /&gt;
  add/port uImage, XZ embedded support may be easier in several hours, but&lt;br /&gt;
  adding UPX support for specific vmlinux, vmlinuz may need several weeks too.&lt;br /&gt;
&lt;br /&gt;
* Use/Add light-weight implementation instead of exisiting implementation&lt;br /&gt;
&lt;br /&gt;
  Using BFS instead of CFS is easy if the BFS patch is there, but porting lwIP&lt;br /&gt;
  or uIP may be hard, probably several weeks and for specific drivers, more&lt;br /&gt;
  time.&lt;br /&gt;
&lt;br /&gt;
* Convert dynamic probing to static definition&lt;br /&gt;
&lt;br /&gt;
  If only for cpu-feature probing, basic work(only for MIPS currently) has been&lt;br /&gt;
  finished in [11] to generate the macros automatcially, porting it to the&lt;br /&gt;
  other arch may need several weeks. If consider the other probing and even for&lt;br /&gt;
  automatic converting with the method proposed in [15], more work are needed.&lt;br /&gt;
&lt;br /&gt;
* Define a long-term goal of kernel size reducing&lt;br /&gt;
&lt;br /&gt;
  To define 'a minimal kernel' and the necessary kernel feature may be hard,&lt;br /&gt;
  but if only consider the kernel as bootloader with kexec, probably, several&lt;br /&gt;
  weeks.&lt;br /&gt;
&lt;br /&gt;
* Make a size measure, report and automatically reducing utility&lt;br /&gt;
&lt;br /&gt;
  Collect the exisiting tools is easy, but to get a full-featured tool&lt;br /&gt;
  collection, probably several weeks are needed.&lt;br /&gt;
&lt;br /&gt;
* Launch an open project(git repository) to develop/maintain all of&lt;br /&gt;
the above work&lt;br /&gt;
&lt;br /&gt;
  To launch a basic project, create the corresponding git repo is easy, may be&lt;br /&gt;
  finished in several hours but development and maintaining are long-term.&lt;br /&gt;
&lt;br /&gt;
As the estimation above, this is a long-term project, the basic work may be&lt;br /&gt;
finished in one year, but the whole kernel size reducing project is long term.&lt;br /&gt;
&lt;br /&gt;
== Contractor Candidates ==&lt;br /&gt;
&lt;br /&gt;
I have already finished some of the above proposed work in [1], So I would be&lt;br /&gt;
interested in working on some of these items myself.&lt;br /&gt;
&lt;br /&gt;
== Related work ==&lt;br /&gt;
&lt;br /&gt;
* [1] System Size - http://elinux.org/System_Size#Kernel_size_reduction&lt;br /&gt;
* [2] Kernel Size Tuning Guide - http://elinux.org/Kernel_Size_Tuning_Guide&lt;br /&gt;
* [3] Linux Tiny Project - http://elinux.org/Linux_Tiny&lt;br /&gt;
* [4] Section garbage collection patchset -&lt;br /&gt;
https://patchwork.kernel.org/project/linux-parisc/list/?submitter=Denys+Vlasenko&lt;br /&gt;
* [5] sstrip in 'elfkickers: Kickers of ELF' -&lt;br /&gt;
http://muppetlabs.com/~breadbox/software/elfkickers.html&lt;br /&gt;
* [6] sstrip from openwrt -&lt;br /&gt;
https://dev.openwrt.org/browser/trunk/tools/sstrip/src/sstrip.c&lt;br /&gt;
* [7] A Whirlwind Tutorial on Creating Really Teensy ELF Executables&lt;br /&gt;
for Linux - http://muppetlabs.com/~breadbox/software/tiny/teensy.html&lt;br /&gt;
* [8] Fast Kernel Decompression - http://elinux.org/Fast_Kernel_Decompression&lt;br /&gt;
* [9] XZ Embedded - http://tukaani.org/xz/embedded.html&lt;br /&gt;
* [10] Ultimate Packer for eXecutables - http://upx.sourceforge.net/&lt;br /&gt;
* [11] Linux-Tiny for MIPS/Loongson -&lt;br /&gt;
http://dev.lemote.com/cgit/linux-loongson-community.git/log/?h=tiny36&lt;br /&gt;
* [12] Brain Fuck Scheduler - http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler&lt;br /&gt;
* [13] lwIP: A Lightweight TCP/IP stack -&lt;br /&gt;
http://savannah.nongnu.org/projects/lwip/&lt;br /&gt;
* [14] uIP - http://www.sics.se/~adam/uip/index.php/Main_Page&lt;br /&gt;
* [15] Add boot cache to kernel - http://elinux.org/Add_boot_cache_to_kernel&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Project proposals 2011]]&lt;/div&gt;</summary>
		<author><name>Wmat</name></author>	</entry>

	</feed>