-
Couldn't load subscription status.
- Fork 2
gandaman/GMS
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
GENIVI MINIMAL SYSTEM
*** Warning, this is hardly alpha status !
*** Do not expect the executable part to be ready (you can browse
*** around do "ls" and start the dlt-daemon but that's about it
*** There are missing runtime libraries and there's not even D-Bus so
*** don't expect things to actually work.
*** However compilation/installation can be tested and debugged as of now.
*** It has only been tested on Ubuntu 12.10 and probably
*** includes some Ubuntuisms... You have been warned.
INTRO
This is a test project for GENIVI software. It is not useable as a basis for
an in-vehicle / embedded system. It is mostly a testbed for compilation and
configuration issues, and will be executable to the extent of running some
basic tests.
Therefore: (design decisions)
- No cross compilation
- No fancy frameworks : whatever OE/Yocto is, this is not, (for better
and for worse)
- Goals:
- Stay lean and simple
- Solve things straight-on and with minimal fuss
- Not Goals:
- Doing things "the right way"
- future-proofing, portability
- even readability... but maybe later some work on that
- Might get out of date (submodules are locked to a commit until a
component is explicitly upgraded)
- Might break any time
- ... but can probably be quickly fixed too
- ... and shouldn't break spontaneously (submodules are locked to a commit)
- Execution is done directly on your machine in a chrooted shell
Consequences:
- it will never support any "embedded" features e.g. layermanager etc.
- it will probably not prioritize graphical appl., browsers etc.
- no booting of kernel/init, at least now (see GLASS ELEVATOR)
- is useful for testing infrastructure components primarily.
- On the other hand it will also not clobber your host standard paths
with the built components.
- and doesn't require root for any build/install steps (only
starting a chroot)
FEATURES
- A single project git tree that pulls in components as submodules
(non-git component has a download script instead)
- Small and simple Bourne-shell build scripts, one per component
- Separate patch directory, as opposed to cloning and changing components
N.B.: Patching is necessary to make this build even
work(!) So please look at these and either bring upstream or tell
me I'm stupid. (There are only 2 options here...)
- Busybox commandline, so that you have a shell, can move around and try
stuff. Configure it at build time - by default it uses defconfig which
includes most common tools.
INSTALL/HOWTO
- Clone the GMS project
- Install host build deps that you know of (gcc/g++, build_essential,
glib, gio, libgcrypt, dbus etc.)
There are quite a few others, you might find info in the component docs.
- Run scripts/init.sh to pull source code into submodules and apply
patches
- Then try scripts/build-xxx one by one, or build-all.sh
Look at "build-all.sh" to see the required build order, or you will have
unnecessary failures because of that.
- Look at the failures and install missing build deps. Repeat.
- Run scripts/start_chroot.sh (also done by build-all).
TODOs
- Finish it. Make it useable. Actually try the binaries to see what runtime
deps are missing... So far very little runs. There are missing libraries
etc...
- Add more GENIVI components
- Implement an application that uses Lifecycle
- Implement an application that uses Persistence
- Configure and use a node state machine
- Make use of systemd if possible even if it is not the init process
- Test build system on a clean host and document needed build deps
- Maybe put a copy of Itzam code in github to get uniform handling
(or leach off Baserock repos that do exactly that ;-) But it works
for now.
GLASS ELEVATOR (i.e. "wish list" features that may never see the light of day)
- Automatic download of all host build deps
- Support multiple host distros out of the box
- Shrink target, live up to the Minimal name. (Some components install docs
and such useless crap in the target root fs. This gives embedded engineers
nightmares)
- Submit GMS as a compliant distro, because if it passes it surely identifies
something wrong in the compliance process ;-)
- Run using LXC instead of chroot. (But in its current state I think there
would be no practical difference)
- Add kernel+systemd init and run virtualized with KVM tool or in QEMU.
- AF_BUS, if previous point is ever done
BUGS AND SUCH
- Lots, in the form of things that are not finished and simply
have not even been tried yet. Most obviously, D-Bus not yet
running.
- If submodules don't init and fetch fully on the first try, the git tree can
be in a very confus{ed,ing} state that is tough to get out of. But that's
not my bug, imho. Start clean if you run into this.
- Untested on other host distros. Probably has some Ubuntuisms...
LICENSE
Components have their respective licenses and copyright holders as
indicated in their source trees.
Scripts and additions, for now:
(C) 2013 Gunnar Andersson
Creative Commons Attribution Sharealike 3.0
(http://creativecommons.org/licenses/by-sa/3.0/)
About
"GENIVI Minimal System" : A simple testbench for GENIVI software
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published