---
title: Contributing to RancherOS
layout: os-default

---

## Contributing to RancherOS
---

## Developing

Development is easiest done with QEMU on Linux. OS X works too, although QEMU doesn't have KVM support. If you are running Linux in a virtual machine, then we recommend you run VMWare Fusion/Workstation and enable VT-x support.  Then, QEMU will have KVM support and run sufficiently fast inside your Linux VM.

### Building

#### Requirements:

* bash
* make
* Docker 1.10.3+

```
$ make
```

The build will run in Docker containers, and when the build is done, the vmlinuz, initrd, and ISO should be in `dist/artifacts`.

If you're building a version of RancherOS used for development and not for a release, you can instead run `make dev`. This will run faster than the standard build by avoiding building the `installer.tar` and `rootfs.tar.gz` artifacts which are not needed by QEMU.

### Testing

Run `make integration-tests` to run the all integration tests in a container, or `./scripts/integration-tests` to run them outside a container (they use QEMU to test the OS.)

To run just one integration test, or a group of them (using regex's like `.*Console.*`, you can set the `RUNTEST` environment variable:

```
$ RUNTEST=TestPreload make integration-test
```

### Running

Prerequisites: QEMU, coreutils, cdrtools/genisoimage/mkisofs.
On OS X, `brew` is recommended to install those. On Linux, use your distro package manager.

To launch RancherOS in QEMU from your dev version, you can either use `make run`, or customise the vm using `./scripts/run` and its options. You can use `--append your.kernel=params here` and `--cloud-config your-cloud-config.yml` to configure the RancherOS instance you're launching.

You can SSH in using `./scripts/ssh`.  Your SSH keys should have been populated (if you didn't provide your own cloud-config) so you won't need a password.  If you don't have SSH keys, or something is wrong with your cloud-config, then the password is "`rancher`".

If you're on OS X, you can run RancherOS using [_xhyve_](https://github.com/mist64/xhyve) instead of QEMU: just pass `--xhyve` to `./scripts/run` and `./scripts/ssh`.

### Debugging and logging.

You can enable extra log information in the console by setting them using `sudo ros config set`,
or as kernel boot parameters.
Enable all logging by setting `rancher.debug` true
or you can set `rancher.docker.debug`, `rancher.system_docker.debug`, `rancher.bootstrap_docker.debug`, or `rancher.log` individually.

You will also be able to view the debug logging information by running `dmesg` as root.

## Repositories

All of repositories are located within our main GitHub [page](https://github.com/rancher).

[RancherOS Repo](https://github.com/rancher/os): This repo contains the bulk of the RancherOS code.

[RancherOS Services Repo](https://github.com/rancher/os-services): This repo is where any [system-services]({{site.baseurl}}/os/system-services/) can be contributed.

[RancherOS Images Repo](https://github.com/rancher/os-images): This repo is for the corresponding service images.


## Bugs

If you find any bugs or are having any trouble, please contact us by filing an [issue](https://github.com/rancher/os/issues/new).

If you have any updates to our documentation, please make any PRs to our [docs repo](https://github.com/rancher/rancher.github.io).

<br>
<br>
