|
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.