Search Results: "tar"

18 July 2007

Russell Coker: Religion and Cars

The Catholic Church has recently issued a set of 10 road commandments. Number 9 is “On the road, protect the more vulnerable party” which ties in with an article by Barney Zwartz published in the religious column of The Age about the spiritual issues related to 4WD cars. Barney makes better points than the Catholic Church starting with “How can Christians living in suburban Melbourne justify getting around in huge four-wheel drives? It’s harder to imagine a more “me-first, up yours” statement to the rest of the world*“. He also links to a report by the Australian Academy of science showing that 4WDs are less safe for their owners (which fits the theory of some Christians that bad actions tend to get punished in this world as well as the next).

Simon Richter: Random embedded Debian rambling

Currently, there are two kinds of "special" source packages in use in the embedded world:
the toolchain package
needs a third system type and builds differently for each. We currently handle that with a script with intrinsic knowledge about the package being built
the target runtime
is target, but not host specific, and is built from a regular package with dpkg-cross
The plan for tonight is to work towards autobuildability.

Mario Iseli: Debian14th

Hello World, I’m organizing a little birthday party for the Debian project in Switzerland, G rkan created a Wikipage where you will be able to find more information in a few days, if you also want to have an event also link it on the Wikipage. Happy international celebrating :) Thanks to debian.ch for food/drink sponsorship.

Russell Coker: IEA predicts global oil crisis

The ABC reports that an oil shortage is predicted soon. The International Energy Agency predicts that oil supply problems will start within the next five years. Oil production has been dropping over the last two years (we have passed the “peak oil” point) and demand is steadily increasing. Regardless of wars oil prices will increase significantly in the near future. According to the Australian Bureau of Statistics the average age of Australian cars was 10.7 years at the end of 1998. So the vast majority of the current fuel-hungry cars on Australian roads will still be in use in five years time - if the owners can afford them. The government needs to start providing tax incentives for fuel efficient cars and to end tax incentives for inefficient cars. Currently 4WD vehicles have reduced taxes and the tax deduction for a business car is based on the engine size (get a less efficient car and get a bigger tax deduction). The government claims to be protecting the economy (at the expense of the environment). But with the way things currently work the economy will be destroyed in less than five years. Even though the government cares little for the environment (in spite of the effect that climate change is having on farmers) they need to do something if they want to fulfill their claims of protecting the economy! Thanks to Chris Samuel for informing me of this.

Fabio M. Di Nitto: More LDOM love

I finally decided to publish the few hacks I am using to run Linux on SUN's LDOM.
They are not pretty but they do the job done for me.
I take 0 responsibility for them so use them at your own risk.
Use this HOWTO only if you are dealing to mess with your system. Do *NOT* use for production systems if you do not understand what you are doing Step 1: read all the possible LDOM documentation that SUN made available for you. Step 2: understand that this is all experimental software. Step 3: repeat 1 and 2 a few times. LDOM server in Solaris allows to export 3 kind of block devices (file, partition/slice, entire disk) to the guest and those are seen as virtual disks.
The guest cannot really feel the difference but it is important to understand the way in which the LDOM software plays with them.
I did *not* test the export for partition/slice and my hacks do not know how to cope with it. You have been warned. The problem: LDOM virtual disk daemon mangles partition tables In an attempt to make sure that the partition tables exported to the guests are sane, the daemon ends up trashing valid ones because the check it forces to the devices is too strict and it behaves differently if the device is a file, a partition/slice or an entire disk.
The ldm bind operation is the dangerous one to perform and that can kill your partition table for good.
How ldm bind operation work: - for entire disks: * check device partition table
* fix device partition table if check fails
* lock device
* export device to guest
* store status of device once it is validated and do not check it ever again
- for files: * check device partition table
* fix device partition table if check fails
* export device to guest
Remember that I did *not* test export of a slice and that my hack does not take it into account. You have been warned twice. Limitations of the workaround First of all I assume that you installed LDOM 1.0 in the standard path (/opt/SUNWldm/) otherwise you might need to change the script manually to match an alternate path.
Each guest is using the same kind of devices. The workaround does not yet how to cope with exports of files and partitions to the same guest.
You know how to use dd and some other basic tools.
If you start playing with bind/unbind operations manually and things break, you keep all pieces.
How to This list of operation sounds extremely complex, but it is not and it is required only at the first install time and possibly to update your partition table backups if you decide to change them. The changes to the ldom init script will take to restore the last known to work partion table on each reboot. NOTE: if you fail to follow these instruction and do not use valid configuration entries or backup partitions, LDOM might not start anymore or even core dump. TAKE EXTREME CARE (and learn how to reboot into factory-defaults at SC/ALOM)

1 - get the few files from here. This html file is there too for your convenience.
2 - ldmd_start is the newly modified init script for LDOM. It should be placed in /opt/SUNWldm/bin and made executable. Note that if there is no configuration file or the configuration file is empty nothing will happen and you will be running the exact same script as the original. ldmd_start.orig and .diff are there for your convenience to check that I did not add a root kit ;).
3 - ldom.linux is an example configuration file that you want to place in /etc.
4 - mkdir /.ldom.linux , we will use this directory to store the backup partition tables.
5 - decide what kind of device you want to export.
Follow steps 6 and 7 if you decided to use a full disk as device and skip to 8 if you are using a file 6 - Use the format command from Solaris and make sure to label and format the disk.
7 - Take a copy of the clean partition table.
Example: dd if=/path/to/device of=/.ldom.linux/$guestname-$(basename /path/to/device).format count=1 bs=512
So let say that your guest is called foo1 and you are exporting /dev/rdsk/c1t1d0s2 you will issue the following command:
dd if=/dev/rdsk/c1t1d0s2 of=/.ldom.linux/foo1-c1t1d0s2.format count=1 bs=512
Continue from here if you are exporting a file 8 - Configure your LDOM guest following the LDOM administration guide.
9 - Netboot and install Linux in the guest.
10 - Before rebooting into the installation, halt the guest and unbind it. The unbind is required to unlock the exported device for read.
11 - Take a copy of the partition table that has been created by Linux.
Example: dd if=/path/to/device of=/.ldom.linux/$guestname-$(basename /path/to/device).backup
Following the above example: dd if=/dev/rdsk/c1t1d0s2 of=/.ldom.linux/foo1-c1t1d0s2.backup count=1 bs=512
or
dd if=/path/to/file of=/.ldom.linux/foo1-file.backup count=1 bs=512
12 - Edit the configuration file in /etc that you installed at step 3.
Each line contains:
guest_name disk1 disk2 ...
NOTE: you do not need to add entries for Solaris guests. Only Linux guests are required! Empty lines are skipped, no comments are allowed in the file.
Follow steps 13 to 19 if you are exporting a disk 13 - Restore Solaris partition table:
Example: dd conv=notrunc if=/.ldom.linux/$guest-$(basename /path/to/device).format of=/path/to/device bs=512 count=1
14 - Bind the guest
15 - Unbind the guest again. HINT: this is the most important step here because LDOM disk server now has validated the partition table and it will not check it again.
16 - Restore Linux partition table:
Example: dd conv=notrunc if=/.ldom.linux/$guest-$(basename /path/to/device).backup of=/path/to/device bs=512 count=1
17 - Bind the guest again.
18 - Start the guest.
19 - Enjoy.
Follow steps 20 to 23 if you are using a file 20 - Bind the guest
21 - Restore Linux partition table:
Example: dd conv=notrunc if=/.ldom.linux/$guest-$(basename /path/to/file).backup of=/path/to/file bs=512 count=1
22 - Start the guest.
23 - Enjoy.
This said, the script will allow you to reboot the controller without having to worry about Linux guests and it should ensure that LDOM will always start properly. LDOM stores the status of a guests in the Machine Description and we will use this status to restore the partition tables too. If the guest is in either bind or active status, we will take proper actions to stop/unbind/restore/bind/start. If the guest is in unbind state, we will do nothing because we do not know why is in that state. The script also is not error prone. Failing to stop or unbind the domain, to perform restore partition table operation, might cause LDOM to abort and can require manual fixing but the above information should be enough for any experienced user to recover. Have fun

17 July 2007

Russell Coker: Correspondent Inference Theory and the US

Bruce Schneier writes about Correspondent Inference Theory which deals with situations when the motives of an individual or group are inferred by the results of their actions. Both his article and the MIT article on which it is based only consider the results of terrorist actions against the US and allied countries. I believe that this is a serious mistake by Bruce, the MIT people, and most people who write about terrorism. The most sensible writing about Terrorism is by Noam Chomsky. Noam considers the definition of Terrorism in both propaganda and literally. By the literal definition of terrorism the US government is responsible for more than it’s fair share of terrorist acts performed around the world. There is no reason to believe that people in the Middle-East are any less intelligent than people in the US and Europe. It seems obvious that some of the people who’s countries are destroyed by violence sponsored by the US government will believe that the US is entirely inhabited by blood-thirsty monsters. The number of US citizens who realise what their government does and approve is very low as is the number of Muslims who know what Al Quaeda does and approve of it. The US government claims that it wants democracy in the Middle-East, and Osama bin Laden claims to want the US military out of the Middle-East. If the US forces were withdrawn from Saudi Arabia then it would probably lead to a significant increase in democracy in the region (it couldn’t get any less democratic) - both sides could get what they claim to want. The discussion of the MIT paper seems to be largely based on the fact that Correspondent Inference causes the US government (and other governments) to decrease the probability of doing anything that might meet the terrorist goals. But no-one has mentioned the possibility that the same may apply to the probability of non-state organisations doing anything that might meet the goals of the US government. The wars in Iraq and Iran have significantly decreased the capabilities of the US military, they can’t recruit enough new soldiers and the current soldiers have reduced effectiveness due to long tours of duty with short breaks. The US economy is stagnating partly due to the direct effects of financing the wars, partly due to the way the airline security theatre has hurt trade and tourism, and partly because everyone has been concentrating on other things instead of fixing the economy. When two states have a war there is always the possibility of it being ended by a peace treaty or one side surrendering. With modern communications fighting can end in a matter of hours after a cease-fire has been arranged between states. But when non-state forces are involved things become much more difficult to manage. A state can make a deal with one non-state group only to discover that another non-state group (or a dissident faction within the original group) doesn’t like the treaty and continues fighting. With non-state terrorist acts connected to Al Quaeda in the US, the UK, Spain, and Indonesia (and more acts apparently planned in other countries) it’s obvious that we aren’t going to get a clean or quick solution to this problem. It seems to me that the only way the US and allied countries can escape from Correspondent Inference is to withdraw from the Middle-East entirely. If the people of Iran or Palestine want to elect a government that you don’t like then let it go (that’s what democracy is about anyway). If a dictator seizes control of Iraq then either leave him in control or provide air-support to any province that wants to rebel and establish a democratic government. Either make a stand on the principle of support for freedom and democracy or do nothing on the principle of letting people in other countries sort out their own problems. An invasion for the wrong reasons might fool people on the other side of the world but is unlikely to fool many people who live in the target country.

Matthew Palmer: The Trials of Browsers

Since I'm a member of the set of people "somebody better suited to explaining it" mentioned in Silvia Pfeiffer's "A Long Story of Logins", I suppose it falls to me to explain what the hell we actually did to make the thing work. A quick recap, for anyone who hasn't read Silvia's article: the Vquence website is a very AJAXy, Web 2.0 style video socialisation site. Since we want the site to be available to all as much as possible, we don't lock any part of the site away behind a "login required" page unless we absolutely have to. An unpleasant side effect of this is that, when it does does come time for you to login, pushing you off to a separate "please login" page is going to be, well, a pest. There's all sorts of state about what the user is up to (it's a web-based video mashup creator, after all) that we need to submit -- but only after the user has logged in. Enter the realm of the Web 2.0 Login. Instead of sending the user to a login page, getting them to login, and then redirecting them back to where they want to go, you just have some sort of popup form that, when submitted to, does a background request and logs the user in behind the scenes. This isn't a new concept by any means -- for example, try voting up or down a link on reddit when you're not logged in. However, most sites that implement this sort of thing (based on our brief informal survey around the office) don't protect the password information in any way -- it goes over the wire as a plaintext HTTP request. We don't like this, so we wanted to send the login form over HTTPS. And there began our problems. The trivial implementation of a Web 2.0 Login page is as you'd expect -- the AJAX stalwart, XmlHttpRequest, POSTing to a handler somewhere that validates the login, sets a session, and sends back some javascript to change the page layout a bit to show you're logged in. We had this working nicely, until we started testing on our staging environment, where HTTPS comes into play... You see, XmlHttpRequest doesn't like making a request to a domain other than the one that the main page comes from -- for security. It also thinks that the same hostname via a different protocol counts as a different domain, for the purposes of this security check. (I can see the theoretical reasoning for it, but it is a bit weird for HTTP to HTTPS transitions) So if you want to POST to https://www.vquence.com/something using XmlHttpRequest, you need to be doing it from a page which is retrieved from somewhere in https://www.vquence.com/ as well. We considered just turning on HTTPS across the board, but that would have all sorts of unpleasant ramifications, so we decided against that. But the problem remained, how do we get the user's credentials to our server in a secure manner with a minimum of unpleasantness? We came up with all sorts of options. This is where the infamy of "bug #93" started -- it's a monster of a bug log. Lots of it is me going "we could do this, but it'd suck, or we could do this, but it would suck". Finally, Silvia (I think) suggested we look at using an iframe. "Eeew" was the general response, but it might at least give us a way to set a part of the page to HTTPS, which we could use as a launching point for our XmlHttpRequest call. While researching how to make this all work (I had, to my great pride, never inflicted an iframe on the world before), I managed to come across a few articles on how you can use a hidden iframe to handle requests instead of using XmlHttpRequest. Basically, the trick is that you do a regular POST on your main page, but set the target of the form to a hidden iframe in your page. A general discussion of the principle is available At the Apple Developer site, and there's also a Rails plugin that implements the concept rather nicely. When I found these, I briefly danced for joy. My quest was over. POST to the iframe, the iframe get some JS back from the server, JS mangles the main page's layout to show the user is now logged in... aaaand profit. Like fun it was. My implementation was short and sweet -- a true work of genius (if I do say so myself). Everything worked like a charm. Until we got it back into staging. Then cross-domain security bit me again. Naturally, if you don't want XmlHttpRequest calls to perform cross-domain, you probably don't want iframes for different sites to be manipulating each other's content either. That's exactly what happened -- the iframe can't manipulate the main page's layout as we need it to. Why I didn't think of this before I charged mightily ahead I don't know. My only defence is that I've never claimed to be a web development guru. Sneaky tricks will defeat any security measure, though. For instance, we control both sites (http and https), so we can send the user back to the unsecured site after login and then that location (still in the hidden iframe) can manipulate the main page layout. Redirect to the rescue! That worked really well in Firefox, even with HTTPS in staging. We were saved. At least until IE came along. Bloody Microsoft, ruining all my cunning plans. IE complains when a HTTPS site redirects (using the Location HTTP header) to a HTTP site. You apparently can't turn this off. I was shocked that Microsoft cared so much about their user's data security -- it's certainly not the first thing I think of when I think "Microsoft". My faith in the world was restored when Silvia pointed me to a workaround for the problem -- if you send the redirect in a <meta http-equiv="refresh"> tag instead of a Location header, IE is more than happy to let it pass. Because obvously a chunk of HTML that says "HTTP equivalence" is completely different to a HTTP header. Sheesh. To snatch defeat from the jaws of victory, after all this brilliant hacking, I managed to make a newbie error with the contents of the http-equiv by setting the content to "0;http://www.vquence.com/blah" instead of "0;url=http://www.vquence.com/blah" (note the url=, because I sure didn't). IE complained by looping infinitely on the source URL, while Firefox just made sense of it and did the right thing. I managed to waste most of an hour of three of us over that little stuff-up. Go me! (Sorry about that guys, by the way) Feeling very chuffed, I went home for the evening. The next morning saw a browser compatibility defect in my queue -- Safari didn't like the new setup. Instead of doing the right thing, clicking on the login button would create a new tab instead of logging in. The fix? Changing the style of the hidden iframe from "display: none" to "width: 1px; height: 1px; border: 0" did the trick. Fark. So much for "hidden" iframes. What's particularly funny is that Apple's own tutorial on hidden iframes says to avoid "display: none" because NS6 doesn't like it, but doesn't mention it's own glaring deficiency in this area. So, what are the lessons learned?

Simon Richter: Now it shouldn't restart from the beginning on errors :-[

I should really compile my toolchains in winter... Well, a few hours later and a few watts warmer, I now have cross binutils for all relevant releases of the two major distributions using the .deb format. The rest of the build is now going to run over night. In other news, binutils can not be built inside testing, as dejagnu is currently RC buggy.

Wouter Verhelst: Joshua Bell: followup.

I was still getting responses on my Joshua Bell in the subway article today, weeks after I posted that. This was unusual, so I started investigating. Turns out Fark.com links to it, and many people find their way from there. Hi! Anyway, the latest comment on that item contains this gem:
There is/was a street musician here in Boston who played the most amazing slide guitar I have ever heard. He is also filthy, unkempt, rude, and generally angry at the commuters who he clearly feels owe him more of their attention. It would be wrong to assume that his failure to draw crowds is due solely to the public's inability to appreciate music.
Right on! My point exactly.

Marc 'Zugschlus' Haber: From the personal Inbox of the exim4 maintainer

The DDs reading this might know the situation: You are subscribed to a gazillion of mailing lists, and spend quite some time answering questions of people using your packages. That’s fine, service to your users. Occasionally, users take great pains in finding out a personal mail address (for example, by googling, and finding the webmasteridiot mail address on my personal web page) to ask their question in private e-mail. This prevents the answers from showing up in mail archives and deprives the public of a possibility to find a solution to this question themselves in the future. Today, I had this happen to me twice. In the morning, I received a question about exim4 in private e-mail. In German. I investigated the user’s problem (which looked interesting enough), found two minor issues in the Debian exim4 packages and upstream exim behaving not as expected. I fixed the two issues in the package and reported the unexpected behavior of exim to the upstream mailing list. I then reported this - in German - back to the person who asked the question. Time from incoming message to outgoing report was like 80 minutes, most of which I spent with this user’s issue. On my personal time. A short while afterwards, I found out that this person has waited a mere eleven minutes before asking the same question on pkg-exim4-users, this time in English. Had I known before, I would have drafted my answer in English as well, to have the answer publicly visible. By doing this double post, the user has deprived the public of my answer. I’m probably going to stop answering questions asked in private mail. I might draft a boilerplate answer along the lines of “I don’t answer questions asked in private mail unless I am being paid to do so. You might be better off by asking one of the numerous mailing lists that are available on the Internet. I read a lot of them, might see your question, and you might get an answer from me. But otoh, there are many more knowledgeable people on these lists, and you’d want them to see your question as well.” Or I just might hit Delete on questions in my private inbox. The “Delete” approach has become more attractive this afternoon after I pulled the following (anonymized) from my personal Inbox:
Great job breaking exim4 on my system with no easy way to fix it.
$ /etc/init.d/exim4 start
Starting MTA:DEBCONFsomethingDEBCONF found in exim configuration. This
is most probably
caused by you upgrading to exim4 4.67-3 or later without accepting the
suggested conffile changes. Please read
/usr/share/doc/exim4-config/NEWS.Debian.gz for 4.67-2 and 4.67-4
2007-07-17 11:31:57 Exim configuration error in line 25 of
/var/lib/exim4/config.autogenerated.tmp:
  malformed macro definition
Invalid new configfile /var/lib/exim4/config.autogenerated.tmp, not
installing
/var/lib/exim4/config.autogenerated.tmp to
/var/lib/exim4/config.autogenerated
I’ve been running exim4 v4.63 for awhile now and only have you bugger
exim4-config it doesn’t work.
I mean, this user has Sorry, but: How stupid can people be? I think I’m going to stop being responsive to users. They’re not worth the blood pressure.

Gunnar Wolf: Repurposing laptops

Russell argues (when talking about Mark's proposed high-end Free Software-based laptop) that laptops are hard (or expensive) hardware to modify and repurpose - Maybe your laptop will one day go to your child or something like that, but it's hard for it to be a server.
I disagree.
One of my most faithful and most beloved home servers was my old laptop, a Compaq Armada 4120 we originally got (used, for that matter) in 1998 and that was my main laptop until 2002, when I got my first Dell. 120MHz Pentium, 16 MB RAM (later upgraded to 32), 2GB hard disk.
From 2002 and until around 2005, it was my home server - Think about it: A low-power, compact machine you can store anywhere, and that has (still today! Wish I could say that for ~2 year old machines...) a two hour battery with the LCD on. We swapped the hard disk for a 40GB one around 2003, and it was just perfect for DSL sharing, Samba file serving to our internal network, and simple, personal HTTP server. Of course, it started aching when Nadezhda and I started running our blogs - MySQL and Apache didn't fit in the memory at the same time :)
For some months, we had an old 1GHz Athlon as our server, but it was too noisy and ate too much electricity - We now have a nice Mac Mini, but share the UPS with Nadezhda's main machine. Which is fine, but takes a bit off the coolness factor :) Oh, and -of course- it does not have a built-in screen anymore. Nadezhda uses an iMac, so whenever we need to directly use the server, I have to go find our clunky 17" CRT and work sitting on the floor...

Russell Coker: Testing STONITH

One problem that I have had in configuring Heartbeat clusters is in performing a STONITH that originates outside the Heartbeat system. STONITH was designed for the Heartbeat system to know when a node is not operating correctly (this can either be determined by the node itself or by other nodes in the network) and then force a hardware reset so that the non-functional node will not interfere with another node that is designated to take over the service. However sometimes code that is called by Heartbeat will have more information about the state of the system than Heartbeat can access. For example if I have a service that accesses a filesystem on an external RAID then it’s common for the RAID to track who is accessing it. In some situations the RAID hardware has the ability to “fence” the access (so that when machine B mounts the filesystem machine A can no longer access it). In other situations the RAID may only be capable of informing the system that another machine is registered as the owner of the device. To solve this problem a machine that is to mount such a device must either prohibit the previous owner from accessing the device (which may be impossible or unreasonably difficult) or reset the previous owner. Until recently I had been doing this by writing some code to extract the STONITH configuration from the CIB and call the stonith utility. The problem with this is that there is no requirement that every node be capable of performing a STONITH on every other node, and that even if every node is are designed to be capable of rebooting every other node a partial failure condition may restrict the set of nodes that are capable of performing a STONITH on the target. Currently the recommended way of doing this is via the test program. Below is an example of the command used to reset the node node-1 with a timeout of 20000ms and the result of it being successfully completed. I have suggested that the Heartbeat developers make an official interface for doing this (rather than a test of the API) and I believe that this is being considered. In the mean time the following is the only way of doing it: # /usr/lib/heartbeat/stonithdtest/apitest 1 node-1 20000 0
optype=1, node_name=node-1, result=0, node_list=node-0

David Moreno Garza: DebConf8 official training started!

So, my official training for DebConf8 has just started! What is this training about? Well, since a couple of weeks ago, I had seen a little Argentinian restaurant two blocks from my place. It is not new to find Argentinian places on the area, specially on La Condesa, where lots of foreigns reside within Mexico City. Argentinians are known in some circles, because they usually take their dogs for walking on Parque Espa a, Parque M xico and the neighborhoods nearby (not that Mexicans don’t walk dogs, it’s just a bit more stereotyped for Mexicans to put dogs on the roofs of buildings and not taking very good care of them). Anyway, since I live on Roma Sur, which is just crossing Insurgentes avenue away from La Condesa, it is also a crowded neighborhood (which is more like a family-kind area), the nearest Argentinian place was this, Che Charr a. I had no idea where I could have a nice cheap lunch, so I headed there. The prices were not nuts, but it wasn’t cheap as eating in the street, of course. Che Charr a is a small place, they have like five tables inside, and two or three outside on the sidewalk. I ordered a Bah a Blanca meal, which was basically, three empanadas (you could choose between ham and cheese, meat, chicken and corn/cheese), a couple of cups of fresh water and a dessert flan (which name I just can’t remember, but it was Argentinian typical). The Mexican part couldn’t be left aside, that’s why they offer chimichurri or spicy sauce :) Besides, they give jamaica-water (which is some kind of juice of a Mexican flower, which is delicious, DebConfers could probably had some on DC6, I bet you can only find it here). At the end, I ordered a black-chocolate alfajor, which was extremely delicious, but cold, since it was on the fridge. So, that’s my training: Getting ready for DC8/Argentinian food! After a quick chat with ASCIIGirl, I’ve decided to take this a bit further, I’ll be going to Che Charr a or other .ar restaurants, at least once every two/three weeks and have something different each time, take pictures of places/dishes, etc. My official Argentinian food training! Who joins the challenge?

MJ Ray: A few small pieces of recycling news for me to recycle:

The Weston Mercury repeats that a Recycling review will be carried out as a result of "staff will just take it for granted that green waste is in the green lorries" allegations, but no new news. Guardian: Fortnightly collections not always the answer, say MPs so hopefully that will discourage any more one-measurement-fits-all moves. Centred on Cambridge, cam.misc posters are describing what really happens when your recycling gets missed Meanwhile, the WWN reports about The 300K Mistake so I think some signs may need recycling. Come back Tea's - your town needs you!

Chris Lamb: Updates

On the subject of conferences, I’m also planning to attend AngloHaskell, LinuxConf Europe amd PyCon UK. Let me know if you want to meet up or need a place to crash.

Joey Hess: on storing Debian packages in subversion

(Or the unfortunate story of why I am not yet participating in the Debian games or perl teams.) I'm a big fan of both the Debian games and perl teams. The games team keeps finding new and interesting games and flowing them into Debian. The perl team is responsible for a rather amazing quantity of perl modules. Since I maintain both some games and some perl modules, I've looked at participating in both teams from time to time. I think it's odd that the reason I haven't been able to do so in both cases comes down to something as basic as how they use their subversion repositories.
In the case of the perl team, they have a fairly standard use of subversion, as explained in their guide. The problem is repository layout. They chose to use the "package/ trunk,tags,branches " layout rather than the " trunk,tags,branches /package" layout. This means that it's not easy to check out the source for every package in the repo all at once. Having all the sources checked out is a prerequisite for many kinds of work that span all packages. In my work on the d-i packages, which are in a repository using the latter structure, I often grep all the packages for a problem, and fix the problem in every package. To manage this with the debian-perl repo, I'd either have to check out the whole thing, with who knows how many gigabytes of tags, or I'd have to construct and maintain an svn:externals list that checked out the trunk of every package. (Open offer to the perl team: I'd be happy to reorganise your repo for you.)
The games team uses the " trunk,tags,branches /package" repo layout, which is nice. But they have a policy of not keeping all upstream files in subversion at all. They prefer to only keep files that are patched in subversion, to save space. That looks on the surface to be a nice space optimisation, especially for space-hungry game data, but from what I tell, what it saves in space, it loses in complexity and maintainer time. And my time is much more valuable than alioth's disk space. It's also very debatable how much space this saves at all for games. I keep uqm and all its data files in one subversion repo. I have 4 years of history of all of upstream's changes to the files in there, and it takes 165 mb of data. Which sounds like a lot, but the files in trunk alone take 170 mb to check out (not counting .svn directories)! And the games team is also storing upstream tarballs in a directory on alioth. One tarball per release, often multiple releases per game, 2.0 gb of tarballs in all. Would it really use much more space in svn? Even if it used 10x the space somehow, is 20 gb even worth worrying about? I think not. (Open offer to the games team: I'd happily do the grunt work of checking in upstream sources for all the games in your repo.) (Update: I realized after posting this that while the space gains on alioth might be illusory, there is certianly a space gain for people checking the whole repo out. What's really needed is a way to keep all the upstream sources in svn, but check them out only when wanted, and check out all the debian directories for cross-game work. Hmm..)
I also checked out one other big package repo, collab-maint. The policy for collab-maint's repo uses the same structure as the perl team's repo. However, I doubt I'd ever want to check out all of collab-maint or do group maintenance across it, so that's not a big deal. The documentation also recommends not storing upstream sources in svn, although I've found a lot of packages in the repo that do. I could probably dump in ~100 mb of subversion history for 50-odd packages without anyone caring ... right?
It's interesting that all three of these big subversion repos have their own custom policies for how to use their repo. Having different policies for each repo results in more complexity and a higher learning curve. I wager that 99% of all the packages in these repos are pretty stock in their packaging and can be pretty easily understood and worked with by most Debian maintainers. We've have de-facto standards and policies that they all use. Until you get down to the repos, which, despite using subversion each seem to need to go their own way for some reason.

MJ Ray: A bugfix for putting the Tour de France commentary on your root window

Kevin Mark commented:
"pamflip does not seem to be in the fiesty netpbm package nor does it seem to show up in packages.ubuntu.com."
Huh? Ah. Ow! Once again, I fall freely into a freedom freefall. It seems that netpbm is not the same as debian's netpbm (also used by ubuntu) and the machine providing my root window is currently using netpbm rather than debian's one. (Why? Not sure yet. It annoys the hell out of me, because every man page refers to a web page.) Apparently debian has its own netpbm because
"Upstreams and debian goals differ in some aspects too much to build the package on upstream versions"
How? In what way? No further explanation is linked. Anyone got a good intro to the history of this? Any road up, it seems that debian's netpbm doesn't (yet?) have pamflip, but it does have pnmflip. I've changed the script to match.

16 July 2007

Annabelle Tully: Continuing adventures

After getting to Amsterdam and spending some times with some of my friends for a couple of days, we decided it was time to get to Valencia to visit Jordi.
We ended up getting to the train station in Amsterdam about half an hour before the train left, and we found out we needed a reservation. Dave ran off to the ticket office, where there was a HUGE queue, but Dave being Dave, a polite englishman, didn’t push his way to the front to reserve before the train left, so we ended up jumping on the train without reservations.
In Belgium somewhere, I forget where, we were booted off the train. We ended up getting reservations for another train to Lille, where we also were stuck for a while trying to figure out how to get to Paris.
No seats left, so we had to buy fullprice ticket on some other ridiculous train.
After a long and uncomfortable trainride to Paris, we went to see a very nice French girl who was the daughter of Daves godmother. We spent the night, and decided to catch the early train to Valencia in the morning. Which ofcourse we missed having not slept properly for all too long.
We got to the train station a few hours before the train to Valencia left, but however, there were no seats left, so we could not reserve.. Ended up finding a different route through Port Bou (However you spell that), on a night train with beds. This was the first awesome train ride so far. We had an entire six-bed cabin to ourselves, and spent the night looking out on the starfilled sky through beautiful France. As we arrived Port Bou, there was a free train to Barcelona, which was filthy, crowded and hot.
But hey, free after all. We also reserved tickets fo Valencia. We spent the day on the beach of Barcelona getting REALLY sunburnt (I’m gonna be so tanned, totally worth it), and jumping in the waves of the sea. We finally got to Valencia at around 00:30, having to wake up poor Jordi for guidance on how to get to his place. And then again waking him up at around 01:00 because the taxi driver dropped us off at an
identical spot a few blocks down, confusing the hell out of everyone. But here we are! Now on Jordis
balcony, sitting here with our laptops. Finally an actual holiday.
Btw: I am FLYING back.

Zak B. Elep: First Day Morphs

I seriously lack originality on that title above. Nevertheless, that gives some clues on what I’m up to: I rode my first airplane flight ever to Cebu with Jerome last Sunday to meet up with the rest of the pioneering team of Winston’s new startup, Morph Labs. Since it was a Sunday, there wasn’t much talk about work, but we did get to play with some of the new stuff we will be using, like Macbooks, iPhones, Airports, and a Mac Mini. Hint-hint indeed :P Thus began the first day, on a Monday. We got up to speed (from a 3-to-7 AM hibernate,) configuring the rest of the Macbooks, getting the HSDPA modems to work, laying out an ad-hoc WiFi net for the moment, and starting to plan out the directions the company will take. So far, so good. More to come, on Second Life Morphs. (I seriously need to express myself better.)

Uwe Hermann: Flashing a BIOS the Linux Way (tm) using flashrom

There are a gazillion HOWTOs out there for flashing a BIOS image without having to resort to ugly "boot DOS from floppy" or "run Windows *.exe file from BIOS vendor" and other ugly stuff. Unfortunately, the proposed solutions are equally ugly (e.g. creating custom CD-ROMs which contain the "floppy" with DOS/Windows flash tools). Folks, this is so much simpler than you think: The flashrom tool (GPL'd, written for LinuxBIOS purposes, but works perfectly fine with proprietary BIOSes, too) will easily do what you want, on a running Linux system. No floppy crap, no CD-ROM crap, no DOS/Windows crap, no rebooting crap. Install it:
$ apt-get install flashrom
Detect whether flashrom knows about your chipset/mainboard/BIOS chip:
$ flashrom
Read the BIOS image into a file:
$ flashrom -r backup.bin
Write a BIOS image (proprietary or LinuxBIOS) on the ROM chip:
$ flashrom -wv newbios.bin
WARNING: This will overwrite your current BIOS! Make sure you know what you're doing! For the Debian-challenged, flashrom is available in source form too, of course:
$ svn co svn://linuxbios.org/repos/trunk/util/flashrom
$ cd flashrom
$ make
The list of supported chipsets, mainboards, and ROM chips is limited of course, but it's constantly expanding. Contact us on the LinuxBIOS mailing list if you want other hardware supported (or even better: if you have patches!). In many cases adding support for new hardware is pretty easy...

Next.

Previous.