<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.turnkeylinux.org/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://www.turnkeylinux.org/blog">
  <channel>
    <title>Blog</title>
    <link>http://www.turnkeylinux.org/blog</link>
    <description />
    <language>en</language>
          <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.turnkeylinux.org/turnkeylinux-blog" /><feedburner:info uri="turnkeylinux-blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>turnkeylinux-blog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
    <title>Announcing TurnKey OpenStack optimized builds</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/-C5VISN4JRM/announcing-openstack-builds</link>
    <description>&lt;p&gt;
	&lt;img alt="OpenStack Logo" src="/files/images/blog/openstack-logo.png" style="float: left; width: 200px; height: 200px; " /&gt;&lt;/p&gt;
&lt;p&gt;
	As we mentioned before, making TurnKey easy to deploy on as many public and private clouds is an important goal for us. Unfortunately there are too many players in the cloud software space for us to support every single one. It&amp;#39;s much easier to put effort into making TurnKey work well with the winning horses.&lt;/p&gt;
&lt;p&gt;
	TurnKey has been supported on the leading public cloud platform Amazon EC2 from early on, not to mention simplifying management and deployment via the &lt;a href="https://hub.turnkeylinux.org/tour/cloud/"&gt;Hub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
	OpenStack is particularly interesting, because as it is &lt;a href="http://www.turnkeylinux.org/blog/why-rackspace-opensourced-openstack"&gt;most likely&lt;/a&gt; the future of open source clouds.&lt;/p&gt;
&lt;p&gt;
	I originally got intrigued when I heard about &lt;a href="http://nebula.nasa.gov/blog/2009/11/16/lowering-barrier-open-source/"&gt;NASA planning to open source Nebula in 2009&lt;/a&gt;, which has become the basis for Nova, the compute component in OpenStack. Since then, I&amp;#39;ve been following OpenStack development from a far and have been itching to develop support for TurnKey on the platform.&lt;/p&gt;
&lt;p&gt;
	The time has finally arrived, and I&amp;#39;m pleased to announce TurnKey optimized builds are hot out of our build farm, and available for immediate download and deployment.&lt;/p&gt;
&lt;p&gt;
	You can get them from the &amp;quot;Download -&amp;gt; More Builds&amp;quot; link on the appliance pages.&lt;/p&gt;
&lt;h2&gt;
	TurnKey OpenStack optimized builds&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;
		&lt;strong&gt;EBS auto-mounting support:&lt;/strong&gt;&amp;nbsp;we&amp;#39;ve updated our custom &lt;a href="http://www.turnkeylinux.org/blog/ebsmount"&gt;EBSmount&lt;/a&gt; mechanism for OpenStack, which automatically mounts EBS devices when attached.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Support for automating instance setup:&lt;/strong&gt;&amp;nbsp;via the &lt;a href="http://www.turnkeylinux.org/blog/ec2-userdata"&gt;user-data&lt;/a&gt; scripts mechanism.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Automatic APT configuration on boot:&lt;/strong&gt; saves bandwidth costs by using the &lt;a href="http://www.turnkeylinux.org/blog/auto-apt-archive"&gt;closest package archive&lt;/a&gt; for maximum performance.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;SSH key support:&lt;/strong&gt; instances that are launched with a key-pair will be configured accordingly.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;SSH host key fingerprints displayed in system log:&lt;/strong&gt; verification of server to prevent man-in-the-middle (mitm) attacks.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Randomly generated root password:&lt;/strong&gt; is set on first boot, and displayed in the system log **.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Randomly generated mysql/postgres passwords:&lt;/strong&gt; the MySQL root and/or PostgreSQL postgres passwords are set to to the same random password as root **.&lt;/li&gt;
	&lt;li&gt;
		&lt;strong&gt;Instance metadata python library and CLI:&lt;/strong&gt; used internally, but useful for advanced users. (&lt;a href="http://www.turnkeylinux.org/blog/amazon-ec2-metadata"&gt;learn more&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	** Because OpenStack builds are used in headless deployments (without a console), they include an inithook which preseeds default values, and random passwords:&lt;/p&gt;
&lt;pre&gt;
&lt;strong&gt;/usr/lib/inithooks/firstboot.d/29preseed&lt;/strong&gt;

MASTERPASS=$(mcookie | cut --bytes 1-8)

cat&amp;gt;$INITHOOKS_CONF&amp;lt;&amp;lt;EOF
export ROOT_PASS=$MASTERPASS
export DB_PASS=$MASTERPASS
export APP_PASS=turnkey
export APP_EMAIL=admin@example.com
export APP_DOMAIN=DEFAULT
export HUB_APIKEY=SKIP
export SEC_UPDATES=FORCE
&lt;/pre&gt;
&lt;p&gt;
	Depending on your use case, you can utilize user-data (note the security implications) to preseed during boot, or once the system has booted by executing &lt;strong&gt;turnkey-init&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
	Exemplary import of TurnKey Core on OpenStack&lt;/h2&gt;
&lt;p&gt;
	There are several ways of uploading an image into an OpenStack deployment, below is one way to get you started.&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;
# cd /tmp
# tar -zxf turnkey-core-11.3-lucid-x86-openstack.tar.gz
# ls turnkey-core-11.3-lucid-x86
    turnkey-core-11.3-lucid-x86-initrd
    turnkey-core-11.3-lucid-x86-kernel
    turnkey-core-11.3-lucid-x86.img

# IMG=turnkey-core-11.3-lucid-x86

# glance add -A $GLANCE_TOKEN \
    is_public=true \
    container_format=aki \
    disk_format=aki \
    name=&amp;quot;$IMG-kernel&amp;quot; \
    &amp;lt; /tmp/$IMG/$IMG-kernel

&lt;em&gt;Added new image with ID: 5&lt;/em&gt;

# KERNEL_ID=5

# glance add -A $GLANCE_TOKEN \
    is_public=true \
    container_format=ami \
    disk_format=ami \
    kernel_id=$KERNEL_ID \
    name=&amp;quot;$IMG&amp;quot; \
    &amp;lt; /tmp/$IMG/$IMG.img

&lt;em&gt;Added new image with ID: 6&lt;/em&gt;

# glance -A $GLANCE_TOKEN index

&lt;em&gt;ID  Name                                Disk Format  Container Format  Size
--  ----------------------------------  -----------  ----------------  ---------
6   turnkey-core-11.3-lucid-x86         ami          ami               688498688
5   turnkey-core-11.3-lucid-x86-kernel  aki          aki               4179712
&lt;/em&gt;
# euca-describe-images

&lt;em&gt;IMAGE   ami-00000006    turnkey-core-11.3-lucid-x86         available  public                  machine aki-00000005
IMAGE   aki-00000005    turnkey-core-11.3-lucid-x86-kernel  available  public                  kernel
&lt;/em&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/-C5VISN4JRM" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/announcing-openstack-builds#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/appliances">appliances</category>
 <category domain="http://www.turnkeylinux.org/blog/openstack">openstack</category>
 <pubDate>Wed, 01 Feb 2012 11:51:51 +0000</pubDate>
 <dc:creator>Alon Swartz</dc:creator>
 <guid isPermaLink="false">3109 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/announcing-openstack-builds</feedburner:origLink></item>
  <item>
    <title>Announcing TurnKey OpenVZ optimized builds (+ Proxmox VE channel)</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/HxMYKHYeg-I/openvz-proxmox</link>
    <description>&lt;p&gt;
	OpenVZ and Proxmox VE has been a recurring topic of discussion on the forums, for which we have Jeremy to &lt;strike&gt;blame&lt;/strike&gt; thank. He&amp;#39;s done tons of research, testing, preaching, and then some.&lt;/p&gt;
&lt;p&gt;
	What I love about Open Source is that if you have an itch, and the drive to scratch it yourself, you can.&lt;/p&gt;
&lt;p&gt;
	That&amp;#39;s exactly what &lt;a href="http://www.turnkeylinux.org/users/jedmeister"&gt;Jeremy&lt;/a&gt; and &lt;a href="http://www.turnkeylinux.org/users/adrianmoya"&gt;Adrian&lt;/a&gt;&amp;nbsp;did. They wanted OpenVZ optimized builds for their Proxmox VE deployments, so they developed a &lt;a href="http://www.turnkeylinux.org/forum/general/20101208/creating-openvz-templates-leveraging-tklpatch"&gt;TKLPatch&lt;/a&gt; that would convert an ISO into an OpenVZ container. And if that wasn&amp;#39;t enough, took the time to upload some of the builds to sourceforge so it would be easier for others to leverage their work.&lt;/p&gt;
&lt;p&gt;
	Hats off to you guys, you rock!&lt;/p&gt;
&lt;h2&gt;
	TurnKey OpenVZ optimized builds&lt;/h2&gt;
&lt;p&gt;
	Based on Adrian&amp;#39;s and Jeremy&amp;#39;s work, we were able to add OpenVZ support to our build infrastructure in no time, and after some initial testing, triggered the whole appliance library to be built as optimized OpenVZ containers.&lt;/p&gt;
&lt;p&gt;
	You can get them from the &amp;quot;Download -&amp;gt; More Builds&amp;quot; link on the appliance pages.&lt;/p&gt;
&lt;h3&gt;
	Pre-seeding / default passwords&lt;/h3&gt;
&lt;p&gt;
	Because OpenVZ builds are used in headless deployments (without a console), they include an inithook which preseeds default values and passwords (excluding the root password which is handled by the VZ CLI tools).&lt;/p&gt;
&lt;pre&gt;
&lt;strong&gt;/usr/lib/inithooks/firstboot.d/29preseed&lt;/strong&gt;

DB_PASS=turnkey
APP_PASS=turnkey
APP_EMAIL=admin@example.com
APP_DOMAIN=DEFAULT
HUB_APIKEY=SKIP
SEC_UPDATES=FORCE&lt;/pre&gt;
&lt;p&gt;
	Depending on your use case, you can &lt;a href="http://www.turnkeylinux.org/docs/inithooks"&gt;preseed&lt;/a&gt; the values before the system is booted for the first time, or once the system has booted by executing &lt;strong&gt;turnkey-init&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
	&lt;em&gt;It would be great if someone would add preseeding support to PVE...&amp;nbsp;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
	TurnKey Proxmox VE channel&lt;/h2&gt;
&lt;p&gt;
	A while back the Proxmox folks came up with the &lt;a href="http://www.turnkeylinux.org/forum/general/20091109/tkl-master-server-aka-virtual-environment#comment-2960"&gt;idea&lt;/a&gt; of adding a TurnKey channel to PVE, to allow users to download TKL appliances in the same way their custom built appliances are downloaded.&lt;/p&gt;
&lt;p&gt;
	It was a great idea, but unfortunately it &lt;a href="http://www.turnkeylinux.org/forum/general/20091109/tkl-master-server-aka-virtual-environment#comment-3505"&gt;never got off the ground&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
	As I mentioned above, the great thing about Open Source is that you can scratch your own itch, and I was curious how the channel mechanism worked - so I dived in. When I came up for air I had added minimal third party channel support and a TurnKey Linux channel (&lt;a href="https://github.com/turnkeylinux/pve-patches"&gt;github&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;
	What this basically means is you can now download and deploy any TurnKey appliance on your PVE server in a couple of clicks without leaving your browser.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="proxmox turnkey channel" src="/files/images/blog/proxmox-turnkey.png" style="width: 640px; height: 1100px; " /&gt;&lt;/p&gt;
&lt;p&gt;
	I hope to see this integrated in the upcoming PVE 2.0 release. If you&amp;#39;re running PVE 1.9 then you can add the TurnKey channel as follows:&lt;/p&gt;
&lt;pre&gt;
cd /usr/share/perl5/PVE
mv APLInfo.pm APLInfo.pm.bak
wget &lt;a href="https://raw.github.com/turnkeylinux/pve-patches/master/PVE/APLInfo.pm" title="https://raw.github.com/turnkeylinux/pve-patches/master/PVE/APLInfo.pm"&gt;https://raw.github.com/turnkeylinux/pve-patches/master/PVE/APLInfo.pm&lt;/a&gt;

# update appliance list
pveam update
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/HxMYKHYeg-I" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/openvz-proxmox#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/appliances">appliances</category>
 <category domain="http://www.turnkeylinux.org/blog/openvz">openvz</category>
 <category domain="http://www.turnkeylinux.org/blog/proxmox">proxmox</category>
 <pubDate>Mon, 16 Jan 2012 14:30:41 +0000</pubDate>
 <dc:creator>Alon Swartz</dc:creator>
 <guid isPermaLink="false">3068 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/openvz-proxmox</feedburner:origLink></item>
  <item>
    <title>The DDoS spam bot from hell (a suburb of China)</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/CC3MyxA4_RA/spammers-are-scum</link>
    <description>&lt;p&gt;
	Happy new year everyone,&lt;/p&gt;
&lt;p&gt;
	I&amp;#39;m back online to put out a fire. My inbox was full of alerts that the CPU on the server that runs the site was maxing out.&lt;/p&gt;
&lt;p&gt;
	Well boys and girls, it turns out &lt;a href="http://www.turnkeylinux.org" title="www.turnkeylinux.org"&gt;www.turnkeylinux.org&lt;/a&gt; has been under an escalating distributed denial of service attack that started about two weeks ago. To the best of my knowledge the site continued operating normally. We use a ton of caching. Did any of you notice a slowdown?&lt;/p&gt;
&lt;p&gt;
	Lucky for us the &amp;quot;attack&amp;quot; was braindead simple so it was easy to figure out what was happening and block the offending IPs. 32 nodes from 4 Chinese /16 network blocks which I sincerely hope aren't home to any TurnKey fans:&lt;/p&gt;
&lt;pre&gt;
60.169.73.186
222.186.24.101
60.169.78.19
60.169.75.168
61.160.232.38
222.186.26.164
60.169.78.57
60.169.78.174
61.160.232.22
60.169.78.193
60.169.78.177
222.186.25.134
60.169.78.15
60.169.78.52
60.169.75.50
60.169.78.54
61.160.232.39
60.169.78.7
61.160.232.58
61.160.232.4
61.160.232.10
60.169.75.161
60.169.78.42

&lt;/pre&gt;
&lt;p&gt;
	All using the same &lt;a href="http://en.wikipedia.org/wiki/User_agent"&gt;User Agent&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
	Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1&lt;/blockquote&gt;
&lt;p&gt;
	Supposedly identifies as Firefox but from the logs it&amp;#39;s transparent it isn&amp;#39;t behaving like a real browser. For example, a real browser gets CSS and image files. This just crawls all over the site and POSTs a zillion times the kind of predictable crap our spam filter blocks half-asleep.&lt;/p&gt;
&lt;p&gt;
	What does that sound like? Ah yes, a poorly programmed, incredibly persistent spam bot network from hell. None of the spam attempts went through our countermeasures but it still took up a ton of CPU time.&lt;/p&gt;
&lt;p&gt;
	Being naturally inquisitive I investigated the offending IPs and it turns out most of them are running a remotely exploitable version of SSH (SSH-2.0-OpenSSH_4.3). I&amp;#39;m half tempted to run metasploit to get into these systems and clean away the spambot software as a public service but that&amp;#39;s illegal and I&amp;#39;m a bit busy besides.&lt;/p&gt;
&lt;p&gt;
	Wouldn&amp;#39;t it be neat though if we had a net equivalent of the &lt;a href="http://en.wikipedia.org/wiki/Justice_League"&gt;Justice League&lt;/a&gt; to deal with the kind of lowlife scum who commandeer hapless machines to run very low quality spam software?&lt;/p&gt;
&lt;p&gt;
	Note that I tried doing the right thing and looked up the abuse contact for the network that was attacking us (and presumably thousands/millions of other sites) on &lt;a href="http://tools.whois.net/whoisbyip/"&gt;WHOIS&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;
person:         Jinneng Wang
address:        17/F, Postal Building No.120 Changjiang
address:        Middle Road, Hefei, Anhui, China
country:        CN
phone:          +86-551-2659073
fax-no:         +86-551-2659287
e-mail:         &lt;a href="mailto:wang@mail.hf.ah.cninfo.net"&gt;wang@mail.hf.ah.cninfo.net&lt;/a&gt;
nic-hdl:        JW89-AP
mnt-by:         MAINT-NEW
changed:        &lt;a href="mailto:wang@mail.hf.ah.cninfo.net"&gt;wang@mail.hf.ah.cninfo.net&lt;/a&gt; 19990818
source:         APNIC&lt;/pre&gt;
&lt;p&gt;
	Then instead of sending off an angry e-mail into the void I actually picked up the phone, dialed the number, and listened to some funky Chinese elevator music until some guy (Mr. Jinneng Wang I presume?) who didn&amp;#39;t speak English picked up and eventually hung up on me after an akward mutually incomprehensible exchange. Of course. How could it be any different?&lt;/p&gt;
&lt;p&gt;
	I don&amp;#39;t get it, what&amp;#39;s the point of putting up an abuse contact in the WHOIS records if the person listed doesn&amp;#39;t speak English? Just list the abuse contact in Mandarin and get it over with.&lt;/p&gt;
&lt;p&gt;
	Sometimes I feel like a character in a Neal Stephenson novel.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/CC3MyxA4_RA" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/spammers-are-scum#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/china">china</category>
 <category domain="http://www.turnkeylinux.org/blog/ddos">ddos</category>
 <category domain="http://www.turnkeylinux.org/blog/scum">scum</category>
 <category domain="http://www.turnkeylinux.org/blog/spam">spam</category>
 <pubDate>Fri, 30 Dec 2011 14:50:32 +0000</pubDate>
 <dc:creator>Liraz Siri</dc:creator>
 <guid isPermaLink="false">3019 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/spammers-are-scum</feedburner:origLink></item>
  <item>
    <title>Mapping AWS data centers for fastest connection </title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/VcLhpGgDrSw/aws-datacenters</link>
    <description>&lt;p&gt;
	&lt;em&gt;Yes, that&amp;#39;s &amp;#39;fastest&amp;#39;, not closest.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
	Background&lt;/h2&gt;
&lt;p&gt;
	A while back I published a blog post entitled&amp;nbsp;&lt;a href="http://www.turnkeylinux.org/blog/geoip-amazon-regions"&gt;Finding the closest data center using GeoIP and indexing&lt;/a&gt;, which described how we automatically determine the AWS regional data center to be used for storing encrypted&amp;nbsp;&lt;a href="https://hub.turnkeylinux.org/tour/backup/"&gt;server backups&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
	We used the same solution to determine the preferred region when launching &lt;a href="https://hub.turnkeylinux.org/tour/cloud/"&gt;cloud servers&lt;/a&gt;&amp;nbsp;in the Hub,&amp;nbsp;as well as selecting the &lt;a href="http://www.turnkeylinux.org/blog/auto-apt-archive"&gt;closest APT package archive&lt;/a&gt;&amp;nbsp;for all TurnKey deployments.&lt;/p&gt;
&lt;h2&gt;
	New and improved&lt;/h2&gt;
&lt;p&gt;
	Since the original publication, Amazon built new regional data centers in Oregon, Sao Paulo and Tokyo, so the indexes needed to be updated.&lt;/p&gt;
&lt;p&gt;
	While adding support for the new regions I decided to take it a step further and add some improvements.&lt;/p&gt;
&lt;h3&gt;
	Improvement #1: Automatic association (distance)&lt;/h3&gt;
&lt;p&gt;
	The method originally used to perform automatic association of countries/states to data centers was lacking some what and needed to be improved.&lt;/p&gt;
&lt;p&gt;
	We are now using the &lt;a href="http://en.wikipedia.org/wiki/Haversine_formula"&gt;Haversine formula&lt;/a&gt;, which is used to determine great-circle distances between two points on a sphere from their longitudes and latitudes.&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="haversine1" src="/files/images/blog/haversine1.png" style="width: 593px; height: 48px; " /&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="haversine2" src="/files/images/blog/haversine2.png" style="width: 312px; height: 43px; " /&gt;&lt;br /&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;
	Improvement #2: Incorporated world wide underwater cables (latency)&lt;/h3&gt;
&lt;p&gt;
	Originally we relied on user feedback of connection latency to tweak the indexes. This didn&amp;#39;t scale very well, so we needed a way to make it easier.&lt;/p&gt;
&lt;p&gt;
	Based on &lt;a href="http://www.cablemap.info/"&gt;Gregs Cable map&lt;/a&gt;, we could mashup the automatic associations and tweak the index overrides based on expected latency.&lt;/p&gt;
&lt;p&gt;
	It turns out that this was a crucial part of the equasion, as a user might be physically closer to data center X, but in reality the connection to data center Y is faster. For example, previously Australia was allocated to Singapore but has been moved to California as the pipe is much fatter (see the visual map below).&lt;/p&gt;
&lt;h3&gt;
	Improvement #3: Open source&lt;/h3&gt;
&lt;p&gt;
	We originally published the indexes, but have now open sourced the whole project on &lt;a href="https://github.com/turnkeylinux/aws-datacenters"&gt;github&lt;/a&gt;&amp;nbsp;in hope that others might find it useful, and make collaboration easier.&lt;/p&gt;
&lt;h2&gt;
	Putting it all together&lt;/h2&gt;
&lt;p&gt;
	The below screenshot plots countries/states to their associated AWS regional data centers, and overlays the world wide underwater cables for reference:&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="aws-datacenters-mashup" src="/files/images/blog/aws-datacenters.jpg " style="width: 640px; height: 331px; " /&gt;&lt;/p&gt;
&lt;p&gt;
	Want to zoom in? Toggle active and future cables? Check out the &lt;a href="http://turnkeylinux.github.com/aws-datacenters"&gt;live mashup&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/VcLhpGgDrSw" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/aws-datacenters#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/amazon">amazon</category>
 <category domain="http://www.turnkeylinux.org/blog/aws">aws</category>
 <category domain="http://www.turnkeylinux.org/blog/ec2">ec2</category>
 <category domain="http://www.turnkeylinux.org/blog/s3">s3</category>
 <pubDate>Thu, 29 Dec 2011 12:25:00 +0000</pubDate>
 <dc:creator>Alon Swartz</dc:creator>
 <guid isPermaLink="false">3013 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/aws-datacenters</feedburner:origLink></item>
  <item>
    <title>TurnKey 11.3 maintenance release - next stop Ubuntu 12.04!</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/nTBuv70ryZ8/turnkey-11.3</link>
    <description>&lt;p&gt;
	Ho ho ho, happy holidays everyone! I know most of you are already shifting into holiday mode, so I&amp;#39;ll keep it short and sweet.&lt;/p&gt;
&lt;p&gt;
	We&amp;#39;ve just pushed out TurnKey 11.3 - the final maintenance release based on Ubuntu 10.04. The next release will be based on Ubuntu 12.04. We&amp;#39;re already shifting into high gear for that. There will be surprises. Hopefully good ones!&lt;/p&gt;
&lt;p&gt;
	Anyhow the new images we just pushed out from our &lt;a class="reference external" href="http://www.turnkeylinux.org/blog/introducing-cloudtask"&gt;CloudTask&lt;/a&gt; automation swarm include &lt;a href="http://www.turnkeylinux.org/updates/core/new-turnkey-core-version-113"&gt;fixes&lt;/a&gt; for various &lt;a class="reference external" href="http://www.turnkeylinux.org/forum/support/20111111/etckeeper-has-huge-git-repo-how-remove"&gt;bruises&lt;/a&gt; and scrapes, as well as the very latest security updates.&lt;/p&gt;
&lt;p&gt;
	If you&amp;#39;ve already installed a previous version of TurnKey 11, you don&amp;#39;t need to download anything because by default TurnKey is configured to automatically install all of the security updates over the network.&lt;/p&gt;
&lt;p&gt;
	The maintenance release will mainly be of interest to new users and existing users doing new deployments. Especially those of you who are super impatient like mua and don&amp;#39;t care to wait long minutes after deployment for the system to pull over a ton of security updates. This cuts down the time it takes to fully deploy Core in the cloud from 5 minutes to just 30 seconds.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/nTBuv70ryZ8" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/turnkey-11.3#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/appliances">appliances</category>
 <category domain="http://www.turnkeylinux.org/blog/news">news</category>
 <category domain="http://www.turnkeylinux.org/blog/ubuntu">ubuntu</category>
 <pubDate>Tue, 06 Dec 2011 07:34:59 +0000</pubDate>
 <dc:creator>Liraz Siri</dc:creator>
 <guid isPermaLink="false">2918 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/turnkey-11.3</feedburner:origLink></item>
  <item>
    <title>New Hub feature: Cloud server monitoring</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/dDjUlyKDmY4/hub-metrics</link>
    <description>&lt;p&gt;
	Ladies and gentle geeks, I&amp;#39;m proud to announce we&amp;#39;ve just pushed out 100%&amp;nbsp;free basic server monitoring to all &lt;a href="https://hub.turnkeylinux.org"&gt;TurnKey Hub&lt;/a&gt; accounts. This should make it easier to keep tabs on the health and performance of your cloud servers. Existing Hub users don&amp;#39;t need to do anything to enjoy this new feature. It just works.&lt;/p&gt;
&lt;h2&gt;
	A better server dashboard&lt;/h2&gt;
&lt;p&gt;
	As you can see in the screenshot below, the server dashboard now includes thumbnail graphs of CPU utilization, disk IO and network traffic for the last hour:&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="Hub dashboard metric thumbnails" src="/files/images/blog/metrics-dash.png" style="width: 640px; height: 294px; " /&gt;&lt;/p&gt;
&lt;!--break--&gt;
&lt;h2&gt;
	Give me more!&lt;/h2&gt;
&lt;p&gt;
	Alright, so instead of the last hour, you want data on how your server was doing last night? Or last week? No problem.&amp;nbsp;CloudWatch samples performance at 5 minute intervals, and stores up to two weeks worth of data.&lt;/p&gt;
&lt;meta content="text/html; charset=utf-8" http-equiv="content-type" /&gt;
&lt;p&gt;
	Clicking on the thumbnail graph pops up a larger interactive graph that lets you zoom in and out, sample performance metrics ondifferent timescales (e.g., hourly, daily, weekly, etc.) and move back and forward in time:&lt;/p&gt;
&lt;p&gt;
	&lt;img alt="Hub detailed metrics" src="/files/images/blog/metrics-detailed.png" style="width: 640px; height: 326px; " /&gt;&lt;/p&gt;
&lt;h2&gt;
	No installation, monitoring agents required&lt;/h2&gt;
&lt;p&gt;
	You don&amp;#39;t need to install or configure any monitoring agents, because the Hub pulls statistics directly from Amazon&amp;#39;s &lt;a href="http://docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/"&gt;CloudWatch API&lt;/a&gt;. CloudWatch in turn gets its data directly from the virtualized hardware layer running underneath your server&amp;#39;s operating system.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/dDjUlyKDmY4" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/hub-metrics#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/aws">aws</category>
 <category domain="http://www.turnkeylinux.org/blog/cloud">cloud</category>
 <category domain="http://www.turnkeylinux.org/blog/ec2">ec2</category>
 <category domain="http://www.turnkeylinux.org/blog/hub">hub</category>
 <category domain="http://www.turnkeylinux.org/blog/monitoring">monitoring</category>
 <category domain="http://www.turnkeylinux.org/blog/news">news</category>
 <pubDate>Fri, 02 Dec 2011 02:15:11 +0000</pubDate>
 <dc:creator>Alon Swartz</dc:creator>
 <guid isPermaLink="false">2917 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/hub-metrics</feedburner:origLink></item>
  <item>
    <title>Why Rackspace open sourced OpenStack</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/b7oQirGVGSE/why-rackspace-opensourced-openstack</link>
    <description>&lt;p&gt;
	Making TurnKey easy to deploy on as many public and private clouds is an important goal for us. We&amp;#39;re going to soon be expanding the number of image formats TurnKey officially support to include more major contenders in this space. We&amp;#39;d also like to establish a mirror network that supports rsync so that service providers will find it easy to get up-to-date images of all TurnKey appliances. By the way, if an rsync mirror is something you would find valuable, drop me a line.&lt;/p&gt;
&lt;p&gt;
	Unfortunately there are too many players in the cloud software space for us to support every single one. It&amp;#39;s much easier to put effort into making TurnKey work well with the winning horses. OpenStack is particularly interesting, because as I&amp;#39;ve said before it is most likely the future of open source clouds.&lt;/p&gt;
&lt;p&gt;
	It was a very interesting move on RackSpace&amp;#39;s part to put their weight behind the commoditization of cloud technology. You&amp;#39;d think after all of the effort and money they invested in developing their own cloud technology they&amp;#39;d want to keep it for themselves. Instead they form an alliance with their competitors and decide to give it away.&lt;/p&gt;
&lt;p&gt;
	My take on this is that this is in fact a very smart move, but not necessarily for the official reasons RackSpace made public.&lt;/p&gt;
&lt;p&gt;
	You see, well before OpenStack there was a fury of open source activity in this space and a few years down the road one of these projects (e.g., before OpenStack, Eucalyptus was my favorite candidate) would have inevitably become the &amp;quot;Linux&amp;quot; of cloud. This would have left RackSpace stuck with the costs of developing their own proprietary cloud operating system and robbed them of the ability to ride the wave of free innovation that almost magically happens once an open source project gathers enough momentum.&lt;/p&gt;
&lt;p&gt;
	I think RackSpace realized, hey if it&amp;#39;s going to happen anyway, we might as well lead the camp. I suspect this is a strong indicator that RackSpace really do believe their competitive advantage is based on branding, corporate culture (e.g., &amp;quot;fanatical support&amp;quot;) and economies of scale rather than software development, which in this case is just a cost they would love to share with the community. They&amp;#39;re probably right!&lt;/p&gt;
&lt;p&gt;
	Also, having internal clouds run on the same platform as RackSpace&amp;#39;s cloud will make interoperability much easier, unlocking a huge source of revenue as corporations finally begin trusting cloud providers, but not just any cloud provider, to offload (or outsource) their own internal IT infrastructure. Interesting how open source collaboration as a tool for reducing costs and commoditizing key technology components can make sense even to a large profit-oriented company. It doesn't have to be about the ideology, and these days I think it usually isn't - it just makes business cents.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/b7oQirGVGSE" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/why-rackspace-opensourced-openstack#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/opensource">opensource</category>
 <category domain="http://www.turnkeylinux.org/blog/openstack">openstack</category>
 <category domain="http://www.turnkeylinux.org/blog/rackspace">rackspace</category>
 <pubDate>Wed, 30 Nov 2011 13:19:18 +0000</pubDate>
 <dc:creator>Liraz Siri</dc:creator>
 <guid isPermaLink="false">2788 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/why-rackspace-opensourced-openstack</feedburner:origLink></item>
  <item>
    <title>How TKLBAM hooks work</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/0H8eelgnHuc/tklbam-hooks</link>
    <description>&lt;p&gt;
	Most TKLBAM users probably don&amp;#39;t realize this, but TKLBAM has a nifty, general purpose hooks mechanism you can use to trigger useful actions on backup and restore.&lt;/p&gt;
&lt;p&gt;
	Examples of hooks:&lt;/p&gt;
&lt;ul class="simple"&gt;
	&lt;li&gt;
		Cleaning up temporary files&lt;/li&gt;
	&lt;li&gt;
		Stopping/starting services to increase data consistency&lt;/li&gt;
	&lt;li&gt;
		Encoding/decoding data from non-supported databases&lt;/li&gt;
	&lt;li&gt;
		Using LVM to create/restore a snapshot of a fast changing volume&lt;/li&gt;
&lt;/ul&gt;
&lt;!--break--&gt;
&lt;p&gt;
	Originally I developed the hooks mechanism so we could fix a few issues indirectly related to the usability of TKLBAM. In particular, our very first beta users reported that sometimes tklbam-restore would fail to find any backup volumes. When we investigated this turned out to be a clock discrepancy. The obvious solution was to sync the clock before starting the restore, but the more I thought about it the more the idea of hardwiring that ntpdate stuff rubbed me the wrong way. For a few reasons:&lt;/p&gt;
&lt;ul class="simple"&gt;
	&lt;li&gt;
		It&amp;#39;s an auxiliary problem, not a core issue with TKLBAM&amp;#39;s logic&lt;/li&gt;
	&lt;li&gt;
		I&amp;#39;m offline much of the time during development so I needed some way to turn this off, but I don&amp;#39;t want to add more testing-specific code unless it&amp;#39;s absolutely necessary.&lt;/li&gt;
	&lt;li&gt;
		It&amp;#39;s OK if a specific server (e.g., pool.ntp.org) is the default, but there should be some way to configure it if a user, for example, wants to use an internal NTP server.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
	I tried to think of a clean way to achieve these simple goals in a clean way (e.g., cli options, environment variables, configuration files), but everything I came up with was just so darn ugly.&lt;/p&gt;
&lt;p&gt;
	Then I realized that a hooks mechanism would solve this problem in a simple, generic way.&lt;/p&gt;
&lt;div class="section" id="implementation"&gt;
	&lt;h2&gt;
		Implementation&lt;/h2&gt;
	&lt;p&gt;
		/etc/tklbam/hooks.d may contains executables (e.g., scripts) that will be run by tklbam before and after two operations (currently):&lt;/p&gt;
	&lt;ol class="arabic simple"&gt;
		&lt;li&gt;
			backup&lt;/li&gt;
		&lt;li&gt;
			restore&lt;/li&gt;
	&lt;/ol&gt;
	&lt;p&gt;
		Two arguments are passed to the hooks:&lt;/p&gt;
	&lt;ol class="arabic simple"&gt;
		&lt;li&gt;
			operation: restore/backup&lt;/li&gt;
		&lt;li&gt;
			state: pre/post&lt;/li&gt;
	&lt;/ol&gt;
	&lt;p&gt;
		Non zero exitcodes raise a HookError is raised.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="advantages"&gt;
	&lt;h2&gt;
		Advantages&lt;/h2&gt;
	&lt;p&gt;
		In one stroke, solve the clock problem and also lets advanced users define their own hooks to take care of things TKLBAM doesn&amp;#39;t (e.g., stopping IO intensive processes before backup, encoding/decoding unsupported databases, etc.)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="example-fixclock-hook"&gt;
	&lt;h2&gt;
		Example fixclock hook&lt;/h2&gt;
	&lt;pre class="literal-block"&gt;
	#!/usr/bin/python
# hook that runs ntpdate before duplicity to sync clock to UTC

import os
import sys
import executil
from string import Template

NTPSERVER = os.environ.get(&amp;quot;NTPSERVER&amp;quot;, &amp;quot;pool.ntp.org&amp;quot;)

ERROR_TPL = &amp;quot;&amp;quot;&amp;quot;\
##########################
## FIXCLOCK HOOK FAILED ##
##########################

Amazon S3 and Duplicity need a UTC synchronized clock so we invoked the
following command::

    $COMMAND

Unfortunately, something went wrong...

$ERROR
&amp;quot;&amp;quot;&amp;quot;

def fixclock():
    command = &amp;quot;ntpdate -u &amp;quot; + NTPSERVER

    try:
        executil.getoutput(command)
    except executil.ExecError, e:
        msg = Template(ERROR_TPL).substitute(COMMAND=command,
                                             ERROR=e.output)

        print &amp;gt;&amp;gt; sys.stderr, msg,
        sys.exit(1)

def main():
    op, state = sys.argv[1:]

    if op in (&amp;#39;restore&amp;#39;, &amp;#39;backup&amp;#39;) and state == &amp;#39;pre&amp;#39;:
        fixclock()

if __name__ == &amp;quot;__main__&amp;quot;:
    main()
&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/0H8eelgnHuc" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/tklbam-hooks#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/advanced">advanced</category>
 <category domain="http://www.turnkeylinux.org/blog/tklbam">tklbam</category>
 <pubDate>Wed, 23 Nov 2011 10:47:11 +0000</pubDate>
 <dc:creator>Liraz Siri</dc:creator>
 <guid isPermaLink="false">2780 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/tklbam-hooks</feedburner:origLink></item>
  <item>
    <title>On my Kindle I am root</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/ZqeVHB36wUw/kindle-root</link>
    <description>&lt;div class="section" id="starting-from-the-end"&gt;
	&lt;p class="rtecenter"&gt;
		&lt;img alt="" src="/files/images/blog/debian1.jpg" /&gt;&lt;/p&gt;
	&lt;h2&gt;
		Starting from the end&lt;/h2&gt;
	&lt;p&gt;
		That&amp;#39;s my Kindle in the screenshot running a full screen terminal. I&amp;#39;m about to run nmap (a network mapping program) inside a chrooted Debian ARM installation I put on the device. Having Debian on the device isn&amp;#39;t really necessary for hacking the Kindle but it does make it easier to install ARM binaries of just about any of the 25,000 packages in Debian. Yep, apt-get works on my Kindle!&lt;/p&gt;
	&lt;p&gt;
		More practically I can now SSH into the device over the WIFI, use SFTP to transfer over new books without having to mess around with a USB cable, etc.&lt;/p&gt;
	&lt;p&gt;
		The device can still gets books from Amazon, but I&amp;#39;ve disabled its ability to auto-update firmware. Now that I control my device I&amp;#39;d like to keep it that way, even if there&amp;#39;s no immediate practical benefit.&lt;/p&gt;
	&lt;p&gt;
		Besides, it&amp;#39;s one thing to know on a theoretical level that the device runs Linux, and being able to see for yourself which processes are running:&lt;/p&gt;
	&lt;p class="rtecenter"&gt;
		&lt;img alt="" src="/files/images/blog/ps.jpg" style="width: 552px; height: 695px; " /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="background"&gt;
	&lt;h2&gt;
		Rewinding back to the beginning&lt;/h2&gt;
	&lt;p&gt;
		Besides my workstation, my Kindle is the device I use the most. By far.&lt;/p&gt;
	&lt;p&gt;
		So much that it&amp;#39;s almost wearable computing by now. When I take a break I stick it in my pocket and have &lt;a href="http://www.kindicted.com/2010/02/kindle-text-to-speech-dissected-part-1.html"&gt;Tom Glynn&lt;/a&gt;&amp;#39;s synthesized voice quickly humming whatever I&amp;#39;m reading to me while my hands are free to eat my meals, take care of boring errands, etc.&lt;/p&gt;
	&lt;p&gt;
		It&amp;#39;s maybe the only mobile device I feel has unambiguously improved my quality of life in a net positive way (I&amp;#39;ll leave my gripes with smart phones for another time).&lt;/p&gt;
	&lt;p&gt;
		My only major concern with the Kindle is that I&amp;#39;m not supposed to have full control over it:&lt;/p&gt;
	&lt;ul&gt;
		&lt;li&gt;
			&lt;p class="first"&gt;
				If it&amp;#39;s connected to a network, Amazon can update my firmware remotely at any time without asking me first, possibly changing the device&amp;#39;s behavior in undesirable ways. They can spy on my reading (how would I know?), delete my books, etc.&lt;/p&gt;
		&lt;/li&gt;
		&lt;li&gt;
			&lt;p class="first"&gt;
				I can&amp;#39;t customize its behavior. I keep having these ideas on little features that would make the device even more useful to me but probably wouldn&amp;#39;t make sense for the average user. I don&amp;#39;t expect Amazon (or any other consumer company for that matter) to design a product that fits perfectly with my needs out of the box.&lt;/p&gt;
		&lt;/li&gt;
		&lt;li&gt;
			&lt;p class="first"&gt;
				I know there&amp;#39;s Linux under the hood and I want root on it. On principle dammit!&lt;/p&gt;
			&lt;p&gt;
				OK, maybe not just on principle. The Kindle is a very low cost, super lightweight, ARM Linux machine with an eInk display that can be easily read in bright sunlight, a great text-to-speech system, amazing battery life, WIFI / 3G access, a nice bit of storage, sound output and even a hidden microphone. There are endless creative off-label things you could do with it.&lt;/p&gt;
			&lt;p&gt;
				Considering all the features packed into the Kindle the price is jaw dropping. Amazon probably isn&amp;#39;t making a profit on the hardware. Heck the &amp;quot;special offers&amp;quot; Kindle now costs just $79. That&amp;#39;s $20 less the $99 ARM SheevaPlug which doesn&amp;#39;t have nearly as many features.&lt;/p&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;p&gt;
		So over the weekend I took a look and it turns out that since I last checked a nice Kindle hacking community has sprung up, discovered that the Kindle doesn&amp;#39;t have any real security, and made available all the tools you need to take full control over your device.&lt;/p&gt;
	&lt;p&gt;
		Kindle hacking is at its infancy but there&amp;#39;s already a pretty sweet list of homebrew hacks that let you for example, replace the dead people in your screensavers, change/add new fonts, etc.&lt;/p&gt;
	&lt;p&gt;
		I found everything online. Mostly on the excellent &lt;a href="http://www.mobileread.com/forums/forumdisplay.php?f=140"&gt;mobileread forums&lt;/a&gt; but it took time to make sense of it all. The documentation is often a somewhat confusing and dodgy patchwork so I took notes, tested what worked on my Kindle and figured it would be useful to summarize my &amp;quot;crystallized&amp;quot; understanding for the benefit of others who might want to go down the same road.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="rooting-your-kindle"&gt;
	&lt;h2&gt;
		Rooting your Kindle&lt;/h2&gt;
	&lt;p&gt;
		Under the hood Amazon&amp;#39;s firmware updates are just glorified shell scripts in a proprietary package format that contains an embedded Amazon signature.&lt;/p&gt;
	&lt;p&gt;
		The first thing we need to do to get control of the device is &amp;quot;jailbreak&amp;quot; it, which really just adds a &amp;quot;hacked&amp;quot; key to the keyring used to verify the package signature.&lt;/p&gt;
	&lt;div class="section" id="install-the-jailbreak"&gt;
		&lt;h3&gt;
			Install the Jailbreak&lt;/h3&gt;
		&lt;p&gt;
			&lt;a class="reference external" href="http://wiki.mobileread.com/wiki/Kindle_Screen_Saver_Hack_for_all_2.x_and_3.x_Kindles"&gt;http://wiki.mobileread.com/wiki/Kindle_Screen_Saver_Hack_for_all_2.x_and_3.x_Kindles&lt;/a&gt;&lt;/p&gt;
		&lt;p&gt;
			See the &amp;quot;How to install Jailbreak Hack&amp;quot; section.&lt;/p&gt;
		&lt;p&gt;
			Currently the latest version of the JailBreak is 0.7. To install it you just transfer over the bin that&amp;#39;s right for your version of the Kindle (I.e., update_jailbreak_0.7.N_k3w_install.bin = Kindle 3 Wifi) into the device root and then update the device:&lt;/p&gt;
		&lt;p&gt;
			Home &amp;gt; Settings &amp;gt; Menu &amp;gt; Update Kindle&lt;/p&gt;
		&lt;p&gt;
			Now you can install packages signed by a non-secret hacked key. The Jailbreak contains a whitelist of md5sums of known good hacks.&lt;/p&gt;
	&lt;/div&gt;
	&lt;div class="section" id="install-usbnet-hack"&gt;
		&lt;h3&gt;
			Install usbnet hack&lt;/h3&gt;
		&lt;p&gt;
			I downloaded the usbnet hack from an attachment on this forum thread:&lt;/p&gt;
		&lt;p&gt;
			&lt;a class="reference external" href="http://www.mobileread.com/forums/showthread.php?t=88004"&gt;http://www.mobileread.com/forums/showthread.php?t=88004&lt;/a&gt;&lt;/p&gt;
		&lt;p&gt;
			What&amp;#39;s usbnet?&lt;/p&gt;
		&lt;p&gt;
			The Kindle 2 has a hidden USB network mode, probably left over from development. When activated, the Kindle would behave as a USB network device rather than a USB mass storage device. This allowed you to do neat things such as tethering the device to your laptop.&lt;/p&gt;
		&lt;p&gt;
			Kindle 3 seems to have removed this feature, but the usbnet hack reactivates it and installs busybox (a micro shell environment), dropbear (a micro SSH server) and a few other utilities to allow you to SSH into your device and explore its insides.&lt;/p&gt;
		&lt;p&gt;
			After installation, usbnet creates a usbnet directory in your kindle root which contains its configuration files:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;$ cd /mnt/kindle/usbnet
$ find

./info.txt
./DISABLED_auto
./run
./run/telnetd.pid
./run/sshd.pid
./etc
./etc/dropbear_rsa_host_key
./etc/htoprc
./etc/dropbear_dss_host_key
./etc/config
./etc/terminfo
./etc/terminfo/x
./etc/terminfo/x/xterm
./etc/authorized_keys
./etc/bak
./etc/bak/dropbear_dss_host_key
./etc/bak/dropbear_rsa_host_key
./bin
./bin/busybox
./bin/usbnet-enable
./bin/dropbearmulti
./bin/usbnet-disable
./bin/usbnetwork
./bin/rsync
./bin/sftp-server
./bin/lsof
./bin/htop
./usbnetwork_install.log
&lt;/pre&gt;
		&lt;p&gt;
			Now we&amp;#39;ll unmount (I.e., &amp;quot;eject&amp;quot;) the Kindle from our computer, disconnect the USB connection to take it out of mass storage mode and enable usbnet mode.&lt;/p&gt;
		&lt;ul&gt;
			&lt;li&gt;
				&lt;p class="first"&gt;
					Press [DEL] on your Kindle to bring up the search bar and do the following &amp;quot;searches&amp;quot;:&lt;/p&gt;
				&lt;pre class="literal-block"&gt;;debugOn
~help # just for fun
~usbNetwork
;debugOff
&lt;/pre&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;
			The commands are not case sensitive. Usually you don&amp;#39;t want to stay in debugging mode because it turns off various power savings features such as turning off WIFI is your Kindle is not connected to the USB. Also, it turns on verbose logging.&lt;/p&gt;
		&lt;p&gt;
			Now when you connect your Kindle to your computer via USB, it isn&amp;#39;t recognized as a mass storage device but rather as a USB network device.&lt;/p&gt;
		&lt;p&gt;
			This is what dmesg says when I connect the Kindle in mass storage mode:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;[138591.847428] usb 8-1: new high speed USB device using ehci_hcd and address 45
[138592.000857] usb 8-1: configuration #1 chosen from 1 choice
[138592.004480] scsi24 : SCSI emulation for USB Mass Storage devices
[138592.004541] usb-storage: device found at 45
[138592.004556] usb-storage: waiting for device to settle before scanning
[138596.996774] usb-storage: device scan complete
[138596.997900] scsi 24:0:0:0: Direct-Access     Kindle   Internal Storage 0100 PQ: 0 ANSI: 2
[138597.003881] sd 24:0:0:0: [sdc] 6410688 512-byte hardware sectors (3282 MB)
[138597.109966] sd 24:0:0:0: [sdc] Write Protect is off
[138597.109973] sd 24:0:0:0: [sdc] Mode Sense: 0f 00 00 00
[138597.109976] sd 24:0:0:0: [sdc] Assuming drive cache: write through
[138597.113952] sd 24:0:0:0: [sdc] 6410688 512-byte hardware sectors (3282 MB)
[138597.219787] sd 24:0:0:0: [sdc] Write Protect is off
[138597.219792] sd 24:0:0:0: [sdc] Mode Sense: 0f 00 00 00
[138597.219794] sd 24:0:0:0: [sdc] Assuming drive cache: write through
[138597.219799]  sdc: sdc1
&lt;/pre&gt;
		&lt;p&gt;
			And here&amp;#39;s what dmesg says when I connect the Kindle in USB network mode:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;[138741.453693] usb 8-1: new high speed USB device using ehci_hcd and address 48
[138741.604690] usb 8-1: configuration #1 chosen from 2 choices
[138741.610967] usb0: register &amp;#39;cdc_ether&amp;#39; at usb-0000:00:1d.7-1, CDC Ethernet Device, ee:49:00:00:00:00
&lt;/pre&gt;
		&lt;p&gt;
			Note that with the usbnet hack, by default SSH only works over the USB host-to-host connection. SSH is configured not to ask for the root password so usbnet wisely disables SSH over WIFI for security reasons.&lt;/p&gt;
		&lt;p&gt;
			To safely turn SSH over WIFI on we&amp;#39;ll want to harden our Kindle first a bit. Setup SSH authentication, change the default keys and passwords and then reconfigure usbnet to allow SSH over WIFI.&lt;/p&gt;
		&lt;p&gt;
			We can configure this stuff in mass storage mode by editing files in usbnet/etc under the Kindle root, or via SSH on the usb host-to-host network. BTW, the kindle root you see in mass storage mode is is mounted to /mnt/us on the Kindle.&lt;/p&gt;
		&lt;p&gt;
			Anyhow, after connecting the Kindle to our computer in usbnet mode we have a new device, usb0 which we will configure to suit the default usbnet setup:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;$ sudo ifconfig usb0 192.168.2.1
$ ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=0.696 ms

--- 192.168.2.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.696/0.696/0.696/0.000 ms
&lt;/pre&gt;
		&lt;p&gt;
			Now let&amp;#39;s login to our Kindle for the first time:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;$ ssh 192.168.2.2
Welcome to Kindle!

#################################################
#  N O T I C E  *  N O T I C E  *  N O T I C E  #
#################################################
Rootfs is mounted read-only. Invoke mntroot rw to
switch back to a writable rootfs.
#################################################

[root@kindle root]# cat /proc/cpuinfo
Processor       : ARMv6-compatible processor rev 3 (v6l)
BogoMIPS        : 511.18
Features        : swp half thumb fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 6TEJ
CPU variant     : 0x1
CPU part        : 0xb36
CPU revision    : 3
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format C
Cache format    : Harvard
I size          : 16384
I assoc         : 4
I line length   : 32
I sets          : 128
D size          : 16384
D assoc         : 4
D line length   : 32
D sets          : 128

Hardware        : Amazon MX35 Luigi Board
Revision        : 35020
Serial          : &amp;quot;B008A0A0040298FC&amp;quot;
BoardId         : &amp;quot;SP1B000000000000&amp;quot;

[root@kindle root]# free
         total       used       free     shared    buffers     cached
Mem:        256536     151468     105068          0      15248 53372
-/+ buffers/cache:      82848     173688
Swap:            0          0          0

[root@kindle root]# mntroot rw
system: I mntroot:def:Making root filesystem writeable

[root@kindle root]# passwd root
Changing password for root
New password:
Retype password:

[root@kindle root]# cd /mnt/us
[root@kindle us]# ls
audible           documents         music             system
usbnet            linkjail
[root@kindle us]# cd usbnet/etc/
[root@kindle etc]# ls -l
-rwxr-xr-x    1 root     root          957 May 23 14:56 config
-rwxr-xr-x    1 root     root          458 May 23 01:54 dropbear_dss_host_key
-rwxr-xr-x    1 root     root          427 May 23 01:54 dropbear_rsa_host_key
-rwxr-xr-x    1 root     root          561 Oct 10  2010 htoprc
drwxr-xr-x    3 root     root         8192 May 22 20:59 terminfo

# setup my SSH key as an authorized key
[root@kindle etc]# echo ssh-rsa AAAAB3NzaC1yc2EAAAABIwAwAIEAvp+4FpjKlv1nsddevQtX8zMvQMkuJDwZSCHpFdm2IY20NmOhF0LY6dKRzQ+89pJ2MUYZYtotN1SmMk1ndUmHssQIRrmKKWdwnDzDUISTDB5iEQIg8JcPxwu6+uJnLrZvfNrx/fsMoRwRR3S9bHcKi9pxQT9T4Jbt+Gt6ewtuLAE= liraz@dev &amp;gt; authorized_keys
&lt;/pre&gt;
		&lt;p&gt;
			Note that with the usbnet hack, by default SSH doesn&amp;#39;t ask for the root password so it disables SSH over WIFI for security reasons.&lt;/p&gt;
		&lt;p&gt;
			In summary here&amp;#39;s what I did to enable SSH over WIFI safely:&lt;/p&gt;
		&lt;ol class="arabic"&gt;
			&lt;li&gt;
				&lt;p class="first"&gt;
					added my SSH key to usbnet/etc/authorized_keys (a new file).&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;p class="first"&gt;
					installed dropbear on my Ubuntu workstation (e.g,. apt-get install dropbear) and then recreated the dropbear host keys:&lt;/p&gt;
				&lt;pre class="literal-block"&gt;dropbearkey -t rsa -f rsa
dropbearkey -t dss -f dss

scp rsa 192.168.2.2:/mnt/us/usbnet/etc/dropbear_rsa_host_key
scp dss 192.168.2.2:/mnt/us/usbnet/etc/dropbear_dss_host_key
&lt;/pre&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;p class="first"&gt;
					edit usbnet/etc/config to change K3_WIFI field from false to true&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;p class="first"&gt;
					restart usbnet by toggling it off and back on with the hidden ~usbNetwork comand (from the search bar in ;debugOn mode).&lt;/p&gt;
			&lt;/li&gt;
		&lt;/ol&gt;
		&lt;p&gt;
			Test that you can still log into SSH via the usb0 connection. That means you&amp;#39;ve configured everything correctly.&lt;/p&gt;
		&lt;p&gt;
			Now turn on Wifi and see if you can log in over WIFI. You can find out the Kindle&amp;#39;s IP address by accessing the secret 711 network info screen:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;Home &amp;gt; Menu &amp;gt; Settings &amp;gt;

    # ALT + U Q Q
    711
&lt;/pre&gt;
		&lt;p&gt;
			As long as your Kindle is plugged into USB (in your computer or the power charger), it will remain accessible via WIFI even if the screensaver is active. In debugging mode the WIFI stays on even when your Kindle is not plugged in.&lt;/p&gt;
		&lt;p&gt;
			As is typical for embedded ARM devices the WIFI chip is usually sleeping to conserve power which makes for a slightly jittery interactive SSH session. Not too bad though.&lt;/p&gt;
		&lt;p&gt;
			For extra convenience, I configured my local WIFI router to bind the Kindle always to the same IP address (e.g., 10.0.0.15).&lt;/p&gt;
		&lt;p&gt;
			Keep in mind that your Kindle filters out ICMP pings on the WIFI so it won&amp;#39;t respond to a regular ping, but it will respond to arping:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;$ sudo arping 10.0.0.15
ARPING 10.0.0.15
42 bytes from ee:19:00:00:00:00 (10.0.0.15): index=0 time=1.777 msec
42 bytes from ee:19:00:00:00:00 (10.0.0.15): index=1 time=54.230 msec

$ nc -vv 10.0.0.15 22
10.0.0.15 22 (ssh) open
SSH-2.0-dropbear_0.53.1

$ ssh 10.0.0.15
Welcome to Kindle!

#################################################
#  N O T I C E  *  N O T I C E  *  N O T I C E  #
#################################################
Rootfs is mounted read-only. Invoke mntroot rw to
switch back to a writable rootfs.
#################################################

[root@kindle root]# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2496 (2.4 KiB)  TX bytes:2496 (2.4 KiB)

usb0      Link encap:Ethernet  HWaddr EE:19:00:00:00:00
          inet addr:192.168.2.2  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:647 errors:0 dropped:0 overruns:0 frame:0
          TX packets:428 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:53670 (52.4 KiB)  TX bytes:56067 (54.7 KiB)

wlan0     Link encap:Ethernet  HWaddr 28:EF:01:83:A1:2C
          inet addr:10.0.0.15  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3079 errors:0 dropped:0 overruns:0 frame:0
          TX packets:727 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:333515 (325.6 KiB)  TX bytes:57404 (56.0 KiB)

[root@kindle root]# netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address State
tcp        0      0 127.0.0.1:8784          0.0.0.0:* LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:* LISTEN
tcp        0      0 127.0.0.1:8022          0.0.0.0:* LISTEN
tcp        0      0 0.0.0.0:23              0.0.0.0:* LISTEN
tcp        0      0 0.0.0.0:40317           0.0.0.0:* LISTEN
tcp        0      0 10.0.0.15:22             10.0.0.10:41208 ESTABLISHED
tcp        0    496 10.0.0.15:22             10.0.0.10:41209 ESTABLISHED
tcp        0      0 192.168.2.2:22          192.168.2.1:48703 ESTABLISHED

[root@kindle root]# iptables --list
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:40317
ACCEPT     tcp  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere            state ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere            state ESTABLISHED
ACCEPT     all  --  localhost.localdomain  anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             localhost.localdomain
&lt;/pre&gt;
		&lt;p&gt;
			I transfered over a 50MB test file to test the transfer rate. With good connectivity I can get 1.5MB/s over the Wifi. The USB host-to-host is slightly faster at about 2MB/s, and the mass storage interface is fastest at 6MB/s.&lt;/p&gt;
	&lt;/div&gt;
	&lt;div class="section" id="transfering-kindle-ebooks-over-wifi-with-ssh-sftp"&gt;
		&lt;h3&gt;
			Transfering Kindle ebooks over Wifi with SSH/SFTP&lt;/h3&gt;
		&lt;p&gt;
			Example:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;scp path/to/ebook.prc 10.0.0.15:/mnt/us/documents
ssh 10.0.0.15 dbus-send --system /default com.lab126.powerd.resuming int32:1
&lt;/pre&gt;
		&lt;p&gt;
			That last command triggers Amazon to refresh the book list. After I got sick of cut and pasting it into the CLI I made it into a tiny script:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;cat &amp;gt; /usr/local/bin/hack-refresh &amp;lt;&amp;lt; EOF
#!/bin/sh
dbus-send --system /default com.lab126.powerd.resuming int32:1
EOF

chmod +x /usr/local/bin/hack-refresh
&lt;/pre&gt;
		&lt;p&gt;
			Note that in addition to its native AZW format, Amazon also supports txt, mobi, prc, mp3 and PDF files.&lt;/p&gt;
		&lt;p&gt;
			Unfortunately, the Kindle doesn&amp;#39;t support local HTML files natively but there&amp;#39;s a really sweet open source project called calibre for converting between ebooks formats.&lt;/p&gt;
		&lt;p&gt;
			Before Calibre, I also had some success with mobi pocket creator, a free as in beer program I experimented with in my Windows XP VM.&lt;/p&gt;
	&lt;/div&gt;
	&lt;div class="section" id="install-a-native-terminal-kiterm"&gt;
		&lt;h3&gt;
			Install a native terminal (kiterm)&lt;/h3&gt;
		&lt;p&gt;
			Luigi Rizzo wrote a standalone Kindle terminal you can use from within the device. I used a &lt;a class="reference external" href="http://www.mobileread.com/forums/showthread.php?t=125860"&gt;slightly patched version&lt;/a&gt; that works full screen.&lt;/p&gt;
		&lt;p&gt;
			It hasn&amp;#39;t been packaged into a Kindle *.bin file yet but installation was relatively straightforward thanks to a nice tutorial on TinyApps.&lt;/p&gt;
		&lt;p&gt;
			The short version:&lt;/p&gt;
		&lt;ol class="arabic"&gt;
			&lt;li&gt;
				&lt;p class="first"&gt;
					extract the zip file to /mnt/us/kiterm&lt;/p&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;p class="first"&gt;
					create an init script to launch it on startup:&lt;/p&gt;
				&lt;pre class="literal-block"&gt;cat&amp;gt;/etc/init.d/kiterm&amp;lt;&amp;lt;&amp;#39;EOF&amp;#39;
#! /bin/sh
# /etc/init.d/kiterm
case &amp;quot;$1&amp;quot; in
  start)
    echo &amp;quot;Starting kiterm &amp;quot;
    /mnt/us/kiterm/myts.arm &amp;amp;
    ;;
  stop)
    echo &amp;quot;Stopping kiterm &amp;quot;
    killall myts.arm
    ;;
  *)
    echo &amp;quot;Usage: /etc/init.d/kiterm
{start|stop}&amp;quot;
    exit 1
    ;;
esac
exit 0
EOF

ln -s /etc/init.d/kiterm /etc/rc5.d/S97kiterm
&lt;/pre&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;p class="first"&gt;
					reboot the Kindle (Menu &amp;gt; Settings &amp;gt; Menu &amp;gt; Restart)&lt;/p&gt;
			&lt;/li&gt;
		&lt;/ol&gt;
		&lt;p&gt;
			To access the Terminal you press Shift, let go and immediately press T.&lt;/p&gt;
		&lt;p&gt;
			The terminal configures various key bindings to make up for the all the missing keys missing from the Kindle&amp;#39;s limited keyboard. I saved the most common ones to a text file on my kindle for reference:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;[root@kindle root]# mntroot rw
system: I mntroot:def:Making root filesystem writeable
[root@kindle root]# cat&amp;gt;keys&amp;lt;&amp;lt;&amp;#39;EOF&amp;#39;
&amp;gt;     Ctrl = AA (aka Symbol)
&amp;gt;     Esc  = Left Next Page
&amp;gt;
&amp;gt;     .------------------------.     .----------------------.
&amp;gt;     | Key   Back  Back+Shift |     | Key   Alt  Alt+Shift |
&amp;gt;     +------------------------+     +----------------------+
&amp;gt;     |  Q      `        ~     |     |  Q     1      !      |
&amp;gt;     |  A     Tab   Back Tab  |     |  W     2      @      |
&amp;gt;     |  Z      &amp;lt;        &amp;gt;     |     |  E     3      #      |
&amp;gt;     |  U      -        _     |     |  R     4      $      |
&amp;gt;     |  I      =        +     |     |  T     5      %      |
&amp;gt;     |  O      [        {     |     |  Y     6      ^      |
&amp;gt;     |  P      ]        }     |     |  U     7      &amp;amp;      |
&amp;gt;     |  K      ;        :     |     |  I     8      *      |
&amp;gt;     |  L      &amp;#39;        &amp;quot;     |     |  O     9      (      |
&amp;gt;     | Del     \        |     |     |  P     0      )      |
&amp;gt;     |  .      ,        &amp;lt;     |     &amp;#39;----------------------&amp;#39;
&amp;gt;     | Sym     .        &amp;gt;     |
&amp;gt;     | Ret     /        ?     |
&amp;gt;     &amp;#39;------------------------&amp;#39;
&amp;gt; EOF
[root@kindle root]# mntroot ro
system: I mntroot:def:Making root filesystem read-only
&lt;/pre&gt;
	&lt;/div&gt;
	&lt;div class="section" id="preventing-amazon-from-auto-updating-your-firmware"&gt;
		&lt;h3&gt;
			Preventing Amazon from auto-updating your firmware&lt;/h3&gt;
		&lt;p&gt;
			As far as I can tell the easiest and surest way to prevent Amazon from auto-updating your Kindle is to knock out the keys it uses to verify the signatures:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;mv /etc/uks /etc/uks.disabled
&lt;/pre&gt;
		&lt;p&gt;
			Under the hood, the Kindle is programmed to get firmware updates automatically via the TODO service, which gives the Kindle a list of things to do including getting new books (or deleting existing books) and/or getting new firmware.&lt;/p&gt;
		&lt;p&gt;
			Some people in the community have gone as far as to change the URLs in the framework and pass them through a proxy server setup to selectively mirror Amazon&amp;#39;s TODO requests.&lt;/p&gt;
		&lt;pre class="literal-block"&gt;# grep http /opt/amazon/ebook/config/framework.fiona.conf
BASE_WEBSITE_URL: &lt;a href="http://www.amazon.com" title="http://www.amazon.com"&gt;http://www.amazon.com&lt;/a&gt;
CERT_SERVER_URL : &lt;a href="https://fras-g7g.amazon.com/FrasProxy/" title="https://fras-g7g.amazon.com/FrasProxy/"&gt;https://fras-g7g.amazon.com/FrasProxy/&lt;/a&gt;
REGISTER_SERVER_URL : &lt;a href="https://firs-g7g.amazon.com/FirsProxy/" title="https://firs-g7g.amazon.com/FirsProxy/"&gt;https://firs-g7g.amazon.com/FirsProxy/&lt;/a&gt;
TODO_SERVER=https://todo-g7g.amazon.com/FionaTodoListProxy/
CDE_SERVER=https://cde-g7g.amazon.com/FionaCDEServiceEngine/
&lt;/pre&gt;
	&lt;/div&gt;
	&lt;div class="section" id="uninstalling-hacks"&gt;
		&lt;h3&gt;
			Uninstalling hacks&lt;/h3&gt;
		&lt;p&gt;
			All the hacks I&amp;#39;ve come across so far come with an installer and uninstaller *.bin files. Just in case, I copy the uninstaller for the hacks I install to my Kindle&amp;#39;s root under &amp;quot;uninstallers&amp;quot;. That way I can always roll back hacks later if I want:&lt;/p&gt;
		&lt;pre class="literal-block"&gt;[root@kindle uninstallers]# cd /mnt/us/uninstallers
[root@kindle uninstallers]# ls
update_jailbreak_0.7.N_k3w_uninstall.bin
update_usbnetwork_0.33.N_k3w_uninstall.bin
&lt;/pre&gt;
	&lt;/div&gt;
	&lt;div class="section" id="further-reading"&gt;
		&lt;h3&gt;
			Further reading&lt;/h3&gt;
		&lt;ul class="simple"&gt;
			&lt;li&gt;
				&lt;a class="reference external" href="http://www.mobileread.com/forums/showthread.php?t=128704"&gt;A comprehensive list of hacks/mods&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;
				&lt;a class="reference external" href="http://xkid.biz/wordpress/?p=4"&gt;Debian on Kindle&lt;/a&gt;&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/div&gt;
	&lt;div class="section" id="stuff-i-still-haven-t-figured-out"&gt;
		&lt;h3&gt;
			Stuff I still haven&amp;#39;t figured out&lt;/h3&gt;
		&lt;ul class="simple"&gt;
			&lt;li&gt;
				How do I speed up the text-to-speech? Even at Amazon&amp;#39;s fastest default rate the Kidnle&amp;#39;s TTS voice isn&amp;#39;t speaking as fast as I can read with my eyes. Make it gI want it to go faster!&lt;/li&gt;
			&lt;li&gt;
				How do I replace the TTS voice? I&amp;#39;m hoping the Polish hacker that got his Kindle to speak in Polish will share more details on his &lt;a class="reference external" href="http://translate.google.com/translate?u=http%3A%2F%2Fforum.eksiazki.org%2Famazon-com-kindle-f146%2Fkindle-przemowil-po-polsku-czyli-nowy-tts-tutorial-t9817.html&amp;amp;hl=en&amp;amp;langpair=auto|en&amp;amp;tbb=1&amp;amp;ie=UTF-8"&gt;brilliant hack&lt;/a&gt;&lt;/li&gt;
			&lt;li&gt;
				How do I map all the dbus targets on the Kindle? I bet that would be useful in scripting the Kindle to new things.&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/ZqeVHB36wUw" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/kindle-root#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/hack">hack</category>
 <category domain="http://www.turnkeylinux.org/blog/kindle">kindle</category>
 <category domain="http://www.turnkeylinux.org/blog/root">root</category>
 <pubDate>Thu, 17 Nov 2011 04:56:18 +0000</pubDate>
 <dc:creator>Liraz Siri</dc:creator>
 <guid isPermaLink="false">2850 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/kindle-root</feedburner:origLink></item>
  <item>
    <title>Be nice. It's a fscking gift</title>
    <link>http://feeds.turnkeylinux.org/~r/turnkeylinux-blog/~3/s6xobXwB6-s/be-nice-its-a-gift</link>
    <description>&lt;p&gt;
	Open source development is usually fun and rewarding. You get to work on whatever you like. No permission required. No &amp;quot;business justification&amp;quot;. Here&amp;#39;s this thing I&amp;#39;ve created, isn&amp;#39;t it neat? There&amp;#39;s a deep sense of satisfaction in making things. Especially when other people find them useful. It&amp;#39;s also pretty awesome when people decide what you&amp;#39;ve made is interesting enough that they want to join in and help make it better. Successful projects often form into communities. Strangers from all over the world turned into enthusiastic users, co-developers. Friends.&lt;/p&gt;
&lt;p&gt;
	The only parts that suck are that:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
	&lt;li&gt;
		It is a bit more difficult to make a living purely from open source software. Giving stuff away generally doesn&amp;#39;t pay very well.&lt;/li&gt;
	&lt;li&gt;
		Some people just don&amp;#39;t get it.&lt;/li&gt;
&lt;/ol&gt;
&lt;!--break--&gt;
&lt;p&gt;
	For example, a while back someone who shall remained unnamed started e-mailing us privately with complaints that &lt;a href="http://www.turnkeylinux.org/tklbam"&gt;TKLBAM&lt;/a&gt; (TurnKey&amp;#39;s Backup and Migration software) didn&amp;#39;t work right for him. We eventually traced the problem back to a MySQL memory usage issue. It turns out that in some, thankfully rare situations MySQL consumes way too much memory when you restore a very particular kind of database from a mysqldump.&lt;/p&gt;
&lt;p&gt;
	When the user complained this was &amp;quot;a fault of TKLBAM&amp;#39;s design&amp;quot; I explained that it really didn&amp;#39;t sound like a TKLBAM problem to me because:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
	&lt;li&gt;
		If you peeled off TKLBAM and just used mysqldump / mysql command directly to backup / restore that kind of database you would run into exactly the same memory usage issue.&lt;/li&gt;
	&lt;li&gt;
		If Ubuntu issued a package update that fixed the bug, the issue would go away. Presto. No TKLBAM fix required.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
	Besides, even if this wasn&amp;#39;t a rare edge case nobody else had run into there probably wasn&amp;#39;t much I could do about it without debugging MySQL code - a daunting task.&lt;/p&gt;
&lt;p&gt;
	The best I could do was add an item to my todo list to see if we could look for workarounds that would go into the next version. In the meantime I recommended that the user try using another solution.&lt;/p&gt;
&lt;p&gt;
	Then I went on vacation. When I came back online I discovered an escalating series of e-mails from this user that eventually culminated in threats if we didn&amp;#39;t drop everything to meet his demands. And this was no joke. This guy seemed to be dead serious!&lt;/p&gt;
&lt;p&gt;
	Alon, who peaks into my TurnKey e-mail inbox when I&amp;#39;m not around tried calming the guy down:&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
		Just so you know, Liraz has been working offline and on vacation for about a month, if not a little longer. He has not been ignoring you, he just hasn&amp;#39;t read your emails.&lt;/p&gt;
	&lt;p&gt;
		I can understand your frustration, but even so keep in mind that TLKBAM is open source software, and released under the GPL!&lt;/p&gt;
	&lt;p&gt;
		I&amp;#39;m sure Liraz will reply to you once he returns online and finds the time, but even then understand that there is no obligation on his part to do so, except for common courtesy. Making threats is just disrespectful and wasteful.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
	Another demanding, entitled rant followed. When I finally came back I read through the whole series of e-mails, thought a little bit about what kind of confusion could lead to the (thankfully rare) behavior we were witnessing and put in my final response:&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
		Sorry for the late reply and sorry for the bad experience you have had with TKLBAM.&lt;/p&gt;
	&lt;p&gt;
		As Alon said I&amp;#39;ve been offline for a while. As much as I&amp;#39;d like to help you in a friendly manner I&amp;#39;m getting the sneaking sensation from the demanding tone of your messages that you don&amp;#39;t seem to understand how open source works.&lt;/p&gt;
	&lt;p&gt;
		The way I see it open source is basically a gift culture where people give the products of their labor away in a vague hope that some people (but probably not everyone) will find it useful. It&amp;#39;s a gift, with everything that implies. There are no warranties, explicit or implied. There are no guarantees that it is fit for any purpose.&lt;/p&gt;
	&lt;p&gt;
		Even proprietary software you pay for is not guaranteed to fully satisfy you or to work flawlessly (it usually doesn&amp;#39;t). The only way to really guarantee that technology works like you want is either to take pains to develop it yourself or pay someone else to develop it for you, in which case you can boss them around when they don&amp;#39;t meet your expectations or schedule. For what it&amp;#39;s worth I am prepared to offer you a full refund for the free software. :)&lt;/p&gt;
	&lt;p&gt;
		Seriously though I do appreciate the technical feedback but please remember that the open source license gives you permission to copy, distribute and improve TKLBAM yourself if you ever feel I am not responsive enough to your needs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
	I don&amp;#39;t know what I was expecting. A sudden moral epiphany? &amp;quot;Sorry I got carried away&amp;quot;. I know I know, I probably shouldn&amp;#39;t have bothered. Once a person gets so far out of whack it&amp;#39;s unlikely they are interested in being sensible. But I&amp;#39;m a sucker for redemption. Anyhow, it certainly didn&amp;#39;t help. A couple of additional e-mails with further demands and threats followed. Oh well, at least I tried.&lt;/p&gt;
&lt;p&gt;
	The moral of the story: Come on, be nice. It&amp;#39;s a fscking gift!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/turnkeylinux-blog/~4/s6xobXwB6-s" height="1" width="1"/&gt;</description>
     <comments>http://www.turnkeylinux.org/blog/be-nice-its-a-gift#comments</comments>
 <category domain="http://www.turnkeylinux.org/blog/courtesy">courtesy</category>
 <category domain="http://www.turnkeylinux.org/blog/free-software">free software</category>
 <category domain="http://www.turnkeylinux.org/blog/gift-culture">gift culture</category>
 <category domain="http://www.turnkeylinux.org/blog/no-warranty">no warranty</category>
 <pubDate>Tue, 01 Nov 2011 01:24:30 +0000</pubDate>
 <dc:creator>Liraz Siri</dc:creator>
 <guid isPermaLink="false">2754 at http://www.turnkeylinux.org</guid>
  <feedburner:origLink>http://www.turnkeylinux.org/blog/be-nice-its-a-gift</feedburner:origLink></item>
  </channel>
</rss>

