Mercurial > hg > aboriginal
comparison www/about.html @ 1781:b27851ab2795 draft
Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
author | Rob Landley <rob@landley.net> |
---|---|
date | Tue, 04 Aug 2015 14:40:20 -0500 |
parents | 5a57035b1946 |
children | 1ba206595781 |
comparison
equal
deleted
inserted
replaced
1780:af5da3b293cb | 1781:b27851ab2795 |
---|---|
34 <p>The build is modular; each section can be bypassed or replaced if desired. | 34 <p>The build is modular; each section can be bypassed or replaced if desired. |
35 The build offers a number of <a href=/hg/aboriginal/file/tip/config>configuration | 35 The build offers a number of <a href=/hg/aboriginal/file/tip/config>configuration |
36 options</a>, but if you don't want to run the build yourself you can download | 36 options</a>, but if you don't want to run the build yourself you can download |
37 <a href=downloads/binaries>binary system images</a> to play with, built for | 37 <a href=downloads/binaries>binary system images</a> to play with, built for |
38 each target with the default options.</p> | 38 each target with the default options.</p> |
39 | |
40 <p>(Note: the goal of the 2.0 release is to <a href=#migrate>migrate</a> | |
41 from busybox, uClibc, and gcc/binutils to toybox, musl-libc, and | |
42 lvm/lld.)</p> | |
39 | 43 |
40 <h2>Using system images.</h2> | 44 <h2>Using system images.</h2> |
41 | 45 |
42 <p>Each system image tarball contains a wrapper script <b>./run-emulator.sh</b> | 46 <p>Each system image tarball contains a wrapper script <b>./run-emulator.sh</b> |
43 which boots it to shell prompt. (This requires the emulator QEMU to be | 47 which boots it to shell prompt. (This requires the emulator QEMU to be |
115 using the Mercurial source control system. This includes RSS feeds for | 119 using the Mercurial source control system. This includes RSS feeds for |
116 <a href=/hg/aboriginal/rss-log>each checkin</a> | 120 <a href=/hg/aboriginal/rss-log>each checkin</a> |
117 and for <a href=/hg/aboriginal/rss-tags>new releases</a>.</p> | 121 and for <a href=/hg/aboriginal/rss-tags>new releases</a>.</p> |
118 | 122 |
119 <p>Questions about Aboriginal Linux should be addressed to the project's | 123 <p>Questions about Aboriginal Linux should be addressed to the project's |
120 maintainer (rob at landley dot net), who has a | 124 mailing list, or to the maintainer (rob at landley dot net) who has a |
121 <a href=/notes.html>blog</a> that often includes | 125 <a href=/notes.html>blog</a> that often includes |
122 notes about ongoing Aboriginal Linux development.</p> | 126 notes about ongoing Aboriginal Linux development.</p> |
123 | 127 |
124 <b><h1>Design goals</h1></b> | 128 <b><h1>Design goals</h1></b> |
125 | 129 |
286 | 290 |
287 <p>Now that the 1.0 release is out, what are the project's new goals?</p> | 291 <p>Now that the 1.0 release is out, what are the project's new goals?</p> |
288 | 292 |
289 <table border=1><tr><td bgcolor="#c0c0ff"> | 293 <table border=1><tr><td bgcolor="#c0c0ff"> |
290 <ul style="margin-bottom:0px;"> | 294 <ul style="margin-bottom:0px;"> |
291 <li>Untangle hairball build systems into distinct layers.</li> | 295 <li><a href="#migrate">Move from busybox, uclibc, and gcc/binutils to toybox, musl, and llvm.</a></li> |
292 <li>Make Android self-hosting</li> | 296 <li><a href="#hairball">Untangle distro build build system hairballs into distinct layers.</a></li> |
297 <li><a href="#selfhost">Make Android self-hosting</a></li> | |
293 </ul> | 298 </ul> |
294 </td></tr></table> | 299 </td></tr></table> |
295 | 300 |
301 <a name=migrate> | |
302 <h2><b>Move from busybox, uclibc, and gcc/binutils to toybox, musl, | |
303 and llvm (then qcc).</b></h2> | |
304 | |
305 <p>Now that we've got a simple development environment working, we can make | |
306 it simpler by moving to better packages. Most of this project's new | |
307 development effort is going into the upstream versions of those packages | |
308 until they're ready for use here. In the meantime we're maintaining what | |
309 works, but only really upgrading the kernel version and slowly switching | |
310 from busybox to toybox one command at a time.)</p> | |
311 | |
312 <p><b>uClibc:</b> The uClibc project's <a href=http://lists.uclibc.org/pipermail/uclibc/2007-September/039215.html>chronic development problems</a> resulted in multiple | |
313 year-long gaps between releases, and after the may 2012 release more | |
314 than three years went by without a release during which time | |
315 <a href=http://musl-libc.org>musl-libc</a> went | |
316 from "git init" to a 1.0 release. At this point it doesn't matter | |
317 if uClibc did get another release out, <a href=http://lists.uclibc.org/pipermail/uclibc/2015-May/048989.html>it's over</a>, musl is the more interesting | |
318 project. (Its limitations are lack of target support, but it's easy to | |
319 port musl to new targets and very hard to clean up the mess uClibc has | |
320 become.)</p> | |
321 | |
322 <p><b>toybox:</b> The maintainer of Aboriginal Linux <a href=history.html>used to maintain</a> | |
323 busybox, but <a href=http://lwn.net/Articles/202106/>left that project</a> | |
324 and went on to create <a href=http://landley.net/toybox>toybox</a> for | |
325 reasons explained at length elsewhere | |
326 (<a href=https://www.youtube.com/watch?v=SGmtP5Lg_t0>video</a>, <a href=http://landley.net/talks/celf-2013.txt>outline</a>, | |
327 <a href=https://lwn.net/Articles/629362/>merged into Android</a>).</p> | |
328 | |
329 <p>The toybox 1.0 release should include a shell capable of replacing | |
330 bash, and may include a make implementation (or in qcc, below). This | |
331 would eliminate two more packages currently used by Aboriginal Linux.</p> | |
332 | |
333 <p><b>llvm:</b> When gcc and binutils went GPLv3, Aboriginal Linux froze | |
334 on the last GPLv2 releases, essentially maintaining its own fork of | |
335 those projects. Several other projects <a href=http://lastgplv2.org>did | |
336 the same</a> but most of those have since | |
337 <a href=http://llvm.linuxfoundation.org>switched to llvm</a>.</p> | |
338 | |
339 <p>Unfortunately, configuring and building llvm is | |
340 <a href=http://ellcc.org/blog/?p=13246>unnecessarily hard</a> (among | |
341 other things because it's not just implemented in C++ but the 2013 | |
342 C++ spec, so you need gcc 4.7 or newer to bootstrap it), and nobody seems | |
343 to have worked out how to canadian cross native compilers out of it yet. | |
344 But other alternatives like <a href=http://pcc.ludd.ltu.se/>pcc</a> | |
345 or <a href=http://tinycc.org>tinycc</a> are both less capable and less | |
346 actively developed; since the FSF fell on its sword with GPLv3, | |
347 the new emerging standard is LLVM.</p> | |
348 | |
349 <p><b>qcc:</b> In the long run, we'd like to put together a new compiler, | |
350 <a href=http://landley.net/qcc>qcc</a>, | |
351 but won't have development effort to spare for it before toybox's 1.0 | |
352 release. Its goal is to combine tinycc and QEMU's Tiny Code Generator into | |
353 a single multicall binary toolchain (cc, ld, as, strip and so on in a single | |
354 executable replacing both the gcc and binutils packages) that supports all | |
355 the output formats QEMU can emulate. (As a single-pass compiler with | |
356 no intermediate format it wouldn't optimize well, but could bootstrap | |
357 a native compiler that would.)</p> | |
358 | |
359 <p>Additional goals for qcc would be to absorb ccwrap.c, grow built-in | |
360 distcc equivalent functionality, and an updated rewrite of cfront to | |
361 compile C++ code (and thus natively bootstrap LLVM). | |
362 | |
363 <p>Finishing the full development slate would bring the total number of | |
364 Aboriginal Linux packages down to four: linux, toybox, musl, and qcc.</p> | |
365 | |
366 <p>(Yes, reducing dependency on GPL software and avoiding GPLv3 entirely | |
367 is a common theme of the above package switches, there's a reason for | |
368 that: <a href=https://archive.org/download/OhioLinuxfest2013/24-Rob_Landley-The_Rise_and_Fall_of_Copyleft.mp3>audio</a>, | |
369 <a href=http://landley.net/talks/ohio-2013.txt>outline</a>, see also | |
370 <a href=#selfhost>Android self-hosting</a> below.)</p> | |
371 | |
296 <a name=hairball> | 372 <a name=hairball> |
297 | 373 <h2><b>Untangle distro build system hairballs into distinct layers.</b></h2> |
298 <h2><b>Untangle hairball build systems into distinct layers.</b></h2> | |
299 | 374 |
300 <p>The goal here is to separate what packages you can build from where and how | 375 <p>The goal here is to separate what packages you can build from where and how |
301 you can build them.</p> | 376 you can build them.</p> |
302 | 377 |
303 <p>For years, Red Hat only built under Red Hat, Debian only built under Debian, | 378 <p>For years, Red Hat only built under Red Hat, Debian only built under Debian, |
420 is also a minimal stub providing little functionality. Part of this is | 495 is also a minimal stub providing little functionality. Part of this is |
421 intentional: Google is shipping a billion broadband-connected unix machines, | 496 intentional: Google is shipping a billion broadband-connected unix machines, |
422 none of which are administered by a competent sysadmin. So for security | 497 none of which are administered by a competent sysadmin. So for security |
423 reasons, Android is locked down with minimal functionality outside the Java | 498 reasons, Android is locked down with minimal functionality outside the Java |
424 VM sandbox, providing less of an attack surface for viruses and trojans. | 499 VM sandbox, providing less of an attack surface for viruses and trojans. |
425 In theory the <a href=http://lxc.sf.net>Linux Containers</a> infrastructure | 500 In theory the <a href=http://linuxcontainers.org>Linux Containers</a> |
426 may eventually provide a solution for sandboxing applications, but the | 501 infrastructure may eventually provide a solution for sandboxing applications, |
427 base OS needs to be pretty bulletproof if a billion people are going to | 502 but the base OS needs to be pretty bulletproof if a billion people are going |
428 run code they don't deeply understand connected to broadband internet 24/7.</p> | 503 to run code they don't deeply understand connected to broadband internet |
504 24/7.</p> | |
429 | 505 |
430 <p>Thus replacement packages for the C library and posix command line | 506 <p>Thus replacement packages for the C library and posix command line |
431 should be clean simple code easy to audit for security concerns. But it | 507 should be clean simple code easy to audit for security concerns. But it |
432 must also provide functionality that bionic and toolbox do not | 508 must also provide functionality that bionic and toolbox do not |
433 attempt, and do not provide a good base for. The musl libc and toybox | 509 attempt, and do not provide a good base for. The musl libc and toybox |