mirror of
https://github.com/QubesOS/qubes-doc.git
synced 2025-01-24 13:41:28 -05:00
line breaks, additional grammar
This commit is contained in:
parent
0fb310cc88
commit
0d99fe1125
@ -9,14 +9,14 @@ redirect_from:
|
||||
VM kernel managed by dom0
|
||||
=========================
|
||||
|
||||
By default VMs kernels are provided by dom0. This means that:
|
||||
By default, VMs kernels are provided by dom0. This means that:
|
||||
|
||||
1. You can select kernel version in VM settings;
|
||||
1. You can select the kernel version in VM settings;
|
||||
2. You can modify kernel options in VM settings;
|
||||
3. You can **not** modify any of above from inside of VM;
|
||||
3. You can **not** modify any of the above from inside a VM;
|
||||
4. Installing additional kernel modules is cumbersome.
|
||||
|
||||
To select which kernel a given VM will use, you can use either use Qubes Manager (VM settings, advanced tab), or `qvm-prefs` tool:
|
||||
To select which kernel a given VM will use, you can either use Qubes Manager (VM settings, advanced tab), or the `qvm-prefs` tool:
|
||||
|
||||
~~~
|
||||
[user@dom0 ~]$ qvm-prefs my-appvm -s kernel
|
||||
@ -33,7 +33,7 @@ Possible values:
|
||||
[user@dom0 ~]$ qvm-prefs my-appvm -s kernel default
|
||||
~~~
|
||||
|
||||
To check/change the default kernel you can go either to "Global settings" in Qubes Manager, or use `qubes-prefs` tool:
|
||||
To check/change the default kernel you can either go to "Global settings" in Qubes Manager, or use the `qubes-prefs` tool:
|
||||
|
||||
~~~
|
||||
[user@dom0 ~]$ qubes-prefs
|
||||
@ -49,7 +49,9 @@ updatevm : sys-firewall
|
||||
Installing different kernel using Qubes kernel package
|
||||
----------------------------------
|
||||
|
||||
VM kernels are packages by Qubes team in `kernel-qubes-vm` packages. Generally the system will keep the 3 newest available versions. You can list them with the `rpm` command:
|
||||
VM kernels are packages by Qubes team in `kernel-qubes-vm` packages.
|
||||
Generally, the system will keep the three newest available versions.
|
||||
You can list them with the `rpm` command:
|
||||
|
||||
~~~
|
||||
[user@dom0 ~]$ rpm -qa 'kernel-qubes-vm*'
|
||||
@ -58,10 +60,10 @@ kernel-qubes-vm-3.18.16-3.pvops.qubes.x86_64
|
||||
kernel-qubes-vm-3.18.17-4.pvops.qubes.x86_64
|
||||
~~~
|
||||
|
||||
If you want a more recent version, you can check `qubes-dom0-unstable` repository. As the name suggests, keep in
|
||||
mind that those packages may be less stable than the default ones.
|
||||
If you want a more recent version, you can check the `qubes-dom0-unstable` repository.
|
||||
As the name suggests, keep in mind that those packages may be less stable than the default ones.
|
||||
|
||||
Checking available versions in `qubes-dom0-unstable` repository:
|
||||
To check available versions in the `qubes-dom0-unstable` repository:
|
||||
|
||||
~~~
|
||||
[user@dom0 ~]$ sudo qubes-dom0-update --enablerepo=qubes-dom0-unstable --action=list kernel-qubes-vm
|
||||
@ -82,7 +84,7 @@ kernel-qubes-vm.x86_64 1000:3.18.17-4.pvops.qubes @qubes-dom0-cached
|
||||
|
||||
~~~
|
||||
|
||||
Installing new version from `qubes-dom0-unstable` repository:
|
||||
Installing a new version from `qubes-dom0-unstable` repository:
|
||||
|
||||
~~~
|
||||
[user@dom0 ~]$ sudo qubes-dom0-update --enablerepo=qubes-dom0-unstable kernel-qubes-vm
|
||||
@ -130,21 +132,22 @@ Complete!
|
||||
[marmarek@dom0 ~]$
|
||||
~~~
|
||||
|
||||
In the above example, it tries to remove 3.18.10-2.pvops.qubes kernel (to keep only 3 installed), but since some VM uses it, it fails. Installation of new package is unaffected by this event.
|
||||
In the above example, it tries to remove the 3.18.10-2.pvops.qubes kernel (to keep only three installed), but since some VM uses it, it fails.
|
||||
Installation of the new package is unaffected by this event.
|
||||
|
||||
The newly installed package is set as default VM kernel.
|
||||
The newly installed package is set as the default VM kernel.
|
||||
|
||||
Installing different VM kernel based on dom0 kernel
|
||||
---------------------------------------------------
|
||||
|
||||
It is possible to package kernel installed in dom0 as VM kernel. This makes it
|
||||
possible to use VM kernel, which is not packaged by Qubes team. This includes:
|
||||
* using Fedora kernel package
|
||||
* using manually compiled kernel
|
||||
It is possible to package a kernel installed in dom0 as a VM kernel.
|
||||
This makes it possible to use a VM kernel which is not packaged by Qubes team.
|
||||
This includes:
|
||||
* using a Fedora kernel package
|
||||
* using a manually compiled kernel
|
||||
|
||||
To prepare such VM kernel, you need to install `qubes-kernel-vm-support`
|
||||
package in dom0 and also have matching kernel headers installed (`kernel-devel`
|
||||
package in the case of Fedora kernel package). You can install required stuff using `qubes-dom0-update`:
|
||||
To prepare such a VM kernel, you need to install the `qubes-kernel-vm-support` package in dom0 and also have matching kernel headers installed (`kernel-devel` package in the case of a Fedora kernel package).
|
||||
You can install requirements using `qubes-dom0-update`:
|
||||
|
||||
~~~
|
||||
[user@dom0 ~]$ sudo qubes-dom0-update qubes-kernel-vm-support kernel-devel
|
||||
@ -187,10 +190,9 @@ Installed:
|
||||
Complete!
|
||||
~~~
|
||||
|
||||
Then you can call `qubes-prepare-vm-kernel` tool to actually package the
|
||||
kernel. The first parameter is kernel version (exactly as seen by the kernel),
|
||||
the second one (optional) is short name being visible in Qubes Manager and
|
||||
`qvm-prefs` tool.
|
||||
Then you can call the `qubes-prepare-vm-kernel` tool to actually package the kernel.
|
||||
The first parameter is kernel version (exactly as seen by the kernel), the second one (optional) is short name.
|
||||
This is visible in Qubes Manager and the `qvm-prefs` tool.
|
||||
|
||||
~~~
|
||||
[user@dom0 ~]$ sudo qubes-prepare-vm-kernel 4.1.9-6.pvops.qubes.x86_64 4.1.qubes
|
||||
@ -207,14 +209,18 @@ Using kernel installed in the VM
|
||||
|
||||
**This option is available only in Qubes R3.1 or newer**
|
||||
|
||||
It is possible to use kernel installed in the VM (in most cases - TemplateVM).
|
||||
This is possible thanks to PV GRUB2 - GRUB2 running in the VM. To make it happen, you need to:
|
||||
It is possible to use a kernel installed in the VM (in most cases - TemplateVM).
|
||||
This is possible thanks to PV GRUB2 - GRUB2 running in the VM.
|
||||
To make it happen, you need to:
|
||||
|
||||
1. Install PV GRUB2 in dom0 - package is named `grub2-xen`.
|
||||
2. Install kernel in the VM. As with all VM software installation - this needs to be done in TemplateVM (of StandaloneVM if you are using one).
|
||||
3. Set VM kernel to `pvgrub2` value. You can use `pvgrub2` in selected VMs, not necessary all of them, even when its template has kernel installed. You can still use dom0-provided kernel for selected VMs.
|
||||
2. Install kernel in the VM.
|
||||
As with all VM software installation - this needs to be done in TemplateVM (of StandaloneVM if you are using one).
|
||||
3. Set VM kernel to `pvgrub2` value.
|
||||
You can use `pvgrub2` in selected VMs, but it's not necessary in all of them, even when its template has a kernel installed.
|
||||
You can still use a dom0-provided kernel for selected VMs.
|
||||
|
||||
**WARNING: When using kernel from within VM, `kernelopts` parameter is ignored.**
|
||||
**WARNING: When using a kernel from within a VM, the `kernelopts` parameter is ignored.**
|
||||
|
||||
### Installing PV GRUB2
|
||||
|
||||
@ -226,28 +232,24 @@ sudo qubes-dom0-update grub2-xen
|
||||
|
||||
### Installing kernel in Fedora VM
|
||||
|
||||
In Fedora based VM, you need to install `qubes-kernel-vm-support` package. This
|
||||
package includes required additional kernel module and initramfs addition
|
||||
required to start Qubes VM (for details see
|
||||
[template implementation](/doc/template-implementation/)). Additionally you
|
||||
need some GRUB tools to create its configuration. Note: you don't need actual
|
||||
grub bootloader as it is provided by dom0. But having one also shouldn't harm.
|
||||
In a Fedora based VM, you need to install the `qubes-kernel-vm-support` package.
|
||||
This package includes the additional kernel module and initramfs addition required to start a Qubes VM (for details see [template implementation](/doc/template-implementation/)).
|
||||
Additionally, you need some GRUB tools to create its configuration.
|
||||
Note: You don't need an actual grub bootloader as it is provided by dom0, but having one shouldn't hurt.
|
||||
|
||||
~~~
|
||||
sudo yum install qubes-kernel-vm-support grub2-tools
|
||||
~~~
|
||||
|
||||
Then install whatever kernel you want. If you are using distribution kernel
|
||||
package (`kernel` package), initramfs and kernel module should be handled
|
||||
automatically, but you need to ensure you have `kernel-devel` package for the
|
||||
same kernel version installed. If you are using a manually built kernel, you need
|
||||
to handle this on your own. Take a look at `dkms` and `dracut` documentation.
|
||||
Especially `dkms autoinstall` command may be useful.
|
||||
Then install whatever kernel you want.
|
||||
If you are using distribution kernel package (`kernel` package), the initramfs and kernel module should be handled automatically, but you need to ensure you have the `kernel-devel` package for the same kernel version installed.
|
||||
If you are using a manually built kernel, you need to handle this on your own.
|
||||
Take a look at the `dkms` and `dracut` documentation, especially the `dkms autoinstall` command may be useful.
|
||||
|
||||
When kernel is installed, you need to create GRUB configuration.
|
||||
You may want to adjust some settings in `/etc/default/grub`, for example lower
|
||||
`GRUB_TIMEOUT` to speed up VM startup. Then you need to generate actual configuration:
|
||||
In Fedora it can be done using `grub2-mkconfig` tool:
|
||||
When the kernel is installed, you need to create a GRUB configuration.
|
||||
You may want to adjust some settings in `/etc/default/grub`; for example, lower `GRUB_TIMEOUT` to speed up VM startup.
|
||||
Then, you need to generate the actual configuration:
|
||||
In Fedora it can be done using the `grub2-mkconfig` tool:
|
||||
|
||||
~~~
|
||||
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||
@ -259,17 +261,15 @@ You can safely ignore this error message:
|
||||
grub2-probe: error: cannot find a GRUB drive for /dev/mapper/dmroot. Check your device.map
|
||||
~~~
|
||||
|
||||
Then shutdown the VM. From now you can set `pvgrub2` as VM kernel and it will
|
||||
start kernel configured within VM.
|
||||
Then shutdown the VM.
|
||||
Now you can set `pvgrub2` as the VM kernel and it will start the kernel configured within your VM.
|
||||
|
||||
### Installing kernel in Debian VM
|
||||
|
||||
In Debian based VM, you need to install `qubes-kernel-vm-support` package. This
|
||||
package includes required additional kernel module and initramfs addition
|
||||
required to start Qubes VM (for details see
|
||||
[template implementation](/doc/template-implementation/)). Additionally you
|
||||
need some GRUB tools to create its configuration. Note: you don't need actual
|
||||
grub bootloader as it is provided by dom0. But having one also shouldn't harm.
|
||||
In a Debian based VM, you need to install the `qubes-kernel-vm-support` package.
|
||||
This package includes the additional kernel module and initramfs addition required to start a Qubes VM (for details see [template implementation](/doc/template-implementation/)).
|
||||
Additionally, you need some GRUB tools to create its configuration.
|
||||
Note: You don't need an actual grub bootloader as it is provided by dom0, but having one shouldn't hurt.
|
||||
|
||||
~~~
|
||||
sudo apt-get update
|
||||
@ -278,10 +278,9 @@ sudo apt-get install qubes-kernel-vm-support grub2-common
|
||||
|
||||
Ignore warnings about `version '...' has bad syntax`.
|
||||
|
||||
Then install whatever kernel you want. If you are using distribution kernel
|
||||
package (`linux-image-amd64` package), initramfs and kernel module should be
|
||||
handled automatically. If not, or you are building kernel manually, do this on
|
||||
using `dkms` and `initramfs-tools`:
|
||||
Then install whatever kernel you want.
|
||||
If you are using a distribution kernel package (`linux-image-amd64` package), the initramfs and kernel modules should be handled automatically.
|
||||
If not, or you are building the kernel manually, do this using `dkms` and `initramfs-tools`:
|
||||
|
||||
sudo dkms autoinstall -k <kernel-version> # replace this <kernel-version> with actual kernel version
|
||||
sudo update-initramfs -u
|
||||
@ -303,10 +302,9 @@ The output should look like this:
|
||||
$ sudo update-initramfs -u
|
||||
update-initramfs: Generating /boot/initrd.img-3.16.0-4-amd64
|
||||
|
||||
When kernel is installed, you need to create GRUB configuration.
|
||||
You may want to adjust some settings in `/etc/default/grub`, for example lower
|
||||
`GRUB_TIMEOUT` to speed up VM startup. Then you need to generate actual configuration:
|
||||
In Fedora it can be done using `update-grub2` tool:
|
||||
When the kernel is installed, you need to create a GRUB configuration.
|
||||
You may want to adjust some settings in `/etc/default/grub`; for example, lower `GRUB_TIMEOUT` to speed up VM startup.
|
||||
Then, you need to generate the actual configuration with the `update-grub2` tool:
|
||||
|
||||
~~~
|
||||
sudo mkdir /boot/grub
|
||||
@ -319,17 +317,16 @@ You can safely ignore this error message:
|
||||
grub2-probe: error: cannot find a GRUB drive for /dev/mapper/dmroot. Check your device.map
|
||||
~~~
|
||||
|
||||
Then shutdown the VM. From now you can set `pvgrub2` as VM kernel and it will
|
||||
start kernel configured within VM.
|
||||
Then shutdown the VM.
|
||||
Now you can set `pvgrub2` as the VM kernel and it will start the kernel configured within your VM.
|
||||
|
||||
When starting the VM you can safely ignore any warnings about a missing module 'dummy-hcd'
|
||||
When starting the VM you can safely ignore any warnings about a missing module 'dummy-hcd'.
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
In the event of a problem, you can access the VM console (using `sudo xl console VMNAME` in dom0) to access
|
||||
the GRUB menu. You need to call it just after starting VM (until `GRUB_TIMEOUT`
|
||||
expires) - for example in a separate dom0 terminal window.
|
||||
In case of problems, you can access the VM console using `sudo xl console VMNAME` in dom0, then access the GRUB menu.
|
||||
You need to call it just after starting the VM (until `GRUB_TIMEOUT` expires); for example, in a separate dom0 terminal window.
|
||||
|
||||
In any case you can later access VM logs (especially VM console log (`guest-VMNAME.log`).
|
||||
In any case you can later access the VM's logs (especially the VM console log `guest-VMNAME.log`).
|
||||
|
||||
You can always set kernel back to some dom0-provided value to fix VM kernel installation.
|
||||
You can always set the kernel back to some dom0-provided value to fix a VM kernel installation.
|
||||
|
Loading…
Reference in New Issue
Block a user