<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5919363643450621280</id><updated>2011-11-17T10:48:53.264+01:00</updated><category term='Man-in-the-middle attack'/><category term='Unix'/><category term='gkrellm'/><category term='conky'/><category term='Daily Show'/><category term='lm-sensors'/><category term='rtmpdump'/><category term='phoronix'/><category term='Flash Video'/><category term='watch'/><category term='Kernel'/><category term='temperature'/><category term='GNOME'/><category term='HTML 5'/><category term='sensors-applet'/><category term='Shell'/><category term='Flash'/><category term='Phoronix Test Suite'/><category term='GNOME Display Manager'/><category term='Comedy Central'/><category term='Smartphone'/><category term='SyntaxHighlighter'/><category term='Open standard'/><category term='Android'/><category term='Adobe'/><category term='hack'/><category term='Personal Package Archive'/><category term='HTC'/><category term='Multimedia'/><category term='CSS'/><category term='PDF'/><category term='mitm'/><category term='rtmp'/><category term='Colbert Report'/><category term='Superuser'/><category term='monitoring'/><category term='Exploit'/><category term='bash'/><category term='Operating system'/><category term='Nautilus'/><category term='Firefox'/><category term='Adobe Flash Player'/><category term='Linux'/><category term='Real Time Messaging Protocol'/><category term='HTML'/><category term='Mobile phone'/><category term='Hello world program'/><category term='benchmarking'/><category term='Ubuntu'/><category term='JavaScript'/><category term='cpuinfo'/><title type='text'>Constant Curiosity</title><subtitle type='html'>A state of mind way too uncommon. It's a source of patience and joy of discovery!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-6488670173674781152</id><published>2010-09-23T18:32:00.001+02:00</published><updated>2010-09-24T13:17:54.443+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='Smartphone'/><category scheme='http://www.blogger.com/atom/ns#' term='Operating system'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Exploit'/><category scheme='http://www.blogger.com/atom/ns#' term='Superuser'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Rooting Android</title><content type='html'>&lt;span class="zemanta-img separator" style="clear: right;"&gt;&lt;a href="http://commons.wikipedia.org/wiki/File:Operating_system_placement.svg" style="clear: right; display: block; float: right; margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Graph of typical Operating System placement on..." height="370" src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Operating_system_placement.svg/250px-Operating_system_placement.svg.png" style="border: medium none; font-size: 0.8em;" width="250" /&gt;&lt;/a&gt;&lt;span class="zemanta-img-attribution" style="clear: both; float: right; margin-left: 1em; margin-right: 1em; width: 250px;"&gt;Image via &lt;a href="http://commons.wikipedia.org/wiki/File:Operating_system_placement.svg"&gt;Wikipedia&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;Rooting enables an Android phone owner to do interesting things with his hardware. Let me write a few: performing whole-system backups, upgrading the operating system found on the device, removing clutter from the default install, even underclocking and &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Overclocking" rel="wikipedia" title="Overclocking"&gt;overclocking&lt;/a&gt; become possible. These procedures are especially attractive when the phone manufacturer decides to no longer support the device with any software updates.&lt;br /&gt;
Unfortunately, doing such a procedure usually &lt;b&gt;voids any warranty&lt;/b&gt; you may have on your phone, so all responsibility rests on your shoulders.&lt;br /&gt;
&lt;br /&gt;
OK, why the name &lt;i&gt;rooting?&lt;/i&gt; On UNIX-like operating systems like *&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Berkeley_Software_Distribution" rel="wikipedia" title="Berkeley Software Distribution"&gt;BSDs&lt;/a&gt; and Linuxes such as Android, root denotes the do-all &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Superuser" rel="wikipedia" title="Superuser"&gt;super-user&lt;/a&gt; on the machine. That means it can modify almost any file, anywhere. Getting this privilege level is therefore essential for manipulating protected files! A modern operating system has methods for entering such a privileged state but they are missing on Android. To make matters worse, the OS by design limits non-privileged code from attemting any other &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Privilege_escalation" rel="wikipedia" title="Privilege escalation"&gt;privilege escalation&lt;/a&gt; methods. All is not lost, however, since operating systems are usually so big, that there's bound to be some weak code, which can be exploited to cut the flow of normal execution and execute the exploit's code instead.&lt;br /&gt;
&lt;br /&gt;
Here enters an exploit. It exploits some specific functionality of the OS' &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Kernel_%28computing%29" rel="wikipedia" title="Kernel (computing)"&gt;kernel&lt;/a&gt; which has been vulnerably implemented. Such code is found all the time by security researchers, hobby hackers and also malevolent crackers, but more importantly more or less quickly patched by software authors. Because security software updates are relatively unneeded on Android due to the isolationist application model, updates for phones are rare or even non-existent and usually focus on improved functionality.&lt;br /&gt;
&lt;br /&gt;
That should be enough backround information, onto a specific procedure! My &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/HTC_Tattoo" rel="wikipedia" title="HTC Tattoo"&gt;HTC Tattoo&lt;/a&gt; uses &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux" rel="wikipedia" title="Linux"&gt;Linux&lt;/a&gt; version 2.6.29, which is rather old and vulnerable. &lt;a href="http://downloads.securityfocus.com/vulnerabilities/exploits/shoryuken.c"&gt;An exploit exists&lt;/a&gt; for it! Good, now a would be hacker also needs a shell to run this program in. The application model on Android doesn't run software stored as native processor code but the &lt;a href="http://developer.android.com/sdk/index.html"&gt;software developer kit for Android&lt;/a&gt; does. Once you have it extracted, open a terminal, navigate to that folder and connect your phone to the PC in &lt;a href="http://www.technixupdate.com/turn-on-usb-debugging-mode-in-nexus-one-or-other-android-phone/"&gt;debugging mode&lt;/a&gt;. To see if the phone is accessible run:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./adb devices&lt;/pre&gt;This should give you a serial number and a "running" status. Cool, now you can upload the compiled exploit file (find it on &lt;a href="http://forum.xda-developers.com/showthread.php?t=716282"&gt;xda-developers&lt;/a&gt;) to your phone:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./adb shell "mkdir /data/local/bin"
./adb push path/on/PC/to/m7 /data/local/bin/m7
./adb shell "chmod 755 /data/local/bin/m7"&lt;/pre&gt;Now you can enter a full shell running on your phone and actually execute the exploit:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./adb shell
cd /data/local/bin
while ./m7 ; do : ; done&lt;/pre&gt;After a while you should be greeted by a # sign, the tell-tale mark of full privilege! But nothing works. That is because the way you got to the root shell is highly non-standard and the interpreter knows not where to look for commands you type in. To remedy this, type:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# export LD_LIBRARY_PATH=/system/lib
# export PATH=/system/bin
# id&lt;/pre&gt;The last command should confirm you are root with user id zero. Congrats! But know that what you have just accomplished is just a&lt;b&gt; temporary root&lt;/b&gt;. It will only work for this shell session.&lt;br /&gt;
&lt;br /&gt;
To have a &lt;b&gt;permanent privilege escalation mechanism&lt;/b&gt; similar to more feature-full GNU/Linux distributions and that works whenever, you must install a program within your root shell called su, short for super user. You can find one &lt;a href="http://forum.xda-developers.com/showthread.php?t=682828"&gt;here&lt;/a&gt;, but please install the Superuser app as well. Upload the &lt;i&gt;su&lt;/i&gt; program the same way you uploaded the exploit file, with adb push. Once in the root shell, you must remount the system partition in the phone as writeable, because it is mounted as read-only by default:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# mount -o rw,remount /dev/block/mtdblock3 /system
# cat /data/local/bin/su &amp;gt; /system/bin/su
# chmod 6755 /system/bin/su&lt;/pre&gt;Now reboot your phone.&lt;br /&gt;
&lt;pre class="brush: bash"&gt;# reboot&lt;/pre&gt;Once the phone completes the start up process it should be exactly the same as before, but with one added mechanism: the &lt;i&gt;su&lt;/i&gt; program. The problem now is that any program can launch &lt;i&gt;su&lt;/i&gt; and become the superuser so your first step to control its use should be to install an app called &lt;a href="http://forum.xda-developers.com/showthread.php?t=682828"&gt;Superuser&lt;/a&gt; (it's also on the Android Market). For usage instructions see link. It's pretty simple though - if any non-approved app wants to run &lt;i&gt;su&lt;/i&gt;, Superuser will be invoked to ask you if you allow or deny the requesting app such privileges.&lt;br /&gt;
&lt;br /&gt;
Congratulations, you are now a mobile super user! :) &lt;br /&gt;
&lt;div class="zemanta-related"&gt;&lt;h6 class="zemanta-related-title" style="font-size: 1em; margin: 1em 0pt 0pt;"&gt;Related articles by Zemanta&lt;/h6&gt;&lt;ul class="zemanta-article-ul"&gt;&lt;li class="zemanta-article-ul-li"&gt;&lt;a href="http://www.brighthub.com/mobile/google-android/articles/88136.aspx"&gt;Comprehensive Android Rooting Guide&lt;/a&gt; (brighthub.com)&lt;/li&gt;
&lt;li class="zemanta-article-ul-li"&gt;&lt;a href="http://www.pcworld.com/article/205867/linux_kernel_exploit_gives_hackers_a_back_door.html?tk=rss_news"&gt;Linux Kernel Exploit Gives Hackers a Back Door&lt;/a&gt; (pcworld.com)&lt;/li&gt;
&lt;li class="zemanta-article-ul-li"&gt;&lt;a href="http://www.androidpolice.com/2010/09/09/that-was-quick-samsung-fascinate-rooted-on-launch-day/"&gt;That Was Quick - Samsung Fascinate Rooted On Launch Day&lt;/a&gt; (androidpolice.com)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img alt="Enhanced by Zemanta" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=19ea2f06-bf69-440e-8cc9-8668c5f8220d" style="border: medium none; float: right;" /&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-6488670173674781152?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/6488670173674781152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2010/09/rooting-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/6488670173674781152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/6488670173674781152'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2010/09/rooting-android.html' title='Rooting Android'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-1249517851278169020</id><published>2010-09-18T18:12:00.001+02:00</published><updated>2010-09-24T13:16:25.682+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile phone'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Smartphone'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='HTC'/><title type='text'>On Android communities</title><content type='html'>&lt;span class="zemanta-img separator" style="clear: right;"&gt;&lt;a href="http://www.flickr.com/photos/24226200@N00/3538820892" style="clear: right; display: block; float: right; margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Giant Google Android statue with puppy and cupcake" height="160" src="http://farm3.static.flickr.com/2197/3538820892_0ba042956a_m.jpg" style="border: medium none; font-size: 0.8em;" width="240" /&gt;&lt;/a&gt;&lt;span class="zemanta-img-attribution" style="clear: both; float: right; margin-left: 1em; margin-right: 1em; width: 240px;"&gt;Image by &lt;a href="http://www.flickr.com/photos/24226200@N00/3538820892"&gt;ToastyKen&lt;/a&gt; via Flickr&lt;/span&gt;&lt;/span&gt;While not writing for the blog many things changed in all of our lives but to be a bit more specific, I bought an &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Android_%28operating_system%29" rel="wikipedia" title="Android (operating system)"&gt;Android&lt;/a&gt; mobile phone. It is a budget second generation phone made by &lt;a class="zem_slink" href="http://www.htc.com/" rel="homepage" title="HTC"&gt;HTC&lt;/a&gt; and called Tattoo.&lt;br /&gt;
&lt;br /&gt;
Android is the operating system that runs on the phone. It manages the hardware and offers a unified platform for apps to run on it. One of the main advantages of Android is its freedom. Because it is based on &lt;a class="zem_slink" href="http://www.kernel.org/" rel="homepage" title="Linux"&gt;Linux&lt;/a&gt;, its licence forces the source code to be available for anyone to hack. However, the devices themselves aren't nearly as open. That's why hackers across the world love to break into phones and change their inner workings. Such actions are usually deemed entirely legal and can offer quite a bit of insight into how computers are made to work and the quality of work done by industry engineers.&lt;br /&gt;
&lt;br /&gt;
Why would someone root their phone? To do advanced things to it that are otherwise impossible! For instance my Tattoo had faulty buttons under the screen. Before sending it in for repairs under warranty I copied the contents of the on-board memory chips onto my memory card and did a factory reset. That way no prying eyes could access my data, my email account, etc. That turned out to be a good move because the phone had to have its motherboard replaced. On this motherboard the memory chips were soldered and I would have lost months of customizations had I not made backups.&lt;br /&gt;
&lt;br /&gt;
Many discussions on mobile phone &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Hacker_%28computer_security%29" rel="wikipedia" title="Hacker (computer security)"&gt;hacking&lt;/a&gt; and development take place on the forum xda-developers.com. Of course there are many other, more specific sites, but usually everything worth noting can be found on these forums. A problem I had at the beginning while reading various threads there was that, sure, there are many technical and newbie guides but very little is said what the accomplished result is useful for. Perhaps that is also a consequence of the bulletin board nature of the site. I find that &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Wiki" rel="wikipedia" title="Wiki"&gt;wiki&lt;/a&gt; sites are much better for new people because all the information is centralised on one page, condensed and more formatted for legibility than countless bits of information spread around forum posts.&lt;br /&gt;
&lt;br /&gt;
By the way, if you are considering buying a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Smartphone" rel="wikipedia" title="Smartphone"&gt;smartphone&lt;/a&gt;, please, PLEASE, do yourself a favour and don't get a budget phone. I find myself wanting the characteristics of a better phone all the time. The hardware can be very limiting to the usefulness of various third party applications and even to their availability. Fortunately some of the limitations are software based and therefore the attractiveness and promise of community based upgrades and hacks becomes quickly evident.&lt;br /&gt;
&lt;br /&gt;
I imagined this blog as being more technically orientated so as not to deviate from that premise I will soon post some guides how (and why) I have fun with my mobile phone.&lt;br /&gt;
&lt;br /&gt;
Bye!&lt;br /&gt;
&lt;div class="zemanta-related"&gt;&lt;h6 class="zemanta-related-title" style="margin: 1em 0pt 0pt;"&gt;&lt;span style="font-size: x-small;"&gt;Related articles by Zemanta&lt;/span&gt;&lt;/h6&gt;&lt;ul class="zemanta-article-ul"&gt;&lt;li class="zemanta-article-ul-li"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.pcworld.com/article/205686/galaxy_tab_will_soar_on_androids_key_strengths.html?tk=rss_news"&gt;Galaxy Tab Will Soar on Android's Key Strengths&lt;/a&gt; (pcworld.com)&lt;/span&gt;&lt;/li&gt;
&lt;li class="zemanta-article-ul-li"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.brighthub.com/mobile/google-android/articles/86241.aspx"&gt;What is Cyanogen for Android?&lt;/a&gt; (brighthub.com)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img alt="Enhanced by Zemanta" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=9344ad7a-a1cd-4b85-bd3b-c2f836c1755c" style="border: medium none; float: right;" /&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-1249517851278169020?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/1249517851278169020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2010/09/on-android-communities.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/1249517851278169020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/1249517851278169020'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2010/09/on-android-communities.html' title='On Android communities'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2197/3538820892_0ba042956a_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-8330490038864022854</id><published>2010-09-18T12:56:00.002+02:00</published><updated>2010-09-23T16:08:16.799+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Package Archive'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Lets get Flash squared away</title><content type='html'>Hello after a long time. I have some free time again and my almost forgotten blog crept into my mind. Well the &lt;a href="http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=ODYwMg"&gt;big news&lt;/a&gt; of the day, actually yesterday, is that a &lt;a href="http://labs.adobe.com/downloads/flashplayer10.html"&gt;new version&lt;/a&gt; of the Flash player has been released, not only for the usual suspect like Windows and OS X but also for 64-bit Linux!&lt;br /&gt;
&lt;br /&gt;
The big Flash 10.1 release a few months ago obviated users of 64-bit &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux_distribution" rel="wikipedia" title="Linux distribution"&gt;GNU/Linux distributions&lt;/a&gt; and their users have been left out in the cold regarding support for a native patched and secure Flash player. The last version was just suddenly made unavailable due to security holes and no update was released.&lt;br /&gt;
&lt;br /&gt;
Fortunately a new version has been released, interestingly &lt;a href="http://linux.slashdot.org/comments.pl?sid=1788824&amp;amp;cid=33599702"&gt;according to one&lt;/a&gt; not only due to outside pressure.&lt;br /&gt;
&lt;br /&gt;
Here are a few tips regarding its installation on Ubuntu amd64:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;If you have any flash packages installed, it is prudent to remove them first:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo apt-get remove -y --purge flashplugin-nonfree flashplugin-installer gnash&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;If you had followed my &lt;a href="http://constcuriosity.blogspot.com/2009/10/automatic-adobe-flash-on-amd64.html"&gt;previous guide&lt;/a&gt;, you need to clean up after it:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo rm -f /usr/lib/mozilla/plugins/*flash*
sudo rm -f ~/.mozilla/plugins/*flash*
sudo rm -f /usr/lib/firefox/plugins/*flash*
sudo rm -f /usr/lib/firefox-addons/plugins/*flash*&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Ubuntu users are welcome to install the plugin from a &lt;a href="https://launchpad.net/%7Esevenmachines/+archive/flash"&gt;Personal Project Archive&lt;/a&gt; (&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Personal_Package_Archive" rel="wikipedia" title="Personal Package Archive"&gt;Wikipedia article&lt;/a&gt;). This is a volunteer-based solution which bridges the gap between upstream release and Ubuntu official packaging. It should be as easy as running:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo add-apt-repository ppa:sevenmachines/flash
sudo apt-get update
sudo apt-get install flashplugin64-nonfree&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;If you wish to remove the PPA and the installed software it provides, you have two options. The manual way is to remove the PPA from the Software repositories list and reverting or uninstalling software packages the PPA provides or you could settle for an automatic process. You need to &lt;a href="http://www.webupd8.org/2010/04/ppa-purge-now-available-via-getdeb.html"&gt;install another PPA first&lt;/a&gt;, though. Removal of the unwanted PPA is then as easy as this:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo ppa-purge ppa:sevenmachines/flash&lt;/pre&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;Users of other GNU/Linux distributions can use the procesure below (check the plugin paths, though!) &lt;br /&gt;
&lt;pre class="brush: bash"&gt;wget -qO- http://download.macromedia.com/pub/labs/flashplayer10/flashplayer_square_p1_64bit_linux_091510.tar.gz | tar xz &amp;gt; libflashplayer.so
sudo mv libflashplayer.so /usr/lib/mozilla/plugins/&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="zemanta-related"&gt;&lt;h6 class="zemanta-related-title" style="font-size: 1em; margin: 1em 0pt 0pt;"&gt;&amp;nbsp;&lt;/h6&gt;&lt;h6 class="zemanta-related-title" style="margin: 1em 0pt 0pt;"&gt;&lt;span style="font-size: x-small;"&gt;Related articles by Zemanta&lt;/span&gt;&lt;/h6&gt;&lt;ul class="zemanta-article-ul"&gt;&lt;li class="zemanta-article-ul-li"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.omgubuntu.co.uk/2010/09/64bit-flash-for-ubuntu/"&gt;64bit Flash for Linux returns&lt;/a&gt; (omgubuntu.co.uk)&lt;/span&gt;&lt;/li&gt;
&lt;li class="zemanta-article-ul-li"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;Adobe brings out native 64-bit Flash Player for Windows, Mac OS X &amp;amp; Linux&lt;/a&gt;&lt;/span&gt; (labs.adobe.com)&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img alt="Enhanced by Zemanta" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=eb9b3bbf-dd2d-4713-af65-220106e73f6f" style="border: medium none; float: right;" /&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-8330490038864022854?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://labs.adobe.com/downloads/flashplayer10.html' title='Lets get Flash squared away'/><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/8330490038864022854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2010/09/lets-get-flash-squared-away.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/8330490038864022854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/8330490038864022854'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2010/09/lets-get-flash-squared-away.html' title='Lets get Flash squared away'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-8495283303436103244</id><published>2010-03-16T10:41:00.000+01:00</published><updated>2010-03-16T10:41:21.958+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpuinfo'/><category scheme='http://www.blogger.com/atom/ns#' term='benchmarking'/><category scheme='http://www.blogger.com/atom/ns#' term='GNOME'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='sensors-applet'/><category scheme='http://www.blogger.com/atom/ns#' term='Phoronix Test Suite'/><category scheme='http://www.blogger.com/atom/ns#' term='gkrellm'/><category scheme='http://www.blogger.com/atom/ns#' term='watch'/><category scheme='http://www.blogger.com/atom/ns#' term='lm-sensors'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='phoronix'/><category scheme='http://www.blogger.com/atom/ns#' term='temperature'/><category scheme='http://www.blogger.com/atom/ns#' term='conky'/><title type='text'>System monitoring beyond GNOME's System Monitor</title><content type='html'>I've been having problems with my quad-core computer lately. I noticed that 2 out of 4 logical cores were misbehaving, i.e. they were not scaling their frequency up to meet the load I was putting on them and there were also fishy temperature readings.&lt;br /&gt;
&lt;br /&gt;
You may ask yourself how to monitor things like load, frequency and temperature on a Linux box. The answer isn't all that complicated. If you want a graphical program, there are many: &lt;a href="http://sensors-applet.sourceforge.net/"&gt;sensors-applet&lt;/a&gt; for GNOME's bars, &lt;a href="http://conky.sourceforge.net/"&gt;conky&lt;/a&gt; and &lt;a href="http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html"&gt;gkrellm&lt;/a&gt; for your desktop and probably many others I don't know about. All of them need some level of setting up, please look at the relevant docs on te tools' websites.&lt;br /&gt;
&lt;br /&gt;
What about console tools? The main tools here are &lt;a href="http://www.lm-sensors.org/"&gt;lm-sensors&lt;/a&gt;, &lt;a href="http://www.guzu.net/linux/hddtemp.php"&gt;hddtemp&lt;/a&gt; and acpi. For experienced users console use is usually simpler, faster and more importantly, more precise. Setting up lm-sensors is simple. Running the following and pressing enter a bunch of times will tell you which drivers (modules, actually) you need to load so that sensors can reliably be read. &lt;pre class="brush: bash;"&gt;$ sudo sensors-detect
...
To load everything that is needed, add this to /etc/modules:

#----cut here----
# Chip drivers
it87
coretemp
#----cut here----

Do you want to add these lines automatically? (yes/NO)&lt;/pre&gt;My computer has an Intel Core 2 Quad with embedded on-die sensors (module coretemp) and a motherboard based on the Intel P45 chipset (module it87).&lt;br /&gt;
&lt;br /&gt;
Adding the modules to the mentioned file will cause them to be loaded every system start but we want to read stuf ASAP!&lt;pre class="brush: bash;"&gt;$ sudo modprobe coretemp
watch sensors&lt;/pre&gt;The watch command is useful here as it executes whatever command every given time period. The default is 2 seconds, enough for my purposes.&lt;pre&gt;Every 2.0s: sensors                                     Mon Mar 15 17:43:13 2010

ERROR: Can't get value of subfeature temp1_input: Can't read
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +0.0C  (high = +82.0C, crit = +100.0C)  ALARM

coretemp-isa-0001
Adapter: ISA adapter
Core 1:      +37.0C  (high = +82.0C, crit = +100.0C)

coretemp-isa-0002
Adapter: ISA adapter
Core 2:      +58.0C  (high = +82.0C, crit = +100.0C)

coretemp-isa-0003
Adapter: ISA adapter
Core 3:      +36.0C  (high = +82.0C, crit = +100.0C)
&lt;/pre&gt;Definitely something amiss with the CPU or the LGA775 socket with its bend-prone pins. Please note that an Intel stock cooler is installed for service-personnel-excuse-finding-avoidance purposes.&lt;br /&gt;
&lt;br /&gt;
One more thing to monitor is the CPU frequency. Modern CPUs need to be green so features originating in laptops came to the desktop, specifically frequency scaling based on CPU load. A good way of &lt;i&gt;watch&lt;/i&gt;ing this is&lt;pre class="brush: bash;"&gt;$ watch grep MHz /proc/cpuinfo&lt;/pre&gt;. There are tons of information about the CPU cores in that file and getting just what we need out of it is just one scalpel^W grep away!&lt;br /&gt;
&lt;br /&gt;
Now we need to generate load on the processor cores. There benchmarking tools on Linux aren't as easy to use as on Windows but many of them are quite interesting. I like the &lt;a href="http://www.phoronix-test-suite.com/"&gt;Phoronix Test Suite&lt;/a&gt;, used by many websites to test in Linux and encompasses so many tests that you really need to pick and choose. A good way of seeing what results should be is comparing your own to other systems on &lt;a href="http://global.phoronix-test-suite.com/
"&gt;Phoronix Global&lt;/a&gt;. One of the better tests in this suite is &lt;i&gt;sunflow&lt;/i&gt;. It uses Java and is parallelized, which means that it uses all CPU cores it can find to solve a problem.&lt;pre class="brush: bash;"&gt;$ phoronix-test-suite benchmark sunflow&lt;/pre&gt;During this test the things to watch are the frequency and perhaps the temperatures. I noticed that my frequencies didn't scale:&lt;pre&gt;Every 2.0s: grep -i MHz /proc/cpuinfo                   Mon Mar 15 18:03:52 2010

cpu MHz         : 1600.000
cpu MHz         : 2400.000
cpu MHz         : 1600.000
cpu MHz         : 2400.000&lt;/pre&gt;Definitely something wrong. To further analyse these peculiarities an unparallelized test with short runs is needed. One of them is &lt;i&gt;java-scimark2&lt;/i&gt;, a collection of mathematical algorithms. Here are the results on my faulty system:&lt;br /&gt;
&lt;pre class="brush: bash;"&gt;$ phoronix-test-suite run java-scimark2

========================================
Test Configuration: Java SciMark
========================================


Computational Test:

1: Composite
2: Fast Fourier Transform
3: Jacobi Successive Over-Relaxation
4: Monte Carlo
5: Sparse Matrix Multiply
6: Dense LU Matrix Factorization
7: Test All Options

Enter Your Choice: 2

Would you like to save these test results (Y/n)? n

========================================
Estimated Run-Time: 5 Minutes
========================================



Java SciMark:
      java-scimark2 [Computational Test: Fast Fourier Transform]
      Estimated Test Run-Time: 5 Minutes
      Expected Trial Run Count: 4
            Started Run 1 @ 18:07:15
            Started Run 2 @ 18:07:49
            Started Run 3 @ 18:08:26
            Started Run 4 @ 18:09:00
            Started Run 5 @ 18:09:35
            Started Run 6 @ 18:10:07
            Started Run 7 @ 18:10:46
            Started Run 8 @ 18:11:18

      Test Results:
            481.9675767405814
            465.3790214886224
            167.040859476713
            484.107875662264
            481.9675767405814
            482.10078089758196
            142.08542169663755
            491.33539814892885

      Average: 399.49 Mflops&lt;/pre&gt;I would expect all runs to operate at about 480 mega FLOPS, however, there are two results that pull the average significantly down. Other tests for the java-scimark2 collection confirm these results so the CPU is definitely not operating as intended.&lt;br /&gt;
&lt;br /&gt;
I've also tried swapping the power supply and memory modules to no avail and fortunately both the CPU and motherboard are still covered by warranty.&lt;br /&gt;
&lt;br /&gt;
And once these tools become ubiquitous, there's the blog &lt;a href="http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html"&gt;NIXCraft&lt;/a&gt;. It will just knock your socks off with the quantity of quality content. It really is &lt;i&gt;...simply the best!&lt;/i&gt; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-8495283303436103244?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/8495283303436103244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2010/03/system-monitoring-beyond-gnomes-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/8495283303436103244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/8495283303436103244'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2010/03/system-monitoring-beyond-gnomes-system.html' title='System monitoring beyond GNOME&apos;s System Monitor'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-1271726631245788062</id><published>2010-02-23T15:19:00.001+01:00</published><updated>2010-02-23T15:27:33.100+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNOME Display Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='GNOME'/><category scheme='http://www.blogger.com/atom/ns#' term='Nautilus'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Tweaking Ubuntu's GDM and nautilus</title><content type='html'>&lt;p class="zemanta-img" style="margin: 1em; float: right; display: block; width: 160px;"&gt;&lt;a href="http://commons.wikipedia.org/wiki/Image:Gnomelogo.svg"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Gnomelogo.svg/300px-Gnomelogo.svg.png" alt="GNOME" style="border: medium none ; display: block;" height="182" width="150"&gt;&lt;/a&gt;&lt;span class="zemanta-img-attribution"&gt;Image via &lt;a href="http://commons.wikipedia.org/wiki/Image:Gnomelogo.svg"&gt;Wikipedia&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;There are tons of little tweaks I constantly make in my system to have an easier time spending a lot of time in it.&lt;br /&gt;
&lt;br /&gt;
With this post I'd like to show you two of them.&lt;br /&gt;
&lt;br /&gt;
The first tweak is actually a fix to the new login manager &lt;a class="zem_slink" href="http://www.gnome.org/projects/gdm/" title="GNOME Display Manager" rel="homepage"&gt;GDM&lt;/a&gt;. Ubuntu got a new login manager in release 9.10 to essentially save a precious few seconds  during start-up. Sadly the rewrite is &lt;a href="http://www.ubuntumini.com/2009/09/hack-karmics-gdm-login-screen.html"&gt;much less configurable&lt;/a&gt; and some argue is a trend the &lt;a class="zem_slink" href="http://www.gnome.org/" title="GNOME" rel="homepage"&gt;GNOME&lt;/a&gt; project has been showing. I agree to an extent that some features are being rushed and not enough care is being made that functionality is preserved. For instance the configuration dialogue of the new GDM is very Spartan and doesn't even have many of the options that it should have. I find that &lt;a class="zem_slink" href="http://www.gnome.org/projects/NetworkManager" title="NetworkManager" rel="homepage"&gt;NetworkManager&lt;/a&gt; actually lacks a useful &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Command-line_interface" title="Command-line interface" rel="wikipedia"&gt;command line interface&lt;/a&gt; because the D-Bus way is just way to cumbersome.&lt;br /&gt;
Anyway, I found the drum sound that played on every start-up very annoying. If you haven't guessed from my rant, there is no obvious way to disable it. Fortunately other people were &lt;a href="http://www.ubuntumini.com/2009/12/hack-karmics-gdm-login-part-2.html" bothered="" by="" it=""&gt;&lt;/a&gt;  as well(a moment of Schadenfreude indeed) so a quick tweak/hack arose and this is it:&lt;br /&gt;
&lt;pre class="brush: bash;"&gt;$ cd /usr/share/sounds/ubuntu/stereo
$ sudo mv system-ready.ogg system-ready.ogg.DISABLED-FOR-BEING-ANNOYING&lt;/pre&gt;Some argue that such tweaks are actually hacks because they interfere with the system in unexpected ways (like my flash on amd64 guide). Unfortunately in the absence of supported solutions such quick fixes are necessary. It always helps to make a mental note or better yet to keep a log of such modifications in case things go awry on some upgrade.&lt;br /&gt;
&lt;br /&gt;
The second tweak I wanted to mention is in fact something that is supported in the official Ubuntu software channels and those are pug-ins for the &lt;a class="zem_slink" href="http://www.gnome.org/projects/nautilus/" title="Nautilus (file manager)" rel="homepage"&gt;nautilus&lt;/a&gt; file manager. On its own it lacks some features a power user really needs, the most glaring of which is an &lt;i&gt;Open terminal here&lt;/i&gt; command. I actually tried implementing this myself because nautilus has a &lt;a href="http://tech.shantanugoel.com/2008/03/09/ubuntu-tip-extending-nautilus-scripting-your-way-to-ui-bliss.html"&gt;simple extension mechanism&lt;/a&gt; using scripts but I found a better solution by just installing one package:&lt;br /&gt;
&lt;pre class="brush: bash;"&gt;$ sudo aptitude install nautilus-open-terminal&lt;/pre&gt;Here are the other interesting extension packages you might want to use:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;i&gt;nautilus-filename-repairer&lt;/i&gt; - Nautilus extension for filename encoding repair&lt;/li&gt;
&lt;li&gt;&lt;i&gt;nautilus-gksu&lt;/i&gt; - privilege granting extension for nautilus using gksu&lt;/li&gt;
&lt;li&gt;&lt;i&gt;nautilus-image-converter&lt;/i&gt; - nautilus extension to mass resize or rotate images&lt;/li&gt;
&lt;li&gt;&lt;i&gt;nautilus-open-terminal&lt;/i&gt; - nautilus plugin for opening terminals in arbitrary local paths&lt;/li&gt;
&lt;li&gt;&lt;i&gt;nautilus-script-audio-convert&lt;/i&gt; - A nautilus audio converter script&lt;/li&gt;
&lt;li&gt;&lt;i&gt;nautilus-script-manager&lt;/i&gt; - A simple management tool for nautilus scripts&lt;/li&gt;
&lt;li&gt;&lt;i&gt;nautilus-wallpaper&lt;/i&gt; - Nautilus extension. Add a "set as wallpaper" entry in context menu&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"&gt;&lt;a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/801d4c88-1f26-4596-b264-ab1658a732af/" title="Reblog this post [with Zemanta]"&gt;&lt;img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=801d4c88-1f26-4596-b264-ab1658a732af" alt="Reblog this post [with Zemanta]"&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-1271726631245788062?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/1271726631245788062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2010/02/tweaking-ubuntus-gdm-and-nautilus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/1271726631245788062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/1271726631245788062'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2010/02/tweaking-ubuntus-gdm-and-nautilus.html' title='Tweaking Ubuntu&apos;s GDM and nautilus'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-551516155748400230</id><published>2010-02-22T23:34:00.002+01:00</published><updated>2010-02-23T00:07:59.964+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Finding old Ubuntu ISOs</title><content type='html'>Just a quick note so I have a post this month. You know, I'm super busy, blah blah work, etc. etc.&lt;br /&gt;
&lt;br /&gt;
For a course I'm doing this year I needed several older &lt;a class="zem_slink" href="http://www.ubuntu.com/" title="Ubuntu (operating system)" rel="homepage"&gt;Ubuntu&lt;/a&gt; releases to test &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux" title="Linux" rel="wikipedia"&gt;Linux&lt;/a&gt;'s Kernel &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Virtual_machine" title="Virtual machine" rel="wikipedia"&gt;Virtual Machine&lt;/a&gt;. It was included into Linux for the 2.6.20 release just over three years ago. It just so happens that the first Ubuntu revision that had this &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux_kernel" title="Linux kernel" rel="wikipedia"&gt;kernel&lt;/a&gt; was Feisty Fawn or the more commonly used label 7.04. Because of Ubuntu's support policy (18 months per revision, except LTS which has 36 months) revisions 7.04 and 7.10 are no longer supported. That also means the isos (CD images) are hard to come by because most mirror servers delete unneeded files. Fortunately I quickly found a nearby mirror on the &lt;a href="https://launchpad.net/ubuntu/+cdmirrors"&gt;mirror server listing&lt;/a&gt; that still had some older versions so I am a bit happier!&lt;br /&gt;
&lt;br /&gt;
Running unsupported versions is of course discouraged because critical imperfections are no longer being fixed for the abandoned &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux_distribution" title="Linux distribution" rel="wikipedia"&gt;distribution&lt;/a&gt; but for educational purposes there is no objection.&lt;br /&gt;
&lt;br /&gt;
Another good tip I found is that although these older Ubuntu revisions are no longer supported with improvements to software packages, at least improvements since the release of the CD image are still available through the in-built &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Package_management_system" title="Package management system" rel="wikipedia"&gt;package management system&lt;/a&gt;. There are &lt;a href="http://atlanticlinux.ie/blog/?p=143"&gt;a few tweaks needed&lt;/a&gt; for adjusting software package sources, namely renaming all software package servers from &lt;i&gt;archive.ubuntu.com&lt;/i&gt; to &lt;i&gt;old-releases.ubuntu.com&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
A quick history of Ubuntu releases:&lt;br /&gt;
&lt;table WIDTH=525 BORDER=1 BORDERCOLOR="#888888" CELLPADDING=4 CELLSPACING=0&gt;&lt;col WIDTH=130&gt;&lt;col WIDTH=136&gt;&lt;col WIDTH=78&gt;&lt;col WIDTH=147&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;&lt;b&gt;Ubuntu release&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;&lt;b&gt;codename&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;&lt;b&gt;date&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;&lt;b&gt;kernel version&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 4.10&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Warty Warthog&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2004-10-20&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.8&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 5.04&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Hoary Hedgehog&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2005-04-08&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.10&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 5.10&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Breezy Badger&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2005-10-13&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.12&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 6.06 LTS&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Dapper Drake&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2006-06-01&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.15&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 6.10&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Edgy Eft&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2006-10-26&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.17&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 7.04&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Feisty Fawn&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2007-04-19&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.20&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 7.10&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Gutsy Gibbon&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2007-10-18&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.22&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 8.04 LTS&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Hardy Heron&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2008-04-24&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.24&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 8.10&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Intrepid Ibex&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2008-10-30&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.27&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 9.04&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Jaunty Jacklope&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2009-04-23&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.28&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;tr VALIGN=TOP&gt;   &lt;td WIDTH=130&gt;&lt;p&gt;Ubuntu 9.10&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=136&gt;&lt;p&gt;Karmic Koala&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=78&gt;&lt;p&gt;2009-10-29&lt;/P&gt;&lt;/TD&gt;   &lt;td WIDTH=147&gt;&lt;p&gt;Linux 2.6.31&lt;/P&gt;&lt;/TD&gt;  &lt;/TR&gt;
&lt;/TABLE&gt;&lt;br /&gt;
&lt;br /&gt;
After I complete my report I might have to make a little series on &lt;a href="http://www.linux-kvm.org/page/Main_Page"&gt;KVM&lt;/a&gt;! :)&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"&gt;&lt;a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/a333add0-3388-4c70-976c-9e8adc6ee735/" title="Reblog this post [with Zemanta]"&gt;&lt;img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=a333add0-3388-4c70-976c-9e8adc6ee735" alt="Reblog this post [with Zemanta]"&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-551516155748400230?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://launchpad.net/ubuntu/+cdmirrors' title='Finding old Ubuntu ISOs'/><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/551516155748400230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2010/02/finding-old-ubuntu-isos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/551516155748400230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/551516155748400230'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2010/02/finding-old-ubuntu-isos.html' title='Finding old Ubuntu ISOs'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-1978677396463870908</id><published>2010-01-26T16:36:00.008+01:00</published><updated>2011-01-26T13:16:48.354+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Real Time Messaging Protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='rtmpdump'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Man-in-the-middle attack'/><category scheme='http://www.blogger.com/atom/ns#' term='rtmp'/><category scheme='http://www.blogger.com/atom/ns#' term='mitm'/><category scheme='http://www.blogger.com/atom/ns#' term='Daily Show'/><category scheme='http://www.blogger.com/atom/ns#' term='Comedy Central'/><category scheme='http://www.blogger.com/atom/ns#' term='Colbert Report'/><title type='text'>Revisiting rtmpdump</title><content type='html'>&lt;span class="zemanta-img separator" style="clear: right;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Image:Comedy_Central_logo_%281990s%29.svg" style="clear: right; display: block; float: right; margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="The original Comedy Central logo used from 199..." height="234" src="http://upload.wikimedia.org/wikipedia/en/thumb/6/6f/Comedy_Central_logo_%281990s%29.svg/300px-Comedy_Central_logo_%281990s%29.svg.png" style="border: medium none; font-size: 0.8em;" width="180" /&gt;&lt;/a&gt;&lt;span class="zemanta-img-attribution" style="clear: both; float: right; margin-left: 1em; margin-right: 1em; width: 180px;"&gt;Image via &lt;a href="http://en.wikipedia.org/wiki/Image:Comedy_Central_logo_%281990s%29.svg"&gt;Wikipedia&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;Time for an updated guide - I told you previously that things change quickly! :)&lt;br /&gt;
The new major release 2.x of &lt;i&gt;&lt;a href="http://rtmpdump.mplayerhq.hu/"&gt;rtmpdump&lt;/a&gt;&lt;/i&gt; brings new tools which make things much easier. How much? Well downloading shows of &lt;a class="zem_slink" href="http://www.colbertnation.com/" rel="homepage" title="The Colbert Report"&gt;The Colbert Report&lt;/a&gt;, &lt;a class="zem_slink" href="http://www.thedailyshow.com/" rel="imdb" title="The Daily Show"&gt;The Daily Show&lt;/a&gt; and episodes from &lt;a class="zem_slink" href="http://www.southparkstudios.com/" rel="imdb" title="South Park"&gt;South Park Studios&lt;/a&gt; is now almost a breeze!&lt;br /&gt;
What is this gamechanger you say? It's the new &lt;i&gt;rtmpsrv&lt;/i&gt; program which comes with &lt;i&gt;rtmpdump 2&lt;/i&gt;. It does the guessing game for us and gives a copy-pastable command. In short you have to position it between your browser and the internet and allow it to perform essentially a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack" rel="wikipedia" title="Man-in-the-middle attack"&gt;man-in-the-middle attack&lt;/a&gt; on the handshake of the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Proprietary_protocol" rel="wikipedia" title="Proprietary protocol"&gt;proprietary protocol&lt;/a&gt;.&lt;br /&gt;
Compilation on &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux" rel="wikipedia" title="Linux"&gt;GNU/Linux&lt;/a&gt; (for other system please read the README file):&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo apt-get install build-essential subversion zlib1g-dev libssl-dev&lt;/pre&gt;&lt;pre class="brush: bash"&gt;svn checkout svn://svn.mplayerhq.hu/rtmpdump/trunk rtmpdump
cd rtmpdump
make SHARED= SYS=posix&lt;/pre&gt;The program is now compiled for use on your system! Now the harder part - you need root access to configure the &lt;i&gt;iptables&lt;/i&gt; firewall which should be a part of any modern Linux distro. This is the part which will reroute the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol" rel="wikipedia" title="Real Time Messaging Protocol"&gt;RTMP&lt;/a&gt; communication of the flash plugin in your browser through a local port:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo iptables -t nat -A OUTPUT -p tcp --dport 1935 -j REDIRECT&lt;/pre&gt;Excellent, now start the program rtmpsrv which will listen on the local port:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./rtmpsrv&lt;/pre&gt;Browse to a media site and wait for rtmpsrv to write out a command in the console. If you see multiple chapters on the media site, try skipping to another one. I'll describe why in a minute.&lt;br /&gt;
OK! You should see at least one long string starting with rtmpdump. rtmpsrv did its job so close the browser tab and stop rtmpsrv with a Control+C signal. Ending rtmpsrv seems to be a problem. The cleaning up process seems to go nowhere at times but sending several Ctrl+C events usually produces a segfault. :/ &lt;br /&gt;
Also delete the firewall redirect so that you can access the media server directly:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo iptables -t nat -D OUTPUT -p tcp --dport 1935 -j REDIRECT&lt;/pre&gt;If you're in luck taht is it and you only need to run the output of rtmpsrv, like this:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./rtmpdump -r "rtmpe://cp9950.edgefcs.net:1935/ondemand?ovpfv=1.1" -a "ondemand?ovpfv=1.1" -f "LNX 10,0,42,34" -W "http://media.mtvnservices.com/player/release/?v=4.2.2-8" -t "rtmpe://cp9950.edgefcs.net:1935/ondemand?ovpfv=1.1" -p "http://www.colbertnation.com/full-episodes/thu-january-14-2010-kathleen-sebelius" -C Z: -y "mp4:mtvnorigin/gsp.comedystor/com/colbert/season_06/episode_008/cr_06008_act1_768x432_1720.mp4" -o output.flv&lt;/pre&gt;The problem with &lt;a class="zem_slink" href="http://www.comedycentral.com/" rel="homepage" title="Comedy Central"&gt;Comedy Central&lt;/a&gt; shows are commercial breaks which cut the show into different separate chapters called acts (see the end of command above). This gives us a bit more work but it's so worth it avoiding the horrible full screen flash experience! Smooth full-screen playback has arrived, &lt;a href="http://xkcd.com/619/"&gt;Randall&lt;/a&gt;! :)&lt;br /&gt;
This particular episode of The Colbert Report has 4 acts - all you need to do is change the actX in the command and the output filename must be different for each act too. Ending up with 4 differnet videos is kind of lame but manageable. If you know of a FLOSS stitching solution, please comment! (Avidemux doesn't wanna, &lt;a class="zem_slink" href="http://www.pitivi.org/wiki/Main_Page" rel="homepage" title="PiTiVi"&gt;PiTiVi&lt;/a&gt; wants to transcode, haven't tried LiVES yet).&lt;br /&gt;
SouthParStudios.com has a different gotcha - the first clip is the intro which is the same for all shows. Only the following acts are show specific. I managed to get a second command from rtmpsrv by seeking in the browser as mentioned above. Behold:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./rtmpsrv
RTMP Server v2.1c
(c) 2010 Andrej Stepanchuk, Howard Chu; license: GPL

Streaming on rtmp://0.0.0.0:1935
WARNING: Trying different position for client digest!


rtmpdump -r "rtmpe://cp40493.edgefcs.net:1935/ondemand?ovpfv=1.1" -a "ondemand?ovpfv=1.1" -f "LNX 10,0,42,34" -W "http://media.mtvnservices.com/player/release/?v=4.2.1" -t "rtmpe://cp40493.edgefcs.net:1935/ondemand?ovpfv=1.1" -p "http://www.southparkstudios.com/episodes/251890" -C Z: -y "mp4:mtvnorigin/gsp.comedystor/com/sp/extras/intros/PromoIntros/HDintroPromoXX_768x432_750.mp4" -o output.flv


rtmpdump -r "rtmpe://cp40493.edgefcs.net:1935/ondemand?ovpfv=1.1" -a "ondemand?ovpfv=1.1" -f "LNX 10,0,42,34" -W "http://media.mtvnservices.com/player/release/?v=4.2.1" -t "rtmpe://cp40493.edgefcs.net:1935/ondemand?ovpfv=1.1" -p "http://www.southparkstudios.com/episodes/251890" -y "mp4:mtvnorigin/gsp.comedystor/com/sp/season_13/1313/acts/sp_1313_act1_768x432_750.mp4" -o output.flv

^CCaught signal: 2, cleaning up, just a second...&lt;/pre&gt;And we have lift-off! See the act1 above? Incrementing this value will give you all the acts.&lt;br /&gt;
I am the first to admit this should be a total overkill for a good viewing experience but the current situation isn't really bearable. While fast modern multi-core desktop processors are capable of much smoother playback my aging Pentium M and a masses of netbooks struggle with this task. And of course (legally) downloading the shows and watching them offline is now possible! I think modern smartphones and media devices should have no problem with playback of these local files but as always YMMV.&lt;br /&gt;
Creators of rtmpdump, on behalf of the Linux masses suffering from stuttering full-screen playback with flash, I salute you!&lt;br /&gt;
&lt;br /&gt;
&lt;fieldset class="zemanta-related"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;legend class="zemanta-related-title"&gt;Related articles by Zemanta&lt;/legend&gt;&lt;br /&gt;
&lt;ul class="zemanta-article-ul"&gt;&lt;li class="zemanta-article-ul-li"&gt;&lt;a href="http://www.slumpedoverkeyboarddead.com/2009/05/26/adobe-acts-against-flash-video-stream-recorder/"&gt;Adobe acts against Flash video stream recorder&lt;/a&gt; (slumpedoverkeyboarddead.com)&lt;/li&gt;
&lt;li class="zemanta-article-ul-li"&gt;&lt;a href="http://www.brighthub.com/computing/linux/articles/86306.aspx"&gt;Linux iptables an Introduction&lt;/a&gt; (brighthub.com)&lt;/li&gt;
&lt;/ul&gt;&lt;/fieldset&gt;&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img alt="Enhanced by Zemanta" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=b23dc881-5da6-4359-ba7c-ea6080856d21" style="border: medium none; float: right;" /&gt;&lt;/a&gt;&lt;span class="zem-script "&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-1978677396463870908?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/1978677396463870908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2010/01/revisiting-rtmpdump.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/1978677396463870908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/1978677396463870908'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2010/01/revisiting-rtmpdump.html' title='Revisiting rtmpdump'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-5984649899315483433</id><published>2009-11-24T23:22:00.006+01:00</published><updated>2010-01-26T16:42:10.060+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='rtmpdump'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='rtmp'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash Video'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Flash Player'/><title type='text'>Downloading RTMP Flash media with rtmpdump</title><content type='html'>EDIT: These instructions are for verson 1.9 of rtmpdump! &lt;a href="http://constcuriosity.blogspot.com/2010/01/revisiting-rtmpdump.html"&gt;Newer versions make this process easier&lt;/a&gt; but also make some of this how-to obsolete. But I've modified the process below so that you can still use them for the legacy 1.9 version.&lt;br /&gt;
&lt;br /&gt;
Today I attended a lecture/demo session on "hacking" various media sites like &lt;a class="zem_slink" href="http://www.youtube.com/sharing" title="YouTube" rel="youtube"&gt;YouTube&lt;/a&gt;, &lt;a class="zem_slink" href="http://hulu.com" title="hulu" rel="homepage"&gt;Hulu&lt;/a&gt;, &lt;a class="zem_slink" href="http://www.last.fm/download" title="Last.fm" rel="homepage"&gt;last.fm&lt;/a&gt;. Essentially it was a practical demonstration of the cat and mouse game hackers play with content pedlars on the internet. It was held at &lt;a href="http://www.kiberpipa.org/en/"&gt;Cyberpipe&lt;/a&gt;, a nifty club in Ljubljana, Slovenia where I study.&lt;br /&gt;
&lt;br /&gt;
One of the tools mentioned was &lt;a href="http://rtmpdump.mplayerhq.hu/"&gt;&lt;b&gt;rtmpdump&lt;/b&gt;&lt;/a&gt; which is apparently made by the same guys as the legendary mplayer, mencoder, and ffmpeg.&lt;br /&gt;
&lt;br /&gt;
I decided to compile it myself from the most recent development version. If you're lazy and brave enough to trust compiled binaries and packages from third parties, go to &lt;a href="http://linuxcentre.net/getiplayer/download"&gt;LinuxCentre&lt;/a&gt; and install &lt;b&gt;flvstreamer&lt;/b&gt; for your operating system. These programs were once one and so far they use the same commands. Read: they work the same.&lt;br /&gt;
&lt;br /&gt;
These instrucitons work on &lt;a class="zem_slink" href="http://www.ubuntu.com/" title="Ubuntu" rel="homepage"&gt;Ubuntu&lt;/a&gt; 9.10 (karmic) but please be aware things change rapidly so the following might not work &lt;i&gt;forever&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
First of all install the tools needed for accessing the code and compilation.&lt;br /&gt;
&lt;pre class="brush: bash"&gt;sudo apt-get install build-essential gcc make subversion libssl0.9.8 libssl-dev libssl0.9.8&lt;/pre&gt;Now check out the &lt;b&gt;latest code&lt;/b&gt; from the &lt;a class="zem_slink" href="http://subversion.tigris.org/" title="Subversion (software)" rel="homepage"&gt;Subversion&lt;/a&gt; repository:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;svn co svn://svn.mplayerhq.hu/rtmpdump/branches/1.x rtmpdump-1.9&lt;/pre&gt;If you prefer a &lt;b&gt;stable version&lt;/b&gt;, run this instead: &lt;br /&gt;
&lt;pre class="brush: bash"&gt;wget http://rtmpdump.mplayerhq.hu/rtmpdump-1.9.tgz
tar xfz rtmpdump-1.9.tgz&lt;/pre&gt;I'm sure the impatient are looking forward to completing this ASAP so here's the final step in setting up rtmpdump on your computer:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;cd rtmpdump-1.9
make linux&lt;/pre&gt;The program now lies in the same folder and you can only run it by telling your shell (like bash) exactly where it is. If you're in the same folder, running it is as simple as &lt;i&gt;./rtmpdump&lt;/i&gt; but &lt;i&gt;./&lt;/i&gt; is only short for the current folder and it gets expanded to (in my case) &lt;i&gt;/home/jasa/rtmpdump/rtmpdump&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Great! Now we need a media site which uses a Adobe's &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol" title="Real Time Messaging Protocol" rel="wikipedia"&gt;RTMP&lt;/a&gt; server. I think I won't get in trouble if I use &lt;a href="http://videolectures.net"&gt;VideoLectures.net&lt;/a&gt; as an example. :) &lt;br /&gt;
&lt;br /&gt;
Lets say I'm interested in &lt;a href="http://videolectures.net/bootcamp07_keller_bss/"&gt;probability and statistics&lt;/a&gt;. And I want to watch these lectures offline, on a train or wherever.&lt;br /&gt;
&lt;br /&gt;
Unfortunately this isn't a straightforward process and quite a bit of work is required. It is derived from a mailing list &lt;a href="http://lists.mplayerhq.hu/pipermail/rtmpdump/2009-November/000053.html"&gt;thread&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I need to see the source code of the web page above, not the rendered output of the web browser. In Firefox press &lt;i&gt;Ctrl+U&lt;/i&gt;. Now I need some hard data to pass to rtmpdump. Search for a javascript section which launches the flash video player. For the statistics video this is the interesting section:&lt;br /&gt;
&lt;pre class="brush: javascript"&gt;var flashvars = {
    
      streamer: "rtmp://oxy.videolectures.net/video",
      file: "2007/pascal/bootcamp07_vilanova/keller_mikaela/bootcamp07_keller_bss_01.flv",
    
    height: '288',
    autostart: "true",
    bufferlength: '5',
  
  
    image: "http://media.videolectures.net/play.png",
  
    id: "FlvPlayer" // last line, no colon ',' !
  };
  swfobject.embedSWF("http://media.videolectures.net/jw-player/player.swf", "video_embed", "384", "307", "9.0.0", "http://media.videolectures.net/swfobject/expressInstall.swf", flashvars, params, attributes);&lt;/pre&gt;Generally searching (&lt;i&gt;Ctrl+F&lt;/i&gt;) for &lt;i&gt;flashvars&lt;/i&gt; should get you near the required data. The line &lt;i&gt;swfobject.embedSWF(...)&lt;/i&gt; causes the video player to load  inside your browser and display the correct media. This media rests on a different server than the webpage and I will use rtmpdump to connect to that server instead of the flash player. Now Adobe has put some roadblocks into the process but lucky for me I have a flying car. :)&lt;br /&gt;
&lt;br /&gt;
I'll just give you the final command now and explain later!&lt;br /&gt;
&lt;pre class="brush: bash"&gt;./rtmpdump -r rtmp://oxy.videolectures.net/video/ -y 2007/pascal/bootcamp07_vilanova/keller_mikaela/bootcamp07_keller_bss_01 -a video -s http://media.videolectures.net/jw-player/player.swf -w ffa4f0c469cfbe1f449ec42462e8c3ba16600f5a4b311980bb626893ca81f388 -x 53910 -o test.flv&lt;/pre&gt;&lt;br /&gt;
The &lt;i&gt;-r&lt;/i&gt; switch requires an argument which is the URL of the media server and is found in the variable &lt;i&gt;streamer&lt;/i&gt; in the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/JavaScript" title="JavaScript" rel="wikipedia"&gt;JavaScript&lt;/a&gt; source code above.&lt;br /&gt;
The &lt;i&gt;-y&lt;/i&gt; switch needs the playpath and that is found  in the JavaScript variable &lt;i&gt;file&lt;/i&gt;, (minus the extension &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Flash_Video" title="Flash Video" rel="wikipedia"&gt;.flv&lt;/a&gt; or .mp4).&lt;br /&gt;
The &lt;i&gt;-a&lt;/i&gt; switch is the name of the used player and usually automatically inferred from the URL. Defining it manually works by copying the part after the server name in the &lt;i&gt;streamer&lt;/i&gt;.&lt;br /&gt;
The &lt;i&gt;-s&lt;/i&gt; switch defines the flash video player which normally connects to the media server. In the example it is the first argument of the function &lt;i&gt;embedSWF&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Here's where things get even more complicated. The media server wants some extra data about this player, specifically its sha256 &lt;a href="http://en.wikipedia.org/wiki/Hash_function"&gt;hash-sum&lt;/a&gt; and size in bytes. So lets get them:&lt;br /&gt;
&lt;pre class="brush: bash"&gt;wget http://media.videolectures.net/jw-player/player.swf
sha256sum player.swf
ls -l player.swf&lt;/pre&gt;Supply the sha256sum to switch &lt;i&gt;-w&lt;/i&gt; and the file size to the &lt;i&gt;-x&lt;/i&gt; switch.&lt;br /&gt;
&lt;br /&gt;
Anything else? Yeah, I need to specify where to save the video with &lt;i&gt;-o&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Run the longest command ever and get yourself a beer (you've earned it)! :)&lt;br /&gt;
&lt;br /&gt;
I admit that doing this for every video gets time consuming but unfortunately it is a procedure specific to every site (look at the mailing list thread link again to see different javascript). But for the same site there's very little extra work.&lt;br /&gt;
&lt;br /&gt;
Hope you lasted this long, be seeing ya!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"&gt;&lt;a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/848004fa-6252-4c10-b1de-c021d169cfd0/" title="Reblog this post [with Zemanta]"&gt;&lt;img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=848004fa-6252-4c10-b1de-c021d169cfd0" alt="Reblog this post [with Zemanta]"&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-5984649899315483433?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/5984649899315483433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2009/11/downloading-rtmp-flash-media-with.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/5984649899315483433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/5984649899315483433'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2009/11/downloading-rtmp-flash-media-with.html' title='Downloading RTMP Flash media with rtmpdump'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-5409870235536321747</id><published>2009-10-26T19:39:00.005+01:00</published><updated>2010-09-24T13:08:28.851+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Open standard'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Flash Player'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML 5'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Automatic Adobe Flash on amd64</title><content type='html'>&lt;span class="zemanta-img separator" style="clear: right;"&gt;&lt;a href="http://en.wikipedia.org/wiki/File:AMD64_Logo.svg" style="clear: right; display: block; float: right; margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="AMD64 Logo" height="288" src="http://upload.wikimedia.org/wikipedia/en/thumb/1/1a/AMD64_Logo.svg/288px-AMD64_Logo.svg.png" style="border: medium none; font-size: 0.8em;" width="288" /&gt;&lt;/a&gt;&lt;span class="zemanta-img-attribution" style="clear: both; float: right; margin-left: 1em; margin-right: 1em; width: 288px;"&gt;Image via &lt;a href="http://en.wikipedia.org/wiki/File:AMD64_Logo.svg"&gt;Wikipedia&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;UPDATE:&lt;/b&gt; Adobe has closed down their webpage which hosts the 64-bit version of Flash for Linux so the method described below no longer works! :(&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yes, apparently I have had a one month lurch. Things have been hectic as the new school year started and I couldn't really believe that almost a month has passed since my last effort!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The state of Adobe's &lt;a class="zem_slink" href="http://www.adobe.com/products/flashplayer/" rel="homepage" title="Adobe Flash Player"&gt;Flash Player&lt;/a&gt; on &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux" rel="wikipedia" title="Linux"&gt;Linux&lt;/a&gt; is &lt;a href="http://xkcd.com/619/"&gt;a sad story&lt;/a&gt;, even more so for the next architecture PCs are migrating to (&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/X86-64" rel="wikipedia" title="X86-64"&gt;AMD64&lt;/a&gt;). The simple truth is that the modern web is unusable sans Flash for the common web surfer.&lt;br /&gt;
While I and others would like to see it displaced by &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Open_standard" rel="wikipedia" title="Open standard"&gt;open standards&lt;/a&gt;, such as the forthcoming &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/HTML_5" rel="wikipedia" title="HTML 5"&gt;HTML5&lt;/a&gt; with the video and canvas elements, that is still far on the horizon and Adobe &lt;a href="http://tech.slashdot.org/story/09/10/07/2126207/Decoding-Adobes-Big-Device-Push?art_pos=2"&gt;isn't exactly idling&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Okay, we Linux users are a pretty small part of the global pie, but we're arguably more technically savvy than the average computer drone. The 32-bit (&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/X86" rel="wikipedia" title="X86"&gt;x86&lt;/a&gt;) version of Flash player can easily be installed from Adobe's site but the amd64 flavour is still an exercise in bash. The software is still deemed to be of alpha quality so perhaps that is the reason why a more friendly install procedure isn't available. Luckily, Linux geeks like Romeo-Adrian Cioaba &lt;a href="http://www.myscienceisbetter.info/install-native-64bit-flash-player-10-on-linux.html"&gt;are friendly&lt;/a&gt;. How quickly a need is scratched now that Ubuntu has gained so much traction!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By modifying his script I have managed to make a version that will automatically download and install the latest version available from &lt;a href="http://labs.adobe.com/downloads/flashplayer10.html"&gt;Adobe Labs&lt;/a&gt;. &lt;b&gt;Be warned:&lt;/b&gt; I make no warranties that this procedure will work indefinitely or that it may not harm your computer. But the code is available for you to analyse so you may convince yourself of its correctness. Best way to learn is probably to execute each line by hand to see what happens. The manuals for the commands are your friends. :) Also, know that whenever you wish to install the version that comes with ubuntu, you need to run just the commands in the first 17 lines. Remember that, write it down somewhere, like in ~/FLASH_UPGRADE.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash"&gt;#!/bin/bash
# Script  created by
# Romeo-Adrian Cioaba romeo.cioaba@spotonearth.com
# Jaša Bartelj jasa.bartelj@gmail.com

echo "Stopping any Firefox that might be running."
sudo killall -9 firefox

echo "Removing any other flash plugin previously installed."
sudo apt-get remove -y --purge flashplugin-nonfree gnash gnash-common mozilla-pl
ugin-gnash swfdec-mozilla libflashsupport nspluginwrapper
sudo rm -f /usr/lib/mozilla/plugins/*flash*
sudo rm -f ~/.mozilla/plugins/*flash*
sudo rm -f /usr/lib/firefox/plugins/*flash*
sudo rm -f /usr/lib/firefox-addons/plugins/*flash*
sudo rm -rfd /usr/lib/nspluginwrapper

echo "Installing Flash Player 10."
cd /tmp
# EDIT: when releasing flash 10.1 adobe changed the site's address.
# I want permalinks! :(  --Jasa B.
#wget http://labs.adobe.com/downloads/flashplayer10.html
wget -q http://labs.adobe.com/downloads/flashplayer10_64bit.html
wget `cat flashplayer10_64bit.html | egrep -o "http:.*"|cut -d\" -f1|grep linux-x86_64.so.tar.gz`
ARCHIVE=`ls libflashplayer-*.linux-x86_64.so.tar.gz`
echo "Version is $ARCHIVE."
tar zxvf $ARCHIVE
sudo cp libflashplayer.so /usr/lib/mozilla/plugins/ 

echo "Linking the libraries so Firefox and apps built on XULRunner can find it."
sudo ln -sf /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/firefox-addons/plugins/
sudo ln -sf /usr/lib/mozilla/plugins/libflashplayer.so  /usr/lib/xulrunner-addons/plugins/

# now doing some cleaning up:
sudo rm -rf flashplayer10.html
sudo rm -rf libflashplayer.so
sudo rm -rf $ARCHIVE&lt;/pre&gt;The most complicated part is really just snipping the HTML for the URL of the archive. Please, enjoy and comment.&lt;br /&gt;
&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img alt="Enhanced by Zemanta" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=a31c75fe-384a-4f1f-9850-0057bc4bf067" style="border: medium none; float: right;" /&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-5409870235536321747?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/5409870235536321747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2009/10/automatic-adobe-flash-on-amd64.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/5409870235536321747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/5409870235536321747'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2009/10/automatic-adobe-flash-on-amd64.html' title='Automatic Adobe Flash on amd64'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-1824223060729467907</id><published>2009-09-25T22:38:00.005+02:00</published><updated>2009-09-25T22:48:12.263+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>The mighty PDF</title><content type='html'>&lt;div class="zemanta-img zemanta-action-dragged" style="margin: 1em; display: block; float: right; width: 266px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Image:PDF.png"&gt;&lt;img alt="Latest PDF File Icon" ilo-full-src="http://upload.wikimedia.org/wikipedia/en/a/a6/PDF.png" src="http://upload.wikimedia.org/wikipedia/en/a/a6/PDF.png" style="border: medium none ; display: block;" height="256" width="256"&gt;&lt;/a&gt;Image via &lt;a href="http://en.wikipedia.org/wiki/Image:PDF.png"&gt;Wikipedia&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;PDF documents are a perfect export target in many applications because they're portable and look the same everywhere. So perfect in fact that there are virtual printers (like &lt;a class="zem_slink" href="http://www.pdfforge.org/products/pdfcreator" rel="homepage" title="PDFCreator"&gt;PDFCreator&lt;/a&gt; for Windows and integrated ones in Linux/*BSDs) which transform any printable file to a PDF.&lt;br /&gt;
&lt;br /&gt;
But they are difficult when you want to change them or combine them.&lt;br /&gt;
&lt;br /&gt;
I've had a folder sitting on my otherwise unburdened desktop for a year. It contained a bunch of scanned images which I wanted to aggregate into a nice and shiny single &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Portable_Document_Format" rel="wikipedia" title="Portable Document Format"&gt;PDF file&lt;/a&gt;. Yeah. My google-fu had some slow reflexes this time and the first tries with &lt;a href="http://www.fpdf.org/"&gt;FPDF&lt;/a&gt;, a &lt;a class="zem_slink" href="http://php.net/" rel="homepage" title="PHP"&gt;PHP&lt;/a&gt; module, were unsuccessful. The images were in the correct format their manual demanded but I could only helplessly bang my head away as the scripts failed with errors of unsupported formats.&lt;br /&gt;
&lt;br /&gt;
Sometimes my determination falters at moments like this and I put off trying to resolve the problem. But I had to push!&lt;br /&gt;
&lt;br /&gt;
My google-fu got some well-deserved rest and found what I was looking for - a &lt;a href="http://www.debianadmin.com/combine-multiple-pdfs-into-one-file-in-ubuntu-linux.html"&gt;solution&lt;/a&gt; using &lt;a class="zem_slink" href="http://www.ghostscript.com/awki" rel="homepage" title="Ghostscript"&gt;GhostScript&lt;/a&gt;. By the way - this solution works for me on &lt;a class="zem_slink" href="http://www.ubuntu.com/" rel="homepage" title="Ubuntu"&gt;Ubuntu Linux&lt;/a&gt; but elsewhere YMMV.&lt;br /&gt;
&lt;br /&gt;
Here's a script I ended up using (&lt;span style="color: red;"&gt;warning:&lt;/span&gt; It overwrites the original images.):&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: bash;"&gt;#!/bin/bash
for filename in *
do
&amp;nbsp;&amp;nbsp;&amp;nbsp; file -bi "$filename" | grep -q "image"
&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $? -eq 0 ]
&amp;nbsp;&amp;nbsp;&amp;nbsp; then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "&amp;nbsp; Converting $filename"
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #Reduce image size by half 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; convert $filename -resize 50% $filename
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #Convert image to single-page PDF 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; convert $filename ${filename%.*}.pdf
&amp;nbsp;&amp;nbsp;&amp;nbsp; fi
done
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combined.pdf -dBATCH *.pdf
&lt;/pre&gt;The &lt;a class="zem_slink" href="http://tiswww.case.edu/php/chet/bash/bashtop.html" rel="homepage" title="Bash"&gt;bash script&lt;/a&gt; relies on &lt;a class="zem_slink" href="http://imagemagick.org/" rel="homepage" title="ImageMagick"&gt;ImageMagick&lt;/a&gt; (the convert command) and GhostScript (the gs command). Best thing is to copy it to a file in the folder with the images destined to comprise the PDF, marking the file as executable and running it! The final PDF will contain all the single-paged PDFs sorted in lexical order.&lt;br /&gt;
&lt;br /&gt;
For the intricacies of GhostScript seen above I will let the devil speak for itself:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:plain;"&gt;$ gs -h
GPL Ghostscript 8.64 (2009-02-03)
Copyright (C) 2009 Artifex Software, Inc.&amp;nbsp; All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
&amp;nbsp;-dNOPAUSE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no pause after page&amp;nbsp;&amp;nbsp; | -q&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; `quiet', fewer messages
&amp;nbsp;-g&amp;lt;width&gt;x&amp;lt;height&gt;&amp;nbsp; page size in pixels&amp;nbsp;&amp;nbsp; | -r&amp;lt;res&gt;&amp;nbsp; pixels/inch resolution
&amp;nbsp;-sDEVICE=&amp;lt;devname&gt;&amp;nbsp; select device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | -dBATCH&amp;nbsp; exit after last file
&amp;nbsp;-sOutputFile=&amp;lt;file&gt; select output file: - for stdout, |command for pipe,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PostScriptLevel3 PDF&lt;/pre&gt;&lt;br /&gt;
&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/f1b1925c-6e30-4434-bfed-5d9519a1f210/" title="Reblog this post [with Zemanta]"&gt;&lt;img alt="Reblog this post [with Zemanta]" class="zemanta-pixie-img" ilo-full-src="http://img.zemanta.com/reblog_e.png?x-id=f1b1925c-6e30-4434-bfed-5d9519a1f210" src="http://img.zemanta.com/reblog_e.png?x-id=f1b1925c-6e30-4434-bfed-5d9519a1f210" style="border: medium none ; float: right;"&gt;&lt;/a&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-1824223060729467907?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/1824223060729467907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2009/09/mighty-pdf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/1824223060729467907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/1824223060729467907'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2009/09/mighty-pdf.html' title='The mighty PDF'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-4608110562082848156</id><published>2009-09-25T20:52:00.005+02:00</published><updated>2009-09-25T21:53:34.885+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='Hello world program'/><category scheme='http://www.blogger.com/atom/ns#' term='SyntaxHighlighter'/><category scheme='http://www.blogger.com/atom/ns#' term='Shell'/><title type='text'>Vanity</title><content type='html'>Seeing my &lt;a href="http://constantcuriousity.blogspot.com/2009/09/first-post.html"&gt;first post&lt;/a&gt; published was accompanied by a healthy dose of feeling accomplishment. But soon I found that the script code left something to be desired.&lt;br /&gt;
&lt;br /&gt;
Prettiness!&lt;br /&gt;
&lt;br /&gt;
After scouring the now humongous &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Blogosphere" rel="wikipedia" title="Blogosphere"&gt;blogosphere&lt;/a&gt; I found people to &lt;a href="http://blog.mediawhole.com/2007/12/blogger-code-formatting-test-2.html"&gt;relate to&lt;/a&gt;. But that's usually easy on the Internet. So after applying google-fu to the problem I found &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;SyntaxHighlighter&lt;/a&gt;! Using it on &lt;a class="zem_slink" href="http://blogger.com/" rel="homepage" title="Blogger"&gt;Blogger&lt;/a&gt; requires a few simple steps which others have &lt;a href="http://spenthil.com/2009/04/12/syntaxhighlighter-2-0-on-blogger/"&gt;explained&lt;/a&gt; but I always try to do it my way so I learn something and memorize the process.&lt;br /&gt;
&lt;br /&gt;
The gist of it is adding more javascript to your blog's HTML template. I appended my &lt;i&gt;&amp;lt;head&amp;gt;&lt;/i&gt; section with this:&lt;br /&gt;
&lt;pre class="brush: xml; font-size: 9"&gt;&amp;lt;link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/&amp;gt; 
&amp;lt;link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/&amp;gt; 
&amp;lt;script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js'&amp;gt;&amp;lt;/script&amp;gt; 
&amp;lt;script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js'&amp;gt;&amp;lt;/script&amp;gt; 
&amp;lt;script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js'&amp;gt;&amp;lt;/script&amp;gt; 
&amp;lt;script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js'&amp;gt;&amp;lt;/script&amp;gt; 
&amp;lt;script language='javascript' src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js'&amp;gt;&amp;lt;/script&amp;gt; 
&amp;lt;script type='text/javascript'&amp;gt; 
 SyntaxHighlighter.config.bloggerMode = true;
 SyntaxHighlighter.all();
&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;
The javascripts parse any &lt;i&gt;&amp;lt;pre&amp;gt;&lt;/i&gt; blocks in your blog post and display the code in a nice way. The default style  clashes a bit with my blog template but I might fix that. What good is dabbling in vanity if it doesn't achieve its purpose? :)&lt;br /&gt;
&lt;br /&gt;
So let me try Hello World again:&lt;br /&gt;
&lt;pre class="brush: bash;"&gt;#!/bin/bash
echo 'Hello, world!'
if [ $? -eq 0 ]
then
    ./comment &gt; /dev/null
fi&lt;/pre&gt;:P&lt;br /&gt;
&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/7cff08b9-0d0c-4c05-aa82-863ef896225d/" title="Reblog this post [with Zemanta]"&gt;&lt;img alt="Reblog this post [with Zemanta]" class="zemanta-pixie-img" ilo-full-src="http://img.zemanta.com/reblog_e.png?x-id=7cff08b9-0d0c-4c05-aa82-863ef896225d" src="http://img.zemanta.com/reblog_e.png?x-id=7cff08b9-0d0c-4c05-aa82-863ef896225d" style="border: medium none ; float: right;"&gt;&lt;/a&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-4608110562082848156?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/4608110562082848156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2009/09/vanity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/4608110562082848156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/4608110562082848156'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2009/09/vanity.html' title='Vanity'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5919363643450621280.post-6447598122373157521</id><published>2009-09-23T23:14:00.001+02:00</published><updated>2010-09-24T13:01:15.040+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>First post</title><content type='html'>&lt;span class="zemanta-img separator" style="clear: right;"&gt;&lt;a href="http://www.flickr.com/photos/17425845@N00/472097903" style="clear: right; display: block; float: right; margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="hello, world" height="180" src="http://farm1.static.flickr.com/194/472097903_b781a0f4f8_m.jpg" style="border: medium none; font-size: 0.8em;" width="240" /&gt;&lt;/a&gt;&lt;span class="zemanta-img-attribution" style="clear: both; float: right; margin-left: 1em; margin-right: 1em; width: 240px;"&gt;Image by &lt;a href="http://www.flickr.com/photos/17425845@N00/472097903"&gt;oskay&lt;/a&gt; via Flickr&lt;/span&gt;&lt;/span&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Time for the first entry.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;I could never come up with a good plan on what to write about or perhaps I just didn't want to write strictly about one subject. &lt;/span&gt;&lt;span style="font-size: small;"&gt;Oh how the times have changed.&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Here I am, typing away precious moments trying to convey a message of what this blog will be about in an &lt;a href="http://en.wikipedia.org/wiki/Natural_language_processing#Tasks_and_limitations"&gt;ambiguous&lt;/a&gt; natural language.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Let me give you a hint:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;#!/bin/bash&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;echo 'Hello, world!'&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;if [ $? -eq 0 ]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;then &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ./comment&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;fi&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;Hopefully that didn't drive you away with &lt;a href="http://en.wikipedia.org/wiki/Warp_drive#Warp_velocities"&gt;WARP 9.9&lt;/a&gt;! :) Why don't you subscribe to the &lt;a href="http://constantcuriousity.blogspot.com/feeds/posts/default?alt=rss"&gt;feed&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Web_feed"&gt;be notified&lt;/a&gt; of changes automatically.&lt;br /&gt;
&lt;div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img alt="Enhanced by Zemanta" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=07815dbe-26a3-4069-8f07-3e44fd225a29" style="border: medium none; float: right;" /&gt;&lt;/a&gt;&lt;span class="zem-script more-related pretty-attribution"&gt;&lt;script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"&gt;
&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5919363643450621280-6447598122373157521?l=constcuriosity.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://constcuriosity.blogspot.com/feeds/6447598122373157521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://constcuriosity.blogspot.com/2009/09/first-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/6447598122373157521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5919363643450621280/posts/default/6447598122373157521'/><link rel='alternate' type='text/html' href='http://constcuriosity.blogspot.com/2009/09/first-post.html' title='First post'/><author><name>J.B.</name><uri>http://www.blogger.com/profile/10414185936020618693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/194/472097903_b781a0f4f8_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
