This script builds images for Foresight Linux and Foresight Linux derivatives. Inasmuch as it is tested, it is tested only on Foresight Linux and is specific to Foresight Linux. Even there, it is very incomplete.
-
raw filesystem images
-
raw hard drive images, with either DOS or GPT partitions tables
-
raw images configured to be built into AMIs for EC2
When building any of those images, it can also optionally write out a tarball of the contents of the image.
You can use qemu-img to convert the hard drive images to other image types.
-
It can lay down an archive of contents that you want in the system image before Conary starts. (This can be used for /etc/passwd and /etc/group, to keep user ids in sync between systems. See the included
authpre
script for creating these passwd and group files.) -
It can lay down archives of content after installing with Conary. (This can be used for things like pre-populated home directories that might conveniently be an image but should not be under Conary control, or for Conary repository permissions that should apply to the image but not be packaged in a repository.)
-
It can run arbitrary commands within the image after installation. (For example, this might modify a configuration file or run chkconfig to change whether an init script starts by default.)
-
It allows you to choose whether to reset the root password in the image.
-
It allows you to choose the default initlevel.
-
If you are building multiple images from the same model, you can give it a directory in which to store model-cache files that allow Conary to get started building additional images quicker.
It has many limitations, some of which are known. Some of the known limitations are documented in issues at github
flimage requires root permissions to run.
Run flimage --help
for a summary of the command-line arguments.
To build 32-bit images on a 64-bit system, use setarch:
setarch i686 flimage ...
You will need either to use a system model with an explicit 32-bit flavor, or a system model that has no explicit flavor and depends on the system flavor.
The imagebuilder
Python module included does not present a stable
API. It may be modified at any time.
Filing issues at github is a contribution.
Helping users use this software is a contribution. Discussion on using this software should take place on the [email protected] mailing list
Code contributions are accepted under the terms of the Apache License, version 2. Where the license requires that "You must cause any modified files to carry prominent notices stating that You changed the files", please honor that request with complete and correct author information in Git commits, rather than in the content of the file, in order to avoid merge conflicts.
Code contributions should be submitted via a Git pull request. This may be a Github pull request, or may be an email containing a reference to a public Git repository.
This project follows the Linux kernel Developer's Certificate of Origin 1.1 contributor agreement. As documented in the Linux Kernel Documentation/SubmittingPatches document: if you can certify the below:
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
then you just add a line saying
Signed-off-by: Random J Developer <[email protected]>
using your real name (sorry, no pseudonyms or anonymous contributions.)