Go to file
Colin Walters a1e5ee0a9c Flush log messages immediately
Otherwise we end up with desynchronized stdout/stderr which is
confusing.
2013-12-23 15:00:48 -05:00
src Flush log messages immediately 2013-12-23 15:00:48 -05:00
autogen.sh Initial import from pkgsys-ostree 2013-12-21 19:41:30 -05:00
configure.ac build-sys: Fix project name 2013-12-22 10:58:11 -05:00
COPYING Initial import from pkgsys-ostree 2013-12-21 19:41:30 -05:00
Makefile-rpm-ostree.am Various fixes to finish import from pkgsys-ostree 2013-12-21 22:15:57 -05:00
Makefile.am Initial import from pkgsys-ostree 2013-12-21 19:41:30 -05:00
README.md README: Note we require selinux=0 currently 2013-12-23 15:00:31 -05:00

rpm-ostree

This tool takes a set of packages, and commits them to an OSTree repository. At the moment, it is intended for use on build servers.

Using rpm-ostree

For example, this invocation:

rpm-ostree --repo=repo --enablerepo=fedora --os=fedora --os-version=20 create my-server-packages @standard kernel ostree fedora-release lvm2 e2fsprogs btrfs-progs httpd

Will create a ref named "fedora/20/my-server-packages", containing a complete bootable root filesystem of those packages. As you can see from the example above, the package set is fairly minimal, we're just adding on "httpd".

Now, if you export the repo via any plain HTTP server, clients using OSTree can then replicate this tree, and boot it, tracking updates you make over time.

Pulling and booting from a client machine

First, install the ostree package, of course; make sure you have ostree 2013.7 or newer.

yum install ostree

Now, this bit of one time initialization will both create /ostree for you, as well as /ostree/deploy/fedora.

ostree admin os-init fedora

This step tells OSTree how to find the repository you built on the server. You only need to do this once.

ostree remote add myserver https://mycorp.example.com/repo

Now, since we did not GPG sign our repo above, we need to disable GPG verification. Add gpg-verify=false in the [remote] section.

nano /ostree/repo/config

This step downloads that ref into /ostree/repo:

ostree pull myserver fedora/20/my-server-packages

This step extracts the root filesystem, and updates the bootloader configuration:

ostree admin deploy --os=fedora fedora/20/my-server-packages

We need to do some initial setup before we actually boot the system. Copy in the storage configuration:

cp /etc/fstab /ostree/deploy/fedora/current

And set a root password:

chroot /ostree/deploy/fedora/current passwd

And there is one final (manual) step: You must copy your system's kernel arguments from /boot/grub2/grub.cfg and add them to /boot/loader/entries/ostree-fedora-0.conf, on the options line. This step may be automated further in the future.

IMPORTANT NOTE: You must use selinux=0 for now.

Booting the system

Remember, at this point there is no impact on your installed system except for additional disk space in the /boot/loader and /ostree directories.

Reboot, and get a GRUB prompt. At the prompt, press c. Now, enter:

insmod blscfg
bls_import

Then press Esc. You should have an additional boot menu entry, named ostree:fedora:0. Nagivate to it and press Enter.

Inside the system

To upgrade, run as root:

ostree admin upgrade

Note that in our demo so far, we did not install yum (or even rpm). Getting these to work fully is the next phase of the yum-ostree development.