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.)
$ apt-get install flashromDetect whether flashrom knows about your chipset/mainboard/BIOS chip:
$ flashromRead the BIOS image into a file:
$ flashrom -r backup.binWrite a BIOS image (proprietary or LinuxBIOS) on the ROM chip:
$ flashrom -wv newbios.binWARNING: 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 $ makeThe 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...
mkdir /tmp/fc6 yum -c /tmp/yum.conf --installroot /tmp/fc6 install yumThis results in a system which cannot be updated:
chroot /tmp/fc6 /usr/bin/yum update [errors about yum database formats]I suspect this is because the versions of the Berkeley database are different .. but I'm not sure.
local_part_suffix = +*
local_part_suffix_optional
The first option defines the suffix; normal practice appears to be to use both “+” and “-“, but since I’d previously used “-” with qmail I opted to use “+” only so that I didn’t confuse myself during the transition.
The second option allows the suffix to be optional, so that mail to “scott” is still delivered normally.
Now mail to “scott+canonical” will be delivered to the “scott” user.
Forwarding configuration
The next task is to ensure that mail is actually forwarded to this address; for me this was a configuration performed by the Canonical sysadmins to ensure that my work e-mail is actually delivered to scott+canonical on my own mail server.
Filtering configuration
Since both personal and work e-mail are now both being delivered to the same user account on my home mail server, I need to filter the mail into separate folders.
This can be done by checking the $localpartsuffix variable in Exim filter .forward files, e.g.:
# Exim filter
if $local_part_suffix is "+canonical"
then
save Maildir/Canonical/
endif
Now incoming work e-mail is filtered into a different mail folder, while personal mail is delivered into the primary one.
I’ve used similar filter instructions for mailing lists, mailman messages, Launchpad mails, etc. to filter into appropriate folders.
Where the mail is personal, it is filtered into (e.g.) Maildir/.Lists/upstart-devel/
Where the mail is for work, I add /Canonical/ to the path, (e.g.) Maildir/Canonical/.Lists/linux-hotplug-devel/
This means that the Maildir/ directory is my personal INBOX, with sub-folders immediately under that and beginning with a period; and the Maildir/Canonical/ directory is my work INBOX, with sub-folders immediately under that and beginning with a period.
This defines two trees in a manner compatible with dovecot. There’s no particular reason that Maildir/Canonical/ has to be under Maildir/, it could have been Maildir-Canonical/ and this would still work. I simply wanted them in one place to ease backups.
Dovecot configuration
Now we need to configure dovecot to permit login by a fake (“virtual”) user, with a different Maildir tree, so that I can configure them as two separate accounts.
The first set of changes is to dovecot.conf to add an additional authentication source. Modify the “auth default” block to add a new “passwd-file” passdb in addition to the “pam” passdb (or whatever your system is using).
passdb passwd-file
args = /etc/dovecot/passwd
This lets us authenticate virtual users, but we also want to set their attributes, so we can use the same file as a userdb in the same “auth” block.
userdb passwd-file
args = /etc/dovecot/passwd
Dovecot will now check both PAM and this file for user information.
We now simply need to add a line to this file to specify the virtual user and set up the alternate Maildir tree.
scott+canonical:PASSWORD:1000:1000::/home/scott::userdb_mail=maildir:/home/scott/Maildir/Canonical
The format is that of an ordinary passwd file; the first two parts give the passdb authentication credentials and the rest give the userdb information.
I’ve set this user to have the same uid, gid and home directory as my real “scott” user.
The final part changes the mail environment for this virtual user, instead rooting it at Maildir/Canonical/
Client configuration
The mail client will need two accounts adding; one for “scott” and the other for “scott+canonical”. It will see two separate folder trees for each account.
An unexpected bonus is that the reply account is now automatically set for me, since I’m replying from the specific account rather than from a single general one.
if(system("lsrsrc -axd IBM.PeerNode > /tmp/rsct_node_info") == -1)
LOG_ERROR("ERROR:get_nodes_info() fails ");
Why is this bad? Because it users a static filename /tmp/rsct_node_info - and that could be a symlink. Consider what happens if a local user were to run:
skx@vain:~$ ln -s /etc/passwd /tmp/rsct_node_infoThe EVMS plugin would happily trash the /etc/passwd file, rendering the system broken... If this works on other distros that I couldn't spot don't tell anybody; it'll be our little secret ;) X.org Today I rebooted, to make sure that purging EVMS hadn't screwed with my initrd - and found errors relating to failure to load "keyboard" driver(s). Turns out you need to change:
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "keyboard"
Option "CoreKeyboard"
TO:
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
That took a fair bit of head-scratching.
Hello, World!Using ld this can be read in as a plain binary blob, and then written as a standard relocatable ELF object.
ld -r -b binary -o foo.o foo.txtNow we have a standard ELF object with the data and some useful symbols defined. objdump will show you the contents.
$ objdump -x foo.o
foo.o: file format elf32-i386
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 0000000d 00000000 00000000 00000034 2**0
CONTENTS, ALLOC, LOAD, DATA
SYMBOL TABLE:
00000000 l d .data 00000000 .data
0000000d g .data 00000000 _binary_foo_txt_end
0000000d g *ABS* 00000000 _binary_foo_txt_size
00000000 g .data 00000000 _binary_foo_txt_start
Here we see 13 bytes of data, and a symbol which contains the address of
the data. This is all we need to access it from a C program.
#include <stdio.h> extern char _binary_foo_txt_start[]; int main (void) puts (_binary_foo_txt_start); return 0;Now if we compile this and link it against the generated object, we'll have a binary.
$ gcc -o test test.c foo.o $ ./test Hello, World!Hooray! One small problem which alert people should have noticed: the string itself is in the .data section, which is read/write. For my use, I want it to be read-only data in the .rodata section so that it isn't copied for every instance of the application. As far as I know, this isn't possible with ld but objcopy will let us rename sections on the fly.
$ objcopy --rename-section .data=.rodata,alloc,load,readonly,data,contents foo.o foo.o $ objdump -h foo.o ... 0 .rodata 0000000d 00000000 00000000 00000034 2**0Excellent, problem solved. If you want to download this sample, I have a tarball. Many thanks to Daniel Jacobowitz for pointing out how to achieve this. Update: note that any data embedded in the binary like this won't be terminated with a NULL. This is obvious in hindsight, but due to luck my example still worked. There might be a way of asking objcopy to append a 0 to the end of the data, but if not always remember to use the start and end pointers or size instead of just the start, or append a NULL yourself before converting to an ELF. NP: (), Sigur Rós
The phrase "rebel with rather too many causes" was a phrase originally directed at protest.net -- a event calendaring system for activists that I was briefly involved in over a summer during college. I like the phrase and use it frequently but I didn't want to take credit for it. Google indicates that it originates in NTK #53 I'm not at all surprised.
My parents worked as doctors in Kenya, Papa New Guinea, and elsewhere before they had children. This probably doesn't matter to anyone else but they worked with an organization that was like MSF in that it was a humanitarian organization that sent physicians around the world but it was not actually MSF as the article states. I don't think MSF had grown beyond French doctors when my parents were practicing overseas.
When LWN pointed to the article, and in the original was well, there a focus on some comments I make about non-profit organizations. Since in a context of talk about my political work I just want to clarify my comments in a little more depth here. I think that one problem that has stemmed form Open Source's emphasis on businesses and efficiency is that free/open source software people end up making arguments in business terms: you should use application X because it is more efficient and faster. For many of the folks who have built this whole movement though, and for most in the free software camp, it's about freedom, not efficiency. By targeting businesses, we encounter a skeptical audience. More importantly though, we end up making arguments that, while true, are not the ones that motivate us. I think that low-hanging fruit for free software activists might include groups that already support free software ideas of sharing and user empowerment and that are looking for ways to use free software already. Groups we don't need to be afraid about saying "freedom" around. Not so coincidentally, these are sometimes organizations that I have a lot in common with politically. But that's far from always the case. There's a big group of philosophically aligned organizations in the NGO/non-profit community and the problems keeping them away are often technical. This is good news, of course, since solving technical problems is the free software movement's core competency. This is something I've been thinking about for a long time: Debian-NP was one project I helped start that tried to address this issue. Now, many people involved in the FSF, including myself, have political convictions that go beyond software. I do not want these convictions, and my statements about philosophically aligned organization, to be interpreted as call for a political shift in the organization in mainstream political terms. I deeply respect the way that RMS has kept his political opinions separate from the Foundation's. Biella and I have ever written about the importance of this political demarcation to free software's success. It's certainly not something I would want to change.
Next.