|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH 2/2] add document minimal_xen_tools.pandoc
---
docs/designs/minimal_xen_tools.pandoc | 147 ++++++++++++++++++++++++++
1 file changed, 147 insertions(+)
create mode 100644 docs/designs/minimal_xen_tools.pandoc
diff --git a/docs/designs/minimal_xen_tools.pandoc
b/docs/designs/minimal_xen_tools.pandoc
new file mode 100644
index 0000000000..32e0e8d002
--- /dev/null
+++ b/docs/designs/minimal_xen_tools.pandoc
@@ -0,0 +1,147 @@
+- [Minimal Xen-tools](#minimal-xen-tools)
+ - [`xen-tools` : full vs minimal](#xen-tools--full-vs-minimal)
+ - [Components of minimal `xen-tools`](#components-of-minimal-xen-tools)
+ - [How to enable minimal `xen-tools`](#how-to-enable-minimal-xen-tools)
+ - [How to include a component which is
excluded](#how-to-include-a-component-which-is-excluded)
+ - [Library](#library)
+ - [Tool](#tool)
+
+# Minimal Xen-tools
+
+Purpose : To enhance `xen-tools` for users who require only a minimal subset
of its functionality, particularly in safety-critical domains such as
aerospace.
+
+## `xen-tools` : full vs minimal
+
+- total size of **full** `xen-tools` and **minimal** `xen-tools`
+
+| | full | minimal |
+|------| ------------ | ------------ |
+|ipks | 8.1M (8216K) | **1.3M** (1276K) |
+|image | 26M (25944K) | **4.6M** (4664)K |
+
+## Components of minimal `xen-tools`
+
+| `xen-tools-` | included | Rationale
| remark |
+|---------------------| -------- |
------------------------------------------------------------ | ------- |
+| libxencall | yes | library to provide hypercall interface
| |
+| libxenctrl | yes | library to provide interface for the ARINC
653 scheduler | partially included |
+| libxendevicemodel | no | library to support device model. Not needed
| |
+| libxenevtchn | no | library to support event channel. Not
needed with static event channel | |
+| libxenforeignmemory | yes | library to support memory management for
hypercall buffer | |
+| libxengnttab | no | library to support grant table. We are
plainning to use static shared memory instaed of grant table to avoid dynamic
memory allocation. | |
+| libxenguest | no | library to support control and manage the
domUs. Not required with dom0less | |
+| libxenhypfs | no | library to provide interface for hypervisor
fs. We don't access hypervisor fs. | |
+| libxenlight | no | library to support `xl`. We don't use `xl`
at all | |
+| libxenstat | no | library to monitor statistic data of domUs
with `xentop`. We don't use it | |
+| libxenstore | no | library to access `XenStore`. We don't use
`XenStore`. | |
+| libxenutil | no | library to provide common utilities. | |
+| libxenvchan | no | library to provide interface for
vchan(vitual channel). We don't use vchan | |
+| libxentoolcore | yes | managing libraries' handlers
| |
+| libxentoollog | yes | library to provide logging interface
| can be removed |
+| 9pfsd | no | network file system protocol.
| had dependency on `XenStore` |
+| consold | no | `ctrl-a` ×3 replaces it
| |
+| dev | yes | header files
| |
+| flask | yes | Xen security policy framework (XSM/FLASK)
| disabled |
+| flask-tools | yes | tools to manage FLASK policy
| disabled |
+| fuzz | no | FUZZ test tool
| |
+| fsimage | yes | file system image generator for domUs;
depends on `pygrub` | |
+| hvmloader | no | legacy BIOS loader for HVM guests
| |
+| libacpi | no | Advanced Configuration and Power Interface
| disabled |
+| pygrub | yes | bootloader parser for domU kernels
| enabled |
+| reums | yes | tool for failover of domUs via periodic
backup; requires `libnl3` | need to check dependency with `libxenlight` (xl) |
+| scripts-block | yes | scripts for block device
| |
+| scripts-common | yes | scripts for common utilities
| |
+| scripts-network | yes | scripts for domU network setup
| |
+| shim | yes | EFI loader to launch Xen as a bootloader
| disabled |
+| xenpaging | no | domain paging tools not used
| |
+| xenpmd | no | xen power management daemon
| had dependency on `XenStore` |
+| xenstored | no | Xen Store Daemon providing simple tree-like
database | had dependency on `XenStore`, and event channel |
+| xenwatchdogd | no | watchdog daemon. Not needed
| |
+| volatiles | yes | runtime files (e.g. sockets, pid) for Xen
tools | |
+| xencommons | yes | startup script for Xen toolstack
| |
+| xendomains | yes | init scirpt to autostart and shutdown domUs
at boot/shutdown | |
+| xentrace | no | trace Xen internal events. kind of
debugging and monitoring tool. Not needed | |
+| xenmon | no | live trace monitor
| requires `xentrace` |
+
+## How to enable minimal `xen-tools`
+
+- Ensure the following lines are present in `local.conf`:
+
+``` conf
+# Enable minimal-xen-tools mode
+ENABLE_MINIMAL_XEN_TOOLS = "true"
+# Append minimal-xen-tools feature to xen-tools build configuration
+PACKAGECONFIG:append:pn-xen-tools = " minimal-xen-tools"
+```
+
+- `minimal-xen-tools` will be enabled if `ENABLE_MINIMAL_XEN_TOOLS` is set to
`true`
+
+## How to include a component which is excluded
+
+### Library
+
+- Modify `xen/tools/libs/Makefile` and `xen/tools/libs/uselibs.mk` as follows
to include the library's source code in the build
+
+@xen/tools/libs/Makefile
+
+```makefile
+ifeq ($(CONFIG_MINIMAL_TOOLS),y)
+SUBDIRS-y :=
+SUBDIRS-y += toolcore
+SUBDIRS-y += toollog
+SUBDIRS-y += call
+SUBDIRS-y += foreignmemory
+SUBDIRS-y += ctrl
+SUBDIRS-y += xxx # include 'xxx' to build
+endif
+```
+
+@xen/tools/libs/uselibs.mk
+
+```makefile
+ifeq ($(CONFIG_MINIMAL_TOOLS),y)
+ LIBS_LIBS += toolcore
+ USELIBS_toolcore :=
+ LIBS_LIBS += toollog
+ USELIBS_toollog :=
+ LIBS_LIBS += call
+ USELIBS_call := toollog toolcore
+ LIBS_LIBS += foreignmemory
+ USELIBS_foreignmemory := toollog toolcore
+ LIBS_LIBS += ctrl
+ USELIBS_ctrl := toollog call foreignmemory
+ LIBS_LIBS += xxx # add 'xxx'
+ USELIBS_xxx := toollog toolcore aaa # dependency of 'xxx'
+else
+ LIBS_LIBS += toolcore
+
+```
+
+- Modify `xen/tools/libs/ctrl/Makefile.common` if you want to include part of
`libxenctrl`
+
+### Tool
+
+- Modify `xen/tools/Makefile` as follows to include the source code in the
build
+
+``` makefile
+ifeq ($(CONFIG_MINIMAL_TOOLS),y)
+SUBDIRS-y :=
+SUBDIRS-y += libs
+SUBDIRS-y += flask
+SUBDIRS-y += hotplug
+SUBDIRS-y += xxx # include 'xxx' to build
+SUBDIRS-$(CONFIG_X86) += firmware
+SUBDIRS-$(CONFIG_LIBFSIMAGE) += libfsimage
+
+# do not recurse in to a dir we are about to delete
+ifneq "$(MAKECMDGOALS)" "distclean"
+SUBDIRS-$(CONFIG_QEMU_TRAD) += qemu-xen-traditional-dir
+SUBDIRS-$(CONFIG_QEMU_XEN) += qemu-xen-dir
+endif
+#SUBDIRS-y += python
+SUBDIRS-$(CONFIG_PYGRUB) += pygrub
+SUBDIRS-$(OCAML_TOOLS) += ocaml
+endif
+```
+
+- The `xen/tools/configure.ac` file should also be modified appropriately as
needed. In this case, you should ensure that updating `configure` file and
executing it during the build.
--
2.34.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |