prepare-app runs in stage1, so it knows how to handle dynamic
/dev/console.
It does not change diagexec so it does not break rkt enter.
Bind mount individual /dev entries instead of bind mounting the /dev
directory so rkt run --volume /dev/sda6 (performed in stage0) should
still work.
Do not use a bunch of systemd mount units because they don't create
nonexistent target files. See:
http://lists.freedesktop.org/archives/systemd-devel/2015-February/028657.html
We might revisit this option if systemd mount units automatically create
the nonexistent target files.
Avoid systemd option PrivateDevices to avoid shadowing additional bind
mounts passed with --volume.
Take two at getting the spec vendored into Rocket with Godep.
Since actool is used during the construction of the stage1.aci, it
really needs to be vendored too to prevent any unexpected divergence
between whatever version the user happens to have in their PATH. Thus,
we introduce a silly dummy package (stage1/dummy.go) to coerce Godep
into vendoring actool. This also requires a slight rearrangement of the
appc repo, moving some functionality from actool itself into the aci
package.
This change places per-app environment files in stage1/rootfs/rkt/env/$id
The stage1 systemd service files no longer contain Environment directives,
instead they simply supply the env file path to diagexec.
`rkt enter` also uses diagexec and needs to enter the same enviroment of the
app being entered. This commit also modifies the stage1 /enter to supply the
env file to its diagexec invocation, giving `rkt enter` an environment
consistent with the app's.
One may now specify an alternative stage1 in a style like run and fetch:
rkt run --stage1-image foo.com/rocket/stage1 app
--stage1-image defaults to "stage1.aci" within the same directory as the rkt
binary. This is discovered at runtime via "/proc/self/exe"; as long as the rkt
executable and stage1.aci share a directory it should "just work" regardless of
the directory's location and where rkt is executed from.
* Move stage1/*.go to stage1/init/
* Split stage1/mkrootfs.sh's logical components into subdirs of
stage1/rootfs:
- Deriving tree from CoreOS image and caching: rootfs/usr
* Cache management in cache.sh
* File extraction and picking in mkbase.sh
* File inclusions split under usr/manifest.d
- Fakesdboot: rootfs/shim/
* Renamed to 'shim' since we've gone past just tricking nspawn
- Root compositing and aggregation of odds and ends: rootfs/aggregate
* Introduction of Makefiles for every component and a simple recursive
parallel-capable make for the rootfs tip.
* Update toplevel build script to invoke make on stage1/rootfs and find
init sources in stage1/init, .gitignore additions as well.
* Removed stage1/mkrootfs.sh
Since the image cache has moved there will be an image download on first build
in the new arrangement. The caching has also been improved to handle CoreOS
image revision changes by naming the cached signature with a hash of the URL.