Compare commits
463 Commits
Author | SHA1 | Date |
---|---|---|
Ehmry - | 26d95dc1d3 | |
Ehmry - | d43bce0660 | |
Ehmry - | 88ffe8c1f2 | |
Ehmry - | c9b9364e96 | |
Ehmry - | 99f15358e2 | |
Ehmry - | 3ef6db31ee | |
Christian Helmuth | 6006051fb9 | |
Christian Helmuth | 63048fb89f | |
Norman Feske | a90aa78c6e | |
Stefan Kalkowski | 70acd4b2d5 | |
Stefan Kalkowski | 1a80f166c5 | |
Stefan Kalkowski | 935dcf8b18 | |
Stefan Kalkowski | b915b0adc4 | |
Stefan Kalkowski | 6e6b671a66 | |
Stefan Kalkowski | e1333c9421 | |
Norman Feske | ab8ef5750d | |
Norman Feske | 7c20ba84e4 | |
Stefan Thöni | 78497c03ca | |
Norman Feske | 128ba65109 | |
Alexander Boettcher | f80b4b9fd9 | |
Pirmin Duss | 7f6b6d7e13 | |
Pirmin Duss | 51104454aa | |
Christian Prochaska | 2f47bbde30 | |
Norman Feske | b078224753 | |
Norman Feske | 0f27d139bd | |
Norman Feske | 77a875735a | |
Christian Helmuth | 32753c3f69 | |
Christian Helmuth | 7d2eb71094 | |
Norman Feske | 0de54cddaa | |
Norman Feske | 4002653334 | |
Ehmry - | adb48b5c9e | |
Ehmry - | 7f928a6573 | |
Josef Söntgen | f1427fc02a | |
Josef Söntgen | 8ce798abed | |
Norman Feske | dd0c1575f5 | |
Norman Feske | 4b9c1d8f2b | |
Norman Feske | be65c4acd2 | |
Norman Feske | d22b95ded3 | |
Christian Helmuth | c11d9b7b5c | |
Christian Helmuth | 42fddf8390 | |
Christian Helmuth | 589b416ca8 | |
Christian Helmuth | 4738d77c88 | |
Norman Feske | 64bc008c3a | |
Christian Helmuth | 236e02a2dd | |
Norman Feske | cb5b688eb9 | |
Norman Feske | c39a342fe5 | |
Norman Feske | 07502ce6bb | |
Norman Feske | 48b2456845 | |
Christian Helmuth | 894c7411e7 | |
Sebastian Sumpf | ea78d85d35 | |
Norman Feske | 04aeaa25e5 | |
Norman Feske | 9d67f9fc8e | |
Christian Prochaska | 1cc7277996 | |
Norman Feske | a9f0e47ea3 | |
Norman Feske | bbc21cf063 | |
Christian Helmuth | f722aa3325 | |
Norman Feske | eb0a33302a | |
Christian Prochaska | 151828752c | |
Christian Prochaska | 6a8fb48c13 | |
Christian Prochaska | 07b87f6f1f | |
Christian Prochaska | 905b0c4aef | |
Christian Prochaska | 6505ce47ae | |
Christian Prochaska | 31d7b3eb97 | |
Alexander Boettcher | 80d89c20fd | |
Alexander Boettcher | 1a94338389 | |
Norman Feske | dd899fde29 | |
Norman Feske | 1bf796d69a | |
Norman Feske | c12d76686e | |
Stefan Kalkowski | 199821a247 | |
Norman Feske | 840f383e46 | |
Norman Feske | 1459085a4d | |
Norman Feske | 6f6340644b | |
Norman Feske | b134867f31 | |
Norman Feske | 01bf32b998 | |
Norman Feske | f14cc2edab | |
Norman Feske | f0c4fc1e22 | |
Alexander Boettcher | f891f4c963 | |
Stefan Kalkowski | 9f28f4f803 | |
Stefan Kalkowski | 0e49336b96 | |
Stefan Kalkowski | 941e918b46 | |
Stefan Kalkowski | 74e75d7fbc | |
Stefan Kalkowski | 58db6542f8 | |
Tomasz Gajewski | fca2a05adf | |
Tomasz Gajewski | 4639978b3a | |
Tomasz Gajewski | 870d348d77 | |
Tomasz Gajewski | db8ec81e9f | |
Tomasz Gajewski | 1d9a2dce94 | |
Roman Iten | 12ea494477 | |
Christian Helmuth | b60b591d06 | |
Christian Helmuth | 9fbc68bda1 | |
Norman Feske | 132569d12b | |
Alexander Boettcher | 319d2be1af | |
Alexander Boettcher | 29911cf114 | |
Alexander Boettcher | 8be72b0be1 | |
Ehmry - | 6359445a8e | |
Christian Helmuth | c783764d0b | |
Stefan Kalkowski | ff378a8c5b | |
Norman Feske | 03c3040a1d | |
Christian Helmuth | cc4e21e7a7 | |
Christian Helmuth | bb34aafa45 | |
Norman Feske | 6dfd268ef1 | |
Christian Helmuth | 838c5ba7de | |
Christian Helmuth | 4ab990ad5b | |
Alexander Boettcher | 13cd25e7b0 | |
Alexander Boettcher | 2b41323fe6 | |
Norman Feske | 7bf47b1982 | |
Alexander Boettcher | 22d71d5a8b | |
Alexander Boettcher | 3956530634 | |
Alexander Boettcher | e87d60ddf7 | |
Norman Feske | 85a1f91f59 | |
Alexander Boettcher | dc90740549 | |
Tomasz Gajewski | d111af922a | |
Norman Feske | 40c21b6d0f | |
Norman Feske | 4dd110ce5e | |
Norman Feske | d6bdeed38f | |
Stefan Thöni | e8fb7ad470 | |
Stefan Thöni | 5b68286e07 | |
Stefan Thöni | bb12d79ae9 | |
Alexander Boettcher | d657b61f1b | |
Norman Feske | 42a77c531a | |
Norman Feske | 5347278136 | |
Norman Feske | ca5c25ac04 | |
Norman Feske | bb35b997b8 | |
Norman Feske | 9c95e4bb4f | |
Norman Feske | e63195a940 | |
Norman Feske | 0836293d1a | |
Norman Feske | 330672e030 | |
Josef Söntgen | 150d143755 | |
Christian Helmuth | e63c5e6c69 | |
Christian Helmuth | 69080014b0 | |
Stefan Kalkowski | f051065582 | |
Piotr Tworek | 585c4b8c69 | |
Piotr Tworek | dad1de1865 | |
Pirmin Duss | 6f1357c6f8 | |
Josef Söntgen | 336228f357 | |
Josef Söntgen | df553e9360 | |
Josef Söntgen | ddc0caa605 | |
Christian Helmuth | 0df358a550 | |
Pirmin Duss | 9da428dccf | |
Norman Feske | 46fa8197a2 | |
Christian Helmuth | 52d798ff40 | |
Stefan Kalkowski | 256b2fa3e1 | |
Norman Feske | d8bcaa4fa4 | |
Ehmry - | 7a5841b637 | |
Tomasz Gajewski | 358fdd54b9 | |
Ehmry - | 45a74023a7 | |
Alexander Boettcher | 6f3f46c7ba | |
Alexander Boettcher | 2064ffd64b | |
Norman Feske | 685bd763f9 | |
Norman Feske | 0f3ac4cb9f | |
Norman Feske | 208294b0d3 | |
Norman Feske | cf052996d3 | |
Norman Feske | 4961c84f12 | |
Norman Feske | 2f598e5680 | |
Norman Feske | 951f484fad | |
Norman Feske | c086bba71a | |
Norman Feske | 5a02b5fd23 | |
Norman Feske | 50a1e540a0 | |
Norman Feske | b8738dee90 | |
Norman Feske | a7e7eeec38 | |
Norman Feske | 1d480e3329 | |
Norman Feske | 3b427824a7 | |
Norman Feske | 3a1f5bc13a | |
Norman Feske | 923c38f7cd | |
Norman Feske | ee6d38a770 | |
Christian Helmuth | dd524b56fa | |
Norman Feske | 4fe4c9aa63 | |
Norman Feske | e3bc77c386 | |
Norman Feske | cacbad1bd8 | |
Norman Feske | cc8552f81e | |
Norman Feske | 34a60b56f6 | |
Norman Feske | 25f7fdcb40 | |
Norman Feske | b6d3063ada | |
Norman Feske | c2cf0ae8c6 | |
Norman Feske | 7f5186d489 | |
Norman Feske | e67f389da1 | |
Norman Feske | 4ebc164c11 | |
Martin Stein | 886d0da57c | |
Norman Feske | 2912096f6e | |
Martin Stein | ba55409c86 | |
Martin Stein | f3185de7f5 | |
Martin Stein | c1b6000248 | |
Martin Stein | 0a468a07a7 | |
Stefan Kalkowski | 6d48b5484d | |
Stefan Kalkowski | 3a862334fc | |
Alexander Boettcher | cd1c0aace3 | |
Sebastian Sumpf | 6e54cad44c | |
Josef Söntgen | a71ef16423 | |
Sebastian Sumpf | 2495a86aff | |
Sebastian Sumpf | 5225d12381 | |
Alexander Boettcher | e096202b1f | |
Alexander Boettcher | 44ace04b95 | |
Alexander Boettcher | 507a34b3d0 | |
Christian Helmuth | 677d9abd07 | |
Christian Helmuth | e66726e931 | |
Christian Helmuth | cda778a94d | |
Sebastian Sumpf | a799a5f978 | |
Sebastian Sumpf | f5a6d85bc2 | |
Christian Prochaska | 8535688605 | |
Johannes Schlatow | 8788f13e11 | |
Johannes Schlatow | aee5b59c51 | |
Christian Helmuth | 66a7e749e8 | |
Norman Feske | e2b9308b11 | |
Alexander Boettcher | 97bbad5aea | |
Christian Helmuth | d452094f43 | |
Piotr Tworek | 139f390317 | |
Ehmry - | 9ee1045aad | |
Norman Feske | 25c85fab18 | |
Norman Feske | 095a0a6439 | |
Christian Helmuth | bf36d9eb48 | |
Norman Feske | 9d24e906a8 | |
Norman Feske | 44e4d1bd6c | |
Norman Feske | ab5770c492 | |
Norman Feske | a90eab8b9a | |
Norman Feske | e54e4dd532 | |
Sebastian Sumpf | c856ba2a49 | |
Christian Prochaska | 1087e3f59e | |
Christian Helmuth | cfb49c7316 | |
Norman Feske | a3fad2e171 | |
Norman Feske | dd5db8484a | |
Christian Helmuth | 5affd51250 | |
Alexander Boettcher | ce27b5ebce | |
Norman Feske | fce9cd8c22 | |
Christian Prochaska | 8faa916d93 | |
Christian Helmuth | e52802162c | |
Josef Söntgen | f3ec246b67 | |
Christian Prochaska | 434c9ceb5d | |
Norman Feske | c3fb81d1a1 | |
Norman Feske | c340f57207 | |
Norman Feske | bbe1bf9c3a | |
Alexander Boettcher | accda1211b | |
Norman Feske | daee1f4cb8 | |
Stefan Kalkowski | 87cb10c558 | |
Norman Feske | 904651ada9 | |
Norman Feske | 1d3ce93107 | |
Sebastian Sumpf | 103dcdeea8 | |
Sebastian Sumpf | f77531138a | |
Sebastian Sumpf | c8b3b060aa | |
Stefan Kalkowski | 7780ee6a34 | |
Stefan Kalkowski | 2e2625e952 | |
Stefan Kalkowski | 55c3eb7c14 | |
Stefan Thöni | a7a9855493 | |
Norman Feske | 5eaaee0dbe | |
Norman Feske | b2bc718c1f | |
Norman Feske | 7118ad494c | |
Norman Feske | 582e0e718c | |
Norman Feske | 1713583a19 | |
Norman Feske | 38aef49428 | |
Alexander Boettcher | a9caf3fbe4 | |
Josef Söntgen | 80ff844dc2 | |
Josef Söntgen | c53be5a3fb | |
Josef Söntgen | 6addd6cf1e | |
Sebastian Sumpf | 3995d2f4a2 | |
Sebastian Sumpf | b95dc611d6 | |
Christian Helmuth | 4cccf74664 | |
Stefan Kalkowski | 8cc48d5688 | |
Stefan Kalkowski | b76bd57ed1 | |
Alexander Boettcher | 2afc218767 | |
Alexander Boettcher | 5bbaa30655 | |
Alexander Boettcher | 5440cd4b50 | |
Alexander Boettcher | e686ff78e9 | |
Alexander Boettcher | 2bd77722c7 | |
Alexander Boettcher | 00f69bc70d | |
Stefan Kalkowski | d1609e771a | |
Norman Feske | 89f813f113 | |
Norman Feske | 9b0fbf000e | |
Stefan Kalkowski | 725d16e18e | |
Martin Stein | e42a205a51 | |
Martin Stein | 0d5f185267 | |
Martin Stein | c146a215fb | |
Martin Stein | eef7b5e168 | |
Martin Stein | a753b6ce46 | |
Martin Stein | 793e12f8f3 | |
Martin Stein | 751e6430fa | |
Martin Stein | 9eb20c2be7 | |
Martin Stein | 5e460394d2 | |
Martin Stein | 88043e144a | |
Martin Stein | 3cc7774fe4 | |
Martin Stein | a04243aaf4 | |
Martin Stein | 5a95183c3e | |
Martin Stein | 6a5aa18a7b | |
Christian Prochaska | 4b3c40f35b | |
Stefan Kalkowski | 79fba6c2ac | |
Tomasz Gajewski | 4f217b19a9 | |
Stefan Kalkowski | 202333c881 | |
Christian Prochaska | 2ce0395fd8 | |
Ehmry - | bbdf181828 | |
Norman Feske | 0181c6025a | |
Norman Feske | 6eff83c1eb | |
Norman Feske | 5aae0f2379 | |
Norman Feske | 49ae4a834f | |
Norman Feske | 5b650434b0 | |
Norman Feske | e612f7cd7d | |
Norman Feske | 7cc4aa2a28 | |
Norman Feske | 60f5d0e34a | |
Norman Feske | 46c5a90ba1 | |
Stefan Kalkowski | 1273c573b6 | |
Norman Feske | 3a2895af19 | |
Norman Feske | 0bffac6c98 | |
Norman Feske | c25de5dba3 | |
Norman Feske | 60edfa4d77 | |
Norman Feske | 52e582132f | |
Norman Feske | a888041ba4 | |
Norman Feske | 844af06782 | |
Norman Feske | 7da3404bd0 | |
Sid Hussmann | 7676f47540 | |
Josef Söntgen | 9d7a58f6a7 | |
Christian Prochaska | 9bd3d2aa5c | |
Christian Prochaska | 28e782dda5 | |
Christian Prochaska | 597098845c | |
Sebastian Sumpf | 8a7deae238 | |
Sebastian Sumpf | 73f2c7043c | |
Sebastian Sumpf | de24035066 | |
Norman Feske | 57ea1dbdd3 | |
Christian Prochaska | 9f73f09cec | |
Martin Stein | d56b21d329 | |
Christian Helmuth | 8d60bc11b5 | |
Christian Helmuth | 604f4c666b | |
Christian Helmuth | ff5175ec76 | |
Christian Helmuth | 6aebd5dd95 | |
Christian Helmuth | 3d4bed3374 | |
Alexander Boettcher | ee7a77643e | |
Alexander Boettcher | 646d6c368c | |
Alexander Boettcher | d96e14fe16 | |
Alexander Boettcher | 3a9d450106 | |
Martin Stein | a73ef9fc06 | |
Stefan Kalkowski | 3016b64fac | |
Stefan Kalkowski | 22498e0b09 | |
Stefan Kalkowski | 79dff674fd | |
Stefan Kalkowski | 56ef7ca9e7 | |
Stefan Kalkowski | 9db50753f1 | |
Stefan Kalkowski | e84e1bbf36 | |
Stefan Kalkowski | fda337a1c0 | |
Stefan Kalkowski | f49f91da08 | |
Christian Helmuth | 90535a1401 | |
Christian Helmuth | 43719b5fd1 | |
Stefan Kalkowski | 2a94f8cdb4 | |
Christian Helmuth | 1e578f1a50 | |
Alexander Boettcher | a036d2373a | |
Norman Feske | a2b303e95a | |
Alexander Boettcher | 7b964fa700 | |
Alexander Boettcher | 72f5f9d133 | |
Christian Prochaska | 186a6bc080 | |
Norman Feske | 567d9f7910 | |
Norman Feske | d70cf314d8 | |
Norman Feske | c6445da654 | |
Norman Feske | 96cde52838 | |
Norman Feske | c67a0d3dd8 | |
Norman Feske | 78c0e5f6b6 | |
Norman Feske | f82e7df0ba | |
Norman Feske | 640a001ab6 | |
Alexander Boettcher | c5c5f8754c | |
Alexander Boettcher | 5be3bf4f26 | |
Alexander Boettcher | d132fc0a73 | |
Christian Helmuth | 285a33c97d | |
Alexander Boettcher | f09ac23144 | |
Alexander Boettcher | 734752d6b5 | |
Christian Prochaska | 4fc6c4ff5c | |
Christian Prochaska | 746d373362 | |
Alexander Boettcher | 2256f5fb4b | |
Christian Prochaska | d8e2c95597 | |
Alexander Boettcher | 6506240642 | |
Sebastian Sumpf | bd284347da | |
Sebastian Sumpf | 3813f9772a | |
Sebastian Sumpf | 1902d1a06b | |
Josef Söntgen | 7ecabb25eb | |
Alexander Boettcher | 5b633a83df | |
Norman Feske | beb8bf498c | |
Norman Feske | de764d8490 | |
Norman Feske | 5635c1318c | |
Norman Feske | 01713c74f9 | |
Norman Feske | 9ec66f0594 | |
Norman Feske | 6947bddd3f | |
Norman Feske | 37ec636018 | |
Norman Feske | 9bba6613e7 | |
Christian Prochaska | d4f246517c | |
Stefan Kalkowski | 5bfebe7a3f | |
Stefan Kalkowski | 3df67362b4 | |
Christian Prochaska | f1042e7fb1 | |
Christian Prochaska | b29112efdf | |
Stefan Kalkowski | fe899eecc7 | |
Norman Feske | c2a2ec121f | |
Norman Feske | e1e1fa23b7 | |
Norman Feske | aee8d35dc4 | |
Christian Helmuth | 4bbbf5d2e3 | |
Norman Feske | ba7e832c5d | |
Norman Feske | bbfc092a31 | |
Norman Feske | de52cf1cdd | |
Norman Feske | 783c05fd6c | |
Norman Feske | 6ae98e2e6d | |
Norman Feske | ffc099eb54 | |
Christian Helmuth | 9321067b68 | |
Christian Prochaska | 0eaa1f7a08 | |
Christian Helmuth | 18f90ca1e3 | |
Christian Helmuth | 9a35743df6 | |
Christian Helmuth | 8d63a3c1f3 | |
Alexander Boettcher | 1ac33caa90 | |
Alexander Boettcher | 1c361bf545 | |
Alexander Boettcher | a41dd48986 | |
Christian Helmuth | b931b67cba | |
Christian Helmuth | 24435e9ca1 | |
Alexander Boettcher | e54ff599ca | |
Sebastian Sumpf | 04969b6be0 | |
Christian Helmuth | 1ddf1dbc25 | |
Christian Helmuth | 8699f5592f | |
Norman Feske | 73d089da36 | |
Christian Prochaska | c8cd09e72c | |
Christian Prochaska | be1ef01f10 | |
Alexander Boettcher | 0a1bc1f4b7 | |
Alexander Boettcher | bcb7f45201 | |
Alexander Boettcher | 33db0e0d4d | |
Christian Helmuth | 504539ad1e | |
Christian Prochaska | a62fce8dc5 | |
Christian Prochaska | 81a78cf1d0 | |
Christian Helmuth | 283135c9cd | |
Sebastian Sumpf | 22d4d5c1c1 | |
Sebastian Sumpf | 9c372c36c1 | |
Sebastian Sumpf | 9767c4db0e | |
Alexander Boettcher | 9812799b24 | |
Alexander Boettcher | d385749ead | |
Christian Helmuth | 23ed5d3936 | |
Christian Helmuth | cebc963396 | |
Norman Feske | 0c8ec41c21 | |
Norman Feske | 9f7b8c1a17 | |
Norman Feske | cd92b32622 | |
Norman Feske | 5853a68904 | |
Norman Feske | ae64830bd5 | |
Norman Feske | e8878eee8a | |
Norman Feske | 3897ddea03 | |
Norman Feske | 6858270517 | |
Norman Feske | 4e57b6eceb | |
Norman Feske | 298f317f44 | |
Norman Feske | 5820ad8309 | |
Norman Feske | b7fbe65ff2 | |
Norman Feske | d1cf216384 | |
Alexander Boettcher | 3011dc5876 | |
Alexander Boettcher | 6e99f00f5c | |
Alexander Boettcher | beb1e084a6 | |
Alexander Boettcher | e34b443c29 | |
Alexander Boettcher | 6b17bb647e | |
Christian Helmuth | 4299b85cdb | |
Sebastian Sumpf | 6dae147785 | |
Sebastian Sumpf | e4255e4c8b | |
Christian Helmuth | 161274f785 | |
Roman Iten | 6145cdcf37 | |
Tomasz Gajewski | b57a4c98cf | |
Ehmry - | a3e43aca87 | |
Norman Feske | 6b6915e304 | |
Alexander Boettcher | 3f83ac5580 | |
Ehmry - | 7f57de1b74 | |
Ehmry - | 648382db74 | |
Ehmry - | 2c510bb7f9 | |
Ehmry - | 23710dff5e | |
Ehmry - | ff0436357b | |
Ehmry - | 091e5157aa | |
Alexander Boettcher | c1e181a407 | |
Stefan Kalkowski | 8f71c90ca8 | |
Norman Feske | f85ec313de | |
Norman Feske | 2aa6471608 | |
Stefan Kalkowski | 9814fc5447 | |
Martin Stein | 3655ea77a3 | |
Johannes Kliemann | 89d35bc41e | |
Johannes Kliemann | 93639532f0 |
6
LICENSE
6
LICENSE
|
@ -41,7 +41,7 @@
|
|||
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
@ -683,7 +683,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
|
@ -698,4 +698,4 @@ specific requirements.
|
|||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
|
|
@ -12,19 +12,19 @@ sCaRvwPZdRCDDdhObkgkMlYROVNdC7ju8jZmB4n5O/5N7Ll7/RVhUWD7KeJu1UTM
|
|||
oNEmhxEMrEcYcHFt8N8YVtJleRMVnsrZBNxOkFnpsPZr02XIQKfYi5tqSaBQZ47h
|
||||
TTtXP3+FEaU+EoJprWqH55Sh97Fg6vuBJEmcGJeMGudFrypTzwqnM22DHwARAQAB
|
||||
tCdKb3NlZiBTw7ZudGdlbiA8Y251a2VAZGVwb3QuZ2Vub2RlLm9yZz6JAlQEEwEI
|
||||
AD4WIQSFq6G0496kOfRE2qnpSz5BlOa1+AUCWpAOsgIbAwUJA8JnAAULCQgHAgYV
|
||||
CAkKCwIEFgIDAQIeAQIXgAAKCRDpSz5BlOa1+NGTEACg69FezAbc9Rzeb7j66NwW
|
||||
3x/Zpi/jbmezMEtCZqAOcR8HJ7C0DN8gmCWPPB6oxAEeyL/i2cUb+9F0fTD6N7OL
|
||||
TSOH75mNlyB9b8D2HdDILnLy4ClEitEOHFLMnlP58PGVtUNgbmsiM6cLLQtlJKvg
|
||||
1xHlBTG9Ic8qgBcd808lLSC1XWN+nufVYBTE2RHNZqGeIWqPG5z1eW/JJO4M3V3j
|
||||
MAw1p5Rpf9G6iWNxURutQOl/ii+97IKmHXX7N6ZRzawMGkOCAGNk1xeI71wCrALv
|
||||
i3m7NmXb6XIJjD88hO5xfjjRO/0Gcw3vdmTXcVNzM1TvWj8ZsU6XjnMvNxa4LHqh
|
||||
MxWuHlX0cAeCOzo1LJZ54f13hJ3YlTCrv68UIoNGRVi1LEbpE0sU0Ycdbw7ur2Gt
|
||||
8Brx5WXv3hXTL8s3fmJzYU3/cFDfXjnaRiMWcNYdvckdHy6R7zPTk1NOvmfkolnO
|
||||
W73ivdbonXpn0YqRGo2L76GdahLaVYn2gEeisqHnyeBCvI2snI+dMlEK0YNFrEkP
|
||||
wgtWnF131Oorn0HMS6mpjcq4su4s5d84KCMGevFnW69oBRG27Bk/fJQiv2dSqkZg
|
||||
+3TnyNApg1G7Bp5uD83mOvJWKdTWAntCJSQGbg1dmEsOBG+Bu7EE5LVBoMH3h/LQ
|
||||
GB7c5NpgNIFQ2DZy2vkOI7kCDQRakA6yARAAws48PKN3BQPEM0M4kTO57/OqwGrA
|
||||
AD4CGwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AWIQSFq6G0496kOfRE2qnpSz5B
|
||||
lOa1+AUCXk6dFAUJB4D1YgAKCRDpSz5BlOa1+JHXEACyB6vfzfuyo8fu1IaGrloC
|
||||
qUUuSfhdleF1tPhZQn9W92bEEoXPfqFUuiNaxeFIXonyiD7wJYdcowdIb6CiNWrx
|
||||
B8yjDQ7yb08sDLlL821I93kByy24Er5hY3QEMuEL3qv8YD/6Bh36Q0aoTXqQXMuQ
|
||||
3AcHp0JI932Oez3q+gEdW7CUe40N9LaTx0A7ZTHe0i8IELkUPFtDg8xibOjZhBMR
|
||||
vlxNUtzQVvC5kT5Wt0w6ZFKPGJguFylaE+TcsTNtiLNS4Z8PmRPgygrWotmprELo
|
||||
2/py/VMxgQb7p4LFj+sNmU9x3ulFO3Efb9cVZVjBMYx5xh83ZiLZ3PvK43Eo+7nm
|
||||
kYQhPinAjNmqng4/ZdQFrayFMkZc4oKCqV6BaYnybbsSn2ZEwVQqpDMeswWXTf9k
|
||||
qC6DONz3ETtyzBEF8cHDpy+BwHRXx+pysGLhIvHS9C3M91j8oXvogZRbw/dEKGX2
|
||||
eWes7nsdHeTbyRJunCCnsXDm0Js8cZcqj3Eu3Kpeu2CbgJGD+ajOel2RSMo2mFtg
|
||||
OoRWjCibWHDSeUS+LGtspDpry+4VYwm4KBdcyEgiXnE8WDb/xk/hZgJCr2814AJC
|
||||
RPpXoIZdFiwSP46vgoAnHynPbGTmE/Wt+F9Y2cn/dz6rmg5ynS8AKuTOUSoAKEUV
|
||||
J20mBJpkSx7Cc95AGE8K/LkCDQRakA6yARAAws48PKN3BQPEM0M4kTO57/OqwGrA
|
||||
AMlxnB3n+AP7rtZEC2L548+3pfg7Ub45Oq1X0ySxgPhV15CDUEK69pgs0JhphMbM
|
||||
DyaUp04DyQWFhdueAqQVFnKvg6nZm/WIJF1VYEc0/q6Ramsdv2cWdxFBkFHYsH3P
|
||||
G2bXCZZAEO6eJI8cdmBH6+bVptky/AybzBLztp1ruWlj+rm79qULmW7zJfxYwL1U
|
||||
|
@ -35,18 +35,18 @@ kAVN0Y0H9EGSEoVyKwS1DErzcBgajPKWedKlmjU1uIzupRWn5oqetVbNfZ3Z/EJ/
|
|||
HdMCX0PN1kxg4WoI9mkP/moly1yopVOTTLJwvC2C85NQUmxyZeb4h9O7toFczBxn
|
||||
7pV9Eprm/xRcO3ZEEpmdM7gR3+R3PpxkjgPIZAn9il32VYzdT3eQmDZ8sKC0qASG
|
||||
ik2if34YnAggGmsrVB0nzT9fZR7CQq2IR7eohczLJRl+n7USQMgRweF+sl9PcbDT
|
||||
aC0b0i+VveSEBOEAEQEAAYkCPAQYAQgAJhYhBIWrobTj3qQ59ETaqelLPkGU5rX4
|
||||
BQJakA6yAhsMBQkDwmcAAAoJEOlLPkGU5rX4QjEQAIJF78XjvGomhafMsWlcd7fP
|
||||
/j45B+KIpyruc7wHtLqWibi+YoDuvtG4m1/4Ckcz5qNrV0f5nQojEAeCSCh7Sl+s
|
||||
yAJ9tmP1XET29DJq1t0iMsu+RDCLhdOfL/Wi/YJARtDloYbDlD8Rc/JnL2aOx2W/
|
||||
Ybajj2lloxSDxKCnzCh1aZixie1YaQSm8ErshT2k4qTx48D3mRoBLAYyzdEbLkl3
|
||||
ZBGDQy3Xk/miJ/hsj6L3w3G2YjMywZZZEjgDSUgSJ6MazBTgMmbCy1/0YGh7rNF7
|
||||
iUoWyDZq4qiDGNAI695I6tas7s4X2dhZn10xgbJoa5Dq2rqQLek+ErEsr3DFYN53
|
||||
7e9H0vJ9ydXB7piRJ9bxVFBng5CX9677IN5k9T/0lvcZWAFnDcHiMkIjIrTQ1Y04
|
||||
WkG6DMVvzLD+PKA07cZLf692rsrbfpP4sGj8X6baWh58mGAMMwZ2Dy07grsi73qI
|
||||
p/H4r4c/xRsH6nTbvb40zLfqcCz1xOTEcDtflYGMoeshu/H2EoruNMFi3c/9WO2G
|
||||
3zrSOUenWFSiacbsh8HVE9HUFGddBTB3SrLddO5vvvi15OvGI4aWpnkW+9s4107h
|
||||
jE0d0+c/Xm4AS0T59OGj/cd45k/vRe5vaPhQobZ6hXBzkKWPVt5uH8xbROiGiqdR
|
||||
jMuaeWIldeJ60aeu39Dh
|
||||
=JE0L
|
||||
aC0b0i+VveSEBOEAEQEAAYkCPAQYAQgAJgIbDBYhBIWrobTj3qQ59ETaqelLPkGU
|
||||
5rX4BQJeTp05BQkHgPWHAAoJEOlLPkGU5rX4RRAQAKSsr//mEXy6iQyoqaxJ796s
|
||||
ljaoqsmT4ly/+0k9diX1+/wkulSkj4/fL2fDvRQK2cU1i6mYJVugN5swqXvp8WF8
|
||||
scnDS/H75v/3Z+clTlsMjZ4qI0PmXYDpcvp5+zU85USEjOxpHmIKvQGflZ0NMvkI
|
||||
uo2ZC6F4xnB5iizx9Ebm0gGAiKKEJ8ID/LLhJmOtidnGc3322SUVXIl4+ue9KgpO
|
||||
hTBjx5UdIQ+21uSRf+zv3ZQH/KA/08iNyD20fIiUZKfEoeovlW8SipoO/pf/+1DE
|
||||
WSiJqL3K7T3ixkC4oWSp7tbo2MWU247PItxTnnGF+KjwbkzpPwyPYPHT5Ed3XEZV
|
||||
e39r9xUzdvYKKDCNDToDFsh4bm4hq7xXgnTwAbF6hw0iyBK02ZB6FKJsF/ZJi8gC
|
||||
Ni4d3Lb54CV/Z7nAqMFbTa6KT8o9fc0Bw6tgX2ch7SRWU70yVGYmQzrdRsOtDkIV
|
||||
iYA05JozwwsIcJQS7hBVnsqgD/huYLd+y7iCUgw35NdQ5764jzVlUpYtFO0NFrM6
|
||||
QSKnnFFRiwr3+ZqIja2SGW455uP1hsl2ccA4Rdp/JRuEI6ojIo0R+JBpcMeqdv9d
|
||||
HcNsAoZkrm/cQfIwlyKsU4/dEFL09kEtv7x/aO2ImqjAZ5xT3ml+4kFGEn7M7rsc
|
||||
M6R6fgkYrVo1GhjXTlCL
|
||||
=4bj4
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
|
@ -6,26 +6,26 @@ spm0DdNCEVfUbIQUstbSNt1kDGIlqPvZmoRj5YwDECW6ULG8jTWhaAz9SybJCE86
|
|||
jLPzZHjKtVhCVO1X0ogSxvvYGemUpqVCLfKcIb1TucieKKCrnjiHwp0XZ41DWqSb
|
||||
kBwWW2YQMEsw8JNGNTfCCUFf6+1l4mMixtv2sEqFiH1wQJ0c4gSa4iSYZ+eNmzJ0
|
||||
B13K8kONOctSg3NYZz/dC1aUzLOTkgJHqEPHABEBAAG0KVN0ZWZhbiBLYWxrb3dz
|
||||
a2kgPHNrYWxrQGRlcG90Lmdlbm9kZS5vcmc+iQFUBBMBCAA+FiEEI2X1/oP+p+Ls
|
||||
2L28qrC4CLnp/P8FAlrQZGACGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwECHgEC
|
||||
F4AACgkQqrC4CLnp/P9kKQgAxc11eDhYkMVg9cuipFoqtV5lY9aT2qkocZ28IhbF
|
||||
LXhy9lcn5FlxZSVdkzJQ5tUf4nSuhhMb6z3r8edaOebcYAyFk0DTymNpcEyT2XHd
|
||||
lsOcInhfU423m1tCNHdmxtv9HERtj2zS1KNkjWxY6xsqfEw1eDfUvdS3K9KpUqc6
|
||||
vWZwsPd9EHxW3mzWJS3lrSAnNsCwtdmiqB9045Yss4KednMcN6qxE+uHppQ+25Ib
|
||||
5ZICpiVqOJ+eQXeY3kRx84lfZJr3uFdn00RSU5fn0uol8ZZYX9tQd9SC1GIlkyYj
|
||||
HxNLKNVaYzF1nnmR1s7cpY6PUAYbt0im6kd4VJ1wQcWTnrkBDQRaU+QuAQgAuame
|
||||
a2kgPHNrYWxrQGRlcG90Lmdlbm9kZS5vcmc+iQFUBBMBCAA+AhsDBQsJCAcCBhUI
|
||||
CQoLAgQWAgMBAh4BAheAFiEEI2X1/oP+p+Ls2L28qrC4CLnp/P8FAl4XHPUFCQ0p
|
||||
OkcACgkQqrC4CLnp/P8bAgf/ToUKzXMGdRXpB+xIBbOxuu8xVdLRj+5cm7cjZRiy
|
||||
N0ulrzAlaZqrfqb5rTujPDjakmVSBVRIi8zWlzU7y67fevTFdi/Q9xeLgbqP3cWU
|
||||
UgUJs03cdacFIamSIO//I9gaImZ2kpUcA6Nj+N+jPepRgUBzljsJG8678ndicA0e
|
||||
Yio4uAvZY9JmsWGn48rmkqshPf9lag4GUnXn+R/AFKCts55kOiPekux3pJBhmrLJ
|
||||
TdLgdAzlzGQfHxQbz3oVK4yE19ReAd6rnpW06oK4KfiWrgCmaEk1quirDNfIMDfr
|
||||
nwe6571TY5is0f9zJjJgP8ogLUMI3n54OvwMezUMz+bLbbkBDQRaU+QuAQgAuame
|
||||
2VDCgNmiwu+QmWyNN4jzbE7+VNmDr37HO9lZRIROC4eACPOGfUL03jLGvUn7rrxQ
|
||||
JK+Pit6gXXCoIWDhCMNRSZKho416KJZWxF2jxKBKGQ7DtWaTR3YOzSf0ka9DZSrp
|
||||
wG22xS0Uf1U/0ZBIf24LbyUDFLc8zt4eey2D9AHm+9vCf7wnf8TV6SNIXRz3wj7d
|
||||
VqoZLXRTT7twBSaNahLhNtg7fhS8Nu6/THuwXpNKPAvAsgJRTGk7kmrKj5P7rOZA
|
||||
rNHC1pvK1EWJJi2onHOmCzBccKRp9SeQlj+ddqG6seZhEnRYG6l7uhkyNZoyvKxO
|
||||
Fguc5g8Xf37VyuRMfwARAQABiQE8BBgBCAAmFiEEI2X1/oP+p+Ls2L28qrC4CLnp
|
||||
/P8FAlpT5C4CGwwFCQPCZwAACgkQqrC4CLnp/P/IOAf+LnQVtU7aHh4AZDsi1wXq
|
||||
KBo5l6r3G8tC/S0HEf8nnWMUio2/mwVrkbuTvBeKrcQ/mXFHHAG8YCAIHPgR7T0y
|
||||
2L6l2PL4HoXiLD8EwJ0sWZu2waxuxcTX+bb1i3Xm3squnqDtCX3pyoXWx0GVgrz9
|
||||
7I/zitxeER+35ScaZ+JAAcNW59LpiV1SdIXqbtrw5QBJBuZUp0bvnzCNvdZLhnhb
|
||||
gWfwPEfcXFt5K87iTmfMFJOJpbUrEz/NWE9gOBCBjqxW0wVb+IWr0oFWvfxjuBq7
|
||||
IW9DezwkN1wAavP6g7+B4esCD6SRq+3CCzbT1By3X2h3SevU8tHkCSA3cIKgWdyD
|
||||
2A==
|
||||
=IsaH
|
||||
Fguc5g8Xf37VyuRMfwARAQABiQE8BBgBCAAmAhsMFiEEI2X1/oP+p+Ls2L28qrC4
|
||||
CLnp/P8FAl4XHW4FCQ0pOsAACgkQqrC4CLnp/P/xGggAhMz6NH1dYiFtc9+3vkAW
|
||||
bZ10MDvxdgyU+G1a0BVYVo2ZXkhJlb2yg5MEeL1MZ6cUtM7MR1OL0U1jayfdcTfr
|
||||
kkUi2a35BdvKRpxc3hcc4i2CdDxdx+IGrBa75P+vIKFj8WIvwABgRJNVzY1Oq6Lq
|
||||
zKPUpVPug80Hch++Kv6l1DEpcoXlGaI8Z1dWfAjYQ7HJF/YJNHloKwxa1mXo/l/S
|
||||
qQSFHB23IN682ANm8iEUphuvJVbOw4mubpCEpmJvIhEBeesgXfB503nniOsshq+9
|
||||
1bNZ3CFv/ylnj5sy5VzU0lfW/TrHiW4OOOSbX8mCSvcqN2mhjcu6r4olV0fWPrrV
|
||||
Lg==
|
||||
=H+8g
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
|
@ -98,10 +98,10 @@ Applications and library infrastructure
|
|||
Thanks to the C runtime, the flexible per-component VFS, the standard
|
||||
C++ library, and the Noux runtime (for UNIX software), porting software
|
||||
to Genode is relatively straight forward. The
|
||||
[http://genode.org/documentation/developer-resources/porting - porting guide]
|
||||
[https://genode.org/documentation/developer-resources/porting - porting guide]
|
||||
explains the typical steps. A wish list of software that we'd like to
|
||||
have available on Genode is available at
|
||||
[http://usr.sysret.de/jws/genode/porting_wishlist.html].
|
||||
[https://usr.sysret.de/jws/genode/porting_wishlist.html].
|
||||
|
||||
:Native Open-Street-Maps (OSM) client:
|
||||
|
||||
|
@ -121,7 +121,7 @@ Application frameworks and runtime environments
|
|||
|
||||
:OpenJDK:
|
||||
|
||||
[http://openjdk.java.net/ - OpenJDK] is the reference implementation of the
|
||||
[https://openjdk.java.net/ - OpenJDK] is the reference implementation of the
|
||||
Java programming language and hosts an enormous ecosystem of application
|
||||
software.
|
||||
|
||||
|
@ -190,8 +190,8 @@ Application frameworks and runtime environments
|
|||
analyzing such components with formal methods.
|
||||
|
||||
The use of Haskell for systems development was pioneered by the
|
||||
[http://programatica.cs.pdx.edu/House/ - House Project]. A more recent
|
||||
development is [http://halvm.org - HalVM] - a light-weight OS runtime for
|
||||
[https://programatica.cs.pdx.edu/House/ - House Project]. A more recent
|
||||
development is [https://halvm.org - HalVM] - a light-weight OS runtime for
|
||||
Xen that is based on Haskell.
|
||||
|
||||
:Xlib compatibility:
|
||||
|
@ -310,7 +310,7 @@ Device drivers
|
|||
Genode utilizes the network device drivers of the iPXE project, which
|
||||
perform reasonably well for everyday use cases but are obviously not
|
||||
designated for high-performance networking.
|
||||
The [http://dpdk.org/ - DPDK] is a vendor-supported suite of network device
|
||||
The [https://dpdk.org/ - DPDK] is a vendor-supported suite of network device
|
||||
drivers that is specifically developed for high-performance applications.
|
||||
It presents an attractive alternative to iPXE-based drivers. This project
|
||||
has the goal to make DPDK drivers available as a Genode component.
|
||||
|
|
|
@ -14,6 +14,11 @@ Genode comes with a growing number of components apparently scattered across
|
|||
various repositories. This document provides an overview of these components
|
||||
and outlines the systematics behind them.
|
||||
|
||||
The scope of this document is limited to the Genode main repository maintained
|
||||
by Genode Labs. Many additional components and device drivers can be found in
|
||||
the community-maintained
|
||||
[https://github.com/genodelabs/genode-world/ - Genode-World] repository.
|
||||
|
||||
|
||||
Categorization of components
|
||||
############################
|
||||
|
@ -79,6 +84,10 @@ Platform devices
|
|||
this simple ACPI parser traverses the ACPI tables and reports device-resource
|
||||
information (e.g., interrupt lines of PCI devices).
|
||||
|
||||
:'os/src/app/smbios_decoder':
|
||||
A component that parses SMBIOS information on x86 platforms and makes the
|
||||
result available as a report.
|
||||
|
||||
:'libports/src/app/acpica':
|
||||
In addition to our ACPI base driver, the acpica component uses the
|
||||
ACPICA library to provide access to dynamic functions like battery
|
||||
|
@ -93,18 +102,12 @@ UART devices
|
|||
|
||||
The UART device drivers implement the UART-session interface.
|
||||
|
||||
:'os/src/drivers/uart/spec/pl011':
|
||||
:'os/src/drivers/uart/spec/pbxa9':
|
||||
Driver for the PL011 UART as found on many ARM-based platforms.
|
||||
|
||||
:'os/src/drivers/uart/spec/i8250':
|
||||
:'os/src/drivers/uart/spec/x86':
|
||||
Driver for the i8250 UART as found on PC hardware.
|
||||
|
||||
:'os/src/drivers/uart/spec/omap4':
|
||||
Driver for the UART as found on OMAP4-based hardware.
|
||||
|
||||
:'os/src/drivers/uart/spec/exynos5':
|
||||
Driver for the UART as found on Exynos-5-based hardware.
|
||||
|
||||
|
||||
Framebuffer and input drivers
|
||||
=============================
|
||||
|
@ -141,15 +144,9 @@ input-session interfaces respectively.
|
|||
Driver for boot-time initialized framebuffers (e.g., UEFI GOP)
|
||||
discovered from the 'platform_info' ROM
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/pl11x':
|
||||
:'os/src/drivers/framebuffer/pl11x':
|
||||
Driver for the PL110/PL111 LCD display.
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/omap4':
|
||||
Driver for HDMI output on OMAP4 SoCs.
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/exynos5':
|
||||
Driver for HDMI output on Exynos-5 SoCs.
|
||||
|
||||
:'os/src/drivers/framebuffer/spec/imx53':
|
||||
Driver for LCD output on i.MX53 SoCs.
|
||||
|
||||
|
@ -161,7 +158,7 @@ input-session interfaces respectively.
|
|||
driver is only usable on the Linux base platform.
|
||||
|
||||
:'os/src/drivers/gpu/intel':
|
||||
Intel Graphics GPU multiplexer for Broadwell and newer.
|
||||
An experimental Intel Graphics GPU multiplexer for Broadwell and newer.
|
||||
|
||||
:'dde_linux/src/drivers/framebuffer/intel':
|
||||
Framebuffer driver for Intel i915 compatible graphic cards based on
|
||||
|
@ -173,6 +170,9 @@ input-session interfaces respectively.
|
|||
refer to the run scripts at 'dde_linux/run/usb_hid' and
|
||||
'dde_linux/run/usb_storage'.
|
||||
|
||||
:'dde_linux/src/drivers/usb_hid':
|
||||
USB Human Interface Device driver using the USB session interface.
|
||||
|
||||
|
||||
Timer drivers
|
||||
=============
|
||||
|
@ -220,12 +220,6 @@ All block drivers implement the block-session interface defined at
|
|||
Driver for SD-cards connected via the PL180 device as found on the PBX-A9
|
||||
platform.
|
||||
|
||||
:'os/src/drivers/sd_card/spec/omap4':
|
||||
Driver for SD-cards connected to the SD-card controller of the OMAP4 SoC.
|
||||
|
||||
:'os/src/drivers/sd_card/spec/exynos5':
|
||||
Driver for SD-cards and eMMC connected to Exynos-5-based platforms.
|
||||
|
||||
:'os/src/drivers/sd_card/spec/imx53':
|
||||
Driver for SD-cards connected to the Freescale i.MX53 platform like the
|
||||
Quick Start Board or the USB armory device.
|
||||
|
@ -241,6 +235,9 @@ All block drivers implement the block-session interface defined at
|
|||
:'os/src/drivers/ahci':
|
||||
Driver for SATA disks and CD-ROMs on x86 PCs.
|
||||
|
||||
:'os/src/drivers/nvme':
|
||||
Driver for NVMe block devices on x86 PCs.
|
||||
|
||||
:'os/src/drivers/usb_block':
|
||||
USB Mass Storage Bulk-Only driver using the USB session interface.
|
||||
|
||||
|
@ -259,10 +256,6 @@ defined at 'os/include/nic_session'.
|
|||
Native device driver for the LAN9118 network adaptor as featured on the
|
||||
PBX-A9 platform.
|
||||
|
||||
:'os/src/drivers/nic/gem':
|
||||
Device driver for Cadence EMAC PS network adaptor as featured on the
|
||||
Xilinx Zynq.
|
||||
|
||||
:'dde_ipxe/src/drivers/nic':
|
||||
Device drivers ported from the iPXE project. Supported devices are Intel
|
||||
E1000 and pcnet32.
|
||||
|
@ -281,19 +274,12 @@ defined at 'os/include/nic_session'.
|
|||
General-purpose I/O drivers
|
||||
===========================
|
||||
|
||||
:'os/src/drivers/gpio/spec/omap4':
|
||||
Driver for accessing the GPIO pins of OMAP4 platforms.
|
||||
|
||||
:'os/src/drivers/gpio/spec/imx53':
|
||||
Driver for accessing the GPIO pins of i.MX53 platforms.
|
||||
|
||||
:'os/src/drivers/gpio/spec/rpi':
|
||||
Driver for accessing the GPIO pins of Raspberry Pi platforms.
|
||||
|
||||
:'os/src/drivers/gpio/spec/exynos5':
|
||||
Driver for accessing the GPIO pins of Exynos4 platforms, e.g.,
|
||||
Odroid-X2.
|
||||
|
||||
|
||||
Resource multiplexers
|
||||
#####################
|
||||
|
@ -319,14 +305,21 @@ subdirectory of a source repository.
|
|||
the physical network. DHCP requests originating from the virtual NIC sessions
|
||||
are delegated to the physical network.
|
||||
|
||||
The NIC router located at 'os/src/server/nic_router' multiplexes one NIC
|
||||
session to multiple virtual NIC sessions by applying network address
|
||||
translation (NAT).
|
||||
|
||||
:Block: The block-device partition server at 'os/src/server/part_block' reads
|
||||
the partition table of a block session and exports each partition found as
|
||||
separate block session. For using this server, please refer to the run
|
||||
script at 'os/run/part_block'.
|
||||
|
||||
:File system: The FAT file-system service allows multiple clients to
|
||||
concurrently access the same FAT-formatted block device. It is located
|
||||
at 'libports/src/server/fatfs_fs' and supports FAT, FAT32, and exFAT.
|
||||
:File system: The VFS file-system server allows multiple clients to
|
||||
concurrently access the same virtual file system. It is located at
|
||||
'os/src/server/vfs'. The VFS can be assembled out of several builtin
|
||||
file-system types (like a RAM file system, or pseudo file systems for
|
||||
various Genode session interfaces) as well as external plugins such as rump
|
||||
(mounting file systems supported by the NetBSD kernel).
|
||||
|
||||
:Terminal: The terminal_mux service located at gems/src/server/terminal_mux
|
||||
is able to provide multiple terminal sessions over one terminal-client
|
||||
|
@ -340,7 +333,8 @@ Protocol stacks
|
|||
Protocol stacks come either in the form of separate components that translate
|
||||
one session interface to another, or in the form of libraries.
|
||||
|
||||
Separate components:
|
||||
Separate components
|
||||
===================
|
||||
|
||||
:'os/src/server/nit_fb':
|
||||
Translates a nitpicker session to a pair of framebuffer and input sessions.
|
||||
|
@ -367,21 +361,10 @@ Separate components:
|
|||
Provides each file of an ISO9660 file system accessed via a block session as
|
||||
separate ROM session.
|
||||
|
||||
:'os/src/server/ram_fs':
|
||||
A file-system implementation that keeps all data in memory.
|
||||
|
||||
:'dde_rump/src/server/rump_fs':
|
||||
A file-system server that contains various file-systems ported from the
|
||||
NetBSD kernel.
|
||||
|
||||
:'os/src/server/lx_fs':
|
||||
A file system server that makes the file system of a Linux base platform
|
||||
available to Genode.
|
||||
|
||||
:'os/src/server/trace_fs':
|
||||
A pseudo file system that can be used as a front end to core's TRACE
|
||||
service.
|
||||
|
||||
:'os/src/server/rom_block':
|
||||
Provides the content of a ROM file as a block session, similar to the
|
||||
loop-mount mechanism on Linux
|
||||
|
@ -413,9 +396,6 @@ Separate components:
|
|||
switching between configuration variants dependent on the state of
|
||||
the system.
|
||||
|
||||
:'os/src/server/vfs':
|
||||
A file-system server using the VFS library and plugins as backend.
|
||||
|
||||
:'os/src/server/log_terminal':
|
||||
Forwards terminal output to a LOG session.
|
||||
|
||||
|
@ -444,6 +424,15 @@ Separate components:
|
|||
up an equally named file on the file system.
|
||||
Please refer to 'os/src/server/fs_rom' for more information.
|
||||
|
||||
For use cases where ROMs are known to be static, the
|
||||
'os/src/server/cached_fs_rom' can be considered as a faster alternative to
|
||||
the regular 'fs_rom' server. Note that 'cached_fs_rom' is not supported
|
||||
in base-linux though.
|
||||
|
||||
:'os/src/server/chroot':
|
||||
An intermediate file-system server that makes a sub directory of a file
|
||||
system available as the root of a file system handed out to its client.
|
||||
|
||||
:'os/src/server/dynamic_rom':
|
||||
A simple ROM service that provides ROM modules that change in time according
|
||||
to a configured timeline.
|
||||
|
@ -461,14 +450,9 @@ Separate components:
|
|||
is then propagated to the clients of the ROM service according to a
|
||||
configurable information-flow policy.
|
||||
|
||||
:'ports/src/app/openvpn':
|
||||
OpenVPN enables access to remote network resources through a secure tunnel
|
||||
by providing an encrypted connection to a remote host. It is plugged between
|
||||
NIC server (such as a network driver) and NIC client.
|
||||
|
||||
:'os/src/server/input_merger':
|
||||
A component that merges input events from multiple sources into a single
|
||||
stream.
|
||||
:'os/src/server/input_filter':
|
||||
A component that transforms and merges input events from multiple sources
|
||||
into a single stream.
|
||||
|
||||
:'libports/src/server/acpi_input':
|
||||
A component that transforms ACPI events into Genode input events.
|
||||
|
@ -477,20 +461,56 @@ Separate components:
|
|||
A wrapper for nitpicker's session interface that applies alpha-blending to
|
||||
the of views a nitpicker client.
|
||||
|
||||
Libraries:
|
||||
|
||||
VFS plugins
|
||||
===========
|
||||
|
||||
VFS plugins are file-system drivers in the form of shared libraries that
|
||||
implement the VFS-plugin interface. They can be combined with any application
|
||||
based on Genode's C runtime, with the VFS server, and with non-POSIX
|
||||
components that use the Genode's VFS library directly.
|
||||
|
||||
:'gems/src/lib/vfs/trace':
|
||||
A VFS plugin that makes core's TRACE service accessible as a pseudo
|
||||
file system.
|
||||
|
||||
:'gems/src/lib/vfs/import':
|
||||
A VFS plugin that pre-populates a VFS with initial content.
|
||||
|
||||
:'gems/src/lib/vfs/pipe':
|
||||
A VFS plugin that provides bi-directional pipes for exchanging streamed
|
||||
data between components.
|
||||
|
||||
:'gems/src/lib/vfs/ttf':
|
||||
A VFS plugin that makes rendered pixel data of the glyphs of Truetype fonts
|
||||
available as a pseudo file system.
|
||||
|
||||
:'libports/src/lib/vfs/jitterentropy':
|
||||
A VFS plugin that provides random numbers based on the jitter of executing
|
||||
CPU instructions.
|
||||
|
||||
:'libports/src/lib/vfs/lwip':
|
||||
A VFS plugin that uses the light-weight IP (lwIP) stack to provide a
|
||||
network socket interface as a pseudo file system.
|
||||
|
||||
:'dde_linux/src/lib/vfs/lxip':
|
||||
A VFS plugin that uses the TCP/IP stack ported from the Linux kernel to
|
||||
provide a network socket interface as a pseudo file system.
|
||||
|
||||
:'libports/src/lib/vfs/fatfs':
|
||||
A VFS plugin that allows for the mounting of FAT-formatted block devices.
|
||||
|
||||
:'dde_rump/src/lib/vfs/rump':
|
||||
A VFS plugin that enables the use of NetBSD's file-system drivers such
|
||||
as ext2 or msdos.
|
||||
|
||||
|
||||
Libraries
|
||||
=========
|
||||
|
||||
:'libports/lib/mk/libc':
|
||||
C runtime ported from FreeBSD.
|
||||
|
||||
:'libports/lib/mk/libc_fatfs':
|
||||
Accesses files on a block device that contains a FAT32 file system.
|
||||
|
||||
:'libports/lib/mk/libc_fuse_exfat':
|
||||
Accesses files on a block device that contains an exFAT file system.
|
||||
|
||||
:'libports/lib/mk/libc_fuse_ext2':
|
||||
Accesses files on a block device that contains an ext2 file system.
|
||||
|
||||
:'libports/lib/mk/stdcxx':
|
||||
Standard C++ library
|
||||
|
||||
|
@ -498,28 +518,13 @@ Libraries:
|
|||
Mesa OpenGL API with backends for software rasterization (egl_swrast)
|
||||
and Intel Graphics (egl_i965)
|
||||
|
||||
:'libports/lib/mk/pthread':
|
||||
Subset of the POSIX thread and semaphore API.
|
||||
|
||||
:'libports/lib/mk/python':
|
||||
Runtime of the Python scripting language.
|
||||
|
||||
:'libports/lib/mk/mupdf':
|
||||
PDF rendering engine.
|
||||
|
||||
:'libports/lib/mk/sdl':
|
||||
Translates the libSDL API to framebuffer and input sessions.
|
||||
|
||||
:'libports/lib/mk/ncurses':
|
||||
Library for implementing pseudo-graphical applications (i.e., VIM) that
|
||||
run on a text terminal.
|
||||
|
||||
:'libports/lib/mk/avcodec':
|
||||
A library for video decoding, conversion, and streaming.
|
||||
|
||||
:'libports/lib/mk/lua':
|
||||
Runtime for the Lua scripting language.
|
||||
|
||||
:'libports/lib/mk/qt5_*':
|
||||
Qt5 framework, using nitpicker session and NIC session as back end.
|
||||
|
||||
|
@ -558,8 +563,6 @@ located in their respective directory.
|
|||
|
||||
:'gems/app/launcher': Graphical launcher of Genode subsystems.
|
||||
|
||||
:'os/app/cli_monitor': Command-line-based launcher of Genode subsystems.
|
||||
|
||||
:'demo/src/app/scout':
|
||||
Graphical hypertext browser used for Genode's default demonstration scenario.
|
||||
|
||||
|
@ -603,6 +606,7 @@ located in their respective directory.
|
|||
:'os/src/app/log_core':
|
||||
Component transforming core and kernel output to Genode LOG output.
|
||||
|
||||
|
||||
Package-management components
|
||||
=============================
|
||||
|
||||
|
@ -629,10 +633,6 @@ Package-management components
|
|||
Runtime environments
|
||||
####################
|
||||
|
||||
:'ports/src/noux': Noux is an experimental implementation of a UNIX-like API
|
||||
that enables the use of unmodified command-line based GNU software. For using
|
||||
noux, refer to the run script 'ports/run/noux.run'.
|
||||
|
||||
:'ports/src/app/seoul': Seoul is a virtual-machine monitor developed for
|
||||
the use with the NOVA platform. It virtualizes 32bit x86 PC hardware
|
||||
including various peripherals.
|
||||
|
@ -641,7 +641,9 @@ Runtime environments
|
|||
of Genode subsystems via a session interface. For further information,
|
||||
refer to 'os/src/server/loader/README'.
|
||||
|
||||
:'ports/src/app/dosbox': A port of DosBox for executing DOS software.
|
||||
|
||||
:'ports/src/virtualbox': VirtualBox running on top of the NOVA hypervisor.
|
||||
|
||||
:'os/src/server/vmm': A virtual machine monitor that is based on
|
||||
hardware-assisted virtualization of ARM platforms. It is supported on
|
||||
the base-hw kernel only.
|
||||
|
||||
|
|
|
@ -140,7 +140,7 @@ permission to let Genode Labs redistribute his contributions under non-AGPLv3
|
|||
licenses. This permission is granted by signing the Genode Contributors
|
||||
Agreement:
|
||||
|
||||
:[http:gca.pdf - Genode Contributor's Agreement]:
|
||||
:[https://genode.org/community/gca.pdf - Genode Contributor's Agreement]:
|
||||
Genode Contributor's Agreement (GCA)
|
||||
|
||||
By signing the GCA, you don't lose any rights for your contribution. However,
|
||||
|
|
120
doc/news.txt
120
doc/news.txt
|
@ -3,6 +3,96 @@
|
|||
Genode News
|
||||
===========
|
||||
|
||||
|
||||
Sculpt OS release 20.02 | 2020-03-10
|
||||
####################################
|
||||
|
||||
| Version 20.02 of the Sculpt operating system revisits the administrative
|
||||
| user interface for a more intuitive and logical user experience.
|
||||
|
||||
With the release of Sculpt version 20.02, we follow our
|
||||
[https://genode.org/about/road-map - roadmap's] mission to make Sculpt OS
|
||||
easier to approach. In particular, we
|
||||
[https://genodians.org/nfeske/2020-01-06-pending-sculpt-ui - identified] the
|
||||
reliance on a command-line interface as a potential barrier of entry. As
|
||||
Sculpt OS is not a Unix-like system, it should not require any Unix know-how
|
||||
from the user. To relieve users from this burden, Sculpt 20.02 introduces
|
||||
a custom graphical file browser and editor that can be used for interactively
|
||||
inspecting and tweaking the state of the system. The traditional command-line
|
||||
interface is still present as a fallback for advanced tasks though.
|
||||
The updated [https://genode.org/documentation/articles/sculpt-20-02 - manual]
|
||||
goes into detail about the use of the new system.
|
||||
|
||||
Thanks to the work of seasoned Genode developers, many software packages are
|
||||
already available for the new version. These include virtual machine monitors
|
||||
like VirtualBox, performance-monitoring tools, GUI components, Genode's custom
|
||||
Unix runtime, and several applications and games. In particular, the software
|
||||
depots offered by alex-ab, cnuke, skalk are worth exploring.
|
||||
The ready-to-use system image for version 20.02 can be obtained from the
|
||||
[https://genode.org/download/sculpt - Sculpt download page] and is
|
||||
accompanied by matching
|
||||
[https://genode.org/documentation/articles/sculpt-20-02 - documentation].
|
||||
|
||||
|
||||
Genode OS Framework release 20.02 | 2020-02-28
|
||||
##############################################
|
||||
|
||||
| With version 20.02, Genode makes Sculpt OS fit for running on i.MX 64-bit
|
||||
| ARM hardware, optimizes the performance throughout the entire software stack,
|
||||
| and takes the next evolutionary step of the user-facing side of Sculpt OS.
|
||||
|
||||
Without any doubt, Sculpt OS has been the driving motivation behind most
|
||||
working topics featured by the new release. One particularly exciting line
|
||||
of work is the enabling of Sculpt on i.MX-based 64-bit ARM hardware, which
|
||||
touched the framework on all levels, from the boot loader, over the kernel,
|
||||
device drivers, libraries, system management, up to the application level.
|
||||
The work goes as far as supporting Sculpt OS as a hypervisor platform for
|
||||
hosting Linux in a virtual machine.
|
||||
|
||||
As a second Sculpt-related development, we strive to make the user-visible
|
||||
side of the operating system better approachable and more logical. With this
|
||||
background, the current release comes with a profound redesign of the
|
||||
administrative user interface of Sculpt OS. An updated downloadable system
|
||||
image will follow soon.
|
||||
|
||||
Also related to Sculpt are an updated audio driver based on OpenBSD 6.6,
|
||||
the support of virtual desktops, and performance optimization of the
|
||||
Seoul virtual machine monitor on x86 hardware.
|
||||
|
||||
Regarding the framework API, the release introduces a new library for
|
||||
building multi-component applications. It aims to bring the benefits of
|
||||
Genode's unique security architecture from the operating-system level to the
|
||||
application level.
|
||||
|
||||
These topics are only the tip of the iceberg. For the complete picture,
|
||||
please consult the
|
||||
[https:/documentation/release-notes/20.02 - release documentation of version 20.02...]
|
||||
|
||||
|
||||
Road Map for 2020 | 2020-01-20
|
||||
##############################
|
||||
|
||||
| In 2019, we will be concerned about dwarfing the barrier of entry into
|
||||
| the Genode world.
|
||||
|
||||
Following the last year's leitmotif of "bridging worlds", we turn our
|
||||
attention to the removal of the hurdles faced by aspiring developers and
|
||||
users. During the annual road-map
|
||||
[https://lists.genode.org/pipermail/users/2019-December/006987.html - discussion]
|
||||
on our mailing list, we identified four tangible approaches towards that
|
||||
goal. First, making Sculpt OS more user friendly. Second, reinforcing trust in
|
||||
Genode by fostering the framework's high quality. Third, making the tooling
|
||||
around Genode a joy to use. And finally, the illustration of Genode's
|
||||
versatility in the form practical use cases.
|
||||
|
||||
Besides this overall theme, we plan to continue our commitment to the
|
||||
NXP i.MX SoC family, revisit Genode's low-latency audio support, and
|
||||
extend the cultivation of Ada/SPARK within (and on top of) Genode.
|
||||
|
||||
More background information about the new road map and a rough schedule are
|
||||
presented at our official [https:/about/road-map - road-map page].
|
||||
|
||||
|
||||
Genode OS Framework release 19.11 | 2019-11-28
|
||||
##############################################
|
||||
|
||||
|
@ -180,7 +270,7 @@ about the articles, readers are invited to the new
|
|||
[https://reddit.com/r/genode - /r/genode] subreddit.
|
||||
|
||||
As written in the
|
||||
[http://genodians.org/nfeske/2019-01-07-welcome - initial posting],
|
||||
[https://genodians.org/nfeske/2019-01-07-welcome - initial posting],
|
||||
Genode users and developers are warmly invited to join the authors at
|
||||
Genodians.org!
|
||||
|
||||
|
@ -986,7 +1076,7 @@ The story behind Genode's TrustZone demo on the USB Armory | 2015-12-08
|
|||
| Our latest article provides a look behind the scenes of the
|
||||
| development of Genode's support for the USB Armory platform.
|
||||
|
||||
The [http://inversepath.com/usbarmory - USB Armory] is a computer in the form
|
||||
The [https://inversepath.com/usbarmory - USB Armory] is a computer in the form
|
||||
of a USB stick. It normally runs Linux. But thanks to the ARM TrustZone
|
||||
capabilities of the device, it is possible to run Genode behind the back of
|
||||
Linux. This is useful for shielding sensitive information like cryptographic
|
||||
|
@ -1000,7 +1090,7 @@ was splitting the hardware platform into two worlds while maintaining the
|
|||
full functionality of Linux. The article goes on to explain the interplay
|
||||
between the secure world (Genode) and the normal world (Linux). Furthermore,
|
||||
it provides all the pointers needed to reproduce the scenario.
|
||||
[http:/documentation/articles/usb_armory - Read the article...]
|
||||
[https://genode.org/documentation/articles/usb_armory - Read the article...]
|
||||
|
||||
|
||||
Genode OS Framework release 15.11 | 2015-11-30
|
||||
|
@ -2179,7 +2269,7 @@ for our dual-licensing business model. If we made Genode available under the
|
|||
BSD license, there would be not point in pursuing this model. However, hiding
|
||||
the development process from the public is not only poor-spirited but it
|
||||
creates an artificial barrier for people who want to participate. The book
|
||||
"Producing Open Source Software" (http://producingoss.com) by Karl Fogel was an
|
||||
"Producing Open Source Software" (https://producingoss.com) by Karl Fogel was an
|
||||
eye opener to us.
|
||||
|
||||
Regarding the efficiency of collaboration, I have to admit that the statement
|
||||
|
@ -2277,7 +2367,7 @@ new support of L4Android on Genode, Android can be used on Genode on the
|
|||
Fiasco.OC kernel on the IA32 architecture. For those of you who are eager to
|
||||
experiment with L4Android on Genode, please find further information at the
|
||||
top-level
|
||||
[http://genode.svn.sourceforge.net/viewvc/genode/trunk/ports-foc/README - README]
|
||||
[https://genode.svn.sourceforge.net/viewvc/genode/trunk/ports-foc/README - README]
|
||||
file of the 'ports-foc' repository and share your results with us at the
|
||||
[https:/community/mailing-lists - Genode mailing list].
|
||||
|
||||
|
@ -2392,17 +2482,17 @@ concepts live. The talk was recorded at the
|
|||
Amsterdam. Thanks to Bas the Lange for publishing the material.
|
||||
|
||||
: <object height="385" width="480">
|
||||
: <param name="movie" value="http://www.youtube.com/v/Z1IMV3FJO7Q" />
|
||||
: <param name="movie" value="https://www.youtube.com/v/Z1IMV3FJO7Q" />
|
||||
: <param name="allowFullScreen" value="true" />
|
||||
: <param name="allowscriptaccess" value="always" />
|
||||
: <embed width="480" height="385" allowfullscreen="true"
|
||||
: allowscriptaccess="always"
|
||||
: type="application/x-shockwave-flash"
|
||||
: src="http://www.youtube.com/v/Z1IMV3FJO7Q">
|
||||
: src="https://www.youtube.com/v/Z1IMV3FJO7Q">
|
||||
: </embed>
|
||||
: </object>
|
||||
|
||||
[http://www.youtube.com/watch?v=Z1IMV3FJO7Q - Visit the YouTube page...]
|
||||
[https://www.youtube.com/watch?v=Z1IMV3FJO7Q - Visit the YouTube page...]
|
||||
|
||||
|
||||
Genode OS Framework release 11.02 | 2011-02-24
|
||||
|
@ -2459,17 +2549,17 @@ prepared the following screencast with a guided walk-through. Enjoy!
|
|||
|
||||
: <object height="385" width="480">
|
||||
: <param name="movie"
|
||||
: value="http://www.youtube.com/v/CJdWOmajo_8?fs=1&hl=en_US" />
|
||||
: value="https://www.youtube.com/v/CJdWOmajo_8?fs=1&hl=en_US" />
|
||||
: <param name="allowFullScreen" value="true" />
|
||||
: <param name="allowscriptaccess" value="always" />
|
||||
: <embed width="480" height="385"
|
||||
: src="http://www.youtube.com/v/CJdWOmajo_8?fs=1&hl=en_US"
|
||||
: src="https://www.youtube.com/v/CJdWOmajo_8?fs=1&hl=en_US"
|
||||
: type="application/x-shockwave-flash" allowscriptaccess="always"
|
||||
: allowfullscreen="true">
|
||||
: </embed>
|
||||
: </object>
|
||||
|
||||
[http://www.youtube.com/watch?v=CJdWOmajo_8 - Visit the YouTube page...]
|
||||
[https://www.youtube.com/watch?v=CJdWOmajo_8 - Visit the YouTube page...]
|
||||
|
||||
[https:/download/live-cds - Download the real thing...]
|
||||
|
||||
|
@ -2868,13 +2958,13 @@ for graphics, input devices, and sound. It is often used as back end for games,
|
|||
emulators, and media players. Also the Linux version of Genode relies on the
|
||||
hardware abstractions provided by libSDL.
|
||||
|
||||
As [http://sourceforge.net/mailarchive/message.php?msg_id=21406424 - announced on the Genode mailing list],
|
||||
As [https://sourceforge.net/mailarchive/message.php?msg_id=21406424 - announced on the Genode mailing list],
|
||||
libSDL has been ported to Genode. At the current stage, the port supports
|
||||
the video subsystem and the input handling for mouse and keyboard. With
|
||||
libSDL now becoming available for Genode, it becomes much easier to make the
|
||||
wealth of libSDL-based applications available on our platform.
|
||||
|
||||
[http://sourceforge.net/mailarchive/message.php?msg_id=21406424 - Read the announcement...]
|
||||
[https://sourceforge.net/mailarchive/message.php?msg_id=21406424 - Read the announcement...]
|
||||
|
||||
|
||||
Genode on the L4ka::Pistachio kernel | 2008-12-18
|
||||
|
@ -3026,7 +3116,7 @@ Project website launched | 2008-07-29
|
|||
| Genode OS framework is scheduled for the 6th of August.
|
||||
|
||||
Today, we proudly launched the website of the Genode project
|
||||
[https://www.genode.org - https://www.genode.org]. This website is the central
|
||||
[https://genode.org - https://genode.org]. This website is the central
|
||||
resource for people using or developing the Genode OS framework. It covers
|
||||
the latest news about our progress, architectural and technical documentation,
|
||||
a community-maintained wiki, mailing lists, information on accessing the
|
||||
|
@ -3035,7 +3125,7 @@ attention of people who want bring forward the project together with us.
|
|||
|
||||
We have scheduled the first official release of the Genode OS framework for the
|
||||
6th August. Until then, we invite you to test-drive the beta-version of the
|
||||
framework as provided at the [https://www.genode.org/download - download].
|
||||
framework as provided at the [https://genode.org/download - download].
|
||||
|
||||
|
||||
Genode Labs founded | 2008-07-17
|
||||
|
|
|
@ -110,7 +110,7 @@ above becomes as simple as:
|
|||
!/* invoke remote procedure */
|
||||
!Capability ds_csp = rom.dataspace();
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Connecting_to_services - See the API documentation for the connection template...]
|
||||
[https://genode.org/documentation/api/base_index#Connecting_to_services - See the API documentation for the connection template...]
|
||||
|
||||
|
||||
Typed capabilities
|
||||
|
@ -134,7 +134,7 @@ classes at the client side.
|
|||
From the application-developer's perspective, working with capabilities
|
||||
has now become type-safe, making the produced code more readable and robust.
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Capability_representation - See the updated API documentation for the capability representation...]
|
||||
[https://genode.org/documentation/api/base_index#Capability_representation - See the updated API documentation for the capability representation...]
|
||||
|
||||
|
||||
Fifo data structure
|
||||
|
@ -146,7 +146,7 @@ first-out semantics. For such use cases, we introduced a dedicated
|
|||
'Fifo' template. The main motivation for introducing 'Fifo' into the
|
||||
base API is the new semaphore described below.
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Structured_data_types - See the new API documentation for the fifo template...]
|
||||
[https://genode.org/documentation/api/base_index#Structured_data_types - See the new API documentation for the fifo template...]
|
||||
|
||||
|
||||
Semaphore
|
||||
|
@ -163,7 +163,7 @@ and added the semaphore to Genode's official base API. We have made
|
|||
the wake-up policy in the presence of multiple consumers configurable
|
||||
via a template argument. The default policy is first-in-first-out.
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Synchronization - See the new API documentation for the semaphore...]
|
||||
[https://genode.org/documentation/api/base_index#Synchronization - See the new API documentation for the semaphore...]
|
||||
|
||||
Thanks to Christian Prochaska for his valuable contributions to the new
|
||||
semaphore design.
|
||||
|
@ -221,7 +221,7 @@ would have to be queued at the transmitter.
|
|||
Image [signals] illustrates the roles of signaller thread,
|
||||
transmitter, receiver, and signal-handler thread.
|
||||
|
||||
[http://genode.org/documentation/api/base_index#Asynchronous_notifications - See the new API documentation for asynchronous notifications...]
|
||||
[https://genode.org/documentation/api/base_index#Asynchronous_notifications - See the new API documentation for asynchronous notifications...]
|
||||
|
||||
The current generic implementation of the signalling API employs one
|
||||
thread at each transmitter and one thread at each receiver. Because
|
||||
|
@ -422,27 +422,27 @@ the API.
|
|||
Christian Helmuth created the initial version of the Linux device-driver
|
||||
environment for L4. He describes his effort of reusing unmodified sound
|
||||
drivers on the L4 platform in his thesis
|
||||
[http://os.inf.tu-dresden.de/papers_ps/helmuth-diplom.pdf - Generische Portierung von Linux-Gerätetreibern auf die DROPS-Architektur].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/helmuth-diplom.pdf - Generische Portierung von Linux-Gerätetreibern auf die DROPS-Architektur].
|
||||
;
|
||||
Gerd Griessbach approached the problem of re-using Linux USB drivers
|
||||
by following the DDE approach in his diploma thesis
|
||||
[http://os.inf.tu-dresden.de/papers_ps/griessbach-diplom.pdf - USB for DROPS].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/griessbach-diplom.pdf - USB for DROPS].
|
||||
;
|
||||
Marek Menzer adapted Linux DDE to Linux 2.6 and explored the DDE
|
||||
approach for block-device drivers in his student research project
|
||||
[http://os.inf.tu-dresden.de/papers_ps/menzer-beleg.pdf - Portierung des DROPS Device Driver Environment (DDE) für Linux 2.6 am Beispiel des IDE-Treibers ]
|
||||
[https://os.inf.tu-dresden.de/papers_ps/menzer-beleg.pdf - Portierung des DROPS Device Driver Environment (DDE) für Linux 2.6 am Beispiel des IDE-Treibers ]
|
||||
and his diploma thesis
|
||||
[http://os.inf.tu-dresden.de/papers_ps/menzer-diplom.pdf - Entwicklung eines Blockgeräte-Frameworks für DROPS].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/menzer-diplom.pdf - Entwicklung eines Blockgeräte-Frameworks für DROPS].
|
||||
;
|
||||
Thomas Friebel generalized the DDE approach and introduced the DDE kit
|
||||
API to enable the re-use of device driver from other platforms than
|
||||
Linux. In particular, he experimented with the block-device drivers of
|
||||
FreeBSD in his diploma thesis
|
||||
[http://os.inf.tu-dresden.de/papers_ps/friebel-diplom.pdf - Übertragung des Device-Driver-Environment-Ansatzes auf Subsysteme des BSD-Betriebssystemkerns].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/friebel-diplom.pdf - Übertragung des Device-Driver-Environment-Ansatzes auf Subsysteme des BSD-Betriebssystemkerns].
|
||||
;
|
||||
Dirk Vogt successfully re-approached the port of USB device drivers
|
||||
from the Linux kernel to L4 in his student research project
|
||||
[http://os.inf.tu-dresden.de/papers_ps/beleg-vogt.pdf - USB for the L4 Environment].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/beleg-vogt.pdf - USB for the L4 Environment].
|
||||
|
||||
The current incarnation of the DDE kit API provides the following
|
||||
features:
|
||||
|
@ -556,7 +556,7 @@ source-code repository called 'libc' and is based on the code of FreeBSD.
|
|||
The original code is available at the official FreeBSD website.
|
||||
|
||||
:FreeBSD website:
|
||||
[http://www.freebsd.org/developers/cvs.html]
|
||||
[https://www.freebsd.org/developers/cvs.html]
|
||||
|
||||
Our libc port comprises the libraries 'gdtoa', 'gen', 'locale', 'stdio',
|
||||
'stdlib', 'stdtime', 'string', and 'msun'. Currently, it supports the
|
||||
|
|
|
@ -28,7 +28,7 @@ supported base platforms.
|
|||
|
||||
Our original plan for the release 9.02 also comprised the support of a
|
||||
Linux-on-Genode (para-)virtualization solution. Initially, we intended to
|
||||
make [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ - L4Linux] available on
|
||||
make [https://os.inf.tu-dresden.de/L4/LinuxOnL4/ - L4Linux] available on
|
||||
the L4/Fiasco version of Genode. However, we identified several downsides
|
||||
with this approach. Apparently, the development of the officially available
|
||||
version of L4/Fiasco has become slow and long-known issues remain unfixed.
|
||||
|
@ -41,7 +41,7 @@ and VT support) that we want to explore. Furthermore, there exists another
|
|||
version of L4Linux called OKLinux for the OKL4 kernel developed at
|
||||
[http://ok-labs.com - OK-Labs], which is very interesting as well.
|
||||
Therefore, we decided against an ad-hoc solution and deferred this feature
|
||||
to the next release. [http:/about/road-map - See our updated road map...]
|
||||
to the next release. [https://genode.org/about/road-map - See our updated road map...]
|
||||
|
||||
|
||||
Major new Features
|
||||
|
@ -126,7 +126,7 @@ effort is included in this release and comes in the form of the
|
|||
:Further details:
|
||||
|
||||
You can find further technical details and usage instructions at this
|
||||
dedicated [http://genode.org/documentation/platforms/pistachio - page].
|
||||
dedicated [https://genode.org/documentation/platforms/pistachio - page].
|
||||
|
||||
|
||||
Qt4 on Genode
|
||||
|
@ -331,7 +331,7 @@ Device-Driver-Environment Kit
|
|||
|
||||
Because of the apparent stabilization of the DDE Kit API, we have now added
|
||||
this API to Genode's official API reference.
|
||||
[http://genode.org/documentation/api/dde_kit_index - See the documentation of the DDE Kit API...]
|
||||
[https://genode.org/documentation/api/dde_kit_index - See the documentation of the DDE Kit API...]
|
||||
|
||||
|
||||
PS/2 input driver
|
||||
|
@ -413,7 +413,7 @@ gcc 4.2.4.
|
|||
|
||||
As an alternative to installing the tool chain from source, we also
|
||||
provide pre-compiled binaries at the download section of our website.
|
||||
[http://genode.org/download/tool-chain - Visit our tool-chain download website...]
|
||||
[https://genode.org/download/tool-chain - Visit our tool-chain download website...]
|
||||
|
||||
For the Linux version of Genode, we still use the host's default gcc
|
||||
as tool chain. This way, we spare the hassle of downloading and installing
|
||||
|
|
|
@ -19,7 +19,7 @@ The previous Genode release was accompanied by a source-code archive containing
|
|||
the initial version of Qt4 for Genode. Our approach is to make the Qt4
|
||||
framework available for building Genode applications running natively on the
|
||||
microkernel rather than within a virtualization environment. As advertised in
|
||||
our [http://genode.org/about/road-map - road map], we have now seamlessly
|
||||
our [https://genode.org/about/road-map - road map], we have now seamlessly
|
||||
integrated the Qt4 framework into our mainline source tree. Furthermore, we
|
||||
have adapted our port to the Qt4 version 4.5.1. Section [Integration of Qt4
|
||||
into the mainline repository] gives a rough overview of the changes and an
|
||||
|
@ -152,7 +152,7 @@ L4 kernels.
|
|||
These differences of OKL4 compared with the microkernels already supported
|
||||
by Genode posed a number of interesting challenges and opportunities. We have
|
||||
thoroughly documented the process in
|
||||
[http://genode.org/documentation/articles/genode-on-okl4 - Bringing Genode to OKL4].
|
||||
[https://genode.org/documentation/articles/genode-on-okl4 - Bringing Genode to OKL4].
|
||||
|
||||
|
||||
Usage
|
||||
|
@ -160,7 +160,7 @@ Usage
|
|||
|
||||
For using Genode with OKL4, please refer to the following dedicated page:
|
||||
|
||||
:[http://genode.org/documentation/platforms/okl4 - Genode on the OKL4 microkernel]:
|
||||
:[https://genode.org/documentation/platforms/okl4 - Genode on the OKL4 microkernel]:
|
||||
Site about building and using Genode with the OKL4 kernel.
|
||||
|
||||
|
||||
|
@ -293,7 +293,7 @@ Genode's libc. Thereby the linker will silently create references to glibc
|
|||
symbols, making both libraries collide. So if using Qt4, we recommend using the
|
||||
Genode tool chain:
|
||||
|
||||
:[http://genode.org/download/tool-chain]:
|
||||
:[https://genode.org/download/tool-chain]:
|
||||
Information about downloading and using the Genode tool chain
|
||||
|
||||
|
||||
|
@ -308,7 +308,7 @@ we already utilized this approach for realizing basic networking on Genode.
|
|||
With this release, we complement DDE Linux with support required by USB
|
||||
drivers. We are grateful for being able to base our implementation on the
|
||||
excellent foundation laid by Dirk Vogt. He described his work in
|
||||
[http://os.inf.tu-dresden.de/papers_ps/beleg-vogt.pdf - USB for the L4 environment].
|
||||
[https://os.inf.tu-dresden.de/papers_ps/beleg-vogt.pdf - USB for the L4 environment].
|
||||
|
||||
For USB HID support, we added the Linux USB and input subsystems to the DDE
|
||||
Linux 2.6 framework. Besides the 'dde_linux26/net.h' API for network drivers
|
||||
|
|
|
@ -194,7 +194,7 @@ Qemu is decribed at a dedicated Wiki page:
|
|||
|
||||
:Genode/OKL4 on the GTA01 platfrom:
|
||||
|
||||
[http://genode.org/community/wiki/GenodeOKL4OnTheGTA01Platform - Genode.org Community Wiki]
|
||||
[https://genode.org/community/wiki/GenodeOKL4OnTheGTA01Platform - Genode.org Community Wiki]
|
||||
|
||||
Both the OKL4 version 2.1.1 and the GTA01 chip are not the most current
|
||||
platforms but this combination turned out to be good as starting point.
|
||||
|
@ -238,7 +238,7 @@ Usage
|
|||
|
||||
If you haven't build Genode for OKL4 yet, please refer to the following document:
|
||||
|
||||
:[http://genode.org/documentation/platforms/okl4 - Genode on the OKL4 microkernel]:
|
||||
:[https://genode.org/documentation/platforms/okl4 - Genode on the OKL4 microkernel]:
|
||||
This page contains the information on how to build and use Genode with OKL4.
|
||||
|
||||
For building OKLinux for Genode, you first need to download and patch the
|
||||
|
@ -532,7 +532,7 @@ the following config file can be used:
|
|||
|
||||
For trying out the example with Qemu, please refer to the instructions
|
||||
given in the
|
||||
[http://genode.org/documentation/release-notes/9.02#section-4 - description]
|
||||
[https://genode.org/documentation/release-notes/9.02#section-4 - description]
|
||||
of the initial networking support added in Genode version 9.02.
|
||||
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ In December 2009, the day we waited for a long time had come. The first version
|
|||
of NOVA was publicly released:
|
||||
|
||||
:Official website of the NOVA hypervisor:
|
||||
[http://hypervisor.org]
|
||||
[https://hypervisor.org]
|
||||
|
||||
Besides the novel and modern kernel interface, NOVA has a list of features that
|
||||
sets it apart from most other microkernels, in particular support for
|
||||
|
@ -221,7 +221,7 @@ The Genode release 10.02 supports the NOVA pre-release version 0.1. You can
|
|||
download the archive here:
|
||||
|
||||
:Download NOVA version 0.1:
|
||||
[http://os.inf.tu-dresden.de/~us15/nova/nova-hypervisor-0.1.tar.bz2]
|
||||
[https://os.inf.tu-dresden.de/~us15/nova/nova-hypervisor-0.1.tar.bz2]
|
||||
|
||||
For building NOVA, please refer to the 'README' file contained in the archive.
|
||||
Normally, a simple 'make' in the 'build/' subdirectory is all you need to
|
||||
|
@ -236,7 +236,7 @@ following command:
|
|||
|
||||
This tool will create a fresh build directory at the location specified
|
||||
as 'BUILD_DIR'. Provided that you have installed the
|
||||
[http://genode.org/download/tool-chain - Genode tool chain], you can now build
|
||||
[https://genode.org/download/tool-chain - Genode tool chain], you can now build
|
||||
Genode by using 'make' from within the new build directory.
|
||||
|
||||
Note that in contrast to most other kernels, the Genode build process does not
|
||||
|
@ -908,7 +908,7 @@ request inconsistently. We have now enhanced the 'Root_component' template with
|
|||
a policy parameter to 'Root_component' that allows the specification of a
|
||||
session-creation policy. The most important policy is whether a service can
|
||||
have a single or multiple clients.
|
||||
[http://genode.org/documentation/api/inline?code/base/include/root/component.h - See the improved template...]
|
||||
[https://genode.org/documentation/api/inline?code/base/include/root/component.h - See the improved template...]
|
||||
|
||||
Out-of-order RPC replies
|
||||
========================
|
||||
|
@ -933,7 +933,7 @@ provided with the 'libports' repository. It is based on the official
|
|||
Python code available from the website:
|
||||
|
||||
:Python website:
|
||||
[http://www.python.org]
|
||||
[https://www.python.org]
|
||||
|
||||
To fetch the upstream Python source code, call 'make prepare' from within the
|
||||
'libports' directory. To include Python in your build process, add 'libports'
|
||||
|
@ -1107,7 +1107,7 @@ running Genode like the following.
|
|||
! sudo ip address add 10.0.0.1/24 brd + dev tap0
|
||||
|
||||
Give it a try with the
|
||||
[http://genode.org/documentation/release-notes/9.11#section-17 - lwIP example scenario].
|
||||
[https://genode.org/documentation/release-notes/9.11#section-17 - lwIP example scenario].
|
||||
Please note that lwIP is configured for DHCP and does not assign a
|
||||
static IP configuration to its end of the wire. Hence, you should run
|
||||
a DHCP server on tap0, e.g.
|
||||
|
|
|
@ -1012,7 +1012,7 @@ Arora web browser
|
|||
Arora has its origin as an example application for Qt4. However, it emancipated
|
||||
itself to be a separate project.
|
||||
|
||||
:[http://arora.googlecode.com]: Arora project website
|
||||
:[https://arora.googlecode.com]: Arora project website
|
||||
|
||||
Even though compared with other browsers, its popularity is relatively small
|
||||
but for us, it is perfect to stretch the bounds of our Genode infrastructure.
|
||||
|
@ -1123,7 +1123,7 @@ New two-stage build system
|
|||
==========================
|
||||
|
||||
Since the thorough
|
||||
[http://www.genode-labs.com/publications/scons-vs-make-2008.pdf - analysis of the Genode build system]
|
||||
[https://www.genode-labs.com/publications/scons-vs-make-2008.pdf - analysis of the Genode build system]
|
||||
by Ludwig Hähne in 2008, we were planning to incorporate his findings into
|
||||
Genode. In his study, he reimplemented Genode's make-based build system using
|
||||
SCons and compared both implementations. For us, the two most interesting
|
||||
|
|
|
@ -17,7 +17,7 @@ networking, audio output, real-time priorities, mandatory access control,
|
|||
USB, ATAPI block devices, Python, hardware-accelerated 3D graphics, Qt4,
|
||||
the WebKit-based Arora browser, and the paravirtualized OKLinux kernel.
|
||||
So many wonderful toys waiting to get played with. This is how the idea of
|
||||
creating [http://genode.org/download/live-cds - the new Genode Live CD] was
|
||||
creating [https://genode.org/download/live-cds - the new Genode Live CD] was
|
||||
born. In the past, Genode was mostly used in settings with a relatively static
|
||||
configuration consisting of several components orchestrated to fulfill
|
||||
a few special-purpose functions. Now, the time has come for the next step,
|
||||
|
@ -65,7 +65,7 @@ the nifty interfaces used by the driver in our emulation framework. To
|
|||
achieve our short-term goal of a great live CD experience, we had to
|
||||
walk a different path.
|
||||
|
||||
[http://gpxe.org/ - gPXE] is a lovely network boot loader / open-source
|
||||
[https://gpxe.org/ - gPXE] is a lovely network boot loader / open-source
|
||||
PXE ROM project and the successor of the famous Etherboot
|
||||
implementation. Besides support for DNS, HTTP, iSCSI and AoE, gPXE
|
||||
includes dozens of NIC drivers and applies a plain driver framework.
|
||||
|
@ -100,7 +100,7 @@ at 'bin/gpxe_nic_drv'.
|
|||
On-demand paging
|
||||
################
|
||||
|
||||
In the [http://genode.org/documentation/release-notes/8.11#section-8 - release 8.11],
|
||||
In the [https://genode.org/documentation/release-notes/8.11#section-8 - release 8.11],
|
||||
we laid the foundation for implementing user-level dataspace managers.
|
||||
But so far, the facility remained largely unused except for managing thread
|
||||
contexts. This changed with this release.
|
||||
|
@ -271,7 +271,7 @@ Finished transition to new init concept
|
|||
=======================================
|
||||
|
||||
With the release 10.05, we introduced the
|
||||
[http://genode.org/documentation/release-notes/10.05#section-0 - current configuration concept of init].
|
||||
[https://genode.org/documentation/release-notes/10.05#section-0 - current configuration concept of init].
|
||||
This concept supports mandatory access control and provides flexible
|
||||
ways for defining client-server relationships. Until now, we maintained
|
||||
the old init concept. With the current release, the transition to the
|
||||
|
@ -736,7 +736,7 @@ Automated coding-style checker
|
|||
|
||||
As Genode's code base grows and new developers start to get involved,
|
||||
we noticed recurring questions regarding coding style. There is a
|
||||
[http://genode.org/documentation/developer-resources/coding_style - document]
|
||||
[https://genode.org/documentation/developer-resources/coding_style - document]
|
||||
describing our coding style but for people just starting to get involved,
|
||||
adhering all the rules can become tedious. However, we stress the importance
|
||||
of a consistent coding style for the project. Not only does a consistent style
|
||||
|
|
|
@ -88,7 +88,7 @@ following packages:
|
|||
Moreover, you need to download and install the tool-chain used by Genode. Have
|
||||
a look at this page:
|
||||
|
||||
:[http://genode.org/download/tool-chain]:
|
||||
:[https://genode.org/download/tool-chain]:
|
||||
Genode tool-chain
|
||||
|
||||
|
||||
|
@ -98,8 +98,8 @@ Downloading and building Fiasco.OC
|
|||
Checkout the Fiasco.OC sources and tool-chain to an appropriated directory:
|
||||
|
||||
! export REPOMGR_SVN_REV=27
|
||||
! svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr |\
|
||||
! perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re
|
||||
! svn cat https://svn.tudos.org/repos/oc/tudos/trunk/repomgr |\
|
||||
! perl - init https://svn.tudos.org/repos/oc/tudos fiasco l4re
|
||||
|
||||
|
||||
Building the kernel
|
||||
|
@ -154,7 +154,7 @@ Building the Fiasco.OC version of Genode
|
|||
|
||||
The Fiasco.OC version of Genode is available at the Genode public subversion repository:
|
||||
|
||||
:http://genode.org/download/subversion-repository:
|
||||
:https://genode.org/download/subversion-repository:
|
||||
Information about accessing the Genode public subversion repository
|
||||
|
||||
Go to a directory where you want the Genode/Fiasco.OC build directory to remain. Use
|
||||
|
@ -273,7 +273,7 @@ Further Information
|
|||
:genode/tool/builddir/README:
|
||||
Reference manual for the 'create_builddir' script
|
||||
|
||||
:[http://os.inf.tu-dresden.de/fiasco]:
|
||||
:[https://os.inf.tu-dresden.de/fiasco]:
|
||||
Official website for the Fiasco.OC microkernel.
|
||||
|
||||
|
||||
|
@ -453,7 +453,7 @@ and a set of IP cores for implementing fully-fledged windowed GUIs on FPGAs:
|
|||
|
||||
:Website of the Genode FPGA Graphics Project:
|
||||
|
||||
[http://genode-labs.com/products/fpga-graphics]
|
||||
[https://genode-labs.com/products/fpga-graphics]
|
||||
|
||||
Ever since we first released the Genode FPGA project, we envisioned to combine
|
||||
it with the Genode OS Framework. In Spring 2010, Martin Stein joined our team
|
||||
|
|
|
@ -96,7 +96,7 @@ C++-based alternative, fostering the use of the C++ streaming operators
|
|||
combined with templates. The following paper provides a detailed discussion
|
||||
on the subject:
|
||||
|
||||
:[http://genode-labs.com/publications/dynrpc-2007.pdf - A Case Study on the Cost and Benefit of Dynamic RPC Marshalling for Low-Level System Components]:
|
||||
:[https://genode-labs.com/publications/dynrpc-2007.pdf - A Case Study on the Cost and Benefit of Dynamic RPC Marshalling for Low-Level System Components]:
|
||||
_SIGOPS OSR Special Issue on Secure Small-Kernel Systems, 2007_
|
||||
|
||||
In hindsight, leaving behind the IDL approach was the right decision. From a
|
||||
|
@ -120,7 +120,7 @@ function call to a remote process running on the same machine (contrarily to
|
|||
the term RPC being used in the context of systems distributed over a network).
|
||||
|
||||
The state of the art is best explained by the example interface discussed
|
||||
in the [http://genode.org/documentation/developer-resources/client_server_tutorial - Hello Tutorial].
|
||||
in the [https://genode.org/documentation/developer-resources/client_server_tutorial - Hello Tutorial].
|
||||
On Genode, each RPC interface is represented by an abstract C++ class,
|
||||
enriched by some bits of information shared by the caller and the callee.
|
||||
|
||||
|
|
|
@ -251,27 +251,27 @@ The new way of dealing with different kernels motivated us to revisit and
|
|||
complement our exiting documentation. The following documents are new or
|
||||
have received considerable attention:
|
||||
|
||||
:[http://genode.org/documentation/developer-resources/getting_started - Getting started]:
|
||||
:[https://genode.org/documentation/developer-resources/getting_started - Getting started]:
|
||||
The revised guide of how to explore Genode provides a quick way to
|
||||
test drive Genode's graphical demo scenario with a kernel of your
|
||||
choice and gives pointers to documents needed to proceed your
|
||||
exploration.
|
||||
|
||||
:[http://genode.org/documentation/developer-resources/build_system - Build system manual]:
|
||||
:[https://genode.org/documentation/developer-resources/build_system - Build system manual]:
|
||||
The new build-system manual explains the concepts behind Genode's
|
||||
build system, provides guidance with creating custom programs and
|
||||
libraries, and covers the tool support for the automated integration
|
||||
and testing of application scenarios.
|
||||
|
||||
:[http://genode.org/documentation/components - Components overview]:
|
||||
:[https://genode.org/documentation/components - Components overview]:
|
||||
The new components-overview document explains the categorization of
|
||||
Genode's components and lists all components that come with the framework.
|
||||
|
||||
:[http://genode.org/documentation/developer-resources/init - Configuration of the init process]:
|
||||
:[https://genode.org/documentation/developer-resources/init - Configuration of the init process]:
|
||||
The document describes Genode's configuration concept, the routing of
|
||||
service requests, and the expression of mandatory access-control policies.
|
||||
|
||||
:[http://genode.org/community/wiki - Wiki]:
|
||||
:[https://genode.org/community/wiki - Wiki]:
|
||||
The platform-specific Wiki pages for L4/Fiasco, L4ka::Pistachio, NOVA,
|
||||
Codezero, Fiasco.OC, and OKL4 have been updated to reflect the new flows of
|
||||
working with the respective base platforms.
|
||||
|
|
|
@ -76,7 +76,7 @@ traditional hypervisors. Hence, the authors of NOVA coined the term
|
|||
microhypervisor.
|
||||
|
||||
The NOVA virtualization architecture is detailed in the paper
|
||||
[http://os.inf.tu-dresden.de/papers_ps/steinberg_eurosys2010.pdf - NOVA: A Microhypervisor-Based Secure Virtualization Architecture]
|
||||
[https://os.inf.tu-dresden.de/papers_ps/steinberg_eurosys2010.pdf - NOVA: A Microhypervisor-Based Secure Virtualization Architecture]
|
||||
by Udo Steinberg and Bernhard Kauer.
|
||||
|
||||
Since February 2010, NOVA is one of the supported base platforms of Genode. But
|
||||
|
@ -123,7 +123,7 @@ L4Linux is the base of L4Android, a project that combines the Android software
|
|||
stack with L4Linux. With the current release, we have integrated L4Android with
|
||||
Genode.
|
||||
|
||||
:[http://l4android.org]:
|
||||
:[https://l4android.org]:
|
||||
L4Android project website
|
||||
|
||||
[image l4android]
|
||||
|
@ -396,7 +396,7 @@ Vancouver is a virtual machine monitor specifically developed for the use with
|
|||
the NOVA hypervisor. It virtualizes a 32-bit x86 PC hardware including various
|
||||
peripherals.
|
||||
|
||||
The official project website is [http://hypervisor.org]. Vancouver relies
|
||||
The official project website is [https://hypervisor.org]. Vancouver relies
|
||||
on hardware virtualization support such as VMX (Intel) or SVM (AMD).
|
||||
With the current release, we have added the first version of our port of
|
||||
Vancouver to Genode to the 'ports' repository. To download the Vancouver
|
||||
|
@ -575,7 +575,7 @@ bidirectional communication (terminal session), and creating the actual GDB
|
|||
support in the form of the GDB monitor component. To paint a complete picture
|
||||
of the scene, we have added the following documentation:
|
||||
|
||||
:[http://genode.org/documentation/developer-resources/gdb]:
|
||||
:[https://genode.org/documentation/developer-resources/gdb]:
|
||||
User-level debugging on Genode
|
||||
|
||||
|
||||
|
@ -680,7 +680,7 @@ the official successor of gPXE, for our NIC drivers. Currently, drivers for
|
|||
Intel E1000/E1000e and PCnet32 cards are enabled in the new 'nic_drv'. The
|
||||
Linux based driver was removed.
|
||||
|
||||
:[http://ipxe.org]:
|
||||
:[https://ipxe.org]:
|
||||
iPXE open source boot firmware
|
||||
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ with new device-driver infrastructure such as the first version of a device
|
|||
driver manager and a new ACPI parser.
|
||||
|
||||
Feature-wise, the current release takes the first steps towards the goal of the
|
||||
[http://genode.org/about/road-map - Roadmap for 2012], turning Genode into a
|
||||
[https://genode.org/about/road-map - Roadmap for 2012], turning Genode into a
|
||||
general-purpose OS ready for everyday use by its developers. According to the
|
||||
roadmap, we enhanced the Noux runtime with fork semantics so that we can run
|
||||
command-line based GNU programs such as the bash shell and coreutils unmodified
|
||||
|
@ -48,7 +48,7 @@ releases. This way of development seemed to work quite well for us, we were
|
|||
satisfied about the pace of development, and with each release, our project got
|
||||
more recognition.
|
||||
|
||||
However, the excellent book [http://producingoss.com/ - Producing Open Source Software]
|
||||
However, the excellent book [https://producingoss.com/ - Producing Open Source Software]
|
||||
made us realize that even though we released our work under an Open-Source
|
||||
license, our development process was actually far from being open and may have
|
||||
discouraged participation of people outside the inner circle of developers.
|
||||
|
@ -58,14 +58,14 @@ to liberate the project from its closed fashion of development.
|
|||
|
||||
In the beginning of December, the vague idea has become a plan. So we finally
|
||||
brought the topic to our mailing list
|
||||
([http://genode.org/news/steps-towards-an-open-development-process - Steps towards an open development process]).
|
||||
([https://genode.org/news/steps-towards-an-open-development-process - Steps towards an open development process]).
|
||||
We decided to take the release cycle for Genode 12.02 as the opportunity to put
|
||||
our plan to practice. The central element of this endeavour was moving the
|
||||
project over to GitHub and adapt our workflows and tooling support accordingly.
|
||||
First, we started to embrace GitHub's issue tracker for the management of
|
||||
working topics:
|
||||
|
||||
:[http://github.com/genodelabs/genode/issues]: Issue Tracker
|
||||
:[https://github.com/genodelabs/genode/issues]: Issue Tracker
|
||||
|
||||
The most significant step was leaving our Genode-Labs-internal code
|
||||
repositories behind and starting a completely public Git repository instead:
|
||||
|
@ -86,7 +86,7 @@ comes directly from the project's Git repository. So maintaining website
|
|||
content is done in the same coherent and transparent way as working on Genode's
|
||||
code base. So we could finally put the old Wiki to rest. In the process, we
|
||||
largely revisited the existing content. For example, we rewrote the
|
||||
[http://genode.org/community/contributions - contributions] document in a
|
||||
[https://genode.org/community/contributions - contributions] document in a
|
||||
tutorial-like style and incorporated several practical hints, in particular
|
||||
related to the recommended use of Git.
|
||||
|
||||
|
@ -419,9 +419,9 @@ New and updated libraries
|
|||
|
||||
We updated Qt4 from version 4.7.1 to version 4.7.4. For the most part, the
|
||||
update contains bug fixes as detailed in the release notes for the versions
|
||||
[http://qt.nokia.com/products/changes/changes-4.7.2 - 4.7.2],
|
||||
[http://qt.nokia.com/products/changes/changes-4.7.3 - 4.7.3], and
|
||||
[http://labs.qt.nokia.com/2011/09/01/qt-4-7-4-released - 4.7.4].
|
||||
[https://qt.nokia.com/products/changes/changes-4.7.2 - 4.7.2],
|
||||
[https://qt.nokia.com/products/changes/changes-4.7.3 - 4.7.3], and
|
||||
[https://labs.qt.nokia.com/2011/09/01/qt-4-7-4-released - 4.7.4].
|
||||
|
||||
:Update of zlib to version 1.2.6:
|
||||
|
||||
|
@ -469,7 +469,7 @@ PDF viewer
|
|||
According to our road map for 2012, we pursued the port of an existing PDF
|
||||
viewer as native application to Genode.
|
||||
|
||||
We first looked at the [http://poppler.freedesktop.org - libpoppler],
|
||||
We first looked at the [https://poppler.freedesktop.org - libpoppler],
|
||||
which seems to be the most popular PDF rendering engine in the world of
|
||||
freedesktop.org. To get a grasp on what the porting effort of this engine may
|
||||
be, we looked at projects using this library as well as the library source
|
||||
|
@ -678,7 +678,7 @@ employing a full-blown ACPI interpreter, the ACPI driver uses an ingenious
|
|||
technique invented by Bernhard Kauer, which is described in the following
|
||||
paper:
|
||||
|
||||
:[http://os.inf.tu-dresden.de/papers_ps/tr-atare-2009.pdf - ATARE - ACPI Tables and Regular Expressions]:
|
||||
:[https://os.inf.tu-dresden.de/papers_ps/tr-atare-2009.pdf - ATARE - ACPI Tables and Regular Expressions]:
|
||||
_TU Dresden technical report TUD-FI09-09, Dresden, Germany, August 2009_
|
||||
|
||||
:Usage:
|
||||
|
|
|
@ -17,7 +17,7 @@ The highlights are the introduction of Genode's file-system infrastructure and
|
|||
a new concept for the dynamic adjustment of the system's behaviour at runtime.
|
||||
|
||||
The release follows the rough plan we laid out in our
|
||||
[http://genode.org/about/road-map - road map]. One planned road-map item was
|
||||
[https://genode.org/about/road-map - road map]. One planned road-map item was
|
||||
revisiting our base of device drivers as we realized that some important
|
||||
drivers were not on par with our requirements, the USB stack being the most
|
||||
important example. Our prior existing solution was originally ported from Linux
|
||||
|
@ -619,8 +619,8 @@ from the official zlib mirrors.
|
|||
|
||||
:Video codecs via libav:
|
||||
|
||||
The [http://libav.org - libav project] is one successor of the popular
|
||||
[http://ffmpeg.org/ - FFmpeg] library, which is a comprehensive solution
|
||||
The [https://libav.org - libav project] is one successor of the popular
|
||||
[https://ffmpeg.org/ - FFmpeg] library, which is a comprehensive solution
|
||||
for video and audio decoding, conversion, and streaming. The version
|
||||
0.8.2 of libav has been incorporated into the libports repository.
|
||||
|
||||
|
@ -645,7 +645,7 @@ versatile test tool, which loads and runs test scripts configured with
|
|||
Genode's config mechanism. Test results can be aggregated, printed, and
|
||||
analyzed at runtime by scripts.
|
||||
|
||||
:[http://lua.org/]: Lua programming language
|
||||
:[https://lua.org/]: Lua programming language
|
||||
|
||||
|
||||
libSDL
|
||||
|
@ -743,7 +743,7 @@ player. It consists of the following pieces.
|
|||
[image media_player]
|
||||
The unmodified 'avplay' embedded in Qt4-based GUI.
|
||||
The media file was downloaded from
|
||||
http://www.youtube.com/watch?v=CbtAP3kUCxs.
|
||||
https://www.youtube.com/watch?v=CbtAP3kUCxs.
|
||||
|
||||
The latter part is particularly interesting because it makes creative use of
|
||||
Genode's unique service virtualization facilities. The 'qt_avplay' program
|
||||
|
|
|
@ -48,7 +48,7 @@ the genode.org website via the lighttpd web server,
|
|||
|
||||
:What about the road map?:
|
||||
|
||||
Those of you who track the milestones laid out in our [http:/about/road-map - road map]
|
||||
Those of you who track the milestones laid out in our [https://genode.org/about/road-map - road map]
|
||||
may wonder how Genode 12.08 relates to the stated goals. In fact, several
|
||||
points of the road map haven't received the attention as originally planned.
|
||||
As an explanation, let us quote the paragraph right atop of the road-map page:
|
||||
|
@ -152,10 +152,10 @@ you will see the new 'hw_panda_a2', 'hw_vea9x4', 'hw_pbxa9' choices of
|
|||
build-directory templates. The latter platform enables you to run a
|
||||
'base-hw' Genode system on Qemu.
|
||||
|
||||
[http://genode.org/documentation/platforms/hw - Learn more about using the new base-hw platform...]
|
||||
[https://genode.org/documentation/platforms/hw - Learn more about using the new base-hw platform...]
|
||||
|
||||
For running Genode directly on the Pandaboard, please refer to the
|
||||
[http://genode.org/documentation/platforms/hw_panda_a2 - Pandaboard-specific documentation...]
|
||||
[https://genode.org/documentation/platforms/hw_panda_a2 - Pandaboard-specific documentation...]
|
||||
|
||||
|
||||
Embracing the NOVA Hypervisor
|
||||
|
@ -406,14 +406,14 @@ New and updated 3rd-party libraries
|
|||
|
||||
:Expat:
|
||||
|
||||
[http://expat.sourceforge.net - Expat] is an XML parsing library. The port of
|
||||
[https://expat.sourceforge.net - Expat] is an XML parsing library. The port of
|
||||
this library was motivated by our goal to use the GNU debugger for on-target
|
||||
debugging. GDB depends on this library.
|
||||
|
||||
:MPC and GMP:
|
||||
|
||||
We complemented our existing port of the
|
||||
[http://gmplib.org - GNU multiple precision arithmetic library (libgmp)] with
|
||||
[https://gmplib.org - GNU multiple precision arithmetic library (libgmp)] with
|
||||
support for the x86_64 and ARM architectures. This change combined with the
|
||||
port of the [http://www.multiprecision.org/index.php?prog=mpc - MPC library]
|
||||
enables us to build the Genode tool chain for these architectures.
|
||||
|
@ -437,14 +437,14 @@ on it.
|
|||
|
||||
:PCRE:
|
||||
|
||||
[http://www.pcre.org/ - PCRE] is a library for parsing regular rexpressions. We
|
||||
[https://www.pcre.org/ - PCRE] is a library for parsing regular rexpressions. We
|
||||
require this library for our ongoing work on porting the lighttpd webserver.
|
||||
|
||||
|
||||
Lighttpd web server
|
||||
===================
|
||||
|
||||
The [http://www.lighttpd.net/ - Lighttpd] web server has been added to the
|
||||
The [https://www.lighttpd.net/ - Lighttpd] web server has been added to the
|
||||
'ports' repository. The port runs as a native Genode application and ultimately
|
||||
clears the way to hosting the genode.org website on Genode. To test drive this
|
||||
scenario, please give the 'ports/run/genode_org.run' script a try.
|
||||
|
|
|
@ -328,7 +328,7 @@ To prevent the TCP/IP stack from artificially throttling TCP throughput,
|
|||
we adjusted lwIP's TCP_SND_BUF size.
|
||||
|
||||
From our work on optimizing the NIC stub-code performance of L4Linux as
|
||||
described [http://genode.org/documentation/articles/pandaboard - here],
|
||||
described [https://genode.org/documentation/articles/pandaboard - here],
|
||||
we learned that the use of a NIC-specific packet allocator for the
|
||||
packet-stream interface is beneficial. At the lwIP back end, we still relied on
|
||||
the original general-purpose allocator. Hence, we improved the lwIP back-end
|
||||
|
@ -368,7 +368,7 @@ device-driver environment for the audio drivers of the Open Sound System (OSS).
|
|||
|
||||
:Website of the Open Sound System:
|
||||
|
||||
[http://http://www.4front-tech.com]
|
||||
[http://www.4front-tech.com]
|
||||
|
||||
The new 'dde_oss' contains all the pieces needed to use Intel HDA, AC97, and
|
||||
ES1370 audio cards on Genode. On first use, the 3rd-party code can be
|
||||
|
@ -732,4 +732,4 @@ refer to the tool-chain website:
|
|||
|
||||
:Genode tool chain:
|
||||
|
||||
[http://genode.org/download/tool-chain]
|
||||
[https://genode.org/download/tool-chain]
|
||||
|
|
|
@ -172,7 +172,7 @@ Full virtualization on NOVA/x86
|
|||
|
||||
Vancouver is a x86 virtual machine monitor that is designed to run as
|
||||
user-level process on top of the NOVA hypervisor. In
|
||||
[http://genode.org/documentation/release-notes/11.11#Faithful_x86_PC_Virtualization_enabled_by_the_Vancouver_VMM - Genode version 11.11],
|
||||
[https://genode.org/documentation/release-notes/11.11#Faithful_x86_PC_Virtualization_enabled_by_the_Vancouver_VMM - Genode version 11.11],
|
||||
we introduced the preliminary adaptation of Vancouver to Genode. This version
|
||||
was meant as a mere proof of concept, which allowed the bootup of small Guest
|
||||
OSes (such as Fiasco.OC or Pistachio) inside the VMM. However, it did not
|
||||
|
@ -379,7 +379,7 @@ Trimmed and unified framework API
|
|||
=================================
|
||||
|
||||
A though-provoking
|
||||
[http://sourceforge.net/mailarchive/forum.php?thread_name=CAGQ-%3Dq27%2B_UooBiJmz9RdTE1gDmVcg9v0w-8TNgEH5fzHYiA%2BQ%40mail.gmail.com&forum_name=genode-main - posting]
|
||||
[https://sourceforge.net/mailarchive/forum.php?thread_name=CAGQ-%3Dq27%2B_UooBiJmz9RdTE1gDmVcg9v0w-8TNgEH5fzHYiA%2BQ%40mail.gmail.com&forum_name=genode-main - posting]
|
||||
on our mailing list prompted us to explore the idea to make shared libraries
|
||||
and dynamically linked executables binary compatible among different kernels.
|
||||
This sounds a bit crazy at first but it is not downright infeasible.
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
|
||||
With Genode 13.05, we have diverged quite a bit from the feature-laden plans
|
||||
laid out in our [http://genode.org/about/road-map road map] as we realized
|
||||
laid out in our [https://genode.org/about/road-map road map] as we realized
|
||||
that consolidating and optimizing the current feature set will have a more
|
||||
sustainable effect than functional enhancements at this point. In particular,
|
||||
we addressed the problem that the ever growing diversity of platforms imposes
|
||||
|
@ -110,7 +110,7 @@ TFTP boot x86
|
|||
The following description uses NOVA as an example to illustrate the usage.
|
||||
Other base platforms are supported as well and can be configured analogously.
|
||||
|
||||
[http://os.inf.tu-dresden.de/~us15/pulsar/ - Pulsar] is a tiny boot loader
|
||||
[https://os.inf.tu-dresden.de/~us15/pulsar/ - Pulsar] is a tiny boot loader
|
||||
that uses PXE to fetch boot images via TFTP over the network. On the x86
|
||||
architecture, Genode supports the automatic generation of Pulsar configuration
|
||||
files, which can be placed directly onto a TFTP server. Genode can be booted
|
||||
|
@ -345,7 +345,7 @@ each requiring a dedicated 'Terminal::Session'. Hence, we need a way to
|
|||
multiplex the 'Terminal::Session' interface between those clients. Our
|
||||
multiplexing solution comes in the form of a component called terminal_mux,
|
||||
which we just introduced in the
|
||||
[http://genode.org/documentation/release-notes/13.02#New_terminal_multiplexer - previous release].
|
||||
[https://genode.org/documentation/release-notes/13.02#New_terminal_multiplexer - previous release].
|
||||
It uses a single terminal connection to implement a text-based user interface
|
||||
to multiple virtual terminal consoles.
|
||||
|
||||
|
@ -400,7 +400,7 @@ unsynchronized class interfaces.
|
|||
:MMIO framework improvements:
|
||||
|
||||
For native Genode device drivers, we consistently use our
|
||||
[http://genode.org/documentation/release-notes/12.02#MMIO_access_framework - MMIO framework API].
|
||||
[https://genode.org/documentation/release-notes/12.02#MMIO_access_framework - MMIO framework API].
|
||||
These utilities help us to safeguard the access to individual bit fields of
|
||||
memory-mapped device registers and cleanly separate the declaration of device
|
||||
registers from the driver logic. During the increased use of the API, we
|
||||
|
@ -669,7 +669,7 @@ particular, we addressed USB networking, XHCI (USB-3), Gigabit networking over
|
|||
USB-3, eMMC, and SATA.
|
||||
|
||||
The development of those device drivers follows our rationale that guided our
|
||||
[http://genode.org/documentation/articles/pandaboard - previous work on the OMAP4 platform].
|
||||
[https://genode.org/documentation/articles/pandaboard - previous work on the OMAP4 platform].
|
||||
For the USB driver, we employed the device-driver-environment (DDE) approach
|
||||
for reusing the Linux USB stack and the host controller drivers. In contrast,
|
||||
the eMMC and SATA drivers are built as genuine Genode drivers with no
|
||||
|
@ -747,7 +747,7 @@ The OMAP4 framebuffer driver used to support HDMI only, which was used
|
|||
for connecting a display to the Pandaboard. To make the driver usable on
|
||||
phones and tablets, the driver has been enhanced to support LCD output. Thanks
|
||||
to Alexander Tarasikov for the patch and the insightful story about
|
||||
[http://allsoftwaresucks.blogspot.com/2013/05/porting-genode-to-commercial-hardware.html - porting Genode to the B&N Nook HD+ tablet]!
|
||||
[https://allsoftwaresucks.blogspot.com/2013/05/porting-genode-to-commercial-hardware.html - porting Genode to the B&N Nook HD+ tablet]!
|
||||
|
||||
|
||||
USB
|
||||
|
|
|
@ -533,7 +533,7 @@ Management of CPU affinities
|
|||
============================
|
||||
|
||||
In line with our experience of supporting
|
||||
[http://www.genode.org/documentation/release-notes/10.02#Real-time_priorities - real-time priorities]
|
||||
[https://genode.org/documentation/release-notes/10.02#Real-time_priorities - real-time priorities]
|
||||
in version 10.02, we were seeking a way to express CPU affinities such that
|
||||
Genode's recursive nature gets preserved and facilitated. Dealing with
|
||||
physical CPU numbers would contradict with this mission. Our solution
|
||||
|
|
|
@ -203,7 +203,7 @@ but less so with file systems that are well supported by the Linux kernel.
|
|||
Coincidentally, when we came to this realization, we stumbled upon the
|
||||
wonderful work of Antti Kantee on so-called rump kernels:
|
||||
|
||||
:[http://wiki.netbsd.org/rumpkernel/]:
|
||||
:[https://wiki.netbsd.org/rumpkernel/]:
|
||||
Rump kernel Wiki
|
||||
|
||||
The motivation behind the rump kernels was the development of
|
||||
|
@ -394,7 +394,7 @@ Block cache
|
|||
===========
|
||||
|
||||
The provisioning of a block cache was one of the primary motivations behind the
|
||||
[http://www.genode.org/documentation/release-notes/13.11#Dynamic_resource_balancing - dynamic resource balancing]
|
||||
[https://genode.org/documentation/release-notes/13.11#Dynamic_resource_balancing - dynamic resource balancing]
|
||||
concept that was introduced in Genode 13.11. We are now introducing the first
|
||||
version of such a cache.
|
||||
|
||||
|
|
|
@ -214,7 +214,7 @@ Unification of the ports management
|
|||
With the new source-tree layout in place, we could pursue a new take on
|
||||
unifying the management of ported 3rd-party source code. The new solution,
|
||||
which is very much inspired by the fabulous
|
||||
[http://nixos.org/nix - Nix package manager] comes in the form of new tools to
|
||||
[https://nixos.org/nix - Nix package manager] comes in the form of new tools to
|
||||
be found at 'tool/ports/'.
|
||||
|
||||
Note that even though the port mechanism described herein looks a bit like
|
||||
|
@ -268,7 +268,7 @@ please refer to the updated porting guide:
|
|||
|
||||
:Genode Porting Guide:
|
||||
|
||||
[http://genode.org/documentation/developer-resources/porting]
|
||||
[https://genode.org/documentation/developer-resources/porting]
|
||||
|
||||
|
||||
:Known limitations:
|
||||
|
|
|
@ -415,7 +415,7 @@ ROM session interface
|
|||
|
||||
Originally, the ROM session interface had been designed for providing boot
|
||||
modules to the user land. Later, in version
|
||||
[http://genode.org/documentation/release-notes/12.05#System_reconfiguration_at_runtime - 12.05],
|
||||
[https://genode.org/documentation/release-notes/12.05#System_reconfiguration_at_runtime - 12.05],
|
||||
we enhanced the interface to support dynamic updates of ROM modules to
|
||||
facilitate the reconfiguration of components at runtime. In the meanwhile,
|
||||
the dynamic updating of ROM modules has become commonplace within Genode,
|
||||
|
@ -479,7 +479,7 @@ Pluggable VFS file systems
|
|||
==========================
|
||||
|
||||
The virtual file system (VFS) infrastructure introduced with version
|
||||
[http://genode.org/documentation/release-notes/14.05#Per-process_virtual_file_systems - 14.05],
|
||||
[https://genode.org/documentation/release-notes/14.05#Per-process_virtual_file_systems - 14.05],
|
||||
supports a number of built-in file-system types such as the TAR, ROM, FS,
|
||||
block, terminal, or LOG file systems. It allows the tailoring of the
|
||||
file-system environment specifically for each individual program.
|
||||
|
@ -1030,7 +1030,7 @@ Finished transition to new ports mechanism
|
|||
==========================================
|
||||
|
||||
In version 14.05, we introduced
|
||||
[http://genode.org/documentation/release-notes/14.05#Management_of_ported_3rd-party_source_code - new tools]
|
||||
[https://genode.org/documentation/release-notes/14.05#Management_of_ported_3rd-party_source_code - new tools]
|
||||
for integrating 3rd-party software with Genode and migrated the majority of
|
||||
our ports to the new mechanism. With the current version, we have finished the
|
||||
transition by migrating the remaining ports, namely Qt5, GCC, and GDB.
|
||||
|
|
|
@ -402,7 +402,7 @@ modules:
|
|||
|
||||
Furthermore all Intel wireless cards supported by the 'iwlwifi' driver need a
|
||||
specific firmware to work. You can download the archives containing the
|
||||
firmware from [http://wireless.kernel.org/en/users/Drivers/iwlwifi]. The
|
||||
firmware from [https://wireless.kernel.org/en/users/Drivers/iwlwifi]. The
|
||||
firmware image also has to be added to the boot module list. If the firmware
|
||||
is missing, the driver will complain and print an error message:
|
||||
|
||||
|
@ -556,7 +556,7 @@ For realizing graphical applications that are security critical, we wish to
|
|||
avoid the complexity of sophisticated tool kits like Qt5. To ease the
|
||||
development of such Genode-specific graphical applications, we introduced a
|
||||
few common low-level interfaces and utilities for graphics in
|
||||
[http://genode.org/documentation/release-notes/14.02#Unified_interfaces_for_graphics - version 14.02].
|
||||
[https://genode.org/documentation/release-notes/14.02#Unified_interfaces_for_graphics - version 14.02].
|
||||
|
||||
The current version refines those utilities with added support for layering
|
||||
graphics using alpha channels. There is a new ALPHA8 pixel format that can be
|
||||
|
@ -637,7 +637,7 @@ Growing tool kit for low-complexity GUI applications
|
|||
====================================================
|
||||
|
||||
With the current release, we continue our line of GUI-related work started in
|
||||
[http://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08].
|
||||
[https://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08].
|
||||
As a side product of implementing low-complexity GUI components directly on
|
||||
Genode instead of using existing GUI tool kits, a library of common utilities
|
||||
is evolving. The utilities are not strictly GUI-related but also cover the
|
||||
|
@ -935,7 +935,7 @@ Raspberry Pi
|
|||
============
|
||||
|
||||
Genode added principle support for the Raspberry Pi one year ago in
|
||||
[http://genode.org/documentation/release-notes/13.11#Raspberry_Pi - version 13.11].
|
||||
[https://genode.org/documentation/release-notes/13.11#Raspberry_Pi - version 13.11].
|
||||
Back then, the driver support covered the interrupt controller, timer, UART,
|
||||
display, and USB. The latter was particularly challenging because the DWC-OTG
|
||||
USB host controller lacked public documentation. Hence, we ported the driver
|
||||
|
@ -1035,7 +1035,7 @@ amttool, which uses a SOAP EOI protocol for communication. Newer hardware with
|
|||
AMT version 9 or higher dropped the support for SOAP EOI - read
|
||||
[https://software.intel.com/en-us/blogs/2012/12/01/intel-amt-wsman-interface-is-replacing-the-soapeoi-interface - a blog entry by Intel]
|
||||
for more details - switched to the
|
||||
[http://www.dmtf.org/standards/wsman - WSMAN interface]. The tool wsman on
|
||||
[https://www.dmtf.org/standards/wsman - WSMAN interface]. The tool wsman on
|
||||
Linux speaks the protocol and can be used as a replacement. We integrated the
|
||||
support of wsman into our run tool infrastructure and use it by default if
|
||||
installed - otherwise amttool will be used. Of course, you can enforce your
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
|
||||
|
||||
Genode's [http://genode.org/about/road-map - roadmap] for this year puts a
|
||||
Genode's [https://genode.org/about/road-map - roadmap] for this year puts a
|
||||
strong emphasis on the consolidation and cultivation of the existing feature
|
||||
set. With the first release of the year, version 15.02 pays tribute to this
|
||||
mission by stepping up to extensive and systematic automated testing. As
|
||||
|
@ -46,7 +46,7 @@ Cortex-A15-based Arndale board.
|
|||
|
||||
While integrating ARM's virtualization extension, we aimed to strictly follow
|
||||
microkernel-construction principles. The primary design is inspired by the
|
||||
[http://hypervisor.org/ - NOVA OS Virtualization Architecture]. It is based on a
|
||||
[https://hypervisor.org/ - NOVA OS Virtualization Architecture]. It is based on a
|
||||
microhypervisor that provides essential microkernel mechanisms along with
|
||||
basic primitives to switch between virtual machines (VMs). On top of the
|
||||
microhypervisor, classical OS services are implemented as
|
||||
|
@ -71,7 +71,7 @@ Design
|
|||
|
||||
The ARM virtualization extensions are based on the so-called security
|
||||
extensions, commonly known as
|
||||
[http://genode.org/documentation/articles/trustzone - TrustZone].
|
||||
[https://genode.org/documentation/articles/trustzone - TrustZone].
|
||||
The ARM designers did not follow the
|
||||
Intel approach to split the CPU into a "root" and a "guest" world while having all prior
|
||||
existing CPU modes available in both worlds. Instead, ARM added a new privilege level
|
||||
|
@ -206,7 +206,7 @@ Modular tool kit for automated testing
|
|||
######################################
|
||||
|
||||
In
|
||||
[http://genode.org/documentation/release-notes/13.05#Automated_quality-assurance_testing - Genode version 13.05],
|
||||
[https://genode.org/documentation/release-notes/13.05#Automated_quality-assurance_testing - Genode version 13.05],
|
||||
we already introduced comprehensive support for the automated testing of
|
||||
Genode scenarios. Since then, Genode Labs has significantly widened the scope
|
||||
of its internal test infrastructure, both in terms of the coverage of the test
|
||||
|
@ -391,7 +391,7 @@ the physical address ranges of memory:
|
|||
|
||||
* When using an IOMMU on NOVA, Genode represents the address space
|
||||
accessible by devices (by the means of DMA) using a so-called device PD
|
||||
([http://genode.org/documentation/release-notes/13.02#DMA_protection_via_IOMMU]).
|
||||
([https://genode.org/documentation/release-notes/13.02#DMA_protection_via_IOMMU]).
|
||||
DMA transactions originating from PCI devices are subjected to the virtual
|
||||
address space of the device PD.
|
||||
All DMA buffers are identity-mapped with their physical addresses within
|
||||
|
@ -739,7 +739,7 @@ includes hardware, software, and firmware. This motivated us to
|
|||
bring Genode to this platform.
|
||||
|
||||
The underlying idea is to facilitate
|
||||
[http://genode.org/documentation/articles/trustzone - ARM TrustZone] to
|
||||
[https://genode.org/documentation/articles/trustzone - ARM TrustZone] to
|
||||
use Genode as a companion to a Linux-based OS on the platform.
|
||||
Whereas Linux would run in the normal world of TrustZone, Genode runs
|
||||
in the secure world. With Linux, the normal world will control the
|
||||
|
|
|
@ -66,7 +66,7 @@ completely written from scratch:
|
|||
|
||||
The book is published under the Creative Commons Attribution + ShareAlike
|
||||
License (CC-BY-SA) and can be downloaded as
|
||||
[http://genode.org/documentation/genode-foundations-15-05.pdf - PDF document].
|
||||
[https://genode.org/documentation/genode-foundations-15-05.pdf - PDF document].
|
||||
|
||||
It first presents the motivation behind our project, followed by a thorough
|
||||
description of the Genode OS architecture. The conceptual material is
|
||||
|
@ -74,7 +74,7 @@ complemented with practical information for developers and a discussion of
|
|||
framework internals. The second part of the book serves as a reference of
|
||||
Genode's programming interfaces.
|
||||
|
||||
[http://genode.org/documentation/genode-foundations-15-05.pdf - Download the book (PDF)...]
|
||||
[https://genode.org/documentation/genode-foundations-15-05.pdf - Download the book (PDF)...]
|
||||
|
||||
In the upcoming weeks, we plan to update the documentation section of the
|
||||
genode.org website with the new material. Until then, we hope you find the
|
||||
|
@ -135,8 +135,8 @@ Principal support for the 64-bit x86 architecture
|
|||
_This section was written by Adrian-Ken Rueegsegger and Reto Buerki who_
|
||||
_conducted the described line of work independent from Genode Labs._
|
||||
|
||||
The [http://muen.sk - Muen Separation Kernel (SK) project] is an Open-Source
|
||||
microkernel, which uses the [http://spark-2014.org/ - SPARK] programming
|
||||
The [https://muen.sk - Muen Separation Kernel (SK) project] is an Open-Source
|
||||
microkernel, which uses the [https://spark-2014.org/ - SPARK] programming
|
||||
language to enable light-weight formal methods for high assurance. The 64-bit
|
||||
x86 kernel, currently consisting of a little over 5'000 LOC, makes extensive
|
||||
use of the latest Intel virtualization features and has been formally proven
|
||||
|
@ -337,7 +337,7 @@ Dynamic thread weights
|
|||
======================
|
||||
|
||||
With the Genode release 14.11, we introduced an entirely
|
||||
[http://genode.org/documentation/release-notes/14.11#Trading_CPU_time_between_components_using_the_HW_kernel - new scheduler]
|
||||
[https://genode.org/documentation/release-notes/14.11#Trading_CPU_time_between_components_using_the_HW_kernel - new scheduler]
|
||||
in the base-hw kernel that allows for the trading of CPU time between Genode
|
||||
components. This scheduler knows two parameters for each scheduling context: A
|
||||
priority that models the urgency for low-latency execution and a quota that
|
||||
|
@ -688,7 +688,7 @@ File-system utilities
|
|||
=====================
|
||||
|
||||
When we introduced Genode's file-system session interface in
|
||||
[http://genode.org/documentation/release-notes/12.05#New_file-system_infrastructure - version 12.05],
|
||||
[https://genode.org/documentation/release-notes/12.05#New_file-system_infrastructure - version 12.05],
|
||||
it was accompanied with a RAM file system as the first implementation. Since
|
||||
then, a growing number of file-system services were developed, which took the
|
||||
RAM file system as blue print. Over the years, this practice resulted in the
|
||||
|
@ -902,7 +902,7 @@ Board support for i.MX6-based Wandboard
|
|||
The increasing interest in the combination of Genode and the Freescale i.MX6
|
||||
SoC motivated us to add official support for a board based on this SoC
|
||||
to our custom kernel. We settled on the
|
||||
[http://www.wandboard.org/ - Wandboard Quad] that was developed on a volunteer
|
||||
[https://www.wandboard.org/ - Wandboard Quad] that was developed on a volunteer
|
||||
basis. Thanks to Praveen Srinivas (IIT Madras, India) and Nikolay Golikov
|
||||
(Ksys Labs LLC, Russia) who contributed their work on i.MX6. The Wandboard
|
||||
Quad features 2 GiB of DDR3 RAM and a quad-core Cortex-A9 CPU. So, unlike when
|
||||
|
@ -984,7 +984,7 @@ USB-device pass-through support
|
|||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
With the availability of the
|
||||
[http://www.genode.org/documentation/release-notes/15.02#USB_session_interface - USB session interface]
|
||||
[https://genode.org/documentation/release-notes/15.02#USB_session_interface - USB session interface]
|
||||
and the new [USB device-list report] feature of the USB driver, it is now
|
||||
possible to pass a selection of raw USB devices directly to VirtualBox guests.
|
||||
|
||||
|
@ -1024,7 +1024,7 @@ Platforms
|
|||
Proof-of-concept support for the seL4 kernel
|
||||
============================================
|
||||
|
||||
Since last summer when the [http://sel4.systems - seL4 kernel] was released
|
||||
Since last summer when the [https://sel4.systems - seL4 kernel] was released
|
||||
under the General Public License, we entertained the idea to run Genode on
|
||||
this kernel. As the name suggests, the seL4 kernel is a member of the L4
|
||||
family of kernels. But there are two things that set this kernel apart from
|
||||
|
@ -1040,7 +1040,7 @@ Since last autumn, we conducted the port of Genode to the seL4 kernel as
|
|||
background activity. We took the chance to thoroughly document our experience
|
||||
by the following series of articles:
|
||||
|
||||
:[http://genode.org/documentation/articles/sel4_part_1 - Building a simple root task from scratch]:
|
||||
:[https://genode.org/documentation/articles/sel4_part_1 - Building a simple root task from scratch]:
|
||||
The first article describes the integration of the kernel code with Genode's
|
||||
source tree and the steps taken to create a minimalistic root task that runs
|
||||
on the kernel. It is full of hands-on information about the methodology of
|
||||
|
@ -1048,12 +1048,12 @@ by the following series of articles:
|
|||
from the perspective of someone with no prior association with the seL4
|
||||
project.
|
||||
|
||||
:[http://genode.org/documentation/articles/sel4_part_2 - IPC and virtual memory]:
|
||||
:[https://genode.org/documentation/articles/sel4_part_2 - IPC and virtual memory]:
|
||||
The second part of the article series examines the seL4 kernel interface
|
||||
with respect to synchronous inter-process communication and the management
|
||||
of virtual memory.
|
||||
|
||||
:[http://genode.org/documentation/articles/sel4_part_3 - Porting the core component]:
|
||||
:[https://genode.org/documentation/articles/sel4_part_3 - Porting the core component]:
|
||||
The third article presents the steps taken to bring Genode's core and init
|
||||
components to life. Among the covered topics are the memory and capability
|
||||
management, inter-component communication, and page-fault handling. The
|
||||
|
@ -1167,7 +1167,7 @@ development environment and the tool chain running within Genode's Noux
|
|||
runtime environment.
|
||||
|
||||
To use Genode 15.05, please obtain and install the new binary version of the
|
||||
tool chain available at [http://genode.org/download/tool-chain] or build it
|
||||
tool chain available at [https://genode.org/download/tool-chain] or build it
|
||||
manually via the _tool/tool_chain_ script.
|
||||
|
||||
|
||||
|
@ -1205,7 +1205,7 @@ The following parts have been pruned from the Genode source tree:
|
|||
|
||||
* The _linux_drivers_ repository hosted device drivers ported via the
|
||||
original DDE-Linux approach. We
|
||||
[http://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - disregarded this approach]
|
||||
[https://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - disregarded this approach]
|
||||
in 2012. The only remaining code worth keeping is the i915 GPU driver, which
|
||||
will potentially re-appear in our modern _repos/dde_linux_ repository.
|
||||
|
||||
|
|
|
@ -47,13 +47,13 @@ _conducted the described line of work independent from Genode Labs._
|
|||
|
||||
After completing our x86_64 port of the Genode base-hw kernel, which was
|
||||
featured in the
|
||||
[http://genode.org/documentation/release-notes/15.05#Principal_support_for_the_64-bit_x86_architecture - previous release (15.05)],
|
||||
[https://genode.org/documentation/release-notes/15.05#Principal_support_for_the_64-bit_x86_architecture - previous release (15.05)],
|
||||
we immediately started working on our main goal: running a Genode system as
|
||||
guest on the Muen Separation Kernel (SK). This would enable the Muen platform
|
||||
to benefit from the rich ecosystem of Genode.
|
||||
|
||||
For those who have not read the 15.05 Genode release notes, [http://muen.sk - Muen]
|
||||
is an Open-Source microkernel, which uses the [http://spark-2014.org/ - SPARK]
|
||||
For those who have not read the 15.05 Genode release notes, [https://muen.sk - Muen]
|
||||
is an Open-Source microkernel, which uses the [https://spark-2014.org/ - SPARK]
|
||||
programming language to enable light-weight formal methods for high assurance.
|
||||
The 64-bit x86 kernel, currently consisting of a little over 5'000 LOC, makes
|
||||
extensive use of the latest Intel virtualization features and has been formally
|
||||
|
@ -194,18 +194,18 @@ Our modified version of the NOVA microhypervisor is the used kernel.
|
|||
The user interface is based on our custom GUI stack including the nitpicker
|
||||
GUI server as well as the window manager and its companion components
|
||||
(decorator, layouter, pointer) we introduced in
|
||||
[http://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08].
|
||||
[https://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08].
|
||||
The display is driven by the VESA driver. User input is handled by the PS/2
|
||||
driver for handling the laptop keyboard and trackpoint, and the USB driver for
|
||||
handling an externally connected keyboard and mouse.
|
||||
|
||||
Network connectivity is provided by our port of the Intel Wireless stack that
|
||||
we introduced with the version
|
||||
[http://genode.org/documentation/release-notes/14.11#Intel_wireless_stack - 14.11].
|
||||
[https://genode.org/documentation/release-notes/14.11#Intel_wireless_stack - 14.11].
|
||||
|
||||
Our custom AHCI driver provides access to the physical hard disk. File-system
|
||||
access is provided by our
|
||||
[http://genode.org/documentation/release-notes/14.02#NetBSD_file_systems_using_rump_kernels - Rump-kernel-based file-system server].
|
||||
[https://genode.org/documentation/release-notes/14.02#NetBSD_file_systems_using_rump_kernels - Rump-kernel-based file-system server].
|
||||
|
||||
A simple Genode shell called CLI monitor allows the user to start and kill
|
||||
subsystems dynamically. Initially, the two most important subsystems are
|
||||
|
@ -383,9 +383,9 @@ systems rely on a virtual file system (VFS) implemented in the OS kernel,
|
|||
Genode's VFS has the form of a library that can optionally be linked to a
|
||||
component. The implementation of this library originated from the noux runtime
|
||||
introduced in version
|
||||
[http://genode.org/documentation/release-notes/11.02#Noux_-_an_execution_environment_for_the_GNU_userland - 11.02],
|
||||
[https://genode.org/documentation/release-notes/11.02#Noux_-_an_execution_environment_for_the_GNU_userland - 11.02],
|
||||
and was later integrated into our C runtime in version
|
||||
[http://genode.org/documentation/release-notes/14.05#Per-process_virtual_file_systems - 14.05].
|
||||
[https://genode.org/documentation/release-notes/14.05#Per-process_virtual_file_systems - 14.05].
|
||||
With the current release, we take the VFS a step further by making it
|
||||
available to components without a C runtime. Thereby, low-complexity
|
||||
security-sensitive components such as CLI monitor become able to benefit from
|
||||
|
@ -435,7 +435,7 @@ and identifying effective optimization vectors, tools for gathering a holistic
|
|||
view of the system are highly desired.
|
||||
|
||||
With the introduction of our light-weight
|
||||
[http://genode.org/documentation/release-notes/13.08#Light-weight_event_tracing - event-tracing facility]
|
||||
[https://genode.org/documentation/release-notes/13.08#Light-weight_event_tracing - event-tracing facility]
|
||||
in version 13.08, we laid the foundation for such tools. The current release
|
||||
extends core's TRACE service with the ability to obtain statistics about CPU
|
||||
utilization. More specifically, it enables clients of core's TRACE service to
|
||||
|
@ -513,7 +513,7 @@ and PCI drivers. The ACPI driver originally executed the PCI driver as a slave
|
|||
(child) service. The ACPI driver parsed the ACPI tables and provided the
|
||||
relevant information as configuration during the PCI-driver startup. We
|
||||
changed this close coupling to the more modern and commonly used
|
||||
[http://genode.org/documentation/release-notes/14.02#New_session_interface_for_status_reporting - report_rom mechanism].
|
||||
[https://genode.org/documentation/release-notes/14.02#New_session_interface_for_status_reporting - report_rom mechanism].
|
||||
|
||||
When the new ACPI driver finishes the ACPI table parsing, it provides the
|
||||
information via a report to any interested and registered components. The
|
||||
|
@ -784,8 +784,8 @@ common API among the execution environments of ported user-level device
|
|||
drivers. However, over the course of the past years, we found that this
|
||||
approach could not fulfill its promise while introducing a number of new
|
||||
problems. We reported our experiences in the release notes of versions
|
||||
[http://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - 12.05] and
|
||||
[http://genode.org/documentation/release-notes/14.11#Roundup - 14.11].
|
||||
[https://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - 12.05] and
|
||||
[https://genode.org/documentation/release-notes/14.11#Roundup - 14.11].
|
||||
To be able to remove the DDE-Kit API, we reworked the USB driver, our port of
|
||||
the Linux TCP/IP stack, and the wireless driver accordingly.
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
|
||||
In the
|
||||
[http://genode.org/documentation/release-notes/15.08 - previous release],
|
||||
[https://genode.org/documentation/release-notes/15.08 - previous release],
|
||||
we proudly reported the initial use of Genode as day-to-day OS. With the
|
||||
current release, we maintained the strong focus on making Genode viable as the
|
||||
foundation of a desktop OS. There are many aspects to be considered, ranging
|
||||
|
@ -30,7 +30,7 @@ Armory (a dedicated article about this work will follow soon), added support
|
|||
for Xilinx Zynq-7000, and optimized our version of VirtualBox for NOVA.
|
||||
|
||||
According to our
|
||||
[http://genode.org/about/road-map - road map], we planned to address package
|
||||
[https://genode.org/about/road-map - road map], we planned to address package
|
||||
management, a modern web browser, and cross-kernel binary compatibility with
|
||||
the version 15.11. However, we decided to put emphasis on the general
|
||||
usability, robustness, and scalability first, before entering new
|
||||
|
@ -106,7 +106,7 @@ as well as high-level applications:
|
|||
without the need to restart it?
|
||||
|
||||
We attempted to answer these questions with a single mechanism in version
|
||||
[http://genode.org/documentation/release-notes/12.05#System_reconfiguration_at_runtime - 12.05].
|
||||
[https://genode.org/documentation/release-notes/12.05#System_reconfiguration_at_runtime - 12.05].
|
||||
But the scalability of the approach remained unproven until now.
|
||||
|
||||
In short, configuration information is supplied to a component by its
|
||||
|
@ -201,7 +201,7 @@ similar common GUI elements. These parts of the GUI must be implemented at the
|
|||
client side.
|
||||
|
||||
In
|
||||
[http://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08],
|
||||
[https://genode.org/documentation/release-notes/14.08#New_GUI_architecture - version 14.08],
|
||||
we laid the foundation for a scalable GUI architecture that further reduced
|
||||
the functional scope of nitpicker and complements nitpicker with higher-level
|
||||
components for managing windows. Thanks to this architecture, most of
|
||||
|
@ -1067,11 +1067,11 @@ from Linux kernel 3.14.5 to Genode. We successfully tested it on machines
|
|||
containing Intel GPUs from generation five up to generation eight. With the
|
||||
port of the Intel driver to Genode, we followed the approach that we already
|
||||
used to enable the USB stack on Genode described in
|
||||
[http://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - release 12.05],
|
||||
[https://genode.org/documentation/release-notes/12.05#Re-approaching_the_Linux_device-driver_environment - release 12.05],
|
||||
to enable the Linux TCP/IP stack in
|
||||
[http://genode.org/documentation/release-notes/13.11#Gigabit_networking_using_the_Linux_TCP_IP_stack - release 13.11],
|
||||
[https://genode.org/documentation/release-notes/13.11#Gigabit_networking_using_the_Linux_TCP_IP_stack - release 13.11],
|
||||
and more recently to enable the Intel wireless stack in
|
||||
[http://genode.org/documentation/release-notes/14.11#Intel_wireless_stack - release 14.11].
|
||||
[https://genode.org/documentation/release-notes/14.11#Intel_wireless_stack - release 14.11].
|
||||
|
||||
The driver can be configured dynamically at run-time via the config
|
||||
ROM-mechanism. Each connector of the graphics card can be configured
|
||||
|
@ -1303,14 +1303,14 @@ You can build the demo by executing
|
|||
A tutorial on how to create a bootable SD card can be found in the
|
||||
corresponding run script _os/tz_vmm.run_. A tutorial on how to reproduce the
|
||||
pre-built Linux image, Rootfs and DTB - used by the run script - can be found
|
||||
at [http://genode.org/files/release-15.11/usb_armory_tz_vmm/README].
|
||||
at [https://genode.org/files/release-15.11/usb_armory_tz_vmm/README].
|
||||
|
||||
|
||||
NOVA
|
||||
====
|
||||
|
||||
With the release 15.08, we
|
||||
[http://genode.org/documentation/release-notes/15.08#NOVA_kernel-resource_management - extended the kernel]
|
||||
[https://genode.org/documentation/release-notes/15.08#NOVA_kernel-resource_management - extended the kernel]
|
||||
to handle memory quota per Genode component. The line of work for the current
|
||||
release built upon those new mechanisms and simplifies the memory management
|
||||
within Genode's core component.
|
||||
|
@ -1345,9 +1345,9 @@ Tools and build system
|
|||
Run-tool support for booting via the iPXE boot loader
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
[http://ipxe.org - iPXE] is an open source network boot firmware, which
|
||||
[https://ipxe.org - iPXE] is an open source network boot firmware, which
|
||||
supports booting from a web server
|
||||
[http://ipxe.org/howto/chainloading#breaking_the_loop_with_an_embedded_script - via HTTP].
|
||||
[https://ipxe.org/howto/chainloading#breaking_the_loop_with_an_embedded_script - via HTTP].
|
||||
|
||||
With the new load module at _tool/run/load/ipxe_, Genode's run tool has become
|
||||
able to load images via iPXE/HTTP to the test hardware. The following two
|
||||
|
@ -1375,7 +1375,7 @@ This can be achieved by building iPXE with the following embedded script:
|
|||
In addition to loading an image, an iPXE boot configuration is required to
|
||||
boot the loaded image on the target machine. The run-tool back ends for NOVA,
|
||||
Fiasco.OC, and L4/Fiasco have been enhanced to automatically generate such
|
||||
configurations, which use the [http://ipxe.org/cmd/sanboot - sanboot command]
|
||||
configurations, which use the [https://ipxe.org/cmd/sanboot - sanboot command]
|
||||
to download and boot an ISO image via HTTP. To use this boot method, your
|
||||
RUN_OPT configuration must specify both the ISO-image and the iPXE-load
|
||||
modules:
|
||||
|
@ -1383,7 +1383,7 @@ modules:
|
|||
! RUN_OPT += --include image/iso --include load/ipxe
|
||||
|
||||
Note that the webserver serving the ISO image must support
|
||||
[http://forum.ipxe.org/showthread.php?tid=7295&pid=10482#pid10482 - ranged requests].
|
||||
[https://forum.ipxe.org/showthread.php?tid=7295&pid=10482#pid10482 - ranged requests].
|
||||
|
||||
Thanks to Adrian-Ken Rueegsegger for these improvements!
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ version 2.1, which prompted us to fundamentally revisit the low-level resource
|
|||
management of Genode on this kernel. A summary of this undertaking is presented
|
||||
in Section [seL4 version 2.1].
|
||||
|
||||
According to the [http:/about/road-map - road map], we originally planned to
|
||||
According to the [https://genode.org/about/road-map - road map], we originally planned to
|
||||
revise the framework API in this release. Even though this topic is
|
||||
[https://github.com/genodelabs/genode/issues/1832 - very actively pursued], we
|
||||
decided to not rush it. We find it important to provide a smooth migration path
|
||||
|
@ -62,7 +62,7 @@ Assignment of USB devices to virtual machines
|
|||
|
||||
As a migration strategy for running Genode on a daily basis, using VirtualBox
|
||||
to execute a feature-rich OS is vital. In release
|
||||
[http://genode.org/documentation/release-notes/15.05#USB-device_pass-through_support - 15.05],
|
||||
[https://genode.org/documentation/release-notes/15.05#USB-device_pass-through_support - 15.05],
|
||||
we added USB pass-through support to VirtualBox by enabling its integrated USB
|
||||
proxy service. Since we use the open-source edition of VirtualBox, we were
|
||||
merely able to use the OHCI device model and were therefore limited to using
|
||||
|
@ -181,11 +181,11 @@ The consumer, in this case a VMM, then accesses the USB device (4).
|
|||
New support for the RISC-V CPU architecture
|
||||
###########################################
|
||||
|
||||
We became aware of [http://riscv.org - RISC-V] when attending several talks
|
||||
We became aware of [https://riscv.org - RISC-V] when attending several talks
|
||||
about the project at [https://fosdem.org - FOSDEM] in 2015. RISC-V aims to be
|
||||
an open-source hardware architecture and is now complemented by many projects
|
||||
that target the release of real hardware or ASICs (for example,
|
||||
[http://lowrisc.org - the LowRISC project]). We have experience with various
|
||||
[https://www.lowrisc.org - the LowRISC project]). We have experience with various
|
||||
major CPU architectures and many systems on a chip and, therefore, embrace a
|
||||
sharp eye on certain platform properties. Intel's ME and ARM's Trustzone
|
||||
practically lock out operating systems of certain hardware and firmware
|
||||
|
@ -195,7 +195,7 @@ AMT technology for instance comes with a complete TCP/IP stack that intercepts
|
|||
packets from the integrated NIC and a VNC server that can magically expose a
|
||||
mouse and a keyboard at the USB controller. If you are interested in more
|
||||
details about this topic
|
||||
[http://blog.invisiblethings.org/papers/2015/x86_harmful.pdf - Intel x86 considered harmful]
|
||||
[https://blog.invisiblethings.org/papers/2015/x86_harmful.pdf - Intel x86 considered harmful]
|
||||
by Joanna Rutkowska is a very good read. We decided to have a deeper look at
|
||||
the RISC-V architecture as an alternative open hardware platform. Especially,
|
||||
since the LowRISC project promises a completely open system on chip, including
|
||||
|
@ -281,7 +281,7 @@ GUI stack usability improvements
|
|||
|
||||
Motivated by the daily use of Genode as desktop OS by an increasingly number
|
||||
of developers, the window-layouter component of the
|
||||
[http://genode.org/documentation/release-notes/15.11#GUI_stack - GUI stack]
|
||||
[https://genode.org/documentation/release-notes/15.11#GUI_stack - GUI stack]
|
||||
received welcomed usability improvements.
|
||||
|
||||
|
||||
|
@ -451,7 +451,7 @@ components within the _world_ repository are not subjected to the regular
|
|||
quality-assurance measures of Genode Labs. Hence, problems are to be expected.
|
||||
If you encounter bugs, build problems, or stability issues, please report them
|
||||
to the [https://github.com/genodelabs/genode-world/issues - issue tracker] or
|
||||
the [http://genode.org/community/mailing-lists - mailing list].
|
||||
the [https://genode.org/community/mailing-lists - mailing list].
|
||||
|
||||
|
||||
Updated 3rd-party software
|
||||
|
@ -499,10 +499,10 @@ Build integration
|
|||
-----------------
|
||||
|
||||
Building Genode scenarios running on top of the
|
||||
[http://muen.sk - Muen separation kernel] has been greatly simplified by
|
||||
[https://muen.sk - Muen separation kernel] has been greatly simplified by
|
||||
properly integrating the Muen system build process into the Genode build system.
|
||||
As described in the
|
||||
[http://genode.org/documentation/release-notes/15.08#Genode_on_top_of_the_Muen_Separation_Kernel - 15.08 release notes],
|
||||
[https://genode.org/documentation/release-notes/15.08#Genode_on_top_of_the_Muen_Separation_Kernel - 15.08 release notes],
|
||||
the architecture with Muen is different since the entire hw_x86_64_muen Genode
|
||||
system runs as a guest VM on top of the separation kernel. This means that the
|
||||
Genode base-hw image must itself be packaged into the final Muen system image
|
||||
|
@ -531,7 +531,7 @@ _image/muen_ run-tool plugin, which processes the following RUN_OPT parameters.
|
|||
|
||||
The options are automatically added to the _etc/build.conf_ file for the
|
||||
hw_x86_64_muen base-hw platform. The
|
||||
[http://genode.org/documentation/platforms/muen - documentation] has been
|
||||
[https://genode.org/documentation/platforms/muen - documentation] has been
|
||||
updated to reflect the new, simplified build process.
|
||||
|
||||
A port file was added to facilitate the download of the Muen sources v0.7 and
|
||||
|
@ -562,7 +562,7 @@ drivers to transparently use MSIs for passed-through PCI devices.
|
|||
seL4 version 2.1
|
||||
================
|
||||
|
||||
By the end of 2015, the [http://sel4.systems/ - seL4 kernel] version 2.0 was
|
||||
By the end of 2015, the [https://sel4.systems/ - seL4 kernel] version 2.0 was
|
||||
published. With the current release, we update Genode's preliminary support
|
||||
for this kernel from the experimental branch of one year ago to the master
|
||||
branch of version 2.1. Note that this line of work is still considered as an
|
||||
|
|
|
@ -190,7 +190,7 @@ The changes between the last year's edition and the current revision are:
|
|||
: <p>
|
||||
: <div style="clear: both; float: left; margin-right:20px;">
|
||||
: <a class="internal-link" href="https://genode.org">
|
||||
: <img class="image-inline" src="http://genode.org/documentation/genode-foundations-title.png">
|
||||
: <img class="image-inline" src="https://genode.org/documentation/genode-foundations-title.png">
|
||||
: </a>
|
||||
: </div>
|
||||
: </p>
|
||||
|
|
|
@ -412,7 +412,7 @@ to prepare your system for Muen.
|
|||
|
||||
As a next step, create a VirtualBox VM with a 32-bit guest OS of your choice
|
||||
and install the guest additions
|
||||
[http://download.virtualbox.org/virtualbox/4.3.36/VBoxGuestAdditions_4.3.36.iso].
|
||||
[https://download.virtualbox.org/virtualbox/4.3.36/VBoxGuestAdditions_4.3.36.iso].
|
||||
In this tutorial, we chose Windows 7.
|
||||
|
||||
Note: use guest additions close to the VirtualBox version of Genode. We have
|
||||
|
@ -858,7 +858,7 @@ Init configuration changes
|
|||
==========================
|
||||
|
||||
We refined the label-based server-side policy-selection mechanism introduced in
|
||||
[http://genode.org/documentation/release-notes/15.11#Label-dependent_session_routing - version 15.11]
|
||||
[https://genode.org/documentation/release-notes/15.11#Label-dependent_session_routing - version 15.11]
|
||||
to limit the damage of spelling mistakes in manually crafted configurations.
|
||||
I.e., consider the following policy of a file-system server with a misspelled
|
||||
'label_prefix' attribute:
|
||||
|
@ -1015,7 +1015,7 @@ RISC-V front-end server
|
|||
=======================
|
||||
|
||||
In version
|
||||
[http://genode.org/documentation/release-notes/16.02#New_support_for_the_RISC-V_CPU_architecture - 16.02],
|
||||
[https://genode.org/documentation/release-notes/16.02#New_support_for_the_RISC-V_CPU_architecture - 16.02],
|
||||
Genode gained support for the RISC-V CPU architecture. Genode can be executed
|
||||
on either a simulator or a synthesized FPGA softcore, e.g., on Xilinx Zynq
|
||||
FPGAs. On the latter platform, the RISC-V core is a secondary CPU that
|
||||
|
|
|
@ -141,7 +141,7 @@ Third, even though not inherent to synchronous RPC, Genode's original design
|
|||
facilitated the use of a session capability as argument for requesting the
|
||||
parent to close a specific session. However, the use of capabilities as
|
||||
re-identifiable tokens is not well supported by most kernels, including seL4
|
||||
([http://sel4.systems/pipermail/devel/2014-November/000114.html - discussion]
|
||||
([https://sel4.systems/pipermail/devel/2014-November/000114.html - discussion]
|
||||
on the seL4 mailing list).
|
||||
|
||||
|
||||
|
@ -534,7 +534,7 @@ Transition to new framework API
|
|||
===============================
|
||||
|
||||
Since we fundamentally revised Genode's API in
|
||||
[http://genode.org/documentation/release-notes/16.05#The_great_API_renovation - version 16.05],
|
||||
[https://genode.org/documentation/release-notes/16.05#The_great_API_renovation - version 16.05],
|
||||
we gradually adapt our existing components. Given that Genode comes with
|
||||
over 300 components, this is no small feat. But with 30 percent of the
|
||||
components converted, we already made substantial progress.
|
||||
|
@ -603,11 +603,11 @@ your own time source, you can find an example at _os/include/os/timer.h_ .
|
|||
Support for smart cards
|
||||
=======================
|
||||
|
||||
We ported the [http://pcsclite.alioth.debian.org/pcsclite.html - PC/SC Lite]
|
||||
We ported the [https://pcsclite.alioth.debian.org/pcsclite.html - PC/SC Lite]
|
||||
library to Genode, which provides a commonly used API for communicating with
|
||||
smart cards. It supports USB smart card readers, using the
|
||||
[http://pcsclite.alioth.debian.org/ccid.html - CCID] library as driver.
|
||||
The CCID driver itself requires [http://libusb.info - libusb] to access the
|
||||
[https://pcsclite.alioth.debian.org/ccid.html - CCID] library as driver.
|
||||
The CCID driver itself requires [https://libusb.info - libusb] to access the
|
||||
USB device.
|
||||
|
||||
Vanilla PC/SC Lite is structured as a client-server architecture, consisting
|
||||
|
|
|
@ -154,7 +154,7 @@ edition are:
|
|||
: <p>
|
||||
: <div style="clear: both; float: left; margin-right:20px;">
|
||||
: <a class="internal-link" href="https://genode.org">
|
||||
: <img class="image-inline" src="http://genode.org/documentation/genode-foundations-title.png">
|
||||
: <img class="image-inline" src="https://genode.org/documentation/genode-foundations-title.png">
|
||||
: </a>
|
||||
: </div>
|
||||
: </p>
|
||||
|
@ -834,7 +834,7 @@ Nim programming language
|
|||
========================
|
||||
|
||||
In the previous release, we were proud to debut a
|
||||
[http://genode.org/documentation/release-notes/17.02#Linux_TCP_IP_stack_as_VFS_plugin - pluggable TCP/IP stack]
|
||||
[https://genode.org/documentation/release-notes/17.02#Linux_TCP_IP_stack_as_VFS_plugin - pluggable TCP/IP stack]
|
||||
for the VFS library. This required an overhaul of the Berkley sockets and
|
||||
'select' implementation within the POSIX runtime, but scrutiny of the POSIX
|
||||
standard leaves us reluctant to endorse it as a network API.
|
||||
|
|
|
@ -643,7 +643,7 @@ system partition in a GUID partition table (GPT). The image is equipped by the
|
|||
new 'image/uefi' module with the GRUB2 boot loader, a GRUB2 configuration, and
|
||||
the corresponding Genode run scenario. The final image can be copied with 'dd'
|
||||
to a bootable USB stick. Additionally, we added support to boot such an image
|
||||
on Qemu leveraging [http://www.tianocore.org - TianoCore's] UEFI firmware.
|
||||
on Qemu leveraging [https://www.tianocore.org - TianoCore's] UEFI firmware.
|
||||
|
||||
As a side project, minor virtualization support for AMD has been added to
|
||||
Virtualbox 4 and to the NOVA kernel on Genode. This enables us to run a 32-bit
|
||||
|
|
|
@ -728,7 +728,7 @@ on Genode:
|
|||
noux package. Note, however, that this port comprises solely the
|
||||
functionality needed for simple scripting.
|
||||
|
||||
:[http://flif.info/ - FLIF]: is a library for the Free Lossless Image
|
||||
:[https://flif.info/ - FLIF]: is a library for the Free Lossless Image
|
||||
Format. Thanks to Emery Hemingway for making it available in the
|
||||
genode-world repository.
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ since the last year's edition are:
|
|||
: <p>
|
||||
: <div style="clear: both; float: left; margin-right:20px;">
|
||||
: <a class="internal-link" href="https://genode.org">
|
||||
: <img class="image-inline" src="http://genode.org/documentation/genode-foundations-title.png">
|
||||
: <img class="image-inline" src="https://genode.org/documentation/genode-foundations-title.png">
|
||||
: </a>
|
||||
: </div>
|
||||
: </p>
|
||||
|
@ -603,7 +603,7 @@ Over the course of the past year, we started to look into Java support for
|
|||
Genode with the ultimate goal of porting an existing Java Virtual Machine
|
||||
(JVM), which translates and executes Java byte code, to Genode. After
|
||||
investigating possible JVM candidates, it became obvious that
|
||||
[http://openjdk.java.net - OpenJDK] is the only viable option when looking for
|
||||
[https://openjdk.java.net - OpenJDK] is the only viable option when looking for
|
||||
a functional, maintained, feature complete, and open-source Java SDK.
|
||||
Therefore, we decided upon OpenJDK version 9 and started to port OpenJDK's
|
||||
HotSpot virtual machine.
|
||||
|
|
|
@ -979,7 +979,7 @@ NOVA microhypervisor
|
|||
====================
|
||||
|
||||
The NOVA kernel branch in use has been switched to revision r10, which is an
|
||||
intermediate result of [http://cyberus-technology.de/ - Cyberus Technology]
|
||||
intermediate result of [https://cyberus-technology.de/ - Cyberus Technology]
|
||||
and of [https://www.genode-labs.com/ - Genode Labs] to harmonize their
|
||||
independently developed NOVA kernel branches. We hope to mutually benefit from
|
||||
the evolution of NOVA over the long run by having a common NOVA trunk and
|
||||
|
|
|
@ -620,7 +620,7 @@ system.
|
|||
|
||||
Now, one could use the Firefox appliance VM of Sculpt (see the
|
||||
[https://genode.org/documentation/release-notes/18.05 - release notes] or the
|
||||
[http://genodians.org/alex-ab/2019-03-06-disposal-browser-vm - Genodians article])
|
||||
[https://genodians.org/alex-ab/2019-03-06-disposal-browser-vm - Genodians article])
|
||||
for this. But this VM aims for a long-term browsing experience which, in the
|
||||
context of mere captive-portal handling, brings some drawbacks like a much
|
||||
higher RAM consumption or the required sessions for USB detection and shared
|
||||
|
@ -665,13 +665,13 @@ in the new '-t <architecture-board-kernel>' command line option, which
|
|||
instructs autopilot to generate a build directory for _architecture_ and
|
||||
execute tests for the _board-kernel_ combination.
|
||||
|
||||
! autopilot -t x86_64-pc-sel4 -t x86_64-pc-nova -r run/log
|
||||
! autopilot -t x86_64-pc-sel4 -t x86_64-pc-nova -r log
|
||||
|
||||
The known options for '-k kernel' and '-p platform' are still supported with
|
||||
the small change that the platform must now be defined as
|
||||
_architecture-board_.
|
||||
|
||||
! autopilot -p x86_64-pc -k sel4 -k nova -r run/log
|
||||
! autopilot -p x86_64-pc -k sel4 -k nova -r log
|
||||
|
||||
Autopilot now also documents the hidden feature to propagate custom 'RUN_OPTs'
|
||||
via the 'RUN_OPT_AUTOPILOT' environment variable to the run tool executed.
|
||||
|
|
|
@ -0,0 +1,814 @@
|
|||
|
||||
|
||||
===============================================
|
||||
Release notes for the Genode OS Framework 20.02
|
||||
===============================================
|
||||
|
||||
Genode Labs
|
||||
|
||||
|
||||
|
||||
This year's [https://genode.org/about/road-map - road map] is all about making
|
||||
Genode and Sculpt OS more approachable. It turns out that the first release of
|
||||
the year already pays tribute to that goal. First, it equips Sculpt OS with a
|
||||
much more logical and welcoming graphical user interface
|
||||
(Section [Redesign of the administrative user interface of Sculpt OS]).
|
||||
Second, it greatly reduces the friction when hosting existing applications on
|
||||
Genode by smoothening several rough edges with respect to POSIX compatibility,
|
||||
and by generally improving performance.
|
||||
|
||||
Most topics of the release are closely related to Sculpt. The biggest
|
||||
break-though is certainly the ability of running Sculpt OS on 64-bit ARM
|
||||
hardware (Section [Sculpt OS on 64-bit ARM i.MX8 hardware]) along with our
|
||||
custom virtual machine monitor (VMM). On PC hardware, Sculpt users can enjoy
|
||||
an updated audio driver and optimizations of the Seoul VMM. Furthermore,
|
||||
Sculpt's window manager received the much anticipated ability to use virtual
|
||||
desktops.
|
||||
|
||||
At the framework-API level, the most significant changes are the introduction
|
||||
of dedicated types for inter-thread synchronization patterns
|
||||
(Section [Base-framework refinements]) and a new library for
|
||||
bringing the benefits of the Genode architecture to the application level
|
||||
(Section [New sandbox library based on the init component]).
|
||||
|
||||
|
||||
Redesign of the administrative user interface of Sculpt OS
|
||||
##########################################################
|
||||
|
||||
On our [https://genode.org/about/road-map - road map] for 2020, we stated
|
||||
the reducing of the barrier of entry as our main concern of the year.
|
||||
We highlighted the ease of use of Sculpt OS as one particular work area.
|
||||
|
||||
|
||||
Removing Unix from the picture
|
||||
------------------------------
|
||||
|
||||
Until now, Sculpt's administrative user interface - lyrically called
|
||||
Leitzentrale - employed a small Unix runtime and the Vim editor as utility for
|
||||
basic file operations and for the tweaking of configurations. Even though this
|
||||
was a practical intermediate solution, we have to face the fact that not
|
||||
everyone loves the Unix command-line interface as much as we do. Quite the
|
||||
opposite, actually. When presenting Sculpt, we can clearly sense that people
|
||||
with a non-Unix background are put off by it. The audience generally loves the
|
||||
runtime graph, visual cues, and discoverability. Furthermore, command-line
|
||||
interfaces are (albeit wrongly) perceived as archaic and impenetrable relics
|
||||
by many computer users who are otherwise perfectly happy with the notion of
|
||||
files and directories. We identified that file-manipulation tasks performed in
|
||||
the Leitzentrale are rare and simple. Relying on Unix for those basic tasks is
|
||||
like taking a sledgehammer to crack a nut. On average, the Leitzentrale is
|
||||
used in just a few moments a day for basic things like browsing a file-system
|
||||
hierarchy, glimpsing at the reports stored on the report file system, deleting
|
||||
or copying a file or two, or tweaking a configuration file. With a Unix shell
|
||||
presenting one barrier, Vim is certainly an even higher one. Familiarity with
|
||||
Vim should definitely not be a prerequisite for using an operating system.
|
||||
Following this reasoning, we decided to swap out the command-line interface
|
||||
and Vim by a simple GUI-based file browser and a notepad-like editor, which do
|
||||
not require any learning curve.
|
||||
|
||||
Note that even once the Unix command-line interface is removed from Sculpt's
|
||||
Leitzentrale, advanced users will still be able to manipulate Sculpt's config
|
||||
file system via a Unix runtime deployed as a regular component, similar to the
|
||||
use of the noux-system package we have today.
|
||||
|
||||
|
||||
New user-interface layout
|
||||
-------------------------
|
||||
|
||||
The move away from the command-line interface goes hand in hand with the
|
||||
redesign of the overall user-interface layout. A new panel at the top of the
|
||||
screen contains two centered tabs for switching between the runtime graph and
|
||||
the file-system browser.
|
||||
|
||||
[image sculpt_20.02_panel]
|
||||
|
||||
The storage-management functionality has been moved from the former storage
|
||||
dialog into the respective nodes of the runtime graph. E.g., to format a block
|
||||
device, the user can now select a USB or storage node of the graph to get a
|
||||
menu of block-device-level operations.
|
||||
|
||||
[image sculpt_20.02_storage]
|
||||
|
||||
The network-management is now located at a drop-down menu that can be toggled
|
||||
via a button at the right side of the panel.
|
||||
|
||||
[image sculpt_20.02_network]
|
||||
|
||||
A new button on the left side of the panel allows the user to toggle a
|
||||
drop-down menu for GUI settings. At the current time, there is only the option
|
||||
to adjust the font size. In the future, the dialog will give easy access to
|
||||
the screen-resolution options and the keyboard layout.
|
||||
|
||||
The log-message view is now hidden in another drop-down menu that can be
|
||||
toggled via a panel button. So when starting the system, the user is greeted
|
||||
with only the runtime graph, which is a much nicer and cleaner looking
|
||||
experience.
|
||||
|
||||
Informative or diagnostic messages are displayed in the left-bottom corner of
|
||||
the screen.
|
||||
|
||||
[image sculpt_20.02_message]
|
||||
|
||||
The "Files" tab of the panel switches the main screen area to a simple file
|
||||
browser that lists all file systems available. By toggling one of the
|
||||
file-system buttons, the directory hierarchy can be browsed. When hovering
|
||||
a file, an "Edit" or "View" button appears, which can be used to open
|
||||
the file in a text area that appears on the right side of the file browser.
|
||||
The editor supports the usual notepad-like motions, operations, and
|
||||
shortcuts (control-c for copy, control-v for paste, control-s for save).
|
||||
|
||||
[image sculpt_20.02_editor]
|
||||
|
||||
|
||||
Half-way there
|
||||
--------------
|
||||
|
||||
With the current release, one can already accomplish a lot without having to
|
||||
resort to a command-line interface: connecting to the network, managing
|
||||
storage devices, installing and deploying software, inspecting the system
|
||||
state, and tweaking configurations.
|
||||
|
||||
There are still a few gaps though. In particular the file browser does
|
||||
not yet support file operations like the copying, renaming, or removal of
|
||||
files. For these tasks, the current version of Sculpt still features the
|
||||
Unix-based inspect window, which can be accessed by toggling the "Inspect"
|
||||
button inside the USB or storage dialog. Once selected, the panel presents an
|
||||
"Inspect" tab that features the familiar Unix shell and Vim. Note, however,
|
||||
that we keep the inspect window only as an interim solution. It will
|
||||
eventually be removed. As with every new feature, there are still rough edges
|
||||
to be expected in the editor and file browser, e.g., the editing of files with
|
||||
long lines or the browsing of directories with many entries is not
|
||||
appropriately covered yet.
|
||||
|
||||
To see the current new version of Sculpt OS in action, you may find the
|
||||
following presentation entertaining.
|
||||
|
||||
:Live demonstration of Sculpt OS at FOSDEM 2020:
|
||||
|
||||
[https://fosdem.org/2020/schedule/event/uk_sculpt/]
|
||||
|
||||
The new version 20.02 of Sculpt OS is part of this release and can be built
|
||||
from source and used right now. Several Genode developers already provide
|
||||
ready-to-use packages for the new version. The software depots by alex-ab,
|
||||
cnuke, skalk are worth exploring. A downloadable system image along with an
|
||||
updated manual will be released shortly.
|
||||
|
||||
|
||||
Sculpt OS on 64-bit ARM i.MX8 hardware
|
||||
######################################
|
||||
|
||||
Within the past two releases, big steps were taken to support ARMv8 hardware in
|
||||
the Genode OS framework. After implementing basic support for Raspberry Pi 3,
|
||||
and the i.MX 8M Evaluation Kit, the network card was enabled for the latter.
|
||||
Moreover, we updated the Linux TCP/IP, and C library ports, as well as
|
||||
the Noux environment to support the architecture. Finally, with the latest
|
||||
releases, a new ARMv8-compliant virtual-machine monitor for the base-hw kernel
|
||||
entered the framework.
|
||||
|
||||
The rapid achievements motivated us to strive for a more ambitious scenario to
|
||||
run on top of the currently focused ARMv8 hardware platform. So why not using
|
||||
Sculpt OS on the i.MX 8M System-on-Chip?
|
||||
|
||||
|
||||
Persistent storage
|
||||
==================
|
||||
|
||||
There were several challenges to cope with initially. First, persistent
|
||||
storage was needed. Luckily, the Genode OS framework contained already an
|
||||
SD-card driver implementation for the i.MX series. The driver was written for
|
||||
Genode from scratch and initially supported the i.MX53 SoC only. From then, it
|
||||
got extended repeatedly to drive the SD-card controller of several i.MX6 and
|
||||
i.MX7 platforms. Therefore, it was not a big issue to support the new hardware
|
||||
too. However, when we later used it in Sculpt, it turned out that the driver
|
||||
has some low-latency requirements. If those were not met, it got stuck. This
|
||||
was the time where the CPU-quota mechanism came in handy in a real-world
|
||||
scenario. It helped to let the interrupt handler of the driver be scheduled in
|
||||
time, and thereby let the driver run stable.
|
||||
|
||||
Having a working block device is one part, but it is of little use without a
|
||||
file system. In Sculpt OS, the NetBSD rump kernel's ext2 file-system is
|
||||
typically used to host the depot package system and for keeping configuration
|
||||
files persistent. Unfortunately, the version of NetBSD as used in Genode's
|
||||
rump kernel port does not contain the ARMv8 architecture. Of course, we could
|
||||
have upgraded the rump kernel as a whole. But this software stack is quite
|
||||
complex with a lot of threads reproducing a sophisticated state machine. It
|
||||
took some time in the past to meet its required semantics. Therefore,
|
||||
backporting some header definitions and a few architecture-dependent functions
|
||||
seemed more attractive. Luckily, it turned out to be the right decision, and
|
||||
after a day of backporting work, the file system could run on ARMv8.
|
||||
|
||||
Display engine
|
||||
==============
|
||||
|
||||
One of the more challenging tasks was certainly the enabling of the Display
|
||||
Controller Subsystem (DCSS) of the i.MX 8M SoC. Originally, we hoped to profit
|
||||
from our experiences with the Image Processing Unit (IPU), the display engine
|
||||
of former i.MX SoCs. But as it turned out, the DCSS is a completely new
|
||||
design, and has not much in common with the IPU. When first writing a driver
|
||||
for the IPU of the i.MX53, we were surprised by the complexity and flexibility
|
||||
of this piece of hardware. Back then, it took months to get something
|
||||
meaningful working. To not lose too much time by re-implementing a driver from
|
||||
scratch, we decided to take the DDE Linux approach, which worked out pretty
|
||||
fast. The resulting driver should provide the same flexibility like the Linux
|
||||
original one. However, as the i.MX 8M EVK board provides a HDMI connector
|
||||
only, we did not test more than that. The configuration of the driver is
|
||||
analogous to the Intel framebuffer driver, and looks like the following:
|
||||
|
||||
! <config>
|
||||
! <connector name="HDMI-A-1" width="1920" height="1080" hz="60" enabled="true"/>
|
||||
! </config>
|
||||
|
||||
Later, when using the driver in practice within the Sculpt OS, we could
|
||||
experience a slightly sluggish behaviour, which was due to a missing
|
||||
architectural back end of the blitting library of Genode. After tweaking this
|
||||
too, the graphical user interface experience was good.
|
||||
|
||||
|
||||
USB and Input
|
||||
=============
|
||||
|
||||
The last missing I/O device to run Sculpt OS on the ARMv8 was something for
|
||||
user generated input. Therefore, the existent USB host controller driver for
|
||||
the i.MX series got updated. The only roadblock here was the powering of the
|
||||
device. As there is no platform driver for the target hardware yet, which
|
||||
would manage power and clocks, the hardware either has to be pre-configured
|
||||
correctly, or the driver has to enable it on its own. Ethernet card, SD-card,
|
||||
and the display engine were all already powered by the bootloader, but not
|
||||
USB. In contrast to the first devices, the u-boot bootloader turns off USB
|
||||
explicitly as soon as it starts the OS. As an interim solution, we patched
|
||||
u-boot to not turn off the USB host controller, and enforced u-boot to
|
||||
initialize the powering in our boot scripts. Therefore, if one wants to use
|
||||
USB on the i.MX 8M EVK, make sure to take our modified version. As a
|
||||
convenient solution, you can use the 'uboot' port within the base repository.
|
||||
Just issue the following command in the Genode directory:
|
||||
|
||||
! tool/ports/prepare_port uboot
|
||||
|
||||
Finally, you have to copy u-boot to the SD-card as root user:
|
||||
|
||||
! dd if=`tool/ports/current uboot`/imx8q_evk/imx-mkimage/iMX8M/flash.bin \
|
||||
! of=/dev/sd<?> bs=1k seek=33 conv=fsync
|
||||
|
||||
Of course, you have to replace 'sd<?>' with the correct device node of your
|
||||
attached SD-card.
|
||||
|
||||
After enabling the USB host controller driver, we could successfully re-use the
|
||||
USB HID client driver to drive keyboard and mouse connected to the board. As a
|
||||
nice side-effect, the list of possible storage devices got extended with USB
|
||||
mass storage too by adding the USB block client driver.
|
||||
|
||||
|
||||
Missing libraries
|
||||
=================
|
||||
|
||||
Finally, when building the necessary and optional packages for Sculpt OS, we
|
||||
stumbled across several libraries that needed to be adapted to compile and
|
||||
link for ARMv8 too. Mostly, the inclusion of some other compilation units and
|
||||
headers was sufficient. The related libraries are: libssl, libcrypto, libpng,
|
||||
and Mesa. With the latter two, it is now even possible to execute Qt5
|
||||
components on the target hardware.
|
||||
|
||||
Apart from all the new driver components and extended libraries, the Sculpt
|
||||
manager had to be slightly modified to execute on the i.MX 8M hardware. In its
|
||||
original form it is inherently dependent on x86 drivers, as it for example
|
||||
generates configurations for some of those drivers. For the time being, the
|
||||
changes to the Sculpt manager are not yet part of the official release.
|
||||
Nevertheless, you can produce a Sculpt OS image to be run on an i.MX 8M EVK
|
||||
board by using the following
|
||||
[https://github.com/skalk/sculpt_20.02_imx8q_evk/ - topic branch].
|
||||
|
||||
Alternatively, you can also have a look at Sculpt OS on ARMv8 hardware by
|
||||
following the video recordings of the following talk at FOSDEM 2020.
|
||||
|
||||
:Live demonstration of Sculpt OS on i.MX 8M EVK at FOSDEM 2020:
|
||||
|
||||
[https://fosdem.org/2020/schedule/event/uk_genode_armv8/]
|
||||
|
||||
|
||||
Base framework and OS-level infrastructure
|
||||
##########################################
|
||||
|
||||
New sandbox library based on the init component
|
||||
===============================================
|
||||
|
||||
The init component is Genode's canonical mechanism for the composition of
|
||||
components. This role was further amplified when init became
|
||||
[https://genode.org/documentation/release-notes/17.02#Dynamically_reconfigurable_init_component - dynamically reconfigurable].
|
||||
The latter change cleared the ground for system scenarios like Sculpt OS, the
|
||||
on-target deployment of packages, and dynamic device discovery. One typical
|
||||
pattern found in such scenarios is one dynamically configured instance of init
|
||||
accompanied by a controlling component that is usually called "manager". The
|
||||
manager would consume reports of the subsystem hosted within the dynamic init,
|
||||
and adjust the init configuration according to a domain-specific policy. Such
|
||||
a configuration change, in turn, may trigger new reports, which effectively
|
||||
turns this setting into a feedback control loop.
|
||||
|
||||
Whereas this established pattern is suitable for many scenarios, it is not
|
||||
always natural. In particular if the manager does not only need to
|
||||
manage a subsystem but also wants to intercept a service used by the
|
||||
subsystem, the roles are no longer clear-cut. A practical example is a
|
||||
GUI application that employs the menu-view component for the GUI rendering
|
||||
while processing keyboard events locally. This application would need to
|
||||
intercept the menu-view's GUI session to obtain the stream of user input
|
||||
events. For such an application, the most natural approach would be the
|
||||
co-location of the init functionality with the application logic into a
|
||||
single all-encompassing component.
|
||||
|
||||
To accommodate such scenarios where a domain-specific management component is
|
||||
tightly coupled with a dynamic subsystem, we extracted the child-management
|
||||
functionality from the init component into a new library called "sandbox". The
|
||||
library API is located at
|
||||
[https://github.com/genodelabs/genode/blob/master/repos/os/include/os/sandbox.h - os/include/os/sandbox.h].
|
||||
|
||||
In addition to the hosting of components, the sandbox API also allows for the
|
||||
interaction with the sandboxed children by providing locally implemented
|
||||
services. The latter mechanism is illustrated by a new test available at
|
||||
_os/src/test/sandbox_.
|
||||
|
||||
|
||||
POSIX compatibility improvements
|
||||
================================
|
||||
|
||||
During the release cycle of Genode 20.02, we continued our mission to host
|
||||
POSIX software effortlessly as Genode components. In particular, we followed
|
||||
up the line of work pursued with the two previous releases
|
||||
[https://genode.org/documentation/release-notes/19.08#Consolidation_of_the_C_runtime_and_Noux - 19.08] and
|
||||
[https://genode.org/documentation/release-notes/19.11#C_runtime_with_improved_POSIX_compatibility - 19.11]
|
||||
with respect to the traditional Unix mechanisms fork, execve, and pipes.
|
||||
After covering several edge cases - cloexec, file-descriptor lifetimes,
|
||||
line-buffer handling, vfork, just to name a few - as needed by programs like
|
||||
make, bash, and tclsh, we eventually reached a state where the website
|
||||
generator of [https://genodians.org] works without the need for the now
|
||||
deprecated Noux runtime.
|
||||
|
||||
For years we have been running complex software stacks like the Qt-based web
|
||||
browser on top of our C runtime but not without carefully placed tweaks and
|
||||
occasional patches. With the current release, we address the area of
|
||||
concurrency and introduce a thorough reimplementation of the synchronization
|
||||
primitives namely POSIX mutexes and condition variables as well as semaphores.
|
||||
We also reaped the fruit of our labor by replacing our custom Qt thread back
|
||||
end by the standard POSIX-thread based implementation. Further, we reduced the
|
||||
number of threads in Qt applications by moving the QPA event handling to the
|
||||
component entrypoint and removing the timed-semaphore utility from LibC.
|
||||
|
||||
Beyond Qt, we also address synchronization issues revealed by running a
|
||||
third-party port of [https://grpc.io/ - gRPC] in our network back ends and
|
||||
amended thread-local errno in the C runtime. Finally, our POSIX thread
|
||||
implementation supports cleanup handlers now.
|
||||
|
||||
|
||||
Base-framework refinements
|
||||
==========================
|
||||
|
||||
Replacing the 'Lock' type by new 'Mutex' and 'Blockade' types
|
||||
-------------------------------------------------------------
|
||||
|
||||
Up to now, Genode's lock implementation supports mainly two flavours of usage.
|
||||
On the one hand, it is used to protect critical sections where the lock is
|
||||
initialized as unlocked. In the contention case, the lock holder is supposed
|
||||
to release the critical section. On the other hand, the lock is used as
|
||||
blockade to synchronize startup between various executions of threads. Here
|
||||
the lock is initialized as locked during instantiation whereby the thread that
|
||||
releases the lock is not necessarily the same thread as the creator of the
|
||||
lock.
|
||||
|
||||
We decided to make the two usage patterns more obvious by introducing two
|
||||
separate classes, called 'Mutex' and 'Blockade'. The reasons are twofold.
|
||||
First, during code review, the usage pattern at hand becomes more obvious.
|
||||
Second, by codifying the programmer's intent behind the use of a
|
||||
synchronization primitive, Genode becomes able to perform additional checks,
|
||||
and diagnose certain dead-lock situations and other usage errors on the spot.
|
||||
|
||||
The separation got introduced shortly before this release. Up to now, it is
|
||||
only used in 'Genode::Thread', 'Genode::Heap', and 'Genode::Registry'. The
|
||||
plan is to cultivate the usage across all Genode sources over the next
|
||||
releases and to ultimately remove the 'Genode::Lock' from the public API.
|
||||
|
||||
The 'Mutex' class is more restrictive compared to the 'Lock' class.
|
||||
|
||||
* At initialization time, it is always unlocked.
|
||||
* To enter and leave a critical section the methods 'acquire()' and
|
||||
'release()' are used.
|
||||
* A 'Mutex::Guard' is provided, which will 'acquire()' a mutex at
|
||||
construction time and release it automatically at destruction time of
|
||||
the guard.
|
||||
* No thread is permitted to lock twice. The code will generate a warning if
|
||||
a dead-lock is detected.
|
||||
* Only the lock holder is permitted to release the mutex. The code will
|
||||
generate a warning and will not release the mutex if this rule is violated.
|
||||
|
||||
! Genode::Mutex mutex;
|
||||
! mutex.acquire();
|
||||
! mutex.release();
|
||||
!
|
||||
! {
|
||||
! Genode::Mutex::Guard guard(mutex) /* acquire() during construction */
|
||||
! } /* release() on guard object destruction */
|
||||
!
|
||||
! Genode::Mutex::Guard guard(mutex);
|
||||
! mutex.acquire(); /* <-- Will cause a warning about the dead-lock */
|
||||
|
||||
The 'Blockade' class is always initialized as locked and provides the methods
|
||||
'block()' and 'wakeup()'. Beside the initialization aspect, the 'Blockade'
|
||||
behaves up to now like the 'Genode::Lock' implementation.
|
||||
|
||||
! Genode::Blockade blockade;
|
||||
!
|
||||
! /* step */ /* thread A */ /* thread B */
|
||||
! 0: -start thread B-
|
||||
! 1: ... -startup-
|
||||
! 2: blockade.block(); ...
|
||||
! 3: -sleep- ...
|
||||
! 4: -sleep- blockade.wakeup();
|
||||
! 5: ... ...
|
||||
|
||||
|
||||
Performance optimization of the XML parser
|
||||
------------------------------------------
|
||||
|
||||
Genode's XML parser used to rely on C++ exceptions while parsing, which is an
|
||||
almost historic artifact inherited from the initial implementation. The
|
||||
performance penalties of exceptions in the rare use of XML was acceptable
|
||||
back when we started. But modern Genode systems like Sculpt OS rely on the
|
||||
dynamic processing of XML like a back bone. The overhead became particularly
|
||||
apparent when executing [Sculpt OS on 64-bit ARM i.MX8 hardware]. Prompted by
|
||||
this observation, we reworked the code such that exceptions are no longer
|
||||
thrown in any hot code path. The public interface of 'Xml_node' remains
|
||||
unchanged.
|
||||
|
||||
|
||||
New polling variant for register framework
|
||||
------------------------------------------
|
||||
|
||||
Genode's register framework has offered a 'wait_for' method for a long time.
|
||||
This function sleeps for a certain amount of microseconds and checks if one or
|
||||
more given conditions become true. The number of attempts to sleep and check
|
||||
the conditions must also be specified. In case the conditions are not met
|
||||
after these attempts, a polling timeout exception is thrown. The function
|
||||
simply returns in case of success. With the current Genode release, we have
|
||||
added a 'wait_for_any' method with almost the same semantics but instead of
|
||||
waiting for all conditions to become true, it returns if any condition is
|
||||
met, and thus, implements a logical OR.
|
||||
|
||||
|
||||
Migration to modern block-device API
|
||||
====================================
|
||||
|
||||
With release 19.02, Genode introduced two new APIs for block-session handling.
|
||||
The client side of a block session now uses the job API in order to send block
|
||||
requests to the server, which in turn receives those jobs as requests through
|
||||
the Request API. These two APIs replace Genode's 'Block::Driver' and
|
||||
'Block::Session_component' implementations that used the packet stream API
|
||||
directly, which turned out to be error prone for block session implementations.
|
||||
Instead, these new APIs wrap the packet stream handling in a controlled
|
||||
manner while handling all corner cases and even the overcommit of packets.
|
||||
With the current release, we have adapted Genode's AHCI driver and partition
|
||||
manager to these new interfaces, with the plan to adjust all block session
|
||||
clients/servers to the new APIs with Genode release 20.05.
|
||||
|
||||
During this line of work, the AHCI driver received a major cleanup. For
|
||||
example, dynamic memory allocations were removed, the whole initialization
|
||||
state machine has been removed, ATAPI support for Qemu has been re-enabled,
|
||||
and Exynos5 AHCI support is gone - since the platform is outdated and not
|
||||
supported by Genode any more.
|
||||
|
||||
|
||||
Updated audio driver based on OpenBSD 6.6
|
||||
=========================================
|
||||
|
||||
In this release, we updated the 3rd-party sources of the audio driver component
|
||||
to OpenBSD 6.6 and adapted the emulation glue code. While doing so, we fixed
|
||||
a bug regarding the 'delay()' implementation where the function expects
|
||||
microseconds but was given milliseconds. This led to a increased start-up
|
||||
time of the component. We also fixed the logging back end that accidentally
|
||||
was rendered silent and brought in the 'printf' back end from DDE Linux to
|
||||
be able to produce better formatted LOG messages in the future.
|
||||
|
||||
Until now the component only supported HDA and EAP (ES1370 PCI) devices. The
|
||||
first is primarily intended to be used with real hardware whereas the latter
|
||||
was used during the initial porting effort in Qemu. That being said, the EAP
|
||||
driver apparently also works on hardware according to community feedback.
|
||||
|
||||
Since the HDA driver does not work when used in VirtualBox and users expressed
|
||||
the desire to also use audio when running in a VM, we enabled another driver,
|
||||
for which a device-model in VirtualBox exists: the AC97 ICH. As it turned out,
|
||||
using this driver, we can produce audio, albeit the quality is far from
|
||||
usable. Nevertheless, with the driver enabled, interested parties are free to
|
||||
investigate the cause for the current issues.
|
||||
|
||||
All in all, this update is solely a catch up effort to stay more
|
||||
up-to-date with the upstream changes and to pull in HDA quirks for more
|
||||
recent systems. More interesting changes to the driver component, like
|
||||
reworking the OpenBSD kernel emulation layer and bringing support for USB
|
||||
audio devices, are scheduled for future releases.
|
||||
|
||||
|
||||
Support for unlabeled LOG output
|
||||
================================
|
||||
|
||||
In situations where a Genode system is remotely controlled and monitored,
|
||||
it is useful to allow a special component to produce log output with no
|
||||
Genode label applied. This way, such a component can produce log data in
|
||||
a format that is immediately suitable for a controller. This feature can be
|
||||
enabled for a component by rewriting the label of the component's LOG session
|
||||
to "unlabeled".
|
||||
|
||||
! <route>
|
||||
! <service name="LOG"> <parent label="unlabeled"/> </service>
|
||||
! ...
|
||||
! </route>
|
||||
|
||||
|
||||
Libraries and applications
|
||||
##########################
|
||||
|
||||
Custom virtual machine monitor on ARM
|
||||
=====================================
|
||||
|
||||
The ARMv8-compliant virtual-machine monitor introduced in the previous release
|
||||
19.11 now contains new device models to enable the interaction with a
|
||||
virtual-machine via network and terminal services. The new virtual ethernet
|
||||
card and console implementations are compliant to the virtualization standard
|
||||
VIRTIO 1.1.
|
||||
|
||||
Currently, the VMM cannot be configured to contain specific devices. It is
|
||||
hard-wired to provide exactly:
|
||||
|
||||
* One virtual ethernet card that connects to Genode's "Nic" service,
|
||||
* A VIRTIO console that opens up a session to the "Terminal" service using the
|
||||
label "console", and
|
||||
* The traditional PL011 serial device model, which connects to a
|
||||
"Terminal" service too but uses the label "earlycon"
|
||||
|
||||
|
||||
Seoul VMM
|
||||
=========
|
||||
|
||||
During the usage of Seoul on Sculpt, it became apparent that the Seoul VMM
|
||||
caused a constant CPU load even when the guest VM was idling. After some
|
||||
investigation it became clear that having a fixed rate to synchronize the
|
||||
guest graphic memory with the Genode GUI service was the main reason for the
|
||||
constant load. With this release, we added the feature to dynamically adjust
|
||||
the GUI refresh rate depending on the rate of user interactivity.
|
||||
Additionally, if all virtual CPUs go to idle state, the GUI refresh is stopped
|
||||
completely. With these measures, the overall CPU load could be reduced
|
||||
noticeably.
|
||||
|
||||
|
||||
TCP terminal
|
||||
============
|
||||
|
||||
The TCP terminal is a long-living component in the Genode OS framework since
|
||||
release 11.11. It can be used, e.g., to connect to a headless Genode system
|
||||
via telnet. Until now, it always listened to incoming network connections at
|
||||
configured ports. The port had to be configured for each terminal session
|
||||
client.
|
||||
|
||||
The TCP terminal got extended to either listen to incoming network
|
||||
connections, or to directly connect to another network server, dependent on
|
||||
the policy defined for the corresponding terminal client. The following
|
||||
example configuration illustrates the differences:
|
||||
|
||||
! <config>
|
||||
! <policy label="client" ip="10.0.0.5" port="1234"/>
|
||||
! <policy label="another_client" port="4567"/>
|
||||
! </config>
|
||||
|
||||
If only a port is described in the policy, the TCP terminal will listen on
|
||||
that port for incoming connections. If an IP address is provided additionally,
|
||||
it connects to the IP address using the given port.
|
||||
|
||||
|
||||
Virtual desktops
|
||||
================
|
||||
|
||||
Genode's GUI stack enables a high degree of flexibility. Beside the fundamental
|
||||
nitpicker component, responsible for basically multiplexing input events and
|
||||
framebuffer content, there is the window-manager component, and example
|
||||
implementations of a window-layouter, and decorator. The interplay of the
|
||||
latter three allows a window management that scales from simple to rich and
|
||||
sophisticated without lowering its security properties. For a brief description
|
||||
of its architecture, please refer to the release notes of
|
||||
[https://genode.org/documentation/release-notes/14.08 - 14.08].
|
||||
|
||||
In this architecture, the window layouter is responsible for the arrangement
|
||||
of the different windows. It exports a data model of the window layout.
|
||||
Although, the example implementation of the window layouter introduced in
|
||||
14.08 was simple, it already contained a notion of having different virtual
|
||||
screens and screen sections, beside the actual window placements. However,
|
||||
until now there was no use-case of switching dynamically between different
|
||||
virtual screens respectively window sets related to them.
|
||||
|
||||
While using more and more different graphical components within Sculpt, the
|
||||
window layouter in its initial form hit a limit. Although it already allowed to
|
||||
switch in-between different windows via configured key-combinations, it became
|
||||
inconvenient when having more than a handful windows hiding each other.
|
||||
|
||||
Therefore, the window layouter now got extended to allow switching dynamically
|
||||
in between several pre-defined virtual screens. For the time being, one has to
|
||||
assign a new window to a screen in the rule-set of the window layouter
|
||||
initially by hand. Defining the currently visible screen can either be done by
|
||||
editing the rule-set, or by using pre-configured key-combinations.
|
||||
|
||||
The new default configuration of the window layouter as exported by its
|
||||
corresponding depot package looks like the following:
|
||||
|
||||
! <config rules="rom">
|
||||
! <rules>
|
||||
! <screen name="screen_1"/>
|
||||
! <screen name="screen_2"/>
|
||||
! <screen name="screen_3"/>
|
||||
! <screen name="screen_4"/>
|
||||
! <screen name="screen_5"/>
|
||||
! <screen name="screen_6"/>
|
||||
! <screen name="screen_7"/>
|
||||
! <screen name="screen_8"/>
|
||||
! <screen name="screen_9"/>
|
||||
! <screen name="screen_0"/>
|
||||
! <assign label_prefix="" target="screen_1" xpos="any" ypos="any"/>
|
||||
! </rules>
|
||||
!
|
||||
! <press key="KEY_SCREEN">
|
||||
! <press key="KEY_ENTER" action="toggle_fullscreen"/>
|
||||
! <press key="KEY_1" action="screen" target="screen_1"/>
|
||||
! <press key="KEY_2" action="screen" target="screen_2"/>
|
||||
! <press key="KEY_3" action="screen" target="screen_3"/>
|
||||
! <press key="KEY_4" action="screen" target="screen_4"/>
|
||||
! <press key="KEY_5" action="screen" target="screen_5"/>
|
||||
! <press key="KEY_6" action="screen" target="screen_6"/>
|
||||
! <press key="KEY_7" action="screen" target="screen_7"/>
|
||||
! <press key="KEY_8" action="screen" target="screen_8"/>
|
||||
! <press key="KEY_9" action="screen" target="screen_9"/>
|
||||
! <press key="KEY_0" action="screen" target="screen_0"/>
|
||||
! ...
|
||||
|
||||
As can be seen, individual keys are assigned to switch to a specific virtual
|
||||
screen. By default ten screens are defined that are accessible via the number
|
||||
keys. The first screen definition in the rules configuration marks the
|
||||
currently visible screen.
|
||||
|
||||
|
||||
Menu-view widget renderer
|
||||
=========================
|
||||
|
||||
The line of work described in Section
|
||||
[Redesign of the administrative user interface of Sculpt OS] called for
|
||||
the enhancement of Genode's GUI-rendering component. This component - named
|
||||
menu view - was
|
||||
[https://genode.org/documentation/release-notes/14.11#New_menu_view_application - originally introduced in Genode 14.11]
|
||||
for the rendering of the relatively simple menus of an application launcher.
|
||||
Its software design largely deviates from the beaten track of established
|
||||
widget toolkits, which come in the form of client-side libraries. The
|
||||
menu view is not a complete toolkit but solely a dialog renderer sandboxed
|
||||
in a dedicated component. This design reinforces the strict separation of the
|
||||
view from the application logic, fosters screen-resolution independence, and -
|
||||
most importantly - keeps the complexity of pixel processing out of the
|
||||
application program. Because of the latter, it lends itself to the
|
||||
implementation of security-sensitive interactive applications.
|
||||
|
||||
It would certainly be misguiding to tout our menu-view as feature competitive
|
||||
with existing toolkits. We certainly won't recommend using it over Qt in
|
||||
general. But Sculpt's custom administrative user interface "Leitzentrale"
|
||||
presented us with the perfect playground to explore and grow the potential of
|
||||
our novel approach.
|
||||
|
||||
In contrast to the previous iteration of the Leitzentrale GUI, which relied on
|
||||
a small Unix runtime and Vim for editing text files, the new version ought to
|
||||
feature a simple text editor integrated in the GUI. A text editor requires
|
||||
a much tighter interplay between the view and the actual program logic
|
||||
compared to an application with just a bunch of buttons. Think about cursor
|
||||
handling, scrolling text, displaying textual selections, or placing a text
|
||||
cursor with the mouse. On the course of the work towards the text-area
|
||||
component featured in the new Leitzentrale, the menu view received the
|
||||
following improvements:
|
||||
|
||||
:Text-cursor support:
|
||||
|
||||
The label widget gained the ability to display one or multiple text cursors,
|
||||
as illustrated by the following example:
|
||||
|
||||
! <label text="...">
|
||||
! <cursor at="10"/>
|
||||
! </label>
|
||||
|
||||
For the display of multiple cursors, each cursor must feature a distinctive
|
||||
'name' attribute.
|
||||
|
||||
:Character position featured in the hover report:
|
||||
|
||||
The hovering information provided by the menu view used to be at the
|
||||
granularity of widgets, which is insufficient for placing a text cursor with
|
||||
the mouse. Hence, the information of a hovered label additionally provides
|
||||
the character position within the label now.
|
||||
|
||||
:Unquoting label text attribute values:
|
||||
|
||||
The text displayed in label widgets is provided by a 'text' attribute value,
|
||||
which raises the question of how to present '"' characters on the GUI. With
|
||||
the new version, the attribute value can contain XML-quoted characters,
|
||||
specifically """.
|
||||
|
||||
:Support for displaying text selections:
|
||||
|
||||
Similarly to the way of how a <cursor> can be defined for a <label>
|
||||
widget, a selection can now be expressed as follows:
|
||||
|
||||
! <label ...>
|
||||
! <selection at="2" length="12"/>
|
||||
! </label>
|
||||
|
||||
:Support of multiple '<float>' widgets within a '<frame>':
|
||||
|
||||
We refined the hover reporting of <float> widgets such that a float widget
|
||||
never responds to hovering unless a child is hovered. This way, it becomes
|
||||
possible to stack multiple float widgets within one frame and still reach
|
||||
all child widgets. This is useful for aligning multiple widgets within one
|
||||
screen area independently from each other. For example, for left-aligning,
|
||||
centering, and right-aligning the elements of a panel.
|
||||
|
||||
:Enforcing the minimum size of a label:
|
||||
|
||||
The new '<label min_ex="..">' attribute can be used to enforce a minimum
|
||||
width in the unit of the size of the character 'x'. In the absence of a
|
||||
'text' attribute, the minimum height of a label is implicitly set to 0. The
|
||||
combination of both changes makes the label usable as a horizontal spacer.
|
||||
|
||||
:Basic support for styling labels:
|
||||
|
||||
The new version allows for the customization of the text color and alpha
|
||||
value of the label widget by the means of a style-definition file. The
|
||||
mechanism is exemplified with the new "invisible" label style that sets the
|
||||
alpha value to zero.
|
||||
|
||||
With these few incremental changes in place, the menu-view widget renderer
|
||||
becomes usable as the basis of the simple text editor used in Sculpt's new user
|
||||
interface.
|
||||
|
||||
|
||||
Self-hosting the tool chain on 64-bit ARM
|
||||
=========================================
|
||||
|
||||
With our ongoing ARM 64-bit effort, we have successfully updated Genode's tool
|
||||
chain with release
|
||||
[https://genode.org/documentation/release-notes/19.05#Broadened_CPU_architecture_support_and_updated_tool_chain - 19.05].
|
||||
With the current release, we have additionally managed to make Genode's tool
|
||||
chain self hosting on ARM 64-bit, which means the tool chain can compile
|
||||
source code on ARM 64-bit directly.
|
||||
|
||||
|
||||
Platforms
|
||||
#########
|
||||
|
||||
Execution on bare hardware (base-hw)
|
||||
====================================
|
||||
|
||||
The generic code base of the base-hw kernel underwent several cosmetic changes
|
||||
to reduce or eliminate the application of certain problematic constructs like
|
||||
too much inheritance, pointers, and dynamic casts. Those changes were
|
||||
motivated to ease the translation of several kernel parts to the Ada/SPARK
|
||||
language in the context of the Spunky project. For more information regarding
|
||||
this experiment to write a Genode kernel in Ada/SPARK, please have a look at
|
||||
the recent [https://genodians.org/m-stein/index - genodians.org article series]
|
||||
of Martin Stein or listen to his recent
|
||||
[https://video.fosdem.org/2020/AW1.125/ada_spunky.mp4 - FOSDEM talk].
|
||||
|
||||
Moreover, the IPC path implementation got simplified to lower the overhead
|
||||
costs introduced by the transfer of capabilities. Together with the mentioned
|
||||
Spunky cleanup efforts, this change measurably improved IPC performance.
|
||||
|
||||
The base-hw kernel now exports time consumption of individual threads via
|
||||
the trace service analogously to the implementation for NOVA. Thereby, it
|
||||
becomes possible to use for instance the top component within the Sculpt OS
|
||||
also on this kernel.
|
||||
|
||||
Until now, support for the Raspberry Pi 3 was limited to Qemu emulation only.
|
||||
Thanks to a contribution of Tomasz Gajewski, it is now possible to execute
|
||||
Genode on all four CPUs of the actual hardware concurrently.
|
||||
|
||||
|
||||
Execution on Linux
|
||||
==================
|
||||
|
||||
Traditionally, the Linux version of Genode serves us as very handy development
|
||||
vehicle but it was never intended as an actual target platform. On Linux,
|
||||
Genode is usually executed as a multi-process application on top of a regular
|
||||
GNU/Linux desktop distribution by specifying 'KERNEL=linux' and 'BOARD=linux'
|
||||
to the run tool.
|
||||
|
||||
However, thanks to the work of Johannes Kliemann, Genode has become able to
|
||||
run on a bare-bone Linux kernel without any other user land.
|
||||
We blatantly used to refer to this idea as the
|
||||
[https://genode.org/about/challenges#Platforms - microkernelization of Linux].
|
||||
Johannes picked up the idea, supplemented Genode's core with the services
|
||||
needed for user-level device drivers (IRQ, IOMEM, IOPORT) and supplemented
|
||||
the tooling for the integration of Genode scenarios into a bootable initrd
|
||||
image. This target of execution can be addressed by specifying 'KERNEL=linux'
|
||||
and 'BOARD=pc' to the run tool now. If specified, the run tool will produce a
|
||||
bootable Linux system image for the given run script and run it in Qemu.
|
||||
|
||||
That said, as this line of work is still considered as an experimental
|
||||
playground - not for productive use - the work flow is not entirely automated.
|
||||
In particular, one needs to prepare a suitable
|
||||
[https://github.com/jklmnn/linux/commits/genode - Linux kernel] manually.
|
||||
If you are interested in the topic, please refer to the background information
|
||||
given in the [https://github.com/genodelabs/genode/pull/2829 - issue tracker].
|
||||
|
280
doc/road_map.txt
280
doc/road_map.txt
|
@ -7,129 +7,128 @@
|
|||
Herein, we lay out our plans for evolving Genode. Progress in addition to this
|
||||
planning will very much depend on the degree of community support the project
|
||||
will receive. The
|
||||
[http:/about/challenges - Challenges] page collects some of our ideas to
|
||||
[https://genode.org/about/challenges - Challenges] page collects some of our ideas to
|
||||
advance Genode in various further directions.
|
||||
|
||||
The road map is not fixed. If there is commercial interest of pushing the
|
||||
Genode technology to a certain direction, we are willing to revisit our plans.
|
||||
|
||||
|
||||
Review of 2018
|
||||
Review of 2019
|
||||
##############
|
||||
|
||||
Sculpt is our take on creating a Genode-based general-purpose operating
|
||||
system. When we declared 2018 as Genode's Year of Sculpt one year ago, our
|
||||
vision of how Sculpt OS would shape up was still vague. We were convinced that
|
||||
we had - functionality-wise - all building blocks of a general-purpose OS in
|
||||
place. But it was rather unclear how to best put them together to attain a
|
||||
practical system. The unconquered design space seemed vast, which was both
|
||||
exciting but also - at times - a bit paralyzing.
|
||||
For the road map 2019, we picked "bridging worlds" as our guiding theme:
|
||||
(1) Lowering the friction when combining existing software with Genode,
|
||||
(2) Fostering interoperability with widely used protocols and APIs, and
|
||||
(3) Making Genode easier to approach and generally more practical.
|
||||
|
||||
The Year of Sculpt was more than anything a design-space exploration, not
|
||||
an up-front planned activity. The process was driven by intensive
|
||||
brainstorming, experimentation, and the continuous practical evaluation
|
||||
through the day-to-day use of the system by its developers. For us, this ride
|
||||
was certainly the most rewarding period in Genode's history so far. Now, when
|
||||
looking at the result, we are proud about what we have achieved together.
|
||||
Whenever having the chance to showing off Sculpt running on our laptops,
|
||||
the system doesn't fail to impress.
|
||||
With respect to (1), we identified Genode's custom tooling (build
|
||||
system, run scripts, ports mechanism, depot tools) as a point of
|
||||
friction. They are arguably powerful and flexible but require a lot of
|
||||
up-front learning. This is certainly a burden unacceptable for a casual
|
||||
developer without a black belt in Make and Expect/Tcl. The new
|
||||
[https://genode.org/documentation/release-notes/19.11#New_tooling_for_bridging_existing_build_systems_with_Genode - Goa]
|
||||
tool rearranges the existing tools in a way that puts the concerns of casual
|
||||
developers into focus, allowing for the use of commodity build systems,
|
||||
eliminating Tcl syntax from the equation, running sub-second test cycles, and
|
||||
streamlining the packaging of software.
|
||||
|
||||
Unsurprisingly, many topics of the past year had a direct connection to
|
||||
Sculpt, e.g., the NIC router, the huge device-driver efforts, the GUI-stack
|
||||
improvements, our custom microcode update mechanism, the software packaging
|
||||
and deployment, and the work on the file-system and networking stacks.
|
||||
On account of (2), we
|
||||
[https://genode.org/documentation/release-notes/19.05#Broadened_CPU_architecture_support_and_updated_tool_chain - switched to C++17]
|
||||
by default, fostered the use of
|
||||
[https://genodians.org/ssumpf/2019-02-27-java-19-02 - Java],
|
||||
updated Qt5, and put
|
||||
[https://genode.org/documentation/release-notes/19.11#C_runtime_with_improved_POSIX_compatibility - POSIX]
|
||||
compatibility into the spotlight. We were eventually able to dissolve the need
|
||||
for our custom Unix runtime (Noux) because all features of Noux are covered by
|
||||
our regular libc now.
|
||||
|
||||
The bottom line of the Year of Sculpt is that Sculpt OS has become a
|
||||
surprisingly versatile and robust system. It can be deployed in a few seconds
|
||||
by booting from USB, runs as day-to-day OS on almost all of our laptops, its
|
||||
mechanisms for installing and updating software from packages have become a
|
||||
second nature, and it continues to inspire us to explore new application
|
||||
areas. Even outside of Genode Labs, there is a small and enthusiastic user
|
||||
base.
|
||||
Our biggest step towards (3) is the [https://genodians.org] website we
|
||||
started in winter 2019, which gives individual members of our community
|
||||
an easy way to present thoughts, projects, and experiences.
|
||||
Complementing Genode's formal documentation, it also conserves practical
|
||||
tips and tricks that were previously not covered in written form.
|
||||
|
||||
Besides Sculpt, we set forth a number of other goals one year ago.
|
||||
When speaking of "bridging worlds", we should not forget to mention the
|
||||
tremendous effort to bring Sculpt-OS-like workloads to the 64-bit ARM world.
|
||||
Thanks to the added support for
|
||||
[https://genode.org/documentation/release-notes/19.08#64-bit_ARM_and_NXP_i.MX8 - multi-core AARCH64],
|
||||
hardware-based
|
||||
[https://genode.org/documentation/release-notes/19.11#Virtualization_of_64-bit_ARM_platforms - virtualization],
|
||||
and network/USB/graphics drivers for the i.MX8 SoC, the flexibility of Sculpt
|
||||
OS will eventually become available on PC hardware and ARM-based devices
|
||||
alike.
|
||||
|
||||
:The transition from NOVA to our custom kernel and seL4: is ongoing but
|
||||
the topic received less attention than originally planned. This has
|
||||
two reasons. First, Alexander Boettcher's excellent maintenance and gradual
|
||||
improvement of NOVA keeps us hooked. Over the past year, there has been not
|
||||
much incentive of actual Sculpt users to move away from NOVA. Second, there
|
||||
is renewed interest in NOVA beyond our use of the kernel. Most specifically,
|
||||
we started joining forces with
|
||||
[https://cyberus-technology.de - Cyberus Technology] to improve NOVA
|
||||
together. That's fantastic!
|
||||
|
||||
This development notwithstanding, we still follow our ambition to bring the
|
||||
support for the other kernels like seL4 on par with NOVA to give Genode
|
||||
users the ultimate choice.
|
||||
Speaking of seL4, throughout the year, we have continuously adapted Genode
|
||||
to the kernel's upstream development and enjoy the informal collaboration
|
||||
with seL4 developer community. That said, the seL4 version of Genode still
|
||||
remains a side activity with no commercial backing.
|
||||
|
||||
:NXP i.MX: support has become much better, particularly with respect to
|
||||
network support and performance. Our ongoing commitment to the i.MX
|
||||
platform is also fueled by privacy-advocating projects like the Librem
|
||||
phone that are based on the same SoC.
|
||||
|
||||
:Software quality and resilience: ultimately became the title story of the
|
||||
[https://genode.org/documentation/release-notes/18.11#Raising_the_bar_of_quality_assurance - release 18.11].
|
||||
We greatly intensified the amount and quality of testing, explored static
|
||||
code analysis, and vastly scaled up the complexity of workloads carried
|
||||
by Genode.
|
||||
|
||||
:System monitoring, tracing, profiling: remains a somewhat underdeveloped area
|
||||
of Genode. As a step in the right direction, we introduced a simple
|
||||
trace-logging tool. Also, Sculpt's introspection features like the ability
|
||||
to inspect the runtime's state live on the machine make Genode's behavior
|
||||
easier to capture and to understand. But that said, the use of these
|
||||
features remains a black art mastered only by a few.
|
||||
|
||||
:Java: has found its way into Genode via our port of OpenJDK. Details such as
|
||||
the enabling of the JIT engine on ARM took much more effort than anticipated.
|
||||
We are happy to report that Tomcat works fine. But at the current state, it
|
||||
is still too early to advertise Java as a stable feature.
|
||||
Over the course of 2019, we admittedly skipped a few topics originally
|
||||
mentioned on our road map. In particular, the user-visible side of
|
||||
Sculpt OS received less attention than originally envisioned. We also
|
||||
deferred several ideas we had in mind about reworking our GUI stack.
|
||||
Instead, we expanded our work in the areas of storage (block-level APIs,
|
||||
test infrastructure,
|
||||
[https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - block encryption])
|
||||
and
|
||||
[https://genode.org/documentation/release-notes/19.08#Flexible_keyboard_layouts - input processing].
|
||||
This shift of focus is mostly attributed to the priorities of Genode Labs'
|
||||
customers who fund our work.
|
||||
|
||||
|
||||
2019 - Bridging Worlds
|
||||
######################
|
||||
2020 - Dwarfing the barrier of entry
|
||||
####################################
|
||||
|
||||
We dedicated the year 2018 to prove that Genode scales to general-purpose
|
||||
computing. [https://genode.org/download/sculpt - Sculpt OS] leaves no doubt
|
||||
about that. The logical next step is to make Sculpt OS relevant and appealing
|
||||
for a broader community.
|
||||
During our public road-map
|
||||
[https://lists.genode.org/pipermail/users/2018-December/006517.html - discussion]
|
||||
on our mailing list, we identified three ways towards that goal:
|
||||
Genode as a technology is there. For more than one decade, we walked unfathomed
|
||||
territory, fought with countless deep rabbit holes, took risky decisions,
|
||||
tracked back, explored design spaces, developed taste and distaste, pruned
|
||||
technical debt, and eventually found formulas of success. Today, there are no
|
||||
(fundamental) unsolved questions. All the puzzle pieces are in place. There
|
||||
could be no better proof than our daily use of Sculpt OS. The time is right
|
||||
to make Genode palatable for a wider circle. We identified four actionable
|
||||
topics to achieve that.
|
||||
|
||||
# In order to capture the interest of new Genode users, we have to
|
||||
put *emphasis on the practical use* of Genode, not on its technical prowess.
|
||||
With practical use, we refer to both desktop computing and headless
|
||||
scenarios like network appliances and servers. Over the course of 2019,
|
||||
we plan to establish (variations of) Sculpt as an attractive foundation for
|
||||
those application areas, and advance Genode's protocol stacks (storage and
|
||||
encryption come in mind) and hardware support (e.g., ARM 64-bit) accordingly.
|
||||
:User friendliness of Sculpt OS:
|
||||
|
||||
This will go hand in hand with making Genode easier to discover and to use,
|
||||
describing use cases at a digestible level of detail, and fostering the
|
||||
sense of one community that includes both users and developers.
|
||||
Until now, Sculpt OS is not exactly friendly towards users who are
|
||||
unfamiliar with the Unix command-line tools. Since Sculpt is not Unix
|
||||
based, this is a bit paradoxical. 2020 will give Sculpt OS a friendlier
|
||||
and discoverable user experience. In this context, we will inevitably
|
||||
put our attention to Genode's GUI stack.
|
||||
|
||||
# Since an operating system is only valuable with applications, we have
|
||||
to make the *porting of existing software* and the use of popular
|
||||
*programming languages* a frictionless experience. Besides supporting the
|
||||
reuse of existing software, we should also cultivate the "Genode way" as
|
||||
an option for designing native applications. Such applications can
|
||||
leverage the unique capabilities of the framework, in particular the
|
||||
sandboxing of code at a very fine granularity and the low footprint of raw
|
||||
Genode components.
|
||||
:Perception of high quality:
|
||||
|
||||
# Because an operating system does not exist in isolation, we must foster
|
||||
Genode's *interoperability* with other systems and applications by speaking
|
||||
widely used protocols and supporting universally expected
|
||||
software-integration features.
|
||||
Compared to commodity operating systems who stood the test of time,
|
||||
Genode is a young and largely unproven technology. It understandably calls
|
||||
for skepticism. All the more we must leave no doubts about our high
|
||||
quality standards. There must be no room for uncertainty. Hence, during
|
||||
2020, we will intensify the consolidation and optimization of the framework
|
||||
and its API, and talk about it.
|
||||
|
||||
:Enjoyable tooling:
|
||||
|
||||
Genode's success at large will depend on developers. As of today, software
|
||||
development for Genode requires a huge up-front learning curve. This is
|
||||
fine for people who are already convinced of Genode. But it unacceptable
|
||||
for casual developers who want to get their toes wet. We should aim for
|
||||
tooling that allows new developers to keep up their flow and beloved
|
||||
tools. The recently introduced [https://genodians.org/nfeske/2019-11-25-goa - Goa]
|
||||
tooling is our first take in this respect. It is certainly too early to call
|
||||
Goa a success. In order to find out if we are on the right track, we want to
|
||||
expose Goa to as many problems as possible, primarily by the means of
|
||||
porting software. Also, things like IDE usage or adapters for a variety of
|
||||
build systems will certainly move into focus in 2020.
|
||||
|
||||
:Convincing use cases:
|
||||
|
||||
Use cases can give exemplary proof of the fitness of Genode. We already
|
||||
took a few baby steps to extend the range of documented use cases beyond
|
||||
Sculpt OS last year. The boot2java scenenario comes in mind. 2020 will
|
||||
hopefully see several more illustrations of Genode's versatility.
|
||||
|
||||
|
||||
Milestones for 2019
|
||||
Apart from this overall theme, we plan to continue our commitment to the
|
||||
NXP i.MX SoC family, revisit Genode's low-latency audio support, and
|
||||
extend the cultivation of Ada/SPARK within (and on top of) Genode.
|
||||
|
||||
|
||||
Milestones for 2020
|
||||
###################
|
||||
|
||||
In the following, we present a rough schedule of the planned work. As usual,
|
||||
|
@ -137,57 +136,64 @@ it is not set in stone. If you are interested in a particular line of work,
|
|||
please get in touch.
|
||||
|
||||
|
||||
February - Release 19.02
|
||||
February - Release 20.02
|
||||
========================
|
||||
|
||||
* OpenJDK with JIT on ARM and x86
|
||||
* Sculpt with support for online package discovery
|
||||
* Showcase of a Genode-based web appliance
|
||||
* Showcase of a multi-port network appliance
|
||||
* Consolidation: removal of the Noux runtime
|
||||
* Library version of the init component
|
||||
* Updated audio drivers
|
||||
* Sculpt
|
||||
* 64-bit ARM (i.MX8)
|
||||
* Revised administrative user interface
|
||||
* System image without Unix tools
|
||||
|
||||
|
||||
May - Release 19.05
|
||||
May - Release 20.05
|
||||
===================
|
||||
|
||||
* Updated "Genode Foundations" book
|
||||
* Tool-chain update and SDK (C++-17, enabling O3 by default, considering GDC)
|
||||
* Headless Sculpt
|
||||
* Pluggable network drivers
|
||||
* Native support for Let's Encrypt certificates
|
||||
* Revisited GUI-related framework interfaces
|
||||
* Consolidation
|
||||
* Block-level components (update to Genode's modern block APIs)
|
||||
* ARM device drivers (introducing the notion of a platform driver)
|
||||
* Improved STL support (e.g., threading and mutexes)
|
||||
* Continuous POSIX-compliance testing
|
||||
* Systematic network-stack stress and performance tests
|
||||
* Desktop: panel and virtual desktops
|
||||
* Use case: Genode-based network router
|
||||
* Goa: broadened support for 3rd-party build systems
|
||||
* Native tool chain, including Git
|
||||
* Sculpt
|
||||
* Improved interactive system composition
|
||||
* Passphrase handling
|
||||
* Clipboard support
|
||||
* Kernel-agnostic virtual-machine monitors
|
||||
* ARM 64-bit
|
||||
* Interactive device management
|
||||
* Keyboard-controlled administration
|
||||
* Support for BSPs maintained outside of Genode's mainline repository
|
||||
|
||||
|
||||
August - Release 19.08
|
||||
August - Release 20.08
|
||||
======================
|
||||
|
||||
* Interactive tracing tool
|
||||
* Virtualization support for the base-hw kernel on x86
|
||||
* Library version of the init component
|
||||
* Revisited GUI-related framework interfaces
|
||||
* Extended tooling for performance monitoring
|
||||
* Goa: Qt development workflow
|
||||
* Desktop
|
||||
* Native mail client
|
||||
* Native web browser
|
||||
* Sculpt
|
||||
* Fine-grained USB-device policies
|
||||
* Interactive depot manager (ability to add/remove software providers)
|
||||
* Configuration of CPU affinities and scheduling priorities
|
||||
* Audio
|
||||
* Showcase of a Sculpt-based network router
|
||||
* VM-based desktop applications (enhanced VM integration features)
|
||||
* Updated Qt5
|
||||
* Consolidation of the Noux runtime (performance)
|
||||
* Configurable CPU resources
|
||||
* On-screen documentation
|
||||
* Block encryption via our
|
||||
[https://genode.org/documentation/release-notes/19.11#Preliminary_block-device_encrypter - consistent block encrypter]
|
||||
implemented in Ada/SPARK
|
||||
* USB audio
|
||||
* Initial version of a kernel implemented in Ada/SPARK
|
||||
|
||||
|
||||
November - Release 19.11
|
||||
November - Release 20.11
|
||||
========================
|
||||
|
||||
* Building Genode packages directly on Sculpt
|
||||
* VNC server support
|
||||
* Sculpt
|
||||
* On-target debugging of components
|
||||
* Shutdown protocol
|
||||
* Block-level encrypted storage
|
||||
* Drag-and-drop protocol
|
||||
* Consolidation of capability-space management across kernels
|
||||
* CPU-load balancing
|
||||
* Hardware-accelerated graphics on i.MX8 (experimental)
|
||||
* Reworked audio stack (interfaces, mixing)
|
||||
* Sculpt: component lifetime management, shutdown protocol
|
||||
* VFS plugins for lwext4 and FUSE-based file systems
|
||||
|
||||
|
|
|
@ -1,119 +0,0 @@
|
|||
|
||||
=============================================
|
||||
How to use Genode with the Fiasco microkernel
|
||||
=============================================
|
||||
|
||||
|
||||
Norman Feske, Christian Helmuth
|
||||
|
||||
Abstract
|
||||
########
|
||||
|
||||
This documentation describes the process of building and booting the L4/Fiasco
|
||||
version of Genode. It assumes that you are familiar with basic concepts
|
||||
described in the introductory documentation of Genode, namely the "How to start
|
||||
exploring Genode" document.
|
||||
|
||||
|
||||
Preconditions
|
||||
#############
|
||||
|
||||
The Fiasco version of Genode relies on the following components from
|
||||
the source tree of the Fiasco microkernel and the L4 environment (which also
|
||||
need additional tools).
|
||||
|
||||
|
||||
Tools
|
||||
=====
|
||||
|
||||
* Gawk
|
||||
* Bison
|
||||
* Byacc
|
||||
* Python
|
||||
|
||||
|
||||
The Fiasco microkernel
|
||||
======================
|
||||
|
||||
Information about Fiasco are provided at its official website:
|
||||
|
||||
! http://os.inf.tu-dresden.de/fiasco/prev/
|
||||
|
||||
To download the kernel and integrate it with Genode, issue the following
|
||||
command from within the toplevel directory:
|
||||
|
||||
! ./tool/ports/prepare_port fiasco
|
||||
|
||||
For the vesa driver on x86 the x86emu library is required and can be downloaded
|
||||
and prepared by invoking the following command:
|
||||
|
||||
! ./tool/ports/prepare_port x86emu
|
||||
|
||||
This command will download a prepackaged version of the kernel tested
|
||||
with Genode. The build process of the kernel is integrated with Genode's
|
||||
build system. After creating a build directory using 'create_builddir'
|
||||
with 'fiasco_x86' as argument:
|
||||
|
||||
! <genode-dir>/tool/create_builddir fiasco_x86 \
|
||||
! BUILD_DIR=<build-dir>
|
||||
|
||||
From within the new <build-dir>, the kernel can be compiled via
|
||||
|
||||
! make kernel/fiasco
|
||||
|
||||
When using Genode's run mechanism, there is no need to explicitly build the
|
||||
kernel. The run environment (see 'tool/run/boot_dir/fiasco') takes care of it.
|
||||
So you can simple execute run scripts from within the build directory, for
|
||||
example:
|
||||
|
||||
! make run/demo
|
||||
|
||||
|
||||
Behind the scenes
|
||||
=================
|
||||
|
||||
For using the L4/Fiasco kernel, some basic user-level components and libraries
|
||||
are needed. These are subsumed under the name L4 environment an are organized
|
||||
as a number of packages. These packages provide two types of components. There
|
||||
are low-level components for booting up and interfacing to Fiasco and there are
|
||||
higher-level components that compose a basic OS infrastructure. For Genode, we
|
||||
only rely on the low-level packages.
|
||||
|
||||
Previous versions of Genode included all necessary sources from the L4
|
||||
environment in the '3rd/fiasco/snapshot' subdirectory. From release 10.02, the
|
||||
'3rd' directory is no longer part of the release archive and also removed from
|
||||
the subversion repository. Please download the '3rd_fiasco.tar.bz2' archive.
|
||||
The source are organized as follows
|
||||
|
||||
:'tool': contains the tools that are used by the build processes of
|
||||
the L4 environment and Fiasco. For example, the build process of Fiasco
|
||||
relies on the 'preprocess' tool.
|
||||
|
||||
:'kernel': contains the Fiasco microkernel.
|
||||
|
||||
:'l4': contains the L4-environment source tree. The single packages
|
||||
are located at 'l4/pkg'.
|
||||
|
||||
From all the packages of the L4 environment, the following three are of
|
||||
interest for using Genode:
|
||||
|
||||
:'pkg/l4sys': contains the Fiasco system-call bindings.
|
||||
|
||||
The system-call bindings are a set of C-header files that define the
|
||||
application-programming interface for invoking the system calls of
|
||||
Fiasco.
|
||||
|
||||
:'pkg/sigma0':
|
||||
|
||||
Sigma0 is the initial memory manager required to use Fiasco.
|
||||
|
||||
:'pkg/bootstrap':
|
||||
|
||||
Bootstrap is the program that is started by the boot loader.
|
||||
After being started, Bootstrap prepares the bare machine to
|
||||
accommodate Fiasco. On many embedded architectures, bootstrap
|
||||
is used to create a single binary image containing all boot-time
|
||||
OS components.
|
||||
|
||||
Those components are implicitly built by the Genode build system when
|
||||
issuing 'make kernel/fiasco'.
|
|
@ -6,3 +6,4 @@ SRC_CC += thread_start.cc
|
|||
SRC_CC += cache.cc
|
||||
SRC_CC += capability_space.cc
|
||||
SRC_CC += signal_transmitter.cc signal.cc
|
||||
SRC_CC += platform.cc
|
||||
|
|
|
@ -1 +1 @@
|
|||
2019-11-25 c7e2a3eca5820b2304b4520d0fc831ede73691f2
|
||||
2020-05-26 02e84ead88242170c4d025cb7a62c2c2a0549c61
|
||||
|
|
|
@ -82,7 +82,7 @@ void Irq_object::_wait_for_irq()
|
|||
void Irq_object::start()
|
||||
{
|
||||
::Thread::start();
|
||||
_sync_bootup.lock();
|
||||
_sync_bootup.block();
|
||||
}
|
||||
|
||||
|
||||
|
@ -94,10 +94,10 @@ void Irq_object::entry()
|
|||
}
|
||||
|
||||
/* thread is up and ready */
|
||||
_sync_bootup.unlock();
|
||||
_sync_bootup.wakeup();
|
||||
|
||||
/* wait for first ack_irq */
|
||||
_sync_ack.lock();
|
||||
_sync_ack.block();
|
||||
|
||||
while (true) {
|
||||
|
||||
|
@ -108,7 +108,7 @@ void Irq_object::entry()
|
|||
|
||||
Genode::Signal_transmitter(_sig_cap).submit(1);
|
||||
|
||||
_sync_ack.lock();
|
||||
_sync_ack.block();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,6 @@ void Irq_object::entry()
|
|||
Irq_object::Irq_object(unsigned irq)
|
||||
:
|
||||
Thread_deprecated<4096>("irq"),
|
||||
_sync_ack(Lock::LOCKED), _sync_bootup(Lock::LOCKED),
|
||||
_irq(irq)
|
||||
{ }
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ void Thread::_thread_start()
|
|||
{
|
||||
Thread::myself()->_thread_bootstrap();
|
||||
Thread::myself()->entry();
|
||||
Thread::myself()->_join_lock.unlock();
|
||||
Thread::myself()->_join.wakeup();
|
||||
sleep_forever();
|
||||
}
|
||||
|
||||
|
|
|
@ -201,9 +201,6 @@ void Genode::ipc_reply(Native_capability caller, Rpc_exception_code exc,
|
|||
snd_header.protocol_word,
|
||||
snd_header.num_caps,
|
||||
L4_IPC_SEND_TIMEOUT_0, &result);
|
||||
|
||||
if (L4_IPC_IS_ERROR(result))
|
||||
error("ipc_send error ", Hex(L4_IPC_ERROR(result)), ", ignored");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
/* Genode includes */
|
||||
#include <base/cancelable_lock.h>
|
||||
#include <base/thread.h>
|
||||
#include <cpu/atomic.h>
|
||||
#include <cpu/memory_barrier.h>
|
||||
|
||||
|
@ -33,6 +34,13 @@ Cancelable_lock::Cancelable_lock(Cancelable_lock::State initial)
|
|||
|
||||
|
||||
void Cancelable_lock::lock()
|
||||
{
|
||||
Applicant myself(Thread::myself());
|
||||
lock(myself);
|
||||
}
|
||||
|
||||
|
||||
void Cancelable_lock::lock(Applicant &myself)
|
||||
{
|
||||
/*
|
||||
* XXX: How to notice cancel-blocking signals issued when being outside the
|
||||
|
@ -41,11 +49,14 @@ void Cancelable_lock::lock()
|
|||
while (!Genode::cmpxchg(&_state, UNLOCKED, LOCKED))
|
||||
if (Fiasco::l4_ipc_sleep(Fiasco::l4_ipc_timeout(0, 0, 500, 0)) != L4_IPC_RETIMEOUT)
|
||||
throw Genode::Blocking_canceled();
|
||||
|
||||
_owner = myself;
|
||||
}
|
||||
|
||||
|
||||
void Cancelable_lock::unlock()
|
||||
{
|
||||
_owner = Applicant(nullptr);
|
||||
Genode::memory_barrier();
|
||||
_state = UNLOCKED;
|
||||
}
|
||||
|
|
|
@ -1,120 +0,0 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
CONFIG_HAS_CPU_VIRT=y
|
||||
|
||||
#
|
||||
# Target configuration
|
||||
#
|
||||
# CONFIG_IA32 is not set
|
||||
# CONFIG_AMD64 is not set
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_MIPS is not set
|
||||
# CONFIG_PF_INTEGRATOR is not set
|
||||
# CONFIG_PF_REALVIEW is not set
|
||||
# CONFIG_PF_SUNXI is not set
|
||||
# CONFIG_PF_BCM283X is not set
|
||||
# CONFIG_PF_SA1100 is not set
|
||||
# CONFIG_PF_XSCALE is not set
|
||||
# CONFIG_PF_ARMADA38X is not set
|
||||
# CONFIG_PF_KIRKWOOD is not set
|
||||
# CONFIG_PF_TEGRA is not set
|
||||
# CONFIG_PF_LAYERSCAPE is not set
|
||||
# CONFIG_PF_IMX is not set
|
||||
# CONFIG_PF_ARM_VIRT is not set
|
||||
# CONFIG_PF_RCAR3 is not set
|
||||
CONFIG_PF_EXYNOS=y
|
||||
# CONFIG_PF_S3C2410 is not set
|
||||
# CONFIG_PF_OMAP is not set
|
||||
# CONFIG_PF_ZYNQ is not set
|
||||
# CONFIG_PF_ZYNQMP is not set
|
||||
CONFIG_BSP_NAME="exynos"
|
||||
CONFIG_CAN_ARM_CPU_CORTEX_A15=y
|
||||
CONFIG_ARM_V7=y
|
||||
CONFIG_ARM_V6PLUS=y
|
||||
CONFIG_ARM_V7PLUS=y
|
||||
CONFIG_PF_EXYNOS5=y
|
||||
CONFIG_CPU_SUSPEND=y
|
||||
CONFIG_PF_EXYNOS_PKG_IDS=""
|
||||
# CONFIG_PF_EXYNOS4_4210 is not set
|
||||
# CONFIG_PF_EXYNOS4_4412 is not set
|
||||
CONFIG_PF_EXYNOS5_5250=y
|
||||
# CONFIG_PF_EXYNOS5_5410 is not set
|
||||
CONFIG_PF_EXYNOS_UART_NATIVE=y
|
||||
CONFIG_PF_EXYNOS_UART_NR=2
|
||||
CONFIG_PF_EXYNOS_TIMER_MCT=y
|
||||
# CONFIG_PF_EXYNOS_TIMER_PWM is not set
|
||||
# CONFIG_PF_EXYNOS_TIMER_GEN is not set
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A15=y
|
||||
# CONFIG_CPU_VIRT is not set
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_NONE=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_MC=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
# CONFIG_ARM_EM_TZ is not set
|
||||
# CONFIG_ARM_SMC_USER is not set
|
||||
# CONFIG_ARM_ENABLE_SWP is not set
|
||||
# CONFIG_ARM_LPAE is not set
|
||||
CONFIG_ARM_CPU_ERRATA=y
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
CONFIG_MP=y
|
||||
CONFIG_MP_MAX_CPUS=4
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
CONFIG_VIRT_OBJ_SPACE=y
|
||||
|
||||
#
|
||||
# Debugging
|
||||
#
|
||||
CONFIG_INLINE=y
|
||||
# CONFIG_NDEBUG is not set
|
||||
# CONFIG_NO_FRAME_PTR is not set
|
||||
# CONFIG_STACK_DEPTH is not set
|
||||
# CONFIG_LIST_ALLOC_SANITY is not set
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
# CONFIG_JDB_LOGGING is not set
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
CONFIG_WARN_WARNING=y
|
||||
# CONFIG_WARN_ANY is not set
|
||||
|
||||
#
|
||||
# ARM debugging options
|
||||
#
|
||||
# CONFIG_VMEM_ALLOC_TEST is not set
|
||||
# CONFIG_DEBUG_KERNEL_PAGE_FAULTS is not set
|
||||
|
||||
#
|
||||
# Compiling
|
||||
#
|
||||
CONFIG_CC="gcc"
|
||||
CONFIG_CXX="g++"
|
||||
CONFIG_HOST_CC="gcc"
|
||||
CONFIG_HOST_CXX="g++"
|
||||
# CONFIG_MAINTAINER_MODE is not set
|
||||
CONFIG_LABEL=""
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_PERF_CNT=y
|
||||
CONFIG_BIT32=y
|
||||
CONFIG_WARN_LEVEL=1
|
||||
CONFIG_XARCH="arm"
|
||||
CONFIG_ABI="vf"
|
|
@ -1,84 +0,0 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# L4Re Configuration
|
||||
#
|
||||
CONFIG_ARCH_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BUILD_ARCH_amd64 is not set
|
||||
CONFIG_BUILD_ARCH_arm=y
|
||||
# CONFIG_BUILD_ARCH_arm64 is not set
|
||||
# CONFIG_BUILD_ARCH_mips is not set
|
||||
# CONFIG_BUILD_ARCH_ppc32 is not set
|
||||
# CONFIG_BUILD_ARCH_sparc is not set
|
||||
# CONFIG_BUILD_ARCH_x86 is not set
|
||||
CONFIG_BUILD_ARCH="arm"
|
||||
CONFIG_BUILD_ABI_l4f=y
|
||||
CONFIG_BUILD_ABI="l4f"
|
||||
# CONFIG_CPU_ARM_ARMV4 is not set
|
||||
# CONFIG_CPU_ARM_ARMV4T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5 is not set
|
||||
# CONFIG_CPU_ARM_ARMV5T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5TE is not set
|
||||
# CONFIG_CPU_ARM_ARMV6 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6T2 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6ZK is not set
|
||||
CONFIG_CPU_ARM_ARMV7A=y
|
||||
CONFIG_CPU="armv7a"
|
||||
CONFIG_CPU_ARMV6KPLUS=y
|
||||
CONFIG_CPU_ARMV6PLUS=y
|
||||
# CONFIG_PLATFORM_TYPE_exynos4 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx35 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zedboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_beagleboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_pbx is not set
|
||||
CONFIG_PLATFORM_TYPE_exynos5=y
|
||||
# CONFIG_PLATFORM_TYPE_kirkwood is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1012afrdm is not set
|
||||
# CONFIG_PLATFORM_TYPE_pandaboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_arm_virt is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress_a15 is not set
|
||||
# CONFIG_PLATFORM_TYPE_cubieboard2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3_am33xx is not set
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="exynos5"
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
#
|
||||
# Building
|
||||
#
|
||||
CONFIG_YACC="yacc"
|
||||
CONFIG_LEX="flex"
|
||||
CONFIG_CTAGS="ctags"
|
||||
CONFIG_ETAGS="etags"
|
||||
CONFIG_HAVE_LDSO=y
|
||||
CONFIG_INT_CPP_NAME_SWITCH=y
|
||||
CONFIG_INT_LD_NAME_SWITCH=y
|
||||
# CONFIG_BID_STRIP_PROGS is not set
|
||||
# CONFIG_BID_GCC_OMIT_FP is not set
|
||||
CONFIG_BID_GCC_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BID_GCC_STACK_PROTECTOR_ALL is not set
|
||||
CONFIG_BID_GCC_STACK_PROTECTOR=y
|
||||
# CONFIG_BID_BUILD_DOC is not set
|
||||
# CONFIG_RELEASE_MODE is not set
|
||||
CONFIG_MAKECONFS_ADD=""
|
|
@ -1,121 +0,0 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
|
||||
#
|
||||
# Target configuration
|
||||
#
|
||||
# CONFIG_IA32 is not set
|
||||
# CONFIG_AMD64 is not set
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_MIPS is not set
|
||||
# CONFIG_PF_INTEGRATOR is not set
|
||||
# CONFIG_PF_REALVIEW is not set
|
||||
# CONFIG_PF_SUNXI is not set
|
||||
# CONFIG_PF_BCM283X is not set
|
||||
# CONFIG_PF_SA1100 is not set
|
||||
# CONFIG_PF_XSCALE is not set
|
||||
# CONFIG_PF_ARMADA38X is not set
|
||||
# CONFIG_PF_KIRKWOOD is not set
|
||||
# CONFIG_PF_TEGRA is not set
|
||||
# CONFIG_PF_LAYERSCAPE is not set
|
||||
# CONFIG_PF_IMX is not set
|
||||
# CONFIG_PF_ARM_VIRT is not set
|
||||
# CONFIG_PF_RCAR3 is not set
|
||||
CONFIG_PF_EXYNOS=y
|
||||
# CONFIG_PF_S3C2410 is not set
|
||||
# CONFIG_PF_OMAP is not set
|
||||
# CONFIG_PF_ZYNQ is not set
|
||||
# CONFIG_PF_ZYNQMP is not set
|
||||
CONFIG_BSP_NAME="exynos"
|
||||
CONFIG_CAN_ARM_CPU_CORTEX_A9=y
|
||||
CONFIG_CAN_ARM_CACHE_L2CXX0=y
|
||||
CONFIG_ARM_V7=y
|
||||
CONFIG_ARM_V6PLUS=y
|
||||
CONFIG_ARM_V7PLUS=y
|
||||
CONFIG_PF_EXYNOS4=y
|
||||
CONFIG_PF_EXYNOS_PKG_IDS=""
|
||||
# CONFIG_PF_EXYNOS4_4210 is not set
|
||||
CONFIG_PF_EXYNOS4_4412=y
|
||||
# CONFIG_PF_EXYNOS5_5250 is not set
|
||||
# CONFIG_PF_EXYNOS5_5410 is not set
|
||||
CONFIG_PF_EXYNOS_UART_NATIVE=y
|
||||
CONFIG_PF_EXYNOS_UART_NR=1
|
||||
CONFIG_PF_EXYNOS_TIMER_MCT=y
|
||||
# CONFIG_PF_EXYNOS_TIMER_MP is not set
|
||||
# CONFIG_PF_EXYNOS_TIMER_PWM is not set
|
||||
# CONFIG_PF_EXYNOS_EXTGIC is not set
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A9=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_NONE=y
|
||||
CONFIG_HAVE_ARM_SECMONIF_MC=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
# CONFIG_ARM_EM_STD is not set
|
||||
CONFIG_ARM_EM_NS=y
|
||||
# CONFIG_ARM_EM_TZ is not set
|
||||
# CONFIG_ARM_SECMONIF_NONE is not set
|
||||
CONFIG_ARM_SECMONIF_MC=y
|
||||
# CONFIG_ARM_SMC_USER is not set
|
||||
CONFIG_ARM_CACHE_L2CXX0=y
|
||||
# CONFIG_ARM_ENABLE_SWP is not set
|
||||
# CONFIG_ARM_CPU_ERRATA is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
CONFIG_MP=y
|
||||
CONFIG_MP_MAX_CPUS=4
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
CONFIG_VIRT_OBJ_SPACE=y
|
||||
|
||||
#
|
||||
# Debugging
|
||||
#
|
||||
CONFIG_INLINE=y
|
||||
# CONFIG_NDEBUG is not set
|
||||
CONFIG_NO_FRAME_PTR=y
|
||||
# CONFIG_STACK_DEPTH is not set
|
||||
# CONFIG_LIST_ALLOC_SANITY is not set
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
# CONFIG_JDB_LOGGING is not set
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
CONFIG_WARN_WARNING=y
|
||||
# CONFIG_WARN_ANY is not set
|
||||
|
||||
#
|
||||
# ARM debugging options
|
||||
#
|
||||
# CONFIG_VMEM_ALLOC_TEST is not set
|
||||
# CONFIG_DEBUG_KERNEL_PAGE_FAULTS is not set
|
||||
|
||||
#
|
||||
# Compiling
|
||||
#
|
||||
CONFIG_CC="gcc"
|
||||
CONFIG_CXX="g++"
|
||||
CONFIG_HOST_CC="gcc"
|
||||
CONFIG_HOST_CXX="g++"
|
||||
# CONFIG_MAINTAINER_MODE is not set
|
||||
CONFIG_LABEL=""
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_PERF_CNT=y
|
||||
CONFIG_BIT32=y
|
||||
CONFIG_WARN_LEVEL=1
|
||||
CONFIG_XARCH="arm"
|
||||
CONFIG_ABI="vf"
|
|
@ -1,84 +0,0 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# L4Re Configuration
|
||||
#
|
||||
CONFIG_ARCH_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BUILD_ARCH_amd64 is not set
|
||||
CONFIG_BUILD_ARCH_arm=y
|
||||
# CONFIG_BUILD_ARCH_arm64 is not set
|
||||
# CONFIG_BUILD_ARCH_mips is not set
|
||||
# CONFIG_BUILD_ARCH_ppc32 is not set
|
||||
# CONFIG_BUILD_ARCH_sparc is not set
|
||||
# CONFIG_BUILD_ARCH_x86 is not set
|
||||
CONFIG_BUILD_ARCH="arm"
|
||||
CONFIG_BUILD_ABI_l4f=y
|
||||
CONFIG_BUILD_ABI="l4f"
|
||||
# CONFIG_CPU_ARM_ARMV4 is not set
|
||||
# CONFIG_CPU_ARM_ARMV4T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5 is not set
|
||||
# CONFIG_CPU_ARM_ARMV5T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5TE is not set
|
||||
# CONFIG_CPU_ARM_ARMV6 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6T2 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6ZK is not set
|
||||
CONFIG_CPU_ARM_ARMV7A=y
|
||||
CONFIG_CPU="armv7a"
|
||||
CONFIG_CPU_ARMV6KPLUS=y
|
||||
CONFIG_CPU_ARMV6PLUS=y
|
||||
CONFIG_PLATFORM_TYPE_exynos4=y
|
||||
# CONFIG_PLATFORM_TYPE_imx35 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zedboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_beagleboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_pbx is not set
|
||||
# CONFIG_PLATFORM_TYPE_exynos5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_kirkwood is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1012afrdm is not set
|
||||
# CONFIG_PLATFORM_TYPE_pandaboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_arm_virt is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress_a15 is not set
|
||||
# CONFIG_PLATFORM_TYPE_cubieboard2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3_am33xx is not set
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="exynos4"
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
#
|
||||
# Building
|
||||
#
|
||||
CONFIG_YACC="yacc"
|
||||
CONFIG_LEX="flex"
|
||||
CONFIG_CTAGS="ctags"
|
||||
CONFIG_ETAGS="etags"
|
||||
CONFIG_HAVE_LDSO=y
|
||||
CONFIG_INT_CPP_NAME_SWITCH=y
|
||||
CONFIG_INT_LD_NAME_SWITCH=y
|
||||
# CONFIG_BID_STRIP_PROGS is not set
|
||||
# CONFIG_BID_GCC_OMIT_FP is not set
|
||||
CONFIG_BID_GCC_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BID_GCC_STACK_PROTECTOR_ALL is not set
|
||||
CONFIG_BID_GCC_STACK_PROTECTOR=y
|
||||
# CONFIG_BID_BUILD_DOC is not set
|
||||
# CONFIG_RELEASE_MODE is not set
|
||||
CONFIG_MAKECONFS_ADD=""
|
|
@ -1,110 +0,0 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Fiasco configuration
|
||||
#
|
||||
CONFIG_HAS_FPU_OPTION=y
|
||||
CONFIG_HAS_LAZY_FPU=y
|
||||
CONFIG_HAS_VIRT_OBJ_SPACE_OPTION=y
|
||||
CONFIG_HAS_SERIAL_OPTION=y
|
||||
CONFIG_HAS_JDB_DISASM_OPTION=y
|
||||
CONFIG_HAS_JDB_GZIP_OPTION=y
|
||||
CONFIG_HAS_MP_OPTION=y
|
||||
|
||||
#
|
||||
# Target configuration
|
||||
#
|
||||
# CONFIG_IA32 is not set
|
||||
# CONFIG_AMD64 is not set
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_MIPS is not set
|
||||
# CONFIG_PF_INTEGRATOR is not set
|
||||
# CONFIG_PF_REALVIEW is not set
|
||||
# CONFIG_PF_SUNXI is not set
|
||||
# CONFIG_PF_BCM283X is not set
|
||||
# CONFIG_PF_SA1100 is not set
|
||||
# CONFIG_PF_XSCALE is not set
|
||||
# CONFIG_PF_ARMADA38X is not set
|
||||
# CONFIG_PF_KIRKWOOD is not set
|
||||
# CONFIG_PF_TEGRA is not set
|
||||
# CONFIG_PF_LAYERSCAPE is not set
|
||||
# CONFIG_PF_IMX is not set
|
||||
# CONFIG_PF_ARM_VIRT is not set
|
||||
# CONFIG_PF_RCAR3 is not set
|
||||
# CONFIG_PF_EXYNOS is not set
|
||||
# CONFIG_PF_S3C2410 is not set
|
||||
CONFIG_PF_OMAP=y
|
||||
# CONFIG_PF_ZYNQ is not set
|
||||
# CONFIG_PF_ZYNQMP is not set
|
||||
CONFIG_BSP_NAME="omap"
|
||||
CONFIG_CAN_ARM_CPU_CORTEX_A9=y
|
||||
CONFIG_CAN_ARM_CACHE_L2CXX0=y
|
||||
CONFIG_ARM_V7=y
|
||||
CONFIG_ARM_V6PLUS=y
|
||||
CONFIG_ARM_V7PLUS=y
|
||||
# CONFIG_PF_OMAP3_OMAP35XEVM is not set
|
||||
# CONFIG_PF_OMAP3_BEAGLEBOARD is not set
|
||||
# CONFIG_PF_OMAP3_AM33XX is not set
|
||||
CONFIG_PF_OMAP4_PANDABOARD=y
|
||||
# CONFIG_PF_OMAP5_5432EVM is not set
|
||||
CONFIG_ABI_VF=y
|
||||
CONFIG_ARM_CORTEX_A9=y
|
||||
CONFIG_FPU=y
|
||||
CONFIG_LAZY_FPU=y
|
||||
# CONFIG_ARM_ALIGNMENT_CHECK is not set
|
||||
CONFIG_ARM_EM_STD=y
|
||||
# CONFIG_ARM_EM_NS is not set
|
||||
# CONFIG_ARM_EM_TZ is not set
|
||||
# CONFIG_ARM_SMC_USER is not set
|
||||
CONFIG_ARM_CACHE_L2CXX0=y
|
||||
# CONFIG_ARM_ENABLE_SWP is not set
|
||||
# CONFIG_ARM_CPU_ERRATA is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
#
|
||||
CONFIG_MP=y
|
||||
CONFIG_MP_MAX_CPUS=4
|
||||
CONFIG_CONTEXT_4K=y
|
||||
# CONFIG_FINE_GRAINED_CPUTIME is not set
|
||||
CONFIG_SCHED_FIXED_PRIO=y
|
||||
CONFIG_VIRT_OBJ_SPACE=y
|
||||
|
||||
#
|
||||
# Debugging
|
||||
#
|
||||
CONFIG_INLINE=y
|
||||
# CONFIG_NDEBUG is not set
|
||||
# CONFIG_NO_FRAME_PTR is not set
|
||||
# CONFIG_STACK_DEPTH is not set
|
||||
# CONFIG_LIST_ALLOC_SANITY is not set
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_JDB=y
|
||||
CONFIG_JDB_LOGGING=y
|
||||
# CONFIG_JDB_DISASM is not set
|
||||
CONFIG_JDB_GZIP=y
|
||||
# CONFIG_JDB_ACCOUNTING is not set
|
||||
# CONFIG_WARN_NONE is not set
|
||||
CONFIG_WARN_WARNING=y
|
||||
# CONFIG_WARN_ANY is not set
|
||||
|
||||
#
|
||||
# ARM debugging options
|
||||
#
|
||||
# CONFIG_VMEM_ALLOC_TEST is not set
|
||||
# CONFIG_DEBUG_KERNEL_PAGE_FAULTS is not set
|
||||
|
||||
#
|
||||
# Compiling
|
||||
#
|
||||
CONFIG_CC="gcc"
|
||||
CONFIG_CXX="g++"
|
||||
CONFIG_HOST_CC="gcc"
|
||||
CONFIG_HOST_CXX="g++"
|
||||
# CONFIG_MAINTAINER_MODE is not set
|
||||
CONFIG_LABEL=""
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_PERF_CNT=y
|
||||
CONFIG_BIT32=y
|
||||
CONFIG_WARN_LEVEL=1
|
||||
CONFIG_XARCH="arm"
|
||||
CONFIG_ABI="vf"
|
|
@ -1,82 +0,0 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# L4Re Configuration
|
||||
#
|
||||
CONFIG_ARCH_ENABLE_STACK_PROTECTOR=y
|
||||
# CONFIG_BUILD_ARCH_amd64 is not set
|
||||
CONFIG_BUILD_ARCH_arm=y
|
||||
# CONFIG_BUILD_ARCH_arm64 is not set
|
||||
# CONFIG_BUILD_ARCH_mips is not set
|
||||
# CONFIG_BUILD_ARCH_ppc32 is not set
|
||||
# CONFIG_BUILD_ARCH_sparc is not set
|
||||
# CONFIG_BUILD_ARCH_x86 is not set
|
||||
CONFIG_BUILD_ARCH="arm"
|
||||
CONFIG_BUILD_ABI_l4f=y
|
||||
CONFIG_BUILD_ABI="l4f"
|
||||
# CONFIG_CPU_ARM_ARMV4 is not set
|
||||
# CONFIG_CPU_ARM_ARMV4T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5 is not set
|
||||
# CONFIG_CPU_ARM_ARMV5T is not set
|
||||
# CONFIG_CPU_ARM_ARMV5TE is not set
|
||||
# CONFIG_CPU_ARM_ARMV6 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6T2 is not set
|
||||
# CONFIG_CPU_ARM_ARMV6ZK is not set
|
||||
CONFIG_CPU_ARM_ARMV7A=y
|
||||
CONFIG_CPU="armv7a"
|
||||
CONFIG_CPU_ARMV6KPLUS=y
|
||||
CONFIG_CPU_ARMV6PLUS=y
|
||||
# CONFIG_PLATFORM_TYPE_exynos4 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx35 is not set
|
||||
# CONFIG_PLATFORM_TYPE_zedboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_beagleboard is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_pbx is not set
|
||||
# CONFIG_PLATFORM_TYPE_exynos5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_kirkwood is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1012afrdm is not set
|
||||
CONFIG_PLATFORM_TYPE_pandaboard=y
|
||||
# CONFIG_PLATFORM_TYPE_arm_virt is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress_a15 is not set
|
||||
# CONFIG_PLATFORM_TYPE_cubieboard2 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3_am33xx is not set
|
||||
# CONFIG_PLATFORM_TYPE_parallella is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_b is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx21 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rcar3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_ls1021atwr is not set
|
||||
# CONFIG_PLATFORM_TYPE_tegra3 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx7 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx28 is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap3evm is not set
|
||||
# CONFIG_PLATFORM_TYPE_zynqmp is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6 is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx6ul is not set
|
||||
# CONFIG_PLATFORM_TYPE_armada38x is not set
|
||||
# CONFIG_PLATFORM_TYPE_omap5 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rv_vexpress is not set
|
||||
# CONFIG_PLATFORM_TYPE_imx51 is not set
|
||||
# CONFIG_PLATFORM_TYPE_rpi_a is not set
|
||||
# CONFIG_PLATFORM_TYPE_integrator is not set
|
||||
# CONFIG_PLATFORM_TYPE_custom is not set
|
||||
CONFIG_PLATFORM_TYPE="pandaboard"
|
||||
CONFIG_DROPS_STDDIR="/path/to/l4re"
|
||||
CONFIG_DROPS_INSTDIR="/path/to/l4re"
|
||||
CONFIG_BID_COLORED_PHASES=y
|
||||
|
||||
#
|
||||
# Building
|
||||
#
|
||||
CONFIG_YACC="yacc"
|
||||
CONFIG_LEX="flex"
|
||||
CONFIG_CTAGS="ctags"
|
||||
CONFIG_ETAGS="etags"
|
||||
CONFIG_HAVE_LDSO=y
|
||||
CONFIG_INT_CPP_NAME_SWITCH=y
|
||||
CONFIG_INT_LD_NAME_SWITCH=y
|
||||
# CONFIG_BID_STRIP_PROGS is not set
|
||||
# CONFIG_BID_GCC_OMIT_FP is not set
|
||||
# CONFIG_BID_GCC_ENABLE_STACK_PROTECTOR is not set
|
||||
# CONFIG_BID_BUILD_DOC is not set
|
||||
# CONFIG_RELEASE_MODE is not set
|
||||
CONFIG_MAKECONFS_ADD=""
|
|
@ -1,78 +0,0 @@
|
|||
|
||||
===================================
|
||||
Genode on the Fiasco.OC microkernel
|
||||
===================================
|
||||
|
||||
|
||||
Stefan Kalkowski
|
||||
|
||||
|
||||
Fiasco.OC is a microkernel originally developed by the OS group of the
|
||||
TU-Dresden. Nowadays, it is primarily maintained and developed by
|
||||
the company Kernkonzept. It's an object-oriented capability-based system
|
||||
for x86, ARM, PowerPC and MIPS platforms.
|
||||
|
||||
This document provides brief instructions about downloading, building and
|
||||
booting the Fiasco.OC version of Genode.
|
||||
|
||||
|
||||
Prerequisites
|
||||
#############
|
||||
|
||||
You need certain tools to use the Fiasco.OC build system. On Debian/Ubuntu
|
||||
systems you have to install the following packages:
|
||||
|
||||
! apt-get install make gawk g++ binutils pkg-config g++-multilib subversion
|
||||
|
||||
Moreover, you need to download and install the tool-chain used by Genode. Have
|
||||
a look at this page:
|
||||
|
||||
:[http://genode.org/download/tool-chain]:
|
||||
Genode tool-chain
|
||||
|
||||
|
||||
Building the Fiasco.OC version of Genode
|
||||
########################################
|
||||
|
||||
The current version of Genode is available at the public Github repository:
|
||||
|
||||
:http://github.com/genodelabs/genode:
|
||||
Github repository of Genode
|
||||
|
||||
After you've fetched the Genode source tree from the git repository, or
|
||||
downloaded the latest release tar archive, you need the Fiasco.OC source code,
|
||||
its kernel-bindings, additional bootstrap tools etc. To simplify that step,
|
||||
you can use the 'prepare_port' tool:
|
||||
|
||||
! ./tool/ports/prepare_port foc
|
||||
|
||||
This will install all necessary third-party source code in the 'contrib' folder.
|
||||
|
||||
Now, go to a directory where you want the Genode/Fiasco.OC build directory to
|
||||
remain. Use the helper script in the 'tool' directory of the Genode
|
||||
source tree to create the initial build environment. You need to state the
|
||||
build directory you want to create, and the hardware architecture to run
|
||||
Fiasco.OC/Genode on. Choose 'x86_32', 'x86_64', or one of the available ARM
|
||||
boards.
|
||||
|
||||
! <genode-dir>/tool/create_builddir x86_64
|
||||
|
||||
Now, go to the newly created build directory and type make:
|
||||
|
||||
! cd build/x86_64
|
||||
! make KERNEL=foc
|
||||
|
||||
This will build the Fiasco.OC kernel, its bootstrap code, and every Genode component,
|
||||
that runs on top of Fiasco.OC.
|
||||
|
||||
If you just want to give Genode/Fiasco.OC a try, you can call e.g.: the demo run-script
|
||||
instead of building everything:
|
||||
|
||||
! make run/demo KERNEL=foc
|
||||
|
||||
|
||||
Further Information
|
||||
###################
|
||||
|
||||
:[https://l4re.org/fiasco/]:
|
||||
Official website for the Fiasco.OC microkernel.
|
|
@ -13,3 +13,4 @@ SRC_CC += rpc_dispatch_loop.cc
|
|||
SRC_CC += thread.cc thread_bootstrap.cc thread_myself.cc utcb.cc
|
||||
SRC_CC += capability.cc
|
||||
SRC_CC += signal_source_client.cc
|
||||
SRC_CC += platform.cc
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
KERNEL_CONFIG := $(REP_DIR)/config/arndale.kernel
|
||||
|
||||
include $(REP_DIR)/lib/mk/kernel-foc.inc
|
|
@ -1,5 +0,0 @@
|
|||
L4_CONFIG := $(call select_from_repositories,config/arndale.user)
|
||||
|
||||
L4_BIN_DIR := $(LIB_CACHE_DIR)/syscall-foc/arndale-build/bin/arm_armv7a
|
||||
|
||||
include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc
|
|
@ -1,3 +0,0 @@
|
|||
KERNEL_CONFIG := $(REP_DIR)/config/odroid_x2.kernel
|
||||
|
||||
include $(REP_DIR)/lib/mk/kernel-foc.inc
|
|
@ -1,5 +0,0 @@
|
|||
L4_CONFIG := $(call select_from_repositories,config/odroid_x2.user)
|
||||
|
||||
L4_BIN_DIR := $(LIB_CACHE_DIR)/syscall-foc/odroid_x2-build/bin/arm_armv7a
|
||||
|
||||
include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc
|
|
@ -1,3 +0,0 @@
|
|||
KERNEL_CONFIG := $(REP_DIR)/config/panda.kernel
|
||||
|
||||
include $(REP_DIR)/lib/mk/kernel-foc.inc
|
|
@ -1,5 +0,0 @@
|
|||
L4_CONFIG := $(call select_from_repositories,config/panda.user)
|
||||
|
||||
L4_BIN_DIR := $(LIB_CACHE_DIR)/syscall-foc/panda-build/bin/arm_armv7a
|
||||
|
||||
include $(REP_DIR)/lib/mk/spec/arm/syscall-foc.inc
|
|
@ -1,34 +0,0 @@
|
|||
From 8ce1c02d02fa8a9e50124e3237c2e01ae73c248c Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
|
||||
Date: Wed, 8 Mar 2017 16:58:27 +0100
|
||||
Subject: [PATCH 06/15] FOC: adjust panda timer to version A6
|
||||
|
||||
A6 runs at 800 not 700 MHz (as the ES2 does) when bootstrapped by U-boot
|
||||
|
||||
(thanks to mstein)
|
||||
---
|
||||
.../fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp b/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
index 72ef9b90..c0aef990 100644
|
||||
--- a/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
+++ b/kernel/fiasco/src/kern/arm/bsp/omap/timer-arm-mptimer-omap4.cpp
|
||||
@@ -4,5 +4,13 @@ INTERFACE [arm && mptimer && pf_omap4_pandaboard]:
|
||||
EXTENSION class Timer
|
||||
{
|
||||
private:
|
||||
- static Mword interval() { return 499999; }
|
||||
+ static Mword interval()
|
||||
+ {
|
||||
+ /*
|
||||
+ * This is only valid for Panda A6, as we run it at our offices. For A6
|
||||
+ * U-Boot will clock the board at 800 MHz leading to a 400 MHz private timer
|
||||
+ * tick.
|
||||
+ */
|
||||
+ return 399999;
|
||||
+ }
|
||||
};
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1 +1 @@
|
|||
91ca3363690c5b9c992a110375242f5d426a6848
|
||||
ce2d3e9f54b383ef2368e4cd285b0b48b0424f63
|
||||
|
|
|
@ -28,7 +28,6 @@ PATCH_OPT(patches/0001-L4RE-Remove-moe-from-switch_ram_base-target.patch)
|
|||
PATCH_OPT(patches/0002-FOC-change-l4_task_cap_equal-semantic.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0003-Sigma0-raise-sigma0-s-priority-to-maximum.patch) := -p4 -d${DIR(l4re-core)}
|
||||
PATCH_OPT(patches/0005-FOC-Increase-name-buffer-of-JDB-to-32K.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0006-FOC-adjust-panda-timer-to-version-A6.patch) := -p3 -d${DIR(foc)}
|
||||
PATCH_OPT(patches/0007-L4RE-fix-x86-syscall-bindings-to-use-in-C-namespace.patch) := -p4 -d${DIR(l4re-core)}
|
||||
PATCH_OPT(patches/0009-Bootstrap-read-out-comport-on-x86-from-BDA-area.patch) := -p4 -d${DIR(bootstrap)}
|
||||
PATCH_OPT(patches/0010-L4RE-get-rid-of-__builtin_strlen-usage.patch) := -p4 -d${DIR(l4re-core)}
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
This archive contains the Fiasco.OC-specific part of Genode.
|
||||
|
||||
It also contains the source code of the Fiasco.OC kernel in the
|
||||
'src/kernel/foc' directory.
|
||||
|
||||
Please note that Fiasco.OC has a license distinct from Genode. Fiasco.OC's
|
||||
license can be found at 'src/kernel/foc/COPYING-GPL-2'.
|
|
@ -1,3 +0,0 @@
|
|||
BOARD := arndale
|
||||
|
||||
include $(GENODE_DIR)/repos/base-foc/recipes/src/base-foc_content.inc
|
|
@ -1 +0,0 @@
|
|||
2019-11-25 9a459c4fd8a907810d91041751affcf3e119fcb1
|
|
@ -1 +1 @@
|
|||
2019-11-25 d8ff4913b8aa117aef77a7918bc82808e38a4ee7
|
||||
2020-05-26 aaa0173203e45653f66c3d618ebb4f3f8c8ab824
|
||||
|
|
|
@ -1 +1 @@
|
|||
2019-11-25 a750c8988106d5c26e46dcceb1f76bfd7bfa1457
|
||||
2020-05-26 4765046a8124b5ccb91e5d5d99c25dbd77b4beee
|
||||
|
|
|
@ -1 +1 @@
|
|||
2019-11-25 0c0a26b6ddb0ee5261f0be30f229e9ce04b61eda
|
||||
2020-05-26 a7b1bc8a7f5c49c55b78b4553c35e8c6f326a505
|
||||
|
|
|
@ -1 +1 @@
|
|||
2019-11-25 bce6f0a8f1f46f8edf62ef2180dbfc949123432d
|
||||
2020-05-26 2e409e97f835d14938ed24e134251d20c1b1349a
|
||||
|
|
|
@ -1 +1 @@
|
|||
2019-11-25 307d01e531dbbcd672463a4ea090f40bb399cae8
|
||||
2020-05-26 0b9ad6d521217d2a0eedfc81d9313ec8eeed7d4d
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
/* Genode includes */
|
||||
#include <base/allocator_avl.h>
|
||||
#include <base/exception.h>
|
||||
#include <base/lock.h>
|
||||
#include <base/mutex.h>
|
||||
#include <synced_range_allocator.h>
|
||||
|
||||
namespace Genode {
|
||||
|
@ -35,7 +35,7 @@ namespace Genode {
|
|||
|
||||
Synced_range_allocator<Allocator_avl> _id_alloc;
|
||||
|
||||
Lock _lock { };
|
||||
Mutex _mutex { };
|
||||
|
||||
public:
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#define _CORE__VM_SESSION_COMPONENT_H_
|
||||
|
||||
/* Genode includes */
|
||||
#include <base/allocator_guard.h>
|
||||
#include <base/rpc_server.h>
|
||||
#include <base/heap.h>
|
||||
#include <vm_session/vm_session.h>
|
||||
|
|
|
@ -36,7 +36,7 @@ void Ipc_pager::_parse(unsigned long label) {
|
|||
if (_type == PAGEFAULT || _type == EXCEPTION)
|
||||
_parse_pagefault();
|
||||
if (_type == PAUSE || _type == EXCEPTION)
|
||||
memcpy(&_regs, l4_utcb_exc(), sizeof(l4_exc_regs_t));
|
||||
_regs = *l4_utcb_exc();
|
||||
}
|
||||
|
||||
|
||||
|
@ -134,7 +134,7 @@ void Ipc_pager::acknowledge_wakeup()
|
|||
|
||||
void Ipc_pager::acknowledge_exception()
|
||||
{
|
||||
memcpy(l4_utcb_exc(), &_regs, sizeof(l4_exc_regs_t));
|
||||
_regs = *l4_utcb_exc();
|
||||
l4_cap_idx_t dst = Fiasco::Capability::valid(_last.kcap)
|
||||
? _last.kcap : (l4_cap_idx_t)L4_SYSF_REPLY;
|
||||
Fiasco::l4_msgtag_t const msg_tag =
|
||||
|
|
|
@ -495,6 +495,10 @@ Platform::Platform() :
|
|||
xml.node("hardware", [&] () {
|
||||
_setup_platform_info(xml, sigma0_map_kip());
|
||||
});
|
||||
xml.node("affinity-space", [&] () {
|
||||
xml.attribute("width", affinity_space().width());
|
||||
xml.attribute("height", affinity_space().height());
|
||||
});
|
||||
});
|
||||
|
||||
_rom_fs.insert(new (core_mem_alloc()) Rom_module(phys_addr, size,
|
||||
|
|
|
@ -192,7 +192,7 @@ Cap_id_allocator::Cap_id_allocator(Allocator &alloc)
|
|||
|
||||
unsigned long Cap_id_allocator::alloc()
|
||||
{
|
||||
Lock::Guard lock_guard(_lock);
|
||||
Mutex::Guard lock_guard(_mutex);
|
||||
|
||||
void *id = nullptr;
|
||||
if (_id_alloc.alloc(CAP_ID_OFFSET, &id))
|
||||
|
@ -203,7 +203,7 @@ unsigned long Cap_id_allocator::alloc()
|
|||
|
||||
void Cap_id_allocator::free(unsigned long id)
|
||||
{
|
||||
Lock::Guard lock_guard(_lock);
|
||||
Mutex::Guard lock_guard(_mutex);
|
||||
|
||||
if (id < CAP_ID_RANGE)
|
||||
_id_alloc.free((void*)(id & CAP_ID_MASK), CAP_ID_OFFSET);
|
||||
|
|
|
@ -78,7 +78,7 @@ static inline void thread_switch_to(Genode::Thread *thread_base)
|
|||
__attribute__((optimize("-fno-omit-frame-pointer")))
|
||||
__attribute__((noinline))
|
||||
__attribute__((used))
|
||||
static void thread_stop_myself()
|
||||
static void thread_stop_myself(Genode::Thread *)
|
||||
{
|
||||
using namespace Fiasco;
|
||||
|
||||
|
|
|
@ -238,6 +238,11 @@ static l4_msgtag_t copy_msgbuf_to_utcb(Msgbuf_base &snd_msg,
|
|||
/* setup flexpage for valid capability to delegate */
|
||||
if (caps[i].valid) {
|
||||
unsigned const idx = num_msg_words + 2*num_cap_sel;
|
||||
|
||||
/* check bounds of 'l4_msg_regs_t::mr' */
|
||||
if (idx + 1 >= L4_UTCB_GENERIC_DATA_SIZE)
|
||||
break;
|
||||
|
||||
l4_utcb_mr()->mr[idx] = L4_ITEM_MAP/* | L4_ITEM_CONT*/;
|
||||
l4_utcb_mr()->mr[idx + 1] = l4_obj_fpage(caps[i].sel,
|
||||
0, L4_FPAGE_RWX).raw;
|
||||
|
|
|
@ -59,6 +59,6 @@ void Genode::Thread::_thread_start()
|
|||
|
||||
Thread::myself()->_thread_bootstrap();
|
||||
Thread::myself()->entry();
|
||||
Thread::myself()->_join_lock.unlock();
|
||||
Thread::myself()->_join.wakeup();
|
||||
sleep_forever();
|
||||
}
|
||||
|
|
|
@ -227,14 +227,14 @@ struct Vcpu : Genode::Thread
|
|||
|
||||
State _state_request { NONE };
|
||||
State _state_current { NONE };
|
||||
Lock _remote_lock { Lock::UNLOCKED };
|
||||
Mutex _remote_mutex { };
|
||||
|
||||
void entry() override
|
||||
{
|
||||
_wake_up.down();
|
||||
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
|
||||
/* leave scope for Thread::join() - vCPU setup failed */
|
||||
if (_state_request == TERMINATE)
|
||||
|
@ -319,7 +319,7 @@ struct Vcpu : Genode::Thread
|
|||
while (true) {
|
||||
/* read in requested state from remote threads */
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
_state_current = _state_request;
|
||||
_state_request = NONE;
|
||||
}
|
||||
|
@ -331,7 +331,7 @@ struct Vcpu : Genode::Thread
|
|||
|
||||
if (_state_current != RUN && _state_current != PAUSE) {
|
||||
Genode::error("unknown vcpu state ", (int)_state_current);
|
||||
while (true) { _remote_lock.lock(); }
|
||||
while (true) { _remote_mutex.acquire(); }
|
||||
}
|
||||
|
||||
/* transfer vCPU state to Fiasco.OC */
|
||||
|
@ -355,7 +355,7 @@ struct Vcpu : Genode::Thread
|
|||
reason = 0xfc;
|
||||
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
_state_request = NONE;
|
||||
_state_current = PAUSE;
|
||||
|
||||
|
@ -380,7 +380,7 @@ struct Vcpu : Genode::Thread
|
|||
reason = Fiasco::l4_vm_vmx_read_32(vmcs, Vmcs::EXI_REASON);
|
||||
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
_state_request = NONE;
|
||||
_state_current = PAUSE;
|
||||
|
||||
|
@ -1207,7 +1207,7 @@ struct Vcpu : Genode::Thread
|
|||
|
||||
void resume()
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
|
||||
if (_state_request == RUN || _state_request == PAUSE)
|
||||
return;
|
||||
|
@ -1220,7 +1220,7 @@ struct Vcpu : Genode::Thread
|
|||
|
||||
void pause()
|
||||
{
|
||||
Lock::Guard guard(_remote_lock);
|
||||
Mutex::Guard guard(_remote_mutex);
|
||||
|
||||
if (_state_request == PAUSE)
|
||||
return;
|
||||
|
|
|
@ -1,97 +0,0 @@
|
|||
|
||||
===============================================
|
||||
Getting started with 'base-hw' on PandaBoard A2
|
||||
===============================================
|
||||
|
||||
|
||||
Martin Stein
|
||||
|
||||
Abstract
|
||||
########
|
||||
|
||||
This is a short tutorial that depicts a handy way to get a Genode ELF-image,
|
||||
build with 'base-hw', started on the PandaBoard A2. For informations
|
||||
about how to build Genode images with 'base-hw', have a look at
|
||||
'<GENODE_DIR>/repos/base-hw/doc/hw.txt'. This tutorial is dedicated to common
|
||||
Linux systems, but all examples originate from a Ubuntu 11.10.
|
||||
|
||||
|
||||
Tutorial
|
||||
########
|
||||
|
||||
Connect the PandaBoard to your local Ethernet through its RJ45 connector.
|
||||
Additionally connect the PandaBoard to your machine through its COM port.
|
||||
Ensure that you have installed the genode tool chain that is available at:
|
||||
|
||||
:[http://genode.org/download/tool-chain]:
|
||||
Genode tool-chain
|
||||
|
||||
Ensure that '<GENODE_TOOL_CHAIN_DIR>/bin/' is in your 'PATH' variable.
|
||||
Get the Linaro U-Boot repository and compile U-Boot for PandaBoard:
|
||||
|
||||
! git clone git://git.linaro.org/boot/u-boot-linaro-stable.git
|
||||
! cd <UBOOT_DIR>
|
||||
! make CROSS_COMPILE=genode-arm- omap4_panda_config
|
||||
! make CROSS_COMPILE=genode-arm-
|
||||
|
||||
During the compilation i had some errors. The first was in assembly code,
|
||||
it seemed to originate from a slip with the typo and was easy to fix.
|
||||
The second kind of errors occured because the GCC version had no support for
|
||||
direct array initialization, thus i avoided them by simply initialize
|
||||
the array elements separately.
|
||||
|
||||
Now install the following packages to communicate with the PandaBoard:
|
||||
|
||||
! apt-get install tftp-hpa minicom
|
||||
|
||||
Open '/etc/default/tftpd-hpa' with a text editor and ensure that it has
|
||||
the following content:
|
||||
|
||||
! TFTP_USERNAME="tftp"
|
||||
! TFTP_DIRECTORY="/var/lib/tftpboot"
|
||||
! TFTP_ADDRESS="0.0.0.0:69"
|
||||
! TFTP_OPTIONS="-l"
|
||||
|
||||
Tell TFTP wich image to provide:
|
||||
|
||||
! cd /var/lib/tftpboot/
|
||||
! ln -s <GENODE_BOOT_ELF> image.elf
|
||||
|
||||
Where '<GENODE_BOOT_ELF>' is the absolute path of the targeted ELF image.
|
||||
Start TFTP to enable the upload of the image:
|
||||
|
||||
! service tftp-hpa restart
|
||||
|
||||
Start Minicom in configuration mode:
|
||||
|
||||
! minicom -s
|
||||
|
||||
Go to 'Serial port setting' and ensure that the device is set to the
|
||||
TTY of the COM port you've conntected PandaBoard with. In my case it was
|
||||
'/dev/ttyS0'. Configure the other settings for a baud rate of '115200',
|
||||
8 bit char length, no parity and 1 stop bit. Quit Minicom and start
|
||||
it once more:
|
||||
|
||||
! minicom
|
||||
|
||||
Mount your SD-card and copy the U-Boot files to its boot partition:
|
||||
|
||||
! cd <UBOOT_DIR>; cp MLO /media/boot/; cp u-boot.bin /media/boot/
|
||||
|
||||
Unmount the SD card and insert it into the appropriate PandaBoard slot.
|
||||
Plug in the power connector or push the 'S1' button if the PandaBoard is
|
||||
already powered. Minicom should now show the following message below some
|
||||
bootloader info:
|
||||
|
||||
! Hit any key to stop autoboot:
|
||||
|
||||
We have to stop autoboot and type in this line to load and boot the genode
|
||||
image via ethernet:
|
||||
|
||||
! usb start; dhcp; bootelf 0x82000000
|
||||
|
||||
Now your Genode scenario should start and offer its debug output
|
||||
in Minicom. You can boot other images by redirecting the link
|
||||
'/var/lib/tftpboot/image.elf' accordingly, restarting your PandaBoard
|
||||
and instructing U-boot again as described above.
|
||||
|
|
@ -30,7 +30,7 @@ struct Genode::Hw_native_pd : Pd_session::Native_pd
|
|||
*********************/
|
||||
|
||||
GENODE_RPC_THROW(Rpc_upgrade_cap_slab, void, upgrade_cap_slab,
|
||||
GENODE_TYPE_LIST(Out_of_ram));
|
||||
GENODE_TYPE_LIST(Out_of_ram, Out_of_caps));
|
||||
GENODE_RPC_INTERFACE(Rpc_upgrade_cap_slab);
|
||||
};
|
||||
|
||||
|
|
|
@ -36,13 +36,12 @@ namespace Kernel
|
|||
constexpr Call_arg call_id_cancel_next_await_signal() { return 10; }
|
||||
constexpr Call_arg call_id_ack_signal() { return 11; }
|
||||
constexpr Call_arg call_id_print_char() { return 12; }
|
||||
constexpr Call_arg call_id_update_data_region() { return 13; }
|
||||
constexpr Call_arg call_id_update_instr_region() { return 14; }
|
||||
constexpr Call_arg call_id_ack_cap() { return 15; }
|
||||
constexpr Call_arg call_id_delete_cap() { return 16; }
|
||||
constexpr Call_arg call_id_timeout() { return 17; }
|
||||
constexpr Call_arg call_id_timeout_max_us() { return 18; }
|
||||
constexpr Call_arg call_id_time() { return 19; }
|
||||
constexpr Call_arg call_id_cache_coherent_region() { return 13; }
|
||||
constexpr Call_arg call_id_ack_cap() { return 14; }
|
||||
constexpr Call_arg call_id_delete_cap() { return 15; }
|
||||
constexpr Call_arg call_id_timeout() { return 16; }
|
||||
constexpr Call_arg call_id_timeout_max_us() { return 17; }
|
||||
constexpr Call_arg call_id_time() { return 18; }
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
|
@ -176,26 +175,16 @@ namespace Kernel
|
|||
}
|
||||
|
||||
/**
|
||||
* Globally apply writes to a data region in the current domain
|
||||
* Enforce coherent view (I-/D-Caches) on memory region
|
||||
*
|
||||
* \param base base of the region within the current domain
|
||||
* \param size size of the region
|
||||
*/
|
||||
inline void update_data_region(addr_t const base, size_t const size)
|
||||
inline void cache_coherent_region(addr_t const base, size_t const size)
|
||||
{
|
||||
call(call_id_update_data_region(), (Call_arg)base, (Call_arg)size);
|
||||
call(call_id_cache_coherent_region(), (Call_arg)base, (Call_arg)size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Globally apply writes to an instruction region in the current domain
|
||||
*
|
||||
* \param base base of the region within the current domain
|
||||
* \param size size of the region
|
||||
*/
|
||||
inline void update_instr_region(addr_t const base, size_t const size)
|
||||
{
|
||||
call(call_id_update_instr_region(), (Call_arg)base, (Call_arg)size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send request message and await receipt of corresponding reply message
|
||||
|
|
|
@ -27,59 +27,55 @@ namespace Genode
|
|||
|
||||
struct Genode::Vm_state : Genode::Cpu_state_modes
|
||||
{
|
||||
Genode::uint64_t vttbr;
|
||||
Genode::uint32_t sctrl;
|
||||
Genode::uint32_t hsr;
|
||||
Genode::uint32_t hpfar;
|
||||
Genode::uint32_t hdfar;
|
||||
Genode::uint32_t hifar;
|
||||
Genode::uint32_t ttbcr;
|
||||
Genode::uint32_t ttbr0;
|
||||
Genode::uint32_t ttbr1;
|
||||
Genode::uint32_t prrr;
|
||||
Genode::uint32_t nmrr;
|
||||
Genode::uint32_t dacr;
|
||||
Genode::uint32_t dfsr;
|
||||
Genode::uint32_t ifsr;
|
||||
Genode::uint32_t adfsr;
|
||||
Genode::uint32_t aifsr;
|
||||
Genode::uint32_t dfar;
|
||||
Genode::uint32_t ifar;
|
||||
Genode::uint32_t cidr;
|
||||
Genode::uint32_t tls1;
|
||||
Genode::uint32_t tls2;
|
||||
Genode::uint32_t tls3;
|
||||
Genode::uint32_t cpacr;
|
||||
Genode::uint64_t vttbr { 0 };
|
||||
Genode::uint32_t sctrl { 0 };
|
||||
Genode::uint32_t esr_el2 { 0 };
|
||||
Genode::uint32_t hpfar_el2 { 0 };
|
||||
Genode::uint32_t far_el2 { 0 };
|
||||
Genode::uint32_t hifar { 0 };
|
||||
Genode::uint32_t ttbcr { 0 };
|
||||
Genode::uint32_t ttbr0 { 0 };
|
||||
Genode::uint32_t ttbr1 { 0 };
|
||||
Genode::uint32_t prrr { 0 };
|
||||
Genode::uint32_t nmrr { 0 };
|
||||
Genode::uint32_t dacr { 0 };
|
||||
Genode::uint32_t dfsr { 0 };
|
||||
Genode::uint32_t ifsr { 0 };
|
||||
Genode::uint32_t adfsr { 0 };
|
||||
Genode::uint32_t aifsr { 0 };
|
||||
Genode::uint32_t dfar { 0 };
|
||||
Genode::uint32_t ifar { 0 };
|
||||
Genode::uint32_t cidr { 0 };
|
||||
Genode::uint32_t tls1 { 0 };
|
||||
Genode::uint32_t tls2 { 0 };
|
||||
Genode::uint32_t tls3 { 0 };
|
||||
Genode::uint32_t cpacr { 0 };
|
||||
|
||||
/**
|
||||
* Fpu registers
|
||||
*/
|
||||
Genode::uint32_t fpscr;
|
||||
Genode::uint64_t d0_d31[32];
|
||||
Genode::uint32_t fpscr { 0 };
|
||||
Genode::uint64_t d0_d31[32]{ 0 };
|
||||
|
||||
/**
|
||||
* Timer related registers
|
||||
*/
|
||||
|
||||
Genode::uint32_t timer_ctrl;
|
||||
Genode::uint32_t timer_val;
|
||||
bool timer_irq;
|
||||
|
||||
struct Timer {
|
||||
Genode::uint64_t offset { 0 };
|
||||
Genode::uint64_t compare { 0 };
|
||||
Genode::uint32_t control { 0 };
|
||||
Genode::uint32_t kcontrol { 0 };
|
||||
bool irq { false };
|
||||
} timer {};
|
||||
|
||||
/**
|
||||
* PIC related registers
|
||||
* Interrupt related values
|
||||
*/
|
||||
|
||||
enum { NR_IRQ = 4 };
|
||||
|
||||
Genode::uint32_t gic_hcr;
|
||||
Genode::uint32_t gic_vmcr;
|
||||
Genode::uint32_t gic_misr;
|
||||
Genode::uint32_t gic_apr;
|
||||
Genode::uint32_t gic_eisr;
|
||||
Genode::uint32_t gic_elrsr0;
|
||||
Genode::uint32_t gic_lr[4];
|
||||
unsigned gic_irq;
|
||||
struct Pic
|
||||
{
|
||||
unsigned last_irq { 1023 };
|
||||
unsigned virtual_irq { 1023 };
|
||||
} irqs {};
|
||||
};
|
||||
|
||||
#endif /* _INCLUDE__SPEC__ARNDALE__VM_STATE_H_ */
|
||||
|
|
|
@ -7,5 +7,6 @@ SRC_CC += raw_write_string.cc
|
|||
SRC_CC += signal_receiver.cc
|
||||
SRC_CC += stack_area_addr.cc
|
||||
SRC_CC += native_utcb.cc
|
||||
SRC_CC += platform.cc
|
||||
|
||||
LIBS += startup-hw base-hw-common cxx timeout-hw
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
HW_DIR = $(BASE_DIR)/../base-hw
|
||||
TMP := $(call select_from_repositories,lib/mk/bootstrap-hw.inc)
|
||||
BASE_HW_DIR := $(TMP:%lib/mk/bootstrap-hw.inc=%)
|
||||
|
||||
LIBS = cxx
|
||||
|
||||
|
@ -23,8 +24,8 @@ SRC_CC += lib/base/sleep.cc
|
|||
SRC_CC += lib/base/sliced_heap.cc
|
||||
SRC_CC += lib/startup/_main.cc
|
||||
|
||||
INC_DIR += $(HW_DIR)/src/bootstrap
|
||||
INC_DIR += $(HW_DIR)/src/include
|
||||
INC_DIR += $(BASE_HW_DIR)/src/bootstrap
|
||||
INC_DIR += $(BASE_HW_DIR)/src/include
|
||||
INC_DIR += $(BASE_DIR)/src/include
|
||||
INC_DIR += $(BASE_DIR)/src/core/include # for boot_modules.h only
|
||||
|
||||
|
@ -32,10 +33,10 @@ INC_DIR += $(BASE_DIR)/src/core/include # for boot_modules.h only
|
|||
NR_OF_CPUS ?= 1
|
||||
CC_OPT += -Wa,--defsym -Wa,NR_OF_CPUS=$(NR_OF_CPUS) -DNR_OF_CPUS=$(NR_OF_CPUS)
|
||||
|
||||
vpath base/% $(HW_DIR)/src
|
||||
vpath bootstrap/% $(HW_DIR)/src
|
||||
vpath hw/% $(HW_DIR)/src/lib
|
||||
vpath lib/base/% $(HW_DIR)/src
|
||||
vpath lib/muen/% $(HW_DIR)/src
|
||||
vpath base/% $(BASE_HW_DIR)/src
|
||||
vpath bootstrap/% $(BASE_HW_DIR)/src
|
||||
vpath hw/% $(BASE_HW_DIR)/src/lib
|
||||
vpath lib/base/% $(BASE_HW_DIR)/src
|
||||
vpath lib/muen/% $(BASE_HW_DIR)/src
|
||||
vpath lib/base/% $(BASE_DIR)/src
|
||||
vpath lib/startup/% $(BASE_DIR)/src
|
||||
|
|
|
@ -4,12 +4,15 @@
|
|||
# \date 2011-12-16
|
||||
#
|
||||
|
||||
TMP := $(call select_from_repositories,lib/mk/core-hw.inc)
|
||||
BASE_HW_DIR := $(TMP:%lib/mk/core-hw.inc=%)
|
||||
|
||||
LIBS += base-hw-common cxx
|
||||
|
||||
# add include paths
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/core
|
||||
INC_DIR += $(BASE_HW_DIR)/src/core
|
||||
INC_DIR += $(BASE_DIR)/src/core/include
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/include
|
||||
INC_DIR += $(BASE_HW_DIR)/src/include
|
||||
INC_DIR += $(BASE_DIR)/src/include
|
||||
|
||||
# add C++ sources
|
||||
|
@ -52,7 +55,6 @@ SRC_CC += pager.cc
|
|||
SRC_CC += _main.cc
|
||||
SRC_CC += kernel/cpu.cc
|
||||
SRC_CC += kernel/cpu_scheduler.cc
|
||||
SRC_CC += kernel/double_list.cc
|
||||
SRC_CC += kernel/init.cc
|
||||
SRC_CC += kernel/ipc_node.cc
|
||||
SRC_CC += kernel/irq.cc
|
||||
|
@ -74,6 +76,6 @@ NR_OF_CPUS ?= 1
|
|||
CC_OPT += -Wa,--defsym -Wa,NR_OF_CPUS=$(NR_OF_CPUS) -DNR_OF_CPUS=$(NR_OF_CPUS)
|
||||
|
||||
# declare source locations
|
||||
vpath % $(BASE_DIR)/../base-hw/src/core
|
||||
vpath % $(BASE_HW_DIR)/src/core
|
||||
vpath % $(BASE_DIR)/src/core
|
||||
vpath % $(BASE_DIR)/src/lib/startup
|
||||
|
|
|
@ -4,8 +4,11 @@
|
|||
# \date 2011-12-16
|
||||
#
|
||||
|
||||
TMP := $(call select_from_repositories,lib/mk/core-hw.inc)
|
||||
BASE_HW_DIR := $(TMP:%lib/mk/core-hw.inc=%)
|
||||
|
||||
# add include paths
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/core/spec/arm
|
||||
INC_DIR += $(BASE_HW_DIR)/src/core/spec/arm
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/32bit/memory_map.cc
|
||||
|
@ -17,9 +20,9 @@ SRC_CC += spec/arm/platform_support.cc
|
|||
|
||||
# add assembly sources
|
||||
SRC_S += spec/arm/crt0.s
|
||||
SRC_S += spec/arm/exception_vector.s
|
||||
SRC_S += spec/arm/exception_vector.S
|
||||
|
||||
vpath spec/32bit/memory_map.cc $(BASE_DIR)/../base-hw/src/lib/hw
|
||||
vpath spec/32bit/memory_map.cc $(BASE_HW_DIR)/src/lib/hw
|
||||
|
||||
# include less specific configuration
|
||||
include $(BASE_DIR)/../base-hw/lib/mk/core-hw.inc
|
||||
include $(BASE_HW_DIR)/lib/mk/core-hw.inc
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/rpi
|
||||
INC_DIR += $(REP_DIR)/src/bootstrap/spec/rpi
|
||||
|
||||
SRC_CC += bootstrap/spec/rpi/platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v6_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
SRC_S += bootstrap/spec/arm/crt0.s
|
||||
|
||||
include $(BASE_DIR)/../base-hw/lib/mk/bootstrap-hw.inc
|
||||
include $(REP_DIR)/lib/mk/bootstrap-hw.inc
|
||||
|
|
|
@ -5,8 +5,11 @@
|
|||
# \date 2012-10-04
|
||||
#
|
||||
|
||||
TMP := $(call select_from_repositories,lib/mk/core-hw.inc)
|
||||
BASE_HW_DIR := $(TMP:%lib/mk/core-hw.inc=%)
|
||||
|
||||
# add include paths
|
||||
INC_DIR += $(BASE_DIR)/../base-hw/src/core/spec/arm_v6
|
||||
INC_DIR += $(BASE_HW_DIR)/src/core/spec/arm_v6
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/arm_v6/perf_counter.cc
|
||||
|
@ -17,4 +20,4 @@ SRC_CC += kernel/lock.cc
|
|||
SRC_S += spec/arm/vfpv2.s
|
||||
|
||||
# include less specific configuration
|
||||
include $(BASE_DIR)/../base-hw/lib/mk/spec/arm/core-hw.inc
|
||||
include $(BASE_HW_DIR)/lib/mk/spec/arm/core-hw.inc
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/arndale
|
||||
|
||||
SRC_CC += bootstrap/spec/arm/cortex_a15_cpu.cc
|
||||
SRC_CC += bootstrap/spec/arm/gicv2.cc
|
||||
SRC_CC += bootstrap/spec/arndale/platform.cc
|
||||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
SRC_S += bootstrap/spec/arm/crt0.s
|
||||
|
||||
NR_OF_CPUS = 2
|
||||
|
||||
#
|
||||
# we need more specific compiler hints for some 'special' assembly code
|
||||
# override -march=armv7-a because it conflicts with -mcpu=cortex-a15
|
||||
#
|
||||
CC_MARCH = -mcpu=cortex-a15 -mfpu=vfpv3 -mfloat-abi=softfp
|
||||
|
||||
include $(REP_DIR)/lib/mk/bootstrap-hw.inc
|
|
@ -1,4 +1,7 @@
|
|||
INC_DIR += $(BASE_DIR)/../base-hw/src/bootstrap/spec/imx53_qsb
|
||||
TMP := $(call select_from_repositories,lib/mk/core-hw.inc)
|
||||
BASE_HW_DIR := $(TMP:%lib/mk/core-hw.inc=%)
|
||||
|
||||
INC_DIR += $(BASE_HW_DIR)/src/bootstrap/spec/imx53_qsb
|
||||
|
||||
SRC_S += bootstrap/spec/arm/crt0.s
|
||||
|
||||
|
@ -8,4 +11,4 @@ SRC_CC += bootstrap/spec/arm/imx_tzic.cc
|
|||
SRC_CC += bootstrap/spec/arm/arm_v7_cpu.cc
|
||||
SRC_CC += hw/spec/32bit/memory_map.cc
|
||||
|
||||
include $(BASE_DIR)/../base-hw/lib/mk/bootstrap-hw.inc
|
||||
include $(BASE_HW_DIR)/lib/mk/bootstrap-hw.inc
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
SRC_CC += bootstrap/spec/imx53_qsb/platform.cc
|
||||
|
||||
include $(BASE_DIR)/../base-hw/lib/mk/spec/arm_v7/bootstrap-hw-imx53_qsb.inc
|
||||
include $(REP_DIR)/lib/mk/spec/arm_v7/bootstrap-hw-imx53_qsb.inc
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue