Commit Graph

40 Commits

Author SHA1 Message Date
James O. D. Hunt
91c454da09 Merge pull request #1168 from bryteise/hypervisor-cmd-defaults
Makefile: Provide default hypervisor CMD settings
2019-01-30 11:36:32 +00:00
William Douglas
a02c39efd0 Makefile: Set arch regardless of GOPATH state
Architecture-dependent settings were not being populated when GOPATH
was set. This change ensures they are always set.

Fixes #1169

Signed-off-by: William Douglas <william.douglas@intel.com>
2019-01-24 09:20:21 -08:00
Jose Carlos Venegas Munoz
718488b7b5 makefile: honor DESDIR on install
- Do symlink to a relative path to hypervisor config.
- Create symlink on DESTDIR

Fixes: #1161

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2019-01-23 00:27:55 -06:00
James O. D. Hunt
6c3e0a9c06 build: Add support for building firecracker hypervisor
Support building with `make HYPERVISOR=firecracker`.

Notes:

- Firecracker is currently only supported on x86_64, hence the
  architecture check.

- The template file `cli/config/configuration-fc.toml.in` is based
  on `cli/config/configuration.toml.in`.

Fixes #1105.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-14 16:55:01 +00:00
James O. D. Hunt
6fcb76cb37 build: Handle qemu explicitly
Improve the build to:

- Encapsulate the qemu configuration.
- Validate the chosen hypervisor.
- Display hypervisor details for `make help`.

This lays the groundwork to build configurations for multiple
hypervisors.

Notes:

- Variables that are hypervisor specific have now been suffixed with `_QEMU`.

- `make install` now installs `configuration-qemu.toml`.

  To maintain compatibility with existing installations, a symbolic link
  to this file called `configuration.toml` is created.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-14 16:54:57 +00:00
James O. D. Hunt
933b16fc61 build: Improve quiet install
Move the quiet prefix from the `INSTALL_EXEC` recipe and use it at the
call sites. This makes the code robust when calling the recipe in a
`$(foreach ...)` loop.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-01-14 10:48:38 +00:00
Nitesh Konkar
c2c9c844e2 virtcontainers: Conditionally pass seccomp profile
Pass Seccomp profile to the agent only if
the configuration.toml allows it to be passed
and the agent/image is seccomp capable.

Fixes: #688

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2019-01-08 10:22:23 +05:30
Hui Zhu
25358444ad make: Add "GOPATH not set"
Most of the projects, they can be built with "make".  After that,
"sudo make install" can install the application.
It is not work for kata-runtime because kata-runtime's make must work
with golang in the environment that default sudo cannot supply it.
But "make install" doesn't need golang.

So add "GOPATH not set" to handle the issue.

Fixes: #1008

Signed-off-by: Hui Zhu <teawater@hyper.sh>
2018-12-13 13:25:43 +08:00
fupan
02f8b29837 containerd-shim-kata-v2: add building of shimv2 into Makefile
Add the Makefile target of building shimv2.

Fixes: #485

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-28 14:32:25 +08:00
fupan
f0cb0c7ef7 cli: refactor to align with katautils package
refactor the cli codes which can be shared with shimv2.

Signed-off-by: fupan <lifupan@gmail.com>
Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-11-27 17:17:31 +08:00
Marco Vedovati
ab43e2accb make: add ability to skip go version check
Add the ability to skip checking the go version, by passing to make the
variable SKIP_GO_VERSION_CHECK=1

Fixes: #916

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-16 17:33:49 +01:00
fupan
842a00a5b6 cli: refactor the config into a separated package
Refactor the config related codes into a separated
package which can be shared with other cli programs
such as kata's shimv2.

Fixes: #787
Fixes: #714

Signed-off-by: fupan <lifupan@gmail.com>
2018-11-08 09:43:29 +08:00
zhangwei_cs
d895cd0f2d Merge pull request #806 from grahamwhaley/20181002_golang_110
build: check golang version meets min req.
2018-11-06 16:11:41 +08:00
Marco Vedovati
658bdb1ecb runtime,netmon: build as Position-Independent-Executable
Build {runtime,netmon} as Position-Independent-Executable (PIE) for improved
security and compliancy with distros packaging guidelines.

Fixes: #875

Signed-off-by: Marco Vedovati <mvedovati@suse.com>
2018-11-02 16:23:17 +01:00
Graham Whaley
95f4fdb603 build: check golang version meets min req.
Check that the system golang version is new enough to build with
according to the data from the `versions.yaml` file.

Update the verions in the versions.yaml accordingly, and add a note
describing what the 'newest-version' item represents.
Note, we only do a minimum requirement check, and are not checking
against the 'newest-version' info from the yaml.

Fixes: #148

Inspired-by: Wei Zhang <zhangwei555@huawei.com>
Idea-by: James O. D. Hunt <james.o.hunt@intel.com>
Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-10-30 15:45:05 +00:00
Felix Abecassis
33abb3ecf8 cli: add guest hook path option in the configuration file
Add support for specifying an optional drop-in path for guest OCI hooks.
This is the runtime side for leveraging the agent change introduced in
kata-containers/agent@980023ec62

Fixes: #720

Co-authored-by: Edward Guzman <eguzman@nvidia.com>
Co-authored-by: Felix Abecassis <fabecassis@nvidia.com>
Signed-off-by: Felix Abecassis <fabecassis@nvidia.com>
2018-10-29 13:06:22 -07:00
Jose Carlos Venegas Munoz
41619e4f83 vc: qemu: Add option to change entropy source
This adds a config option to choose the VM entropy
source.

Fixes: #702

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-25 17:54:32 -05:00
Jose Carlos Venegas Munoz
19801bf784 config: Add Memory slots configuration.
Add configuration to decide the amount of slots that will be used in a VM

- This will limit the amount of times that memory can be hotplugged.
- Use memory slots provided by user.
- tests: aling struct

cli: kata-env: Add memory slots info.

- Show the slots to be added to the VM.

```diff
[Hypervisor]
  MachineType = "pc"
  Version = "QEMU ..."
  Path = "/opt/kata/bin/qemu-system-x86_64"
  BlockDeviceDriver = "virtio-scsi"
  Msize9p = 8192
+  MemorySlots = 10
  Debug = false
  UseVSock = false
```

Fixes: #751

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-09-21 10:57:00 -05:00
Sebastien Boeuf
0ffe81cb71 cli: config: Make netmon configurable
In order to choose if the network monitor should be used or not, this
patch makes it configurable from the configuration.toml file.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Sebastien Boeuf
f1315908c7 netmon: Build netmon from the master Makefile
This commit modifies the Makefile at the root of this repository
so that the binary kata-netmon can be built from there.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2018-09-14 09:15:53 -07:00
Archana Shinde
31e2925a9a vfio: Add configuration to support VFIO hotplug on root bus
We need this configuration due to a limitation in seabios
firmware in handling hotplug for PCI devices with large BARS.
Long term, this needs to be fixed in the firmware.

Fixes #594

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-08-20 11:36:21 -07:00
Eric Ernst
c72a720b97 makefile: update PREFIX to remove redundant slash
Fixes: #488

Signed-off-by: Eric Ernst <eric.ernst@intel.com>
2018-07-16 11:01:33 -07:00
Graham Whaley
62495d45be ci: no-exit: Allow path override for os.Exit check
Allow the path being checked by the os-no-exit script to be
passed in, and update the Makefile to use that to check the
current code paths of the cli and virtcontainers.

Fixes: #477

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2018-07-10 15:29:34 +01:00
Jose Carlos Venegas Munoz
39bc5ab3ee makefile: honor DESTDIR flag.
1. Fix config installation not exec permission is needed.

2. Makefile install all in DESTDIR.

make install DESTDIR=/tmp/dest/

Before:
$tree /tmp/dest/
/tmp/dest/
└── usr
    ├── bin
    │   └── kata-collect-data.sh
    └── share
        └── defaults
            └── kata-containers
                └── configuration.toml

5 directories, 2 files

Now:
$tree /tmp/dest/
/tmp/dest/
└── usr
    ├── local
    │   └── bin
    │       ├── kata-collect-data.sh
    │       └── kata-runtime
    └── share
        ├── bash-completion
        │   └── completions
        │       └── kata-runtime
        └── defaults
            └── kata-containers
                └── configuration.toml

Fixes: #401

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-06-20 10:18:53 -05:00
Ricardo Aravena
706904524a subsystem: cli
Add kata command line bash completion

Fixes #110

Signed-off-by: Ricardo Aravena <raravena@branch.io>
2018-06-11 18:29:30 -07:00
Nitesh Konkar
12e4dbe4ca cli: Leverage the new support for ppc64le
Fixes #302

Signed-off-by: Nitesh Konkar niteshkonkar@in.ibm.com
2018-05-31 18:41:54 +05:30
Julio Montes
07db945b09 virtcontainers/qemu: reduce memory footprint
There is a relation between the maximum number of vCPUs and the
memory footprint, if QEMU maxcpus option and kernel nr_cpus
cmdline argument are big, then memory footprint is big, this
issue only occurs if CPU hotplug support is enabled in the kernel,
might be because of kernel needs to allocate resources to watch all
sockets waiting for a CPU to be connected (ACPI event).

For example

```
+---------------+-------------------------+
|               | Memory Footprint (KB)   |
+---------------+-------------------------+
| NR_CPUS=240   | 186501                  |
+---------------+-------------------------+
| NR_CPUS=8     | 110684                  |
+---------------+-------------------------+
```

In order to do not affect CPU hotplug and allow to users to have containers
with the same number of physical CPUs, this patch tries to mitigate the
big memory footprint by using the actual number of physical CPUs as the
maximum number of vCPUs for each container if `default_maxvcpus` is <= 0 in
the runtime configuration file,  otherwise `default_maxvcpus` is used as the
maximum number of vCPUs.

Before this patch a container with 256MB of RAM

```
              total        used        free      shared  buff/cache   available
Mem:           195M         40M        113M         26M         41M        112M
Swap:            0B          0B          0B
```

With this patch

```
              total        used        free      shared  buff/cache   available
Mem:           236M         11M        188M         26M         36M        186M
Swap:            0B          0B          0B
```

fixes #295

Signed-off-by: Julio Montes <julio.montes@intel.com>
2018-05-14 17:33:31 -05:00
Stefan Hajnoczi
c032061bf7 Makefile: add missing dependencies to install targets
"make install" fails on a clean working directory:

  $ make install
  install: cannot stat ‘data/kata-collect-data.sh’: No such file or directory

This happens because install and install-scripts do not depend on the
runtime.  Make doesn't know it needs to build the runtime before it can
be installed.

Add the missing dependencies to the install targets so that "make
install" works on a clean working directory and rebuilds when source
files have been modified.

Note that SCRIPTS contains the generated kata-collect-data.sh script.
That file needs to be generated before it can be installed, so make
SCRIPTS a dependency of install-scripts.

Fixes: #283
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-05-02 15:23:39 +01:00
Archana Shinde
cc61ccf9e9 cli: 9p: Add toml configuration for 9p msize
Allows msize for 9p to be configured in the toml file.

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-17 12:15:23 -07:00
Archana Shinde
204e40297c cli: Add configuration option for io-threads.
Add option to configure if IO needs to be in a separate IO thread.
Add tests to verify option is correctly parsed. The default value
is set to false for now.
This should be considered to be enabled by default in the future.

Fixes #132

Signed-off-by: Archana Shinde <archana.m.shinde@intel.com>
2018-04-02 10:14:04 -07:00
Peng Tao
19c3555412 cli: add hypervisor initrd config option
Add `initrd=[path]` option to configuration.toml and use it to set
the HypervisorConfig.InitrdPath option.

The default value of hypervisor image option is removed since we want
to allow it to be unset. For the same reason, there is no default value
for hypervisor initrd option either.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-27 15:58:41 +08:00
Peng Tao
a679fe9540 Makefile: remove git hooks
They only exist to remove the generated file `cli/generated.go` but the
removal is unnecessary because:
1. it is ignored in .gitignore
2. it get rebuilt every time when we run `make`

Fixes: #108

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-03-23 16:50:54 +08:00
James O. D. Hunt
a521c33537 scripts: Add data collection script
Add a data collection script that can be run by users and its output
pasted directly into a github issue.

The script is designed to make diagnosing issues as easy as possible
and its output provides a summary of a Kata Containers system
including:

- Versions of all components.
- Details of container managers.
- Errors found in the system journal.

Fixes #80.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 13:56:40 +00:00
James O. D. Hunt
3c7318dbbd build: Move CLI makefile to top level
Merge `cli/Makefile` with the top level `Makefile`.

Also includes a Travis config update.

Fixes #88.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-22 11:16:06 +00:00
James O. D. Hunt
2a564c4f4b build: Add a clean rule
Add missing `clean` rule.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 11:23:08 +00:00
James O. D. Hunt
661a6ae85a build: Simplify top-level makefile
Use `make -C $dir` for simplicity.

Fixes #78.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 11:21:21 +00:00
James O. D. Hunt
81795a9879 build: Fix whitespace
Remove extraneous whitespace and format `Makefile` more consistently.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-03-20 11:20:35 +00:00
Jose Carlos Venegas Munoz
6dde7b8548 Makefile: Update makefile to build runtime
Change default runtime to build cli.

Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
2018-03-15 12:10:52 -06:00
Peng Tao
e0f4c52836 runv: modify GOPATH to build
So that we can use runv repo as git submodule without splitting it.

Signed-off-by: Peng Tao <bergwolf@gmail.com>
2018-01-30 10:00:05 +08:00
James O. D. Hunt
6faabd290c build: Add minimal Makefile
Add a basic `Makefile` to allow a runtime to be built:

- Clear Containers-based Kata runtime:
  ```
  $ make KATA_RUNTIME=cc [install]
  ```

- `runv`-based Kata runtime:
  ```
  $ make KATA_RUNTIME=runv [install]
  ```

Fixes #15.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2018-01-26 13:55:56 +00:00