<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>David Liscio&#039;s Blog</title>
	<atom:link href="http://dliscio.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dliscio.wordpress.com</link>
	<description>Release Engineering and the Fedora ARM Project</description>
	<lastBuildDate>Mon, 12 Dec 2011 22:11:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dliscio.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>David Liscio&#039;s Blog</title>
		<link>http://dliscio.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dliscio.wordpress.com/osd.xml" title="David Liscio&#039;s Blog" />
	<atom:link rel='hub' href='http://dliscio.wordpress.com/?pushpress=hub'/>
		<item>
		<title>ATA Over Ethernet &#8211; 0.3 Release</title>
		<link>http://dliscio.wordpress.com/2011/12/12/ata-over-ethernet-0-3-release/</link>
		<comments>http://dliscio.wordpress.com/2011/12/12/ata-over-ethernet-0-3-release/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 19:46:24 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=136</guid>
		<description><![CDATA[This will be my final release for my work on ATA over ethernet (AoE). In the process of working with AoE I had my fair share of issues but none were without a fix or work around solution. I was able to solve my issues with AoE through the knowledgeable guys at CDOT and my [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=136&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This will be my final release for my work on ATA over ethernet (AoE). In the process of working with AoE I had my fair share of issues but none were without a fix or work around solution. I was able to solve my issues with AoE through the knowledgeable guys at CDOT and my good friend Google. In finalizing my configuration with AoE on ARM, I have found it to be a stable solution which produces acceptable results as an alternative network storage solution. I will be making my stable configurations available below; please contact myself via this blog if you have any questions, comments or issues regarding my configurations and results.</p>
<p><strong><span style="text-decoration:underline;">0.3 Release Items:</span></strong></p>
<p><span style="text-decoration:underline;">Pandaboard Kernel:</span></p>
<ul>
<li>Kernel Configuration File (AoE enabled)</li>
<li>AoE Kernel Module</li>
<li>Kernel Source 2.6.35-dirty (w/modules)</li>
<li>uImage (Kernel)</li>
</ul>
<div>All kernel files are available at the following link: <a title="http://ge.tt/8BbZZ6B?c" href="http://ge.tt/8BbZZ6B?c">http://ge.tt/8BbZZ6B?c </a></div>
<p><span style="text-decoration:underline;">Documentation:</span></p>
<ul>
<li>AoE Installation &amp; Configuration &#8211; <a title="http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/" href="http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/">http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/</a></li>
<li>Pandaboard Kernel Building &#8211; <a title="http://dliscio.wordpress.com/2011/11/30/0-2-release/" href="http://dliscio.wordpress.com/2011/11/30/0-2-release/">http://dliscio.wordpress.com/2011/11/30/0-2-release/</a></li>
</ul>
<p><span style="text-decoration:underline;">Links &amp; Resources:</span></p>
<ul>
<li>CDOT hosted: Pandaboard OMAP4 Kernel Source &#8211; <a title="http://scotland.proximity.on.ca/fedora-arm/kernel/panda/kernel-omap4.tar.gz" href="http://scotland.proximity.on.ca/fedora-arm/kernel/panda/kernel-omap4.tar.gz">http://scotland.proximity.on.ca/fedora-arm/kernel/panda/kernel-omap4.tar.gz</a></li>
<li>Lastest Pandaboard Kernel/x-loader/u-boot GIT &#8211; <a title="http://gitorious.org/pandaboard" href="http://gitorious.org/pandaboard">http://gitorious.org/pandaboard</a></li>
<li>Pandaboard WIKI (Kernel Building) &#8211; <a title="http://elinux.org/PandaBoard" href="http://elinux.org/PandaBoard">http://elinux.org/PandaBoard</a></li>
<li>CDOT: AoE Support &#8211; <a title="http://zenit.senecac.on.ca/wiki/index.php/AoE_Support" href="http://zenit.senecac.on.ca/wiki/index.php/AoE_Support">http://zenit.senecac.on.ca/wiki/index.php/AoE_Support</a></li>
<li>Sourceforge: Aoetools &#8211; <a title="http://aoetools.sourceforge.net/" href="http://aoetools.sourceforge.net/">http://aoetools.sourceforge.net/</a></li>
<li>Freenode IRC Channels: #fedora-arm, #seneca</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=136&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/12/12/ata-over-ethernet-0-3-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
		<item>
		<title>ATA Over Ethernet &#8211; 0.2 Release (Updated)</title>
		<link>http://dliscio.wordpress.com/2011/11/30/0-2-release/</link>
		<comments>http://dliscio.wordpress.com/2011/11/30/0-2-release/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 06:29:15 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=122</guid>
		<description><![CDATA[My 0.2 release for AoE on ARM was to be a working configuration of an ARM client and x86_64 system. The ARM client being used is a Pandaboard with an OMAP4 4430 CPU. I discovered that this device did not have an AoE kernel built for it, which now means I need to have a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=122&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My 0.2 release for AoE on ARM was to be a working configuration of an ARM client and x86_64 system. The ARM client being used is a Pandaboard with an OMAP4 4430 CPU. I discovered that this device did not have an AoE kernel built for it, which now means I need to have a rebuilt kernel with the AoE modules. The steps for compiling the kernel are based on a native build, meaning I built the kernel on the Pandaboard itself instead of a cross-compile on an x86 based system.</p>
<p><strong><span style="text-decoration:underline;">Part 1 &#8211; Download Kernel Source Tree:</span></strong></p>
<p>This step will download the required kernel tarball to your home directory.</p>
<blockquote><p>wget http://scotland.proximity.on.ca/fedora-arm/kernel/panda/kernel-omap4.tar.gz</p></blockquote>
<p><strong><span style="text-decoration:underline;">Part 2 &#8211; Building the Kernel:</span></strong></p>
<ul>
<li>Unpack the kernel tarball using the tar command.</li>
</ul>
<blockquote><p>tar xzvf kernel-omap4.tar.gz</p></blockquote>
<ul>
<li>Change directories to the newly extracted directory.</li>
</ul>
<blockquote><p>cd kernel-omap4</p></blockquote>
<div>
<ul>
<li>Run the &#8220;menuconfig&#8221; command to configure the kernel options using a GUI. This command will use the current &#8220;.config&#8221; file which includes drivers needed for the Pandaboard to function properly.</li>
</ul>
<blockquote>
<div>make menuconfig</div>
<div></div>
<div>     -Navigate to &#8220;Device Drivers&#8221; and press enter</div>
<div>     -Select &#8220;Block Devices&#8221; and press enter</div>
<div>     -Navigate to &#8220;ATA over Ethernet support&#8221; and press the space bar until a &#8220;M&#8221; appears in the option brackets ()</div>
<div>
<div><strong>           </strong></div>
<div><strong>              *Note:</strong> The &#8220;M&#8221; option will enable AoE driver support  as a kernel module rather than having the kernel load the driver at all times.</div>
<div></div>
<div>     -Select the exit option until you are prompted to save your kernel configuration. Select &#8220;Yes&#8221; to save the changes.</div>
</div>
</blockquote>
<div>
<div>
<ul>
<li>Build the kernel into the uboot bootable image format.</li>
</ul>
<blockquote>
<div>make uImage</div>
</blockquote>
<div>                  <strong> *Note:</strong> If this command fails, you will probably need to install the uboot tools. You can install them using the following yum command: &#8220;yum install uboot-tools&#8221;.</div>
<div>
<ul>
<li>Build the kernel modules.</li>
</ul>
<blockquote><p>make modules</p></blockquote>
<p><strong><span style="text-decoration:underline;">Part 3 &#8211; Loading the new kernel:</span></strong></p>
<ul>
<li>The kernel that was just built is now compressed and in the form of a uImage file. This is the format that the Pandabaords use to boot the kernel using x-loader and u-boot.</li>
</ul>
<ul>
<li>Create a folder to mount the mmcblk0p1 device to.</li>
</ul>
<blockquote><p>mkdir /boot</p></blockquote>
<ul>
<li>Mount the current boot directory to allow for a backup of the current kernel.</li>
</ul>
<blockquote><p>mount /dev/mmcblk0p1 /boot</p></blockquote>
<ul>
<li>Backup the current kernel image by appending &#8220;.old&#8221; to the name.</li>
</ul>
<blockquote><p>mv /boot/uImage /boot/uImage.old</p></blockquote>
<ul>
<li>Copy the new kernel to the /boot directory.</li>
</ul>
<blockquote><p>cp arch/arm/boot/uImage /boot</p></blockquote>
<ul>
<li>Unmount the /boot directory and reboot the device to load the new kernel.</li>
</ul>
<p><strong>*Note:</strong> Please ensure that you are connected to the Pandaboard via a serial connection. This will ensure that you can recover from a boot issue if the kernel fails to load properly. If a failure occurs, mount the mmcblk0p1 device; delete the &#8220;uImage&#8221; file and rename &#8220;uImage.old&#8221; to &#8220;uImage&#8221;.</p>
</div>
<blockquote>
<div>umount /boot</div>
<div>reboot</div>
</blockquote>
<div>
<ul>
<li>If the kernel loads without issue, run the following command to install the kernel modules to their appropriate directory.</li>
</ul>
<blockquote><p>make install_modules</p></blockquote>
<ul>
<li>Test that the aoe modules can be loaded using the following commands:</li>
</ul>
<blockquote><p>modprobe aoe</p></blockquote>
<blockquote><p>lsmod | grep aoe</p></blockquote>
<ul>
<li>The result should be something similar to the following:</li>
</ul>
<blockquote><p>[dliscio@cdot-panda-6-4 kernel-omap4]$ lsmod | grep aoe<br />
aoe                    21294  2</p></blockquote>
<p><strong><span style="text-decoration:underline;">Part 4 &#8211; Client Configuration:</span></strong></p>
<ul>
<li>Please refer to my 0.1 release for instructions on how to configure an AoE client:</li>
</ul>
<blockquote><p><a title="http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/" href="http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/">http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/</a></p></blockquote>
<div><span style="text-decoration:underline;"><strong>Part 5 &#8211; Performance using DD:</strong></span></div>
<div>
<ul>
<li>Performance running the dd command for 100MB, 500MB, and 1GB file sizes. Command syntax used (where X is the test number and $ is the file size):</li>
</ul>
<blockquote><p>sync; time dd if=/dev/zero of=/mnt/aoe/testX bs=1024K count=$; time sync</p></blockquote>
<ul>
<li>Result of 10MB file transfers:</li>
</ul>
<blockquote>
<ol>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test1 bs=1024k count=10; time sync<br />
10+0 records in<br />
10+0 records out<br />
10485760 bytes (10 MB) copied, 0.225891 s, 46.4 MB/sreal    0m0.237s<br />
user    0m0.000s<br />
sys     0m0.227sreal    0m2.400s<br />
user    0m0.000s<br />
sys     0m0.016s</li>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test2 bs=1024k count=10; time sync<br />
10+0 records in<br />
10+0 records out<br />
10485760 bytes (10 MB) copied, 0.222534 s, 47.1 MB/sreal    0m0.231s<br />
user    0m0.016s<br />
sys     0m0.219sreal    0m3.390s<br />
user    0m0.000s<br />
sys     0m0.008s</li>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test3 bs=1024k count=10; time sync<br />
10+0 records in<br />
10+0 records out<br />
10485760 bytes (10 MB) copied, 0.223419 s, 46.9 MB/sreal    0m0.232s<br />
user    0m0.008s<br />
sys     0m0.227sreal    0m5.500s<br />
user    0m0.000s<br />
sys     0m0.008s</li>
</ol>
</blockquote>
<ul>
<li>Result of 100MB file transfers:</li>
</ul>
<blockquote>
<ol>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test4 bs=1024k count=100; time sync<br />
100+0 records in<br />
100+0 records out<br />
104857600 bytes (105 MB) copied, 2.41202 s, 43.5 MB/sreal    0m2.420s<br />
user    0m0.000s<br />
sys     0m2.344sreal    0m28.515s<br />
user    0m0.000s<br />
sys     0m0.008s</li>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test5 bs=1024k count=100; time sync<br />
100+0 records in<br />
100+0 records out<br />
104857600 bytes (105 MB) copied, 9.14975 s, 11.5 MB/sreal    0m9.159s<br />
user    0m0.000s<br />
sys     0m2.266sreal    0m24.520s<br />
user    0m0.000s<br />
sys     0m0.008s</li>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test6 bs=1024k count=100; time sync<br />
100+0 records in<br />
100+0 records out<br />
104857600 bytes (105 MB) copied, 2.22363 s, 47.2 MB/sreal    0m2.232s<br />
user    0m0.000s<br />
sys     0m2.180sreal    0m32.983s<br />
user    0m0.000s<br />
sys     0m0.008s</li>
</ol>
</blockquote>
<ul>
<li>Result of 500MB file transfers:</li>
</ul>
<blockquote>
<ol>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test7 bs=1024k count=500; time sync<br />
500+0 records in<br />
500+0 records out<br />
524288000 bytes (524 MB) copied, 204.183 s, 2.6 MB/sreal    3m24.191s<br />
user    0m0.016s<br />
sys     0m11.594sreal    0m53.334s<br />
user    0m0.000s<br />
sys     0m0.031s</li>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test8 bs=1024k count=500; time sync<br />
500+0 records in<br />
500+0 records out<br />
524288000 bytes (524 MB) copied, 128.76 s, 4.1 MB/sreal    2m8.776s<br />
user    0m0.008s<br />
sys     0m11.977sreal    1m10.758s<br />
user    0m0.016s<br />
sys     0m0.000s</li>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test9 bs=1024k count=500; time sync<br />
500+0 records in<br />
500+0 records out<br />
524288000 bytes (524 MB) copied, 176.282 s, 3.0 MB/sreal    2m56.291s<br />
user    0m0.000s<br />
sys     0m12.063sreal    0m57.046s<br />
user    0m0.023s<br />
sys     0m0.008s</li>
</ol>
</blockquote>
<ul>
<li>Results of 1GB file transfers:</li>
</ul>
<blockquote>
<ol>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test10 bs=1024k count=1000; time sync<br />
1000+0 records in<br />
1000+0 records out<br />
1048576000 bytes (1.0 GB) copied, 605.539 s, 1.7 MB/sreal    10m5.548s<br />
user    0m0.016s<br />
sys     0m24.289sreal    0m40.124s<br />
user    0m0.000s<br />
sys     0m0.008s</li>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test11 bs=1024k count=1000; time sync<br />
1000+0 records in<br />
1000+0 records out<br />
1048576000 bytes (1.0 GB) copied, 387.333 s, 2.7 MB/sreal    6m27.345s<br />
user    0m0.000s<br />
sys     0m25.133sreal    0m57.308s<br />
user    0m0.000s<br />
sys     0m0.016s</li>
<li>[dliscio@cdot-panda-6-4 ~]$ sync; time dd if=/dev/zero of=/mnt/aoe/test12 bs=1024k count=1000; time sync<br />
1000+0 records in<br />
1000+0 records out<br />
1048576000 bytes (1.0 GB) copied, 284.057 s, 3.7 MB/sreal    4m44.067s<br />
user    0m0.023s<br />
sys     0m24.125sreal    0m13.907s<br />
user    0m0.000s<br />
sys     0m0.008s</li>
</ol>
</blockquote>
<p><strong><span style="text-decoration:underline;">Part 6 &#8211; Performance using Bonnie++:</span></strong></p>
</div>
<p>Version      1.96   &#8212;&#8212;Sequential Output&#8212;&#8212; &#8211;Sequential Input- &#8211;Random-<br />
-Per Chr- &#8211;Block&#8211; -Rewrite- -Per Chr- &#8211;Block&#8211; &#8211;Seeks&#8211;<br />
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP<br />
cdot-panda-6-4  23G    35  97  1908   4  1263   2   334  97  2261   1  14.8   2<br />
Latency               606ms   38454ms    7895ms     196ms    3141ms    5248ms<br />
&#8212;&#8212;Sequential Create&#8212;&#8212; &#8212;&#8212;&#8211;Random Create&#8212;&#8212;&#8211;<br />
-Create&#8211; &#8211;Read&#8212; -Delete&#8211; -Create&#8211; &#8211;Read&#8212; -Delete&#8211;<br />
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP<br />
cdot-panda-6-4   16  1988  27 +++++ +++  4872  53  2962  39 +++++ +++  5205  56<br />
Latency               902ms    3295us    3479us   61645us      31us    8911us</p>
</div>
<div></div>
<div>This test was run using a 23GB file transferred to the AoE storage device. Through the sequential output block and re-write benchmark process, bonnie++ recorded a transfer rate of 1.9MB/s and 1.2MB/s respectively and saw CPU hover around 2-4%. The sequential input block and re-write benchmark process resulted in a transfer rate of 334KB/s and 2.2MB/s respectively The CPU usage during both tests was low at around 1-2% usage. Latency was quite high, topping out at 38,454ms for one of the tests.</div>
<div>
<p><strong><span style="text-decoration:underline;">Issues:</span></strong></p>
<p>From testing with DD, I found that after the first or second 500MB file transfer the file transfer would fail with a &#8220;read-only&#8221; device error. This error was happening consistently with large file transfers and would cause my AoE test client to drop the AoE storage device connection. Running the aoe-stat command showed that the AoE storage device was disconnected in a &#8220;close_wait&#8221; mode. To get the storage back up I had to issue the command &#8220;aoe-revalidate&#8221; to revalidate the AoE device, unmount the device and then re-mount it to be able to read and write to it again.</p>
<p>Looking though /var/log/messages showed a number of kernel related errors with regard to the onboard NIC dropping connections. From what I have read, there is a bug in the LAN driver causing the connection to drop when under heavy load. There is currently a workaround solution that I have implemented which seems to have fixed the connection drop issues.</p>
<p><strong>Workaround Fix:</strong> Change vm.min_free_kbytes value to 8192</p>
<ul>
<li><a title="https://bugs.launchpad.net/linux-linaro/+bug/664477" href="https://bugs.launchpad.net/linux-linaro/+bug/664477">https://bugs.launchpad.net/linux-linaro/+bug/664477</a></li>
<li>Edit the following file and add the lines shown below to the end of the file:  /etc/sysctl.conf</li>
<li>Reboot for changes to take effect.</li>
</ul>
<blockquote><p># The driver smsc95xx, used by both Beagleboard XM and Pandaboard uses<br />
# turbo mode by default, that enables multiple frames per Rx transaction,<br />
# increasing performance but consuming more kernel memory.<br />
# To avoid page allocation failures and smsc kevent drops we need to<br />
# increase the minimum free system memory in the kernel to a higher value.<br />
# If you&#8217;re still having page allocation failures, try to increase this<br />
# value to 12288 or even higher. You could also disable the driver&#8217;s turbo<br />
# mode, but decreasing the ethernet performance.<br />
# If you encounter problems due to the settings please file a bug<br />
# against the jasper-initramfs ubuntu package.<br />
# For more details please check <a href="http://bugs.launchpad.net/bugs/746137" rel="nofollow">http://bugs.launchpad.net/bugs/746137</a><br />
vm.min_free_kbytes = 8192</p></blockquote>
<p><strong><span style="text-decoration:underline;">Summary:</span></strong></p>
</div>
<div>These are the steps I have followed to successfully complete a native build of a kernel and modules using a OMAP4 kernel. Configuration of AoE is fairly simple, and can be set up in less than an 20 minutes for a single client-server configuration. The performance of AoE was tested using the DD command as well as Bonnie++; results can be found on part 5 and 6 of this post.</div>
<div></div>
<div>Performance after implementing the workaround fix seems to solve the issue of the NIC driver dropping connections. With this fix, I can say that AoE performance is stable and at a usable level. Benchmarking against your current network storage solution should be taken into account before making he switch to AoE, but so far the results are decent. Smaller files will see better performance at around 45MB/s, and larger files will see a drop to around 2-4MB/s.</div>
<div></div>
<div>Thanks go out to <a title="http://zenit.senecac.on.ca/wiki/index.php/User:Aeboccia" href="http://zenit.senecac.on.ca/wiki/index.php/User:Aeboccia">Anthony Boccia</a>, <a title="http://zenit.senecac.on.ca/wiki/index.php/User:Jacwang" href="http://zenit.senecac.on.ca/wiki/index.php/User:Jacwang">Jordan Cwang</a> and <a title="http://zenit.senecac.on.ca/wiki/index.php/User:Chris_Tyler" href="http://zenit.senecac.on.ca/wiki/index.php/User:Chris_Tyler">Chris Tyler</a> at Seneca CDOT for their guidance in getting me started with building an ARM kernel.</div>
</div>
<div></div>
<div><strong><span style="text-decoration:underline;">Links:</span></strong></div>
</div>
</div>
<div>
<ul>
<li><a title="https://bugs.launchpad.net/linux-linaro/+bug/664477" href="https://bugs.launchpad.net/linux-linaro/+bug/664477">NIC driver workaround fix &#8211; https://bugs.launchpad.net/linux-linaro/+bug/664477</a></li>
<li><a title="http://www.cyberciti.biz/faq/inux-kernel-where-to-find-modules/" href="http://www.cyberciti.biz/faq/inux-kernel-where-to-find-modules/">Where to find kernel modules &#8211; http://www.cyberciti.biz/faq/inux-kernel-where-to-find-modules/</a></li>
<li><a title="http://elinux.org/PandaBoard" href="http://elinux.org/PandaBoard">Pandaboard WIKI (Kernel Building) &#8211; http://elinux.org/PandaBoard</a></li>
<li><a title="http://www.coker.com.au/bonnie++/" href="http://www.coker.com.au/bonnie++/">Bonnie++</a></li>
</ul>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=122&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/11/30/0-2-release/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
		<item>
		<title>ATA Over Ethernet &#8211; Release 0.1</title>
		<link>http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/</link>
		<comments>http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 21:50:13 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=105</guid>
		<description><![CDATA[My project for SBR600 involves configuring and testing AoE for use with ARM based systems. If AoE is stable and performs well, it may be a possible replacement for the NFS storage system currently in use for ARM systems in development. My testing and configuration thus far has been between two Fedora 15 machines (laptops), one x86_64 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=105&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My project for SBR600 involves configuring and testing AoE for use with ARM based systems. If AoE is stable and performs well, it may be a possible replacement for the NFS storage system currently in use for ARM systems in development.</p>
<p><del>My testing and configuration thus far has been between two Fedora 15 machines (laptops), one x86_64 and the other x86 based.</del> <del>I plan on configuring AoE between two Fedora 15 desktop systems to get a better idea of how performance is using AoE on a gigabit LAN network.</del> <del>I will post an update when the desktop configuration is complete.</del></p>
<p>I have now configured AoE on two x86_64 machines, the updated configuration steps are shown below. The old configuration has been crossed out.</p>
<p><strong><span style="text-decoration:underline;">Initial Server/Client Configuration:</span></strong></p>
<ul>
<li>Check the kernel to ensure it supports AoE</li>
<li>Edit the /etc/rc.local file using vi and add the line below to the end of the file. This will load the AoE kernel module on boot</li>
</ul>
<blockquote>
<ol>
<li>vi /etc/rc.local</li>
</ol>
<p>modprobe aoe</p></blockquote>
<ul>
<li>Start the AoE module by running the following as a root user</li>
</ul>
<blockquote><p>modprobe aoe</p></blockquote>
<p><strong><span style="text-decoration:underline;">Server Configuration:</span></strong></p>
<ul>
<li>Install the Virtual EtherDrive blade daemon package using yum. This will allow for the drives to be exported and available on the network using AoE</li>
</ul>
<blockquote><p>yum install vblade</p></blockquote>
<ul>
<li>Create a logical volume using LVM to be used as an AoE block storage device. The -L option is for the size of the volume and the -n is for the name of the logical volume, and beside it the name of the volume group it is located in. The &#8220;hk&#8221; in this case is the volume group name in LVM.</li>
</ul>
<blockquote>
<ol>
<li>lvm</li>
</ol>
<p><del>lvcreate -L20G -n aoe vg_default</del></p>
<p>lvcreate -L25G -n aoe hk</p></blockquote>
<ul>
<li>Export the newly created volume using vblade.</li>
</ul>
<blockquote><p><del>vbladed 0 1  /dev/vg_default/aoe</del></p>
<p>vbladed 0 1  em1 /dev/hk/aoe</p></blockquote>
<p><strong>*Note</strong>: The network interface in this example is &#8220;em1&#8243;. Please replace this value with the primary network adaptor you plan on using with AoE. You can find your interface using the &#8220;ifconfig&#8221; command from a terminal window.</p>
<ul>
<li>Add the same line as above at the end of the /etc/rc.local file</li>
</ul>
<blockquote>
<ol>
<li>vi /etc/rc.local</li>
</ol>
<p><del>vbladed 0 1 /dev/vg_default/aoe</del></p>
<p>vbladed 0 1 em1 /dev/hk/aoe</p></blockquote>
<p><span style="text-decoration:underline;"><strong>Client Configuration:</strong></span></p>
<ul>
<li>Install aoetools to connect to storage devices via ethernet</li>
</ul>
<blockquote><p>yum install aoetools</p></blockquote>
<ul>
<li>Check for available AoE devices on the network</li>
</ul>
<blockquote><p>aoe-discover</p></blockquote>
<ul>
<li>Show available storage devices from recent discovery process</li>
</ul>
<blockquote><p>aoe-stat</p></blockquote>
<ul>
<li>Check to ensure that the newly discovered storage device is present on your system</li>
</ul>
<blockquote><p>ls /dev/etherd</p></blockquote>
<ul>
<li>Partition the disk using fdisk</li>
</ul>
<blockquote><p>fdisk /dev/etherd/e0.1</p></blockquote>
<ul>
<li>Create a new partition:</li>
</ul>
<blockquote>
<ol>
<li>Select option &#8220;n&#8221; to create a new partition</li>
<li>Select &#8220;p&#8221; for a primary partition</li>
<li>Select &#8220;Enter&#8221; to accept the default values for all remaining options</li>
<li>Select &#8220;w&#8221; to save the changes to the partition table</li>
</ol>
</blockquote>
<ul>
<li>There should not be a device called e0.1p1 in the following directory /dev/etherd/</li>
</ul>
<ul>
<li>Create a filesystem on the newly created partition</li>
</ul>
<blockquote><p>mkfs.ext4 /dev/etherd/e0.1p1</p></blockquote>
<ul>
<li>Create a folder in the /mnt dirctory for mounting the storage device</li>
</ul>
<blockquote><p>mkdir /mnt/aoe</p></blockquote>
<ul>
<li>Change the permissions on the folder to allow for users to read and write to the storage device</li>
</ul>
<blockquote><p>chmod 777 /mnt/aoe</p></blockquote>
<ul>
<li>Mount the filesystem for usage</li>
</ul>
<blockquote><p><del>mkdir /mnt/aoe</del></p>
<p>mount -t ext4 /dev/etherd/e0.1p1 /mnt/aoe</p></blockquote>
<ul>
<li>Check to see that the device was successfully mounted. It should be listed from the output of the following command:</li>
</ul>
<blockquote><p>mount | grep aoe</p></blockquote>
<ul>
<li>Add the mount point to the fstab to mount the device on boot</li>
</ul>
<blockquote>
<ol>
<li>vi /etc/fstab</li>
<li>Add the following line to the end of the fstab file and save the changes.</li>
</ol>
</blockquote>
<blockquote><p>        /dev/etherd/e0.1p1     /mnt/aoe     ext4     defaults,_netdev     0 0</p></blockquote>
<ul>
<li>Add the following lines below to the end of the rc.local file to run required commands on boot.</li>
</ul>
<blockquote>
<ol>
<li>vi /etc/rc.local</li>
</ol>
<p>aoe-discoversleep 5</p>
<p>mount -a</p></blockquote>
<p><strong><span style="text-decoration:underline;">Summary:</span></strong></p>
<p>The configuration for AoE is fairly simple and straightforward. One can easily have a usable AoE network storage solution up and running in 30 minutes or less. <del>As for performance, I have only been able to test my configuration on my two laptops running on a 10/100Mbps LAN, but through transferring large amounts of data I have yet to see any serious issues such as packet loss or performance slowdowns. I will have an updated post once I configure AoE on two desktop machines running on a gigabit LAN.</del> An update on the actual performance of this new configuration will be posted shortly.</p>
<p><strong><span style="text-decoration:underline;">Links:</span></strong></p>
<p><a href="http://www.howtoforge.com/using-ata-over-ethernet-aoe-on-fedora-10-initiator-and-target-p2">Howtoforge - AoE Configuration on two Fedora machines</a></p>
<p><a href="http://0pointer.de/public/systemd-man/modules-load.d.html">Configuring kernel modules to load at boot (optional method)</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=105&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/11/13/ata-over-ethernet-release-0-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating a Repository</title>
		<link>http://dliscio.wordpress.com/2011/10/14/creating-a-repository/</link>
		<comments>http://dliscio.wordpress.com/2011/10/14/creating-a-repository/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 06:39:51 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=97</guid>
		<description><![CDATA[In this post I will be showing how to create a repository, sign RPM packages and distribute packages via the newly created repository. Requirements: - 1 or more RPM packages (for signing) - Experience with building RPMs Part 1 &#8211; Signing RPM packages Create a GPG key for your packages. Depending on which version is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=97&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post I will be showing how to create a repository, sign RPM packages and distribute packages via the newly created repository.</p>
<p><strong>Requirements:</strong></p>
<p>- 1 or more RPM packages (for signing)</p>
<p>- Experience with building RPMs</p>
<p><span style="text-decoration:underline;"><strong>Part 1 &#8211; Signing RPM packages</strong></span></p>
<p>Create a GPG key for your packages. Depending on which version is installed on your system, GPG or GPG2 will be available for the command listed below.</p>
<blockquote><p>gpg2 &#8211;gen-key</p></blockquote>
<p>Follow the onscreen prompts and select the default options where available. Fill in your real name and email address when requested to.</p>
<ul>
<li>Add the email address you entered during the gpg key creation to the %_gpg_name macro in the ~./rpmmacros file</li>
<li>The line will look like the following:</li>
</ul>
<blockquote><p>%_gpg_name &#8220;dliscio@learn.senecac.on.ca&#8221;</p></blockquote>
<p>In my case, I will be signing my two RPM packages; units and zile. To sign the RPMs, run the following command:</p>
<blockquote><p>rpm &#8211;addsign units-1.88-100.fc15.x86_64.rpm zile-2.3.24-100.fc15.x86_64.rpm</p></blockquote>
<p>If you have multiple RPMs located in a single folder that you would like to sign , you can use the &#8220;*&#8221; to indicate to the &#8220;rpm &#8211;addsign&#8221; command that you want all packages in the folder to be signed.</p>
<blockquote><p>eg. rpm &#8211;addsign ~/rpmbuild/RPMS/*</p></blockquote>
<p><span style="text-decoration:underline;"><strong>Part 2 &#8211; Create a YUM Repository</strong></span></p>
<p>For this step, select a location to host your repository. I used my Seneca College HTTP server to host my repository.</p>
<ul>
<li>Create the directory structure on your hosted repository, and replicate the exact same setup on your local machine where your packages are located.</li>
<li>Shown below is how I structured my repository directory:</li>
</ul>
<blockquote><p>public_html/<br />
└── dliscio-repo<br />
└── fedora<br />
└── releases<br />
└── 15<br />
└── Everything<br />
├── source<br />
│   └── SRPMS<br />
└── x86_64</p></blockquote>
<p>When you have finished creating your repo directories, copy your signed RPM files from Part 1 to the appropriate directory. Because my packages were 64-bit, I placed them in the x86_64 directory.</p>
<ul>
<li>Create the repository metadata for the recently created repo directory</li>
</ul>
<blockquote><p>createrepo ~/public_html/dliscio-repo/fedora</p></blockquote>
<p>When this is completed, a folder called &#8220;repodata&#8221; will be placed in the directory.</p>
<p><strong>*Please note*</strong> Any changes made to the repo directory such as adding new, signed packages or changing the directory structure requires the &#8220;createrepo&#8221; command to be run again to update the metadata.</p>
<p>Copy the signed RPMs and repodata to their respective places on your hosted repository. This can be done using the SCP command.</p>
<blockquote><p>[dliscio@merk]$ scp ~/public_html/dliscio-repo/fedora/releases/15/Everything/x86_64/repodata/* dliscio@matrix:~/public_html/dliscio-repo/fedora/releases/15/Everything/x86_64/repodata/</p>
<p>[dliscio@merk]$ scp ~/public_html/dliscio-repo/fedora/releases/15/Everything/source/SRPMS/repodata/ matrix:~/public_html/dliscio-repo/fedora/releases/15/Everything/source/SRPMS/repodata/</p></blockquote>
<p><span style="text-decoration:underline;"><strong>Part 3 &#8211; Testing the Repository</strong></span></p>
<p>To test the recently created repository, we need to create a repository file. For this I used an existing file, the fedora.repo file as a template.</p>
<ul>
<li>Create a copy of the fedora.repo file in the /etc/yum.repos.d directory and edit it.</li>
</ul>
<blockquote><p>cp /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/dliscio-repo.repo</p>
<p>vi /etc/yum.repos.d/dliscio-repo.repo</p></blockquote>
<p>Listed below if the configuration of my repository file:</p>
<blockquote><p>[dliscio-repo]<br />
name=dliscio Fedora $releasever &#8211; $basearch<br />
baseurl=http://matrix.senecac.on.ca/~dliscio/dliscio-repo/fedora/releases/$releasever/Everything/$basearch/<br />
enabled=1<br />
metadata_expire=7d<br />
gpgcheck=1<br />
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-dliscio-fedora-releases</p></blockquote>
<p>The &#8220;baseurl&#8221; option matches my hosted repository location and my gpgkey entry matches the location where my gpg key is stored on my local machine.</p>
<p>To create the GPG key, run the following command needs to be run:</p>
<blockquote><p>gpg &#8211;export &#8211;armour email@address &gt; ~/RPM-GPG-KEY-dliscio-fedora-releases</p></blockquote>
<p>Copy the key to the following directory as the ROOT user:</p>
<blockquote><p>cp /home/dliscio/RPM-GPG-KEY-dliscio-fedora-releases /etc/pki/rpm-gpg/RPM-GPG-KEY-dliscio-fedora-releases</p></blockquote>
<p>Run a YUM command to test that your repository is working.</p>
<blockquote><p>[root@merk yum.repos.d]# yum install units zile<br />
Loaded plugins: langpacks, presto, refresh-packagekit<br />
Setting up Install Process<br />
Resolving Dependencies<br />
&#8211;&gt; Running transaction check<br />
&#8212;&gt; Package units.x86_64 0:1.88-100.fc15 will be installed<br />
&#8212;&gt; Package zile.x86_64 0:2.3.24-100.fc15 will be installed<br />
&#8211;&gt; Finished Dependency Resolution</p>
<p>Dependencies Resolved</p>
<p>================================================================================<br />
Package      Arch          Version                   Repository           Size<br />
================================================================================<br />
Installing:<br />
units        x86_64        1.88-100.fc15             dliscio-repo        134 k<br />
zile         x86_64        2.3.24-100.fc15           dliscio-repo        112 k</p></blockquote>
<ul>
<li>Notice that the &#8220;Repository&#8221; is labelled, dliscio-repo; this confirms that YUM is checking/using your repository for packages, rather than its own repository during the install process.</li>
</ul>
<p><span style="text-decoration:underline;"><strong>Part 4 &#8211; Creating a Repository RPM</strong></span></p>
<p>Creating a repository RPM is a great way to share and enable the use of your repository for others in an easy to install RPM package. This takes the effort out of adding a new repository as the RPM will take care of copying the repo and GPG key to their respective locations.</p>
<ul>
<li>Copy your repo and GPG key files to the &#8220;SOURCES&#8221; folder under your &#8220;rpmbuild&#8221; directory.</li>
</ul>
<blockquote><p>cp /etc/yum.repos.d/dliscio-repo.repo ~/rpmbuild/SOURCES/</p>
<p>cp /etc/pki/rpm-gpg/RPM-GPG-KEY-dliscio-fedora-releases ~/rpmbuild/SOURCES/</p></blockquote>
<ul>
<li>Change to the SPECS directory</li>
</ul>
<blockquote><p>cd ~/rpmbuild/SPECS</p></blockquote>
<ul>
<li>Download RPM Fusions repository RPM and install it under your username. This will dump the spec file into the rpmbuild directory without actually installing the program.</li>
</ul>
<blockquote><p><a title="http://rpmfusion.org/Configuration" href="http://rpmfusion.org/Configuration">http://rpmfusion.org/Configuration</a></p></blockquote>
<ul>
<li>Rename and edit the spec file. Ensure that the &#8220;Source&#8221; fields are changed to the names of your yum repo and GPG key files that are in the SOURCES directory. Fill in the rest of the fields with your own information, replacing RPM Fusions data. A sample spec file can be seen below:</li>
</ul>
<blockquote><p>Name:        dliscio-repo<br />
Version:    1<br />
Release:    1<br />
Summary:    David Liscio&#8217;s Repository Configuration</p>
<p>License:    GPLv3+<br />
URL:        http://matrix.senecac.on.ca/~dliscio<br />
Source1:    dliscio-repo.repo<br />
Source2:    RPM-GPG-KEY-dliscio-fedora-releases<br />
BuildRoot:    %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)<br />
BuildArch:    noarch</p>
<p>%description<br />
This is a test repository created by David Liscio.<br />
It is hosting GNU applications that were packaged<br />
by me for my SBR600 course.</p>
<p>%prep</p>
<p>%build</p>
<p>%install<br />
rm -rf $RPM_BUILD_ROOT</p>
<p># Create dirs<br />
install -d -m755 \<br />
$RPM_BUILD_ROOT%{_sysconfdir}/pki/rpm-gpg  \<br />
$RPM_BUILD_ROOT%{_sysconfdir}/yum.repos.d</p>
<p># GPG Key<br />
%{__install} -Dp -m644 \<br />
%{SOURCE2} \<br />
$RPM_BUILD_ROOT%{_sysconfdir}/pki/rpm-gpg</p>
<p># Yum .repo files<br />
%{__install} -p -m644 %{SOURCE1} \<br />
$RPM_BUILD_ROOT%{_sysconfdir}/yum.repos.d</p>
<p>%clean<br />
rm -rf $RPM_BUILD_ROOT</p>
<p>%files<br />
%defattr(-,root,root,-)<br />
%{_sysconfdir}/pki/rpm-gpg/*<br />
%config(noreplace) %{_sysconfdir}/yum.repos.d/*</p>
<p>%changelog<br />
* Wed Oct 05 2011 David Liscio &#8211; 1-1<br />
- Initial build for deliscio-repo</p></blockquote>
<ul>
<li>Build the package once the spec file configuration has been completed</li>
</ul>
<blockquote><p>rpmbuild -ba dliscio-repo.spec</p></blockquote>
<ul>
<li>If rpmbuild completed with an exit status of 0 and no errors, test the RPM package with rpmlint.</li>
</ul>
<blockquote><p>rpmlint ~/rpmbuild/RPMS/noarch/dliscio-repo-1-1.noarch.rpm</p></blockquote>
<ul>
<li>Copy the repository RPM to your hosted repo for others to install and use.</li>
</ul>
<blockquote><p>[dliscio@merk noarch]$ scp dliscio-repo-1-1.noarch.rpm dliscio@matrix:~/public_html/dliscio-repo/fedora/</p></blockquote>
<p><span style="text-decoration:underline;"><strong>Summary</strong></span></p>
<p>Overall, I found that the process for creating a repository to be pretty straight forward. I did run into a few problems with the repodata folder not being placed in the correct directory. I had placed it under dliscio-repo instead of creating a different repodata for each architecture. Running the &#8221;createrepo&#8221; command on my x86_64 and SRPMS folder separately seemed to fix the problem. It took a bit of time to get the SPEC file figured out for my repo RPM. Once I understood the layout and process of the RPM Fusion SPEC file template, things fell into place and only required me to change a few fields to get the SPEC file to build my RPM. A link to my repository RPM can be found in the links section below.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="text-decoration:underline;"><strong>Links</strong></span></p>
<p>My Repository RPM Package: <a title="http://matrix.senecac.on.ca/~dliscio/dliscio-repo/fedora/dliscio-repo-1-1.noarch.rpm" href="http://matrix.senecac.on.ca/~dliscio/dliscio-repo/fedora/dliscio-repo-1-1.noarch.rpm">http://matrix.senecac.on.ca/~dliscio/dliscio-repo/fedora/dliscio-repo-1-1.noarch.rpm</a></p>
<p>RPM Fusion: <a title="http://rpmfusion.org/RPM%20Fusion" href="http://rpmfusion.org/RPM%20Fusion">http://rpmfusion.org/RPM%20Fusion</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=97&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/10/14/creating-a-repository/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
		<item>
		<title>AoE Support for ARM Based Systems</title>
		<link>http://dliscio.wordpress.com/2011/10/04/aoe-support-for-arm-based-systems/</link>
		<comments>http://dliscio.wordpress.com/2011/10/04/aoe-support-for-arm-based-systems/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 01:18:59 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=90</guid>
		<description><![CDATA[As you can probably tell by the title, I wanted to talk a little bit about AoE on ARM Architecture. Testing this technology and hopefully implementing it on ARM based systems, specifically in the Fedora Koji Build farm for network storage will be my main goal. AoE is ATA over Ethernet, which is essentially a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=90&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As you can probably tell by the title, I wanted to talk a little bit about AoE on ARM Architecture. Testing this technology and hopefully implementing it on ARM based systems, specifically in the Fedora Koji Build farm for network storage will be my main goal. AoE is ATA over Ethernet, which is essentially a fancy way of saying PATA and SATA hard drives using an Ethernet connection instead of IDE/SATA cables found in a computer.</p>
<p>AoE is simple, yet effective in that there is little overhead as it is runs on data link layer 2, with no TCP/IP protocol required to process the traffic. More info regarding the project can be found at the link below. If you would like to track the progress of the project you can refer to the main project page: <a href="http://zenit.senecac.on.ca/wiki/index.php/AoE_Support">http://zenit.senecac.on.ca/wiki/index.php/AoE_Support</a>. If you have experience with AoE on Linux-based systems and would like to offer advice/tips, or have questions, please feel free to <a href="http://zenit.senecac.on.ca/wiki/index.php/User:Dliscio">contact me</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/90/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=90&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/10/04/aoe-support-for-arm-based-systems/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
		<item>
		<title>Testing RPMS with Mock and Koji</title>
		<link>http://dliscio.wordpress.com/2011/10/04/testing-rpms-with-mock-and-koji/</link>
		<comments>http://dliscio.wordpress.com/2011/10/04/testing-rpms-with-mock-and-koji/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 17:05:46 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=56</guid>
		<description><![CDATA[In this post I will be testing my recently built RPMS using two tools; Mock and Koji. Mock is a tool used to test that the BuildRequires field of an RPM package is set correctly by creating a basic CHROOT environment with only basic build packages, as well as packages specified in the SPEC file [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=56&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post I will be testing my recently built RPMS using two tools; Mock and Koji. Mock is a tool used to test that the BuildRequires field of an RPM package is set correctly by creating a basic CHROOT environment with only basic build packages, as well as packages specified in the SPEC file in the BuildRequires field. Koji is a tool used to upload and queue a package for building in the Fedora build farm in order to build packages on ARM based systems.</p>
<p><span style="text-decoration:underline;"><strong>Part 1 &#8211; Installing Mock and Koji</strong></span></p>
<p>Install both packages using YUM to use Mock and Koji tools for testing.</p>
<blockquote><p>yum install mock fedora-packager</p></blockquote>
<p>In order to use Mock to test your RPM packages, you will first need to add your username to the &#8220;mock&#8221; group.</p>
<blockquote><p>usermod -G mock dliscio</p></blockquote>
<p><span style="text-decoration:underline;"><strong>Part 2 &#8211; Using Mock</strong></span></p>
<p>To test using mock, you will need to have an SRPM. It is easiest if you first change directories to where these SRPMS are located before using mock.</p>
<blockquote><p>cd /home/dliscio/rpmbuild/SRPMS</p></blockquote>
<p>To use mock, use the following syntax: mock -r distribution-release-arch SRPMfile</p>
<p>The -r option is for specifying CHROOT and the name of the config file to be used, in this case the default config file is used.</p>
<p>Shown below is an example of using mock to test a package for an i386, fedora 15 based system.</p>
<blockquote><p>mock -r fedora-15-i386 /home/dliscio/rpmbuild/SRPMS/units-1.88-1.fc15.src.rpm</p></blockquote>
<p>If you receive errors with your mock build, you can check the following directory for log files:</p>
<blockquote><p>/var/lib/mock/distribution-release-arch/result</p></blockquote>
<p><span style="text-decoration:underline;">Build Time:</span></p>
<p>The build time for mock will depend heavily on you internet connection as mock will need to download numerous packages using YUM to test your SRPM. Using mock on campus at Seneca College is extremely fast as there is a local Fedora repository on-site.</p>
<ul>
<li>Units: 1m12.304s</li>
</ul>
<ul>
<li>Zile: 1m28.674s</li>
</ul>
<p><span style="text-decoration:underline;">Notes:</span></p>
<p>Upon first using mock, I ran into an issue an error building one of my packages named zile. The error was related to a failed dependency with ncurses. It was a strange error because I had specified the dependency in the SPEC file and had built the package successfully on my local machine. It turns out that I had forgotten about installing the ncurses-devel package while building my package from source. When creating my RPM I had placed the wrong dependency in the SPEC file, but it still built successfully on my machine because I already had the dependency installed. I fixed the mock error by correcting the SPEC file with the proper dependency, and rebuilt my RPMS. Once I re-ran mock, it built the package successfully.</p>
<ul>
<li>Updated Zile SRPM: <a title="zile-2.3.24-1.fc15.src.rpm" href="http://matrix.senecac.on.ca/~dliscio/sbr600/zile-2.3.24-1.fc15.src.rpm">zile-2.3.24-1.fc15.src.rpm</a></li>
</ul>
<p><strong><span style="text-decoration:underline;">Part 3 &#8211; Building with Koji</span></strong></p>
<p>To start using Koji you will first need to run the following command to set-up your Koji environment on your local machine. This will run a number of scripts and create certificates which will prepare your local machine for queuing builds to Koji.</p>
<blockquote><p>fedora-packager-setup</p></blockquote>
<p>To use the web interface of Fedora-Koji, you will need to add the recently created certificate to your browser, in this case the browser is Firefox.</p>
<blockquote>
<ol>
<li>Open Firefox, click edit and select preferences</li>
<li>Click the advanced tab, from here select the encryption tab</li>
<li>Select view certificates and click the &#8220;your certificates&#8221; tab</li>
<li>Click the import button and navigate to the file that was specified when running the fedora-package-setup command</li>
<li>You should now be able to login and authenticate to the Koji web interface: <a title="http://koji.fedoraproject.org/koji/" href="http://koji.fedoraproject.org/koji/">http://koji.fedoraproject.org/koji/</a></li>
</ol>
</blockquote>
<p>To send a package to the Koji build farm we will be using the koji command with the following syntax: koji build dist-f15 &#8211;scratch SRPMfile</p>
<p>*It is important to include the &#8220;&#8211;scratch&#8221; option when queuing your SRPM for testing to ensure that the build is not committed to the fedora distribution.*</p>
<p>I used the following commands to queue and build my two packages in koji:</p>
<blockquote><p>koji build dist-f15 &#8211;scratch /home/dliscio/rpmbuild/SRPMS/units-1.88-1.fc15.src.rpm</p>
<p>koji build dist-f15 &#8211;scratch /home/dliscio/rpmbuild/SRPMS/zile-2.3.24-1.fc15.src.rpm</p></blockquote>
<p>You can view the status of a Koji build at any time by using one of two methods.</p>
<ol>
<li>View the task through the Koji web interface by selecting the &#8220;Tasks&#8221; tab and filtering results by username: <a title="http://koji.fedoraproject.org/koji/index" href="http://koji.fedoraproject.org/koji/index">http://koji.fedoraproject.org/koji/index</a></li>
<li>Run the following command from a terminal window:</li>
</ol>
<blockquote><p>koji watch-task taskID</p></blockquote>
<p><span style="text-decoration:underline;">Build Time:</span></p>
<p>This will depend on how much load is currently on the hosts you are building on. Your package will be queued until there is enough capacity to process your build.</p>
<ul>
<li>Units: 7 minutes</li>
</ul>
<ul>
<li>Zile: 3 minutes</li>
</ul>
<p><span style="text-decoration:underline;"><strong>Summary:</strong></span></p>
<p>Overall, I had little to no issues using Mock and Koji in testing and building my source RPMS. Mock is a great tool for testing dependencies of a recently built package. It will attempt to build your package by using the packages listed in your SRPMs BuildRequires field as well as include only basic tools that would normally come pre-installed on a Linux system. This ensures that your RPM package has had its dependencies set properly so that it will install correctly on machines other than your own. In my case, Mock found a build dependency that was missing from my SRPM which allowed me to correct the issue, and re-build the package for usage.</p>
<p>As a first-timer dealing with Koji, it was an interesting process uploading and queuing my SRPMs to the build farm. Once Koji was configured on my machine, it was fairly easy to queue my packages for being built and it was even easier to view and track the progress of the build. I had no trouble finding error logs when needed and also had no issues with navigating the Koji web interface, which is organized in a simple and intuitive way. Posted below are links that I found useful during my usage and configuration of Mock and Koji.</p>
<p><span style="text-decoration:underline;">Resources:</span></p>
<ul>
<li><a title="Using Mock to test package builds - FedoraProject" href="http://fedoraproject.org/wiki/Using_Mock_to_test_package_builds">Using Mock to test package builds &#8211; FedoraProject</a></li>
</ul>
<ul>
<li><a title="Using the Koji build system - FedoraProject" href="http://fedoraproject.org/wiki/PackageMaintainers/UsingKoji#Installing_Koji">Using the Koji build system &#8211; FedoraProject</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=56&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/10/04/testing-rpms-with-mock-and-koji/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
		<item>
		<title>Building an RPM Package</title>
		<link>http://dliscio.wordpress.com/2011/09/21/building-an-rpm-package/</link>
		<comments>http://dliscio.wordpress.com/2011/09/21/building-an-rpm-package/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 04:44:01 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=38</guid>
		<description><![CDATA[In today&#8217;s post, I will be documenting how to build an RPM package. I will be using &#8220;units&#8221; and &#8220;zile&#8221; as my two applications (from the Building from Source post) that will be packaged as RPMs. The process will involve the following steps: Preparing the build environment Create default SPEC file/edit SPEC file Build RPM [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=38&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In today&#8217;s post, I will be documenting how to build an RPM package. I will be using &#8220;units&#8221; and &#8220;zile&#8221; as my two applications (from the Building from Source post) that will be packaged as RPMs. The process will involve the following steps:</p>
<ul>
<li>Preparing the build environment</li>
<li>Create default SPEC file/edit SPEC file</li>
<li>Build RPM package</li>
<li>Testing the SPEC, RPM, debuginfo RPM, and SRPM files</li>
</ul>
<p><strong>*Please Note</strong>* – This guide assumes that you already have the source tarball for &#8220;units&#8221; and &#8220;zile&#8221; already downloaded. Please refer to the Building from Source post for links and descriptions of the applications used here.</p>
<p><strong><span style="text-decoration:underline;">Part 1 &#8211; Prepare the build environment</span></strong></p>
<p>To begin the process of building RPMs, we first need to install the Fedora Packager, rpmlint, and yum-utils packages.</p>
<blockquote><p>su -</p>
<p>(enter root password)</p>
<p>yum groupinstall &#8220;Fedora Packager&#8221;</p></blockquote>
<p>When complete, run the following command (as root user) to install the remaining packages:</p>
<blockquote><p>yum install rpmlint yum-utils</p></blockquote>
<p>Change back to your regular user account and create the default rpmbuild directories by running the following command:</p>
<blockquote><p>exit</p>
<p>rpmdev-setuptree</p></blockquote>
<p>Once the above command is completed, you should have a folder structure in your home directory that looks like this:</p>
<blockquote><p>[dliscio@merk ~]$ tree rpmbuild/<br />
rpmbuild/<br />
├── BUILD<br />
├── RPMS<br />
├── SOURCES<br />
├── SPECS<br />
└── SRPMS</p></blockquote>
<p>Copy the source tarball for &#8220;units&#8221; and &#8220;zile&#8221; to the ~/rpmbuild/SOURCES directory.</p>
<blockquote><p>cp ~/Downloads/units-1.88.tar.gz zile-2.3.24.tar.gz ~/rpmbuild/SOURCES</p></blockquote>
<p><strong><span style="text-decoration:underline;">Part 2 &#8211; Create and edit the Spec file</span></strong></p>
<p>The next step in packaging an RPM is to create a default SPEC file. The SPEC file contains info such as the name, version, revision, summary and dependencies or requirements of the application. A SPEC file dictates how a package will be configured, what will be installed, the location of the install, and tasks that the system will need to complete pre and post install.</p>
<p>Change to the SPECS directory.</p>
<blockquote><p>cd ~/rpmbuild/SPECS</p></blockquote>
<p>Create the default SPEC files.</p>
<blockquote><p>rpmbuild-newspec units</p>
<p>rpmbuild-newspec units</p></blockquote>
<p>Edit the SPEC file using your preferred text editor, filling in all fields. If a field is not required, comment it out using the &#8220;#&#8221; character.</p>
<blockquote><p>vi units.spec</p>
<p>vi zile.spec</p></blockquote>
<p><strong>Units SPEC file:</strong></p>
<p>For this SPEC file, I ran into a few issues regarding a number of files not being copied to their proper locations during the build. The error was as shown below:</p>
<blockquote><p>RPM build errors:<br />
Installed (but unpackaged) file(s) found:<br />
/usr/bin/units<br />
/usr/share/info/units.info.gz<br />
/usr/share/man/man1/units.1.gz<br />
/usr/share/units.dat</p></blockquote>
<p>I fixed this error by editing SPEC file with the following entries.</p>
<blockquote><p>BuildRequires:        gettext<br />
Requires(post):        info<br />
Requires(preun):    info</p>
<p>%install<br />
rm -rf $RPM_BUILD_ROOT<br />
make install DESTDIR=$RPM_BUILD_ROOT<br />
rm -f %{buildroot}/%{_infodir}/dir</p>
<p>%post<br />
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :</p>
<p>%preun<br />
if [ $1 = 0 ] ; then<br />
/sbin/install-info &#8211;delete %{_infodir}/%{name}.info %{_infodir}/dir || :<br />
fi</p></blockquote>
<blockquote><p>%files<br />
%doc README NEWS ChangeLog COPYING INSTALL<br />
%{_bindir}/*<br />
%{_mandir}/man1/*<br />
%{_infodir}/%{name}.info.gz<br />
%{_datadir}/%{name}.dat</p></blockquote>
<p>I added to the %doc entry, files from the extracted tarball that looked like documentation files. For the info.gz file, more steps were required which is why you see the build dependencies listed as &#8220;gettext&#8221; and the post and preun requires fields filled in with &#8220;info&#8221;</p>
<p><strong>Zile SPEC file:</strong></p>
<p>This SPEC file did not contain an info.gz file, but did require the addition of filenames to the %files section.</p>
<blockquote><p>%files<br />
%doc<br />
%{_bindir}/*<br />
%{_mandir}/man1/*<br />
%{_datadir}/%{name}/FAQ<br />
%{_datadir}/%{name}/dotzile-extra.el</p></blockquote>
<p>Save your SPEC files when you have finished editing them and continue to part 3.</p>
<p><strong><span style="text-decoration:underline;">Part 3 &#8211; Build the RPM package</span></strong></p>
<p>To build an RPM package, the command &#8220;rpmbuild -ba specfile.spec&#8221; is used. The -ba option tells rpmbuild to build the source and RPM packages from the specfile specified.</p>
<p>Attempt to build the RPM package:</p>
<blockquote><p>rpmbuild -ba units.spec</p>
<p>rpmbuild -ba zile.spec</p></blockquote>
<p>After running the build, fix any errors that may occur. The last few lines of a successful build for units is shown below as an example.</p>
<blockquote><p>Wrote: /home/dliscio/rpmbuild/SRPMS/units-1.88-1.fc15.src.rpm<br />
Wrote: /home/dliscio/rpmbuild/RPMS/x86_64/units-1.88-1.fc15.x86_64.rpm<br />
Wrote: /home/dliscio/rpmbuild/RPMS/x86_64/units-debuginfo-1.88-1.fc15.x86_64.rpm<br />
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.PhVm9O<br />
+ umask 022<br />
+ cd /home/dliscio/rpmbuild/BUILD<br />
+ cd units-1.88<br />
+ /bin/rm -rf /home/dliscio/rpmbuild/BUILDROOT/units-1.88-1.fc15.x86_64<br />
+ exit 0</p></blockquote>
<p>If the build completes with an exit status of 0 without errors, continue to part 4 for testing.</p>
<p><strong><span style="text-decoration:underline;">Part 4 &#8211; Testing using rpmlint</span></strong></p>
<p>Now that you have built an RPM package, we need to test the package for errors using a tool called rpmlint.</p>
<p>Run  rpmlint on each of your SPEC, RPM, debuginfo RPM, and SRPM files to ensure that they do not contain errros.</p>
<p><strong>Units:</strong></p>
<blockquote><p>[dliscio@merk SPECS]$ rpmlint units.spec<br />
0 packages and 1 specfiles checked; 0 errors, 0 warnings.</p>
<p>[dliscio@merk SPECS]$ rpmlint ../RPMS/x86_64/units-1.88-1.fc15.x86_64.rpm<br />
1 packages and 0 specfiles checked; 0 errors, 0 warnings.</p>
<p>[dliscio@merk SPECS]$ rpmlint ../RPMS/x86_64/units-debuginfo-1.88-1.fc15.x86_64.rpm<br />
1 packages and 0 specfiles checked; 0 errors, 0 warnings.</p>
<p>[dliscio@merk SPECS]$ rpmlint ../SRPMS/units-1.88-1.fc15.src.rpm<br />
1 packages and 0 specfiles checked; 0 errors, 0 warnings.</p></blockquote>
<p><strong>Zile:</strong></p>
<blockquote><p>[dliscio@merk SPECS]$ rpmlint zile.spec<br />
0 packages and 1 specfiles checked; 0 errors, 0 warnings.</p></blockquote>
<blockquote><p>[dliscio@merk SPECS]$ rpmlint ../RPMS/x86_64/zile-2.3.24-1.fc15.x86_64.rpm<br />
zile.x86_64: W: name-repeated-in-summary C Zile<br />
zile.x86_64: W: spelling-error %description -l en_US customizable -&gt; customization<br />
1 packages and 0 specfiles checked; 0 errors, 2 warnings.</p></blockquote>
<blockquote><p>[dliscio@merk SPECS]$ rpmlint ../RPMS/x86_64/zile-debuginfo-2.3.24-1.fc15.x86_64.rpm<br />
1 packages and 0 specfiles checked; 0 errors, 0 warnings.</p></blockquote>
<blockquote><p>[dliscio@merk SPECS]$ rpmlint ../SRPMS/zile-2.3.24-1.fc15.src.rpm<br />
zile.src: W: name-repeated-in-summary C Zile<br />
zile.src: W: spelling-error %description -l en_US customizable -&gt; customization<br />
1 packages and 0 specfiles checked; 0 errors, 2 warnings.</p></blockquote>
<p>The warnings marked by a W for the zile files are not critical items, but rather recommendations in this case for a repeat name in the summary field and a &#8220;spelling&#8221; error in the description (not actually an error). Warnings will not cause your package to be unusable, but if you start seeing many warnings when checking with rpmlint, you should further analyze the warnings to ensure that no major problems are occurring behind the scenes.</p>
<p><strong><span style="text-decoration:underline;">Summary</span></strong></p>
<p>This is a basic overview of the build process for packaging an RPM file from source. There is plenty of documentation available online for a more in-depth look into SPEC files and what you can do with each field in the file. I will post links to the files I created during the build process in the links section below. I will also provide links to a few websites I found useful while working through the build process that may help you in configuring the SPEC file for other packages.</p>
<p><strong><span style="text-decoration:underline;">Links</span></strong></p>
<ul>
<li><a title="http://matrix.senecac.on.ca/~dliscio/sbr600/dliscio-rpmbuild.tar.gz" href="http://matrix.senecac.on.ca/~dliscio/sbr600/dliscio-rpmbuild.tar.gz">RPMBUILD Directory w/SPEC, RPM, debug RPM, and SRPM for units and zile</a></li>
<li><a title="http://fedoraproject.org/wiki/PackageMaintainers/CreatingPackageHowTo#.25files_Basics" href="http://fedoraproject.org/wiki/PackageMaintainers/CreatingPackageHowTo#.25files_Basics">FedoraProject - How to create an RPM package</a></li>
<li><a title="http://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package#Inside_a_.spec_file" href="http://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package#Inside_a_.spec_file">FedoraProject &#8211; How to create a GNU Hello RPM package</a></li>
<li><a title="http://zenit.senecac.on.ca/wiki/index.php/RPM_spec_File_Contents" href="http://zenit.senecac.on.ca/wiki/index.php/RPM_spec_File_Contents">Open Source @ Seneca &#8211; RPM spec File Contents</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=38&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/09/21/building-an-rpm-package/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
		<item>
		<title>Building from Source</title>
		<link>http://dliscio.wordpress.com/2011/09/15/building-from-source/</link>
		<comments>http://dliscio.wordpress.com/2011/09/15/building-from-source/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 02:23:18 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=13</guid>
		<description><![CDATA[In this post I will be going through the steps required to build Linux software from source code. The two packages I choose to install were &#8220;Units&#8221; and &#8220;Zile&#8221;. Units is a program used to convert quantities expressed in various scales to their equivalents in other scales. Zile on the other hand is a lightweight [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=13&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post I will be going through the steps required to build Linux software from source code. The two packages I choose to install were &#8220;Units&#8221; and &#8220;Zile&#8221;. Units is a program used to convert quantities expressed in various scales to their equivalents in other scales. Zile on the other hand is a lightweight clone of Emacs; It is an extensible, customizable text editor. Links to each program will be provided at the end of the post. Lets get started.</p>
<p><strong>*Please Note</strong>* &#8211; I will show the build process for &#8220;units&#8221; specifically, but the same process can also be used for building Zile and most other applications from source code.</p>
<p><span style="text-decoration:underline;"><strong>Part 1 &#8211; Download the Source Code</strong></span></p>
<p>Download the source code in tarball form from the following location:</p>
<blockquote><p><a title="http://ftp.gnu.org/gnu/units/units-1.88.tar.gz" href="http://ftp.gnu.org/gnu/units/units-1.88.tar.gz">http://ftp.gnu.org/gnu/units/units-1.88.tar.gz</a></p></blockquote>
<p>Save the file to a known location on your machine. In my example I will be working in my Downloads directory (replace with your own dir).</p>
<p>Change to the Downloads folder using the change directory command.</p>
<blockquote><p>cd /home/dliscio/Downloads</p></blockquote>
<p><span style="text-decoration:underline;"><strong>Part 2 &#8211; Extract the Tarball</strong></span></p>
<p>Extract the tarball that was recently downloaded using the tar command and use the following options (in order): e(x)tract, (v)erbose, g(z)ip, and (f)ile</p>
<blockquote><p>tar -xvzf units-1.88.tar.gz</p></blockquote>
<p>Change directories again to the newly extracted directory in the Downloads folder called &#8220;units-1.88&#8243;.</p>
<blockquote><p>cd units-1.88</p></blockquote>
<p><span style="text-decoration:underline;"><strong>Part 3 &#8211; Install the Application</strong></span></p>
<div>
<p>Run the following command to verify that your system meets the requirements of units.</p>
</div>
<blockquote>
<div>
<blockquote><p>./configure</p></blockquote>
</div>
</blockquote>
<div>
<p>Shown below is a sample of what the configure script looks like in action:</p>
</div>
<blockquote>
<div>[dliscio@merk units-1.88]$ ./configure<br />
checking for gcc&#8230; gcc<br />
checking for C compiler default output file name&#8230; a.out<br />
checking whether the C compiler works&#8230; yes<br />
checking whether we are cross compiling&#8230; no</div>
<div>&#8230;</div>
<div>configure: creating ./config.status<br />
config.status: creating Makefile</div>
<div>[dliscio@merk units-1.88]$</div>
</blockquote>
<div>As you can see from the output, the configure script checks for components required for the build process such as the type of compiler installed (gcc) and it&#8217;s functionality. Although I skipped a chunk of output in the middle, you can see that at the end of the script the ./config.status file is created and the Makefile is configured in preparation for the rest of the build.</div>
<div>
<p>For our system, no dependencies were missing; we can continue to the next step.</p>
</div>
<div>
<p>Use the “make” command to run scripts that will build the program.</p>
</div>
<blockquote>
<div>
<blockquote><p>make</p></blockquote>
</div>
</blockquote>
<div>
<p>Next, change to the root user to gain permissions in order to successfully install the program.</p>
</div>
<blockquote>
<div>
<blockquote><p>su -</p></blockquote>
</div>
</blockquote>
<div>
<p>Change to the directory of the extracted tarball and install units using the make install command.</p>
</div>
<blockquote>
<div>
<blockquote><p>cd /home/dliscio/Downloads/units-1.88</p>
<p>make install</p></blockquote>
</div>
</blockquote>
<div>
<p>The program will now be installed. Test it by running it at a command line.</p>
</div>
<blockquote>
<div>[dliscio@merk units-1.88]$ units<br />
2526 units, 72 prefixes, 56 nonlinear units</div>
<div>You have: 1 litre<br />
You want: 1 quart<br />
* 1.0566882<br />
/ 0.94635295</div>
</blockquote>
<div>
<p><span style="text-decoration:underline;"><strong>Summary</strong></span></p>
<p>Congratulations, you have now built a Linux application from source!  In this example, &#8220;units&#8221; did not require any additional packages to be installed as a part of the build. Always refer to the README file located in the folder extracted by the tarball before attempting to install an application. This allows you to check if any dependencies are required for the specific build and may save you a lot of trouble later on in the build process.</p>
<p>To give you an idea of how long the build process took for part 3, it totaled 4.658 seconds. The time was measured by using the &#8220;time&#8221; command appended before running each command as shown below:</p>
<blockquote><p>time ./configure</p></blockquote>
<p>As promised, please see below for links to the two applications used in this post.</p>
<p>Units - <a title="http://www.gnu.org/s/units/" href="http://www.gnu.org/s/units/">http://www.gnu.org/s/units</a>/</p>
<p>Zile - <a title="http://www.gnu.org/software/zile/" href="http://www.gnu.org/software/zile/">http://www.gnu.org/software/zile/</a></p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=13&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/09/15/building-from-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
		<item>
		<title>First Post!</title>
		<link>http://dliscio.wordpress.com/2011/09/13/first-post/</link>
		<comments>http://dliscio.wordpress.com/2011/09/13/first-post/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 04:25:38 +0000</pubDate>
		<dc:creator>David Liscio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dliscio.wordpress.com/?p=6</guid>
		<description><![CDATA[Greetings from the inter-webs. My name is David Liscio; I am a 6th semester student in the Computer Systems Technology program at Seneca College in Toronto, Ontario, Canada. I am currently enrolled in SBR600, Software Build and Release and will be focusing on Fedora ARM package building. As I have never written a blog before, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=6&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Greetings from the inter-webs. My name is David Liscio; I am a 6th semester student in the Computer Systems Technology program at Seneca College in Toronto, Ontario, Canada. I am currently enrolled in SBR600, Software Build and Release and will be focusing on Fedora ARM package building. As I have never written a blog before, please bare with me and my struggles in adding and updating things.</p>
<p>A little bit about myself; I enjoy biking, gaming (I&#8217;m a noob), computers, and eating (Korean BBQ). In my spare time I enjoy following/testing android ROMS and kernel development, as well as testing and using open source products such as the Tomato Firmware for consumer routers and FreeNAS for NAS storage.</p>
<p>As a part of SBR600, I was asked to post a portion of IRC chat with another member in the Seneca IRC channel: freenode#seneca. Posted below is a portion of the chat with user jjmiller:</p>
<blockquote><p>&lt;jjmiller&gt; hey<br />
you in sbr600?&#8230;the same miller i&#8217;m thinking of?<br />
&lt;jjmiller&gt; indeed<br />
o ok&#8230;it&#8217;s david from ING&#8230;.you ok if i put some random talk in my blog?<br />
&lt;jjmiller&gt; lol no worries<br />
&lt;dliscio&gt; hah alright cool, thanks</p></blockquote>
<p>That is all for now, aside from this blog you can also find me at the links listed below:</p>
<ul>
<li>Seneca Wiki &#8211; <a title="http://zenit.senecac.on.ca/wiki/index.php/User:Dliscio" href="http://zenit.senecac.on.ca/wiki/index.php/User:Dliscio">http://zenit.senecac.on.ca/wiki/index.php/User:Dliscio</a></li>
</ul>
<ul>
<li>Fedora Wiki &#8211; <a title="https://fedoraproject.org/wiki/User:Dliscio" href="https://fedoraproject.org/wiki/User:Dliscio">https://fedoraproject.org/wiki/User:Dliscio</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dliscio.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dliscio.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dliscio.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dliscio.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dliscio.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dliscio.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dliscio.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dliscio.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dliscio.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dliscio.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dliscio.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dliscio.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dliscio.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dliscio.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dliscio.wordpress.com&amp;blog=27299327&amp;post=6&amp;subd=dliscio&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dliscio.wordpress.com/2011/09/13/first-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fbfa7bc820ac8de98ae2713f7c0bfa99?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dliscio</media:title>
		</media:content>
	</item>
	</channel>
</rss>
