2015-11-13 20:51:03 -05:00
---
layout: doc
title: Upgrading the Fedora 21 Template
permalink: /doc/fedora-template-upgrade-21/
redirect_from:
- /en/doc/fedora-template-upgrade-21/
- /doc/FedoraTemplateUpgrade21/
- /wiki/FedoraTemplateUpgrade21/
---
Upgrading the Fedora 21 Template
================================
2015-11-29 17:45:27 -05:00
Summary: Upgrading the Standard Fedora 21 Template to Fedora 23
2015-11-13 20:51:03 -05:00
---------------------------------------------------------------
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-clone fedora-21 fedora-23
2015-11-13 20:51:03 -05:00
[user@dom0 ~]$ truncate -s 5GB /var/tmp/template-upgrade-cache.img
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-run -a fedora-23 gnome-terminal
[user@dom0 ~]$ qvm-block -A fedora-23 dom0:/var/tmp/template-upgrade-cache.img
[user@fedora-23 ~]$ sudo mkfs.ext4 /dev/xvdi
[user@fedora-23 ~]$ sudo mount /dev/xvdi /mnt/removable
[user@fedora-23 ~]$ sudo mkdir /mnt/removable/modules
[user@fedora-23 ~]$ sudo cp -rp /usr/lib/modules /mnt/removable/modules
[user@fedora-23 ~]$ sudo mount --bind /mnt/removable/modules /usr/lib/modules
[user@fedora-23 ~]$ sudo yum clean all
[user@fedora-23 ~]$ sudo yum --releasever=23 --enablerepo=qubes*current-testing --setopt=cachedir=/mnt/removable distro-sync
2015-11-13 20:51:03 -05:00
(Shut down TemplateVM by any normal means.)
[user@dom0 ~]$ rm /var/tmp/template-upgrade-cache.img
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-trim-template fedora-23
2015-11-13 20:51:03 -05:00
2015-11-14 10:22:46 -05:00
(Done.)
2015-11-29 17:45:27 -05:00
Detailed: Upgrading the Standard Fedora 21 Template to Fedora 23
2015-11-13 20:51:03 -05:00
----------------------------------------------------------------
These instructions will show you how to upgrade the standard Fedora 21
2015-11-29 17:45:27 -05:00
TemplateVM to Fedora 23. The same general procedure may be used to upgrade any
2015-12-08 19:25:25 -05:00
template based on the standard Fedora 21 template.
2015-11-13 20:51:03 -05:00
2015-12-08 19:25:25 -05:00
1. Ensure the existing template is not running.
[user@dom0 ~]$ qvm-shutdown fedora-21
2. Clone the existing template and start a terminal in the new template.
2015-11-13 20:51:03 -05:00
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-clone fedora-21 fedora-23
[user@dom0 ~]$ qvm-run -a fedora-23 gnome-terminal
2015-11-13 20:51:03 -05:00
2. Attempt the upgrade process in the new template. For now you need to enable testing repository to do that.
2015-11-29 17:45:27 -05:00
[user@fedora-23 ~]$ sudo yum clean all
[user@fedora-23 ~]$ sudo yum --releasever=23 --enablerepo=qubes*current-testing distro-sync
2015-11-13 20:51:03 -05:00
2015-12-11 15:00:03 -05:00
3. Shutdown the new TemplateVM via dom0 command line or Qubes VM Manager;
2015-12-09 19:24:18 -05:00
[user@dom0 ~]$ qvm-shutdown fedora-23
2015-11-13 20:51:03 -05:00
If you encounter no errors, proceed to step 7.
2015-12-09 19:24:18 -05:00
4. If `yum` reports that you do not have enough free disk space to proceed with
2015-11-13 20:51:03 -05:00
the upgrade process, create an empty file in dom0 to use as a cache and
attach it to the template as a virtual disk.
[user@dom0 ~]$ truncate -s 5GB /var/tmp/template-upgrade-cache.img
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-block -A fedora-23 dom0:/var/tmp/template-upgrade-cache.img
2015-11-13 20:51:03 -05:00
Then reattempt the upgrade process, but this time using the virtual disk as
a cache.
2015-11-29 17:45:27 -05:00
[user@fedora-23 ~]$ sudo mkfs.ext4 /dev/xvdi
[user@fedora-23 ~]$ sudo mount /dev/xvdi /mnt/removable
[user@fedora-23 ~]$ sudo yum clean all
[user@fedora-23 ~]$ sudo yum --releasever=23 --enablerepo=qubes*current-testing --setopt=cachedir=/mnt/removable distro-sync
2015-11-13 20:51:03 -05:00
(Poweroff via Qubes VM Manager. May need to be killed.)
2015-12-09 19:24:18 -05:00
5. If `yum` complains that there is not enough free space in `/usr/lib/modules` ,
2015-11-13 20:51:03 -05:00
do this before reattempting the upgrade:
2015-11-29 17:45:27 -05:00
[user@fedora-23 ~]$ sudo mkdir /mnt/removable/modules
[user@fedora-23 ~]$ sudo cp -rp /usr/lib/modules /mnt/removable/modules
[user@fedora-23 ~]$ sudo mount --bind /mnt/removable/modules /usr/lib/modules
2015-11-13 20:51:03 -05:00
2015-12-09 19:24:18 -05:00
6. `yum` may complain:
2015-11-13 20:51:03 -05:00
At least X MB more space needed on the / filesystem.
In this case, one option is to [resize the TemplateVM's disk
image](/doc/ResizeDiskImage/) before reattempting the upgrade process.
(See **Additional Information** below for other options.)
2015-12-09 19:24:18 -05:00
7. After the upgrade process is finished, remove the cache file, if you
2015-11-13 20:51:03 -05:00
created one.
[user@dom0 ~]$ rm /var/tmp/template-upgrade-cache.img
2015-12-09 19:24:18 -05:00
8. Trim the new template (see **Compacting the Upgraded Template** for details
2015-11-13 20:51:03 -05:00
and other options).
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-trim-template fedora-23
2015-11-13 20:51:03 -05:00
2015-12-09 19:24:18 -05:00
9. (Optional) Remove the old default template.
2015-11-13 20:51:03 -05:00
[user@dom0 ~]$ sudo yum remove qubes-template-fedora-21
2015-11-29 17:45:27 -05:00
Summary: Upgrading the Minimal Fedora 21 Template to Fedora 23
2015-11-13 20:51:03 -05:00
--------------------------------------------------------------
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-clone fedora-21-minimal fedora-23-minimal
[user@dom0 ~]$ qvm-run -a fedora-23-minimal xterm
[user@fedora-23-minimal ~]$ su -
[root@fedora-23-minimal ~]# yum clean all
[user@fedora-23-minimal ~]# yum --releasever=23 --enablerepo=qubes*current-testing distro-sync
2015-11-13 20:51:03 -05:00
(Shut down TemplateVM by any normal means.)
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-trim-template fedora-23-minimal
2015-11-13 20:51:03 -05:00
(If you encounter insufficient space issues, you may need to use the methods
described for the standard template above.)
Differences Between the Standard and Minimal Upgrade Procedures
---------------------------------------------------------------
The procedure for upgrading the minimal template (or any template based on the
minimal template) is the same as the procedure for the standard template above,
**with the following exceptions**:
1. `gnome-terminal` is not installed by default. Unless you've installed it
(or another terminal emulator), use `xterm` . (Of course, you can also use
`xterm` for the standard template, if you prefer.)
2. `sudo` is not installed by default. Unless you've installed it, use `su` as
demonstrated above. (Of course, you can also use `su` for the standard
template, if you prefer.)
Compacting the Upgraded Template
================================
Neither `fstrim` nor the `discard` mount option works on the TemplateVM's root
filesystem, so when a file is removed in the template, space is not freed in
dom0. This means that the template will use about twice as much space as is
really necessary after upgrading.
If you have at least `qubes-core-dom0-2.1.68` installed or are on Qubes R3.0,
you can use the `qvm-trim-template` tool:
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ qvm-trim-template fedora-23
2015-11-13 20:51:03 -05:00
If you do not have `qubes-core-dom0-2.1.68` or are on older Qubes version, you can
compact the `root.img` manually. To do this, you will need about 15GB (the
TemplateVM's max size + the actually used space there) free space in dom0.
1. Start the template and fill all the free space with zeros, for example
with:
2015-11-29 17:45:27 -05:00
[user@fedora-23 ~]$ dd if=/dev/zero of=/var/tmp/zero
2015-11-13 20:51:03 -05:00
2. Wait for the "No space left on device" error. Then:
2015-11-29 17:45:27 -05:00
[user@fedora-23 ~]$ rm -f /var/tmp/zero
2015-11-13 20:51:03 -05:00
3. Shut down the template and all VMs based on it. Then:
2015-11-29 17:45:27 -05:00
[user@dom0 ~]$ cd /var/lib/qubes/vm-templates/fedora-23
2015-11-13 20:51:03 -05:00
[user@dom0 ~]$ cp --sparse=always root.img root.img.new
[user@dom0 ~]$ mv root.img.new root.img
Additional Information
======================
As mentioned above, you may encounter the following `yum` error:
At least X MB more space needed on the / filesystem.
In this case, you have several options:
1. [Increase the TemplateVM's disk image size ](/doc/resize-disk-image/ ).
This is the solution mentioned in the main instructions above.
2. Delete files in order to free up space. One way to do this is by
uninstalling packages. You may then reinstalling them again after you
finish the upgrade process, if desired). However, you may end up having to
increase the disk image size anyway (see previous option).
3. Increase the `root.img` size with `qvm-grow-root` . It should be easy to
extend the `qvm-grow-root` tool in order to support PV (and not only HVM)
VMs. This is already done in R3.1.
4. Do the upgrade in parts, e.g., by using package groups. (First upgrade
`@core` packages, then the rest.)
5. Do not perform an in-place upgrade. Instead, simply download and install a
new template package, then redo all desired template modifications.
With regard to the last option, here are some useful messages from the mailing
list which also apply to TemplateVM management and migration in general:
* [Marek ](https://groups.google.com/d/msg/qubes-users/mCXkxlACILQ/dS1jbLRP9n8J )
* [Jason M ](https://groups.google.com/d/msg/qubes-users/mCXkxlACILQ/5PxDfI-RKAsJ )
2015-11-29 17:45:27 -05:00
Upgrading to Fedora 22
======================
You may choose to upgrade to Fedora 22 instead of Fedora 23. In that case,
simply replace version "23" with "22" in all above commands.
Known issues with Fedora 23
2015-11-13 20:51:03 -05:00
===========================
* [Graphical update tools (using PackageKit) does not work ](https://github.com/QubesOS/qubes-issues/issues/982 ).
* [Dnf (new Fedora package manager) needs a lot of time to process repository metadata ](https://bugzilla.redhat.com/show_bug.cgi?id=1227014 ), you may want to use `yum-deprecated` for now
2015-11-29 20:14:39 -05:00
* ["Terminal" shortcuts do not work because the desktop file in the VM has been renamed ](https://github.com/QubesOS/qubes-issues/issues/1428 ). See the issue report for how to update your configuration to match.