From: Rob Landley <rob@landley.net>
To: musl@lists.openwall.com
Subject: embedded newbies site.
Date: Mon, 15 Jul 2013 21:03:34 -0500 [thread overview]
Message-ID: <1373940214.3719.5@driftwood> (raw)
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
next reply other threads:[~2013-07-16 2:03 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-16 2:03 Rob Landley [this message]
2013-07-16 3:18 ` Strake
2013-07-17 12:07 ` LM
2013-07-17 13:58 ` Rich Felker
2013-07-20 15:17 ` James B
2013-07-22 12:27 ` Andrew Bradford
2013-07-22 4:40 ` Rob Landley
2013-07-23 0:12 ` Strake
2013-07-27 0:58 ` Rob Landley
2013-07-27 2:01 ` Strake
2013-07-27 2:50 ` Rich Felker
2013-07-29 20:01 ` Rob Landley
2013-07-29 19:54 ` Rob Landley
2013-07-30 1:35 ` Strake
2013-08-01 6:20 ` Rob Landley
2013-08-03 16:52 ` Strake
2013-07-16 11:50 ` LM
2013-07-16 13:56 ` Szabolcs Nagy
2013-07-16 14:00 ` Rich Felker
2013-07-16 17:49 ` Strake
2013-07-22 6:00 ` Rob Landley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1373940214.3719.5@driftwood \
--to=rob@landley.net \
--cc=musl@lists.openwall.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).