Commit Graph

52 Commits

Author SHA1 Message Date
Julio Montes
52d015e283 builder: support proxy in distros based on yum or dnf
proxy server must be specified in configuration file
of the package manager, /etc/yum.conf for yum or
/etc/dnf/dnf.conf for dnf

fixes #123

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-06-26 10:17:07 -05:00
Penny Zheng
0451db9f4e rootfs-builder: Support building centos-rootfs on Arm64
For now, mirrorlist doesn't support non-x86_64 arch, so we need
create baseurl for arm64. Furthermore, we also need to offer
arm64-specific gpg keys along with the regular key.

Fixes: #111

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-06-13 07:21:17 +00:00
Penny Zheng
e86380aab7 rootfs: add '-rm' to delete intermediate container
If we set env USE_DOCKER true, we will use container as development
environment. After docker run command, this temporary container
would be no use. we could add -rm flag to automatically delete
intermediate container.

Fixes: #115

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-06-12 08:16:56 +00:00
Liu Changcheng
a81e771573 rootfs: correct rootfs script deference var value
shell usage function use wrong way to get AGENT_BIN value

Fixes #103

Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
2018-06-06 14:05:03 +08:00
James O. D. Hunt
c1d22f98f6 rootfs: Default to host architecture
Don't default to a hard-coded Intel architecture - default to the host
architecture.

This requires the `coreutils` package to be installed both inside each
docker image (for `USE_DOCKER=true`) and in the host environments.

Added missing SPDX headers to `Dockerfile` templates to pacify the CI checks.

Fixes #100.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-25 10:09:28 +01:00
James O. D. Hunt
aca45c5820 image: Require systemd
Building an image requires systemd to be installed in the rootfs as the
init daemon, so assert that systemd is available.

Updated tests so that alpine is only tested as an initrd (it cannot be
an image as it doesn't use systemd).

Added warning note about alpine to the docs.

Fixes #98.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-05-18 13:01:08 +01:00
Stefan Hajnoczi
fd8d9bdc2c rootfs: copy kernel modules to correct location
Commit b8f1a68834 ("rootfs: Simplify
code") introduced a variable called destdir but accidentally used
dest_dir with cp(1) instead.  This causes kernel modules to be copied to
the wrong location.

Rename the variable to dest_dir to be consistent with module_dir and
rootfs_dir variables used in this function.

Fixes: #94
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-05-16 17:41:29 +01:00
Penny Zheng
7732e0407a rootfs: Fix incorrect getopts call
The `getopts` call in the rootfs builder was incorrect
meaning the `-a $agent_version` option would never have worked.

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-05-16 03:14:35 +00:00
Penny Zheng
f7f267213c rootfs: Add "${AGENT_VERSION}"/"-a" functionality
For now, the flag "-a" or relevant shell variant "${AGENT_VERSION}"
hasn't been used, only defined. Using 'git checkout' command to go
into requested branch.

Fixes: #90

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-05-16 03:14:25 +00:00
Penny Zheng
c3ac7180f8 rootfs: Add support for multiple GOPATH directories
Current rootfs.sh fails when GOPATH is a set of directories.We
simply choose the first one as the working directory, as go get
only works against the first item in the GOPATH.

Fixes: #87

Signed-off-by: Penny Zheng <penny.zheng@arm.com>
2018-04-27 02:44:43 +00:00
James O. D. Hunt
f90f65247e rootfs: Create a summary file inside the image
Create a YAML metadata file inside the rootfs image
containing information about the environment:

```
/var/lib/osbuilder/osbuilder.yaml
```

Example contents:

```
---
osbuilder:
  url: "https://github.com/kata-containers/osbuilder"
  version: "unknown"
rootfs-creation-time: "2018-04-19T16:19:30.254610305+0000Z"
description: "osbuilder rootfs"
file-format-version: "0.0.1"
architecture: "x86_64"
base-distro:
  name: "Centos"
  version: "7"
  packages:
    - "iptables"
    - "systemd"
agent:
  url: "https://github.com/kata-containers/agent"
  name: "kata-agent"
  version: "0.0.1-2ec0b9593845b9a5e0eab5a85b20d74c35a2ca52-dirty"
  agent-is-init-daemon: "no"
```

This change adds a new `-o` option to `rootfs.sh` for
specifying the version of osbuilder to the rootfs builder.

Fixes #35.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 11:46:55 +01:00
James O. D. Hunt
5b6ced536b rootfs/clearlinux: Resolve version
If the Clear Linux `OS_VERSION` is specified as `latest`,
resolve to an actual release number.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
a2a65621a1 rootfs: Simplify code
Use more variables to avoid duplication and make the code cleaner.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
b8f1a68834 rootfs: Simplify code
Use a variable in `copy_kernel_modules()` to avoid the duplicated
string.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
f09d4c4626 rootfs: Check function parameters
Add some checks to ensure function parameters are set.

This fixes a bug `copy_kernel_modules()` where a test would never
fail due to missing dollars.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
2751de0768 rootfs: Reformat functions
For consistency with the rest of the code, put the opening brace on the
line below the function name.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
48b1ddabed rootfs: Fix comments
Improve a few comments and fix a typo.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:27 +01:00
James O. D. Hunt
019a80f304 refactor: Move more functions to script library
Moved the display functions to the script library to avoid duplication.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-20 08:29:23 +01:00
James O. D. Hunt
f3e89d38a9 refactor: Simplify enabling debug
Simplify the logic to enable debug and also enable debug as early as
possible.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-04-19 15:55:34 +01:00
Erick Cardona
52022701db rootfs-builder: Refactor rootfs.sh
This patch introduces a bash library (scripts/lib.sh) that concentrates
common functions. This also enhances future additions of other OSes, making
it more simple. Also, new variables were introduced in each distro config.sh
in order to parameterise the creation of package manager config (dnf/yum, in this case).
A fix to the resulting rootfs directory name (include OS name) is also fixed in this
patch.

Fixes #39
Fixes #34

Signed-off-by: Erick Cardona <erick.cardona.ruiz@intel.com>
2018-03-26 16:34:11 -06:00
Julio Montes
d469cffc7a Merge pull request #75 from harche/env_args_docker
Pass EXTRA_PKGS var to docker to build rootfs
2018-03-23 08:40:13 -05:00
Harshal Patil
2972a33535 rootfs: Install the right golang binaries for ppc64le
On ppc64le golang binaries should be pulled correctly

Fixes #72

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-03-23 14:06:11 +05:30
Harshal Patil
7043e19671 rootfs: Pass EXTRA_PKGS var to docker to build rootfs
When docker is used for building rootfs the
EXTRA_PKGS should be passed as env var

Fixes #74

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-03-23 14:02:13 +05:30
Nirmoy Das
b21db8fc79 makefile: fix makefile to find Dockerfile.template
template rootfs creation fails:

$make -f template/Makefile ROOTFS_BASE_NAME=opensuse
<....>
sed: can't read Dockerfile.template: No such file or directory

make is unable to find Dockerfile.template, this patch fixes this.

Fixes #67.

Signed-off-by: Nirmoy Das <ndas@suse.de>
2018-02-26 11:24:49 +01:00
Julio Montes
cd3fbcf864 rootfs-builder: ARM64 support
Install the right version of golang depending of the host architecture

fixes #60

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-02-08 19:35:58 -06:00
Peng Tao
c8403836c0 rootfs: add alpine rootfs support
Fixes: #52
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-05 17:18:52 +08:00
Peng Tao
de6e4dc93f builder: fix agent binary path
kata agent is installed in `${ROOTFS}/usr/bin/` rather than `${ROOTFS}/bin/`.
It just happended to work because `bin` is a symlink to `usr/bin`, which
might not be true in some distros. So do not rely on it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-05 17:18:52 +08:00
Peng Tao
f503e66dd7 doc: add initd term to top level readme
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-02 10:01:22 +08:00
Peng Tao
9680f08ebf rootfs: support adding optional kernel modules
Caller of rootfs.sh can define `KERNEL_MODULES_DIR` as a kernel
module directory and then the directory will be copied to
`/lib/modules/` of the created rootfs. This allows additional
kernel modules to be put into rootfs image and initrd image.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 23:27:40 +08:00
Peng Tao
7245b21206 rootfs: document about AGENT_INIT
Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 23:27:40 +08:00
Peng Tao
2a2a79aa87 centos: clean up yum caches after installing packages
So that we can get smaller rootfs.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 23:27:40 +08:00
Peng Tao
97c7e4b7bf config.sh: do not install systemd if agent is init
When agent is used as init process, there is no need to install
systemd.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-02-01 22:58:57 +08:00
Peng Tao
94e7b1da4f rootfs: allow to use agent as init process
Add AGENT_INIT env to make it configurable.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-01-31 00:59:29 +08:00
Jose Carlos Venegas Munoz
45d4e5fb62 travis: Wait more than 10 min
Use travis configuration to wait more than 10 min

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-26 11:04:57 -06:00
Jose Carlos Venegas Munoz
612754fd20 rootfs: Add support to create dockerfiles based on templates
To simplify maintaince, create dockerfiles based on templates.

This way when golang version is updated it will be done in one place
versions.txt.

This also allow to allways intall the same version of golang in any
dockerfile.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-25 09:02:51 -06:00
Jose Carlos Venegas Munoz
6dcaef7cf8 fedora: use OS_VERSION instead of host version
Use OS_VERSION provided by user configuration and not use host version.

Also add retries before fail on a request.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-22 14:58:10 -06:00
Jose Carlos Venegas Munoz
a617dd892a dockerfiles: Add golang to centos anda euleros
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-22 14:58:10 -06:00
Harshal Patil
525ae6aee7 scripts: Arch dependant repo url for fedora
Changed rootfs-builder/fedora/rootfs_lib.sh to select
repo URL based on arch.

Fixes #21.

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-01-22 10:15:33 +05:30
Jose Carlos Venegas Munoz
052b8af497 Merge pull request #29 from jcvenegas/travis
ci: Add travis basic testing
2018-01-19 13:00:07 -06:00
Jose Carlos Venegas Munoz
853ef22eef rootfs: Change realpath for readlink
readlink  is more common than realpath

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-01-19 12:51:07 -06:00
Jose Carlos Venegas Munoz
25d6ed98a7 Merge pull request #27 from jodh-intel/doc-fixes
docs: General cleanup
2018-01-18 23:45:04 -06:00
James O. D. Hunt
57617ea4af docs: General cleanup
Rework the docs to make them simpler and more consistent. Also added of
contents and corrected a few mistakes.

Fixes #26.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-18 09:36:47 +00:00
James O. D. Hunt
5484928ac6 Merge pull request #19 from harche/gopath_fix
Exit if GOPATH is not set
2018-01-16 11:36:57 +00:00
Liang Chenye
d46348a348 rootfs: Add rootfs based on EulerOS 2
Fixes #17.

Signed-off-by: Liang Chenye <liangchenye@huawei.com>
2018-01-15 20:58:50 +08:00
Harshal Patil
8086e5b7a6 scripts: Exit if GOPATH is not set
Changed the `rootfs.sh` script to exit with an error if `GOPATH` isn't set
in the environment.

Fixes #20.

Signed-off-by: Harshal Patil <harshal.patil@in.ibm.com>
2018-01-15 15:47:49 +05:30
Jose Carlos Venegas Munoz
b284e42aef rootfs: Add docker support
Allow users build a rootfs using docker, this will make easy if they
dont have dependencies need to pull packages from a distro.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:32:01 -06:00
Jose Carlos Venegas Munoz
48992d3fdf rootfs: Add README
Add docs about how rootfs generation.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00
Jose Carlos Venegas Munoz
206db3d585 rootfs: Add template files for new distros
Add template to add new distros.

Added a Makefile to initialize new environment.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00
Jose Carlos Venegas Munoz
75a9d5eab7 rootfs: Add rootfs based on CentOS 7
Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00
Jose Carlos Venegas Munoz
5b8478c4cf rootfs: Add script for Fedora base OS
Add scirpts to build a rootfs based on Fedora.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2017-12-06 13:31:24 -06:00