├── .hgignore ├── RPM-GPG-KEY-xcpng ├── answerfile.py ├── backend.py ├── bootloader ├── grub.cfg └── isolinux.cfg ├── common_criteria_firewall_rules ├── constants.py ├── cpiofile.py ├── disktools.py ├── diskutil.py ├── doc ├── answerfile.txt ├── autoinstall.txt └── parameters.txt ├── driver.py ├── fcoeutil.py ├── generalui.py ├── hardware.py ├── init ├── init_constants.py ├── install.py ├── keymaps ├── netinterface.py ├── netutil.py ├── product.py ├── report.py ├── repository.py ├── restore.py ├── scripts.py ├── snackutil.py ├── startup ├── S05ramdisk ├── S06mount ├── blacklist ├── bnx2x.conf ├── depmod.conf ├── early-blacklist ├── early-blacklist.conf ├── functions ├── interface-rename-sideway ├── iscsi-modules ├── modprobe.mlx4 ├── preinit └── systemd-udevd_depmod.conf ├── support.sh ├── timezones ├── tui ├── __init__.py ├── fcoe.py ├── init.py ├── installer │ ├── __init__.py │ └── screens.py ├── network.py ├── progress.py └── repo.py ├── uicontroller.py ├── upgrade.py ├── util.py └── xelogging.py /.hgignore: -------------------------------------------------------------------------------- 1 | (^|/)\.svn($|/) 2 | (^|/)\.hg($|/) 3 | (^|/)\.hgtags($|/) 4 | ^project.log$ 5 | ^tailor.state$ 6 | ^tailor.state.old$ 7 | ^tailor.state.journal$ 8 | -------------------------------------------------------------------------------- /RPM-GPG-KEY-xcpng: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | mQENBFu0lAkBCADXtdXbv0TKwrk+We5WRZH2sFMpG7pplKV0y1UA+Zowf3mz8wzD 4 | WwPhHTWgOO8N3m0lfe87kSxfqRTLhcVIkCPbMaGrI+PKGp4XIU/AUSBK0RBXrLMH 5 | Rxn5IaXjP8FfnsS66qIRPcHiM73ixq0McNp+T9wPRtN7p2vkJM1JkDySa64jMn2Q 6 | odEWEShP4O+m7v6YqaI41o5hIXzF1sC6bEIk4ok6/3mLBtnLQ8dBKClnMANsHGXi 7 | 6IyU+bnPq2NKJvI4i58JTGzFpamMFDzCINYuyIrx/jRvzICDTSG32GxuIY997Ip4 8 | Uw0bnNNBAxPNABG6sU+wOfuseZ2UoinFP8aDABEBAAG0PlhDUC1uZyBLZXkgKFhD 9 | UC1uZyBPZmZpY2lhbCBTaWduaW5nIEtleSkgPHNlY3VyaXR5QHhjcC1uZy5vcmc+ 10 | iQE4BBMBAgAiBQJbtJQJAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDN 11 | dXg6P9OsnpLVB/9N8AkHLwYnYZT+GTcNqCng1rSBBXQgdURLIk3DeDFpdAWmJ+eY 12 | ngooeSXvVC8Sjbu3JcaJ/QdrIoAAvbBs3A2Yl3z7Pytu7PRdCAbsKcApfqAVqQcv 13 | yPTyubgBreSjr6FiIQYXY/2jkKb1+k1R/kJRmJUIlGxCQgXTP8S2G1v+f1LRuoHp 14 | CaTUbrmNak+8iWT9vYrVYM7DxPXEZcZRDRu6WsXvgIiCjZbb1ZodzjKtWizpA9lM 15 | A0AD9NJp0Gt6xX2lcpFakDLEm+nHqULsRGdVNc42mEnU9qoa6ne98Sx89mJjsa/p 16 | DjsJoJZx2uY53abIeG886RuhPmTXqfEqUplMuQENBFu0lAkBCAC6Kpa3OGNt2+OM 17 | yMDVRItCKGPf2peLqucLBAPNhPN5LuDfDbbVATghbTqntZsrrCpAfcKj+3KZhzK8 18 | zzob5QDC7MbN/k04uZ6+2+2JAK3cn65s4tM/Bw5dVppytDMniJKVTU+gZuRXcUOx 19 | Y52fKd8ujCB5k0OZGX+7iqZRqHjxgYN0UNx47HI5yUHsO7V3gBq7Wr3s4VPpnVlZ 20 | GG6jzmy+3vPEFZsiyEbJvGN/7YVvawDPIki2Egkhiyh9L9hkB45ot2XkpBzaLuBZ 21 | u06KeUdX/DT386htyfbbfEg/2H/146AAdLTY+Ryek8nUJEoR0maQmJNKCwGKDhoW 22 | Kbd5HuXhABEBAAGJAR8EGAECAAkFAlu0lAkCGwwACgkQzXV4Oj/TrJ7DXAf/Rajk 23 | Mhz13T8NXw9aM4tr+dqkqsv6+u9UDIy7fbkEYiZP7OrBGuHEa2SUJFN6ITD5XPot 24 | qlLI4rCPjziTi9aPem79oUB5SEoESiIH7LlPG1HrR1sZNcRZWULonv2NWZa90EmF 25 | yvX0HJhygFdVapUdsezKV+OdbkhYISkptsByUmTE/zaGCKZyqSlTVEv/DlRcm1B9 26 | VFkO1y1q4K0xS7HhbBI/zbYuPRHJ/OXRpS3h6eOXP94rYYbRl1njFB4v2yKCCucG 27 | 059tGLyZbmeEM7EML87btSt8S3Dh+j7/PqbImnKKVAH7CWAljdGQQpyAvrEI93Hs 28 | pimz3jrPysfDWuaBiA== 29 | =/d3z 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /bootloader/grub.cfg: -------------------------------------------------------------------------------- 1 | set default="0" 2 | 3 | function load_video { 4 | insmod efi_gop 5 | insmod efi_uga 6 | insmod video_bochs 7 | insmod video_cirrus 8 | insmod all_video 9 | } 10 | 11 | load_video 12 | set gfxpayload=keep 13 | insmod gzio 14 | insmod part_gpt 15 | insmod ext2 16 | 17 | set timeout=5 18 | 19 | menuentry "install" { 20 | multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga 21 | module2 /boot/vmlinuz console=hvc0 console=tty0 22 | module2 /install.img 23 | } 24 | 25 | menuentry "no-serial" { 26 | multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M console=vga 27 | module2 /boot/vmlinuz console=tty0 28 | module2 /install.img 29 | } 30 | 31 | menuentry "safe" { 32 | multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M nosmp noreboot noirqbalance no-mce no-bootscrub no-numa no-hap no-mmcfg max_cstate=0 nmi=ignore allow_unsafe com1=115200,8n1 console=com1,vga vga=keep 33 | module2 /boot/vmlinuz console=hvc0 console=tty0 34 | module2 /install.img 35 | } 36 | 37 | menuentry "multipath" { 38 | multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga 39 | module2 /boot/vmlinuz console=hvc0 console=tty0 device_mapper_multipath=enabled 40 | module2 /install.img 41 | } 42 | 43 | menuentry "shell" { 44 | multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga 45 | module2 /boot/vmlinuz console=hvc0 console=tty0 bash-shell 46 | module2 /install.img 47 | } 48 | 49 | submenu "advanced-options" { 50 | menuentry "common-criteria-prep" { 51 | multiboot2 /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga 52 | module2 /boot/vmlinuz console=hvc0 console=tty0 cc-preparations 53 | module2 /install.img 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /bootloader/isolinux.cfg: -------------------------------------------------------------------------------- 1 | SERIAL 0 115200 2 | DEFAULT install 3 | PROMPT 1 4 | TIMEOUT 50 5 | DISPLAY pg_main 6 | F1 pg_main 7 | F2 pg_help 8 | 9 | LABEL install 10 | KERNEL mboot.c32 11 | APPEND /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga --- /boot/vmlinuz console=hvc0 console=tty0 --- /install.img 12 | LABEL no-serial 13 | KERNEL mboot.c32 14 | APPEND /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M console=vga --- /boot/vmlinuz console=tty0 --- /install.img 15 | LABEL safe 16 | KERNEL mboot.c32 17 | APPEND /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M nosmp noreboot noirqbalance no-mce no-bootscrub no-numa no-hap no-mmcfg max_cstate=0 nmi=ignore allow_unsafe com1=115200,8n1 console=com1,vga vga=keep --- /boot/vmlinuz console=hvc0 console=tty0 --- /install.img 18 | LABEL multipath 19 | KERNEL mboot.c32 20 | APPEND /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga --- /boot/vmlinuz console=hvc0 console=tty0 device_mapper_multipath=enabled --- /install.img 21 | LABEL shell 22 | KERNEL mboot.c32 23 | APPEND /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga --- /boot/vmlinuz console=hvc0 console=tty0 bash-shell --- /install.img 24 | LABEL common-criteria-prep 25 | KERNEL mboot.c32 26 | APPEND /boot/xen.gz dom0_max_vcpus=1-16 dom0_mem=max:8192M com1=115200,8n1 console=com1,vga --- /boot/vmlinuz console=hvc0 console=tty0 cc-preparations --- /install.img 27 | 28 | LABEL memtest 29 | KERNEL memtest 30 | -------------------------------------------------------------------------------- /common_criteria_firewall_rules: -------------------------------------------------------------------------------- 1 | # Default firewall rules for Common Criteria security certification. 2 | 3 | *filter 4 | 5 | :INPUT DROP [0:0] 6 | :FORWARD DROP [0:0] 7 | :OUTPUT DROP [0:0] 8 | 9 | -A INPUT -i lo -j ACCEPT 10 | 11 | -A INPUT -i xenbr0 -p icmp -m icmp --icmp-type 8 -j ACCEPT 12 | -A INPUT -i xenbr0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT 13 | @SSH_RULE@ 14 | -A INPUT -i xenbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT 15 | -A INPUT -i xenbr0 -j DROP 16 | 17 | -A INPUT -i xenbr1 -p icmp -m icmp --icmp-type 8 -j ACCEPT 18 | -A INPUT -i xenbr1 -m state --state RELATED,ESTABLISHED -j ACCEPT 19 | -A INPUT -i xenbr1 -j DROP 20 | 21 | -A OUTPUT -o lo -j ACCEPT 22 | 23 | -A OUTPUT -o xenbr0 -p icmp -m icmp --icmp-type 8 -j ACCEPT 24 | -A OUTPUT -o xenbr0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT 25 | -A OUTPUT -o xenbr0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT 26 | -A OUTPUT -o xenbr0 -p tcp -m tcp --dport 7279 -m state --state NEW -j ACCEPT 27 | -A OUTPUT -o xenbr0 -p tcp -m tcp --dport 27000 -m state --state NEW -j ACCEPT 28 | -A OUTPUT -o xenbr0 -p udp -m udp --dport 123 -m state --state NEW -j ACCEPT 29 | -A OUTPUT -o xenbr0 -p tcp -m tcp --dport 53 -m state --state NEW -j ACCEPT 30 | -A OUTPUT -o xenbr0 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT 31 | -A OUTPUT -o xenbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT 32 | -A OUTPUT -o xenbr0 -j DROP 33 | 34 | -A OUTPUT -o xenbr1 -p icmp -m icmp --icmp-type 8 -j ACCEPT 35 | -A OUTPUT -o xenbr1 -p udp -m udp --dport 111 -m state --state NEW -j ACCEPT 36 | -A OUTPUT -o xenbr1 -p tcp -m tcp --dport 111 -m state --state NEW -j ACCEPT 37 | -A OUTPUT -o xenbr1 -p udp -m udp --dport 2049 -m state --state NEW -j ACCEPT 38 | -A OUTPUT -o xenbr1 -p tcp -m tcp --dport 2049 -m state --state NEW -j ACCEPT 39 | -A OUTPUT -o xenbr1 -p udp -m udp --dport 4045:4047 -m state --state NEW -j ACCEPT 40 | -A OUTPUT -o xenbr1 -p tcp -m tcp --dport 4045:4047 -m state --state NEW -j ACCEPT 41 | -A OUTPUT -o xenbr1 -p udp -m udp --dport 4049 -m state --state NEW -j ACCEPT 42 | -A OUTPUT -o xenbr1 -p tcp -m tcp --dport 4049 -m state --state NEW -j ACCEPT 43 | -A OUTPUT -o xenbr1 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT 44 | -A OUTPUT -o xenbr1 -p tcp -m tcp --dport 53 -m state --state NEW -j ACCEPT 45 | -A OUTPUT -o xenbr1 -m state --state RELATED,ESTABLISHED -j ACCEPT 46 | -A OUTPUT -o xenbr1 -j DROP 47 | 48 | COMMIT 49 | -------------------------------------------------------------------------------- /constants.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2005-2006 XenSource, Inc. All use and distribution of this 2 | # copyrighted material is governed by and subject to terms and conditions 3 | # as licensed by XenSource, Inc. All other rights reserved. 4 | # Xen, XenSource and XenEnterprise are either registered trademarks or 5 | # trademarks of XenSource Inc. in the United States and/or other countries. 6 | 7 | ### 8 | # XEN CLEAN INSTALLER 9 | # Functions to perform the XE installation 10 | # 11 | # written by Andrew Peace & Mark Nijmeijer 12 | 13 | import version 14 | import string 15 | import random 16 | import os.path 17 | 18 | # exit status 19 | EXIT_OK = 0 20 | EXIT_ERROR = 1 21 | EXIT_USER_CANCEL = 2 22 | 23 | # install types: 24 | INSTALL_TYPE_FRESH = "fresh" 25 | INSTALL_TYPE_REINSTALL = "reinstall" 26 | INSTALL_TYPE_RESTORE = "restore" 27 | 28 | # sr types: 29 | SR_TYPE_LVM = "lvm" 30 | SR_TYPE_EXT = "ext" 31 | 32 | # partition schemes: 33 | PARTITION_DOS = "DOS" 34 | PARTITION_GPT = "GPT" 35 | 36 | # bootloader locations: 37 | BOOT_LOCATION_MBR = "mbr" 38 | BOOT_LOCATION_PARTITION = "partition" 39 | 40 | # The lowest LBA that a partition can start at if installing the bootloader 41 | # to the MBR (applies to legacy mode with DOS partition type only). 42 | LBA_PARTITION_MIN = 63 43 | 44 | # target boot mode: 45 | TARGET_BOOT_MODE_LEGACY = "legacy" 46 | TARGET_BOOT_MODE_UEFI = "uefi" 47 | 48 | # first partition preservation: 49 | PRESERVE_IF_UTILITY = "if-utility" 50 | UTILITY_PARTLABEL = "DELLUTILITY" 51 | 52 | UEFI_INSTALLER = os.path.exists("/sys/firmware/efi") 53 | 54 | # network backend types: 55 | NETWORK_BACKEND_BRIDGE = "bridge" 56 | NETWORK_BACKEND_VSWITCH = "openvswitch" 57 | NETWORK_BACKEND_DEFAULT = NETWORK_BACKEND_VSWITCH 58 | 59 | # Old name for openvswitch backend, for use in answerfile and on upgrade only 60 | NETWORK_BACKEND_VSWITCH_ALT = "vswitch" 61 | 62 | # error strings: 63 | def error_string(error, logname, with_hd): 64 | ( 65 | ERROR_STRING_UNKNOWN_ERROR_WITH_HD, 66 | ERROR_STRING_UNKNOWN_ERROR_WITHOUT_HD, 67 | ERROR_STRING_KNOWN_ERROR 68 | ) = range(3) 69 | 70 | ERROR_STRINGS = { 71 | ERROR_STRING_UNKNOWN_ERROR_WITH_HD: "An unrecoverable error has occurred. The details of the error can be found in the log file, which has been written to /tmp/%s (and /root/%s on your hard disk if possible).", 72 | ERROR_STRING_UNKNOWN_ERROR_WITHOUT_HD: "An unrecoverable error has occurred. The details of the error can be found in the log file, which has been written to /tmp/%s.", 73 | ERROR_STRING_KNOWN_ERROR: "An unrecoverable error has occurred. The error was:\n\n%s\n" 74 | } 75 | 76 | if error == "": 77 | if with_hd: 78 | return ERROR_STRINGS[ERROR_STRING_UNKNOWN_ERROR_WITH_HD] % (logname, logname) 79 | else: 80 | return ERROR_STRINGS[ERROR_STRING_UNKNOWN_ERROR_WITHOUT_HD] % logname 81 | else: 82 | return ERROR_STRINGS[ERROR_STRING_KNOWN_ERROR] % error 83 | 84 | # minimum hardware specs: 85 | # memory checks should be done against MIN_SYSTEM_RAM_MB since libxc 86 | # reports the total system ram after the Xen heap. The UI should 87 | # display the value given by MIN_SYSTEM_RAM_MB_RAW. 88 | min_primary_disk_size_old = 12 #GB 89 | min_primary_disk_size = 46 #GB 90 | max_primary_disk_size_dos = 2047 #GB 91 | MIN_SYSTEM_RAM_MB_RAW = 1024 # MB 92 | MIN_SYSTEM_RAM_MB = MIN_SYSTEM_RAM_MB_RAW - 100 93 | 94 | # Change this to True to enable GPT partitioning instead of DOS partitioning 95 | GPT_SUPPORT = True 96 | 97 | # filesystems and partitions (sizes in MB): 98 | boot_size = 512 99 | root_mbr_size_old = 4096 100 | root_mbr_size = 18432 101 | root_gpt_size_old = 3584 102 | root_gpt_size = 17920 103 | root_size_old = max(root_mbr_size_old, root_gpt_size_old) # used for free space calculations 104 | root_size = max(root_mbr_size, root_gpt_size) # used for free space calculations 105 | backup_size_old = 4096 106 | backup_size = 18432 107 | swap_file_size = 512 108 | swap_size = 1024 109 | logs_size = 4096 110 | logs_free_space = 20 111 | 112 | # filesystems and partitions types: 113 | bootfs_type = 'vfat' 114 | rootfs_type = 'ext3' 115 | logsfs_type = 'ext3' 116 | 117 | # filesystems and partitions labels: 118 | bootfs_label = "BOOT-%s" 119 | rootfs_label = "root-%s" 120 | swap_file = '/var/swap/swap.001' 121 | swap_label = 'swap-%s' 122 | logsfs_label_prefix = 'logs-' 123 | logsfs_label = logsfs_label_prefix + '%s' 124 | 125 | MIN_PASSWD_LEN=6 126 | 127 | # file locations - installer filesystem 128 | EULA_PATH = "/opt/xensource/installer/EULA" 129 | INSTALLER_DIR="/opt/xensource/installer" 130 | timezone_data_file = '/opt/xensource/installer/timezones' 131 | kbd_data_file = '/opt/xensource/installer/keymaps' 132 | ANSWERFILE_PATH = '/tmp/answerfile' 133 | ANSWERFILE_GENERATOR_PATH = '/tmp/answerfile_generator' 134 | SCRIPTS_DIR = "/tmp/scripts" 135 | EXTRA_SCRIPTS_DIR = "/tmp/extra-scripts" 136 | defaults_data_file = '/opt/xensource/installer/defaults.json' 137 | SYSFS_IBFT_DIR = "/sys/firmware/ibft" 138 | 139 | # host filesystem - always absolute paths from root of install 140 | # and never start with a '/', so they can be used safely with 141 | # os.path.join. 142 | ANSWERS_FILE = "upgrade_answers" 143 | INVENTORY_FILE = "etc/xensource-inventory" 144 | XENCOMMONS_FILE = "etc/sysconfig/xencommons" 145 | OLD_BLOB_DIRECTORY = "var/xapi/blobs" 146 | BLOB_DIRECTORY = "var/lib/xcp/blobs" 147 | 148 | MAIN_REPOSITORY_NAME = 'xcp:main' 149 | MAIN_REPOSITORY_GPG_KEY_FILE = '/opt/xensource/installer/RPM-GPG-KEY-xcpng' 150 | 151 | MAIN_XS_REPOSITORY_NAME = 'xs:main' 152 | INTERNAL_REPOS = [MAIN_XS_REPOSITORY_NAME, "xs:xenserver-transfer-vm", "xs:linux", "xcp:extras"] 153 | 154 | FIRSTBOOT_DATA_DIR = "etc/firstboot.d/data" 155 | INSTALLED_REPOS_DIR = "etc/xensource/installed-repos" 156 | NETWORK_DB = "var/lib/xcp/networkd.db" 157 | NETWORKD_DB = "usr/bin/networkd_db" 158 | NET_SCR_DIR = "etc/sysconfig/network-scripts" 159 | OLD_XAPI_DB = 'var/xapi/state.db' 160 | XAPI_DB = 'var/lib/xcp/state.db' 161 | CLUSTERD_CONF = 'var/opt/xapi-clusterd/db' 162 | 163 | POST_INSTALL_SCRIPTS_DIR = "etc/xensource/scripts/install" 164 | 165 | SYSLINUX_CFG = "syslinux.cfg" 166 | ROLLING_POOL_DIR = "boot/installer" 167 | 168 | HYPERVISOR_CAPS_FILE = "/sys/hypervisor/properties/capabilities" 169 | SAFE_2_UPGRADE = "var/preserve/safe2upgrade" 170 | 171 | # timer to exit installer after fatal error 172 | AUTO_EXIT_TIMER = 10 * 1000 173 | 174 | # bootloader timeout 175 | BOOT_MENU_TIMEOUT = 50 176 | 177 | # timeout used for multipath iscsi 178 | MPATH_ISCSI_TIMEOUT = 15 179 | 180 | ISCSI_NODES = 'var/lib/iscsi/nodes' 181 | 182 | # prepare configuration for common criteria security 183 | CC_PREPARATIONS = False 184 | CC_FIREWALL_CONF = '/opt/xensource/installer/common_criteria_firewall_rules' 185 | 186 | # list of dom0 services that will be disabled for common criteria preparation, 187 | # and these can be overridden by answer file 188 | SERVICES = ["sshd"] 189 | 190 | # List of services which must have run before allowing an upgrade. 191 | # These services need to have been run because they are only run after an 192 | # install, not an upgrade so if they don't run before upgrading they will never 193 | # be run. 194 | INIT_SERVICE_FILES = [ 195 | 'var/lib/misc/ran-network-init', 196 | 'var/lib/misc/ran-storage-init', 197 | ] 198 | -------------------------------------------------------------------------------- /cpiofile.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xcp-ng/host-installer_old/a670617e2554ca6ab344d51c1224f319c01c434a/cpiofile.py -------------------------------------------------------------------------------- /doc/answerfile.txt: -------------------------------------------------------------------------------- 1 | Answerfile Schema 2 | ================= 3 | 4 | Optional features are marked '?' 5 | Features that can appear zero or more times are marked '*' 6 | Deprecated features are marked '[D]' 7 | 8 | 9 | Clean install (no backup, no config preservation): 10 | 11 | | 12 | ... 13 | 14 | 15 | 16 | Re-install (backup, no config preservation): 17 | 18 | 19 | ... 20 | 21 | 22 | 23 | Upgrade (backup, preserve config): 24 | 25 | 26 | ... 27 | 28 | 29 | 30 | Restore: 31 | 32 | 33 | ... 34 | 35 | 36 | 37 | Concerning clean install, re-install and upgrade: 38 | 39 | Optional attributes: 40 | 41 | netinstall-gpg-check=bool 42 | 43 | Check authenticity of repository metadata and RPMs (GPG signatures) (new in 8.0) 44 | 45 | Default: True 46 | 47 | Common Elements 48 | --------------- 49 | 50 | repo 51 | repo* 52 | 53 | where type is one of: 54 | 55 | local (repo ignored) 56 | url 57 | nfs 58 | 59 | 'source' defines the location of the installation repository or a 60 | Supplemental Pack. There may be multiple 'source' elements. 61 | 62 | 'driver-source' defines the source of a Supplemental Pack containing 63 | device drivers to be loaded by the installer and included after 64 | installation of the main repository. 65 | 66 | Repository formats: 67 | 68 | nfs - server:/path/ 69 | 70 | url - one of: 71 | 72 | http://[user[:passwd]]@host[:port]/path/ 73 | https://[user[:passwd]]@host[:port]/path/ 74 | ftp://[user[:passwd]]@host[:port]/path/ 75 | file:///path/ 76 | nfs://server:/path/ 77 | 78 | 79 | grub2|extlinux[D]|grub[D]? 80 | 81 | Default: mbr 82 | 83 | grub is no longer supported as of 6.0. extlinux is no longer supported as of 7.0 84 | 85 | Defines the bootloader variant and location. 86 | 87 | Optional attributes: 88 | 89 | write-boot-entry=bool 90 | 91 | Whether to modify the EFI Boot Manager and write a boot 92 | entry for a UEFI installation. (new in 7.1) 93 | 94 | Default: True 95 | 96 | 97 | bridge|openvswitch|vswitch? 98 | 99 | Default: bridge (5.6 FP1 and earlier), vswitch (6.0 and later) 100 | 101 | Defines the network stack variant. 102 | 103 | 104 | * 105 | 106 | where stage is one of: 107 | 108 | installation-start (new in 6.0) 109 | filesystem-populated 110 | installation-complete 111 | 112 | and type is one of: 113 | 114 | nfs 115 | url 116 | 117 | Defines a shell or python script to be invoked at the defined 118 | stage. Args passed to the script: 119 | 120 | installation-start - None 121 | 122 | filesystem-populated - mnt (mount point of root filesystem) 123 | 124 | installation-complete - 0 | 1 (success or failure) 125 | 126 | url[D] 127 | 128 | If 'type' is 'nfs' then 'url' is taken to be an nfs location, 129 | else 'url' is treated as a url determined by its protocol. 130 | 131 | Replaced by