Search Results: "tar"

30 July 2008

Romain Beauxis: Liquidsoap 0.3.8 released.

Liquidsoap 0.3.8 has just been released. Initially targeted as a bugfix release, fixing a nasty race condition in playlist sources, this release is finally more important. It can be seen as the first minor release after the major changes that occured in 0.3.7. Several issues where fixed, but also new functionalities have been added, mostly on users' request. We also had a nice beer two weeks ago. There, we have met some users as well as developers. This was a nice occasion to discuss (...)

MJ Ray: SPI Election Result and Apology

Regular readers may remember that I stood in the board election of Software in the Public Interest, the main democratic free software corporation, a few weeks ago. Well, the result is posted with David Graham and Jimmy Kaplowitz are re-elected. Well done and good luck to both. Thanks to the other board members for running the election and restarting the voting machine as necessary. The postponed July meeting might happen in irc.oftc.net #spi today (Wednesday) at 1900UTC, but I expect they’ll announce it in the usual place before it happens. Naturally, I’m disappointed that more news, members’ panels and the annual report weren’t attractive enough to get more votes, and that old untruths were being reposted to some forums, but I can’t get too upset about this year’s result because both elected candidates had fine manifestos. I’m glad that Jimmy Kaplowitz’s platform includes posting more news and look forward to seeing that. Slightly worrying are the low turnout (down for the third year) and that over 80% of those few voters were from debian (my estimate). I’ve my suspicions why, but I’d love any non-voters to leave me a comment telling me why you think it is. The apology: the summary of responses to my questions about SPI membership will appear next week because I made a mistake on one site, set the closing date a week late and I don’t see any way to edit surveys after they’ve opened. Oops. Sorry. (Now, if that site was running free software, I’d see if I could fix the user interface to allow previews.) (Aside: I was going to include a bar chart of the voting, like last year, but Wordpress’s stupid post editor strips style attributes from li tags. I’ll go looking for that with a hack-axe Real Soon Now, before it causes me serious trouble.)

29 July 2008

Russell Coker: Variable Names

For a long time I have opposed single letter variable names. Often I see code which has a variable for a fixed purpose with a single letter name, EG “FILE *f;“, the problem with this is that unless you choose a letter such as ‘z‘ which has a high scrabble score (and probably no relation to what your program is doing) then it will occur in other variable names and in reserved words for the language in question. As a significant part of the time spent coding will involve reading code so even for programmers working on a project a useful amount of time can be saved by using variable names that can easily by found by a search program. Often it’s necessary to read source code to understand what a system does - so that is code reading without writing. With most editors and file viewing tools searching for a variable with a single character name in a function (or source file for a global variable) is going to be difficult. Automated searching is mostly useless, probably the best option is to have your editor highlight every instance and visually scan for the ones with are not surrounded by brackets, braces, parenthesis, spaces, commas, or whatever else is not acceptable in a variable name in the language in question. Of course if you have a syntax highlighting editor then it might parse enough of the language to avoid this. But the heavier editors are not always available. Often I edit code on the system where the crash occurs (it makes it easier to run a debugger). Installing one of the heavier editors is often not an option for such a task (the vim-full Debian/Lenny package for AMD64 has dependencies that involve 27M of packages files to download and would take 100M of disk space to install quite a lot to ask if you just want to edit a single source file). Incidentally I am interested in suggestions for the best combination of features and space in a vi clone (color syntax highlighting is a feature I desire). But even if you have a fancy editor, there is still the issue of using tools such as less and grep to find uses of variables. Of course for some uses (such as a loop counter) there is little benefit in using grep. Another issue to consider is the language. If you write in Perl then a search for \$i should work reasonably well. One of the greatest uses of single letter variable names is the ‘i‘ and ‘j‘ names for loop counters. In the early days of computing FORTRAN was the only compiled language suitable for scientific tasks and it had no explicit way of declaring variables, if a variable name started with i, j, k, l, m, or n then it was known to be an integer. So i became the commonly used name for a loop counter (the first short integer variable name). That habit has been passed on through the years so now many people who have never heard of FORTRAN use i as the name for a loop counter and j as the name for the inner loop in nested loops. [I couldn't find a good reference for FORTRAN history - I'll update this post if someone can find one.] But it seems to me that using idx, index, or even names such as item_count which might refer to the meaning of the program might be more efficient overall. Searching for instances of i in a program is going to be difficult at the best of times, even without having multiple loops (either in separate functions or in the same function) with the same variable name. So if there is to be a policy for variable names for counters, I think that it makes most sense to have multiple letters in all variable names to allow for easy grepping, and to have counter names which apply to what is being counted. Some effort to give different index names to different for/while loops would make sense too. Having two different for loops with a counter named index is going to make things more difficult for someone who reads the code. Of course there are situations where two loops should have the same variable, for example if one loop searches through an array to find a particular item and then the next loop goes backward through the array to perform some operation on all preceding items then it makes sense to use the same variable.

Axel Beckert: Dear Aunt Google,

… this is “Do no evil”—urchin.js isn’t. For luck, urchin.js and friends can be easily blocked using e.g. Firefox plugins like AdBlocker or NoScript, or with filtering proxies like Privoxy. And a line like
address=/google-analytics.com/0.0.0.0
in the dnsmasq.conf of your home router works like a charm, too.

SCNR, via Symlink

Adrian von Bidder: KDE 4.1

A while ago I decided that my desktop computer would be a test platform for a few things. So at the moment it's KDE 4.1 and OpenOffice.org 3.0 beta, both from Debian's experimental distribution. Which, on a system which originally was an installation of Debian etch, means that by now not much is left over from that etch system. Long live Debian's dependency handling, which so far has never really let me down! Conclusion: thankfully I have a laptop for actually doing stuff... I should probably add that this is not a rant. I'm running software that's explicitly labelled as experimental. So people should probably view this as a response to whoever (can't find it anymore, wasn't it on Planet?) recently stated that he'd switch to the Hurd since Debian has become boring. Or as a Thank You posting for those making Debian from a “you know it's been the stable version for the last year when it's entered Debian” type of distribution into a “get it on the day of release” distribution.

Wouter Verhelst: Debian testing

Martijn isn't too sure about Debian testing, though he doesn't go into much detail about the "not sure" bits. Well, Martijn, even though I could really use some more detail, let me make an attempt: In all, I still prefer Debian over Ubuntu, mostly because of the higher attention to detail you'll find in Debian; I find that ubuntu developers usually don't have the time to pay too much attention to pesky details. This makes the system work slightly better. But, of course, YMMV, and if you decide to stay with Ubuntu because you think it works better in your particular use cases, more power to you!

MJ Ray: How to Install Koha 3.0.0 on MacOS X 10.5

This is a pretty technical note, which I’m posting here for review and hopefully to help other people. The reinstall I mentioned last week was a MacOS X 10.5 server, so this time I installed Koha more simply and took more notes. I don’t want to put this in the distribution as INSTALL.osx, for reasons mentioned below. Also, I’d be very happy if people replaced all osx servers with debian ones, or at least some sort of tidy GNU/Linux. The sysadmin installed XCode and fink for me and I ran
fink install apache2 apache2-dev mysql mysql15-dev
without any great event. I also re-used an old, imperfect, local finkinfo/idzebra.info to
fink install idzebra idzebra-shlibs
Next, I used the extremely horrible command
fink list $(sed -n -e “/PREREQ_PM =/,/ / ;s/^[ ']*//;s/::/-/g;s/’.*\$/-pm588/;/-.*-pm588/p; ” Makefile.PL tr A-Z a-z)
inside an unpacked koha-3.00.00.094 folder to find out which modules fink had packaged already. Something similar can be done for debian and ubuntu, using apt-search or dpkg instead of fink and a libperl- prefix instead of a -pm588 suffix. (I think all systems should do something like that. Then we could merge the INSTALL.*s into the main INSTALL because they lag behind.) Three of those, I copied to /sw/fink/10.5/local/main/finkinfo and edited slightly (usually to increase the version: dbd-mysql-pm, html-template-pm, xml-libxml-common-pm, xml-libxml-pm.info and xml-simple-pm.info… also in my fink-10.5 folder) and then ran
fink install dbd-mysql-pm588 text-iconv-pm588 xml-simple-pm588 data-dumper-pm588 digest-md5-pm588 file-temp-pm588 getopt-long-pm588 html-scrubber-pm588 list-util-pm588 list-moreutils-pm588 mime-base64-pm588 net-ldap-pm588 test-harness-pm588 text-wrap-pm588 time-hires-pm588 unicode-normalize-pm588 xml-dumper-pm588 xml-libxslt-pm588 xml-rss-pm588 yaml-syck-pm588
to install those modules. For the remaining modules from CPAN, I set PERL5LIB to my new Koha folder (export PERL5LIB=/Library/WebServer/Koha/lib:/Library/WebServer/Koha/System/Library/Perl/5.8.8/:/Library/WebServer/Koha/lib/perl5/site_perl/:$PERL5LIB) and ran perl -MCPAN -e shell, telling the configuration screens to use PREFIX=/Library/WebServer/Koha (so install into the Koha folder instead of splattering across /System/Library). Then the command
install Bundle::KohaSupport
just worked, thanks to excellent work by Mike Mylonas and others. Finally, all that was left was to run the normal installation in the koha-3.00.00.094 folder, picking the “single” configuration and ignoring “make test” failure (because it’s a work in progress and this is RC1), edit the /Library/WebServer/Koha/etc/zebra/*cfg to point at /sw instead of /usr, symlink koha-httpd.conf into /sw/etc/apache2/sites-available and run the a2ensite commands, copy the service plist files into /Library/LaunchDaemons and load them into launchctl, browse koha and start testing it. Simple(!) It only took me a full day of work to figure that out and do the reinstall… compared to under 2 hours from scratch on debian at the moment. Maybe it’s faster if you know the OS better and/or aren’t trying so hard not to splatter stuff across the base system. Did I do anything wrong above?

28 July 2008

Jacobo Tarrío Barreiro: Translating the Debian installer

As some of you know, I’ll stop working on Galician translations (of everything) after Lenny is released (or after the end of October, if Lenny is not released before). Before that, I’m going to start documenting several aspects of my work on it in several blog posts. I’m not going to follow any particular order; when everything’s written, I’ll collate the documents and make them available together in a single coherent document. Although it is written for the future Galician team, this work (even the final document) will be written in English. If it is a problem for anyone, I don’t want them as translators. And, also, this will make this document potentially useful for other teams.
The Debian installer system (d-i, for short) is made up of several components. Some of these components were written especially for the Debian installer; others, however, are standalone applications which are used during the installation of Debian. The translations of many of these components are managed separately; however, an effort is being made to keep track of them, providing a single dashboard where a translator can see the status of the d-i translations, get files to translate, instructions for submitting the translations, etc. This dashboard resides at http://d-i.alioth.debian.org/l10n-stats/. There is a translation guide for d-i, explaining what components are in each level, how to retrieve the files to translate or update, and how to submit the translated files. I’m giving here a short summary in this post. For translation purposes, d-i is divided in five levels. Level 1 contains the strings everyone sees when installing Debian — the following levels contain components whose translation is less user-visible. Therefore, when translating d-i you should prioritize level 1 translations, then level 2 translations and so on. However, this doesn’t mean that they are any less important; you should try to always keep them up to date! You can see the status of every language in each level by going to the l10n-stats page. If you click on a language you can see a text file with a more detailed report on the translations for that level and language. You can also opt in to receive emails every morning when the status in a level for your language changes — you’ll have to ask Christian Perrier to subscribe you to the websec-txt notifications for your language. Level 1 translations are maintained on Alioth, so you should get an Alioth account and request to be added to the d-i project as translator. Then, you’ll be able to download and upload the translations using Subversion. There are lots of programs and packages that comprise level 1; however, to make translation easier and more efficient, the translations are consolidated in only 5 files (called sublevels). In this way, if the same string appears several times in several programs, you only need to translate it once. It’s 5 files instead of a single one so that it’s easier to distribute work, assign priorities, etc. The other levels consist of translations of individual programs, which are maintained in many different ways. The particular methods you have to use for each package are detailed in the translation guide. For most of them, it involves downloading the .POT or .PO file from a read-only version control repository, and uploading the translation using the Debian BTS.

John Goerzen: Jacob and Portland

Jacob has sure enjoyed our trip. And he should -- after all, he loves trains. His word for train is "toot" or "toh" (after the sound they make, I guess).

He sure was excited to get on the train in the middle of the night in Kansas, and didn't want to go to sleep after we got on because he was too excitedly jabbering about it. "Bih toot!" (big train) and "Too on!" (on the train) kept getting repeated, over and over.

Jacob loved walking up and down the train. It sways side to side, so he didn't want to walk by himself. Result: Terah and I got sore backs from holding his hands. But he got so many smiles as we walked back and forth, back and forth in the lounge car -- or up and down the entire train.

Los Angeles Union Station brought its own set of fun. A few puddles of water were exciting to splash in, but Jacob spotted a fountain nearby before I did, and we had to go over there and splash around a bit.

On the Coast Starlight, there is a parlor car in addition to the lounge car. The lower level of a parlor car is a theater with a wide-screen TV at the front, but it is usually completely empty during the day. Jacob and I liked to go down there -- Jacob because he could run around without getting into people or things, and me because I could sit down there and watch the scenery go by undisturbed.

Eating on the train was a bit of a challenge, though. On the train, you eat community-style in booths. There are no highchairs, so that meant keeping sticky little hands from touching everything. It turned out I had a knack for making this work, so Jacob sat next to me most of the time.

Sleeping, too, was a bit different than usual. Jacob is used to putting himself to sleep in his own room, and if he can see anyone else in the room, he doesn't want to sleep. So since Terah and I were always around, this didn't go so smooth. But Terah had a knack for that, as much as possible, so she held him for naps.

The greatest fun for Jacob was in Portland. Our hotel was right along the MAX light rail line, and we'd ride it to all sorts of places. While waiting on the platform, Jacob would repeat "Toot ahm?" (Train coming?) Then he'd see it, and go "TOOO!!! TOOO!!!", followed shortly by "Too ON!!! Toot ON!!" And, of course, "Jacob, we can't get on the train until it gets here."

Once on the MAX trains, he quickly noticed that at each stop, a prerecorded voice says "The doors are closing" right before they close. Pretty soon he started warning everybody that the doors would be closing. After the doors opened, he'd point to a door, and yell out, "Doh cloh! Doh cloh!" (door close) until they finally did. After a few more days, he'd notice when the train was coming to a stop and yell out "doh clo" before the doors ever opened. I think TriMet should hire him.

Jan Wagner: [vacation] off until the weekend

After a hard week at work I’m just off for vacation until the weekend without network access. If there are urgent steps needed with my packages, just feel free for a 0day NMU.

Russell Coker: Biba and BLP for Network Services

Michael Janke has written an interesting article about data flows in networks [1], he describes how data from the Internet should be considered to have low integrity (he refers to it as “untrusted”) and that as you get closer to the more important parts of the system it needs to be of higher integrity. It seems to me that his ideas are very similar in concept to the Biba Integrity Model [2]. The Biba model is based around the idea that a process can only write data to a resource that is of equal or lower integrity and only read data from a resource that is of equal or higher integrity, this is often summarised as “no read-down and no write-up“. In a full implementation of Biba the OS would label all data (including network data) as to it’s integrity level and prevent any communication that violates the model (except of course for certain privileged programs - for example the file or database that stores user passwords must have high integrity but any user can run the program to change their password). A full Biba implementation would not work for a typical Internet service, but considering some of the concepts of Biba while designing an Internet service should lead to a much better design (as demonstrated in Michael’s post). While considering the application of Biba to network design it makes sense to also consider consider the Bell LaPadula model (BLP) [3]. In computer systems designed for military use a combination of Biba and BLP is not uncommon, while a strict combination of those technologies would be an almost insurmountable obstacle to development of Internet services I think it’s worth considering the concepts. BLP is a system that is primarily designed around the goal of protecting data confidentiality. Every process (subject) has a sensitivity label (often called a “clearance”) which is comprised of a sensitivity level and a set of categories and every resource that a process might access (object) also has a sensitivity label (often called a “classification”). If the clearance of the subject dominates the classification of the object (IE the level is equal or greater and the set of categories is a super-set) then read access is permitted, if the clearance of the subject is dominated by the classification of the object then write access is permitted, and the clearance and classification have to be equal for read/write access to be permitted. This is often summarised as “no write-down and no read-up“. SGI has published a lot of documentation for their Trusted Irix (TRIX) product on the net, the section about mandatory access control covers Biba and BBLP [4]. I recommend that most people who read my blog not read the description of how Biba and BLP works, it will just give you nightmares. The complexity of either Biba or BLP (including categories) is probably too great for consideration when designing network services which have much lower confidentiality requirements (even the loss of a few million credit card numbers is trivial compared to some of the potential results of leaks of confidential military data). But a simpler case of BLP with only levels is worth considering. You might have credit card numbers stored in a database classified as “Top Secret” and not allow less privileged processes to read from it. The data about customers addresses and phone numbers might be classified as “Secret” and all the other data might merely be “Classified”. One way of using the concepts of Biba and BLP in the design of a complex system would be to label every process and data store in the system according to it’s integrity and classification/clearance. Then for the situations where data flows to processes with lower clearance the code could be well designed and audited to ensure that it does not leak data. For situations where data of low integrity (EG data from a web browser) is received by a process of high integrity (EG the login screen) the code would have to be designed and audited to ensure that it correctly parsed the data and didn’t allow SQL injection or other potential attacks. I expect that many people who have experience with Biba and BLP will be rolling their eyes while reading this. The situation that we are dealing with in regard to PHP and SQL attacks over the Internet is quite different to the environments where proper implementations of Biba and BLP are deployed. We need to do what we can to try and improve things, and I think that the best way of improving things in terms of web application security would involve thinking about clearance and integrity as separate issues in the design phase.

27 July 2008

Andrew Pollock: [debian] Etch and a Half no workee for me

So hot off the back of my successful upgrade from Sarge to Etch, I thought I'd try the new "Etch and a Half" 2.6.24 kernel on daedalus Let's just say that it's times like these that I'm glad I got the serial-over-LAN thing working, and have remote power. I spent many hours today rebooting, trying to get to the bottom of why it wouldn't work. At first, I thought it was hanging, but then I realised it was dropping to a shell in the initramfs, and just not making that very obvious because the serial over LAN console is a bit crappy. Once I realised what was going on, I did some poking around. It seemed like udev wasn't getting started properly, so when it went to assemble the mirrors, that failed, because the component devices couldn't be found, then it freaked out because it couldn't mount the root filesystem. If I ran the relevant bits of /scripts/init-premount/udev by hand, the SCSI devices appeared, and I could manually assemble the mirror, and mount the root filesystem, which was handy, because I also discovered that you can boot with debug on the kernel command line, and it logs the initramfs run to /tmp/initramfs.debug. So that was a convenient way of preserving the log, because there seemed to be some characters in it that made inspecting it over the serial console difficult, and there was no way to get it off the machine from the initramfs environment. As far as I can determine, it's telling udev to start, but it certainly isn't still running when it bombs out to a shell after failing to mount the root filesystem. It's not immediately clear if there's something later on that is stopping it again. I've put the log here in case anyone's interested in looking at it. This was with the addition of "x" to the options of the shebang line of /usr/share/initramfs-tools/scripts/init-premount/udev so that I could see what was happening when /scripts/init-premount/udev ran. So I don't think the kernel itself is at fault, it's some sort of weird udev/initramfs interaction. Rather than further rebooting the tripe out of daedalus, I'll have to see if I can reproduce the problem on a less important machine locally to do further debugging. In the meantime, I'll have to stick with 2.6.18.

Russell Coker: Links July 2008

Steven Levitt gave an interesting talk for TED about the economics of a crack-dealing gang [1]. He makes some interesting comparisons with the way that corporations work. Top 10 strangest terrorism patents [2]. Items 1 and 4 have been implemented many years ago, item 5 was probably implemented by the CIA decades ago (they did many similar things), item 7 will probably kill a significant portion of the passengers (bummer if it goes off accidentally), item 8 has the same problem but will only target nervous people (calm terrorists can do what they want), and the creator of item 9 doesn’t seem to have much idea about how much energy is contained by high explosive. Supporters of Barack Obama are adopting Hussein as their middle-name to support him and oppose some of the unreasonable claims from extremists [3]. I’m not planning to call myself Russell Hussein Coker. Chris Samuel summarises the latest CSIRO report about droughts caused by climate change [4]. He notes that most simulations are based on lower levels of CO2 than we are expecting… Interesting article in the Guardian about car use in the US [5]. It suggests that soon suburbs will be slums occupied by the poor an unemployed and inner city areas will experience a revival. Recently I’ve been putting the papers I’ve presented at conferences online on my documents blog (see this link for the “papers” category) [6]. The papers are almost unchanged from when I published them, I fixed up some broken URLs and made some notes on relevant things that have happened since publication but made no essential changes to the text. Linux.com article about Bonnie++ [7]. It’s well written and covers most of the features quite well. An unfortunate omission is the fact that if you want to run Bonnie++ from the root account you can specify “-u user” on the command-line to run the test as a different user, or you can use “-u root” if you REALLY want to run it as root. A Linux.com article with the source code for a Perl script to create charts from Bonnie++ results [8]. I had always planned that other people would write programs like this, I’m glad to see someone finally publish the source to one!

26 July 2008

Matthew Garrett: Further Foxconn fun

Ryan kindly sent me a copy of the ACPI tables for his motherboard, so I've had the opportunity to look at them in a little more detail. There's nothing especially surprising. The first method of interest is OSFL, which I've annotated below:
   Method (OSFL, 0, NotSerialized)
     
        If (LNotEqual (OSVR, Ones))
         
            Return (OSVR)
         
This block simply skips the checks if they've already been evaluated and returns the cached value
        If (LEqual (PICM, Zero))
         
            Store (0xAC, DBG8)
         
If the programmable interrupt controller has been set up in PIC mode rather than APIC mode, 0xAC is written to i/o port 0x80. This would then show up on a plug-in card if one were attached. Simply debug code
        Store (One, OSVR)
Set OSVR to 1, which in this case clearly means "Unknown OS"
        If (CondRefOf (_OSI, Local1))
This checks whether the OS supports the _OSI method. If it does, the following block is executed. If not, the older _OS method is used to detect the OS
         
            If (_OSI ("Windows 2000"))
             
                Store (0x04, OSVR)
             
Newer versions of Windows will also claim to support the interfaces defined in older versions, so this set of checks is done in release order
            If (_OSI ("Windows 2001"))
             
                Store (Zero, OSVR)
             
            If (_OSI ("Windows 2001 SP1"))
             
                Store (Zero, OSVR)
             
            If (_OSI ("Windows 2001 SP2"))
             
                Store (Zero, OSVR)
             
            If (_OSI ("Windows 2001.1"))
             
                Store (Zero, OSVR)
             
            If (_OSI ("Windows 2001.1 SP1"))
             
                Store (Zero, OSVR)
             
            If (_OSI ("Windows 2006"))
             
                Store (Zero, OSVR)
             
If we've got this far, OSVR is now set to 0. Linux will claim to support all of these interfaces, and so OSVR should be 0 on Linux systems. Note that there is no _OSI check for Linux - the 2.6.24 change to remove Linux from the set of claimed interfaces is therefore irrelevant
         
        Else
         
Linux supports _OSI, so we should never be here. But if we somehow are...
            If (MCTH (_OS, "Microsoft Windows NT"))
             
                Store (0x04, OSVR)
             
Linux has responded to _OS with "Microsoft Windows NT" since 2.6.9. MCTH is simply a string matching routine defined elsewhere in the DSDT. So, worst case here is that OSVR is 4
            Else
             
                If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
                 
                    Store (0x02, OSVR)
                 
                If (MCTH (_OS, "Linux"))
                 
                    Store (0x03, OSVR)
                 
..because this could never be true unless you're running 2.6.8.1 or earlier. But even so, getting here would still indicate failure - we've supported _OSI since before then, and so should never come anywhere near this code block.
             
         
        Return (OSVR)
     
In summary, we end up with the following values:
ValueOS
0Windows XP, 2003 or Vista. Linux (assuming absence of bugs)
1Unknown OS
2Windows ME
3A version of Linux that doesn't implement _OSI and is from before 2.6.9
4Windows NT 4 and 2000. A version of Linux that doesn't implement _OSI and is 2.6.9 or later (I don't believe any such version exists

Now, where is this used? The majority of the OSFL checks only check whether the return value is 1 or 2, which will only be true for an OS that (a) doesn't claim to be Windows or (b) is Windows ME. Linux doesn't fall into either of these categories, so we can ignore them. The first interesting hit we have is in the HPET code, where _STA will return 0xf (device present and working) if OSFL is 0 and 0xb (device present and working, but should not be shown in the UI) otherwise. This is just to keep the HPET from showing up in versions of Windows that don't know what it is. The only other interesting hit is the following code from the PCI bus initialisation pathway:
 
                               If (LEqual (OSFL (), Zero))
                                 
                                    Store (0x59, SMIC)
                                 
                                Else
                                 
                                    If (LEqual (OSFL (), 0x04))
                                     
                                        Store (0x5A, SMIC)
                                     
                                    Else
                                     
                                        Store (0x58, SMIC)
                                     
                                 
This writes different values to SMIC (which turns out to be i/o port 0xb2) depending on the OS. 0xb2 is the standard(ish) way to trigger a system management interrupt, which causes the CPU to execute some code from a memory region that can't be accessed by the OS. This isn't that unusual, but it's a little weird. In any case, note that there's no check for whether OSFL is 3 here (which would be true if the _OS call returned Linux), and so Linux is being treated identically to Windows ME and any unknown OS. In reality, Linux will be treated identically to either Vista or 2000. This block provides no evidence of conspiracy. Finally, the OS version flag is written to a region of memory before suspend and read back afterwards. Nothing appears to be done with this information - it's conceivable that the low-level resume code in the BIOS has conditionals based on this, but I suspect that it's just boilerplate code that's ignored.

To summarise:What's the problem, then? I've no idea. The only "significant" issue is that the OEMB table provided by the BIOS has an incorrect checksum. Given that the OEMB table is never used by Linux (it's a vendor extension of some kind, with the best hint I've been able to find being that it can be used to pass information from the BIOS to the OS - kind of like the rest of ACPI, then...), this is pretty unimportant. And given that the OEMB table isn't part of the ACPI spec, it's certainly entirely irrelevant when it comes to determining whether the system is ACPI compliant or not.

Are there ACPI issues with Ryan's system? It sounds like it. The "Error attaching device data" complaints indicate some kind of failure on the part of the kernel to work out how the devices correspond to the ACPI namespace, but I strongly suspect that this is a Linux bug. Failure to reboot after suspend? Could be anything (I'd need direct access to the hardware to figure it out properly), but again it's almost certainly a Linux bug. The standard way Linux reboots systems is to bang the keyboard controller, and it's conceivable that something we're doing on resume is leaving the keyboard controller in a slightly confused state. We're clearly doing something wrong there, given that my Dell comes up without a keyboard about one resume in twenty - I just haven't had time to look into it yet.

The only remaining thing is the mutex handwaving. I've got no clue what's going on there. Ryan's suggested change (from Acquire (MUTE, 0x03E8) to Acquire (MUTE, 0xFFFF)) simply means that the OS will wait forever until it acquires the mutex - in the past it would only wait a second. The reason the compiler generates a warning here is that the firmware never checks whether it acquired the mutex or not! Bumping the timeout to infinity obviously fixes this warning (there's no need to check the return code if you're happy to wait forever rather than failing), but the original code is merely stupid as opposed to a spec violation.

Take home messages? There's no evidence whatsoever that the BIOS is deliberately targeting Linux. There's also no obvious spec violations, but some further investigation would be required to determine for sure whether the runtime errors are due to a Linux bug or a firmware bug. Ryan's modifications should result in precisely no reasonable functional change to the firmware (if it's ever hitting the mutex timeout, something has already gone horribly wrong), and if they do then it's because Linux isn't working as it's intended to. I can't find any way in which the code Foxconn are shipping is worse than any other typical vendor. This entire controversy is entirely unjustified.

Andrew Pollock: [tech] And we're back

Well that certainly wasn't worth the amount of angst I'd pre-allocated it. The upgrade went reasonably smoothly. Lowlights included: I'm certainly glad to be getting security updates again. Given how smoothly this went, I'll definitely not procrastinate on upgrading to Lenny when it releases.

loldebian - Can I has a RC bug?: Hakin ur distro


Hakin ur distro Hakin ur distro. Zapatistas at DebConf 6. Photo by gnrfan.

Juan Luis Belmonte: PamNssInstaller project Status.


Our two tools update-pam and update-nsswitch in charge of modifying the conffiles, where finished last month. And have been testing it in their future packages, libpam-runtime for update-pam and base-files for update-nsswitch. But we shouldn’t submit them until Summer of code finishes and all the bits of the project are done. Debconf for modules Well with them tools we can modify in a polite way from the postinst script the pam.d/* files and the nsswitch.conf trough the updaters. This mechanism is being tested now in libpam-ldap and libnss-ldap packages. I have both of them with a new Debconf dialog asking to the user if he want to activate the module in that moment. So if the answer is yes, the updaters modify the files as the way is said in the doc of the package. Debian Installer. I’m starting with the new udeb which will be incharge in a future of asking the user who is installing the system if he would like to use some kind of authentication service. A list of available systems will be prompted and through a multiselect he could select what he wants to use. The list will only show the systems wich their packages implement the debconf dialogs to use the updaters at postinst. After the selection the packages will be hooked for installation with apt-install. This way when the installation is finished, the system is prepared to log on the selected service since the first login.

Andrew Pollock: [tech] Upgrading daedalus to Etch

I'm starting a dreaded dist-upgrade of daedalus to Etch. I'm feeling very apprehensive about it, mainly because it's a good 14,000 km away from where I am. So apologies in advance if I flood any Planets due to the Blosxom upgrade doing something weird.

MJ Ray: Good Tour for Software and Cooperatives Enters Final Weekend

This weekend, I will be mostly watching the Tour de France. It’s been a very good tour for software and cooperatives. Look at the current leaderboards:-
Teams
  1. Carlos Sastre Candil (also 2nd in King of Mountains) Team Computer Sciences Corporation - Saxo Bank
  2. Frank Schleck (3rd KoM) Team CSC - Saxo Bank
  3. Bernhard Kohl (1st KoM) Gerolsteiner bottled water - OK, not related
  4. Cadel Evans, Silence anti-snoring product - Lotto Belgium - also unrelated
  5. Denis Menchov, Rabobank cooperative
Points
  1. Oscar Freire Gomez, Rabobank
  2. Erik Zabel, Team Milram, a brand of Nordmilch cooperative
  3. Thor Hushovd, Cr dit Agricole cooperative banks
Teams
  1. Team CSC Saxo Bank
  2. AG2R-La Mondiale insurance mutuals
  3. Rabobank
  4. Euskaltel - Euskadi - privately-owned telco and a government
  5. Caisse d’Epargne cooperative bank
So however it finishes, I think it probably will have been a much better race for software and cooperatives than last year’s tour, likely to take 4 of the top 5 team positions and 1-2-3 in the green jersey contest… even the doping scandals have been for other teams this year, I think. One day, one of my companies will sponsor pro-cycling. I hope. Anyway, if you’d like to cheer on other Software and Cooperative firm teams until then, European TV coverage details are on another site of mine and Saturday’s time trial start times are posted on a sister site.

25 July 2008

Eric Warmenhoven: Strobist.

Recently, I was trying to take portraits of Lisa at home, and failing. There wasn’t enough light, and the (on-camera) flash I had simply wasn’t cutting it. I decided it was time for a more serious solution. Enter Strobist.com. I already had the 580EX II Flash, so I got a stand, umbrella, and reflector, told my sister-in-law to stand between it all, and the results turned out much better:
IMG_5319.jpg IMG_5319.jpg
The background there is actually an empty room with all of the lights turned off, which I was pretty impressed with. Since then, I’ve convinced Lisa to let me set up a photo studio in the garage, complete with backgrounds. I picked up a background stand (no backgrounds yet though) and a Calumet Genesis 200 1-Light Kit, which is pretty awesome. I’ve also signed up for some classes to try and pick up some tips on all of this. In other news, I picked up the WordPress iPhone app. Maybe I’ll actually start posting more regularly.

Next.

Previous.