The Debian Women project is pleased to announce the -start of a series of training sessions to be held via IRC in the Debian Women IRC channel, #debian-women on irc.debian.org
The first session has been scheduled for Thursday, 18th November at 20:00 UTC. Lars Wirzenius, will give an introductory lesson titled Introduction to Debian Packaging .
The main goal of this initiative is to encourage more people, specifically women, to contribute to Debian while introducing them to different aspects of the Debian Project. Topics will span a wide range of subjects related to daily Debian maintenance efforts as well as advanced tasks and are open to everybody, regardless of gender or previous involvements in the community.
Future sessions will be held on a regular basis, and will cover collaborative maintenance with git, Python modules and applications packaging, and many more. Please visit the Training Sessions wiki page regularly to check the up-to-date agenda and follow our group on identi.ca. You may also refer to the wiki to suggest new topics or sign up yourself as a trainer: we are always looking for more people to share knowledge and complete the schedule, so don t be shy!
The Debian Women project aims to get more women to participate in Debian, as packagers, bug reporters, technical documentation writers, bug fixers, translators, artists and in any other area that helps the development of Debian. These goals are achieved through IRC tutorials, a mentoring program, a mailing list and an IRC channel.
The Mentoring Program, allows men and women that want to contribute to Debian but aren t sure where or how to start, to get some help with their first steps.
There have been at least 38 women that have contributed in packaging software for Debian, and there are currently 11 female Debian Developers and 1 Debian Maintainer. We d like to raise those numbers to 50 packagers by the end of 2011, and 20 Debian Developers by the end of 2012.
There are some other interesting statistics about the current female participation in Debian.
We are also interested in getting more women to file and fix bugs, translate debconf templates or package descriptions, contribute to the release notes, as well as participate in any other areas of the Debian project. In order to do this, we will be holding some IRC training sessions in the near future, to help people get started. We are currently making the list of subjects and trainers, we ll publish more news about this once the first sessions are scheduled.
For more information you can join the IRC channel #debian-women on irc.oftc.net, or subscribe to the debian-women mailing list. If you are a Spanish speaker, you can also join the IRC channel #debian-mujeres on irc.oftc.net.
$ gcc -g -o main main.c $ readelf --sections ./main grep symtab  .symtab SYMTAB 00000000 000f48 000490 10 37 53 4 $ cp main main.debug $ strip --only-keep-debug main.debug $ readelf --sections ./main.debug grep symtab  .symtab SYMTAB 00000000 000b1c 000490 10 37 53 4 $ strip --strip-debug ./main $ readelf --sections ./main.debug grep symtab  .symtab SYMTAB 00000000 000b1c 000490 10 37 53 4
$ gcc -g -o main main.c $ eu-strip -g -f main.debug main $ strip ./main $ gdb ./main GNU gdb (GDB) 7.1-debian ... (gdb) break foo Breakpoint 1 at 0x8048397: file main.c, line 2. (gdb) r Starting program: /home/ianw/tmp/symtab/main Breakpoint 1, foo (i=100) at main.c:2 2return i + 100; (gdb) back #0 foo (i=100) at main.c:2 #1 0x080483b1 in main () at main.c:6 #2 0x423f1c76 in __libc_start_main (main=Could not find the frame base for "__libc_start_main". ) at libc-start.c:228 #3 0x08048301 in ?? ()
$ gcc -g -o main main.c $ eu-strip -g -f main.debug main $ readelf --sections ./main grep debuglink  .gnu_debuglink PROGBITS 00000000 000bd8 000010 00 0 0 4 $ eu-strip main $ readelf --sections ./main grep debuglink $ gcc -g -o main main.c $ eu-strip -g -f main.debug main $ strip main $ readelf --sections ./main grep debuglink  .gnu_debuglink PROGBITS 00000000 0005d8 000010 00 0 0 4
ianw@jj:/tmp/bsymbolic$ cat Makefile all: test test-bsymbolic clean: rm -f *.so test testsym liboverride.so : liboverride.c $(CC) -Wall -O2 -shared -fPIC -o liboverride.so $< libtest.so : libtest.c $(CC) -Wall -O2 -shared -fPIC -o libtest.so $< libtest-bsymbolic.so : libtest.c $(CC) -Wall -O2 -shared -fPIC -Wl,-Bsymbolic -o $@ $< test : test.c libtest.so liboverride.so $(CC) -Wall -O2 -L. -Wl,-rpath=. -ltest -o $@ $< test-bsymbolic : test.c libtest-bsymbolic.so liboverride.so $(CC) -Wall -O2 -L. -Wl,-rpath=. -ltest-bsymbolic -o $@ $<
$ cat liboverride.c #include <stdio.h> int foo(void) printf("override foo called\n"); return 0;
$ cat libtest.c #include <stdio.h> int foo(void) printf("libtest foo called\n"); return 1; int test_foo(void) return foo();
$ cat test.c #include <stdio.h> int test_foo(void); int main(void) printf("%d\n", test_foo()); return 0;
$ ./test libtest foo called 1 $ ./test-bsymbolic libtest foo called 1 $ LD_PRELOAD=liboverride.so ./test override foo called 0 $ LD_PRELOAD=liboverride.so ./test-bsymbolic libtest foo called 1
ianw@jj:/tmp/bsymbolic$ readelf --dynamic ./libtest-bsymbolic.so Dynamic section at offset 0x550 contains 22 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x00000010 (SYMBOLIC) 0x0 ...
$ objdump --disassemble-all ./libtest.so Disassembly of section .plt: [... blah ...] 0000039c <foo>: 39c: ff a3 10 00 00 00 jmp *0x10(%ebx) 3a2: 68 08 00 00 00 push $0x8 3a7: e9 d0 ff ff ff jmp 37c <_init+0x30>
$ objdump --disassemble-all ./libtest-bsymbolic.so Disassembly of section .plt: 00000374 <__gmon_start__@plt-0x10>: 374: ff b3 04 00 00 00 pushl 0x4(%ebx) 37a: ff a3 08 00 00 00 jmp *0x8(%ebx) 380: 00 00 add %al,(%eax) ... 00000384 <__gmon_start__@plt>: 384: ff a3 0c 00 00 00 jmp *0xc(%ebx) 38a: 68 00 00 00 00 push $0x0 38f: e9 e0 ff ff ff jmp 374 <_init+0x30> 00000394 <puts>: 394: ff a3 10 00 00 00 jmp *0x10(%ebx) 39a: 68 08 00 00 00 push $0x8 39f: e9 d0 ff ff ff jmp 374 <_init+0x30> 000003a4 <__cxa_finalize@plt>: 3a4: ff a3 14 00 00 00 jmp *0x14(%ebx) 3aa: 68 10 00 00 00 push $0x10 3af: e9 c0 ff ff ff jmp 374 <_init+0x30>
Currently the most common methods used to run Debian on these systems is to install OpenWRT or a similar firmware, add disk space either by USB storage or NFS, create a debian chroot by either running cdebootstrap from inside OpenWRT or debootstrap --foreign on a PC, and running Debian from this chroot. For example, instructions for the WLHDD.I'm not sure whether this is because DebianWRT is experimental, or because its goal is to use routers as cheap general computers. Either way, it sounds way too complicated and/or fragile for what I'm interested in (i.e., a wireless router with better software). The goal here is to get something that does a better job than the built-in WRT firmware, but doesn't require too much tinkering to get working or to maintain. I have plenty of outlets for my tinkering urges already. Nothing here was exactly difficult, but it was hard to find all the information I needed to get things working. Hopefully documenting the steps I went through here will save someone else some time. Step 1: acquire the firmware This was trickier than you might think. If you click on the
downloadlink at the OpenWRT web site, you end up at the top of an FTP server populated with a vast quantity of stuff. Worse, when you find the actual firmware images, you'll quickly discover that there are piles and piles of them divided between sixteen directories, and no guidance as to which one to pick. And picking the wrong one will turn your beautiful router into a doorstop. Luckily, the OpenWRT documentation contains a section called "Getting Started". Unluckily, that section consists of the following text:
1.1 Getting started 1.1.1 Installation 1.1.2 Initial configuration 1.1.3 Failsafe modeWhoops, someone forgot to execute on a TODO. Undeterred, I consulted the usual fallback reference, Google. It pointed me at several references, some of which were hidden on other parts of the OpenWRT site. Armed with these, I was able to determine that:
kamikazetop-level director, the latest version's subdirectory, and the
bcrm-2.4directory under the version (the link is to 8.09.2, which is current as of March 6, 2010). Apparently the
bcrm47xxdirectory doesn't have wireless support; it helpfully contains a file called
NO-BROADCOM-WIRELESSto warn you off, but unhelpfully doesn't include any additional information in that file (like what exactly is broken or that you can find a working firmware in a sibling directory) ... oh well.
openwrt-wrt54g-squashfs.bin, even though it doesn't match the model number of the router. This directory could use a README file explaining which hardware is supported by each of the dozen or so firmware files it contains.
/etc/dropbear/authorized_keysthat's exactly like OpenSSH's per-user
authorized_keysfile. No idea what would happen if I had multiple users, but I won't.
ifup wan. That fixed the problem. I still don't know why.
readlog. It's basically
dmesg for syslog files; it shows the most recent lines written to syslog. This is useful because there isn't a real syslog file, due to the fact that there would be no room to store it on the 54GL.
option encryption none, wep, psk, psk2, wpa, wpa2I wanted WPA2 encryption, so I entered
. And nothing worked. After a good hour of trying different options on the client, swapping software components in and out on the router, experimenting with the encryption key syntax, and crawling Google, I finally found my answer. If you just want WPA2 encryption, you must not use
as the encryption type. Instead, use
. It turns out out that
use WPA2 and also use an external RADIUS server for authentication.
psk2is the system you're familiar with from a typical consumer wireless router.
forgetsthat the music server is there. Either way, I've spent about as much time fighting this as I can afford. One lingering worry I have is security; unlike Debian, which has both a security mailing list and tools to inform me when I need to install a security update, the OpenWRT firmware doesn't seem to have any mechanism for distributing security notices. True, there is an
openwrt-security-announcelist, but it appears to be entirely unused, as is
openwrt-announce. Something to keep an eye on, then. Also (file under
note to self), I need to remember to verify that the router isn't exposing services to the outside world. The default
iptablesconfiguration is hideously complex; with just a quick glance, it could be setting up a floral shop for all I can tell. I'll need to test this empirically and maybe analyze the rules in more depth.
iface wlan0 inet dhcp # Useful with ifup -v # wpa-debug-level 3 wpa-conf /etc/wpa_supplicant.conf
network= ssid="your_ssid" psk="your_password" key_mgmt=WPA-PSK proto=WPA