Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1373940214.3719.5@driftwood>
Date: Mon, 15 Jul 2013 21:03:34 -0500
From: Rob Landley <rob@...dley.net>
To: musl@...ts.openwall.com
Subject: embedded newbies site.

As I was ruminating on IRC:

Once upon a time the busybox/uClibc community provided a condensation  
nuclei for most embedded Linux development: website, mailing list, and  
#uclibc irc channel here on freenode. But that fell apart in 2005  
(buildroot was one project too many, openwrt was separate and based on  
the horrible linksys build system, various corporate efforts like Maemo  
and Moblin and OpenMoko did their own thing...)

A lot of the stuff I learned about embedded development would be hard  
to replicate today because there's no community aimed at bringing  
newbies up to speed on this stuff. I know we've got a wiki page  
collecting other interesting packages that work with musl, but there's  
more to it than that.

My path to embedded development went like something this:

1) remove unnecessary packages from existing distros
2) copy files into an empty directory to make a working chroot that  
runs my app
3) build Linux From Scratch from source
4) swap in busybox and uClibc in LFS, remove unnecessary stuff,  
customize result

It would be nice to have a site walking people through these steps, and  
hosting an "Embedded Linux From Scratch" as a wiki, and with associated  
mailing list and IRC channel. (It was sort of #edev for a while, but  
now #musl is more active but half the discussion on it is off topic...)

I'd like an explicit a place to collect and preserve information about  
this sort of thing, and a place we can send newbies to ask all the  
stupid questions. The main page should teach somebody what embedded  
development _is_ and how to do it, starting with how to build and  
install the simplest Linux system that boots to a shell prompt (three  
packages: linux, musl, and toybox).

Then there should be additional modules people can pick and choose from:
   - analyzing an existing system
     - creating a chroot with ldd
     - your friend strace
     - why PID 1 is special, init via shell script, classic system V  
init.
     - what's in /etc, /var, /usr, /bin, /lib, /tmp
   - intro to relevant standards
     - what/where are posix, lsb, fhs, elf... plus a ~3 paragraph  
summary of each.
     - a tour of libc
       - readelf -a, static vs dynamic, the dynamic linker
       - man 2 vs man 3, stdio subsystem, -lpthread
     - a tour of the kernel
       - yeah yeah, can 'o worms, but  
http://kernel.org/doc/single/lki-single.html
         needs a brand new version for 3.x.
     - a tour of compiler toolchains
       - the six paths, why a docbook->pdf converter and toolchain  
aren't different.
   - creating a development environment (building binutils, gcc,  
make...)
     - requirements for self-hosting
     - requirements for natively building Linux From Scratch
     - cross vs native compiling
       - bootstrapping to native compiling under emulation.
   - cross compiling for non-x86 systems (with qemu)
     - bootloaders, jtags,
   - booting a simple gui
     - fishing the x11 stuff out of BLFS, booting fvwm or dwm or  
something.
   - getting client-side networking working
     - ifconfig, route, iwlist, iwconfig, maybe wpa-supplicant...
   - setting up a server
     - iptables
     - apache, postfix, samba
   - reproducing android userspace
   - root vs non-root
     - processes, files, suid, sgid, sticky bit
   - security nuttiness
     - selinux, extended attributes, apparmor, capability bits
     - containers: not doing any of that
       - why "users" and "groups" wasn't good enough.

- efficient (elegant) programming
   - Why C and scritpting languages, why NOT C++ and autoconf
   - tradeoffs
     - code reuse
     - transaction granularity
     - taking advantage of SMP without going crazy

Yeah yeah, a lot of this is listing stuff I could write, but the point  
is there's lots of stuff I can't write and don't know, and there should  
be other people who can answer questions...

I bump into stuff like suckless and hope it'll turn into this, but so  
far it hasn't...

Rob

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.