Marc's Public Blog - Linux Hacking


vvv Click on the categories below to see other topic specific pages vvv



This page has a few of my blog entries about linux, but my main linux page is here
Picture of Linus

Here is a list of older linux event reports I made before my blog was started, then the rest are below
1996/11/18-21:Linux Pavillion Comdex Fall 1996 (photos only). I've been going since then to help at the linux pavillion.
1997/11/18-21: Linux Pavillion Comdex Fall 1997 (photos only)
1998/05/28-30: Linuxexpo 1998 (photos only)
1998/11/16-20: Linux Pavillion Comdex Fall 1998 (full report)
1998/11/11: Silicon Valley Tea Party (report with pictures)
1999/02/15: Windows Refund Day (report with pictures)
1999/03/20: SVLUG KTEH night (photos only)
1999/03/01-04: LinuxWorld Expo Winter 99 (complete report with many pictures)
1999/03/31: Mozilla Party one year anniversary (photos only)
1999/05/18-22: Linuxexpo 1999 (complete report with many pictures)
1999/06/07: June 99 Balug meeting with Linus
1999/08/09-12: LinuxWorld Expo Summer 99 (complete report with many pictures)
1999/11/15-19: Linux Business Show at Comdex Fall 1999 (full report with pictures)
2000/08/14-17: LinuxWorld Expo Summer 2000 (complete report with many pictures)
2001/01/17-20: Linux.conf.au/LCA 2001 (complete report with pictures)
2001/07/25-28: OLS 2001 (photos only)
2001/08/25: Linux 10th Anniversary (report with pictures)
2001/09/27-30: LinuxWorld Expo Summer 2001 report with pictures)
2001/11/05-10: ALS 2001 (photos only)
2002/06/26-29: OLS 2002 (photos only)
2003/01/20-25: LCA 2003 (photos only)
2003/07/23-26: OLS 2003 (photos only)
2004/01/12-17: LCA 2004 (photos only)
2004/07/21-24: OLS 2004 (photos only)
2005/04/18-23: LCA 2005 (photos only)
2006/01/24-28: LCA 2006 (photos only)
2007/01/17-21: LCA 2007 (photos only)

Here is a list of all the talks I've given:

And below are my blog posts:

Table of Content for linux:

More pages: July 2002 February 2004 March 2004 November 2004 April 2005 August 2005 January 2006 July 2006 August 2007 November 2007 December 2007 January 2008 October 2008 November 2008 December 2008 January 2009 May 2009 July 2009 August 2009 September 2009 November 2009 December 2009 January 2010 March 2010 April 2010 June 2010 August 2010 October 2010 January 2011 July 2011 August 2011 December 2011 January 2012 March 2012 May 2012 August 2012 December 2012 January 2013 March 2013 May 2013 September 2013 November 2013 January 2014 March 2014 April 2014 May 2014 October 2014 January 2015 March 2015 May 2015 January 2016 February 2016 March 2016 June 2016 July 2016 August 2016 October 2016 January 2017 September 2017 January 2018 March 2018 December 2018 January 2019 August 2019 January 2020 May 2020 January 2021 September 2021 March 2023 April 2023 December 2023 June 2024 September 2024 November 2024 July 2025 August 2025 October 2025 November 2025 April 2026





π 2002-07-16 00:00 in Computers, Linux
After moving in a house, I made the linen closet a wiring closet, CAT-5e to all the rooms, and thanks to a job at VA Linux, I was able to get a fair amouunt of leftover free hardware, including:
  • a nice network swith (100Mbit/s, the good stuff, haha)
  • 2 7-drive SCSI SCA disk shelves, plus a 3rd disk shelf, and I remember having 26 SCSI drives on a single machine, for a monster total filesystem of 2TB, yes 2TB!!!
  • Also got an old DAT3 tape autoloader with tape bar code reader. This one took a long time to get working, but in the end, I was able to backup the 2TB on a bunch of tapes, that was no small feat back then
  • I do remember needed a lot of SCSI cards in a single server to run all of this, but it did eventually run :)
  • Picture shows both a cable modem and ADSL modem
  • From 2002/07/05

    gargamel:~# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/md0              125M   49M   69M  41% 
    /dev/md1 125M 77M 41M 65% /safe /dev/BootSWRaid5/usr 1.5G 466M 1.0G 32% /usr /dev/BootSWRaid5/var 2.0G 1.1G 915M 55% /var /dev/BootSWRaid5/home 113G 90G 22G 80% /home /dev/Eurologic1SWRaid5/media1 394G 251G 143G 64% /home/bigraid1 /dev/md3 1006G 33M 1006G 1% /mnt/mnt /dev/md4 407G 33M 406G 1% /mnt/mnt2

    113+394+1006+407 = 1920

    gargamel:~# cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: QUANTUM Model: ATLAS10K2-TY367J Rev: DDD6 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi0 Channel: 00 Id: 01 Lun: 00 Vendor: SEAGATE Model: ST336704LC Rev: 0004 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi0 Channel: 00 Id: 03 Lun: 00 Vendor: SEAGATE Model: ST336704LC Rev: 0004 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi0 Channel: 00 Id: 04 Lun: 00 Vendor: SEAGATE Model: ST336704LC Rev: 0004 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi0 Channel: 00 Id: 10 Lun: 00 Vendor: HITACHI Model: DK32CJ-36MC Rev: JBBB Type: Direct-Access ANSI SCSI revision: 03 Host: scsi1 Channel: 00 Id: 12 Lun: 00 Vendor: ECRIX Model: VXA-1 Rev: 2959 Type: Sequential-Access ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 13 Lun: 00 Vendor: ECRIX Model: VXA-1 Rev: 2959 Type: Sequential-Access ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 14 Lun: 00 Vendor: SPECTRA Model: 215 Rev: E010 Type: Medium Changer ANSI SCSI revision: 02 Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: SEAGATE Model: ST173404LC Rev: 0004 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi2 Channel: 00 Id: 01 Lun: 00 Vendor: SEAGATE Model: ST173404LC Rev: 0003 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi2 Channel: 00 Id: 02 Lun: 00 Vendor: QUANTUM Model: ATLAS10K2-TY734J Rev: DDD6 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi2 Channel: 00 Id: 03 Lun: 00 Vendor: SEAGATE Model: ST173404LC Rev: 0004 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi2 Channel: 00 Id: 04 Lun: 00 Vendor: SEAGATE Model: ST373405LC Rev: 0001 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi2 Channel: 00 Id: 05 Lun: 00 Vendor: QUANTUM Model: ATLAS10K2-TY734J Rev: DDD6 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi2 Channel: 00 Id: 06 Lun: 00 Vendor: SEAGATE Model: ST173404LC Rev: 0004 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi3 Channel: 00 Id: 08 Lun: 00 Vendor: SEAGATE Model: ST373405LC Rev: 0001 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi3 Channel: 00 Id: 09 Lun: 00 Vendor: SEAGATE Model: ST373405LC Rev: 0003 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi3 Channel: 00 Id: 10 Lun: 00 Vendor: SEAGATE Model: ST373405LC Rev: 0001 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi3 Channel: 00 Id: 11 Lun: 00 Vendor: SEAGATE Model: ST373405LC Rev: 0003 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi3 Channel: 00 Id: 12 Lun: 00 Vendor: SEAGATE Model: ST373405LC Rev: 0003 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi3 Channel: 00 Id: 13 Lun: 00 Vendor: SEAGATE Model: ST373405LC Rev: 0003 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi3 Channel: 00 Id: 14 Lun: 00 Vendor: SEAGATE Model: ST373405LC Rev: 0001 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi4 Channel: 00 Id: 06 Lun: 00 Vendor: VA Linux Model: nexStor 8Le 1.03 Rev: 0118 Type: Processor ANSI SCSI revision: 02 Host: scsi4 Channel: 00 Id: 08 Lun: 00 Vendor: SEAGATE Model: ST1181677LC Rev: F201 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi4 Channel: 00 Id: 09 Lun: 00 Vendor: SEAGATE Model: ST1181677LC Rev: F201 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi4 Channel: 00 Id: 10 Lun: 00 Vendor: SEAGATE Model: ST1181677LC Rev: F201 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi4 Channel: 00 Id: 11 Lun: 00 Vendor: SEAGATE Model: ST1181677LC Rev: F201 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi4 Channel: 00 Id: 12 Lun: 00 Vendor: SEAGATE Model: ST1181677LC Rev: F201 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi4 Channel: 00 Id: 13 Lun: 00 Vendor: SEAGATE Model: ST1181677LC Rev: F201 Type: Direct-Access ANSI SCSI revision: 03 Host: scsi4 Channel: 00 Id: 14 Lun: 00 Vendor: SEAGATE Model: ST1181677LC Rev: F201 Type: Direct-Access ANSI SCSI revision: 03

    I even had a punchdown 66 block for multiple phone lines and ADSL, plus CAT5-E to the whole house
    I even had a punchdown 66 block for multiple phone lines and ADSL, plus CAT5-E to the whole house

    Yeah, I had to installing each and every cable one by one, wire by wire
    Yeah, I had to installing each and every cable one by one, wire by wire

    This was almost pro-looking :)
    This was almost pro-looking :)

    Two servers, one file/master server (also home automation) and one router server, with UPS on top
    Two servers, one file/master server (also home automation) and one router server, with UPS on top

    that was the new router with 2 network cards, and somehow it still had SCSI because I didn't care more much for IDE ;)
    that was the new router with 2 network cards, and somehow it still had SCSI because I didn't care more much for IDE ;)

    A bit later, it got a bit more full :)
    A bit later, it got a bit more full :)


    Years later, I was able to replace the 26 SCSI drive file server with a new one and 12 internal drives (SATA by then)
    Years later, I was able to replace the 26 SCSI drive file server with a new one and 12 internal drives (SATA by then)

    And years later, the new house still mostly runs the same server, 12 internal drives, 10 hot swappable:


    more drives on the outside (for backup) via eSATA
    more drives on the outside (for backup) via eSATA

    a few more SCSI cables (CAT-6)
    a few more SCSI cables (CAT-6)

    See more images for First Linux Server Closet
    π 2004-02-15 23:14 by Merlin in Linux

    What follows is unix centric, and won't tell you much if you're not a programmer/unix user, but you should enjoy it otherwise (please note that I do own a legal copy of bru backup for personal use, which I got with an old boxed set of Red Hat)


    I'm trying to get my backup tape library to work as I've never been able to backup the 1TB+ of media files (don't ask) I have (I've been copying them on my other drives, but now I have too many for that to fit)

    So, I decided to move my tape library to another machine, just for testing (to see if the library was bad, or my SCSI connection or host PC was flaky)
    But, problem, it wouldn't back up a single file over NFS.

    After a while, I realized:
    gargamel:~# bru --version
    bru: invalid option -- -
    usage: bru -cdeghitx [-#AabBCEfFGjlLmnNoOpPQRSsuUvVwXYZ] file(s)...

    Copyright (c) 1994-97, Enhanced Software Technologies, Inc.
    All Rights Reserved

    BRU is a backup software product licensed by EST.
    It is NOT public domain or shareware. Versions are
    available for almost any type of Unix system.

    This is the Personal Edition version of BRU 2000. It does not offer
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    support for backup or restore of remote/network filesystems.
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    To order a copy of the full version of BRU 2000 or for further
    information or technical support, please contact Red Hat Software

    Ah, great.
    There had to be a way to trick it to backup over NFS anyway (this software is more than 7 years old, I'm probably not able to buy a license today, and I'm not violating the spirit of the license, I'm just doing a backup of one system, but without being able to have the library connected to it)

    So, I did a couple of straces, one of a local file and one of an NFS file and diffed them.
    What did I see?

    open("/bru/.serial_number", O_RDONLY) = -1 ENOENT (No such file or directory)
    uname({sys="Linux", node="host.svh.domain.tld", ...}) = 0
    -lstat64(0x806e5a4, 0xbffff298) = 0
    -lstat64(0x8070978, 0xbffff280) = 0
    -statfs("dshelf3_X10:D3_MD5_.bz2", {f_type="NFS_SUPER_MAGIC", f_bsize=8192,
    f_blocks=14836773, f_bfree=1564919, f_files=15073280, f_ffree=14353562,
    f_namelen=255}) = 0
    ^^^^^^^^^^^^^^^^^^^^^^^
    -lstat64(0x8070978, 0xbfffee1c) = 0
    -access("dshelf3_X10:D3_MD5_.bz2", R_OK) = 0
    +lstat64(0x806e5a4, 0xbffff2a8) = 0
    +lstat64(0x8070978, 0xbffff290) = 0
    +lstat64(0x8070978, 0xbfffee2c) = 0
    +access("profile", R_OK) = 0
    +lstat64(0x8070978, 0xbfffe6f0) = 0
    +access("profile", R_OK) = 0
    +open("profile", O_RDONLY|O_NONBLOCK) = 4
    +write(1, "c 4k of 6k [1] profile\n", 27) = 27


    Aaahahh. man statfs said that NFS_SUPER_MAGIC was 0x6969, which is "ii" in ascii.
    So, I just opened the bru binary with vi, found one instance of "ii" (I was lucky) and it was around the text strings, so it was definitely in the variable sections of the binary.
    I changed the string to "ij", and voila, nfs backups.

    Yeepee! :)

    The joys of a simple geek may be hard to convey sometimes :)
    π 2004-02-25 18:13 by Merlin in Linux

    Current Music: none while my disk array is being rebooted every 5mn :)
    Current Mood: Hardware, you will submit :)

    So, I can't believe that after two years of having that tape autoloader I finally got the thing to work. It took more sweat and tears than I care to write about, but basically, in the end, one of the two busses on one of the 4 SCSI cards in that machine was flaky (some of the cables were too though).
    I can't believe that I ended up fixing the problem by putting no less than 6 SCSI busses in that machine (I had to add yet another card). That just feels wrong...
    Anyway, it works now and it's happily backing up data. With a little luck, the backup will be over in a week's time.

    Cool, now I only need to fix my Replay TV with its broken hard drive and my older archos jukebox player so that I can ebay it. So much to do, so little time :)
    I sometimes wonder how "normal" people manage :) (but seriously, it must suck to have to throw those things away, or pay god knows how much to get them fixed by someone else)
    π 2004-03-25 00:13 by Merlin in Linux, Linuxha

    Current Music: DJ Tiƫsto - Live At Innercity - Norefjell
    Current Mood: Yeah another long time project finally completed

    So, those who've visited my house know that I have a sick system where I use
    X10 wireless remotes, that get picked up by a receiver in the wall, which
    transforms the signals from RF to electrical signals, which then get picked up
    by a receiver in my linen^H^H^H^H^Hcomputer closet, which transforms this into a command for my serial port, which is read by a linux daemon, which in turn runs commands of my choosing, like changing the music or the volume (it's especially awesome under the shower, because I can use a throwaway wireless remote, and still control the music. I'm sure you'll agree that it is very important to be able to do so ;-)

    Anyway, I also have another PC that is my video server, and plays files from another server (my disk server), and sends the video in a S-Video cable that goes under the house and reaches my TV.
    So far, so good, except that I had to use my laptop on my couch to control the video and pause it or whatever (this turned out not to be a great problem since my laptop is always on my couch, but I digress).

    So, I have some TV capture card with an IR receiver, and an IR remote. With a little work, I found and setup some linux software to receive the IR codes from the remote, and pass them on as commands to mplayer, a video player on linux.
    This wasn't bad, except that I have to point the IR remote in my back, towards the PC, which is nowhere near the TV, and it wouldn't even work at all if I can see the TV but I'm a place in the room where my IR remote can't reach the IR receiver.
    So, I had that working a couple of years ago, but I never really used it because it was a clearly inferior and imperfect solution that no self respecting geek would bring himself down to using :)

    That's where my mouseremote comes in. This handy little sucker looks like a 5 way learning remote, also supports sending X10 events (i.e. to control my lights, and also my music from the closet), and then it also sends two more sets of RF signals that get picked up by another computer. The first set allows me to move the mouse on my TV screen for the PC I use to play videos, and the second set allows me to send random keys from the remote and have them used by the PC.
    This is where the interesting part comes in: using those keys to do interesting stuff, like controlling the video so that I can just use my mouseremote like a regular remote, except that I'm talking to a PC that's not even within line of sight.
    I wouldn't want to further bore you with technical details, and you can find them here should you really be curious (considering that it took me a little while to get it working, I documented it so that the next guy who tries this doesn't have to spend as much time than me). I'll just leave you with the (admittedly somewhat insane) list of things that happens in real life when you press play:
    1. the mouseremote sends an RF signal with the key I pressed
    2. multimoused on linux reads from the serial port and receives a translation of the RF signal
    3. it generates mouse events into the /dev/mumse fifo
    4. it separates and sends keypresses (like DVD+1) to /dev/x10fifo
    5. MouseRemote reads from the fifo and executes commands as directed in MouseRemote.conf
    6. MouseRemote.conf calls irsend, like so ' irsend SEND_RELAY "0000000000001005 00 5" Hauppauge ', which tricks the patches lircd to think I used my IR remote to send this code
    7. I'm running a patched lircd that understand this special trick, and relays it to its fifo as if it were coming from the infrared remote
    8. mplayer, running in lirc mode, reads from the lircd fifo, parses ~/.lircrc, receives the fake IR code, and pauses or resumes the video

    See, it's really simple :)
    I only got that working last night once I got the special evil trick to generate fake IR events in lircd, as if I were using my IR remote. We'll put aside the fact that I've owned the remote for mmmh, 4 years now :-)
    Eh, at least I get points for documenting all this , so as to make it easier for the next guy...

    Anyway, that's when you get to witness someone next to me in my couch, me pressing play or pause on my remote, the video stopping or starting as appropriate, me displaying a huge grin on my face, and the person next to me wondering "what's up with him, he pressed pause, the video paused, what's so special about that?".
    If they only knew ;-)))

    This is where I also get to say a few words about linux vs windows.
    With windows, I would definitely have spent less time on all this: either I would have found some complex software that someone wrote and that happened to do what I needed, or I would have been entirely out of luck.
    With linux, it took me a fair number of hours to make this all work (10 or so), but once I found that the main pieces existed (IR and RF readers) I knew that I could write the missing glue to make it all work together. In its own way, if you are into this, it's really rewarding to not only know it all works, but to have been able to make it work and piece it up together...

    Eh, everyone needs a hobby, or two, or three, or... Oh, whatever, just let it be :)

    Actually, if I get really bored, I'll have to setup freevo and MythTV on one, or several of my PCs, to turn them into more tivos (although that would probably also mean that I'd have to shell out some bucks to buy a small and quiet computer, and I have that stupid bet with myself that I have so much hardware already that I don't need to buy more computers (and I haven't bought a computer in more than 5 years, everything I have is from excess spare parts that I put together).
    Anyway, I already have a Tivo and ReplayTV, and I don't *really* need to be watching more TV, and I don't really have the time to get bored, but you never know :)
    π 2004-11-27 23:18 by Merlin in Linux

    Current Music: Paul Oakenfold - Essential Mix - Live in Havana, Cuba - 1999-02-21
    Current Mood: well, I'm pissed off, screw you guys!

    It took me more than 3H to upgrade firefox from 0.8 to 1.0, ultimately due to some trace of the old package preventing the new one from installing.
    After many hours of tinkering, web searches, filesystem inspections, strace logs and so forth, the fix ended up being to manually run dpkg --purge mozilla-firefox, as apt-get remove wasn't good enough.
    Sometimes, linux doesn't rule, not even debian (see, I don't just badmouth windows :)
    At least, I still maintain my track record of never having had to re-install linux for any reason (which isn't true of windows)
    π 2005-04-21 01:17 by Merlin in Linux

    The conference is going well, it's good to see my international linux hacker buddies again (some actually live close to me, but I only get to see them in Australia and Ottawa, funny that)

    Yesterday was the good old Geeks vs Nerds game show. I had ended up on the judge pannel at linuxworld in the past, and was one of the contestants this time, along with ext2 hacker and former coworker Ted T'so. On the other side were 4 contestants form the Ubuntu team I had just had lunch with the previous day to talk shop.
    It was a fun game, Jemery Allison as game show host was just great, and among the questions I answered, I made the mistake of giving the correct answer to what the origin of spam was (Monty Python, the meaning of life), and got a nice viking hat to wear while singing the spam song.









    As for my talk on fighting spam with Exim and SA-Exim, it went well.


    More pages: July 2002 February 2004 March 2004 November 2004 April 2005 August 2005 January 2006 July 2006 August 2007 November 2007 December 2007 January 2008 October 2008 November 2008 December 2008 January 2009 May 2009 July 2009 August 2009 September 2009 November 2009 December 2009 January 2010 March 2010 April 2010 June 2010 August 2010 October 2010 January 2011 July 2011 August 2011 December 2011 January 2012 March 2012 May 2012 August 2012 December 2012 January 2013 March 2013 May 2013 September 2013 November 2013 January 2014 March 2014 April 2014 May 2014 October 2014 January 2015 March 2015 May 2015 January 2016 February 2016 March 2016 June 2016 July 2016 August 2016 October 2016 January 2017 September 2017 January 2018 March 2018 December 2018 January 2019 August 2019 January 2020 May 2020 January 2021 September 2021 March 2023 April 2023 December 2023 June 2024 September 2024 November 2024 July 2025 August 2025 October 2025 November 2025 April 2026

    Contact Email