<?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-4670131101708278676</id><updated>2011-07-29T05:33:41.818-03:00</updated><category term='UNIX'/><category term='steganography'/><category term='KDE'/><category term='Slackpkg'/><category term='xtrs'/><category term='ntop'/><category term='Bell Labs'/><category term='cli'/><category term='shell scripting'/><category term='NTP'/><category term='comics'/><category term='Slack/390'/><category term='nagios'/><category term='Qemu'/><category term='Firewall'/><category term='BSD'/><category term='X'/><category term='networking'/><category term='MIT'/><category term='Lego'/><category term='Maintenance'/><category term='Rio de Janeiro'/><category term='emulation'/><category term='free software'/><category term='Rio 2016'/><category term='Hercules'/><category term='VMware'/><category term='configuration'/><category term='TRS-80'/><category term='Linux'/><category term='kernel'/><category term='internet'/><category term='history'/><category term='POVRay'/><category term='gimp'/><category term='random thoughts'/><category term='Slackware'/><category term='cacti'/><category term='Lego Sculptures'/><category term='Monitoring'/><category term='Tux'/><title type='text'>Niels Horn's Blog has moved!</title><subtitle type='html'>Random thoughts, tips &amp;amp; tricks about Slackware-Linux, Lego and Star Wars</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>66</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-2160524413123934474</id><published>2010-01-04T13:18:00.002-02:00</published><updated>2010-01-04T13:22:57.839-02:00</updated><title type='text'>New blog – Old blog…</title><content type='html'>This blog has moved to my personal site: &lt;a href="http://blog.nielshorn.net"&gt;http://blog.nielshorn.net&lt;/a&gt;. Please update your bookmarks!&lt;br /&gt;&lt;br /&gt;All existing posts have been imported into the new blog and the old copies will stay here to guarantee that older links continue to function.&lt;br /&gt;&lt;br /&gt;Since the update of all DNS servers on the internet may take up to 24 hours, please try again later if the link does not work yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-2160524413123934474?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/2160524413123934474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=2160524413123934474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2160524413123934474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2160524413123934474'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2010/01/new-blog-old-blog.html' title='New blog – Old blog…'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-992144424771715833</id><published>2010-01-02T18:54:00.002-02:00</published><updated>2010-01-02T19:02:48.379-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random thoughts'/><title type='text'>2010...</title><content type='html'>2009 is gone, 2010 has started.&lt;br /&gt;&lt;br /&gt;Lots of sad news here in Rio, after all the rain that has fallen here over the last few days, but life goes on :(&lt;br /&gt;&lt;br /&gt;In just a few days I will officially be on vacation, so I might not have too much time to write here, but I still have some raw material I want to publish, like some experiences with nagios (working very fine here), ntop, cacti, zabbix, etc.&lt;br /&gt;&lt;br /&gt;And I'm working on some lay-out changes for my blog, so be prepared to see some novelties here :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Happy New Year!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-992144424771715833?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/992144424771715833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=992144424771715833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/992144424771715833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/992144424771715833'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2010/01/2010.html' title='2010...'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5201519922622779879</id><published>2009-12-31T14:13:00.002-02:00</published><updated>2009-12-31T15:12:51.514-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Using a 32-bits program in a 64-bits Linux environment</title><content type='html'>When Slackware released its first test version of Slackware64, I installed it on a separate partition to try it out. I was immediately impressed by the performance boost of some programs, especially some graphic programs I use.&lt;br /&gt;&lt;br /&gt;Since I compile most programs that are not available on a standard Slackware installation from source, I didn't have too much trouble switching completely from 32-bits to 64-bits when the official release came out.&lt;br /&gt;But for some programs the source code is not available. The original author / site may have disappeared, or it might simply be "closed" software.&lt;br /&gt;I had this problem with some older programs I still used and they simply would not run on Slackware64. The error they normally return is:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;program_name&amp;gt;: No such file or directory&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This error actually means that the binary file is looking for some (32-bits) library it cannot find, simply because they do not exist on pure 64-bits Linux installations.&lt;br /&gt;&lt;br /&gt;One option was to go "multi-lib" - install the 32-bits libraries on my Slackware64 box. But I did not want to go that way, as I preferred to keep my installation as "pure" as possible.&lt;br /&gt;&lt;br /&gt;So I started looking for another solution, and on the &lt;a href="http://www.linuxquestions.org/"&gt;LinuxQuestions&lt;/a&gt;.org forum someone pointed me to &lt;a href="http://statifier.sourceforge.net/"&gt;statifier&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Statifier simply combines the binary executable with all the libraries it needs into one (big!) executable "semi-static" file. I won't go into the details how it does that (because I also do not understand all the details...), so if you want to know more, check out the site of the author.&lt;br /&gt;&lt;br /&gt;The only problem is that you will need a 32-bits machine where your binary works fine, to "statify" it. I still had my 32-bits Slackware partition, so no problem for me here.&lt;br /&gt;&lt;br /&gt;Statifier is open source software, so you can build it yourself, or get my package for Slackware on my &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After installing or building Statifier on your 32-bits machine, you can use it to "statify" your 32-bits binary like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ statifier &amp;lt;binary&amp;gt; &amp;lt;new_binary&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Remember that the result will be a lot bigger than the original, as it includes all the libraries that are normally loaded dynamically. As an example, I used it on "l3p", a small program to convert LDraw files to POV-Ray files, only available in a 32-bits version.&lt;br /&gt;The original file was 140K, the statified version is 2.7M :)&lt;br /&gt;But it solved my problem and I can use l3p on my 64-bits Slackware64 installation!&lt;br /&gt;&lt;br /&gt;If you want to use l3p on Slackware64 as well but this is all too technical for you, you can get the statified version of l3p as a Slackware package from my &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5201519922622779879?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5201519922622779879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5201519922622779879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5201519922622779879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5201519922622779879'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/12/using-32-bits-program-in-64-bits-linux.html' title='Using a 32-bits program in a 64-bits Linux environment'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5116486453460817949</id><published>2009-12-31T12:19:00.002-02:00</published><updated>2009-12-31T12:25:32.774-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='POVRay'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>"lgeo" Slackware package available</title><content type='html'>After some requests, I created a Slackware package with the lgeo parts library. It can be downloaded from my &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you prefer, you can download the library from the author's &lt;a href="http://www.digitalbricks.org/"&gt;website&lt;/a&gt; and use the &lt;a href="http://slackbuilds.org/repository/13.0/graphics/lgeo/"&gt;SlackBuild&lt;/a&gt; to create your own package.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5116486453460817949?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5116486453460817949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5116486453460817949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5116486453460817949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5116486453460817949'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/12/lgeo-slackware-package-available.html' title='&quot;lgeo&quot; Slackware package available'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-1427587135751055762</id><published>2009-12-25T12:40:00.003-02:00</published><updated>2009-12-25T12:45:46.422-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Updated LDraw_data package available</title><content type='html'>I created an updated package with the LDRAW Library of Lego pieces that includes all parts up to September, 16th, 2009.&lt;br /&gt;&lt;br /&gt;The "unix-complete" file from ldraw.org has not been updated for years, so this package was based on the Windows file "complete.zip" but can be used without any problems under Slackware.&lt;br /&gt;&lt;br /&gt;As always, the package can be downloaded from my &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-1427587135751055762?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/1427587135751055762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=1427587135751055762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1427587135751055762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1427587135751055762'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/12/updated-ldrawdata-package-available.html' title='Updated LDraw_data package available'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-8111773547506002295</id><published>2009-12-24T16:58:00.017-02:00</published><updated>2009-12-31T14:12:42.627-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='POVRay'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Lego &amp; POV-Ray on Linux</title><content type='html'>Some time ago I promised to give some basic instructions on how to create nice images of Lego constructions with POV-Ray on Linux. Now that Christmas is arriving, I finally found some time to convert my own instructions into something that can almost be called a "tutorial" :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What will you need:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;LeoCAD - to "build" your constrution&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(optional) a viewer program, like LDView or ldglite&lt;/li&gt;&lt;br /&gt;&lt;li&gt;l3p - to convert the .ldr (LDRaw) file to .pov (POV-Ray)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;(optional) The "lgeo" parts collection&lt;/li&gt;&lt;br /&gt;&lt;li&gt;POV-Ray - the "Ray-Tracer program"&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;If you use Slackware, you can find packages for all of these on my &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;site&lt;/a&gt; and SlackBuilds for all except 3 on &lt;a href="http://www.slackbuilds.org/"&gt;www.slackbuilds.org&lt;/a&gt;. For many other Linux distributions packages are available in their repositories.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;First step - Build something!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you do not have any LDraw file yet with a Lego creation, then now is the time to make one.&lt;br /&gt;As an example for this tutorial, I built a little penguin, based on the instructions &lt;a href="http://www.instructables.com/id/Build-a-lego-Penguin-Tux-the-linux-penguin-if-you/"&gt;here&lt;/a&gt;, with LeoCAD:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SzPDeS9OQAI/AAAAAAAAAVg/mh_CW8Tb1ok/s1600-h/1+-+LeoCAD.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 249px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SzPDeS9OQAI/AAAAAAAAAVg/mh_CW8Tb1ok/s320/1+-+LeoCAD.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418889701908955138" /&gt;&lt;/a&gt;&lt;br /&gt;Save your creation with LeoCAD as a ".ldr" file ("File" - "Save as" from the menu). The resulting file in my case was:&lt;br /&gt;&lt;pre&gt;0 Model exported from LeoCAD&lt;br /&gt;0 Original name: Penguin.lcd&lt;br /&gt;&lt;br /&gt; 1 14 -50.00 -0.00 -60.00 -0.00 0.00 1.00 -0.00 1.00 -0.00 -1.00 -0.00 -0.00 3002.DAT&lt;br /&gt; 1 15 -50.00 -24.00 -60.00 -1.00 0.00 -0.00 0.00 1.00 -0.00 0.00 -0.00 -1.00 3004.DAT&lt;br /&gt; 1 15 -50.00 -48.00 -60.00 -1.00 0.00 -0.00 0.00 1.00 -0.00 0.00 -0.00 -1.00 3004.DAT&lt;br /&gt; 1 0 -50.00 -24.00 -40.00 -1.00 0.00 -0.00 0.00 1.00 -0.00 0.00 -0.00 -1.00 3004.DAT&lt;br /&gt; 1 0 -70.00 -48.00 -40.00 -1.00 0.00 -0.00 0.00 1.00 -0.00 0.00 -0.00 -1.00 3004.DAT&lt;br /&gt; 1 0 -30.00 -48.00 -40.00 -1.00 0.00 -0.00 0.00 1.00 -0.00 0.00 -0.00 -1.00 3004.DAT&lt;br /&gt; 1 0 -50.00 -72.00 -40.00 -1.00 0.00 -0.00 0.00 1.00 -0.00 0.00 -0.00 -1.00 3004.DAT&lt;br /&gt; 1 14 -50.00 -72.00 -70.00 -1.00 0.00 -0.00 0.00 1.00 -0.00 0.00 -0.00 -1.00 3003.DAT&lt;br /&gt; 1 0 -50.00 -96.00 -50.00 -1.00 0.00 -0.00 0.00 1.00 -0.00 0.00 -0.00 -1.00 3003.DAT&lt;br /&gt;0&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Second step - View your model with ldglite or LDView&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This step can be skipped, but it is a nice test to check if the programs can find all the LDRAW parts on your computer. LeoCAD uses its own parts library, so being able to view it there does not necessarily mean that the LDRAW library is accessible.&lt;br /&gt;&lt;br /&gt;This is how the penguin looks like in ldglite, a simple but very fast program to visualize your creations:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SzPGHDm_D9I/AAAAAAAAAVo/z968ns3R930/s1600-h/2+-+ldglite.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 252px; height: 320px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SzPGHDm_D9I/AAAAAAAAAVo/z968ns3R930/s320/2+-+ldglite.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418892601187045330" /&gt;&lt;/a&gt;&lt;br /&gt;A second option is to use LDView, a very nice and very complete program to visualize your creations. It creates a more realistic view of the model, with some shading effects:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SzPGnu6GxQI/AAAAAAAAAVw/18VQRU8MKCQ/s1600-h/3+-+LDView.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 275px; height: 320px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SzPGnu6GxQI/AAAAAAAAAVw/18VQRU8MKCQ/s320/3+-+LDView.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418893162565780738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Third step - Ray-Tracing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So the images created by LDView are nice. But we want something even better! Enter POV-Ray, a very professional Ray-Tracing program that is completely free.&lt;br /&gt;It "traces" light-rays, by tracing paths of "light particles" from one or more light sources, bouncing off surfaces and reflecting into the lens of a camera.&lt;br /&gt;&lt;br /&gt;So we define the position and colors of the light sources, the position and angle of the camera, the types of surfaces (smooth, reflective, rough, etc.), etc.&lt;br /&gt;&lt;br /&gt;Sounds complicated? Well, there is a very nice utility called l3p that tries to do most if it automatically to help us get started. l3p reads an "ldr" file, guesses the best position and angle for the camera so that the whole creation will fit in the image, and sets up three light sources around the model. Then it creates a .pov file that can be read by POV-Ray.&lt;br /&gt;&lt;br /&gt;l3p needs to know where the LDRAW library is stored on your computer. This can be set by the LDRAWDIR environment variable like:&lt;br /&gt;&lt;pre&gt;$ export LDRAWDIR=/usr/share/LDRAW&lt;/pre&gt;&lt;br /&gt;Put this in your start-up script like ~/.bash_profile (if you use bash for a shell).&lt;br /&gt;&lt;br /&gt;Enough theory, let's create our first .pov file:&lt;br /&gt;&lt;pre&gt;$ l3p -o Penguin.ldr&lt;/pre&gt;&lt;br /&gt;This reads the "Penguin.ldr" file we created and writes a "Penguin.pov" file in the current directory.&lt;br /&gt;I used just one option - "-o" - which instructs l3p to overwrite Penguin.pov if it already exists, since we'll perform various tests before we get the final result.&lt;br /&gt;&lt;br /&gt;Now let's run POV-Ray to transform the .pov file into an image:&lt;br /&gt;&lt;pre&gt;$ povray +OPenguin.png +FN +P Penguin.pov&lt;/pre&gt;&lt;br /&gt;The options here mean:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;+OPenguin.png - Output will be Penguin.png&lt;/li&gt;&lt;br /&gt;&lt;li&gt;+FN - Format will be a PNG file&lt;/li&gt;&lt;br /&gt;&lt;li&gt;+P - Pause after creating the image, showing the result on the screen&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The result should look like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SzPQBoxqonI/AAAAAAAAAV4/K1egUC_eETs/s1600-h/4a-Penguin.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SzPQBoxqonI/AAAAAAAAAV4/K1egUC_eETs/s320/4a-Penguin.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418903503201018482" /&gt;&lt;/a&gt;&lt;br /&gt;For a first test, it's just about "OK"... But we can do better than this!&lt;br /&gt;&lt;br /&gt;Since in most tests we'll run l3p and povray as a sequence, we'll put both commands on one line like this:&lt;br /&gt;&lt;pre&gt;$ l3p &amp;lt;options&amp;gt; &amp;&amp; povray &amp;lt;options&amp;gt;&lt;/pre&gt;&lt;br /&gt;The "&amp;&amp;" means that the next command is only executed if the previous terminated without error.&lt;br /&gt;&lt;br /&gt;So let's try:&lt;br /&gt;&lt;pre&gt;$ l3p -b -o Penguin.ldr &amp;&amp; povray +OPenguin.png +FN +W640 +H480 +P Penguin.pov&lt;/pre&gt;&lt;br /&gt;What did we add:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;-b - add a standard blue background to replace the black void&lt;/li&gt;&lt;br /&gt;&lt;li&gt;+W640 - Create the image with a width of 640 pixels instead of the standard 320&lt;/li&gt;&lt;br /&gt;&lt;li&gt;+H480 - and a height of 480 pixels instead of 240&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The result should look like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SzPR_gnQKSI/AAAAAAAAAWA/t2aaAUA2Jmk/s1600-h/4b-Penguin.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SzPR_gnQKSI/AAAAAAAAAWA/t2aaAUA2Jmk/s320/4b-Penguin.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418905665673373986" /&gt;&lt;/a&gt;&lt;br /&gt;Let's improve the image a bit more:&lt;br /&gt;&lt;pre&gt;$ l3p -b -q4 -bu -o Penguin.ldr &amp;&amp; povray +OPenguin.png +FN +W640 +H480 +A +P Penguin.pov&lt;/pre&gt;&lt;br /&gt;The new options are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;-q4 - Quality level 4, this includes the "Lego" name on the studs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;-bu - Create "bumps", this makes the surfaces more "uneven", or more realistic&lt;/li&gt;&lt;br /&gt;&lt;li&gt;+A - Anti-aliasing, this prevents those "jagged edges"&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;This should be the result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SzPUYpZC5hI/AAAAAAAAAWI/UeqkHuDvQnU/s1600-h/4d-Penguin.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SzPUYpZC5hI/AAAAAAAAAWI/UeqkHuDvQnU/s320/4d-Penguin.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418908296549688850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Advanced options&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As I wrote in the beginning, l3p automatically guesses the best position and angle for the camera and light sources. But we can change them as we please.&lt;br /&gt;Let's try something:&lt;br /&gt;&lt;pre&gt;$ l3p -b -q4 -bu -cg40,45 -cpct10 -f -o Penguin.ldr &amp;&amp; povray +OPenguin.png +FN +W640 +H480 +A +P Penguin.pov&lt;/pre&gt;&lt;br /&gt;I included two new options:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;-cg40,45 - Put the camera at "globe" positions 40° latitude and 45° longitude (the default is 30,45 so we put it a bit "higher")&lt;/li&gt;&lt;br /&gt;&lt;li&gt;-cpct10 - move the camera back 10%, so that the object is not so close to the edges of the image&lt;/li&gt;&lt;br /&gt;&lt;li&gt;-f - put a "floor" under the penguin instead of letting it float in the sky, so that we can see the shadows of the light sources&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Here is the result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SzPWVTuOZ1I/AAAAAAAAAWQ/zwlRNtDbgM4/s1600-h/4e-Penguin.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SzPWVTuOZ1I/AAAAAAAAAWQ/zwlRNtDbgM4/s320/4e-Penguin.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418910438216591186" /&gt;&lt;/a&gt;&lt;br /&gt;You can play around with the position of the light sources using the "-lg" option. I'll leave this as an exercise! :)&lt;br /&gt;&lt;br /&gt;There are many more advanced options to try. Type "l3p" without any options to see the complete list! If you have a good tip, feel free to post a comment so that I can learn something new.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using the lgeo library&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The images we created with the standard l3p + povray combination look quite good, but when we enlarge the images, the pieces look a bit unrealistic, with edges that are too sharp, etc.&lt;br /&gt;&lt;br /&gt;Enter the "lgeo" library of pieces...&lt;br /&gt;&lt;br /&gt;The lgeo pieces are specially designed for use with POV-Ray, with more realistic edges, surfaces, etc. l3p can automatically replace all LDRAW pieces with lgeo pieces if a substitute is available (any many are available, at least for the more "standard" pieces).&lt;br /&gt;&lt;br /&gt;We just need to include the "-lgeo" parameter (and have the lgeo library installed and "readable" by povray - this needs some configuration...).&lt;br /&gt;This created a nice image of our Penguin at a larger size:&lt;br /&gt;&lt;pre&gt;$ l3p -b -q4 -bu -cg40,45 -cpct10 -f -lgeo -o Penguin.ldr &amp;&amp; povray +OPenguin.png +FN +W1280 +H960 +A +P Penguin.pov&lt;/pre&gt;&lt;br /&gt;And this is the result (click on the image to see the full-scale picture):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SzPZmDFDEhI/AAAAAAAAAWY/H5uIOhIFde4/s1600-h/4f-Penguin.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SzPZmDFDEhI/AAAAAAAAAWY/H5uIOhIFde4/s320/4f-Penguin.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418914024341574162" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see, the studs and the edges look more realistic in this picture.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-8111773547506002295?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/8111773547506002295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=8111773547506002295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8111773547506002295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8111773547506002295'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/12/lego-pov-ray-on-linux.html' title='Lego &amp; POV-Ray on Linux'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/SzPDeS9OQAI/AAAAAAAAAVg/mh_CW8Tb1ok/s72-c/1+-+LeoCAD.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-2596421326282555787</id><published>2009-12-21T09:21:00.002-02:00</published><updated>2009-12-21T09:32:41.459-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>LDView error "libboost_thread-mt.so"</title><content type='html'>For those who use LDView on Slackware-current and noticed that it suddenly stopped working: the problem is in the latest update of the "boost" library:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;+--------------------------+&lt;br /&gt;Thu Dec 17 20:51:37 UTC 2009&lt;br /&gt;...&lt;br /&gt;l/boost-1.41.0-x86_64-1.txz: Upgraded.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This latest update does not include the *-mt (=multi-thread) libraries, as the "normal" version is already multi-threaded.&lt;br /&gt;&lt;br /&gt;The solution to get LDView working again is simply rebuild it from the &lt;a href="http://slackbuilds.org/repository/13.0/graphics/LDView/"&gt;SlackBuild&lt;/a&gt;:&lt;br /&gt;- Download the SlackBuild script &amp; untar it&lt;br /&gt;- Download the source for LDView&lt;br /&gt;- run the SlackBuild as:&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# BUILD=2 ./LDView.SlackBuild&lt;/code&gt;&lt;br /&gt;- use upgradepkg to upgrade your LDView&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-2596421326282555787?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/2596421326282555787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=2596421326282555787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2596421326282555787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2596421326282555787'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/12/ldview-error-libboostthread-mtso.html' title='LDView error &quot;libboost_thread-mt.so&quot;'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6828414102721779169</id><published>2009-11-30T21:50:00.002-02:00</published><updated>2009-11-30T22:01:08.175-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comics'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>QComicBook 0.5.0 released</title><content type='html'>Today (*) a new version of &lt;a href="http://linux.bydg.org/~yogin/"&gt;QComicBook &lt;/a&gt;was released - 0.5.0. The release announcement can be read on &lt;a href="http://freshmeat.net/projects/qcomicbook#release_308858"&gt;freshmeat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I submitted a new SlackBuild script to &lt;a href="http://slackbuilds.org"&gt;SlackBuilds.org&lt;/a&gt;. The previous one, for version 0.4.4, won't work as the author has changed to using cmake.&lt;br /&gt;&lt;br /&gt;If you can't wait for the SlackBuild to be approved, you can download complete packages from my &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;site &lt;/a&gt;- both for Slackware 32 &amp; 64 bits.&lt;br /&gt;&lt;br /&gt;* Actually, today or yesterday, depending on your timezone! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6828414102721779169?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6828414102721779169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6828414102721779169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6828414102721779169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6828414102721779169'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/11/qcomicbook-050-released.html' title='QComicBook 0.5.0 released'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-545488526215888576</id><published>2009-11-29T18:22:00.003-02:00</published><updated>2009-11-29T19:04:17.347-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ntop'/><category scheme='http://www.blogger.com/atom/ns#' term='Monitoring'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='cacti'/><category scheme='http://www.blogger.com/atom/ns#' term='nagios'/><title type='text'>Monitoring your network and servers</title><content type='html'>I've been busy over the last few weeks evaluating some software to monitor servers, network utilization, etc. I have tested several programs and ended up using three: &lt;a href="http://www.nagios.org/"&gt;nagios&lt;/a&gt;, &lt;a href="http://www.cacti.net/"&gt;cacti&lt;/a&gt;, and &lt;a href="http://www.ntop.org/"&gt;ntop&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All of these are free &amp; open software. For nagios and cacti you can download SlackBuild scripts from &lt;a href="http://slackbuilds.org/"&gt;slackbuilds.org&lt;/a&gt; maintained by me. For cacti, if you prefer a complete package, you can download one for Slackware &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For ntop, I adapted a SlackBuild originally written by Michiel van Wessem to install the newer 3.3.10 version. The ntop authors decided to automatically download &amp; install some dependencies (Lua + GeoIP), even if you already have those installed. Since this is a very bad idea (they install it the way they like, while with Slackware &lt;span style="font-weight:bold;"&gt;YOU&lt;/span&gt; are supposed to be in control), I adapted their 'configure.in' and 'Makefile.am' scripts to simply check if those programs are installed and exit if they are not.&lt;br /&gt;Then you can install them the way you like (and following the normal standards) and install ntop afterwards.&lt;br /&gt;&lt;br /&gt;With Michiel's permission, I submitted a new SlackBuild script for ntop so SlackBuilds.org that is currently in the pending queue.&lt;br /&gt;&lt;br /&gt;Over the next few days / weeks I hope to have some time to elaborate on these three packages and write some hints on how to install and configure them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-545488526215888576?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/545488526215888576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=545488526215888576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/545488526215888576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/545488526215888576'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/11/monitoring-your-network-and-servers.html' title='Monitoring your network and servers'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-4540213417761069147</id><published>2009-10-15T21:52:00.003-03:00</published><updated>2009-10-16T08:49:03.299-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comics'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><title type='text'>Reading Comics on your screen...</title><content type='html'>If you like to read comic books you might know about the enormous collections of digitalized copies that float around the internet. Normally they are in '.cbr' or '.cbz' format, actually simple rar'd or zipped collections of images.&lt;br /&gt;&lt;br /&gt;To read them on your computer, you can either unpack the file and use a standard image viewer, or find a special program to open the .cbr or .cbz files and display the "pages" of the comic.&lt;br /&gt;&lt;br /&gt;For Linux you can use &lt;a href="http://linux.bydg.org/~yogin/#"&gt;QComicBook&lt;/a&gt;, a very nice program that uses the qt4 library of KDE4 (but qt4 can also be installed on systems based on Gnome, Xfce, etc. - you do not need the complete KDE environment):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/Sthcl62SHjI/AAAAAAAAAUI/cdshZ7YkVeg/s1600-h/qcomicbook.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 290px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/Sthcl62SHjI/AAAAAAAAAUI/cdshZ7YkVeg/s320/qcomicbook.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5393162360298020402" /&gt;&lt;/a&gt;&lt;br /&gt;You'll get various zoom modes (page, 2-pages, japanese, rotate, full-screen, etc) to enjoy your comics wherever you are. I like to take some with me on my trips, so that I can read them at night in the hotel, etc.&lt;br /&gt;&lt;br /&gt;If you use Slackware, you can get packages for both the 32 &amp; 64 bits versions on my &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-4540213417761069147?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/4540213417761069147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=4540213417761069147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/4540213417761069147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/4540213417761069147'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/10/reading-comics-on-your-screen.html' title='Reading Comics on your screen...'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/Sthcl62SHjI/AAAAAAAAAUI/cdshZ7YkVeg/s72-c/qcomicbook.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6008441986681787895</id><published>2009-10-11T12:39:00.003-03:00</published><updated>2009-10-11T12:47:17.145-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='POVRay'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego Sculptures'/><title type='text'>Lego and Linux (part 5)</title><content type='html'>After exchanging a few e-mails with the author, I have managed to build Slackware packages for &lt;a href="http://www.leocad.org"&gt;LeoCAD&lt;/a&gt;, both 32 and 64-bits versions.&lt;br /&gt;LeoCAD is a wonderful piece of software to create your own Lego constructions virtually on your computer - with an unlimited amount of pieces :-)&lt;br /&gt;It can import and export LDR (LDraw) files, and export to POV-Ray for creating fantastic images (see my previous post about POV-Ray).&lt;br /&gt;Here is a screenshot of LeoCAD running on my 64-bit desktop:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/StH91hPGKOI/AAAAAAAAAT4/-i2rdipuWhc/s1600-h/lego_soft_leocad_elevcab_0.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 249px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/StH91hPGKOI/AAAAAAAAAT4/-i2rdipuWhc/s320/lego_soft_leocad_elevcab_0.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5391369324835776738" /&gt;&lt;/a&gt;&lt;br /&gt;The packages can be downloaded from my &lt;a href="http://www.nielshorn.net/other/lego_soft.php"&gt;site&lt;/a&gt;, where more screenshots can be seen as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6008441986681787895?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6008441986681787895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6008441986681787895' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6008441986681787895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6008441986681787895'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/10/lego-and-linux-part-5.html' title='Lego and Linux (part 5)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/StH91hPGKOI/AAAAAAAAAT4/-i2rdipuWhc/s72-c/lego_soft_leocad_elevcab_0.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6645715699294991846</id><published>2009-10-06T00:46:00.005-03:00</published><updated>2009-10-11T12:50:03.933-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='POVRay'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Lego and Linux (part 4)</title><content type='html'>Today I finished the Slackware packages for &lt;a href="http://www.povray.org/"&gt;POV-Ray&lt;/a&gt;, the Persistence of Vision Raytracer, a fantastic free tool for creating stunning 3D images.&lt;br /&gt;It can be used also for creating beautiful images of your Lego creations. In a future post I might write a small "how-to" with step-by-step instructions, but here is a small example:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/StH-mAket2I/AAAAAAAAAUA/R-ehI8Dvk8s/s1600-h/lego_soft_povray_giftbox.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 256px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/StH-mAket2I/AAAAAAAAAUA/R-ehI8Dvk8s/s320/lego_soft_povray_giftbox.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5391370157880686434" /&gt;&lt;/a&gt;&lt;br /&gt;As always, the packages can be downloaded from my &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6645715699294991846?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6645715699294991846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6645715699294991846' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6645715699294991846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6645715699294991846'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/10/lego-and-linux-part-4.html' title='Lego and Linux (part 4)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/StH-mAket2I/AAAAAAAAAUA/R-ehI8Dvk8s/s72-c/lego_soft_povray_giftbox.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5292943290679678186</id><published>2009-10-04T23:43:00.005-03:00</published><updated>2009-10-04T23:52:12.610-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Lego and Linux (part 3)</title><content type='html'>LeoCAD is not so simple as I thought... The 64-bit version compiles after some patching, but it crashes horribly with some basic things.&lt;br /&gt;While sorting this out, I built packages for &lt;a href="http://ldglite.sourceforge.net/"&gt;ldglite&lt;/a&gt;, a little program to view and edit LDraw files. It can be called from the command line also to create images of your drawings.&lt;br /&gt;Here is an example of my elevator:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SsleQ6HA1pI/AAAAAAAAATo/C73E2EQQghg/s1600-h/lego_soft_ldglite_elevator.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 311px; height: 320px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SsleQ6HA1pI/AAAAAAAAATo/C73E2EQQghg/s320/lego_soft_ldglite_elevator.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5388942073695098514" /&gt;&lt;/a&gt;&lt;br /&gt;The Slackware packages can be downloaded from my &lt;a href="http://www.nielshorn.net/other/lego_soft.php"&gt;site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5292943290679678186?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5292943290679678186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5292943290679678186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5292943290679678186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5292943290679678186'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/10/lego-and-linux-part-3.html' title='Lego and Linux (part 3)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q65cj3yCRO4/SsleQ6HA1pI/AAAAAAAAATo/C73E2EQQghg/s72-c/lego_soft_ldglite_elevator.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7067234871786299426</id><published>2009-10-03T15:36:00.004-03:00</published><updated>2009-10-04T23:51:02.110-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Lego and Linux (part 2)</title><content type='html'>I finished building the Slackware packages for LDView 4.1 (Beta 1).&lt;br /&gt;&lt;br /&gt;There are just two dependencies:&lt;br /&gt;- tinyxml&lt;br /&gt;- LDraw_data (the files with all the different Lego parts)&lt;br /&gt;&lt;br /&gt;All packages can be downloaded from my &lt;a href="http://www.nielshorn.net/other/lego_soft.php"&gt;site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As the original meaning of Lego says: Play well!&lt;br /&gt;&lt;br /&gt;Next challenge: building LeoCad...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7067234871786299426?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7067234871786299426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7067234871786299426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7067234871786299426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7067234871786299426'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/10/lego-and-linux-part-2.html' title='Lego and Linux (part 2)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-618737734523749832</id><published>2009-10-02T21:55:00.002-03:00</published><updated>2009-10-02T21:58:55.203-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rio de Janeiro'/><category scheme='http://www.blogger.com/atom/ns#' term='Rio 2016'/><category scheme='http://www.blogger.com/atom/ns#' term='random thoughts'/><title type='text'>Rio 2016</title><content type='html'>The city where I live - Rio de Janeiro - will host the 2016 Olympic Games.&lt;br /&gt;If you want to see some nice images of the place where I live, check this video:&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Z00jjc-WtZI&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Z00jjc-WtZI&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-618737734523749832?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/618737734523749832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=618737734523749832' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/618737734523749832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/618737734523749832'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/10/rio-2016.html' title='Rio 2016'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-3257711311717481246</id><published>2009-09-29T21:30:00.006-03:00</published><updated>2009-09-29T22:13:02.756-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Lego and Linux</title><content type='html'>I am currently in the process of building some software on Linux for viewing and building Lego projects.&lt;br /&gt;The first program I have been successful with is &lt;a href="http://ldview.sourceforge.net/"&gt;LDView&lt;/a&gt;, a very nice tool to visualize LDraw files.&lt;br /&gt;I have it working on Slackware 13.0, both 32-bits and 64-bits. It is still a bit of a "hacked" installation, as it requires some fiddling with parameters and recompiling packages. But I plan to put a package on my site as soon as it is in a decent state and submit a SlackBuild for those who prefer to build their own version.&lt;br /&gt;&lt;br /&gt;Here are two screen shots, one from the included model and another from my &lt;a href="http://www.nielshorn.net/other/lego_proj_elevator.php"&gt;Lego Elevator&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SsKoUku9y-I/AAAAAAAAATQ/ig5R__M1jOw/s1600-h/lego_soft_LDView_sample.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 259px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SsKoUku9y-I/AAAAAAAAATQ/ig5R__M1jOw/s320/lego_soft_LDView_sample.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5387053175700048866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SsKo693HU6I/AAAAAAAAATg/UzoVER7dnzA/s1600-h/lego_soft_LDView_elevator.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 229px; height: 320px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SsKo693HU6I/AAAAAAAAATg/UzoVER7dnzA/s320/lego_soft_LDView_elevator.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5387053835280143266" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-3257711311717481246?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/3257711311717481246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=3257711311717481246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3257711311717481246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3257711311717481246'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/09/lego-and-linux.html' title='Lego and Linux'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/SsKoUku9y-I/AAAAAAAAATQ/ig5R__M1jOw/s72-c/lego_soft_LDView_sample.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7575823550550973197</id><published>2009-09-26T16:30:00.006-03:00</published><updated>2009-09-27T10:55:59.922-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TRS-80'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>New TRS-80 emulator for Linux</title><content type='html'>Mark Grebe released &lt;a href="http://sdltrs.sourceforge.net/"&gt;sdltrs&lt;/a&gt;, a new emulator for the TRS-80 Model I/III/4/4p for Macintosh, Windows and Linux. It is based on xtrs, but uses the portable sdl library. It has on-screen options to change disks, cassettes, etc.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/Sr5vWtVVWAI/AAAAAAAAATI/4ULgLHO0iyU/s1600-h/sdltrs.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 258px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/Sr5vWtVVWAI/AAAAAAAAATI/4ULgLHO0iyU/s320/sdltrs.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5385864640298571778" /&gt;&lt;/a&gt;Packages for Slackware 13.0 are available on my site:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.nielshorn.net/_lib/download.php?file=sdltrs-1_0_0-i486-2_nhh.tgz"&gt;sdltrs-1_0_0-i486-2_nhh.tgz&lt;/a&gt; (32-bits)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nielshorn.net/_lib/download.php?file=sdltrs-1_0_0-x86_64-2_nhh.tgz"&gt;sdltrs-1_0_0-x86_64-2_nhh.tgz&lt;/a&gt; (64-bits)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;As always, have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7575823550550973197?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7575823550550973197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7575823550550973197' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7575823550550973197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7575823550550973197'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/09/new-trs-80-emulator-for-linux.html' title='New TRS-80 emulator for Linux'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/Sr5vWtVVWAI/AAAAAAAAATI/4ULgLHO0iyU/s72-c/sdltrs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6397016073178397951</id><published>2009-09-26T08:56:00.002-03:00</published><updated>2009-09-26T08:58:43.559-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random thoughts'/><title type='text'>A year of blogging</title><content type='html'>It has been a year today I started this blog, so I thought it was about time to change the lay-out a bit.&lt;br /&gt;I made it more-or-less like my &lt;a href="http://www.nielshorn.net"&gt;homepage&lt;/a&gt;, so that people feel, well, "at home" :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6397016073178397951?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6397016073178397951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6397016073178397951' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6397016073178397951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6397016073178397951'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/09/year-of-blogging.html' title='A year of blogging'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-2897164413563592757</id><published>2009-09-07T23:57:00.003-03:00</published><updated>2009-09-08T00:07:31.701-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>GUI for Hercules on Linux</title><content type='html'>Today Jakob Dekel released the first beta version of &lt;a href="http://www.mvsdasd.org/hercstudio/"&gt;Hercules Studio&lt;/a&gt;, a GUI front-end for &lt;a href="http://www.hercules-390.org/"&gt;Hercules&lt;/a&gt; - the System/370, ESA/390 and z/Architecture emulator.&lt;br /&gt;&lt;br /&gt;On his site you can find pre-built packages in RPM and DEB format.&lt;br /&gt;For us Slackware users, I created Slackware packages as well, after getting some extra information from a very friendly Jacob Dekel.&lt;br /&gt;&lt;br /&gt;The packages for Slackware, both 32 &amp; 64 bits versions, can be downloaded from my site &lt;a href="http://www.nielshorn.net/slackware/slack_pkg.php"&gt;here&lt;/a&gt;.&lt;br /&gt;The stable 3.06 version of Hercules is not prepared for a Linux GUI, so you will need the latest svn snapshot, also available as a Slackware package on the same page.&lt;br /&gt;&lt;br /&gt;The result can be seen here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SqXKCiNGzDI/AAAAAAAAASg/8saE6Tk_bu4/s1600-h/HercStudio.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 246px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SqXKCiNGzDI/AAAAAAAAASg/8saE6Tk_bu4/s320/HercStudio.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5378927474854251570" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-2897164413563592757?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/2897164413563592757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=2897164413563592757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2897164413563592757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2897164413563592757'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/09/gui-for-hercules-on-linux.html' title='GUI for Hercules on Linux'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/SqXKCiNGzDI/AAAAAAAAASg/8saE6Tk_bu4/s72-c/HercStudio.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6441004496408578446</id><published>2009-09-06T23:39:00.005-03:00</published><updated>2009-09-26T08:48:33.033-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>Slackware packages for Hercules</title><content type='html'>I have received a few requests for pre-built Slackware packages for the &lt;a href="http://www.hercules-390.org/" target="_blank"&gt;Hercules&lt;/a&gt; System/370, ESA/390 and z/Architecture emulator.&lt;br /&gt;&lt;br /&gt;I have used Hercules for some time now to run Slack/390 and had already created my own package, but it was not really up to the right standards to be published.&lt;br /&gt;&lt;br /&gt;But, with the release of Slackware 13.0 I have reorganized some of my packages and built new ones following the guidelines of &lt;a href="http://www.slackbuilds.org/" target="_blank"&gt;SlackBuilds.org&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The result can be downloaded from my site:&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.nielshorn.net/_lib/download.php?file=hercules-3.06-i486-1_nhh.tgz"&gt;hercules-3.06-i486-1_nhh.tgz&lt;/a&gt; (32-bits version)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nielshorn.net/_lib/download.php?file=hercules-3.06-x86_64-1_nhh.tgz"&gt;hercules-3.06-x86_64-1_nhh.tgz&lt;/a&gt; (64-bits version)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6441004496408578446?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6441004496408578446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6441004496408578446' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6441004496408578446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6441004496408578446'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/09/slackware-packages-for-hercules.html' title='Slackware packages for Hercules'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7313674149687136142</id><published>2009-09-05T17:47:00.007-03:00</published><updated>2009-09-27T01:02:45.193-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TRS-80'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><category scheme='http://www.blogger.com/atom/ns#' term='xtrs'/><title type='text'>xtrs (TRS-80 emulator) on Slackware</title><content type='html'>My first professional work with computers was done on a Tandy / Radio Shack TRS-80 Model I. I still have that machine but have not powered it up for at least ten years, since I do not have a working monitor anymore.&lt;br /&gt;But thanks to the various emulators that are available, I can still run the old programs whenever I need or want to.&lt;br /&gt;&lt;br /&gt;Since my desktop runs Slackware Linux, the emulator I use is &lt;a href="http://www.tim-mann.org/xtrs.html"&gt;xtrs&lt;/a&gt;. It is small, fast and emulates the Model I, III, 4 and 4p. I have had all these models and still have a Model 4p in reasonable condition.&lt;br /&gt;&lt;br /&gt;As every good Linux program, xtrs is distributed as open source, for the end-user to compile.&lt;br /&gt;This has never been a problem to me, but not every TRS-80 fan might be happy about this.&lt;br /&gt;&lt;br /&gt;So, after the newest release of xtrs in June, I put on my to-do list to make a 'Slackware-package', so that at least Slackware users can run xtrs installing a simple package without any compiling.&lt;br /&gt;Since my to-do list is quite extensive, it took some time for this task to arrive at the top, but today I finally managed to get it done.&lt;br /&gt;&lt;br /&gt;The result is available on my homepage, in two versions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.nielshorn.net/_lib/download.php?file=xtrs-4.9d-i486-2_nhh.tgz" target="_blank"&gt;xtrs-4.9d-i486-2_nhh.tgz&lt;/a&gt;, the 32-bit version&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nielshorn.net/_lib/download.php?file=xtrs-4.9d-x86_64-2_nhh.tgz" target="_blank"&gt;xtrs-4.9d-x86_64-2_nhh.tgz&lt;/a&gt;, the 64-bit version (for Slackware64)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Both have been tested with Slackware 13.0 but should work fine on 12.x as well, and probably some older versions.&lt;br /&gt;&lt;br /&gt;For those who prefer to compile their own software, I submitted a SlackBuild to SlackBuilds.org but it is pending for approval at the moment.&lt;br /&gt;&lt;br /&gt;Here is a screenshot of xtrs emulating a Model III running NEWDOS/80:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SqcFMLpf6JI/AAAAAAAAASo/BBK2oHTeuk0/s1600-h/NewDos80.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 253px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SqcFMLpf6JI/AAAAAAAAASo/BBK2oHTeuk0/s320/NewDos80.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5379273986760763538" /&gt;&lt;/a&gt;&lt;br /&gt;And this is the Model I running the famous Dancing Demon:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SqeGC9UWTwI/AAAAAAAAASw/BMj5zJaj0rQ/s1600-h/dncdemon.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 253px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SqeGC9UWTwI/AAAAAAAAASw/BMj5zJaj0rQ/s320/dncdemon.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5379415665295118082" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7313674149687136142?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7313674149687136142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7313674149687136142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7313674149687136142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7313674149687136142'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/09/xtrs-trs-80-emulator-on-slackware_05.html' title='xtrs (TRS-80 emulator) on Slackware'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/SqcFMLpf6JI/AAAAAAAAASo/BBK2oHTeuk0/s72-c/NewDos80.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6119269685726728373</id><published>2009-08-29T18:04:00.003-03:00</published><updated>2009-09-01T07:19:03.011-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><title type='text'>Overview of all Slackware versions</title><content type='html'>With the release of Slackware 13 this week, I updated &lt;a href="http://www.nielshorn.net/slackware/slack_versions.php"&gt;my page&lt;/a&gt; with all the versions that have ever been released of Slackware.&lt;br /&gt;All information has been retrieved from official sources, like the ChangeLogs from the original versions I have.&lt;br /&gt;&lt;br /&gt;The list includes the official release dates, versions of the included kernel, desktop environments, etc.&lt;br /&gt;&lt;br /&gt;I you find anything inaccurate, please tell me, stating your sources!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6119269685726728373?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6119269685726728373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6119269685726728373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6119269685726728373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6119269685726728373'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/08/overview-of-all-slackware-versions.html' title='Overview of all Slackware versions'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-8610207384652605512</id><published>2009-07-23T18:53:00.004-03:00</published><updated>2009-08-31T12:59:23.517-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maintenance'/><category scheme='http://www.blogger.com/atom/ns#' term='shell scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Flexible scheduling</title><content type='html'>As explained in my previous post, I needed a flexible way to schedule a small script to run, with variable parameters.&lt;br /&gt;&lt;br /&gt;The basic requirements were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;simple to configure (no messing in crontabs)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;flexible enough to have different schedules on different weekdays (on Sundays a job should be started at another time than on Mondays, for example)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;should offer the possibility to start different jobs at different times&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I want a log of all commands executed&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;For instance, I need the command "foo start 1234" to run every day except Sunday at 23:00h, and "foo stop 1234" always at 01:00h.&lt;br /&gt;I also need "bar load 1 2 3" to run every Wednesday at noon and "bar load 4" every other weekday at noon.&lt;br /&gt;&lt;br /&gt;And, as I am a Slackware fan, I want to do all configuration by changing a text file. No graphical interface please, as my servers do not even have X installed.&lt;br /&gt;&lt;br /&gt;So the challenge was there :)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Using cron&lt;/u&gt;&lt;br /&gt;Now I thought of a solution how these scripts should be started or controlled.&lt;br /&gt;The standard crontab (in /var/spool/cron/crontabs/root) could probably control everything I needed, but it would be a cumbersome task to change it every time. But - on the other hand - I did not want to substitute cron, as it does a nice job scheduling simple daily or monthly tasks.&lt;br /&gt;&lt;br /&gt;So I decided to use cron to start my own scheduler. As an interval I choose a five minute period, as that would be accurate enough for me. I don't need any job to start at 12:42 exactly, 12:40 or 12:45 if good enough for me.&lt;br /&gt;&lt;br /&gt;My script to check all schedules was named "sched5" and I added the following lines to the crontab:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Special 5-minute-interval job&lt;br /&gt;0 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;5 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;10 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;15 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;20 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;25 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;30 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;35 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;40 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;45 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;50 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;55 * * * * /usr/local/sbin/sched5 1&gt; /dev/null&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;As can be seen, the script is stored in /usr/local/sbin, in the path for root - as normal users do not need to access it.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;The script&lt;/u&gt;&lt;br /&gt;The complete script is copied here:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# sched5 Check every 5 minutes /etc/sched5.conf&lt;br /&gt;#  for possible jobs to run&lt;br /&gt;#  Needs to be started every 5 minutes from cron&lt;br /&gt;#  Definition of schedules in /etc/sched5.conf&lt;br /&gt;#&lt;br /&gt;# Version: 0.0.1 - Thursday, Jul 23, 2009&lt;br /&gt;#&lt;br /&gt;# Author: Niels Horn (niels.horn@gmail.com)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###################&lt;br /&gt;## Configuration ##&lt;br /&gt;###################&lt;br /&gt;&lt;br /&gt;# Standard interval&lt;br /&gt;SCHED5_INTERVAL=5&lt;br /&gt;&lt;br /&gt;# Default log&lt;br /&gt;SCHED5_LOG=/var/log/sched5.log&lt;br /&gt;&lt;br /&gt;# Default log level:&lt;br /&gt;# 0 = no logging&lt;br /&gt;# 1 = log execution of jobs&lt;br /&gt;# 2 = log everything&lt;br /&gt;SCHED5_LL=1&lt;br /&gt;&lt;br /&gt;# Read configuration from /etc/sched5.conf&lt;br /&gt;. /etc/sched5.conf&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;####################&lt;br /&gt;## Get DAY / TIME ##&lt;br /&gt;####################&lt;br /&gt;DAY=`date +%u`&lt;br /&gt;TIME=`date +%H:%M`&lt;br /&gt;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "Started: Day=$DAY Time=$TIME" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;####################################&lt;br /&gt;## Main loop: check all schedules ##&lt;br /&gt;####################################&lt;br /&gt;&lt;br /&gt;for sched in `seq $SCHED_NUM`; do&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;sched_name=SCHED${sched}_NAME&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;eval sched_name=\$$sched_name&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "-- Schedule $sched = $sched_name" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# get rules for this schedule&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;sched_rules=SCHED${sched}_RULES&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;eval sched_rules=\$$sched_rules&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# loop through all rules for this schedule&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmd_found=0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for rule in $sched_rules; do&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "   -- Rule $rule " &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# dissect rule&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rule_day=`echo $rule | cut -f1 -d,`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rule_tim=`echo $rule | cut -f2 -d,`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rule_cmd=`echo $rule | cut -f3 -d,`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# calculate time+interval&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timh=${rule_tim:0:2}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timm=${rule_tim:3}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ "${timm:0:1}" == "0" ] &amp;&amp; timm=${timm:1}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let timm=$timm+$SCHED5_INTERVAL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ ${#timm} -eq 1 ] &amp;&amp; timm="0"$timm&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tim2=$timh":"$timm&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "   -- Rule: $rule_day $rule_tim-$tim2 -&gt; $rule_cmd" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Check if rule is valid for this day&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if [ "$rule_day" == "*" -o "$rule_day" == "$DAY" ] ; then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "      -- day ok" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Current time =&gt; time of rule?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if [ "$TIME" == "$rule_tim" -o "$TIME" \&gt; "$rule_tim" ] ; then&lt;br /&gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&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;echo "      -- time start ok" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Current time &lt; time of rule + interval?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if [ "$TIME" \&lt; "$tim2" ] ; then&lt;br /&gt;&lt;br /&gt;&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;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&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;echo "      -- time end   ok" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&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;# ok, we found a command to execute!&lt;br /&gt;&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;cmd_found=$rule_cmd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;done # all rules for this schedule&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Did we find a command to execute?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if [ "$cmd_found" != "0" ] ; then&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "   -- Starting command $cmd_found" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Get command to execute&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmd=SCHED${sched}_CMD_$cmd_found&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eval cmd=\$$cmd&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ $SCHED5_LL -ge 1 ] &amp;&amp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "$TIME Schedule $sched / $sched_name: Starting command \"${cmd}\"" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# Execute command&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;. $cmd&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;&lt;br /&gt;done # all schedules&lt;br /&gt;&lt;br /&gt;[ $SCHED5_LL -ge 2 ] &amp;&amp; \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "Finished" &gt;&gt; $SCHED5_LOG&lt;br /&gt;&lt;br /&gt;# all done!&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Save this script as /usr/local/sbin/sched5 and chmod it to 700, as only root needs to read and execute it. It can also be downloaded from my &lt;a href="http://www.nielshorn.net/_lib/download.php?file=sched5"&gt;site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;The configuration file&lt;/u&gt;&lt;br /&gt;The configuration file is saved as /etc/sched5.conf and is a simple text file.&lt;br /&gt;To explain to options, I put the examples I gave in the beginning of this post in this configuration:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;### Configuration for 'sched5' ##############################################&lt;br /&gt;##&lt;br /&gt;## requires sched5 to be started every 5 minutes from crontab&lt;br /&gt;##&lt;br /&gt;&lt;br /&gt;#########################&lt;br /&gt;## Standard Parameters ##&lt;br /&gt;#########################&lt;br /&gt;&lt;br /&gt;### Location of log&lt;br /&gt;# Default = /var/log/sched5.log&lt;br /&gt;#SCHED5_LOG=/var/log/sched5.log&lt;br /&gt;&lt;br /&gt;### Logging Level&lt;br /&gt;# 0 = log nothing&lt;br /&gt;# 1 = log execution of jobs&lt;br /&gt;# 2 = log everything&lt;br /&gt;# Default = 1&lt;br /&gt;#SCHED5_LL=2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###############&lt;br /&gt;## Schedules ##&lt;br /&gt;###############&lt;br /&gt;&lt;br /&gt;# Number of defined schedules&lt;br /&gt;SCHED_NUM=2&lt;br /&gt;&lt;br /&gt;##&lt;br /&gt;## Start of Schedule 1 (SCHED1)&lt;br /&gt;## Repeat following lines for each schedule&lt;br /&gt;## Changing the variables from 'SCHED1' to 'SCHED2', 'SCHED3', etc.&lt;br /&gt;##&lt;br /&gt;&lt;br /&gt;# Name of schedule, only used in log&lt;br /&gt;SCHED1_NAME=foo_schedule&lt;br /&gt;&lt;br /&gt;# Commands to execute&lt;br /&gt;# valid commands are SCHEDx_CMD_1 to SCHEDx_CMD_9&lt;br /&gt;SCHED1_CMD_1='foo start 1234'&lt;br /&gt;SCHED1_CMD_2='foo stop 1234'&lt;br /&gt;&lt;br /&gt;# Rules for execution: day,time,cmd&lt;br /&gt;# where day = day to execute (1=Mo,2=Tu,...7=Su, *=all)&lt;br /&gt;#  time = time to execute command&lt;br /&gt;#  cmd = # of command to execute (1-9, 0=do nothing)&lt;br /&gt;# Separate rules with space, later rule has preference over earlier rule,&lt;br /&gt;# so you can start with a general rule for all days (*), then alter for&lt;br /&gt;# specific days (like 7=Sunday)&lt;br /&gt;# Use cmd=0 to cancel a more general rule (like day=*)&lt;br /&gt;SCHED1_RULES="\&lt;br /&gt;*,23:00,1 \&lt;br /&gt;7,23:00,0 \&lt;br /&gt;*,01:00,2"&lt;br /&gt;&lt;br /&gt;##&lt;br /&gt;## End of Schedule 1 (SCHED1)&lt;br /&gt;##&lt;br /&gt;&lt;br /&gt;SCHED2_NAME=bar_schedule&lt;br /&gt;SCHED2_CMD_1='bar load 1 2 3'&lt;br /&gt;SCHED2_CMD_2='bar load 4'&lt;br /&gt;SCHED2_RULES="\&lt;br /&gt;*,12:00,2 \&lt;br /&gt;3,12:00,1"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Dissecting the configuration file&lt;/u&gt;&lt;br /&gt;The first lines define the level of logging and where the log should be saved.&lt;br /&gt;The defaults are explained in the text.&lt;br /&gt;&lt;br /&gt;In this example we have two different schedules:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Number of defined schedules&lt;br /&gt;SCHED_NUM=2&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The first schedule has more comments, to explain all options.&lt;br /&gt;&lt;br /&gt;First we see the name of the schedule, only used in the log:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Name of schedule, only used in log&lt;br /&gt;SCHED1_NAME=foo_schedule&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then we'll find the several commands we can schedule:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Commands to execute&lt;br /&gt;# valid commands are SCHEDx_CMD_1 to SCHEDx_CMD_9&lt;br /&gt;SCHED1_CMD_1='foo start 1234'&lt;br /&gt;SCHED1_CMD_2='foo stop 1234'&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;All commands must be executable from the command line by root to function.&lt;br /&gt;We can actually have several different commands, and to be exact, names can also end in words, like "SCHED1_CMD_start" - just change the code from "1" to "start" in the rules below.&lt;br /&gt;&lt;br /&gt;We now go to the rules of this schedule:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Rules for execution: day,time,cmd&lt;br /&gt;# where day = day to execute (1=Mo,2=Tu,...7=Su, *=all)&lt;br /&gt;#  time = time to execute command&lt;br /&gt;#  cmd = # of command to execute (1-9, 0=do nothing)&lt;br /&gt;# Separate rules with space, later rule has preference over earlier rule,&lt;br /&gt;# so you can start with a general rule for all days (*), then alter for&lt;br /&gt;# specific days (like 7=Sunday)&lt;br /&gt;# Use cmd=0 to cancel a more general rule (like day=*)&lt;br /&gt;SCHED1_RULES="\&lt;br /&gt;*,23:00,1 \&lt;br /&gt;7,23:00,0 \&lt;br /&gt;*,01:00,2"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;As you can see, the special command "0" cancels a previous rule. So in this example, we always run command 1 (foo start 1234) at 23:00h, &lt;b&gt;except&lt;/b&gt; on Sundays (day=7).&lt;br /&gt;The second rule is simpler: start command 2 every day at 01:00h.&lt;br /&gt;&lt;br /&gt;The second schedule has no comments, to show how simple it is to add extra schedules:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SCHED2_NAME=bar_schedule&lt;br /&gt;SCHED2_CMD_1='bar load 1 2 3'&lt;br /&gt;SCHED2_CMD_2='bar load 4'&lt;br /&gt;SCHED2_RULES="\&lt;br /&gt;*,12:00,2 \&lt;br /&gt;3,12:00,1"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Starting it all&lt;/u&gt;&lt;br /&gt;After changing the crontab, saving the script and setting up the configuration, make sure that everything is scheduled by restarting crond:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;killall crond&lt;br /&gt;/usr/sbin/crond -l10 &gt;&gt;/var/log/cron 2&gt;&amp;1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This last line comes from /etc/rc.d/rc.M&lt;br /&gt;&lt;br /&gt;As the configuration file is re-read every time the script starts, you can just edit the /etc/sched5.conf file and the changes will be in effect immediately.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As always, feel free to comment on this post with questions or suggestions!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-8610207384652605512?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/8610207384652605512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=8610207384652605512' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8610207384652605512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8610207384652605512'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/07/flexible-scheduling.html' title='Flexible scheduling'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5708461757385124381</id><published>2009-07-23T16:46:00.003-03:00</published><updated>2009-08-13T11:53:05.574-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Firewall - Blocking a specific IP</title><content type='html'>This week I needed a solution to block and unblock certain IPs from accessing the internet at certain times.&lt;br /&gt;I didn't want to change my firewall script too much and didn't want to change it every time the rules changed (which change a lot due to variable circumstances).&lt;br /&gt;&lt;br /&gt;So I created a two-part solution. In this post I will describe how I changed my firewall and show a simple script that can block or unblock a specific IP address.&lt;br /&gt;&lt;br /&gt;In a following post I will describe how I created a script with a configuration file where I can define when to do what.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;iptables and chains&lt;/u&gt;&lt;br /&gt;Firewalls in Linux are built with iptables and "chains". Check &lt;a href="http://tldp.org/LDP/LGNET/103/odonovan.html"&gt;this&lt;/a&gt; article for some basics about writing your own firewall script.&lt;br /&gt;&lt;br /&gt;In a chain you can put several rules to filter network packets. It is possible to call a chain from another chain. If the called chain does not filter the packet, it automatically returns to the calling chain.&lt;br /&gt;&lt;br /&gt;For instance, we have the standard "FORWARD" chain in a firewall.&lt;br /&gt;In the beginning of this chain, we can always call a user-defined chain called "f_ip".&lt;br /&gt;&lt;br /&gt;We create the user-defined chain with:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;iptables -N f_ip&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;And pass all forwarded packets through this chain by including this line as one of our first rules in the FORWARD chain:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;iptables -A FORWARD -j f_ip&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the "f_ip" chain is empty, or none of the rules filter the packet to be forwarded, the "FORWARD" chain takes over again:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SmjJhSQBTUI/AAAAAAAAASI/utBNA58aH54/s1600-h/fw_ipfilter_1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SmjJhSQBTUI/AAAAAAAAASI/utBNA58aH54/s320/fw_ipfilter_1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5361756930056473922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I also want to know if a blocked IP address tried to use the internet, so I created another user-defined chain to log &amp; drop packets:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;iptables -N f_ip_drop&lt;br /&gt;iptables -A f_ip_drop -j LOG --log-level 6 --log-prefix "FW: ip: "&lt;br /&gt;iptables -A f_ip_drop -j DROP&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Take note that for the time being, nothing goes to the f_ip_drop chain!&lt;br /&gt;&lt;br /&gt;But now I can use an external script to add rules to the f_ip chain to filter a specific address without having to change my firewall script.&lt;br /&gt;This external script could contain something like:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;iptables -A f_ip -s a.b.c.d -j f_ip_drop&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;(where "a.b.c.d" is substituted by a real IP address of course)&lt;br /&gt;&lt;br /&gt;This part of the firewall then works as follows:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SmjNLT5ayRI/AAAAAAAAASQ/ZJbrCP9k-Tk/s1600-h/fw_ipfilter_2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 170px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SmjNLT5ayRI/AAAAAAAAASQ/ZJbrCP9k-Tk/s320/fw_ipfilter_2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5361760950587934994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;The external script&lt;/u&gt;&lt;br /&gt;So now I had my firewall altered and I was ready to write my script to block and unblock specific IP addresses.&lt;br /&gt;&lt;br /&gt;The result is here:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# fw_ipfilt Filter specific IP addresses&lt;br /&gt;#  Needs rc.firewall 0.2.3 or newer&lt;br /&gt;#&lt;br /&gt;# Version: 0.0.1 - Thursday, Jul 23, 2009&lt;br /&gt;#&lt;br /&gt;# Author: Niels Horn (niels.horn@gmail.com)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###################&lt;br /&gt;## Configuration ##&lt;br /&gt;###################&lt;br /&gt;&lt;br /&gt;IPT=iptables&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;######################&lt;br /&gt;## Clear IP filters ##&lt;br /&gt;######################&lt;br /&gt;ip_clear() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;# flush f_ip chain&lt;br /&gt;&amp;nbsp;&amp;nbsp;$IPT -F f_ip&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;######################&lt;br /&gt;## Add IP to filter ##&lt;br /&gt;######################&lt;br /&gt;ip_addip() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;ip=$1&lt;br /&gt;&amp;nbsp;&amp;nbsp;# send all packets from or to $ip to f_ip_drop chain&lt;br /&gt;&amp;nbsp;&amp;nbsp;$IPT -A f_ip -s $ip -j f_ip_drop&lt;br /&gt;&amp;nbsp;&amp;nbsp;$IPT -A f_ip -d $ip -j f_ip_drop&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###########################&lt;br /&gt;## Remove IP from filter ##&lt;br /&gt;###########################&lt;br /&gt;ip_delip() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;ip=$1&lt;br /&gt;&amp;nbsp;&amp;nbsp;# delete rules for $ip from f_ip chain&lt;br /&gt;&amp;nbsp;&amp;nbsp;$IPT -D f_ip -s $ip -j f_ip_drop&lt;br /&gt;&amp;nbsp;&amp;nbsp;$IPT -D f_ip -d $ip -j f_ip_drop&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;###################&lt;br /&gt;## Check Command ##&lt;br /&gt;###################&lt;br /&gt;&lt;br /&gt;case "$1" in&lt;br /&gt;&amp;nbsp;&amp;nbsp;'add')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ip_addip $2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;'clear')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ip_clear&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;'del')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ip_delip $2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;*)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "use $0 add|del &amp;lt;ip&amp;gt; or $0 clear"&lt;br /&gt;esac&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I saved this script as /usr/local/sbin/fw_ipfilt and made it executable and readable only for root (chmod 700).&lt;br /&gt;Now I can block an IP address at any time with:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;fw_ipfilt add 192.168.1.123&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and unblock it with&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;fw_ipfilt del 192.168.1.123&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;To unblock all previously blocked addresses use:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;fw_ipfilt clear&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As always, if you have any questions or suggestions, feel free to comment on this post!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5708461757385124381?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5708461757385124381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5708461757385124381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5708461757385124381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5708461757385124381'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/07/firewall-blocking-specific-ip.html' title='Firewall - Blocking a specific IP'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/SmjJhSQBTUI/AAAAAAAAASI/utBNA58aH54/s72-c/fw_ipfilter_1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-3802159584996723028</id><published>2009-06-13T12:15:00.003-03:00</published><updated>2009-09-23T22:56:08.975-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Older Slackware versions (VI)</title><content type='html'>Last October I wrote some posts about installing older Slackware versions on VMware. I have since sort of abandoned VMware for several reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It might be free for personal use, but it is not Open software&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It is a hassle to keep it functioning with every kernel change&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The latest versions need PAM, which can be installed on Slackware, but is not included&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;There are at least two Free, Open Source alternatives available: &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; and &lt;a href="http://www.qemu.org/"&gt;Qemu&lt;/a&gt;. Each one has its advantages and disadvantages.&lt;br /&gt;&lt;br /&gt;VirtualBox has a nice user-interface and easy to configure options. The open-source version however does not include USB emulation.&lt;br /&gt;&lt;br /&gt;Qemu, on the other hand is extremely flexible, can emulate several types of mice, network cards, usb-devices, and is not only a virtualization system but also an emulator for other platforms, like ARM, PowerPC, etc.&lt;br /&gt;But it has no graphical user interface and is complete command-line driven.&lt;br /&gt;This "disadvantage" actually can be an advantage. Sometimes I want to create a simple shortcut that can start a virtual machine without clicking too many buttons.&lt;br /&gt;With Qemu I can create a shell script that starts Qemu with the right parameters and loads my virtual machine with just one click.&lt;br /&gt;&lt;br /&gt;But to get back to the original subject...&lt;br /&gt;This week I learned about the fact that an even older version of Slackware was available - Slackware 1.01 ! I actually had read about it some time ago but had forgotten to check it out. I did some research on &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt; and found out that it can be downloaded from several sites. Since most appeared to be private, non-professional sites, I won't mention them here so that these people won't have bandwidth problems because of me.&lt;br /&gt;But if you're interested, just Google for Slackware 1.01&lt;br /&gt;&lt;br /&gt;I decided that it would be a nice compatibility test for Qemu :)&lt;br /&gt;To install a complete version, with X, you'll also need to download a version of the forefather of Slackware, SLS, as the available Slackware 1.01 does not come with the 'X' disks. But the proper Slackware installation script tells us that the SLS disks can be used and those are still readily available on the ibiblio.org ftp &lt;a href="ftp://ftp.ibiblio.org/pub/historic-linux/distributions/sls/"&gt;site&lt;/a&gt;. I used the SLS-1.03 version, as it was released two days before Slackware 1.01 (we're talking about August 1993 here, almost 16 years ago...)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:navy;"&gt;&lt;em&gt;update&lt;/em&gt;&lt;br /&gt;After several requests, I decided to put Slackware 1.01 and the X-disks from SLS 1.03 on my site for download:&lt;br /&gt;&lt;a href="http://www.nielshorn.net/_lib/download.php?file=slackware-1.01.tar.gz"&gt;Slackware 1.01&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.nielshorn.net/_lib/download.php?file=sls-1.03_x_series.tar.gz"&gt;X-disks from SLS 1.03&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So after you downloaded Slackware 1.01 and SLS 1.03, let's start installing our new virtual machine!&lt;br /&gt;&lt;br /&gt;But first transform the downloaded folders (A2, A3, A4, etc.) in disk images that can be read by Qemu.&lt;br /&gt;You can do this by creating an empty image with:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mkfs.msdos -C disk_xxx.img 1440&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;mounting it with:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mount -o loop disk_xxx.img /mnt/floppy&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and then copying the files to /mnt/floppy.&lt;br /&gt;In my &lt;a href="http://nielshorn.blogspot.com/2008/10/older-slackware-versions-iii.html"&gt;post&lt;/a&gt; about Slackware 1.1.2 I showed a little script to make life easier, but it has to be adapted a bit to work with disk numbers greater than 9. I'll leave that as an exercise to the reader. ;)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1. Preparing the environment&lt;/u&gt;&lt;br /&gt;The complete installation of Slackware 1.01 + X + TCL takes up just over 100MB on a hard drive, so I suggest creating a virtual drive of at least 150MB, so that we have some space left to play around.&lt;br /&gt;I created mine with:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ qemu-img create -f qcow2 slack101.img 200M&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Next I created a little shell script to start Qemu with some extra parameters:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;# Start qemu w/ sudo, so that allowed users can run emulation&lt;br /&gt;sudo qemu \&lt;br /&gt;&amp;nbsp;&amp;nbsp;-localtime \&lt;br /&gt;&amp;nbsp;&amp;nbsp;-m 64M \&lt;br /&gt;&amp;nbsp;&amp;nbsp;-serial msmouse \&lt;br /&gt;&amp;nbsp;&amp;nbsp;-vga std \&lt;br /&gt;&amp;nbsp;&amp;nbsp;-fda disk_a1.img \&lt;br /&gt;&amp;nbsp;&amp;nbsp;-hda slack101.img \&lt;br /&gt;&amp;nbsp;&amp;nbsp;-net nic,model=ne2k_isa -net tap,ifname=tap1 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The Qemu documentation explains all options, but I will enter in some details here:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;-m 64M&lt;/code&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;64MB of memory is enough for Slackware 1.01. remember that we're talking 1993 here...&lt;br /&gt;&lt;code&gt;-serial msmouse&lt;/code&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;Qemu by default emulates a PS/2 mouse, but the X included with SLS did not recognize it, so we'll work with a Microsoft Serial Mouse&lt;br /&gt;&lt;code&gt;-fda disk_a1.img&lt;/code&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;This line is to make Qemu boot from the disk image. After installation, you'll need to remove this line!&lt;br /&gt;&lt;code&gt;-net nic,model=ne2k_isa&lt;/code&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;I haven't been able to set up networking yet, but at least the NE2000 ISA adapter was recognized by Slackware 1.01 :)&lt;br /&gt;&lt;br /&gt;Before invoking the script, we'll need the location of the Slackware disk images, especially the first one (A1).&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2. Starting Qemu&lt;/u&gt;&lt;br /&gt;Invoke the script you just saved and you'll see the following screen:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SjMcHokv2LI/AAAAAAAAAQ4/I6tR48YgOVw/s1600-h/install00.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 178px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SjMcHokv2LI/AAAAAAAAAQ4/I6tR48YgOVw/s320/install00.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346648100095121586" /&gt;&lt;/a&gt;&lt;br /&gt;As the instructions say, we can log in as root.&lt;br /&gt;Then we need to create a partition, format it and start the installation script.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3. Partitioning the hard drive&lt;/u&gt;&lt;br /&gt;Since this is a virtual machine with 64MB of RAM (a lot for those days), I didn't create a swap partition but just one primary partition the size of our virtual hard drive.&lt;br /&gt;&lt;br /&gt;Create the partition with:&lt;br /&gt;&lt;code&gt;fdisk /dev/hda/&lt;/code&gt;&lt;br /&gt;and follow the menu...&lt;br /&gt;&lt;br /&gt;Then format the new partition as suggested by Patrick with:&lt;br /&gt;&lt;code&gt;mk2efs -c /dev/hda1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;4. Start installing!&lt;/u&gt;&lt;br /&gt;Now we are ready to start the installation process with:&lt;br /&gt;&lt;code&gt;doinstall /dev/hda1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;First it will ask us where to install from - our option is to install from "Floppy Disks".&lt;br /&gt;(Notice that there is even an option to install from tape!)&lt;br /&gt;&lt;br /&gt;The second question is interesting:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SjOgh8FkmvI/AAAAAAAAARA/mAstUa_STD8/s1600-h/install02.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 178px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SjOgh8FkmvI/AAAAAAAAARA/mAstUa_STD8/s320/install02.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346793687544535794" /&gt;&lt;/a&gt;&lt;br /&gt;Since I couldn't find the Slackware X series, I used the disks from SLS.&lt;br /&gt;The prompt gives the option to select "(1 or 2)" but I entered "3" to install TeX as well :)&lt;br /&gt;&lt;br /&gt;Now you will be prompted for all the packages. Some are required and will be installed automatically - this was actually one of the improvements Pat made...&lt;br /&gt;You will ave to "insert" all the virtual floppy disks during the installation.&lt;br /&gt;In Qemu you can switch to the command console with "ctrl-alt-2" and type:&lt;br /&gt;&lt;code&gt;change floppy0 &amp;lt;path-to-your-disk-image&amp;gt;&lt;/code&gt;&lt;br /&gt;and then just switch back to your installating with "ctrl-alt-1".&lt;br /&gt;&lt;br /&gt;After the "A" series, we'll go through the "X" series and finally the "T" series.&lt;br /&gt;Be careful ate after the t3 disk with the following question:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;5. Creating a boot disk&lt;/u&gt;&lt;br /&gt;After all the disks, you'll see the following prompt:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SjOmzlwvm0I/AAAAAAAAARI/EmwfFXn6ZBc/s1600-h/install03.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 178px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SjOmzlwvm0I/AAAAAAAAARI/EmwfFXn6ZBc/s320/install03.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346800587859008322" /&gt;&lt;/a&gt;&lt;br /&gt;Change your virtual floppy first in Qemu or you will overwrite your t3 disk!&lt;br /&gt;Then just press enter and the boot disk will be created.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;6. Configuration&lt;/u&gt;&lt;br /&gt;Now you can configure a modem (which we probably do not have in our virtual machine) and a mouse.&lt;br /&gt;&lt;br /&gt;To configure your mouse, first go to the Qemu command screen (ctrl-alt-2) and set our mouse to the emulated Microsoft Serial Mouse we configured in the script that starts Qemu:&lt;br /&gt;&lt;code&gt;info mice&lt;/code&gt;&lt;br /&gt;should show something like:&lt;br /&gt;&lt;code&gt;Mouse devices available:&lt;br /&gt;&amp;nbsp;&amp;nbsp;Mouse #0: QEMU Microsoft Mouse&lt;br /&gt;* Mouse #1: QEMU PS/2 Mouse&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;We can switch to the Microsoft Mouse with:&lt;br /&gt;&lt;code&gt;mouse_set 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now switch back to your installation with ctrl-alt-1 and select "5" (Microsoft Serial Mouse) from this screen:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SjOpb37aQaI/AAAAAAAAARQ/_fKeXRz-TgU/s1600-h/install04.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 178px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SjOpb37aQaI/AAAAAAAAARQ/_fKeXRz-TgU/s320/install04.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346803478953607586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When it asks for the serial port, just select the first one, as that is where Qemu will emulate your mouse.&lt;br /&gt;&lt;br /&gt;Now we are asked about LILO:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SjOrUIyGVCI/AAAAAAAAARY/J4aaMXLA7-s/s1600-h/install05.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 178px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SjOrUIyGVCI/AAAAAAAAARY/J4aaMXLA7-s/s320/install05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346805545062257698" /&gt;&lt;/a&gt;&lt;br /&gt;Since we are only installing Slackware on this drive, we can simply choose "2" here.&lt;br /&gt;&lt;br /&gt;After this, we get back to the prompt telling us we can reboot our system.&lt;br /&gt;&lt;br /&gt;Go to the Qemu command screen and eject the floppy disk with:&lt;br /&gt;&lt;code&gt;eject floppy0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Go back to your Linux screen with ctrl-alt-1 and reboot your newly installed Slackware 1.01 with&lt;br /&gt;&lt;code&gt;reboot&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;7. First boot and post-installation&lt;/u&gt;&lt;br /&gt;And we're in Slackware 1.01!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SjOtn9R4RjI/AAAAAAAAARg/nzQCJ_FPwYM/s1600-h/install06.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 178px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SjOtn9R4RjI/AAAAAAAAARg/nzQCJ_FPwYM/s320/install06.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346808084594968114" /&gt;&lt;/a&gt;&lt;br /&gt;Check if your screen says that NE2000 network card was found (if not, check the script you used to start Qemu).&lt;br /&gt;&lt;br /&gt;As you can see, our kernel version is 0.99, patch level 12.&lt;br /&gt;This kernel version, as the one I tested in Slackware 1.1.2 (patch level 15), has a problem that makes our virtual machine take up as much as 100% of CPU time on the host machine (or 50% on a dual-core). This also happens with older Windows versions (Windows 98 and older) in VMware, Qemu, VirtualBox, etc.&lt;br /&gt;It is caused by not using the HLT instruction when there is nothing to do. There are some specific utilities to solve this with Windows in virtual machines, but not for the older Linux kernels. I am not sure when exactly this has been solved in the kernel...&lt;br /&gt;&lt;br /&gt;Also note that the hostname of this system is "darkstar", as is still the default in the newest versions. In the modern versions the hostname is set in /etc/rc.M, where "darkstar" is used if no name had been specified during setup.&lt;br /&gt;In Slackware 1.01 it is set in /etc/rc.local&lt;br /&gt;&lt;br /&gt;For now, let's login as root - no password is needed.&lt;br /&gt;&lt;br /&gt;As was mentioned during the installation (and of course you paid attention to everything that flashed by on your screen ;) ), we need to run a script to set the correct permissions for the sample users:&lt;br /&gt;&lt;code&gt;/etc/sampleuseradd&lt;/code&gt;&lt;br /&gt;This is to make sure that "gonzo", "satan" and "snake" can access their home folders and read their mail. Of course, "satan" lives in /home/hell and "snake" lives in /home/pit :D&lt;br /&gt;&lt;br /&gt;Feel free to wander around in your new Slackware 1.01 before going to the next step!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;8. Configuring X&lt;/u&gt;&lt;br /&gt;To use X we will need to do some configuration...&lt;br /&gt;&lt;br /&gt;The version of X we installed from the SLS disks - XFree86 1.3 - works a bit different from modern X versions. There were no drivers for video cards - X was compiled for a specific card. SLS supplied two versions, one for SVGA cards and one for monochrome VGA cards.&lt;br /&gt;Qemu can emulate several VGA chipsets, but I could not get any of them to work with this XFree86 server. So I used the monochrome XFree86 server instead.&lt;br /&gt;&lt;br /&gt;To change the default server, we need to change a symbolic link, logged in as root:&lt;br /&gt;&lt;code&gt;cd /usr/bin/X11&lt;br /&gt;rm X&lt;br /&gt;ln -s XF86_Mono X&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now, login as the sample user "gonzo" (or use snake or satan if you prefer...).&lt;br /&gt;Simly start X with&gt;&lt;br /&gt;&lt;code&gt;startx&lt;/code&gt;&lt;br /&gt;And you're up-and-running!&lt;br /&gt;&lt;br /&gt;If, like me, you don't like this "virtual desktop" larger than your vga resolution, you can change this behavior. First copy the standard Xconfig configuration file to your home directory, and make it writable:&lt;br /&gt;&lt;code&gt;cp /usr/lib/X11/Xconfig $HOME/&lt;br /&gt;chmod 644 Xconfig&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then edit this file with your favorite editor (vi &amp; joe are included with Slackware 1.01).&lt;br /&gt;In the section that defines the "vga2" (monochrome) server, change the line for the "Virtual" resolution from "800 600" to "640 480".&lt;br /&gt;&lt;br /&gt;Now you can run startx again and play some games:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SjPBhpDbtiI/AAAAAAAAARo/jh8UaboGRxw/s1600-h/x-mono.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SjPBhpDbtiI/AAAAAAAAARo/jh8UaboGRxw/s320/x-mono.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5346829966319007266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If I have some time again, I'll try to configure the network. It is quite different compared to the newer versions :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-3802159584996723028?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/3802159584996723028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=3802159584996723028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3802159584996723028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3802159584996723028'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/06/older-slackware-versions-vi.html' title='Older Slackware versions (VI)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q65cj3yCRO4/SjMcHokv2LI/AAAAAAAAAQ4/I6tR48YgOVw/s72-c/install00.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6977628232419210227</id><published>2009-05-30T20:25:00.004-03:00</published><updated>2009-06-12T22:55:40.318-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><title type='text'>Another update for Slack/390</title><content type='html'>Just a quick note...&lt;br /&gt;&lt;br /&gt;xpdf has been updated for &lt;a href="http://www.slack390.org/"&gt;Slack/390&lt;/a&gt;.&lt;br /&gt;This is a security patch, so update your -current system with &lt;a href="http://nielshorn.blogspot.com/2009/05/using-slackpkg-on-slack390.html"&gt;SlackPkg&lt;/a&gt; without further ado! ;-)&lt;br /&gt;&lt;br /&gt;In the mean time: I've been playing around with &lt;a href="http://www.armedslack.org/"&gt;ARMedslack&lt;/a&gt;. I'm just waiting for an opportunity to test it on real hardware, but for the moment I'm running it on the &lt;a href="http://www.nongnu.org/qemu/"&gt;Qemu&lt;/a&gt; ARM emulator.&lt;br /&gt;&lt;br /&gt;Expect some posts on ARMed slack in the near future...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6977628232419210227?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6977628232419210227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6977628232419210227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6977628232419210227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6977628232419210227'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/05/another-update-for-slack390.html' title='Another update for Slack/390'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-2406812379751757153</id><published>2009-05-27T21:30:00.000-03:00</published><updated>2009-05-27T21:30:00.921-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>On partitioning your hard drive...</title><content type='html'>As I've been using Linux for over a decade, I am asked a lot of questions about my favorite operating system. I don't consider myself an expert, just an experienced enthusiast :-)&lt;br /&gt;&lt;br /&gt;One question that pops up every now and then is about the "ideal" partitioning scheme for Linux.&lt;br /&gt;The short answer is that there is no such thing as an "ideal partitioning scheme". It all depends on so many things, like:&lt;br /&gt;- your hardware&lt;br /&gt;- how you are going to use your system&lt;br /&gt;- your future needs&lt;br /&gt;- etc...&lt;br /&gt;&lt;br /&gt;When a new Linux user asks me how to partition his new drive for Linux, I usually say that he should just use two partitions: one for swap and one for the rest. Yes, even with a 500+ GB drive...&lt;br /&gt;Why? Because new users can get into trouble filling up a partition that was created too small and then things stop working.&lt;br /&gt;Sometimes I get funny reactions like: "But I read that it is better to create a partition for /home, another for /usr/local etc...". And some even show expressions of disbelief...&lt;br /&gt;&lt;br /&gt;But, since the question keeps coming back, I decided to write how I partition my system.&lt;br /&gt;Like I said - it all depends... So the partitioning for my situation might not apply to yours, but reading through this post you might learn a thing or two.&lt;br /&gt;&lt;br /&gt;First of all, I "don't do windows", so you won't read anything about how to double boot between Linux and Microsoft Windows, but basically you can just create an extra primary partition to waste some part of your hard disk and configure your preferred boot loader (Lilo or Grub) to access the alternative.&lt;br /&gt;&lt;br /&gt;What follows is "the long answer" on partitioning your hard drive ;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. About types of partitions&lt;/b&gt;&lt;br /&gt;Partitions come in two types: Primary and Extended. You can have a maximum of 4 partitions on one hard disk. But one of them can be of the "Extended" type, in which you can create several "Logical" partitions.&lt;br /&gt;&lt;br /&gt;Remember this when you create your partitions, as you cannot transform a Primary in an Extended partition without backing up all your data, deleting the primary partition, creating the Extended and Logical partitions and then restoring your data.&lt;br /&gt;After you created four Primary partitions, you're done... No way to go back without erasing!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. The first partition - SWAP&lt;/b&gt;&lt;br /&gt;The SWAP partition was originally invented to use as an overflow for your memory needs. If your system needs more memory than it has available, it starts "swapping" unused data from memory to this SWAP area. This was very common in the days when computers had less memory.&lt;br /&gt;For the readers to have an idea: the first systems I worked with had 1 MB of RAM...&lt;br /&gt;The old rule was that the SWAP partition should be twice the amount of RAM in your system.&lt;br /&gt;&lt;br /&gt;Nowadays memory is cheap and plentiful in modern systems, so you might think you won't need a SWAP partition.&lt;br /&gt;But don't just skip right now...&lt;br /&gt;First of all, the SWAP partition is also used to 'hibernate' your system if it is capable of doing this (actually, I think *all* systems are capable, but normally only notebooks use this).&lt;br /&gt;Hibernating simply saves all memory to the hard drive and reloads it when you reboot your system.&lt;br /&gt;Guess where the memory is saved? Yes, on the SWAP partition.&lt;br /&gt;So, despite the old rule, it should be &lt;i&gt;at least&lt;/i&gt; the size of your RAM.&lt;br /&gt;If you have like 4 GB of RAM, you won't need 8 GB of SWAP space. A SWAP partition of 4.1 GB is good enough.&lt;br /&gt;&lt;br /&gt;If you use several Linux flavors on your system, you can have a single SWAP partition for all of them. Just remember you'll loose the 'hibernate' function if you reboot in a different flavor!&lt;br /&gt;&lt;br /&gt;The SWAP partition is of the type "82" for those using fdisk under Linux.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. The second partition - "root"&lt;/b&gt;&lt;br /&gt;The "root" partition is the base (or 'root') of the hierarchical file system. It is mounted as "/" in Linux and from there you can go down the hierarchy to any folder or device.&lt;br /&gt;The standard of how this hierarchy is set up is well defined in the Filesystem Hierarchy Standard (or FHS) for all Unix-like operating systems. You can read more on this standard &lt;a href="http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard"&gt;here&lt;/a&gt; and &lt;a href="http://www.pathname.com/fhs/"&gt;here&lt;/a&gt;.&lt;br /&gt;Unfortunately, not all Unix or even Linux flavors adhere 100% to the standard, but that's life...&lt;br /&gt;&lt;br /&gt;The root partition is where the basic operating system is installed and all files needed to boot your system, get it connected to the network, etc., should be installed here.&lt;br /&gt;Other files, like data, applications not needed for basic operations, user files, etc., can be on other partitions that are mounted later in the boot process.&lt;br /&gt;The "/root" - the 'home' directory of the "root" user must be on the root partition to guarantee that root can login, even if the network is unavailable or external hard drives are not accessible.&lt;br /&gt;&lt;br /&gt;Most modern Linux distributions are about 5 to 7 GB in size when fully installed.&lt;br /&gt;To have some extra space, I usually create my root partitions with a size of 15 GB.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Extra "root" partitions&lt;/b&gt;&lt;br /&gt;Why create extra root partitions? Because you might want to experiment with newer versions of programs, without messing up your working installation.&lt;br /&gt;Or you might want to try out a completely different distribution of Linux for a change.&lt;br /&gt;I personally keep three "root" partitions on my drive, but two should be enough in most setups.&lt;br /&gt;If you make them 15 GB, like your first root partition, you should be ready for most installations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. The "/boot" partition&lt;/b&gt;&lt;br /&gt;In Linux the /boot folder is used to store the kernel and the 'initrd' files. It is (normally, but do read on...) only used during the boot process.&lt;br /&gt;&lt;br /&gt;Most people forget to make a separate partition for /boot. If you run only one installation of Linux on your system, that's fine. But if you plan to setup a multiple-boot system, with more than one Installation of Linux, possibly mixing different flavors, you might get confused when configuring your boot loader.&lt;br /&gt;&lt;br /&gt;For instance, let's say you install Slackware and Ubuntu on your system.&lt;br /&gt;From Slackware, you configure your /etc/lilo.conf to read the kernel from /boot/vmlinuz-xxxx&lt;br /&gt;To include Ubuntu in your lilo menu, you would need define your image as /dev/sdxx/boot/vmlinuz-yyyy&lt;br /&gt;And to make things worse, after booting Ubuntu, your /etc/lilo.conf there will have to be different, referring to the Slackware kernel as /dev/sdyy/boot/vmlinux-xxxx&lt;br /&gt;&lt;br /&gt;To keep things simple, have a separate /boot partition on your drive that is accessible from all your Linux installations as /boot. Just take care to name your kernels in an organized way, so that you can remember which kernel belongs to which Linux distro.&lt;br /&gt;&lt;br /&gt;Now you will still have several copies of your /etc/lilo.conf, as it stays on the root partition of your Linux installations.&lt;br /&gt;I solved this by creating an /etc folder in /boot, where I put the lilo.conf file and then create a symbolic link in /etc with this command:&lt;br /&gt;&lt;code&gt;# ln -s /boot/etc/lilo.conf /etc/lilo.conf&lt;/code&gt;&lt;br /&gt;This way I can edit my lilo configuration from any Linux installation and keep things simple.&lt;br /&gt;&lt;br /&gt;As for the size of the /boot partition, I make it 250 MB and that has always been enough for me, even with several kernels from several concurrent installations.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. The (optional) "/home" partition&lt;/b&gt;&lt;br /&gt;The /home partition is the subject of many discussions. Each user on a Unix or Linux system has its own /home/&amp;lt;username&amp;gt; folder, accessible only to this user and the all-powerful root.&lt;br /&gt;User-specific configuration files are stored there as well, mostly in hidden sub-folders like .mozilla, .mc, etc.&lt;br /&gt;If your system is only going to have one user, you might as well store everything you want in your "home" folder. But if your system has several users that share files, it is not a good idea to store them here.&lt;br /&gt;&lt;br /&gt;The /home partition also can cause problems if one specific user put a lot of files in his home folder, filling up the whole partition and effectively locking the system for other users that can't even save a simple configuration file. The solution to this problem is configuring a quota-system, but that is beyond the scope of this post.&lt;br /&gt;&lt;br /&gt;As a simple rule, I create my /home partition with the size of (number of users) x 2 GB. That should be enough to save all configuration files. Shared data (downloaded MP3 files, pictures from digital cameras, etc.) go in a separate partition for data (just continue reading...)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7. The (optional) "/usr/local" partition&lt;/b&gt;&lt;br /&gt;As I wrote above, I create my root partitions with the size of 15 GB. This is normally more than enough for a standard Linux installation plus several extra programs.&lt;br /&gt;If you are installing a server with lots of local, non-standard (read: not provided by the standard installation of your Linux distribution) programs, you might want to create a /usr/local partition.&lt;br /&gt;&lt;br /&gt;The size of this partition depends on your specific needs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8. The (optional) "data" partition&lt;/b&gt;&lt;br /&gt;Your desktop (or server) might contain data files you want to share with other users - locally or over the network.&lt;br /&gt;I have seen many discussion on where these files should be saved on a Linux system.&lt;br /&gt;Some prefer the "home" folder of the user, but then they will be available only to that particular user (unless you change the standard permissions, which is not a good idea).&lt;br /&gt;Others prefer a special folder in the root directory, like "/data", "/photos", "/mp3", etc. I personally don't like this idea, as it goes against the FHS mentioned before.&lt;br /&gt;&lt;br /&gt;In *my* opinion, data should be stored under /srv/xxxx, which is &lt;a href="http://www.pathname.com/fhs/pub/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM"&gt;defined&lt;/a&gt; by the FHS as "site-specific data which is served by this system".&lt;br /&gt;If you are sharing your pictures or mp3 files, you are "serving specific data" on your system.&lt;br /&gt;So I mount my "data" partition on /srv/data with sub-folders like "pictures", "music", etc.&lt;br /&gt;&lt;br /&gt;The size of this partition is limited by your hard drive only and your specific needs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;9. Final conclusions&lt;/b&gt;&lt;br /&gt;Do not forget to define all your partitions in your /etc/fstab file to mount them at boot time.&lt;br /&gt;&lt;br /&gt;And - I can't say this enough - it all depends on your needs.&lt;br /&gt;You might not need all these partitions. You can very well survive with just a SWAP and a single root partition on a 1 TB drive. You just might encounter some problems when updating your system...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-2406812379751757153?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/2406812379751757153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=2406812379751757153' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2406812379751757153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2406812379751757153'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/05/on-partitioning-your-hard-drive.html' title='On partitioning your hard drive...'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-921400186031398322</id><published>2009-05-02T14:33:00.004-03:00</published><updated>2009-05-02T15:32:56.625-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackpkg'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Using SlackPkg on Slack/390</title><content type='html'>As promised in my previous post, some instructions to use SlackPkg in Slack/390 to keep your installation up-to-date.&lt;br /&gt;&lt;br /&gt;After almost two years without activiry, the maintainers have released some patches / upgrades for Slack/390 - both the -stable and the -current versions.&lt;br /&gt;Since I use SlackPkg on my other Slackware installations (12.1, 12.2 &amp; -current), I wanted to use this same tool in my Slack/390 installation.&lt;br /&gt;&lt;br /&gt;First i tried with the version that is included in /extra in Slack/390, but it is quite old (1.4, from 2005) and it simply didn't work.&lt;br /&gt;&lt;br /&gt;The first problem is that the big majority of packages on the Slack/390 mirrors do not have the associated xxxx.tgz.asc file, which contain the GPG ckecksum of the package.&lt;br /&gt;This was simple to resolve, setting CHECKGPG=off in /etc/slackpkg/slackpkg.conf&lt;br /&gt;&lt;br /&gt;But the second problem I encountered was with the naming of some files on the Slack/390 mirrors that differs from the 'main' Slackware version:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The MANIFEST.bz2 files are called MANIFEST&lt;u&gt;&lt;b&gt;.s390&lt;/b&gt;&lt;/u&gt;.bz2 in Slack/390&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The CHECKSUM.md5 files are called CHECKSUM&lt;u&gt;&lt;b&gt;.s390&lt;/b&gt;&lt;/u&gt;.md5 in Slack/390&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The PACKAGES.TXT files are called PACKAGES&lt;u&gt;&lt;b&gt;.s390&lt;/b&gt;&lt;/u&gt;.TXT in Slack/390&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The FILELIST.TXT file is called FILELIST.TXT&lt;u&gt;&lt;b&gt;.s390&lt;/b&gt;&lt;/u&gt; (yes, at the end) in Slack/390&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I remembered from the newer versions that there was an option for the 'architecture', so I decided to try SlackPkg 2.70.5 from slackware-12.2&lt;br /&gt;It can be downloaded &lt;a href="http://www.slackpkg.org/stable/slackpkg-2.70.5-noarch-2.tgz"&gt;here&lt;/a&gt; or any valid Slackware mirror.&lt;br /&gt;Since SlackPkg is written as a collection of scripts and marked as "noarch", I expected no problems.&lt;br /&gt;&lt;br /&gt;So I downloaded the package, upgraded the 1.4 version with upgradepkg and edited /etc/slackpkg/slackpkg.conf&lt;br /&gt;I commented out the 'standard' x86 architecture and uncommented the ARCH=s390 line.&lt;br /&gt;But no luck yet... Still the same problems with the differences in the file names.&lt;br /&gt;&lt;br /&gt;At this moment I reached the conclusion that I had to 'hack' the SlackPkg scripts to get it working.&lt;br /&gt;&lt;br /&gt;I ended up modifying two files, /usr/bin/slackpkg &amp; /usr/libexec/slackpkg/core-functions.sh&lt;br /&gt;&lt;br /&gt;The first patch is to the main slackpkg script and defines a variable 'subARCH' to insert the ".s390" text in the filenames in case the ARCH is s390:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;--- slackpkg.orig 2009-04-10 23:44:49.000000000 -0300&lt;br /&gt;+++ /usr/sbin/slackpkg 2009-04-10 23:57:28.000000000 -0300&lt;br /&gt;@@ -40,6 +40,7 @@&lt;br /&gt; SOURCE=$(grep -e "^\([a-z]\)" $CONF/mirrors)&lt;br /&gt; . $CONF/slackpkg.conf&lt;br /&gt; ARCH=${ARCH:-i[3456]86}&lt;br /&gt;+[ "$ARCH" = "s390" ] &amp;&amp; subARCH=".s390"&lt;br /&gt; LOCAL=0&lt;br /&gt; KERNELMD5=$(md5sum /boot/vmlinuz 2&gt;/dev/null)&lt;br /&gt; TMPDIR=$(mktemp -p /tmp -d slackpkg.XXXXXX 2&gt;/dev/null || echo "FAILED")&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The second patch is to the core-functions script and inserts the $subARCH variable in the filenames:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;--- core-functions.sh.orig 2009-04-10 23:53:19.000000000 -0300&lt;br /&gt;+++ /usr/libexec/slackpkg/core-functions.sh 2009-04-11 00:02:49.000000000 -0300&lt;br /&gt;@@ -618,16 +618,16 @@&lt;br /&gt;  #&lt;br /&gt;  echo -e "\t\tList of all files"&lt;br /&gt;  for i in $FIRST $SECOND $THIRD $FOURTH $FIFTH ; do &lt;br /&gt;-  getfile ${i}/MANIFEST.bz2 $TMPDIR/${i}-MANIFEST.bz2 &amp;&amp; \&lt;br /&gt;+  getfile ${i}/MANIFEST${subARCH}.bz2 $TMPDIR/${i}-MANIFEST.bz2 &amp;&amp; \&lt;br /&gt;    DIRS="$DIRS $i"&lt;br /&gt;  done&lt;br /&gt; &lt;br /&gt;  echo -e "\t\tPackage List"&lt;br /&gt;- getfile FILELIST.TXT $TMPDIR/FILELIST.TXT&lt;br /&gt;+ getfile FILELIST.TXT${subARCH} $TMPDIR/FILELIST.TXT&lt;br /&gt; &lt;br /&gt;  if [ "$CHECKPKG" = "on" ]; then&lt;br /&gt;   echo -e "\t\tChecksums"&lt;br /&gt;-  getfile CHECKSUMS.md5 ${TMPDIR}/CHECKSUMS.md5&lt;br /&gt;+  getfile CHECKSUMS${subARCH}.md5 ${TMPDIR}/CHECKSUMS.md5&lt;br /&gt;  fi&lt;br /&gt;  cp $TMPDIR/CHECKSUMS.md5 $WORKDIR/CHECKSUMS.md5&lt;br /&gt;   &lt;br /&gt;@@ -635,7 +635,7 @@&lt;br /&gt;  # &lt;br /&gt;  echo -e "\t\tPackage descriptions"&lt;br /&gt;  for i in $DIRS; do&lt;br /&gt;-  getfile ${i}/PACKAGES.TXT $TMPDIR/${i}-PACKAGES.TXT&lt;br /&gt;+  getfile ${i}/PACKAGES${subARCH}.TXT $TMPDIR/${i}-PACKAGES.TXT&lt;br /&gt;  done&lt;br /&gt; &lt;br /&gt;  # Format FILELIST.TXT&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;With these changes, I got SlackPkg working in my Slack/390 installation!&lt;br /&gt;&lt;br /&gt;There are still some problems, but they depend on some cleaning up of the Slack/390 mirrors.&lt;br /&gt;In the following image you can see that SlackPkg wants to "upgrade" some packages to older versions:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SfyQK0IGrLI/AAAAAAAAAQw/JNemGrihALw/s1600-h/slackpkg_390.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 171px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SfyQK0IGrLI/AAAAAAAAAQw/JNemGrihALw/s320/slackpkg_390.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5331294574365551794" /&gt;&lt;/a&gt;&lt;br /&gt;The fact that SlackPkg want to "downgrade" itself to version 1.4 is understandable, as it is the official version for Slack/390.&lt;br /&gt;The suggestions to downgrade abiword, gftp and gucharmap are caused by the fact that these packages exist two times on the mirrors, once in slackware/gnome (the older versions) and once in slackware/xap (the newer versions).&lt;br /&gt;I wrote about these inconsistencies to s390support@slackware.com but unfortunately have not received any answers yet.&lt;br /&gt;&lt;br /&gt;Even with these minor problems, keeping your Slack/390 installation is a lot simpler now with a working SlackPkg!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-921400186031398322?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/921400186031398322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=921400186031398322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/921400186031398322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/921400186031398322'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/05/using-slackpkg-on-slack390.html' title='Using SlackPkg on Slack/390'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/SfyQK0IGrLI/AAAAAAAAAQw/JNemGrihALw/s72-c/slackpkg_390.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5228645134640549827</id><published>2009-05-01T19:22:00.002-03:00</published><updated>2009-05-01T19:30:07.239-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackpkg'/><title type='text'>Update on Slack/390</title><content type='html'>For those who have been following my posts on installing Slack/390 on Hercules:&lt;br /&gt;There has been a security update this week - see the &lt;a href="http://www.slackware.com/changelog/stable.php?cpu=s390"&gt;ChangeLog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I recently managed to patch a current version of SlackPkg to work on Slack/390 (the version included in /extra does not work).&lt;br /&gt;I'll try to organize my notes during the following days and publish the patch so that everyone can keep Slack/390 updated with this wonderful tool :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5228645134640549827?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5228645134640549827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5228645134640549827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5228645134640549827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5228645134640549827'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/05/update-on-slack390.html' title='Update on Slack/390'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6117043772347709150</id><published>2009-04-18T16:45:00.000-03:00</published><updated>2009-04-18T16:45:01.105-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tux'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Tux and... Tuz?</title><content type='html'>In a &lt;a href="http://nielshorn.blogspot.com/2008/10/hidden-name-in-linux-logo.html"&gt;previous post&lt;/a&gt; I wrote something about our little friend Tux, the symbol of Linux.&lt;br /&gt;&lt;br /&gt;On most computers running Linux he'll show up while the kernel is starting up the main services, once for every processor in your system. This little picture in compiled into the kernel and, if you have the sources on your system (like on almost all Slackware installations), you can find him at /usr/src/linux/drivers/video/logo in his various forms (black &amp; white, color, with several architecture-logos, etc.)&lt;br /&gt;The most well-known version is in the logo_linux_clut224.ppm file:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SeoJx1ry2SI/AAAAAAAAAPg/JIQMNkYY80k/s1600-h/logo_linux_clut224_tux.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 80px; height: 80px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SeoJx1ry2SI/AAAAAAAAAPg/JIQMNkYY80k/s320/logo_linux_clut224_tux.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5326080261148039458" /&gt;&lt;/a&gt;&lt;br /&gt;Who likes to use the latest version of the kernel, will have noticed that as of 2.6.29, Tux has been replaced by... Tuz:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SeoKjWYFQcI/AAAAAAAAAPo/HBxtBhBHrTc/s1600-h/logo_linux_clut224_tuz.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 145px; height: 113px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SeoKjWYFQcI/AAAAAAAAAPo/HBxtBhBHrTc/s320/logo_linux_clut224_tuz.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5326081111737319874" /&gt;&lt;/a&gt;&lt;br /&gt;Tuz is a little &lt;a href="http://tassiedevil.com.au/"&gt;Tasmanian Devil&lt;/a&gt; trying to disguise as a penguin :-)&lt;br /&gt;&lt;br /&gt;Linus Torvalds had already announced this chance in his &lt;a href="http://torvalds-family.blogspot.com/2009/03/new-logo.html"&gt;blog&lt;/a&gt; and as most understood, this is a temporary change, only in the 2.6.29.x kernels.&lt;br /&gt;&lt;br /&gt;But for those who can't wait and really do not like Tuz, it is possible to compile your own kernel with Tux on your screen again.&lt;br /&gt;&lt;br /&gt;First you'll have to get hold of the original logo_linux_clut224.ppm with the image from Tux. Get it from a system still running the 2.6.28.x kernel or older, or find it on the internet. Save this file in /usr/src/linux/drivers/video/logo/ and then follow these standard steps to compile your kernel:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;# cd /usr/src/linux&lt;/li&gt;&lt;br /&gt;&lt;li&gt;# make mrproper&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Copy the configuration file of your current kernel (usually in /boot) as .config here&lt;/li&gt;&lt;br /&gt;&lt;li&gt;# make menuconfig&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In the configuration menu, choose "General setup" and change the "Local version" to something like "-tux", so that you can recognize your custom kernel later. Exit the menu saving your change.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;# make (this will take a while, depending on your processing power...)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;# make modules_install&lt;/li&gt;&lt;br /&gt;&lt;li&gt;# cp arch/i386/boot/bzImage /boot/vmlinuz-tux&lt;li&gt;&lt;br /&gt;&lt;li&gt;# cp System.map /boot/System.map-tux&lt;/li&gt;&lt;br /&gt;&lt;li&gt;# cp .config /boot/config-tux&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you used an initrd with your normal kernel, you'll need to create one for this custom kernel as well&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Add your new kernel to your lilo.conf, run lilo and reboot!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;If you feel like it you can also experiment with other pictures... :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6117043772347709150?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6117043772347709150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6117043772347709150' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6117043772347709150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6117043772347709150'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/04/tux-and-tuz.html' title='Tux and... Tuz?'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/SeoJx1ry2SI/AAAAAAAAAPg/JIQMNkYY80k/s72-c/logo_linux_clut224_tux.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7712573752898628141</id><published>2009-04-18T16:11:00.005-03:00</published><updated>2009-04-21T23:13:50.184-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego Sculptures'/><title type='text'>Lego sculpture of Jesus</title><content type='html'>It's been a week since Easter, but here is a little article I found about a sculpture of Jesus, build in a church in Vasteras, Sweden. It was made using 30.000 pieces:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SeonKIK9ZeI/AAAAAAAAAPw/fEghVvyIT8Y/s1600-h/Lego_Sculpture_Jesus.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 290px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SeonKIK9ZeI/AAAAAAAAAPw/fEghVvyIT8Y/s320/Lego_Sculpture_Jesus.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5326112564264658402" /&gt;&lt;/a&gt;&lt;br /&gt;The article can be found &lt;a href="http://www.dr.dk/Nyheder/Udland/2009/04/12/153857.htm"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7712573752898628141?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7712573752898628141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7712573752898628141' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7712573752898628141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7712573752898628141'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/04/lego-statue-of-jesus.html' title='Lego sculpture of Jesus'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/SeonKIK9ZeI/AAAAAAAAAPw/fEghVvyIT8Y/s72-c/Lego_Sculpture_Jesus.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-846489894924294099</id><published>2009-04-18T12:40:00.004-03:00</published><updated>2009-04-18T13:08:42.213-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slackpkg'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Adventures with SlackPkg - Part I</title><content type='html'>As a big fan of Slackware, I try to follow the -current branch of this distribution on two of my machines at home.&lt;br /&gt;Doing this is not a good idea on a production machine, as things might stop working. The -current branch is mainly for testing newer versions of packages. The developers of Slackware are usually grateful when receiving feedback if something goes wrong, so that it can be fixed before the new stable release.&lt;br /&gt;&lt;br /&gt;I use SlackPkg, a wonderful tool that since long has been included with Slackware as an extra, but since the release of 12.2 is part of the standard installation.&lt;br /&gt;SlackPkg can check for updates to the -current or stable branch and then upgrade or add the available packages and patches.&lt;br /&gt;&lt;br /&gt;This week (April 15th) a new version of the 'pkgtools' package was released, fixing some small bugs. While trying to upgrade the package with SlackPkg, it complained that the md5sum was not matching.&lt;br /&gt;After researching some of the code, I found out that in the 'checkpkg' function in /usr/libexec/slackpkg/core-functions.sh the 'MD5ORIGINAL' variable receives the md5sum of both the package to be installed and the source package (source/a/pkgtools/pkgtools-12.34567890-noarch-2.tgz).&lt;br /&gt;&lt;br /&gt;A temporary work-around was to disable md5sum checking in SlackPkg, changing CHECKPKG=on to CHECKPKG=off in /etc/slackpkg/slackpkg.conf&lt;br /&gt;&lt;br /&gt;I posted the problem at &lt;a href="http://www.linuxquestions.org/questions/slackware-14/problem-with-latest-current-patch-error-in-slackpkg-719552/"&gt;LinuxQuestions&lt;/a&gt; and the same day Alan Hicks responded with a &lt;a href="http://www.slackware.com/~alan/core-functions.sh.diff.txt"&gt;patch&lt;/a&gt; that basically filters out the source-packages when getting the md5sum.&lt;br /&gt;&lt;br /&gt;The trick is in the included 'grep -v'. In /usr/libexec/slackpkg/core-functions.sh the line:&lt;br /&gt;&lt;code&gt;MD5ORIGINAL=$(grep "/${NAMEPKG}$" ${WORKDIR}/CHECKSUMS.md5| cut -f1 -d \ )&lt;/code&gt;&lt;br /&gt;was changed to:&lt;br /&gt;&lt;code&gt;MD5ORIGINAL=$(grep "/${NAMEPKG}$" ${WORKDIR}/CHECKSUMS.md5| &lt;b&gt;grep -v '/source/'| &lt;/b&gt;cut -f1 -d \ )&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It seems to be a rare occurrence of having an installation package and source package with exactly the same name.&lt;br /&gt;&lt;br /&gt;The patch lets SlackPkg install the package, but it is still not perfect, as it tries to install it twice.&lt;br /&gt;But I'll leave this to PiterPunk to fix, as it is no serious problem. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-846489894924294099?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/846489894924294099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=846489894924294099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/846489894924294099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/846489894924294099'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2009/04/adventures-with-slackpkg-part-i.html' title='Adventures with SlackPkg - Part I'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-8238761843596422913</id><published>2008-12-07T10:10:00.004-02:00</published><updated>2008-12-07T11:12:50.328-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>KDE Network Configuration tool and Slackware</title><content type='html'>This weekend I tried to help someone on &lt;a href="http://www.linuxquestions.org/"&gt;LinuxQuestions.org&lt;/a&gt; who asked about the knetworkconf tool from KDEs Control Center.&lt;br /&gt;In Slackware this tool hasn't been working for quite some time, it simply says that our operating system is not supported:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/STvLn8SU96I/AAAAAAAAAPQ/ynM6L_iRVPI/s1600-h/knetworkconf_1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 230px; height: 320px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/STvLn8SU96I/AAAAAAAAAPQ/ynM6L_iRVPI/s320/knetworkconf_1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5277035275453003682" /&gt;&lt;/a&gt;&lt;br /&gt;(My KDE is in Portuguese, but you'll get the idea...)&lt;br /&gt;&lt;br /&gt;I never bothered about it, as I prefer to do all configuring the 'Slackware-way': editing text files. This way I know what's happening and I am in control.&lt;br /&gt;&lt;br /&gt;But I understand that this is not for everyone, so this subject pops up once in a while on the forums and I decided to take a look again.&lt;br /&gt;&lt;br /&gt;The knetworkconf tool uses several Perl scripts that are stored in /usr/share/apps/knetworkconf/backends&lt;br /&gt;I am definitely not a Perl-guru, but browsing through the several files, I discovered it was nothing too complicated. Basically, network configuration hasn't changed much in Slackware over the last several versions so first I just added the newer version numbers to all files where they were checked.&lt;br /&gt;&lt;br /&gt;Posting the first patch file on LinuxQuestions.org a fellow forum member (thanks Woodsman!) discovered that the KDE tool did not show the configured domain correctly.&lt;br /&gt;This actually was a bug in the tool, not my patch, but I managed to solve it.&lt;br /&gt;&lt;br /&gt;After some more testing I discovered that every time I saved any changes with knetworkconf, my Samba server stopped working and was even disabled.&lt;br /&gt;This turned out to be another silly bug in knetworkconf, where they forgot to use a variable that holds the current status of Samba.&lt;br /&gt;&lt;br /&gt;I posted all patches on the forum and Pat has already included them in the -current branch (see the &lt;a href="http://www.slackware.com/changelog/current.php?cpu=i386"&gt;changelog&lt;/a&gt;).&lt;br /&gt;I also sent the patches upstream to the fellows at KDE, so hopefully it makes it into the next versions there as well.&lt;br /&gt;&lt;br /&gt;Those who use Slackware 12.1 (the most recent stable version), can copy the following lines and save them in a file:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;*** orig/network-conf 2008-12-06 10:17:03.000000000 -0200&lt;br /&gt;--- /usr/share/apps/knetworkconf/backends/network-conf 2008-12-06 10:25:17.000000000 -0200&lt;br /&gt;***************&lt;br /&gt;*** 78,83 ****&lt;br /&gt;--- 78,84 ----&lt;br /&gt;                "vine-3.0", "vine-3.1",&lt;br /&gt;                "ark", &lt;br /&gt;                "slackware-9.1.0", "slackware-10.0.0", "slackware-10.1.0", "slackware-10.2.0",&lt;br /&gt;+               "slackware-11.0.0", "slackware-12.0.0", "slackware-12.1.0", "slackware-12.2.0",&lt;br /&gt;                "gentoo", "vlos-1.2", "freebsd-5", "freebsd-6");&lt;br /&gt;  &lt;br /&gt;  $description =&lt;&lt;"end_of_description;";&lt;br /&gt;*** orig/network.pl 2008-12-06 10:16:52.000000000 -0200&lt;br /&gt;--- /usr/share/apps/knetworkconf/backends/network.pl 2008-12-06 21:52:53.000000000 -0200&lt;br /&gt;***************&lt;br /&gt;*** 541,546 ****&lt;br /&gt;--- 541,550 ----&lt;br /&gt;         "slackware-10.0.0" =&gt; "redhat-6.2",&lt;br /&gt;         "slackware-10.1.0" =&gt; "redhat-6.2",&lt;br /&gt;         "slackware-10.2.0" =&gt; "redhat-6.2",&lt;br /&gt;+        "slackware-11.0.0" =&gt; "redhat-6.2",&lt;br /&gt;+        "slackware-12.0.0" =&gt; "redhat-6.2",&lt;br /&gt;+        "slackware-12.1.0" =&gt; "redhat-6.2",&lt;br /&gt;+        "slackware-12.2.0" =&gt; "redhat-6.2",&lt;br /&gt;         "gentoo"       =&gt; "debian-2.2",&lt;br /&gt;         "vlos-1.2"     =&gt; "debian-2.2",&lt;br /&gt;         "freebsd-5"    =&gt; "debian-2.2",&lt;br /&gt;***************&lt;br /&gt;*** 1855,1860 ****&lt;br /&gt;--- 1859,1868 ----&lt;br /&gt;            "slackware-10.0.0" =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;            "slackware-10.1.0" =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;            "slackware-10.2.0" =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;+           "slackware-11.0.0" =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;+           "slackware-12.0.0" =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;+           "slackware-12.1.0" =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;+           "slackware-12.2.0" =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;            "gentoo"       =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;            "freebsd-5"    =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;            "freebsd-6"    =&gt; \&amp;gst_network_deb22_get_file,&lt;br /&gt;***************&lt;br /&gt;*** 3985,3990 ****&lt;br /&gt;--- 3993,4002 ----&lt;br /&gt;            "slackware-10.0.0" =&gt; "",&lt;br /&gt;            "slackware-10.1.0" =&gt; "",&lt;br /&gt;            "slackware-10.2.0" =&gt; "",&lt;br /&gt;+           "slackware-11.0.0" =&gt; "",&lt;br /&gt;+           "slackware-12.0.0" =&gt; "",&lt;br /&gt;+           "slackware-12.1.0" =&gt; "",&lt;br /&gt;+           "slackware-12.2.0" =&gt; "",&lt;br /&gt;            "gentoo"       =&gt; "",&lt;br /&gt;            "vlos-1.2"     =&gt; "",&lt;br /&gt;            "freebsd-5"    =&gt; "",&lt;br /&gt;***************&lt;br /&gt;*** 4160,4165 ****&lt;br /&gt;--- 4172,4181 ----&lt;br /&gt;            "slackware-10.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "slackware-10.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "slackware-10.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-11.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "gentoo"       =&gt; "gentoo",&lt;br /&gt;            "vlos-1.2"     =&gt; "gentoo",&lt;br /&gt;            "freebsd-5"    =&gt; "freebsd-5",&lt;br /&gt;***************&lt;br /&gt;*** 4442,4447 ****&lt;br /&gt;--- 4458,4464 ----&lt;br /&gt;         [ "hostname",      \&amp;gst_parse_fq_hostname, HOSTNAME ],&lt;br /&gt;         [ "nameserver",    \&amp;gst_parse_split_all_unique_hash_comment, RESOLV_CONF,  "nameserver", "[ \t]+" ],&lt;br /&gt;         [ "searchdomain",  \&amp;gst_parse_split_first_array_unique, RESOLV_CONF,  "search", "[ \t]+", "[ \t]+" ],&lt;br /&gt;+        [ "domain",        \&amp;gst_parse_fq_domain,   HOSTNAME ],&lt;br /&gt;         [ "domain",        \&amp;gst_parse_split_first_str,   RESOLV_CONF,  "domain", "[ \t]+" ],&lt;br /&gt;         [ "order",         \&amp;gst_parse_split_first_array, HOST_CONF,    "order", "[ \t]+", ",[ \t]*" ],&lt;br /&gt;         [ "hostmatch",     \&amp;gst_parse_split_first_bool,  HOST_CONF,    "multi", "[ \t]+" ],&lt;br /&gt;***************&lt;br /&gt;*** 4591,4596 ****&lt;br /&gt;--- 4608,4617 ----&lt;br /&gt;            "slackware-10.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "slackware-10.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "slackware-10.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-11.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "gentoo"       =&gt; "gentoo",&lt;br /&gt;            "vlos-1.2"     =&gt; "gentoo",&lt;br /&gt;            "freebsd-5"    =&gt; "freebsd-5",&lt;br /&gt;***************&lt;br /&gt;*** 5439,5444 ****&lt;br /&gt;--- 5460,5469 ----&lt;br /&gt;            "slackware-10.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "slackware-10.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "slackware-10.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-11.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "gentoo"       =&gt; "gentoo",&lt;br /&gt;            "vlos-1.2"     =&gt; "gentoo",&lt;br /&gt;            "freebsd-5"    =&gt; "freebsd-5",&lt;br /&gt;***************&lt;br /&gt;*** 5719,5725 ****&lt;br /&gt;         [ "smbdesc",       \&amp;gst_replace_ini,              SMB_CONF,    "global", "server string" ],&lt;br /&gt;         [ "winsserver",    \&amp;gst_replace_ini,              SMB_CONF,    "global", "wins server" ],&lt;br /&gt;         [ "winsuse",       \&amp;gst_replace_ini_bool,         SMB_CONF,    "global", "wins support" ],&lt;br /&gt;!        [ "smbuse",        \&amp;gst_service_bsd_set_status,   "/etc/rc.d/rc.samba" ],&lt;br /&gt;         [ "interface",     \&amp;gst_network_interfaces_set,   OLD_HASH ],&lt;br /&gt;         [ "gateway",       \&amp;gst_network_route_set_default_gw, "%gatewaydev%" ]&lt;br /&gt;        ]&lt;br /&gt;--- 5744,5750 ----&lt;br /&gt;         [ "smbdesc",       \&amp;gst_replace_ini,              SMB_CONF,    "global", "server string" ],&lt;br /&gt;         [ "winsserver",    \&amp;gst_replace_ini,              SMB_CONF,    "global", "wins server" ],&lt;br /&gt;         [ "winsuse",       \&amp;gst_replace_ini_bool,         SMB_CONF,    "global", "wins support" ],&lt;br /&gt;!        [ "smbuse",        \&amp;gst_service_bsd_set_status,   "/etc/rc.d/rc.samba", "%smbuse%" ],&lt;br /&gt;         [ "interface",     \&amp;gst_network_interfaces_set,   OLD_HASH ],&lt;br /&gt;         [ "gateway",       \&amp;gst_network_route_set_default_gw, "%gatewaydev%" ]&lt;br /&gt;        ]&lt;br /&gt;***************&lt;br /&gt;*** 5855,5860 ****&lt;br /&gt;--- 5880,5889 ----&lt;br /&gt;            "slackware-10.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "slackware-10.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "slackware-10.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-11.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+           "slackware-12.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;            "gentoo"       =&gt; "gentoo",&lt;br /&gt;            "vlos-1.2"     =&gt; "gentoo",&lt;br /&gt;            "freebsd-5"    =&gt; "freebsd-5",&lt;br /&gt;*** orig/platform.pl 2008-12-06 10:17:58.000000000 -0200&lt;br /&gt;--- /usr/share/apps/knetworkconf/backends/platform.pl 2008-12-06 10:35:27.000000000 -0200&lt;br /&gt;***************&lt;br /&gt;*** 90,95 ****&lt;br /&gt;--- 90,99 ----&lt;br /&gt;    "slackware-10.0.0" =&gt; "Slackware 10.0.0",&lt;br /&gt;    "slackware-10.1.0" =&gt; "Slackware 10.1.0",&lt;br /&gt;    "slackware-10.2.0" =&gt; "Slackware 10.2.0",&lt;br /&gt;+   "slackware-11.0.0" =&gt; "Slackware 11.0.0",&lt;br /&gt;+   "slackware-12.0.0" =&gt; "Slackware 12.0.0",&lt;br /&gt;+   "slackware-12.1.0" =&gt; "Slackware 12.1.0",&lt;br /&gt;+   "slackware-12.2.0" =&gt; "Slackware 12.2.0",&lt;br /&gt;    "freebsd-4"       =&gt; "FreeBSD 4",&lt;br /&gt;    "freebsd-5"       =&gt; "FreeBSD 5",&lt;br /&gt;    "freebsd-6"       =&gt; "FreeBSD 6",&lt;br /&gt;*** orig/service.pl 2008-12-06 10:16:37.000000000 -0200&lt;br /&gt;--- /usr/share/apps/knetworkconf/backends/service.pl 2008-12-06 10:36:52.000000000 -0200&lt;br /&gt;***************&lt;br /&gt;*** 275,280 ****&lt;br /&gt;--- 275,284 ----&lt;br /&gt;       "slackware-10.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;       "slackware-10.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;       "slackware-10.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+      "slackware-11.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+      "slackware-12.0.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+      "slackware-12.1.0" =&gt; "slackware-9.1.0",&lt;br /&gt;+      "slackware-12.2.0" =&gt; "slackware-9.1.0",&lt;br /&gt;  &lt;br /&gt;       "gentoo"         =&gt; "gentoo",&lt;br /&gt;       "vlos-1.2"       =&gt; "gentoo",&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Be careful with the longer lines!&lt;br /&gt;Next, open a console as root and type the following:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd /usr/share/apps/knetworkconf/backends&lt;br /&gt;patch &lt; (your_saved_patchfile)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This should work with all versions since 11.0, but I only tested it on 12.1 and 12.2-RC1, so all standard disclaimers apply...&lt;br /&gt;&lt;br /&gt;The result is a working knetworkconf:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/STvHedsno8I/AAAAAAAAAPI/Uj_wmRtrsfM/s1600-h/knetworkconf.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/STvHedsno8I/AAAAAAAAAPI/Uj_wmRtrsfM/s320/knetworkconf.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5277030714576446402" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-8238761843596422913?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/8238761843596422913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=8238761843596422913' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8238761843596422913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8238761843596422913'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/12/kde-network-confiuration-tool-and.html' title='KDE Network Configuration tool and Slackware'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/STvLn8SU96I/AAAAAAAAAPQ/ynM6L_iRVPI/s72-c/knetworkconf_1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6027610776357997272</id><published>2008-11-22T00:24:00.006-02:00</published><updated>2008-11-22T01:57:35.551-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 11</title><content type='html'>...Continuing from &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-10.html"&gt;Part 10&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Final configuration and IPLing Slack390&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The setup program configured our network, but missed some important details we need to get our network up and running.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Loading the network adapter kernel module at boot time&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Since we selected to use the LCS we need to load the kernel module that supports it.&lt;br /&gt;This is done by editing the /etc/rc.d/rc.modules file.&lt;br /&gt;I personally prefer VI as an editor, but use whatever you're more familiar with (and is available in our limited 'live'-system).&lt;br /&gt;If you use VI, search for 'lcs' (hint: open the file with 'vi /etc/rc.d/rc.modules' and type '/lcs' + Enter - it's at line 69) and remove the '#' at the beginning of the line that reads:&lt;br /&gt;&lt;code&gt;#/sbin/modprobe lcs&lt;/code&gt;&lt;br /&gt;(hint: press 'Home' to go to the beginning of the line, 'd' + 'space' to delete the '#')&lt;br /&gt;&lt;br /&gt;Now save the modified file (hint: press ':' + 'wq' + Enter)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) Setting the options for the lcs kernel module&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;We also need to tell the lcs kernel module the device number of our emulated LCS.&lt;br /&gt;So we create a /etc/modprobe.conf file with the needed information by typing this line:&lt;br /&gt;&lt;code&gt;echo "options lcs 0xf00,1" &gt; /etc/modprobe.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3) Repeating the chandev information from parmfile.txt&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;To finish, we need to create the /etc/chandev.conf file with the information we put in our original parmfile.txt:&lt;br /&gt;&lt;code&gt;echo "lcs0,0xf00,0xf01" &gt; /etc/chandev.conf&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;4) Shutdown our system&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Now everything is ready to shutdown our running system, so just enter:&lt;br /&gt;&lt;code&gt;halt&lt;/code&gt;&lt;br /&gt;and press Enter.&lt;br /&gt;&lt;br /&gt;Our telnet session will be closed so we'll change to the Hercules console, where we'll see the following lines:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdvs4fDLmI/AAAAAAAAAOA/PiO0ZrA83ZY/s1600-h/Slack390_Z01-shutdown.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 82px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdvs4fDLmI/AAAAAAAAAOA/PiO0ZrA83ZY/s320/Slack390_Z01-shutdown.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271304705727999586" /&gt;&lt;/a&gt;&lt;br /&gt;Now quit from Hercules to guarantee a clean start by typing 'quit' after the &lt;b&gt;Commmand ==&amp;gt;&lt;/b&gt; prompt.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;5) IPLing our Slack/390 installation for the first time&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Start Hercules again and IPL from the first DASD (device number 0120) by typing 'ipl 120' after the &lt;b&gt;Commmand ==&amp;gt;&lt;/b&gt; prompt.&lt;br /&gt;&lt;br /&gt;Since we selected to start the SSH daemon at boot time, Slack/390 will create three public / private key pairs, one each for rsa1, dsa and rsa.&lt;br /&gt;This will take some time (especially the dsa key pair), depending on your processing power (like 10 to 30 minutes).&lt;br /&gt;You'll see - amongst others - the following lines on the Hercules console:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Starting OpenSSH SSH daemon:  /usr/sbin/sshd&lt;br /&gt;Generating public/private rsa1 key pair.&lt;br /&gt;Generating public/private dsa key pair.&lt;br /&gt;Generating public/private rsa key pair.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This only occurs the first time you IPL your Slack/390. All the other times it will be a lot faster.&lt;br /&gt;&lt;br /&gt;The last line on the Hercules console will be:&lt;br /&gt;&lt;code&gt;bash-3.00#&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This means that Slack/390 was loaded and is ready to receive connections.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;6) Connecting to your Slack/390 system&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Now go back to your normal console on your host system.&lt;br /&gt;For security reasons, telnet sessions are not allowed, so we'll have to use ssh from now on.&lt;br /&gt;Connect to your Slack/390 system from your host system (or any other system on your network) with the following command:&lt;br /&gt;&lt;code&gt;ssh root@192.168.1.162&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The first time you connect to your new Slack/390 system you'll see the following lines:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;The authenticity of host '192.168.1.162 (192.168.1.162)' can't be established.&lt;br /&gt;RSA key fingerprint is df:27:56:56:4b:c3:30:aa:c5:dc:94:2e:21:93:c3:af.&lt;br /&gt;Are you sure you want to continue connecting (yes/no)?&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Simply answer 'yes' to continue and you'll see these lines:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Warning: Permanently added '192.168.1.162' (RSA) to the list of known hosts.&lt;br /&gt;root@192.168.1.162's password:&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Enter the password for root you defined and you'll get this prompt:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Linux 2.4.29.&lt;br /&gt;root@herc-slack:~#&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Congratulations! You finished installing Slack/390 on your (emulated) mainframe!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;7) Where to go from here&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;First of all, create a normal user with 'adduser' so that you don't have to use root to login to your mainframe.&lt;br /&gt;&lt;br /&gt;And then? Well, depending on your processing power, there are many fun things to do, like configuring the http daemon to run a webserver on your mainframe, with mysql. Or configure samba, so that you can access it from Windows desktops.&lt;br /&gt;&lt;br /&gt;Or start browsing the web with lynx to check for updates of Slack/390:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSeBQVjNYqI/AAAAAAAAAOI/-zPcIJdJh9s/s1600-h/Slack390_Z02-lynx.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSeBQVjNYqI/AAAAAAAAAOI/-zPcIJdJh9s/s320/Slack390_Z02-lynx.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271324006523167394" /&gt;&lt;/a&gt;&lt;br /&gt;Oh, but you complain that there are no graphics?&lt;br /&gt;We have graphics on our mainframe! Just enter 'info aalib' and you'll see what I mean:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSeB2hm1MbI/AAAAAAAAAOQ/PC902qgQ7O4/s1600-h/Slack390_Z03-graphics.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 315px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSeB2hm1MbI/AAAAAAAAAOQ/PC902qgQ7O4/s320/Slack390_Z03-graphics.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271324662594613682" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6027610776357997272?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6027610776357997272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6027610776357997272' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6027610776357997272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6027610776357997272'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-11.html' title='Hercules and Slackware (slack/390) - Part 11'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/SSdvs4fDLmI/AAAAAAAAAOA/PiO0ZrA83ZY/s72-c/Slack390_Z01-shutdown.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5283480876281566918</id><published>2008-11-21T22:14:00.003-02:00</published><updated>2008-11-22T01:58:52.514-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 10</title><content type='html'>...Continuing from &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-9.html"&gt;Part 9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Configuring our installation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;After installing all the selected packages, the setup program takes us to the configuration item of the menu.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Kernel parameters&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;First we can add any necessary boot parameters. Remember that these are roughly equivalent to the parameters you normally put in your /etc/lilo.conf file:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdQDh9vN-I/AAAAAAAAALI/LIlNXwWM3Dw/s1600-h/Slack390_N-config1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 140px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdQDh9vN-I/AAAAAAAAALI/LIlNXwWM3Dw/s320/Slack390_N-config1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271269910447601634" /&gt;&lt;/a&gt;&lt;br /&gt;What we define here is:&lt;br /&gt;- where to find our storage devices (dasd=120-121)&lt;br /&gt;- where to find our root partition (root=/dev/dasda1)&lt;br /&gt;- to mount root as read-only first (ro)&lt;br /&gt;- that we won't use an initial RAM disk (noinitrd)&lt;br /&gt;&lt;br /&gt;Normally you do not need to change these parameters, so just press Enter here.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) Select a kernel&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;We are given a list of possible kernels to boot (roughly equivalent to our menu options in lilo):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdRgl4o3wI/AAAAAAAAALQ/39ZhjZBGq78/s1600-h/Slack390_O-config2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 175px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdRgl4o3wI/AAAAAAAAALQ/39ZhjZBGq78/s320/Slack390_O-config2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271271509227790082" /&gt;&lt;/a&gt;&lt;br /&gt;Well, we just have one kernel for now, so just press Enter again...&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3) Disabling hotplug&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;We are now asked if we want to enable the hotplug subsystem:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSdTCoVZlfI/AAAAAAAAALY/gMlLNMe5Ndw/s1600-h/Slack390_P-config3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 206px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSdTCoVZlfI/AAAAAAAAALY/gMlLNMe5Ndw/s320/Slack390_P-config3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271273193512474098" /&gt;&lt;/a&gt;&lt;br /&gt;As the text explains, this is very useful for USB and cardbus devices, soundcards, etc. But I haven't seen any mainframe up to now that uses anything like this, so it's better to choose '&amp;lt; &lt;b&gt;N&lt;/b&gt;o &amp;gt;' here and press Enter.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;4) Mouse selection&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Now we're asked about the type of mouse on our mainframe:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSdUDwcBjII/AAAAAAAAALg/03U5145JWEA/s1600-h/Slack390_Q-config4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSdUDwcBjII/AAAAAAAAALg/03U5145JWEA/s320/Slack390_Q-config4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271274312379239554" /&gt;&lt;/a&gt;&lt;br /&gt;Again, I still have to find a mainframe with a mouse connected to it, but we have no option to skip this item.&lt;br /&gt;So let's just press Enter to accept the default option.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;5) GPM Configuration&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The setup program now suggests configuring Slack/390 to load GPM, the console mouse driver:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdW_9mzTYI/AAAAAAAAALw/g6j-EpPEl-8/s1600-h/Slack390_R-config5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 158px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdW_9mzTYI/AAAAAAAAALw/g6j-EpPEl-8/s320/Slack390_R-config5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271277545729510786" /&gt;&lt;/a&gt;&lt;br /&gt;It is &lt;b&gt;&lt;i&gt;important&lt;/i&gt;&lt;/b&gt; to select '&amp;lt; &lt;b&gt;N&lt;/b&gt;o &amp;gt;' here, as loading gpm after booting in Hercules can cause an &lt;a href="http://en.wikipedia.org/wiki/Linux_kernel_oops"&gt;Oops&lt;/a&gt; message and result in an unstable system.&lt;br /&gt;So select No and press Enter.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;6) Network configuration&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;We now go to the step of configuring our network:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSdXnuy5trI/AAAAAAAAAL4/uw7hGfhxJMI/s1600-h/Slack390_S-config6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 95px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSdXnuy5trI/AAAAAAAAAL4/uw7hGfhxJMI/s320/Slack390_S-config6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271278228948498098" /&gt;&lt;/a&gt;&lt;br /&gt;Press Enter here to enter the configuration options.&lt;br /&gt;&lt;br /&gt;First we'll enter the hostname of our system:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSdYX4us5PI/AAAAAAAAAMA/mtB7Q1MONkk/s1600-h/Slack390_T-config7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 149px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSdYX4us5PI/AAAAAAAAAMA/mtB7Q1MONkk/s320/Slack390_T-config7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271279056248956146" /&gt;&lt;/a&gt;&lt;br /&gt;I selected 'herc-slack' but feel free to choose whatever you like.&lt;br /&gt;&lt;br /&gt;Next we're asked for the name of our domain:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSdY8GxzbsI/AAAAAAAAAMI/CIz4FCvn79Q/s1600-h/Slack390_U-config8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 176px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSdY8GxzbsI/AAAAAAAAAMI/CIz4FCvn79Q/s320/Slack390_U-config8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271279678495354562" /&gt;&lt;/a&gt;&lt;br /&gt;Use the same name you entered in your 'parmfile.txt'in the beginning.&lt;br /&gt;&lt;br /&gt;Now we decide if we want a static or dynamic IP address:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdZ2oVIaCI/AAAAAAAAAMQ/92BO3hEwoao/s1600-h/Slack390_V-config9.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdZ2oVIaCI/AAAAAAAAAMQ/92BO3hEwoao/s320/Slack390_V-config9.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271280683934312482" /&gt;&lt;/a&gt;&lt;br /&gt;Well, I've never seen a mainframe with a dynamic address, so I selected '&lt;b&gt;s&lt;/b&gt;tatic IP'.&lt;br /&gt;&lt;br /&gt;The next item, the IP address, is filled in for us from the step where we configured the network to mount the NFS exported files:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSdbETEzdxI/AAAAAAAAAMY/MHfHAK7CgEI/s1600-h/Slack390_W-config10.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 139px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSdbETEzdxI/AAAAAAAAAMY/MHfHAK7CgEI/s320/Slack390_W-config10.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271282018258482962" /&gt;&lt;/a&gt;&lt;br /&gt;Unless you want to change the IP address for your next boot, just press Enter here.&lt;br /&gt;&lt;br /&gt;The netmask is also filled in for us:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdbke3BKXI/AAAAAAAAAMg/kzomCIs1je4/s1600-h/Slack390_W-config11.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 139px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdbke3BKXI/AAAAAAAAAMg/kzomCIs1je4/s320/Slack390_W-config11.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271282571177699698" /&gt;&lt;/a&gt;&lt;br /&gt;Again, press Enter to accept the value.&lt;br /&gt;&lt;br /&gt;The address of our gateway is also remembered by the setup program:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdcwwMi6rI/AAAAAAAAAMw/GcluDUfAXpc/s1600-h/Slack390_W-config12.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 176px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdcwwMi6rI/AAAAAAAAAMw/GcluDUfAXpc/s320/Slack390_W-config12.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271283881501452978" /&gt;&lt;/a&gt;&lt;br /&gt;Here we also press Enter to accept the proposed value.&lt;br /&gt;&lt;br /&gt;Now we get to the part of configuring a name server:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSddaA9ypmI/AAAAAAAAAM4/2W20fmaaWGU/s1600-h/Slack390_W-config13.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 95px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSddaA9ypmI/AAAAAAAAAM4/2W20fmaaWGU/s320/Slack390_W-config13.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271284590377608802" /&gt;&lt;/a&gt;&lt;br /&gt;I suggest configuring a nameserver, so that you can access the internet without problems from your mainframe.&lt;br /&gt;Get the address of the nameserver of your ISP or your local network.&lt;br /&gt;Hint: check your local /etc/resolv.conf file&lt;br /&gt;&lt;br /&gt;Enter the IP address of your nameserver in the following screen:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSdebpJ6pBI/AAAAAAAAANA/6WS6rzxmhQE/s1600-h/Slack390_W-config14.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 203px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSdebpJ6pBI/AAAAAAAAANA/6WS6rzxmhQE/s320/Slack390_W-config14.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271285717857379346" /&gt;&lt;/a&gt;&lt;br /&gt;I used the IP address of my DSL-modem, which is also a nameserver.&lt;br /&gt;If you're not sure what to fill in right now, don't worry. You can manually change your /etc/resolv.conf file later.&lt;br /&gt;&lt;br /&gt;The next screen shows everything we entered and gives us the options to accept our choices, edit a line or start the network configuration all over:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdfYfAUUEI/AAAAAAAAANI/cuLKzKhS-WE/s1600-h/Slack390_W-config15.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 217px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdfYfAUUEI/AAAAAAAAANI/cuLKzKhS-WE/s320/Slack390_W-config15.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271286763104784450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you're OK with your options, select '&amp;lt; &lt;b&gt;A&lt;/b&gt;ccept &amp;gt;' and press Enter to go to the next step.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;7) Startup services&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Now we choose which services we want to run on startup:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdgwxCrKII/AAAAAAAAANQ/Pb6-Yru2YZA/s1600-h/Slack390_X-startup1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdgwxCrKII/AAAAAAAAANQ/Pb6-Yru2YZA/s320/Slack390_X-startup1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271288279774996610" /&gt;&lt;/a&gt;&lt;br /&gt;I would suggest to deselect 'rc.sendmail' from the list, unless you really want to run mail services on your emulated mainframe.&lt;br /&gt;Remember that you can later select services to start up at boot time by making them executable in /etc/rc.d with the 'chmod +x rc.xxxxxxxx' command.&lt;br /&gt;&lt;br /&gt;Select '&amp;lt; &lt;b&gt;O&lt;/b&gt;K &amp;gt;' after verifying your options and press Enter. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;8) Custom screen fonts&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The next question is about custom screen fonts:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdicB7tGDI/AAAAAAAAANY/oE0uCAq_Xcg/s1600-h/Slack390_X01-fonts.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 94px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdicB7tGDI/AAAAAAAAANY/oE0uCAq_Xcg/s320/Slack390_X01-fonts.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271290122555168818" /&gt;&lt;/a&gt;&lt;br /&gt;But since we'll be accessing our mainframe via ssh sessions, we'll just select '&amp;lt; &lt;b&gt;N&lt;/b&gt;o &amp;gt;' here.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;9) Clock and timezone settings&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Now we're asked if the hardware clock of our computer is set to local time or UTC/GMT:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdjwDba12I/AAAAAAAAANg/SDsIk3kRvU0/s1600-h/Slack390_X02-hwclock.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 167px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdjwDba12I/AAAAAAAAANg/SDsIk3kRvU0/s320/Slack390_X02-hwclock.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271291566065637218" /&gt;&lt;/a&gt;&lt;br /&gt;This question is asked to determine how Slack/390 should read the hardware clock when starting up to set the date and time of your system.&lt;br /&gt;When shutting down, Slack/390 tries to update the hardware clock, but Hercules won't let it do so.&lt;br /&gt;&lt;br /&gt;Select '&lt;b&gt;N&lt;/b&gt;O' to define the hardware clock as representing local time.&lt;br /&gt;You might have to play around with the TZOFFSET parameter in your hercules.cnf file if things are not the way you expected.&lt;br /&gt;&lt;br /&gt;Now we will have to select our timezone:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdmo13v7vI/AAAAAAAAANo/VWBTzoANE2Q/s1600-h/Slack390_X03-timezone.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSdmo13v7vI/AAAAAAAAANo/VWBTzoANE2Q/s320/Slack390_X03-timezone.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271294740702162674" /&gt;&lt;/a&gt;&lt;br /&gt;I live in the south-east of Brazil, so I select 'America/Sao_Paulo', but do select what suits you best.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;10) Root password&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The setup program detects that we do not have a password for the root account yet, which is never a good idea:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdnsxyqYlI/AAAAAAAAANw/KRZ0hwP4GUE/s1600-h/Slack390_X04-rootpasswd.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 139px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdnsxyqYlI/AAAAAAAAANw/KRZ0hwP4GUE/s320/Slack390_X04-rootpasswd.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271295907838190162" /&gt;&lt;/a&gt;&lt;br /&gt;Press Enter to set a password for the system administrator.&lt;br /&gt;&lt;br /&gt;We're changing to a text screen to enter the new password:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Changing password for root&lt;br /&gt;Enter the new password (minimum of 5, maximum of 127 characters)&lt;br /&gt;Please use a combination of upper and lower case letters and numbers.&lt;br /&gt;New password:&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Enter your password and re-enter it to confirm.&lt;br /&gt;&lt;br /&gt;The system will return with the following message:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Password changed.&lt;br /&gt;&lt;br /&gt;Press [enter] to continue:&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;11) Setup is complete... almost...&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The following screen shows that setup is complete:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdo6s-_ODI/AAAAAAAAAN4/9w23dGP5G3s/s1600-h/Slack390_X05-complete.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 113px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSdo6s-_ODI/AAAAAAAAAN4/9w23dGP5G3s/s320/Slack390_X05-complete.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271297246577506354" /&gt;&lt;/a&gt;&lt;br /&gt;Press Enter to return to the menu and exit the setup program, &lt;b&gt;&lt;i&gt;but do not reboot just yet&lt;/i&gt;&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;You'll get the following message on your telnet session:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Installation of Slackware Linux is complete.&lt;br /&gt;&lt;br /&gt;You may now press ctrl-alt-delete to reboot.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;But some essential information is missing, and if you shutdown now, your installation won't start the network we configured.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-11.html"&gt;Next post&lt;/a&gt;: Final configuration and IPLing our new installed Slack/390!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5283480876281566918?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5283480876281566918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5283480876281566918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5283480876281566918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5283480876281566918'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-10.html' title='Hercules and Slackware (slack/390) - Part 10'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q65cj3yCRO4/SSdQDh9vN-I/AAAAAAAAALI/LIlNXwWM3Dw/s72-c/Slack390_N-config1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-1044558791764299742</id><published>2008-11-21T20:10:00.004-02:00</published><updated>2008-11-22T02:00:13.148-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 9</title><content type='html'>...Continuing from &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-8.html"&gt;Part 8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Selecting packages to install&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We now arrived at the task of deciding exactly which packages we want to install.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Package series selection&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Slackware (and Slack/390) organizes its packages in 'series'. This comes from the old days, when we installed Slackware from floppy disks.&lt;br /&gt;We are shown a menu with all series that we downloaded, each with a small description:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSczOh1NOsI/AAAAAAAAAKQ/hEL4HyslaLo/s1600-h/Slack390_J-packages1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSczOh1NOsI/AAAAAAAAAKQ/hEL4HyslaLo/s320/Slack390_J-packages1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271238213553175234" /&gt;&lt;/a&gt;&lt;br /&gt;With the '+' and '-' keys you can scroll through the list and read the last line on your telnet session for more information.&lt;br /&gt;&lt;br /&gt;I suggest installing the recommended series and just deselecting the GNOME / KDE and KDEI series if you downloaded them. Select / Deselect a series with 'space'.&lt;br /&gt;You definitely should not deselect the 'A' (Base), 'AP' (Applications), 'L' (Libraries) or 'N' (Networking) series.&lt;br /&gt;Press Enter when you're satisfied with your selection.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) Prompting mode&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Now we have the option how we are going to select individual packages in the series:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSc2YmFikxI/AAAAAAAAAKY/IBnIOHakbI4/s1600-h/Slack390_K-packages2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 216px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSc2YmFikxI/AAAAAAAAAKY/IBnIOHakbI4/s320/Slack390_K-packages2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271241685028999954" /&gt;&lt;/a&gt;&lt;br /&gt;I suggest selecting '&lt;b&gt;f&lt;/b&gt;ull' to avoid problems.&lt;br /&gt;Only select '&lt;b&gt;e&lt;/b&gt;xpert' is you really are an expert. The problems you might create by skipping an individual package are not worth the space you save. In my experience of over a decade as a Slackware user I have seen too many users selecting individual packages running into problems later on.&lt;br /&gt;&lt;br /&gt;Select your option and press Enter to start the installation!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3) Installation&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;First we'll see a confirmation that the installation has started:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSc4Vd6n8II/AAAAAAAAAKg/09NeNzMvGo0/s1600-h/Slack390_L-install1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 122px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSc4Vd6n8II/AAAAAAAAAKg/09NeNzMvGo0/s320/Slack390_L-install1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271243830319378562" /&gt;&lt;/a&gt;&lt;br /&gt;Then every individual package is installed and shown:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSc431jMtUI/AAAAAAAAAKo/0S-GJEiqe3k/s1600-h/Slack390_M-install2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 185px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSc431jMtUI/AAAAAAAAAKo/0S-GJEiqe3k/s320/Slack390_M-install2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271244420779128130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;u&gt;4) Sit back and relax&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Get some coffee, lunch, dinner, get some sleep...&lt;br /&gt;Because this part of installing all packages may take some hours, depending on your host system, available memory, processing power, network connection etc.&lt;br /&gt;&lt;br /&gt;In my case, with the downloaded files on the host computer where Hercules is running, it took some three hours for a full install.&lt;br /&gt;&lt;br /&gt;There are some &lt;b&gt;&lt;i&gt;very&lt;/i&gt;&lt;/b&gt; important steps in the next phase of configuring, so pay attention when the installation of all selected packages is finished.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-10.html"&gt;Next post&lt;/a&gt;: Configure your installation!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-1044558791764299742?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/1044558791764299742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=1044558791764299742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1044558791764299742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1044558791764299742'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-9.html' title='Hercules and Slackware (slack/390) - Part 9'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/SSczOh1NOsI/AAAAAAAAAKQ/hEL4HyslaLo/s72-c/Slack390_J-packages1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7123221865606190378</id><published>2008-11-21T18:02:00.010-02:00</published><updated>2008-11-22T02:01:07.206-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 8</title><content type='html'>...Continuing from &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-7.html"&gt;Part 7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Selecting the source&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now we need to inform the setup program where it can find the packages to install. The menu gives us the following options:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SScYiFagFtI/AAAAAAAAAJY/yd835LQi-AQ/s1600-h/Slack390_C-source1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 148px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SScYiFagFtI/AAAAAAAAAJY/yd835LQi-AQ/s320/Slack390_C-source1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271208862708405970" /&gt;&lt;/a&gt;&lt;br /&gt;As explained before, we'll use the option to install from NFS, so select option &lt;b&gt;2&lt;/b&gt; and the next question is asked:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Confirming our local network configuration&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SScZaYlx74I/AAAAAAAAAJg/K3Xbf3M54Zw/s1600-h/Slack390_D-source2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 158px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SScZaYlx74I/AAAAAAAAAJg/K3Xbf3M54Zw/s320/Slack390_D-source2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271209829928660866" /&gt;&lt;/a&gt;&lt;br /&gt;The IP address we defined in our 'parmfile.txt' is used as default, so we can just press Enter here and continue with the next question:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SScaEa8scTI/AAAAAAAAAJo/oRmDnBJKOAI/s1600-h/Slack390_E-source3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 175px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SScaEa8scTI/AAAAAAAAAJo/oRmDnBJKOAI/s320/Slack390_E-source3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271210552116146482" /&gt;&lt;/a&gt;&lt;br /&gt;Again, the netmask we used in the 'parmfile' is given as a default, so we'll just press Enter again to continue:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SScazDArlpI/AAAAAAAAAJw/egvltUOX5ho/s1600-h/Slack390_F-source4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 94px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SScazDArlpI/AAAAAAAAAJw/egvltUOX5ho/s320/Slack390_F-source4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271211353144268434" /&gt;&lt;/a&gt;&lt;br /&gt;In our example we defined a gateway in 'parmfile.txt' so we can choose '&amp;lt; &lt;b&gt;Y&lt;/b&gt;es &amp;gt;', but if you do not have a gateway, you can choose '&amp;lt; &lt;b&gt;N&lt;/b&gt;o &amp;gt;'.&lt;br /&gt;&lt;br /&gt;If you choose Yes, you'll have to fill in the address of your gateway:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSccJEArQLI/AAAAAAAAAJ4/sVWRWxpAYDI/s1600-h/Slack390_G-source5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 130px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSccJEArQLI/AAAAAAAAAJ4/sVWRWxpAYDI/s320/Slack390_G-source5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271212830881431730" /&gt;&lt;/a&gt;&lt;br /&gt;Press Enter to accept the default from 'parmfile.txt', or type in the IP address of your gateway.&lt;br /&gt;&lt;br /&gt;Now that we confirmed our local network configuration, we'll go to the next step.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) Defining the exported NFS to mount&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The first question is the IP address of the server where you saved the packages:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SScdtezsZVI/AAAAAAAAAKA/wZ6cNTS3nhc/s1600-h/Slack390_H-source6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 174px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SScdtezsZVI/AAAAAAAAAKA/wZ6cNTS3nhc/s320/Slack390_H-source6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271214556061656402" /&gt;&lt;/a&gt;&lt;br /&gt;I saved the packages on my host computer, so I'll put its IP address here. Fill in this field with the correct address for your installation and press Enter.&lt;br /&gt;&lt;br /&gt;Now we'll have to inform the setup program the exact location of the directory with the packages on the server:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SScfgDx7IbI/AAAAAAAAAKI/I9IF95LH1Fg/s1600-h/Slack390_I-source7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 206px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SScfgDx7IbI/AAAAAAAAAKI/I9IF95LH1Fg/s320/Slack390_I-source7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271216524491432370" /&gt;&lt;/a&gt;&lt;br /&gt;This would be &lt;i&gt;(download)&lt;/i&gt;/slackware where you need to substitute '(download)' with the correct path. Be careful to type the path exactly as you defined it in your /etc/exports file. &lt;br /&gt;&lt;br /&gt;Press Enter to test is the setup program can mount the exported directory. The result should be something similar to this output:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;We'll switch into text mode here so you can see if you have any errors.&lt;br /&gt;&lt;br /&gt;Configuring ethernet card...&lt;br /&gt;Configuring your gateway...&lt;br /&gt;Running /sbin/rpc.portmap...&lt;br /&gt;Mounting NFS...&lt;br /&gt;&lt;br /&gt;Current mount table:&lt;br /&gt;/dev/ram0 on / type ext2 (rw)&lt;br /&gt;none on /proc type proc (rw)&lt;br /&gt;/dev/pts on /dev/pts type devpts (rw)&lt;br /&gt;/dev/dasda1 on /mnt type ext2 (rw)&lt;br /&gt;/dev/dasdb1 on /mnt/home type ext2 (rw)&lt;br /&gt;192.168.1.110:/var/download/slack390/slackware on /var/log/mount type nfs (ro,nolock,addr=192.168.1.110)&lt;br /&gt;&lt;br /&gt;(If you see errors above and the mount table doesn't show your NFS&lt;br /&gt;server, then try setting up NFS again)&lt;br /&gt;&lt;br /&gt;Do you need to try setting up NFS again ([y]es, [n]o)?&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Check if the last line in the displayed mount table shows your download directory on the NFS server mounted in your emulated mainframe.&lt;br /&gt;If anything went wrong, press 'y' to try other settings.&lt;br /&gt;If all is well, press 'n'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-9.html"&gt;Next post&lt;/a&gt;: Package selection!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7123221865606190378?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7123221865606190378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7123221865606190378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7123221865606190378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7123221865606190378'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-8.html' title='Hercules and Slackware (slack/390) - Part 8'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/SScYiFagFtI/AAAAAAAAAJY/yd835LQi-AQ/s72-c/Slack390_C-source1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-3290027603854509171</id><published>2008-11-21T07:07:00.012-02:00</published><updated>2008-11-22T02:01:55.270-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 7</title><content type='html'>...Continuing from &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-6.html"&gt;Part 6&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Starting setup&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;After formatting and partitioning our storage, we're ready to enter Slack/390's setup program.&lt;br /&gt;In your telnet session simply enter:&lt;br /&gt;&lt;code&gt;# setup&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and the following screen will appear:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSZ8rP96ZZI/AAAAAAAAAHw/J-W09gwHE_s/s1600-h/Slack390_3-setup.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSZ8rP96ZZI/AAAAAAAAAHw/J-W09gwHE_s/s320/Slack390_3-setup.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271037496346174866" /&gt;&lt;/a&gt;&lt;br /&gt;Again, experienced Slackware users will recognize this screen from previous installations.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Note&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;The arrow keys did not work for me via telnet, but you can use the '+', '-' and 'tab' keys to navigate the menu.&lt;br /&gt;&lt;br /&gt;You can read the Help section if you like now. It is the original version for Slackware, not adapted for Slack/390, so some details are inaccurate. But most generic info is true for all installations, so if you are not in too much of a hurry, take a look.&lt;br /&gt;&lt;br /&gt;We'll skill setting up a swap partition, as we did not create one.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Setting up our target partitions&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;First we have to inform the installer where we want to install Slack/390.&lt;br /&gt;We created two virtual DASDs, and will use them as suggested in the Help section:&lt;br /&gt;- 1 partition / DASD for '/'&lt;br /&gt;- 1 partition / DASD for '/home'&lt;br /&gt;&lt;br /&gt;So select '&lt;b&gt;T&lt;/b&gt;ARGET' from the menu and you'll get the following screen:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSaAyPctnfI/AAAAAAAAAH4/G_MNdfn_zPE/s1600-h/Slack390_4-target1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 166px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSaAyPctnfI/AAAAAAAAAH4/G_MNdfn_zPE/s320/Slack390_4-target1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271042014512520690" /&gt;&lt;/a&gt;&lt;br /&gt;(Yes, I know the size shows up incorrectly, but don't worry about that...)&lt;br /&gt;Select the first available partition (/dev/dasda1) as the target for our root partition.&lt;br /&gt;&lt;br /&gt;Now we get the following options for creating a file system on the partition:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSaB_Cyyu_I/AAAAAAAAAIA/Gwjzj00vN5A/s1600-h/Slack390_5-target2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 158px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSaB_Cyyu_I/AAAAAAAAAIA/Gwjzj00vN5A/s320/Slack390_5-target2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271043333965396978" /&gt;&lt;/a&gt;&lt;br /&gt;Since we're working with virtual devices, a quick format will suffice here, so select '&lt;b&gt;F&lt;/b&gt;ORMAT' and we will be shown the following options:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSaD9Rw9i6I/AAAAAAAAAII/EYlv8gdCjrk/s1600-h/Slack390_5-target3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 205px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSaD9Rw9i6I/AAAAAAAAAII/EYlv8gdCjrk/s320/Slack390_5-target3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271045502647765922" /&gt;&lt;/a&gt;&lt;br /&gt;Here we decide which file system to use. Again, we're using a virtual device that's on a real drive of our host system. Using a journaling file system here would cause double journaling. Unless you pretend to save precious data on your mainframe, I suggest using ext2 on your virtual storage to gain some performance.&lt;br /&gt;So choose '&lt;b&gt;e&lt;/b&gt;xt2' on this menu and we go to the next point of decision:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSaE5NMFxYI/AAAAAAAAAIQ/UPqD8yvQANY/s1600-h/Slack390_7-target4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 187px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSaE5NMFxYI/AAAAAAAAAIQ/UPqD8yvQANY/s320/Slack390_7-target4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271046532211524994" /&gt;&lt;/a&gt;&lt;br /&gt;Just press Enter for the default inode size of 4096 as suggested, and enjoy the following screen for a while (will take just a minute or two):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSaGDa-xNnI/AAAAAAAAAIY/dvVFvATxSzA/s1600-h/Slack390_8-target5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 170px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSaGDa-xNnI/AAAAAAAAAIY/dvVFvATxSzA/s320/Slack390_8-target5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271047807224067698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After a few moments, we'll see the following menu, giving us the option to select another partition:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSaKBb9IE7I/AAAAAAAAAIw/Hh108K2nOd8/s1600-h/Slack390_9-target6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSaKBb9IE7I/AAAAAAAAAIw/Hh108K2nOd8/s320/Slack390_9-target6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271052171172385714" /&gt;&lt;/a&gt;&lt;br /&gt;As mentioned before, I created a second partition for our '/home' directory, so select the free '&lt;b&gt;/&lt;/b&gt;dev/dasdb1' partition now.&lt;br /&gt;Again, select the quick '&lt;b&gt;F&lt;/b&gt;ORMAT', the '&lt;b&gt;e&lt;/b&gt;xt2' file system and the '&lt;b&gt;4&lt;/b&gt;096' inode size.&lt;br /&gt;After formatting our second partition, we are asked where we want to mount it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSaIQVjVmxI/AAAAAAAAAIg/ix_rjz4DyVE/s1600-h/Slack390_A-target7.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 178px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSaIQVjVmxI/AAAAAAAAAIg/ix_rjz4DyVE/s320/Slack390_A-target7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271050228128389906" /&gt;&lt;/a&gt;&lt;br /&gt;Enter '/home' here and press Enter.&lt;br /&gt;&lt;br /&gt;We are presented with the lines that setup will put in our /etc/fstab file:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSaI9Vv3_WI/AAAAAAAAAIo/fXG2ox4wmTM/s1600-h/Slack390_B-target8.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 185px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSaI9Vv3_WI/AAAAAAAAAIo/fXG2ox4wmTM/s320/Slack390_B-target8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5271051001275088226" /&gt;&lt;/a&gt;&lt;br /&gt;This ends the selection of our target.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-8.html"&gt;Next post&lt;/a&gt;: Selecting the source media!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-3290027603854509171?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/3290027603854509171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=3290027603854509171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3290027603854509171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3290027603854509171'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-7.html' title='Hercules and Slackware (slack/390) - Part 7'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q65cj3yCRO4/SSZ8rP96ZZI/AAAAAAAAAHw/J-W09gwHE_s/s72-c/Slack390_3-setup.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-3163084054271672085</id><published>2008-11-21T00:08:00.005-02:00</published><updated>2008-11-22T02:02:44.169-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 6</title><content type='html'>...Continuing from &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-5.html"&gt;Part 5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Preparing our DASDs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Before we can install Slack/390 on our local storage, we need to format and partition our devices, just like on a normal desktop.&lt;br /&gt;&lt;br /&gt;Remember we created two DASDs and that in GNU/Linux they are called /dev/dasda and /dev/dasdb&lt;br /&gt;The partitions on /dev/dasda will be named /dev/dasda1, /dev/dasda2, etc.&lt;br /&gt;&lt;br /&gt;We log in as root in our telnet session and start to work!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Formatting DASDs&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Slack/390 comes with a special utility to format out DASDs called dasdfmt&lt;br /&gt;Let's format our first device:&lt;br /&gt;&lt;code&gt;# dasdfmt -b 4096 -f /dev/dasda&lt;/code&gt;&lt;br /&gt;- -b 4096 defines the block size&lt;br /&gt;- -f /dev/dasda defines our first DASD&lt;br /&gt;&lt;br /&gt;When asked if we are sure, answer 'yes'.&lt;br /&gt;&lt;br /&gt;After a short pause (after all, our drives are compressed, so there is not much to do), we'll see the following result:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Finished formatting the device.&lt;br /&gt;Rereading the partition table... ok&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Repeat the same procedure for our second DASD:&lt;br /&gt;&lt;code&gt;# dasdfmt -b 4096 -f /dev/dasdb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Again, answer with 'yes' and wait for the result.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) Partitioning DASDs&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The partitioning program for DASDs is very similar to fdisk, so experienced Slackware installers should have no problem at all here.&lt;br /&gt;&lt;br /&gt;Start the utility with:&lt;br /&gt;&lt;code&gt;# fdasd /dev/dasda&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The usual menu comes up:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSYcVv54ZZI/AAAAAAAAAHo/P1MrEN0KgS8/s1600-h/Slack392_2-fdasd.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 155px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSYcVv54ZZI/AAAAAAAAAHo/P1MrEN0KgS8/s320/Slack392_2-fdasd.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270931573845812626" /&gt;&lt;/a&gt;&lt;br /&gt;- type 'n' to create a new partition&lt;br /&gt;- press enter to accept the default starting cylinder&lt;br /&gt;- press enter to accept the default last cylinder&lt;br /&gt;- press 'w' to write the partition table to the DASD and exit&lt;br /&gt;&lt;br /&gt;We just created a single partition of the type 'linux' occupying the whole device.&lt;br /&gt;&lt;br /&gt;In a real-world situation we would create a swap partition, but since we're on an emulator, this is a bit useless.&lt;br /&gt;&lt;br /&gt;Repeat the same procedure for our second DASD:&lt;br /&gt;&lt;code&gt;# fdasd /dev/dasdb&lt;/code&gt;&lt;br /&gt;- type 'n' to create a new partition&lt;br /&gt;- press enter to accept the default starting cylinder&lt;br /&gt;- press enter to accept the default last cylinder&lt;br /&gt;- press 'w' to write the partition table to the DASD and exit&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-7.html"&gt;&lt;br /&gt;Next post&lt;/a&gt;: Entering setup!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-3163084054271672085?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/3163084054271672085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=3163084054271672085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3163084054271672085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3163084054271672085'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-6.html' title='Hercules and Slackware (slack/390) - Part 6'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q65cj3yCRO4/SSYcVv54ZZI/AAAAAAAAAHo/P1MrEN0KgS8/s72-c/Slack392_2-fdasd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-3598761743328718628</id><published>2008-11-20T22:54:00.008-02:00</published><updated>2008-11-22T02:03:29.033-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 5</title><content type='html'>...Continuing from &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-4.html"&gt;Part 4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting ready for our first IPL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Yes, we're really &lt;i&gt;almost&lt;/i&gt; there :-)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Checking the virtual network adapter&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;There is still one small problem.&lt;br /&gt;Hercules emulates a network adapter, but of course it only exists virtually. In the hercules.cnf file we defined that is uses /dev/net/tun&lt;br /&gt;This is a &lt;a href="http://en.wikipedia.org/wiki/TUN/TAP"&gt;virtual network tunnel&lt;/a&gt; used in many emulators and VPNs.&lt;br /&gt;&lt;br /&gt;Check on your host system if you have the /dev/net/tun device. If you don't, you can dynamically load the kernel module for it:&lt;br /&gt;&lt;code&gt;# modprobe tun&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Instead of loading it manually after every boot, you can add it to your /etc/rc.d/rc.local script or any other way you prefer.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) Starting Hercules&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Change to your (install) directory and start hercules from the command line:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# cd (install)&lt;br /&gt;# hercules&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You'll see the Hercules command console we saw in part 1 of these posts, and if everything worked out fine, you should see these lines:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;...&lt;br /&gt;HHCDA020I ./dasd/3390.SLACK.0120 cyls=3339 heads=15 tracks=50085 trklen=56832&lt;br /&gt;HHCDA020I ./dasd/3390.SLACK.0121 cyls=3339 heads=15 tracks=50085 trklen=56832&lt;br /&gt;HHCLC073I 0F00: TAP device tap0 opened&lt;br /&gt;...&lt;br /&gt;Command ==&gt; &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The two lines showing the DASDs tell us that both files were found without problems.&lt;br /&gt;The third line shows us that the 'tap' adapter was found as well.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3) IPLing into the kernel&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Now we're ready for our first IPL (Initial Program Load, or 'boot' of the mainframe).&lt;br /&gt;&lt;br /&gt;At the Hercules 'Command ==&gt;' prompt, type:&lt;br /&gt;&lt;code&gt;ipl c&lt;/code&gt;&lt;br /&gt;and Enter.&lt;br /&gt;- ipl is the command to do the Initial Program Load&lt;br /&gt;- c is the device we will load our initial program from (remember we defined 000c as our virtual card reader in hercules.cnf)&lt;br /&gt;&lt;br /&gt;A lot of text will scroll by, just as when we boot our Linux desktop.&lt;br /&gt;When the ram disk is loaded, the text will pause while the contents is being uncompressed:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;RAMDISK: Compressed image found at block 0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;When the network is being configured, you will see this message:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;Starting the Slack/390 S/390 initrd to configure networking, version 0.71&lt;br /&gt;----------------------------------------------------------------------&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Afterwards, the network is tested by pinging the local (emulated) adapter, the gateway and the name server.&lt;br /&gt;&lt;br /&gt;Then the DASDs are connected and several file system modules are loaded.&lt;br /&gt;&lt;br /&gt;If everything works fine, you'll see the following message:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SSYTPUSfT0I/AAAAAAAAAHg/gObh3WoTSD0/s1600-h/Slack391_0.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 101px;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SSYTPUSfT0I/AAAAAAAAAHg/gObh3WoTSD0/s320/Slack391_0.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270921567748968258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;4) Testing the network and connecting through telnet&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Open a second console on your host and try to ping your new mainframe:&lt;br /&gt;&lt;code&gt;$ ping -c 3 192.168.1.162&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It should respond normally, so let's connect to it with telnet:&lt;br /&gt;&lt;code&gt;$ telnet 192.168.1.162&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result should be:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SSYSUcJO0VI/AAAAAAAAAHY/QD9B7DvUYeo/s1600-h/Slack390_1st.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 234px;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SSYSUcJO0VI/AAAAAAAAAHY/QD9B7DvUYeo/s320/Slack390_1st.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270920556245340498" /&gt;&lt;/a&gt;&lt;br /&gt;This is just like booting a Slackware CD or DVD, just a bit different ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-6.html"&gt;Next post&lt;/a&gt;: formatting and partitioning our storage...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-3598761743328718628?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/3598761743328718628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=3598761743328718628' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3598761743328718628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3598761743328718628'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-5.html' title='Hercules and Slackware (slack/390) - Part 5'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/SSYTPUSfT0I/AAAAAAAAAHg/gObh3WoTSD0/s72-c/Slack391_0.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-1415670632414919548</id><published>2008-11-20T21:34:00.004-02:00</published><updated>2008-11-22T02:04:18.398-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 4</title><content type='html'>...Continuing from &lt;a href="http://http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-3.html"&gt;Part 3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Defining kernel boot-parameters&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;OK, so Hercules is configured the way we need.&lt;br /&gt;But to be able to boot the Slack/390 kernel, we need to set some parameters.&lt;br /&gt;It is more or less like setting boot-time parameters in your lilo.conf file, only a bit different :-)&lt;br /&gt;&lt;br /&gt;The standard parmfile.txt came with only one (but very important) line:&lt;br /&gt;&lt;code&gt;ramdisk_size=22528 root=/dev/ram0 ro ip=off&lt;/code&gt;&lt;br /&gt;This line defines the size of the ram disk and that our root will be found on /dev/ram0 (and mounted read-only)&lt;br /&gt;&lt;br /&gt;But just booting the kernel won't get us anywhere. We need an interface to the outside world to install Slack/390 over NFS.&lt;br /&gt;&lt;br /&gt;In the (download)/kernels directory we have a file called 'parmfile.values.txt' that explains all options, but to avoid suffering, I'll tell you here how I did it :-)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Basic parameters&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;DASD=120-121&lt;/i&gt;&lt;br /&gt;This line tells us where (device numbers again) the DASDs are.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;HOST=herc-slack.hn:eth0:192.168.1.162:1500&lt;/i&gt;&lt;br /&gt;This line defines our host (actually the guest, as we are working in Hercules, not a real machine):&lt;br /&gt;- herc-slack.hn is our Fully Qualified Domain Name (hostname.domain)&lt;br /&gt;- eth0 is the name of our network interface&lt;br /&gt;- 192.168.1.162 is our ip address&lt;br /&gt;- 1500 is our MTU (Maximum Transfer Unit)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;NETWORK=192.168.1.0:255.255.255.0:192.168.1.255:192.168.1.1&lt;/i&gt;&lt;br /&gt;Here we define the rest of our network parameters, like we normally do in /etc/rc.d/rc.inet1.conf:&lt;br /&gt;- 192.168.1.0 is our network subnet&lt;br /&gt;- 255.255.255.0 is our network mask&lt;br /&gt;- 192.168.1.255 is our broadcast address&lt;br /&gt;- 192.168.1.1 is our gateway&lt;br /&gt;You will need to adapt these values to your reality...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;DNS=192.168.1.110&lt;/i&gt;&lt;br /&gt;Speaks for itself... Again, adapt to your reality&lt;br /&gt;&lt;br /&gt;&lt;i&gt;SEARCHDNS=hn&lt;/i&gt;&lt;br /&gt;The domain name you would normally put in your /etc/resolv.conf as 'search xxx'&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) Defining your network interface&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Getting the network to communicate was a bit of a struggle, as the information is not always very clear. But in the end I got it working with these lines:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;LCS=0xf00,1&lt;/i&gt;&lt;br /&gt;This is the Lan Channel Station we defined in hercules.cnf&lt;br /&gt;- 0xf00 is the device address&lt;br /&gt;- 1 is the type (an OSA-2 adapter in LCS mode)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;CHANDEV=noauto;lcs0,0xf00,0xf01&lt;/i&gt;&lt;br /&gt;Here we repeat the device addresses of out LCS adapter...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;QETHPARM=add_parms,0x04,0xf00,0xf01&lt;/i&gt;&lt;br /&gt;And again, just in another format:&lt;br /&gt;- 0x04 stands for channel type LCS&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3) Sample parmfile.txt&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Again, to save trouble and time, here is an example of a parmfile. Copy the text and save it as (install)/rdr/parmfile.txt, overwriting the downloaded file:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ramdisk_size=22528 root=/dev/ram0 ro ip=off&lt;br /&gt;DASD=120-121&lt;br /&gt;HOST=herc-slack.hn:eth0:192.168.1.162:1500&lt;br /&gt;NETWORK=192.168.1.0:255.255.255.0:192.168.1.255:192.168.1.1&lt;br /&gt;DNS=192.168.1.110&lt;br /&gt;SEARCHDNS=hn&lt;br /&gt;LCS=0xf00,1&lt;br /&gt;CHANDEV=noauto;lcs0,0xf00,0xf01&lt;br /&gt;QETHPARM=add_parms,0x04,0xf00,0xf01&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;OK, we're finished editing files!&lt;br /&gt;In my &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-5.html"&gt;next post&lt;/a&gt;, we'll do our first IPL into GNU/Linux!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-1415670632414919548?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/1415670632414919548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=1415670632414919548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1415670632414919548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1415670632414919548'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-4.html' title='Hercules and Slackware (slack/390) - Part 4'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5482670863992687727</id><published>2008-11-20T19:22:00.005-02:00</published><updated>2008-11-22T02:05:05.452-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 3</title><content type='html'>...Continuing from &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-2.html"&gt;Part 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Configuring Hercules&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So now we have Hercules installed and working and downloaded everything we need to install Slack/390 on it.&lt;br /&gt;&lt;br /&gt;But first we need to configure our mainframe (tell the emulator which devices it needs to emulate, where they are, etc.).&lt;br /&gt;&lt;br /&gt;Hercules uses a configuration file named &lt;i&gt;hercules.cnf&lt;/i&gt; and looks for it in the directory it started from (but you can override the name and location with the -f option when starting Hercules).&lt;br /&gt;&lt;br /&gt;You can find lots of information in the installed documentation (/usr/local/share/hercules/hercconf.html) so I'll just discuss some important details here you need to configure.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) First we'll define the system parameters:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;ARCHMODE ESA/390&lt;/i&gt;&lt;br /&gt;Here we define the architecture we will emulate with Hercules. Since we're going to install Slack/390, we'll need the ESA/390 architecture here.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;MAINSIZE 256&lt;/i&gt;&lt;br /&gt;This defines the 'main storage size' (think of RAM) of your mainframe in MB. I use 256, which is enough for me and doesn't put a high load on my host system. Feel free to change this value depending on your needs and resources.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;NUMCPU 1&lt;/i&gt;&lt;br /&gt;Here you set the number of virtual CPUs for your emulated mainframe.&lt;br /&gt;For me, one is enough, but you can try two if you like (even on a host with only one physical CPU!). If you need more than two emulated CPUs, you might have to recompile Hercules (see the documentation).&lt;br /&gt;&lt;br /&gt;&lt;i&gt;OSTAILOR LINUX&lt;/i&gt;&lt;br /&gt;This parameter is just to suppress some unnecessary messages on the Hercules control panel when running GNU/Linux.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;PANRATE SLOW&lt;/i&gt;&lt;br /&gt;Here we define the refresh rate of the Hercules panel. 'SLOW' means 500 milliseconds, which is fine and reduces the load on the host system. If you define a faster rate here, you can get some funny effects for instance when your file system is checked during boot (the increasing line that shows the completion will scroll like crazy).&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) Now we'll define the hardware we have&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;In Hercules we configure devices by setting a 'Device number', a 'Device type' (mostly the original model numbers from IBM), and the file name on the host system.&lt;br /&gt;&lt;br /&gt;I'll give the lines of a very basic configuration we can use to install Slack/390:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;000C&amp;nbsp;&amp;nbsp;&amp;nbsp;3505&amp;nbsp;&amp;nbsp;&amp;nbsp;./rdr/vminstall.image-2.4.26.gcc-3.3.4.img ./rdr/parmfile.txt ./rdr/initrd.gz autopad eof&lt;/i&gt;&lt;br /&gt;Note: this is one line in hercules.cnf!&lt;br /&gt;- 000C is the device number&lt;br /&gt;- 3505 is the model number (a card reader)&lt;br /&gt;- then follow a list of the three local file names&lt;br /&gt;- autopad means all lines will be padded up to 80 characters (standard width for punched cards)&lt;br /&gt;- eof signals the end of the 'deck' of cards.&lt;br /&gt;We still need to alter the parmfile.txt... See below...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;0120&amp;nbsp;&amp;nbsp;&amp;nbsp;3390&amp;nbsp;&amp;nbsp;&amp;nbsp;./dasd/3390.SLACK.0120&lt;br /&gt;0121&amp;nbsp;&amp;nbsp;&amp;nbsp;3390&amp;nbsp;&amp;nbsp;&amp;nbsp;./dasd/3390.SLACK.0121&lt;/i&gt;&lt;br /&gt;You might recognize the device numbers from my previous post, when we created the virtual DASDs. So this is where we define the 'disks' we'll use. GNU/Linux will recognize them as '/dev/dasda' and '/dev/dasdb'.&lt;br /&gt;- 0120 &amp; 0121 are the device numbers&lt;br /&gt;- 3390 is the model number&lt;br /&gt;- ./dasd/3390.SLACK.012[0/1] is the file name on the host&lt;br /&gt;&lt;br /&gt;&lt;i&gt;0F00,0F01&amp;nbsp;LCS&amp;nbsp;&amp;nbsp;&amp;nbsp;-n /dev/net/tun 192.168.1.162&lt;/i&gt;&lt;br /&gt;- 0F00,0F01 are the devices numbers&lt;br /&gt;- LCS stands for Lan Channel Station for Hercules to emulate an Ethernet adapter&lt;br /&gt;- -n /dev/net/tun is the local device that points to your 'tun' adapter&lt;br /&gt;- 192.168.1.162 is the IP address of your mainframe&lt;br /&gt;&lt;br /&gt;This is all you need for a minimal Hercules configuration. You can add devices later as needed / wanted.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3) Sample hercules.cnf file&lt;/u&gt;&lt;br /&gt;To prevent typing errors, you can copy the following lines and save them as 'hercules.cnf' in the (install) directory:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;MAINSIZE&amp;nbsp;&amp;nbsp;256&lt;br /&gt;NUMCPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;br /&gt;OSTAILOR&amp;nbsp;&amp;nbsp;LINUX&lt;br /&gt;PANRATE&amp;nbsp;&amp;nbsp;&amp;nbsp;SLOW&lt;br /&gt;ARCHMODE&amp;nbsp;&amp;nbsp;ESA/390&lt;br /&gt;&lt;br /&gt;# reader&lt;br /&gt;000C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3505    ./rdr/vminstall.image-2.4.26.gcc-3.3.4.img ./rdr/parmfile.txt ./rdr/initrd.gz autopad eof&lt;br /&gt;&lt;br /&gt;# dasd&lt;br /&gt;0120&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3390    ./dasd/3390.SLACK.0120&lt;br /&gt;0121&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3390    ./dasd/3390.SLACK.0121&lt;br /&gt;&lt;br /&gt;# network&lt;br /&gt;0F00,0F01&amp;nbsp;LCS -n /dev/net/tun 192.168.1.162&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OK, we're getting closer to installing, but we still need to configure the kernel parameters.&lt;br /&gt;See my &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-4.html"&gt;next post&lt;/a&gt; to continue!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5482670863992687727?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5482670863992687727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5482670863992687727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5482670863992687727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5482670863992687727'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-3.html' title='Hercules and Slackware (slack/390) - Part 3'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-4525079353666074012</id><published>2008-11-20T18:00:00.004-02:00</published><updated>2008-11-22T02:05:55.703-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 2</title><content type='html'>As promised, here are the first steps to get Slack/390 running on your Hercules emulator!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Preparation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;0) Get Hercules installed &amp; running&lt;/u&gt;&lt;br /&gt;See my &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-1.html"&gt;previous post&lt;/a&gt; if you don't have Hercules yet.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Note&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;I am a GNU/Linux user, but I know Hercules works under Windows and Mac OS X as well.&lt;br /&gt;If you use one of them, some steps on this page might differ, but I'll leave this up to the reader to find out ;-)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1) Obtain a copy of Slack/390&lt;/u&gt;&lt;br /&gt;I got mine from ftp://distro.ibiblio.org/pub but other sources are available.&lt;br /&gt;Check the official &lt;a href="http://www.slack390.org/"&gt;Slack/390&lt;/a&gt; site for other links.&lt;br /&gt;&lt;br /&gt;Personally I did this installation with the -current version (which is equivalent to Slackware 10.1) but if you prefer the stable version, get 10.0.&lt;br /&gt;&lt;br /&gt;To save some time downloading, get only the /kernels and /slackware directories.&lt;br /&gt;From the /slackware directory, you can even skip the gnome, kde and kdei subdirectories, which are large and a bit useless on a terminal-only system.&lt;br /&gt;(ok, it is possible to run KDE or GNOME on Hercules with a X-terminal, but that's too much trouble for me...)&lt;br /&gt;&lt;br /&gt;The directory where you downloaded all this, I will call '(download)' from now on.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2) 'Export' the Slack/390 packages&lt;/u&gt;&lt;br /&gt;Since we cannot simply insert a CD in our mainframe, we'll install over NFS.&lt;br /&gt;This means that we need to 'export' the directory with the downloaded packages.&lt;br /&gt;&lt;br /&gt;I won't write a NFS manual here, since there is enough information available in the man-pages and on the internet, but basically the steps are:&lt;br /&gt;- include the (download)/slackware directory in /etc/exports&lt;br /&gt;- restart NFS with '/etc/rc.d/rc.nfsd restart'&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3) Prepare a directory on a file system for your new Slack/390 installation&lt;/u&gt;&lt;br /&gt;We'll create some folders with the images to boot our mainframe and the images of our drives where we'll install Slack/390.&lt;br /&gt;A basic installation is about 700MB, but make sure you have some extra space to play around afterwards.&lt;br /&gt;I'll call this base directory (install) from now on.&lt;br /&gt;&lt;br /&gt;Create the following directory structure:&lt;br /&gt;&lt;code&gt;$ mkdir (install)/rdr # Here we'll put files for our virtual reader&lt;br /&gt;$ mkdir (install)/ptr # For output of a printer&lt;br /&gt;$ mkdir (install)/dasd # Here we'll put our virtual DASDs (= 'drives')&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;4) Create two virtual Direct Access Storage Devices&lt;/u&gt;&lt;br /&gt;The S/390 works with DASDs - think of hard drives to have an idea.&lt;br /&gt;For our installation, we need to create these drives to have some storage space.&lt;br /&gt;&lt;br /&gt;Hercules emulates several models of DASDs, and I selected the 3390-3, which has a capacity of just over 2GB. This is enough for a standard installation (remember we won't use KDE or anything else that takes up a lot of space).&lt;br /&gt;I'll create a second DASD to be mounted as /home, so that we can put any extra stuff there.&lt;br /&gt;&lt;br /&gt;A nice feature of Hercules is that is can use compacted DASD images, so that you won't use more than necessary on your host system. My complete installation is under 700MB.&lt;br /&gt;&lt;br /&gt;These are the commands to create the two DASDs:&lt;br /&gt;&lt;code&gt;$ cd (install)/dasd&lt;br /&gt;$ dasdinit -z -linux 3390.SLACK.0120 3390-3 SLW120&lt;br /&gt;$ dasdinit -z -linux 3390.SLACK.0121 3390-3 SLW121&lt;/code&gt;&lt;br /&gt;Of course, substitute '(install)' with your real path.&lt;br /&gt;&lt;br /&gt;- '-z' is to create the 'zipped' or compacted images&lt;br /&gt;- '-linux' is to make sure the DASDs will work under GNU/Linux&lt;br /&gt;- '3390.SLACK.0120' is the name of the file we'll create&lt;br /&gt;- '3390-3' is the model number to emulate&lt;br /&gt;- 'SLW120' if the volume label&lt;br /&gt;&lt;br /&gt;For the curious: '120' &amp; '121' are the device numbers we'll configure in Hercules.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;5) Prepare the virtual reader for IPL&lt;/u&gt;&lt;br /&gt;We'll need to boot a kernel to start installing Slack/390.&lt;br /&gt;On a 'normal' desktop, we'd use a CD, USB-stick, or whatever.&lt;br /&gt;On our mainframe, we'll use the virtual reader.&lt;br /&gt;&lt;br /&gt;We'll need to read three files: the kernel, an initial-ram-disk, and a file with some parameters.&lt;br /&gt;Copy the following files from (download)/kernels to (install)/rdr:&lt;br /&gt;&lt;code&gt;- initrd.gz&lt;br /&gt;- parmfile.txt&lt;br /&gt;- vminstall.image-2.4.26.gcc-3.3.4.img&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We're ready now to take this to the next level of complexity: editing the configuration files...&lt;br /&gt;See my &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-3.html"&gt;next post&lt;/a&gt; for an explanation and sample files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-4525079353666074012?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/4525079353666074012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=4525079353666074012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/4525079353666074012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/4525079353666074012'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-2.html' title='Hercules and Slackware (slack/390) - Part 2'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-8192127298651182843</id><published>2008-11-20T16:57:00.012-02:00</published><updated>2009-09-06T23:54:21.212-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Slack/390'/><category scheme='http://www.blogger.com/atom/ns#' term='Hercules'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Hercules and Slackware (slack/390) - Part 1</title><content type='html'>Recently I renewed my interest in the IBM mainframe computers.&lt;br /&gt;From a colleague I learned about a program called &lt;a href="http://www.hercules-390.org/"&gt;Hercules&lt;/a&gt; that emulates a complete IBM mainframe system, from the early S/360 to the newer z/Architecture machines.&lt;br /&gt;&lt;br /&gt;I already knew that Linux runs on these machines, so I started imagining running &lt;a href="http://www.slack390.org/"&gt;Slack/390&lt;/a&gt; (the official S/390 port of Slackware) on Hercules on my Slackware 12.1 box.&lt;br /&gt;Something like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSW1md3CzRI/AAAAAAAAAHA/5pUTtU8wwbw/s1600-h/slack390.logo5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 64px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSW1md3CzRI/AAAAAAAAAHA/5pUTtU8wwbw/s320/slack390.logo5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270818611362188562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;center&gt;|&lt;/center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSW1RlR5BjI/AAAAAAAAAG4/jSC1bTExN2U/s1600-h/hercpic-rblk-256.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 256px; height: 256px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSW1RlR5BjI/AAAAAAAAAG4/jSC1bTExN2U/s320/hercpic-rblk-256.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5270818252576589362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;center&gt;|&lt;/center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SSW2gej5-jI/AAAAAAAAAHI/DPBGeBvGULI/s1600-h/slackware_traditional_website_logo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 260px; height: 66px;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SSW2gej5-jI/AAAAAAAAAHI/DPBGeBvGULI/s320/slackware_traditional_website_logo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270819607982766642" /&gt;&lt;/a&gt;&lt;br /&gt;It took a bit more of an effort than expected, since there aren't any simple step-by-step instructions to install Slack/390 on Hercules available on the internet.&lt;br /&gt;&lt;br /&gt;So, to help anyone interested, I decided to create this little HOW-TO page...&lt;br /&gt;&lt;br /&gt;First a little guide to get Hercules working on your system:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;UPDATE: You can now download pre-built Slackware packages for Hercules, see &lt;a href="http://blog.nielshorn.net/2009/09/slackware-packages-for-hercules.html"&gt;this&lt;/a&gt; post.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;1) Go to your favorite sources directory (in my case ~/sources):&lt;br /&gt;&lt;code&gt;# cd ~/sources&lt;/code&gt;&lt;br /&gt;2) Download the latest version from the Hercules site (use any downloader you prefer, I use wget):&lt;br /&gt;&lt;code&gt;# wget http://www.hercules-390.org/hercules-3.05.tar.gz&lt;/code&gt;&lt;br /&gt;3) untar the package:&lt;br /&gt;&lt;code&gt;# tar -xzvf hercules-3.05.tar.gz&lt;/code&gt;&lt;br /&gt;4) Go into the directory containing the sources:&lt;br /&gt;&lt;code&gt;# cd hercules-3.05&lt;/code&gt;&lt;br /&gt;5) Check if we have all the right version (compiler, etc.):&lt;br /&gt;&lt;code&gt;# ./util/cvslvlck&lt;/code&gt;&lt;br /&gt;6) Answer y when asked, logout &amp; login again&lt;br /&gt;7) Configure, compile &amp; install:&lt;br /&gt;&lt;code&gt;# ./configure&lt;br /&gt;# make&lt;br /&gt;# make install&lt;/code&gt;&lt;br /&gt;8) Test Hercules to see if it starts ok:&lt;br /&gt;&lt;code&gt;# hercules&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If everything worked out fine, you should get a screen like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SSW8TmpVuYI/AAAAAAAAAHQ/UZegMdk1A4g/s1600-h/hercules_test.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SSW8TmpVuYI/AAAAAAAAAHQ/UZegMdk1A4g/s320/hercules_test.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5270825983884507522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In my &lt;a href="http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-2.html"&gt;next post&lt;/a&gt; I'll explain how I installed Slack/390...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-8192127298651182843?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/8192127298651182843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=8192127298651182843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8192127298651182843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8192127298651182843'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/hercules-and-slackware-slack390-part-1.html' title='Hercules and Slackware (slack/390) - Part 1'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q65cj3yCRO4/SSW1md3CzRI/AAAAAAAAAHA/5pUTtU8wwbw/s72-c/slack390.logo5.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7313054701824531272</id><published>2008-11-09T13:23:00.002-02:00</published><updated>2008-11-09T13:41:28.641-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>VMware-server 1.0.7 on 2.6.27 kernels</title><content type='html'>Last Friday lots up upgrades were released for Slackware-current, including a new kernel, 2.6.27.5&lt;br /&gt;Since changing a kernel usually has some consequences, I waited until today, Sunday, to apply all upgrades.&lt;br /&gt;As anticipated, my VMware-server stopped working. Normally I run the /usr/bin/vmware-config.pl script to reconfigure VMware and recompile the needed modules for the new kernel.&lt;br /&gt;But this time I had no success.&lt;br /&gt;&lt;br /&gt;So this is where the fun starts!&lt;br /&gt;&lt;br /&gt;I started searching several sites (Google really helps) and discovered that the problem is caused by the fact that VMware-server 1.0.7 still uses the "kernel_thread" feature that has been marked for removal since August 2006 (see your /usr/src/linux/Documentation/feature-removal-schedule.txt file). It had finally been dropped in the 2.6.27 kernel.&lt;br /&gt;&lt;br /&gt;But, since the 2.6.27 kernel has been out in the open for a while, I started looking for patched and found one in the Ubuntu community, written by a guy called Kang.&lt;br /&gt;It was originally written for VMware 5.5 but works flawlessly on VMware-server 1.0.7 too.&lt;br /&gt;&lt;br /&gt;Simply download the patch from &lt;a href="http://www.insecure.ws/2008/10/20/vmware-specific-specific-55x-and-kernel-2627"&gt;Kang's page&lt;/a&gt;, untar it and run the runme.pl script (as root):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;wget http://www.insecure.ws/warehouse/vmware-update-2.6.27-5.5.7-2.tar.gz&lt;br /&gt;tar -xzvf vmware-update-2.6.27-5.5.7-2.tar.gz&lt;br /&gt;cd vmware-update-2.6.27-5.5.7-2&lt;br /&gt;perl runme.pl&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After this, your VMware-server should run fine again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7313054701824531272?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7313054701824531272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7313054701824531272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7313054701824531272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7313054701824531272'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/11/vmware-server-107-on-2627-kernels.html' title='VMware-server 1.0.7 on 2.6.27 kernels'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-3124971128852708269</id><published>2008-10-20T22:04:00.004-02:00</published><updated>2008-10-22T22:40:20.218-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='BSD'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><title type='text'>Slackware/Linux/Unix (pre-)history (Part 3: Unix-wars, and peace)</title><content type='html'>&lt;b&gt;The big split&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The first versions of Bell Labs' Unix. also known as 'Research Unix', included the full source code, allowing universities to improve and extend the operating system. As I wrote in the previous post in this series, UCB did a lot to add to Unix and created its own distribution - BSD.&lt;br /&gt;The first version - 1BSD - was more like a set of add-ons and patches compiled by &lt;a href="http://en.wikipedia.org/wiki/Bill_Joy"&gt;Bill Joy&lt;/a&gt;. Bit by bit, BSD became larger and larger, with every release coming closer to be a complete operating system.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SP0heHmCrTI/AAAAAAAAAGw/SExgTqtakgs/s1600-h/Bill_Joy.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SP0heHmCrTI/AAAAAAAAAGw/SExgTqtakgs/s320/Bill_Joy.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5259396741157006642" /&gt;&lt;/a&gt;&lt;center&gt;Bill Joy, who started BSD and later co-founded SUN&lt;/center&gt;&lt;br /&gt;In 1981 AT&amp;T started selling commercial licenses of Unix, largely based on version 7 of Unix from Bell Labs, and called it System III. After including some of the BSD additions, like vi and curses, it released System V - Release 1 in 1983.&lt;br /&gt;These two branches, BSD and System V, were incompatible.&lt;br /&gt;&lt;br /&gt;Bill Joy founded SUN in 1983 with three graduate students from Stanford University who all had worked on the &lt;b&gt;S&lt;/b&gt;tanford &lt;b&gt;U&lt;/b&gt;niversity &lt;b&gt;N&lt;/b&gt;etwork, one of the four original ARPAnet nodes. They developed the SUN workstations running SunOS, based on BSD.&lt;br /&gt;&lt;br /&gt;While the BSD-based versions dominated the workstation market, several new commercial versions were developed for the server market based on System V, like IBM's AIX and HP's HP-UX.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Attempts to standardize&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Several attempts were made to create standards:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In 1983 a Unix users group called &lt;a href="http://www.uniforum.org/"&gt;UniForum&lt;/a&gt; published the Uniforum Draft Standard, UDS83. It was based on AT&amp;T's System III and 4.1BSD. But shortly after 4.2BSD was released with many new features (including TCP/IP) creating several incompatibilities.&lt;/li&gt;&lt;li&gt;In 1985 AT&amp;T released the System V Interface Definition (SVID), formally describing the SysVr2 API and including UDS84. SVID3, following SysVr4, became the basis for &lt;a href="http://standards.ieee.org/regauth/posix/"&gt;IEEE's POSIX&lt;/a&gt; standard, tipping the balance more in AT&amp;T's direction than in BSD's.&lt;/li&gt;&lt;li&gt;A consortium of Unix vendors formed X/Open in 1984 and developed the X/Open Portability Guides (XPG), describing a subset of features compatible with all Unixes.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Peace&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In 1993 the war finally ended with seventy-five vendors of hardware and software declaring support for X/Open. With this deal, the X/Open consortium acquired the rights to the Unix trademark and created the Single Unix Specification version 1.&lt;br /&gt;In 1999 X/Open absorbed all activities related to the POSIX standard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-3124971128852708269?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/3124971128852708269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=3124971128852708269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3124971128852708269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3124971128852708269'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/slackwarelinuxunix-pre-history-part-3.html' title='Slackware/Linux/Unix (pre-)history (Part 3: Unix-wars, and peace)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/SP0heHmCrTI/AAAAAAAAAGw/SExgTqtakgs/s72-c/Bill_Joy.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7750992488378157888</id><published>2008-10-20T12:24:00.009-02:00</published><updated>2008-10-21T08:51:04.668-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='BSD'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='Bell Labs'/><title type='text'>Slackware/Linux/Unix (pre-)history (Part 2: A new language, a philosophy, and the spreading of Unix)</title><content type='html'>&lt;b&gt;Needing a new language&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The first crude version of Unix was written in assembler language on the PDP-7 and later the PDP-11. But Ken Thompson thought it should be written in a higher-level language. In 1971 he first experimented with Fortran, but according to some stories, he gave up after only one day. He  then decided to write his own language, loosely based on BCPL, and called it simply B. But B was interpreted so it was too slow for an operating system. B also lacked types, which complicated things.&lt;br /&gt;Ritchie first expanded B, adding types to the language, and named the result New B, or NB. The next step was writing a compiler, which took longer than expected. The result was the C language and Thompson started to rewrite Unix in it, which he finished in 1973.&lt;br /&gt;With this Thompson and Ritchie created a much more portable operating system, leaving only small parts of the code machine-dependent.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Unix Philosophy&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.dartmouth.edu/~doug/biography"&gt;Douglas McIlroy&lt;/a&gt;, head of Bell Labs' Computing Techniques Research Department, had created the concept of 'pipes' - chaining processes by streams, or: the output of one program becomes the input of another. His idea was to have specific tools to do specific jobs, and chain small tools together to do more complicated jobs. This was probably the first idea for "&lt;a href="http://en.wikipedia.org/wiki/Software_componentry"&gt;software componentry&lt;/a&gt;". He summarized this as follows:&lt;br /&gt;- Write programs that do one thing and do it well&lt;br /&gt;- Write programs to work together&lt;br /&gt;- Write programs to handle text streams, because that is a universal interface&lt;br /&gt;This ultimately became known as "The Unix Philosophy".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SPyXcM2rR5I/AAAAAAAAAGo/Y4nMr1lmkiM/s1600-h/Doug_McIlroy.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SPyXcM2rR5I/AAAAAAAAAGo/Y4nMr1lmkiM/s320/Doug_McIlroy.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5259244975604582290" /&gt;&lt;/a&gt;&lt;center&gt;M. Douglas McIlroy&lt;/center&gt;&lt;br /&gt;So the idea was there, but a syntax was needed to use it. Then &lt;a href="http://www.cs.princeton.edu/~bwk/"&gt;Brian Kernighan&lt;/a&gt; came up with the vertical bar (|) and pipes were born, which led the way to creating several tools with specific tasks.&lt;br /&gt;In the process, McIlroy developed several Unix tools like diff, spell, tr, and others.&lt;br /&gt;&lt;br /&gt;A simple (and well-known) example of chaining two programs is:&lt;br /&gt;&lt;code&gt;echo "IBM 9000" | tr A-Z ZA-Y&lt;/code&gt;&lt;br /&gt;Where the first part outputs the text "IBM 9000", which goes as input to tr, which shifts all letters (A-Z) one position and forms the name of a computer from a famous movie (ok, I like Sci-Fi movies...).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Spreading of Unix&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Unix was a fact now and AT&amp;T started distributing licenses to universities and the government. In 1976 / 1977 Thompson took a six-month leave from Bell Labs to teach at UCB. And of course he taught Unix. After he left, professors and students improved some parts of Unix, creating what became the Berkeley Software Distribution, or BSD, which was resold to several other universities.&lt;br /&gt;UCB established the &lt;a href="http://en.wikipedia.org/wiki/Computer_Systems_Research_Group"&gt;Computer Systems Research Group (CSRG)&lt;/a&gt;, which received a grant from DARPA. They made the TCP/IP protocol available for Unix, opening the way for this operating system to play a key role in the early days of the internet.&lt;br /&gt;&lt;br /&gt;The following BSD releases contributed several new tools to Unix, like a &lt;b&gt;vi&lt;/b&gt;sual editor (that became vi), the c-shell, delivermail (which became sendmail) and the curses library, the forefather of ncurses.&lt;br /&gt;&lt;br /&gt;For the VAX computer BSD included Virtual Memory Management. The kernel image of this Unix version was named &lt;b&gt;vmunix&lt;/b&gt; - a name we can recognize in modern Linux kernels, normally named &lt;b&gt;vmlinuz&lt;/b&gt; (the final 'z' because if the zlib-compression).&lt;br /&gt;&lt;br /&gt;It is estimated that by 1978, over 600 (!) machines were running Unix.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;To be continued...&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7750992488378157888?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7750992488378157888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7750992488378157888' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7750992488378157888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7750992488378157888'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/slackwarelinuxunix-pre-history-part-2.html' title='Slackware/Linux/Unix (pre-)history (Part 2: A new language, a philosophy, and the spreading of Unix)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/SPyXcM2rR5I/AAAAAAAAAGo/Y4nMr1lmkiM/s72-c/Doug_McIlroy.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5443644554563013635</id><published>2008-10-19T11:18:00.006-02:00</published><updated>2008-10-19T21:54:22.912-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tux'/><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='steganography'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Hidden name in the Linux logo</title><content type='html'>This is what makes computing fun - you learn something new every day.&lt;br /&gt;&lt;br /&gt;Today there was a post on LinuxQuestions.org by w1k0, who reported something strange with the Linux logo on his ThinkPad T60. The colors were all wrong (Tux had a green belly, blue background) and... to the left-side there was an inscription saying "Simon".&lt;br /&gt;&lt;br /&gt;I suggested checking the vga-setting in lilo, but was intrigued by this mysterious inscription.&lt;br /&gt;I am familiar with the history of the Linux logo created by &lt;a href="http://www.isc.tamu.edu/~lewing/"&gt;Larry Ewing&lt;/a&gt; and the vectorized version by &lt;a href="http://www.home.unix-ag.org/simon/penguin/"&gt;Simon Budig&lt;/a&gt;, so I thought of the possibility of a hidden text in the bitmap.&lt;br /&gt;&lt;br /&gt;I opened the logo (the standard 224-color version is called &lt;span style="font-style:italic;"&gt;logo_linux_clut224.ppm&lt;/span&gt;), which can normally be found in /usr/src/linux/drivers/video/logo/, in the gimp.&lt;br /&gt;&lt;br /&gt;And I found nothing. So I already started thinking that someone was pulling a joke on w1k0 and had messed with his kernel. But that seemed weird... This someone would have to compile a new kernel, just to get a green-bellied penguin with the name Simon at boot-time.&lt;br /&gt;&lt;br /&gt;Then I thought of &lt;a href="http://en.wikipedia.org/wiki/Steganography"&gt;steganography&lt;/a&gt; and how this inscription could be hidden. Since it showed up (with the wrong color) on w1k0's screen, it must be of a color almost equal to the background.&lt;br /&gt;&lt;br /&gt;So I opened the logo in the gimp again, clicked on the color-selection tool and changed the 'limit'-setting to 0,0. Then I clicked on a random spot on the black background and Bingo!&lt;br /&gt;There really is a hidden inscription in the Linux logo!&lt;br /&gt;&lt;br /&gt;To make it visible, I painted the pixels red and enlarged the bitmap.&lt;br /&gt;The result is here, but do check it out on your own file!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SPs6reGf3HI/AAAAAAAAAGg/t42VM2cxp44/s1600-h/Tux_Simon.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SPs6reGf3HI/AAAAAAAAAGg/t42VM2cxp44/s320/Tux_Simon.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5258861508374289522" /&gt;&lt;/a&gt;&lt;center&gt;Tux with the "Simon" inscription painted in red&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5443644554563013635?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5443644554563013635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5443644554563013635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5443644554563013635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5443644554563013635'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/hidden-name-in-linux-logo.html' title='Hidden name in the Linux logo'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/SPs6reGf3HI/AAAAAAAAAGg/t42VM2cxp44/s72-c/Tux_Simon.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-2975139407167867161</id><published>2008-10-16T22:45:00.006-03:00</published><updated>2008-10-17T08:36:08.235-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='MIT'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='Bell Labs'/><title type='text'>Slackware/Linux/Unix (pre-)history (Part 1: The origins)</title><content type='html'>&lt;span style="font-weight:bold;"&gt;In the beginning there was...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CTSS, the Compatible Time-Sharing System, developed at the Massachusetts Institute of Technology (MIT) Computation Center and first demonstrated in 1961. It had some interesting features like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;inter-user messaging (what we would call 'e-mail' nowadays)&lt;/li&gt;&lt;li&gt;a program called RUNCOM, that could execute several commands put together in a file - like modern-day shell scripts&lt;/li&gt;&lt;li&gt;RUNOFF, probably the first text-formatting software&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In 1964 MIT, together with Bell Labs an General Electric (GE) started developing &lt;a href="http://www.multicians.org/"&gt;Multics&lt;/a&gt; (Multiplexed Information and Computing Service) . GE manufactured mainframe computers in those days for which they needed an Operating System. It was conceived as a modular system, where new resources (memory, disk storage) could be added as necessary. Every file had an Access Control List to share or secure its contents amongst users.&lt;br /&gt;Some novelties of Multics, now considered normal, were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;dynamic linking&lt;/li&gt;&lt;li&gt;daemons&lt;/li&gt;&lt;li&gt;a hierarchical file system&lt;/li&gt;&lt;li&gt;symbolic links&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In 1969 AT&amp;T / Bell Labs decided to leave the project and in 1970 GE's computer business was sold to Honeywell.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SPfzY8CDFLI/AAAAAAAAAGI/wTyblOQJrbA/s1600-h/History_H6181.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SPfzY8CDFLI/AAAAAAAAAGI/wTyblOQJrbA/s320/History_H6181.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5257938699735471282" /&gt;&lt;/a&gt;&lt;center&gt;A Honeywell H6180 at the MIT Information Processing Center&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;In Europe Multics was distributed by Groupe Bull, where I had my first contact with computers. I don't remember what year this happened, probably around 1975.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The birth of UNIX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ken Thompson, who had worked through Bell Labs on Multics, had written a computer game called &lt;a href="http://www.fas.harvard.edu/~lib215/reference/history/spacetravel.html"&gt;Space Travel&lt;/a&gt; for this operating system. Unsatisfied with the performance, he rewrote the program in assembly language for a Digital Equipment Corporation PDP-7, with help from Dennis Ritchie.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SPf1rAFM8jI/AAAAAAAAAGQ/GQozlvAa2K0/s1600-h/History_Ken%2BDennis.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SPf1rAFM8jI/AAAAAAAAAGQ/GQozlvAa2K0/s320/History_Ken%2BDennis.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5257941209083343410" /&gt;&lt;/a&gt;&lt;center&gt;Ken Thompson and Dennis Ritchie&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Together they teamed up with several other developers to write an operating system for the PDP-7. It is obvious that they were influenced my Multics, but they focused on the philosophy of Keep It Small &amp; Simple, what ultimately became part of the famous Unix Philosophy.&lt;br /&gt;They developed a new file system, a command line interpreter (CLI) and several utility programs for their new OS.&lt;br /&gt;Brian Kernighan, who later co-wrote the first book on the C programming language with Dennis Ritchie, invented the name Unics, as a pun on Multics. According to some stories, after hearing too many comments about "Eunuchs", the spelling was changed to Unix.&lt;br /&gt;On the PDP-7 it eventually supported two simultaneous users.&lt;br /&gt;&lt;br /&gt;To get financial support from Bell Labs, Thompson and Ritchie promised to add support for text-processing in Unix. They received a PDP-11 machine to continue their work and write roff and a text-editor. roff was based on the runoff text-formatter from Multics and before that CTSS, and survives until today as the GNU version groff.&lt;br /&gt;In 1971 The UNIX Programmer's Manual was published using troff, an evolution of roff for typesetters.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SPh3VPJejPI/AAAAAAAAAGY/LRDlLyZJM1A/s1600-h/History_Ken%2BDennis_PDP11.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SPh3VPJejPI/AAAAAAAAAGY/LRDlLyZJM1A/s320/History_Ken%2BDennis_PDP11.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5258083771682295026" /&gt;&lt;/a&gt;&lt;center&gt;Thomson &amp;amp; Ritchie working on the PDP-11&lt;/center&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;To be continued...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-2975139407167867161?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/2975139407167867161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=2975139407167867161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2975139407167867161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2975139407167867161'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/slackwarelinuxunix-pre-history-part-1.html' title='Slackware/Linux/Unix (pre-)history (Part 1: The origins)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/SPfzY8CDFLI/AAAAAAAAAGI/wTyblOQJrbA/s72-c/History_H6181.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-146511859085159199</id><published>2008-10-16T07:14:00.004-03:00</published><updated>2008-10-16T07:30:58.106-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego Sculptures'/><title type='text'>Lego Sculpture - You are the model!</title><content type='html'>I am a big fan of Lego. Unfortunately I haven't had much time lately to build anything, but I try to keep up-to-date with the latest news.&lt;br /&gt;Yesterday I read that famous department store &lt;a href="http://www.neimanmarcus.com/"&gt;Neiman Marcus&lt;/a&gt; has a new item in it's Christmas Catalog: A life-size sculpture of &lt;span style="font-style:italic;"&gt;you&lt;/span&gt; made from Lego.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SPcWANC70uI/AAAAAAAAAGA/pKhkITlw8D0/s1600-h/Lego_Sculpture.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SPcWANC70uI/AAAAAAAAAGA/pKhkITlw8D0/s320/Lego_Sculpture.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5257695282736124642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Price-tag: $60,000.00 (does not include shipping). Care to order? Look &lt;a href="http://www.neimanmarcus.com/store/sitelets/christmasbook/fantasy.jhtml?cid=OCBF9_NMO3602&amp;cmCat=christmas&amp;icid=NMCBpage75"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The artist responsible for sculpting is Nathan Sawaya. Check out his &lt;a href="http://www.brickartist.com/"&gt;site&lt;/a&gt; for some incredible works!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-146511859085159199?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/146511859085159199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=146511859085159199' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/146511859085159199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/146511859085159199'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/lego-sculpture-you-are-model.html' title='Lego Sculpture - You are the model!'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/SPcWANC70uI/AAAAAAAAAGA/pKhkITlw8D0/s72-c/Lego_Sculpture.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-1454479672715870686</id><published>2008-10-15T23:37:00.004-03:00</published><updated>2008-10-16T06:58:42.769-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='random thoughts'/><title type='text'>Slackware/Linux/Unix (pre-)history (Part 0: Introduction)</title><content type='html'>For some time I've been reading texts on the history of Slackware, Linux, UNIX, etc. It all started with this old Slackware version I found and my quest to get this (and several older) versions working in a Virtual Machine on my modern desktop.&lt;br /&gt;&lt;br /&gt;I've been using virtualization and emulation for several years, both professionally and for fun.&lt;br /&gt;Searching for even older versions of Slackware and Linux, I found several articles about the history of Slackware, Linux, GNU, Minix, Unix and so forth and started to collect links and making notes to read more.&lt;br /&gt;&lt;br /&gt;This collection of notes just continued growing and growing, as part of this history has parallels with my own history in computing. So I decided to write a series of posts about all this, trying to organize my notes in a chronological way. I have no idea how many chapters / parts / posts there will be, as I am still organizing things. Nor do I know how long it will take to finish. It is all really ad-hoc writing.&lt;br /&gt;&lt;br /&gt;Talking about all this with my wife she said it might even become a book. Well, she's the one with a talent for writing, but hey, who knows.&lt;br /&gt;After all, I always used this old saying from José Martí (*), that every man ought to do three things before he dies:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Plant a tree&lt;/li&gt;&lt;li&gt;Write a book&lt;/li&gt;&lt;li&gt;Have a son&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I already planted a tree and have a son (a daughter as well). But all I wrote until now are software manuals, and I am afraid that doesn't count.&lt;br /&gt;&lt;br /&gt;I have no idea if José Martí really ever wrote or said this. I also heard people quoting &lt;a href="http://en.wikipedia.org/wiki/Ernest_Hemingway"&gt;Ernest Hemingway&lt;/a&gt; saying this, but he lived in Cuba for a while, so he might have picked it up there.&lt;br /&gt;&lt;br /&gt;(*) &lt;a href="http://en.wikipedia.org/wiki/Jose_Marti"&gt;José Martí&lt;/a&gt; (José Julián Martí Pérez) was a Cuban journalist / diplomat who fought for the independence of Cuba and is considered a national hero there. When I visited Cuba in 1986 I noticed how people still like him.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SPasqghAcHI/AAAAAAAAAF4/jq1k81cOwY4/s1600-h/Jose_Marti.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SPasqghAcHI/AAAAAAAAAF4/jq1k81cOwY4/s320/Jose_Marti.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5257579461284491378" /&gt;&lt;/a&gt;&lt;br /&gt;The national airport of Havana is named after him and he wrote the verses for the famous song "Guantanamera", that in a way might have something to do with me writing these lines:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Yo soy un hombre sincero&lt;br /&gt;De donde crece la palma&lt;br /&gt;Y antes de morirme quiero&lt;br /&gt;Echar mis versos del alma.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;which roughly translates to:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;I am an an honest man&lt;br /&gt;From where the palm tree grows,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(well, I do live in Brazil now...)&lt;br /&gt;And I want, before I die,&lt;br /&gt;to cast these verses from my soul&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(now I just hope someone will read all this ;-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My next post will / should be about the origins of it all: UNIX (but I'll start even before that... UNICS)&lt;br /&gt;&lt;br /&gt;To be continued!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-1454479672715870686?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/1454479672715870686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=1454479672715870686' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1454479672715870686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1454479672715870686'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/slackwarelinuxunix-pre-history-part-0.html' title='Slackware/Linux/Unix (pre-)history (Part 0: Introduction)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q65cj3yCRO4/SPasqghAcHI/AAAAAAAAAF4/jq1k81cOwY4/s72-c/Jose_Marti.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7509167842171667924</id><published>2008-10-14T22:10:00.001-03:00</published><updated>2008-10-14T23:24:38.505-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='X'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Older Slackware versions (V)</title><content type='html'>Well, I finally managed to get a higher resolution in VMware, at least with Slackware 4.0&lt;br /&gt;I discovered that VMware-server 1.0.7 still includes the drivers for XFree86 3.* &amp; 4.*&lt;br /&gt;&lt;br /&gt;In XFree86 3.* there is a separate "server" for each type of interface: one for monochrome cards (who remembers Hercules?), one for simple VGA, one for SVGA, etc...&lt;br /&gt;And VMware supplies a "server" for virtual machines!&lt;br /&gt;&lt;br /&gt;I tried the XF86_VMware server on Slackware 4.0, together with the sample XF86Config file.&lt;br /&gt;I just had to change the configuration for the gpm-repeater mouse, include the 800x600 and 1024x768 resolutions and it worked fine in a couple of minutes!&lt;br /&gt;&lt;br /&gt;Here is a screenshot of the result, in 1024x768:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SPU-e7LTAdI/AAAAAAAAAFw/wlRBSLZR924/s1600-h/x-kde-svga"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SPU-e7LTAdI/AAAAAAAAAFw/wlRBSLZR924/s320/x-kde-svga" border="0" alt=""id="BLOGGER_PHOTO_ID_5257176841026994642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, Netscape now works fine, at least with the not-so-sofisticated sites.&lt;br /&gt;I tried to open linuxquestions.org, but had no success. Simply too many java scripts for good old Netscape 4.51&lt;br /&gt;&lt;br /&gt;For now, this VMware driver is just working in Slackware 4.0 No luck so far in Slackware 3.5, although it uses Xfree86 3.* as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7509167842171667924?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7509167842171667924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7509167842171667924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7509167842171667924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7509167842171667924'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/older-slackware-versions-v.html' title='Older Slackware versions (V)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/SPU-e7LTAdI/AAAAAAAAAFw/wlRBSLZR924/s72-c/x-kde-svga' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5884517540939145908</id><published>2008-10-14T07:42:00.007-03:00</published><updated>2008-10-14T23:25:32.363-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tux'/><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Older Slackware versions (IV)</title><content type='html'>Working with fvwm2 wasn't too much fun... So I started looking for and old Slackware version that had KDE.&lt;br /&gt;I found out that my oldest CD with KDE was Slackware 4.0:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SPR58TiOcrI/AAAAAAAAAFo/kUdt5RJgCJ0/s1600-h/Slack_4.0_Box.jpeg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SPR58TiOcrI/AAAAAAAAAFo/kUdt5RJgCJ0/s320/Slack_4.0_Box.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5256960741991150258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As it says on the cover, it comes with KDE 1.1, so this was my new project.&lt;br /&gt;According to the cover from the original 4-disc box, we're talking June 1999 now.&lt;br /&gt;This is when Tux started smoking a pipe (he was not smoking on the previous Slackware boxes I have). I also have the impression he gained some weight since the previous version.&lt;br /&gt;Well, I guess this is when Tux became a real Slacker...&lt;br /&gt;&lt;br /&gt;Installing it, after my experiences with 3.5 &amp; 1.1.2, was simple and fast.&lt;br /&gt;I configured XF86Config in /etc, as in 3.5, and fired up X. The result is here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SPR45gEct-I/AAAAAAAAAFg/RlmcIEuydLk/s1600-h/x-kde"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SPR45gEct-I/AAAAAAAAAFg/RlmcIEuydLk/s320/x-kde" border="0" alt=""id="BLOGGER_PHOTO_ID_5256959594304681954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Slackware 4.0 was the version I used most. The previous versions were interesting experiences and taught me a lot, struggling to find out how to configure things, etc. After 3.1, 3.4, 3.5 and 3.6 this was the first version I really enjoyed as an operating system, not as some kind of a science project. This is where I started feeling that I was "in control".&lt;br /&gt;I still have 4.0 running on a 486 notebook, after all those years...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5884517540939145908?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5884517540939145908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5884517540939145908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5884517540939145908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5884517540939145908'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/older-slackware-versions-iv.html' title='Older Slackware versions (IV)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_q65cj3yCRO4/SPR58TiOcrI/AAAAAAAAAFo/kUdt5RJgCJ0/s72-c/Slack_4.0_Box.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-227472652171349422</id><published>2008-10-12T11:22:00.006-03:00</published><updated>2008-10-12T12:09:28.251-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='X'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Older Slackware versions (III)</title><content type='html'>After successfully installing Slackware 3.5 and discovering that Slackware 1.1.2 was still available on the internet at &lt;a href="ftp://sunsite.unc.edu/pub/historic-linux/distributions/slackware/1.1.2/"&gt;sunsite.unc.edu&lt;/a&gt; I simply had to try it...&lt;br /&gt;&lt;br /&gt;At first I had no luck, as this version does not support the standard VMware network card (PCnet32) and also lacks support for IDE CDRom drives. The VMware emulated SCSI cards (BusLogic &amp; LSI) were also not recognized.&lt;br /&gt;So the only way would be to install from floppies, just like the old days.&lt;br /&gt;&lt;br /&gt;Since I haven't used my internal 3.5" drive in years and didn't feel like formatting 50+ disks, I first gave up.&lt;br /&gt;But then I remembered that VMware also accepts disk-images for floppies, so I wrote a quick-and-dirty script to create all the needed images from the downloaded directories:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;for dsk in *[1-9]/ ; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;length=${#dsk}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dsk=${dsk:0:($length-1)}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo -n "$dsk..."&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cp disk_empty.img disk_$dsk.img&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;mount -t msdos -o loop disk_$dsk.img /mnt/floppy&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cp $dsk/* /mnt/floppy/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;umount /mnt/floppy&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo " [ok]"&lt;br /&gt;done&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It gives an error trying to create a disk image from the libc444 folder, but you can ignore that.&lt;br /&gt;&lt;br /&gt;Installation was straight-forward and after a lot of virtual disk-swapping, I had my Slackware 1.1.2 installation working.&lt;br /&gt;&lt;br /&gt;Here is a first screenshot (look at the kernel version!):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SPINnc5X_MI/AAAAAAAAAFI/3o0QcNNV_sM/s1600-h/login"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SPINnc5X_MI/AAAAAAAAAFI/3o0QcNNV_sM/s320/login" border="0" alt=""id="BLOGGER_PHOTO_ID_5256278686517689538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here you can see how this version is really easy on your memory (less than 4M!) and hard disk:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SPIN7iDt2fI/AAAAAAAAAFQ/BWXQ6WX62uc/s1600-h/df%2Bfree"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SPIN7iDt2fI/AAAAAAAAAFQ/BWXQ6WX62uc/s320/df%2Bfree" border="0" alt=""id="BLOGGER_PHOTO_ID_5256279031500626418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Configuring X&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now I had to get X working as well...&lt;br /&gt;X looks for a Xconfig file in /etc (for all users) or in your home directory if you need separate configurations per user.&lt;br /&gt;A sample configuration file can be found in /var/X11/lib/X11 so I copied it to /etc and started experimenting.&lt;br /&gt;&lt;br /&gt;VMware emulates a standard VGA adapter (no SVGA) so we are limited to 640x480.&lt;br /&gt;I added this line near the end of Xconfig in the "ModeDB" for a standard VGA screen:&lt;br /&gt;&lt;code&gt;"640x480" 25 640 672 768 800 480 490 492 525&lt;/code&gt;&lt;br /&gt;In the VGA16 section I changed the Virtual values to 640 480&lt;br /&gt;&lt;br /&gt;So now I had a working X, but no mouse...&lt;br /&gt;So, back to reading more man-pages, and I changed my mouse settings in Xconfig to:&lt;br /&gt;&lt;code&gt;ps2         "/dev/bmouseps2"&lt;/code&gt;&lt;br /&gt;and X is working!&lt;br /&gt;&lt;br /&gt;Here is another screenshot, showing the standard fvwm window manager:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SPIRVoHfCcI/AAAAAAAAAFY/_ke5bHqv17E/s1600-h/x-fvwm"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SPIRVoHfCcI/AAAAAAAAAFY/_ke5bHqv17E/s320/x-fvwm" border="0" alt=""id="BLOGGER_PHOTO_ID_5256282778338527682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, we have nine (!) virtual desktops here.&lt;br /&gt;&lt;br /&gt;One thing I noticed with this 1.1.2 version, is that it is &lt;span style="font-weight:bold;"&gt;much&lt;/span&gt; slower than the 3.5 version. It also puts a big load on the processor of my host-machine, that goes to 99%. Running 3.5 has almost no effect, it's really easy on the CPU.&lt;br /&gt;This probably has something to do with the 0.99 kernel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-227472652171349422?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/227472652171349422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=227472652171349422' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/227472652171349422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/227472652171349422'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/older-slackware-versions-iii.html' title='Older Slackware versions (III)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/SPINnc5X_MI/AAAAAAAAAFI/3o0QcNNV_sM/s72-c/login' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6508602123836252580</id><published>2008-10-11T12:55:00.005-03:00</published><updated>2008-10-14T23:25:12.172-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='X'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Older Slackware versions (II)</title><content type='html'>Finally got X working on my Slackware 3.5 installation.&lt;br /&gt;Well, not perfectly, but good enough to capture a screen:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SPDM5p7XkrI/AAAAAAAAAFA/qv6MwMoLlNU/s1600-h/x-fvwm2"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SPDM5p7XkrI/AAAAAAAAAFA/qv6MwMoLlNU/s320/x-fvwm2" border="0" alt=""id="BLOGGER_PHOTO_ID_5255926056020841138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I had to configure X by editing XF86Config that's stored in /etc in this version.&lt;br /&gt;After some tweaking I got it to work with the basic "generic vga" driver, with a resolution of 640x480. It should work with higher resolutions, but I guess I need something better than vga for this.&lt;br /&gt;If I succeed, I'll post the secret here :-)&lt;br /&gt;&lt;br /&gt;For now I'm using the fvwm2 window manager.&lt;br /&gt;As you can see, the system is still running fine, using only about 14M of memory.&lt;br /&gt;&lt;br /&gt;I couldn't get Netscape to work, as it tries to open www.netscape.com, which points to aol, which tries to start a load of Java scripts that Netscape can't process...&lt;br /&gt;&lt;br /&gt;To be continued...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6508602123836252580?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6508602123836252580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6508602123836252580' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6508602123836252580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6508602123836252580'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/older-slackware-versions-ii.html' title='Older Slackware versions (II)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/SPDM5p7XkrI/AAAAAAAAAFA/qv6MwMoLlNU/s72-c/x-fvwm2' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-1187703149872672118</id><published>2008-10-10T21:57:00.008-03:00</published><updated>2008-10-11T07:32:38.540-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>Older Slackware versions (I)</title><content type='html'>Last week I found the original Slackware 3.5 CDs that I have. I have several older versions of Slackware in my collection, most of them original CDs.&lt;br /&gt;I started using Slackware in 1996, when I bought a book called "Slackware Linux Unleashed" from Sams. It included Slackware 96, which is also known as Slackware 3.1&lt;br /&gt;&lt;br /&gt;Since I liked Slackware a lot, I bought a subscription to receive the newer versions from Walnut Creek, a company that has ceased to exist.&lt;br /&gt;So somewhere I have the original 3.1 disk and several versions up to at least 4.0&lt;br /&gt;At some point in time the economy in Brazil went berserk and I had to cancel my subscription, since the value of the US$ quadruplicated and I had to fall back to downloading from the internet.&lt;br /&gt;After I met some of the wonderful guys of the Slackware team in person recently (Eric, Robby, Allan) I decided to get a new subscription though.&lt;br /&gt;&lt;br /&gt;But, getting back to the point...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SPB_lQ2VAnI/AAAAAAAAAE4/2DNcBWB6M9w/s1600-h/Slack_3.5_Box.jpeg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SPB_lQ2VAnI/AAAAAAAAAE4/2DNcBWB6M9w/s320/Slack_3.5_Box.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5255841043296092786" /&gt;&lt;/a&gt;&lt;br /&gt;Finding this old box of CDs brought back some memories. Memories how I struggled in the beginning to get everything working... and how I learned so much from the experience. It has been and still is wonderful to encounter a problem, search around and in the end be proud to find a solution.&lt;br /&gt;So I started wondering if this version would still work on modern hardware.&lt;br /&gt;I still have a lot of old hardware stacked up here (and when I say old, I'm talking about boards with the Z80 CPU, XT PCs, 286, 386, etc...), but now I install most systems on virtual machines. Yes, I like VMware...&lt;br /&gt;I already have a VM running DOS 3.3, one  running Windows 1.01 and another running &lt;a href="http://en.wikipedia.org/wiki/Minix"&gt;MINIX&lt;/a&gt;. So, the logical next step was to create a VM running Slackware 3.5&lt;br /&gt;&lt;br /&gt;I really had no idea if it would work, but I decided to try. In VMware I created a minimal machine with 64MB of memory and a 500MB hard disk. And then I started installing...&lt;br /&gt;&lt;br /&gt;This 3.5 version has a bootable CD so it was quite simple.&lt;br /&gt;For those used to recent installs of Slackware it's an easy job. Not much has changed since 3.5 in the interface, so installing this old version was simple.&lt;br /&gt;The only big difference I noticed was that I didn't get an option for DHCP. Maybe in 1997 this was not too common. So I entered a fixed IP address for my local network and continued.&lt;br /&gt;&lt;br /&gt;In the end, everything worked fine, except one thing: the network card. VMware emulates a PCnet32 interface, which is not automatically loaded by Slackware 3.5 The solution was simple, as the pcnet32 module exists in Slackware 3.5: just added&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/sbin/modprobe pcnet32&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;to /etc/rc.d/rc.modules and it worked fine.&lt;br /&gt;&lt;br /&gt;So I proved it was possible to install Slackware 3.5 (from September 9, 1998) on a Virtual Machine without too much trouble.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Some screenshots to show the result:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First the old-style lilo menu:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SPB9C2O08cI/AAAAAAAAAEY/dlYU0BoCJ7A/s1600-h/lilo"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SPB9C2O08cI/AAAAAAAAAEY/dlYU0BoCJ7A/s320/lilo" border="0" alt=""id="BLOGGER_PHOTO_ID_5255838253012283842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here after logging in, showing the kernel version (2.0.34):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q65cj3yCRO4/SPB9OsiAGLI/AAAAAAAAAEg/xy2Nguvwdq4/s1600-h/login"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_q65cj3yCRO4/SPB9OsiAGLI/AAAAAAAAAEg/xy2Nguvwdq4/s320/login" border="0" alt=""id="BLOGGER_PHOTO_ID_5255838456566782130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To check the internet connection, let's see if there are some updates in -current with lynx:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SPB9lJ2RTWI/AAAAAAAAAEo/e8hieg2eSAs/s1600-h/lynx_slackware_updates"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SPB9lJ2RTWI/AAAAAAAAAEo/e8hieg2eSAs/s320/lynx_slackware_updates" border="0" alt=""id="BLOGGER_PHOTO_ID_5255838842393546082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And last, just to show the size of Slackware 3.5:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SPB95cG3huI/AAAAAAAAAEw/P1JkP7mBNgQ/s1600-h/df%2Bfree"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SPB95cG3huI/AAAAAAAAAEw/P1JkP7mBNgQ/s320/df%2Bfree" border="0" alt=""id="BLOGGER_PHOTO_ID_5255839190892381922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next chapter:&lt;br /&gt;Adventures to get X working&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-1187703149872672118?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/1187703149872672118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=1187703149872672118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1187703149872672118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/1187703149872672118'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/older-slackware-versions-i.html' title='Older Slackware versions (I)'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q65cj3yCRO4/SPB_lQ2VAnI/AAAAAAAAAE4/2DNcBWB6M9w/s72-c/Slack_3.5_Box.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-7645669166991102684</id><published>2008-10-05T13:08:00.005-03:00</published><updated>2008-10-05T13:25:32.719-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>VMware &amp; Slackware as guest</title><content type='html'>Just a quick hint for those having trouble using the 'generic' kernel (as we should always use) when installing Slackware as a guest with VMware.&lt;br /&gt;&lt;br /&gt;VMware creates SCSI drives by default when we create a new virtual machine for Linux with a 2.6 kernel, emulating a LSI Logic SCSI controller. The 'huge' kernel that comes with Slackware recognizes this controller as it is built in. But when we try to use the 'generic' kernel it ends up not completing the boot process as it cannot mount the root partition. We are presented with a basic shell to try to solve the problem but we only and up with a 'kernel panic'&lt;br /&gt;&lt;br /&gt;You probably already created a initrd.gz (initial RAM disk) to load the modules for your file system with your generic kernel.&lt;br /&gt;To use the LSI Logic controller, we need to add some more modules to the list, like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;mkinitrd -c -k xxx -m jbd:ext3:scsi_transport_spi:mptbase:mptscsih:mptspi -f ext3 -r /dev/yyy&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Replace 'xxx' with your kernel version (I use 2.6.24.7-smp) and yyy with the partition of your root (probably sda1 or sda2).&lt;br /&gt;&lt;br /&gt;Don't forget to run lilo again and then you can boot using the generic kernel without problems!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-7645669166991102684?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/7645669166991102684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=7645669166991102684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7645669166991102684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/7645669166991102684'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/vmware-slackware.html' title='VMware &amp; Slackware as guest'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-8893512156639489288</id><published>2008-10-03T20:40:00.000-03:00</published><updated>2008-10-03T20:40:14.402-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='NTP'/><title type='text'>Keeping your clock accurate</title><content type='html'>If you want to be sure that your computer clock is accurate - always - you can configure your system to use NTP (Network Time Protocol).&lt;br /&gt;&lt;br /&gt;NTP is one of the oldest protocols on the internet and its predecessors, going back to the early eighties. If you are interested in reading a small article about the history of NTP, I recommend &lt;a href="http://www.cis.udel.edu/~mills/database/papers/history.pdf"&gt;this&lt;/a&gt; text in PDF. The official 'home' of NTP is &lt;a href="http://www.ntp.org"&gt;www.ntp.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can use NTP on your Linux desktop to automatically synchronize its clock to a pool of servers around the world that are official 'timekeepers'. Usually you configure NTP to talk to about three different servers to guarantee that at least one is available at any time. It is best to choose servers near you, so that response times are shorter, which results in a more accurate clock on your computer. There are more than 1.500 servers to choose from, but some areas on our planet are better served than others. For instance: there are almost a thousand servers in Europe, but only 19 in South America (where I live).&lt;br /&gt;&lt;br /&gt;Your first step should be to select three servers close to you - preferably in your country, or if there aren't enough, in your 'zone.&lt;br /&gt;Go to &lt;a href="http://www.pool.ntp.org/"&gt;www.pool.ntp.org&lt;/a&gt; and browse through the tree of zones and servers to select which ones are best for you.&lt;br /&gt;The 'pooling' system automatically translates the addresses to the actual domain- and server names.&lt;br /&gt;For instance, I use: 0.br.pool.ntp.org, 1.br.pool.ntp.org and 2.br.pool.ntp.org and these names are usually translated to servers at local universities or government institutions.&lt;br /&gt;Don't worry about this part, the pooling system takes care of it.&lt;br /&gt;&lt;br /&gt;Now that you have selected your servers, let's start configuring your system. As always, I'll use Slackware as an example, but things will be similar in other distributions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Configure /etc/ntp.conf&lt;/b&gt;&lt;br /&gt;Edit this file with your favorite text-editor (I use vi) and go to the lines that say:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;server &amp;lt;example-server-name&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and replace this line or lines with your servers. In my case, I put:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;server 0.br.pool.ntp.org&lt;br /&gt;server 1.br.pool.ntp.org&lt;br /&gt;server 2.br.pool.ntp.org&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;While we're editing the configuration, let's make NTP a bit more secure, inserting some restrictions. Find the lines (usually at the end) that start with "restrict ...." and replace them with the following:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;restrict default nomodify&lt;br /&gt;restrict 127.0.0.1&lt;br /&gt;restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap nopeer&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The address 127.0.0.1 is our local IP address that has no restrictions.&lt;br /&gt;The network / mask combination in the third line is my local network, so that my other desktops can use my system as a time-server, preventing all of them to send NTP queries to the internet.&lt;br /&gt;On the rest of my desktops I put the line "server 192.168.1.1" (my local IP) in their ntp.conf&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Synchronize your clock manually&lt;/b&gt;&lt;br /&gt;If your clock is too much behind or ahead, NTP might refuse to synchronize it, so let's force the first synchronization with a simple command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ntpdate 0.br.pool.ntp.org&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Of course, you should substitute the server name with one from your list.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Make your ntp daemon executable&lt;/b&gt;&lt;br /&gt;In Slackware this is done with the following command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;chmod +x /etc/rc.d/rc.ntpd&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This (again, in Slackware) will make it start every time you boot up your system.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Start NTP now without rebooting&lt;/b&gt;&lt;br /&gt;Again, a simple command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/etc/rc.d/rc.ntpd start&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;That's it! &lt;br /&gt;After a few minutes, check if NTP is communicating with the server pool by running this command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ntpq -p&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;It should show the servers it is talking to and one of them should have an '*' in front of it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-8893512156639489288?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/8893512156639489288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=8893512156639489288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8893512156639489288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/8893512156639489288'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/10/keeping-your-clock-accurate.html' title='Keeping your clock accurate'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6517479672136710397</id><published>2008-09-29T15:46:00.005-03:00</published><updated>2008-09-29T17:32:06.958-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='cli'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Pop-up Dialog in Shell scripts</title><content type='html'>As I am an old-time computer user, I still prefer doing almost everything from the command line (&lt;a href="http://en.wikipedia.org/wiki/Command_line_interface"&gt;CLI&lt;/a&gt;). I program almost everything in bash-scripts and schedule them with cron.&lt;br /&gt;But of course I do use a graphical interface to read mail (although I have &lt;a href="http://en.wikipedia.org/wiki/Alpine_%28e-mail_client%29"&gt;Alpine&lt;/a&gt; configured to read my mail from the CLI) and browse the internet (but I also use &lt;a href="http://en.wikipedia.org/wiki/Links_%28web_browser%29"&gt;links&lt;/a&gt; a lot!).&lt;br /&gt;Sometimes a bash script needs to give or get feedback, like reporting an error or just telling everything worked fine. Scheduled scripts normally write logs that can be checked later, or can even send e-mails to a user.&lt;br /&gt;There is another, not so well-known option for interaction with the user, if you use KDE as your desktop environment: &lt;span style="font-style: italic;"&gt;kdialog&lt;/span&gt;&lt;br /&gt;It has many different options to choose from, so I'll give just a few simple examples:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;kdialog --title "Hey you..." --yesno "Do you like this popup?"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This pops up the following dialog:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q65cj3yCRO4/SOErevhhzqI/AAAAAAAAADg/i9eLUM_cYm4/s1600-h/kdialog_1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_q65cj3yCRO4/SOErevhhzqI/AAAAAAAAADg/i9eLUM_cYm4/s320/kdialog_1.png" alt="" id="BLOGGER_PHOTO_ID_5251526447643872930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(You'll just have to believe that "Sim" = "Yes" and "Não" = "No" in Portuguese)&lt;br /&gt;The result of which button the user clicked can be obtained by reading the '$?' variable in bash: '0' for the first button (Yes), '1' for the second ('No') and so on.&lt;br /&gt;&lt;br /&gt;Another useful example is:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;kdialog --title "Warning..." --warningyesno "Low on space on /var - Continue?"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;which gives this result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_q65cj3yCRO4/SOEsnL_OCJI/AAAAAAAAADo/1JXAXu5HAvE/s1600-h/kdialog_2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_q65cj3yCRO4/SOEsnL_OCJI/AAAAAAAAADo/1JXAXu5HAvE/s320/kdialog_2.png" alt="" id="BLOGGER_PHOTO_ID_5251527692235180178" border="0" /&gt;&lt;/a&gt;There are many more options to show radio buttons, check boxes, prompts for passwords, etc.&lt;br /&gt;&lt;br /&gt;Now let's use this in a small script:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# Sample on how to use kdialog&lt;br /&gt;&lt;br /&gt;ERR_SPACE=101&lt;br /&gt;&lt;br /&gt;# Calculate needed space&lt;br /&gt;needed=1000 # ok, we're not calculating...&lt;br /&gt;&lt;br /&gt;# Calculate space on $dev&lt;br /&gt;dev=/var&lt;br /&gt;space=800&lt;br /&gt;&lt;br /&gt;# Test if we have sufficient space left&lt;br /&gt;if [ $space -lt $needed ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;kdialog --title "Warning..." \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--warningyesno "Low on space on $dev - Continue?"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if [ $? -ne 0 ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "Copy failed" &gt;&gt; log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit $ERR_SPACE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Copy here...&lt;br /&gt;&lt;br /&gt;echo "Copy ok" &gt;&gt; log&lt;br /&gt;&lt;br /&gt;# All done&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;After calling kdialog we test the answer with '$?'. If it is not zero, which means the user clicked on 'no', we exit the script with the defined error code.&lt;br /&gt;&lt;br /&gt;For more options, simply enter 'kdialog --help' on the command line.&lt;br /&gt;&lt;br /&gt;Happy scripting!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6517479672136710397?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6517479672136710397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6517479672136710397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6517479672136710397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6517479672136710397'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/09/pop-up-dialog-in-shell-scripts.html' title='Pop-up Dialog in Shell scripts'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q65cj3yCRO4/SOErevhhzqI/AAAAAAAAADg/i9eLUM_cYm4/s72-c/kdialog_1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6888838439927150283</id><published>2008-09-28T22:38:00.003-03:00</published><updated>2009-09-01T21:12:26.639-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><category scheme='http://www.blogger.com/atom/ns#' term='random thoughts'/><title type='text'>Wonders of the internet</title><content type='html'>The internet is an amazing thing. Sometimes we forget too fast how things used to be before the internet. Yeah, I know, I'm getting old... I started working with computers when there was no such thing as the internet.&lt;br /&gt;&lt;br /&gt;Today I was 'Googling' and by coincidence found a page talking about some software I wrote several years ago. It's a simple Hex-editor for Windows written in C, based on much older versions, dating back from the days of CP/M. If you have no idea what &lt;a href="http://en.wikipedia.org/wiki/CP/M"&gt;CP/M&lt;/a&gt; is, you're probably a bit younger than I am ;-)&lt;br /&gt;&lt;br /&gt;This version I found today on the internet dates from 2003 / 2004. I published it at the time for free download (I always believed in free software) on my &lt;a href="http://www.nielshorn.net/prog/old/hexed/"&gt;website&lt;/a&gt;. I never promoted it too much, but some people managed to find it and at the time I received quite some feedback.&lt;br /&gt;&lt;br /&gt;After finding that page, I did a Google search on this Hex Editor and found pages from all over the world mentioning my software :-) Never had any idea my little program has been used in places like Poland, China, etc...&lt;br /&gt;&lt;br /&gt;That's the internet: no more distances and complete anonymity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6888838439927150283?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6888838439927150283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6888838439927150283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6888838439927150283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6888838439927150283'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/09/wonders-of-internet.html' title='Wonders of the internet'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-5029515385728192092</id><published>2008-09-28T11:40:00.005-03:00</published><updated>2008-09-28T12:44:47.352-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>VMware Problems &amp; Solutions</title><content type='html'>I am a big fan of VMware and virtualization in general.&lt;br /&gt;At work we use the professional version to install servers that are only used a couple of hours a week, like systems for testing new releases of software etc.&lt;br /&gt;At home I use the free &lt;a href="http://www.vmware.com/download/server/"&gt;vmware-server-1.0.7&lt;/a&gt; version to test new releases of software, different operating systems, etc. I used to have several desktops for testing, taking up a lot of space. Now I create and delete virtual machines on my desktop that has lots of hard disk space.&lt;br /&gt;After upgradingmy Slackware 12.1-current with the latest versions of libX11 (1.1.5) and gtk2 (2.12.12) VMware stopped working and presented this error:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;&lt;br /&gt;vmware: xcb_lock.c:77: _XGetXCBBuffer: Assertion `((int) ((xcb_req) - (dpy-&gt;request)) &gt;= 0 )' failed.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;After some research and testing combinations of the previous versions of libX11 and gtk, I found the following solution:&lt;br /&gt;1) Compile an alternative version of libX11 that does not use xcb&lt;br /&gt;2) Always start VMware using this alternative library&lt;br /&gt;&lt;br /&gt;The following script downloads the source code of libX11, compiles it with the '--without-xcb' option and creates a start-up script to use this version with VMware:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# vmware_no_xcb        Script to compile alternative libX11 library&lt;br /&gt;#                      (without xcb) for vmware with gtk2 &gt; gtk+2-2.12.9&lt;br /&gt;#&lt;br /&gt;# Version:             1.0.1 - Sun, Sep 21, 2008&lt;br /&gt;#&lt;br /&gt;# Author:              Niels Horn &lt;niels.horn@gmail.com&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# Set constants:&lt;br /&gt;libver=libX11-1.1.5&lt;br /&gt;destlib=/usr/local/bin/vmware_no_xcb&lt;br /&gt;destbin=/usr/local/bin&lt;br /&gt;&lt;br /&gt;# Download sources from xorg.freedesktop.org:&lt;br /&gt;test -e $libver.tar.bz2 || wget -c http://xorg.freedesktop.org/archive/individual/lib/$libver.tar.bz2&lt;br /&gt;&lt;br /&gt;# Clean old dir and extract sources:&lt;br /&gt;rm -rf $libver&lt;br /&gt;tar xjf $libver.tar.bz2&lt;br /&gt;&lt;br /&gt;# Create destination for new lib &amp;amp; new startup script:&lt;br /&gt;mkdir -p $destlib&lt;br /&gt;mkdir -p $destbin&lt;br /&gt;&lt;br /&gt;# Go into sources dir, configure, compile &amp;amp; strip:&lt;br /&gt;cd $libver&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;./configure --without-xcb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;make -j 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;strip src/.libs/libX11.so.6.2.0&lt;br /&gt;&lt;br /&gt;# Copy new lib to destination &amp;amp; create symlinks:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cp src/.libs/libX11.so.6.2.0 $destlib&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ln -s libX11.so.6.2.0 $destlib/libX11.so.6&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ln -s libX11.so.6.2.0 $destlib/libX11.so&lt;br /&gt;&lt;br /&gt;# Create startup script, using new lib, and make executable:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo -e "LD_PRELOAD=$destlib/libX11.so  vmware" &gt; $destbin/vmware-start.sh&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;chmod 755 $destbin/vmware-start.sh&lt;br /&gt;&lt;br /&gt;# Leave sources dir &amp;amp; remove:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cd ..&lt;br /&gt;rm -rf $libver&lt;br /&gt;&lt;br /&gt;# All done. From now on, use 'vmware-start.sh' to start vmware&lt;br /&gt;&lt;/niels.horn@gmail.com&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Substitute the libver, destlib &amp;amp; destbin variables with your preferences and run this script to do the rest for you.&lt;br /&gt;From then on, start VWware with 'vmware-start.sh' to call your new libX11 library.&lt;br /&gt;&lt;br /&gt;This works with the 1.0.x versions of VMware. The new 2.x versions are a completely different story for me, but that's for a future post...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-5029515385728192092?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/5029515385728192092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=5029515385728192092' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5029515385728192092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/5029515385728192092'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/09/vmware-problems-solutions.html' title='VMware Problems &amp; Solutions'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-4458377716632853100</id><published>2008-09-27T21:47:00.003-03:00</published><updated>2008-09-27T22:03:12.671-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Slackware'/><title type='text'>'The Man'</title><content type='html'>Those who use Slackware will know who Patrick Volkerding is. For those who don't: he is the creator and maintainer of the Slackware Linux distribution. Also known as 'The Man'.&lt;br /&gt;Browsing for articles about the history of Slackware (I might write something about it in the future), I found an interview with Pat from 1994 from Linux Journal.&lt;br /&gt;At that time, I was still completely into DOS and Windows (I 'only' discovered Slackware and Linux in 1996). It is fun to read... It even talks about a possible merger between Slackware and Debian (that never happened, as we now know). And there is a rare picture of 'The Man'...&lt;br /&gt;You can find the interview &lt;a href="http://www.linuxjournal.com/article/2750"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-4458377716632853100?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/4458377716632853100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=4458377716632853100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/4458377716632853100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/4458377716632853100'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/09/man.html' title='&apos;The Man&apos;'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-2746812595652571856</id><published>2008-09-27T19:04:00.002-03:00</published><updated>2008-09-27T19:18:18.765-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maintenance'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>House-keeping in Linux</title><content type='html'>Checked your /tmp folder lately? You might be surprised how many files there are if you do not clean it on a regular basis. To keep mine tidy, I have a small script called 'cleantmp':&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;find /tmp -atime +5 -exec rm -r {} \;&lt;br /&gt;find /var/tmp -type f -atime +30 -exec rm {} \;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Basically it looks for files in /tmp that are at least five days old and removes them, including subdirectories.&lt;br /&gt;In /var/tmp it allows the files to stay a bit longer: 30 days.&lt;br /&gt;&lt;br /&gt;To keep your system clean as well, save this script in /usr/local/bin as 'cleantmp' (or any name you prefer), and make it executable with:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;chmod +x /usr/local/bin/cleantmp&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Now if your system stays on 24 hours a day, you can schedule this script from crontab:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;ln -s /usr/local/bin/cleantmp /etc/cron.daily/cleantmp&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;But if you normally turn of your computer, you can call 'cleantmp' from /etc/rc.d/rc.local&lt;br /&gt;&lt;br /&gt;Happy Slacking!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-2746812595652571856?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/2746812595652571856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=2746812595652571856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2746812595652571856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/2746812595652571856'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/09/house-keeping-in-linux.html' title='House-keeping in Linux'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-6795715034174952584</id><published>2008-09-26T23:42:00.006-03:00</published><updated>2008-09-28T09:57:29.216-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Traffic Shaping with cbq</title><content type='html'>Since I am on the subject of networking in Linux, here is another post about some nice things we can do: shaping our traffic so that we can limit how much of our bandwidth we use for each type of traffic.&lt;br /&gt;&lt;br /&gt;Just as a small reminder: I am a long-time Slackware user (since 1996) and I only test my configurations on this distribution. I have used other Linux 'flavors' in the past but know much less about them.&lt;br /&gt;Most thing I will post here will work though on other systems, but don't shoot me if they do not.&lt;br /&gt;&lt;br /&gt;I started using cbq for traffic shaping on my local network because of the following situation:&lt;br /&gt;I use rsync to copy some files I cannot afford to loose from my desktop to my wife's and v.v. I use crontab to automatically do this at certain hours.&lt;br /&gt;Rsync is a wonderful protocol that only copies files that have changed, saving time and bandwidth.&lt;br /&gt;But sometimes many files are changed or added, and then the whole bandwith of my local network is used, slowing down other traffic.&lt;br /&gt;At these times even browsing the internet can become very slow, just because I am backing up some folders of new digital pictures.&lt;br /&gt;&lt;br /&gt;Rsync has its own '--bwlimit' option, but I wanted a better, more structured solution. And this solution is cbq.&lt;br /&gt;&lt;br /&gt;Basically configuring up cbq is done in three steps:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;1) Setting up cbq&lt;/span&gt;&lt;br /&gt;cbq is actually a script that can be found in the documentation of iproute2 in Slackware. We have to copy it to /sbin and make it executable:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;cp /usr/doc/iproute2-2.6.16-060323/examples/cbq.init-v0.7.3 /sbin/cbq&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;chmod +x /sbin/cbq&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;cbq expects its configuration files in /etc/sysconfig/cbq&lt;br /&gt;If this directory does not exist, create it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;mkdir /etc/sysconfig/cbq&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Creating the rules-file&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;cbq reads files in /etc/sysconfig/cbq with the following names:&lt;br /&gt;cbq-nnnn.yyy where:&lt;ul&gt;&lt;li&gt;nnnn: is a hexadecimal number from 0002 to ffff&lt;/li&gt;&lt;li&gt;yyy: is the name of your network interface, like eth0, eth1, etc&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In my case, the network interface for my local network is eth1, so I created "&lt;i&gt;cbq-0002.eth1&lt;/i&gt;"&lt;br /&gt;Here is the contents of my file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;DEVICE=eth1,100Mbit,10Mbit&lt;br /&gt;RATE=5000Kbit&lt;br /&gt;WEIGHT=500Kbit&lt;br /&gt;PRIO=5&lt;br /&gt;RULE=192.168.1.110:873,192.168.1.0/24&lt;br /&gt;BOUNDED=no&lt;br /&gt;ISOLATED=no&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Some explanations:&lt;ul&gt;&lt;li&gt;DEVICE: the interface you want to limit, with its real speed and its weight (1/10 of the max. speed)&lt;/li&gt;&lt;li&gt;RATE: the bandwith you want to offer for this particular application / port / address&lt;/li&gt;&lt;li&gt;WEIGHT: 1/10 of the RATE&lt;/li&gt;&lt;li&gt;PRIO: Priority setting. 5 is default&lt;/li&gt;&lt;li&gt;RULE: source,destination --&gt; in my case 192.168.1.110 is my desktop, 873 is the port rsync uses&lt;/li&gt;&lt;li&gt;BOUNDED: Default no, used if you have other filters&lt;/li&gt;&lt;li&gt;ISOLATED: 'no' means that the rate can be used by other traffic if not in use&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;3) Starting the bandwidth limiting&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Use &lt;b&gt;cbq compile&lt;/b&gt; to prepare the new filters or after you alter your cbq-nnnn.yyy files.&lt;br /&gt;Then use &lt;b&gt;cbq start&lt;/b&gt; to start your traffic-shaping!&lt;br /&gt;To always start cbq, include it in your rc.local script.&lt;br /&gt;&lt;br /&gt;You can monitor your results with iptraf or wireshark.&lt;br /&gt;&lt;br /&gt;More information can be found using "man tc-cbq".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-6795715034174952584?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/6795715034174952584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=6795715034174952584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6795715034174952584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/6795715034174952584'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/09/traffic-shaping-with-cbq.html' title='Traffic Shaping with cbq'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-3794274239496333385</id><published>2008-09-26T22:56:00.009-03:00</published><updated>2009-08-31T12:51:10.638-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Load Balancing two ISPs</title><content type='html'>Today I finally managed to use my two ISPs together on my desktop, combining both bandwidths into one big (almost 3Mbit!) pipe.&lt;br /&gt;&lt;br /&gt;My setup:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ADSL modem 1Mb down, 320Kb up&lt;/li&gt;&lt;li&gt;GSM modem 2Mb down, 512Kb up&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Configuring both at the same time is simple, but then we have two default gateways and our packets always go out through the first one found (or with the lower &lt;span style="font-style: italic;"&gt;cost&lt;/span&gt; as defined in the 'metric' parameter.)&lt;br /&gt;&lt;br /&gt;So how can we divide our packets over both links?&lt;br /&gt;&lt;br /&gt;Googling around I found several suggestions to use iptables.&lt;br /&gt;The general idea is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;use -m statistic in a chain to choose packets to use on of two links (either the 'nth'-method or the 'average'-method&lt;/li&gt;&lt;li&gt;set a mark on the packet&lt;/li&gt;&lt;li&gt;use an 'ip rule' to select a routing table for mark 1, mark 2, etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;That sounded like a perfect solution. This way I could really balance my two links like 40%/60% or whatever.&lt;br /&gt;&lt;br /&gt;But it didn't work...&lt;br /&gt;&lt;br /&gt;My desktop is not a router, so I have to treat the packets in the OUTPUT chain, where routing has already taken place. The above-described method works on Linux routers treating the PREROUTING chain in iptables, where we can mark a package before routing.&lt;br /&gt;&lt;br /&gt;So I studied IP ROUTE and IP RULES a bit more, browsing through the fantastic &lt;a href="http://lartc.org/"&gt;Linux Advanced Routing &amp;amp; Traffic Control&lt;/a&gt; site.&lt;br /&gt;&lt;br /&gt;I discovered that we can use 'nexthop' to 'hop' between several routes.&lt;br /&gt;After experimenting a bit I wrote the following script:&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# bal_local        Load-balance internet connection over two local links&lt;br /&gt;#&lt;br /&gt;# Version:         1.0.0 - Fri, Sep 26, 2008&lt;br /&gt;#&lt;br /&gt;# Author:          Niels Horn &lt;niels.horn@gmail.com&gt;&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;# Set devices:&lt;br /&gt;DEV1=${1-eth0}    # default eth0&lt;br /&gt;DEV2=${2-ppp0}    # default ppp0&lt;br /&gt;&lt;br /&gt;# Get IP addresses of our devices:&lt;br /&gt;ip1=`ifconfig $DEV1 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'`&lt;br /&gt;ip2=`ifconfig $DEV2 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'`&lt;br /&gt;&lt;br /&gt;# Get default gateway for our devices:&lt;br /&gt;gw1=`route -n | grep $DEV1 | grep '^0.0.0.0' | awk '{ print $2 }'`&lt;br /&gt;gw2=`route -n | grep $DEV2 | grep '^0.0.0.0' | awk '{ print $2 }'`&lt;br /&gt;&lt;br /&gt;echo "$DEV1: IP=$ip1 GW=$gw1"&lt;br /&gt;echo "$DEV2: IP=$ip2 GW=$gw2"&lt;br /&gt;&lt;br /&gt;### Definition of routes ###&lt;br /&gt;&lt;br /&gt;# Check if tables exists, if not -&gt; create them:&lt;br /&gt;if [ -z "`cat /etc/iproute2/rt_tables | grep '^251'`" ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "251    rt_dev1" &gt;&gt; /etc/iproute2/rt_tables&lt;br /&gt;fi&lt;br /&gt;if [ -z "`cat /etc/iproute2/rt_tables | grep '^252'`" ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "252    rt_dev2" &gt;&gt; /etc/iproute2/rt_tables&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Define routing tables:&lt;br /&gt;ip route add default via $gw1 table rt_dev1&lt;br /&gt;ip route add default via $gw2 table rt_dev2&lt;br /&gt;&lt;br /&gt;# Create rules:&lt;br /&gt;ip rule add from $ip1 table rt_dev1&lt;br /&gt;ip rule add from $ip2 table rt_dev2&lt;br /&gt;&lt;br /&gt;# If we already have a 'nexthop' route, delete it:&lt;br /&gt;if [ ! -z "`ip route show table main | grep 'nexthop'`" ] ; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ip route del default scope global&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Balance links based on routes:&lt;br /&gt;ip route add default scope global nexthop via $gw1 dev $DEV1 weight 1 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nexthop via $gw2 dev $DEV2 weight 1&lt;br /&gt;&lt;br /&gt;# Flush cache table:&lt;br /&gt;ip route flush cache&lt;br /&gt;&lt;br /&gt;# All done...&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can download the script &lt;a href="http://www.nielshorn.net/_lib/download.php?file=bal_local"&gt;here&lt;/a&gt; from my homepage.&lt;br /&gt;&lt;br /&gt;This is not the perfect solution, as routes are cached, so once you connected to an external site, it will continue to use the linkt hat was originally selected.&lt;br /&gt;So an FTP download won't benefit from this solution, but torrent downloads will, as they use several parallel connections.&lt;br /&gt;&lt;br /&gt;I tested the result and managed to download using BitTorrent with the incredible speed of 250KBytes/sec:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q65cj3yCRO4/SN2X_YG_xTI/AAAAAAAAAC8/cLBgvFWSdpg/s1600-h/snapshot1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_q65cj3yCRO4/SN2X_YG_xTI/AAAAAAAAAC8/cLBgvFWSdpg/s320/snapshot1.png" alt="" id="BLOGGER_PHOTO_ID_5250519855643215154" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-3794274239496333385?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/3794274239496333385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=3794274239496333385' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3794274239496333385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/3794274239496333385'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/09/load-balancing-two-isps.html' title='Load Balancing two ISPs'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q65cj3yCRO4/SN2X_YG_xTI/AAAAAAAAAC8/cLBgvFWSdpg/s72-c/snapshot1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4670131101708278676.post-4429272610709222428</id><published>2008-09-26T21:21:00.002-03:00</published><updated>2008-09-26T23:28:03.578-03:00</updated><title type='text'>Blogging...</title><content type='html'>&lt;span style="font-size:85%;"&gt;I never wanted to start a blog, for several reasons, but mainly because:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;I do not have the time to write regular posts&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;I really do not have too many interesting facts to share with the world&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;But it seems that nowadays &lt;span style="font-style: italic;"&gt;everyone&lt;/span&gt; is blogging all over the world. My wife - who really isn't into computers that much - has a &lt;a href="http://ocantinhodaborboletaazul.blogspot.com/"&gt;blog&lt;/a&gt; and even my son started one.&lt;br /&gt;But hey, I'm self-assured enough to not feel left out yet ;-)&lt;br /&gt;There are other things in life than computers...&lt;br /&gt;&lt;br /&gt;I do like to write in forums and newsgroups. I go there to ask questions and to share ideas, solutions, help other people, etc.&lt;br /&gt;Once in a while I write an article about something I found out, a problem I solved or just to receive constructive criticism.&lt;br /&gt;&lt;br /&gt;Then some people suggested again I should put these articles in a blog, so that other can find them more easily.&lt;br /&gt;&lt;br /&gt;Well, OK, I'll give it a try.&lt;br /&gt;&lt;br /&gt;I have lots of stuff here that I wrote down in text files that I might transform into posts in this blog.&lt;br /&gt;&lt;br /&gt;Maybe I'll even start enjoying it ;-)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4670131101708278676-4429272610709222428?l=nielshorn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nielshorn.blogspot.com/feeds/4429272610709222428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4670131101708278676&amp;postID=4429272610709222428' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/4429272610709222428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4670131101708278676/posts/default/4429272610709222428'/><link rel='alternate' type='text/html' href='http://nielshorn.blogspot.com/2008/09/blogging.html' title='Blogging...'/><author><name>niels.horn</name><uri>http://www.blogger.com/profile/17580941921421597835</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://4.bp.blogspot.com/_q65cj3yCRO4/STKvAUuigaI/AAAAAAAAAOw/VnDeD49_0b0/S220/Niels.jpeg'/></author><thr:total>1</thr:total></entry></feed>
