From 7e234e0bdc05327dd286031c9d69328543579d75 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Thu, 27 Nov 2014 22:32:09 -0800 Subject: [PATCH 1/6] oem: add grub configs for gce and onmetal Our GRUB setup now offers a proper hook for OEMs, these customizations were previously handled by running sed on the old SYSLINUX configs. --- .../coreos-base/oem-azure/files/grub.cfg | 7 +++++++ ...m-azure-0.0.2-r1.ebuild => oem-azure-0.0.3.ebuild} | 1 + .../coreos-overlay/coreos-base/oem-gce/files/grub.cfg | 7 +++++++ .../coreos-base/oem-gce/oem-gce-0.0.2-r10.ebuild | 1 - .../{oem-gce-0.0.2.ebuild => oem-gce-0.0.3.ebuild} | 1 + .../coreos-base/oem-rackspace-onmetal/files/grub.cfg | 11 +++++++++++ ....0.4.ebuild => oem-rackspace-onmetal-0.0.5.ebuild} | 1 + 7 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/files/grub.cfg rename sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/{oem-azure-0.0.2-r1.ebuild => oem-azure-0.0.3.ebuild} (95%) create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/grub.cfg delete mode 120000 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r10.ebuild rename sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/{oem-gce-0.0.2.ebuild => oem-gce-0.0.3.ebuild} (96%) create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/files/grub.cfg rename sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/{oem-rackspace-onmetal-0.0.4.ebuild => oem-rackspace-onmetal-0.0.5.ebuild} (95%) diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/files/grub.cfg b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/files/grub.cfg new file mode 100644 index 0000000000..f80c5585ba --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/files/grub.cfg @@ -0,0 +1,7 @@ +# CoreOS GRUB settings + +# Azure only has a serial console. +set linux_console="console=ttyS0,115200n8" +serial com0 --speed=115200 --word=8 --parity=no +terminal_input serial_com0 +terminal_output serial_com0 diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/oem-azure-0.0.2-r1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/oem-azure-0.0.3.ebuild similarity index 95% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/oem-azure-0.0.2-r1.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/oem-azure-0.0.3.ebuild index e670ec9dc8..3310a1c0c0 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/oem-azure-0.0.2-r1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-azure/oem-azure-0.0.3.ebuild @@ -25,4 +25,5 @@ src_prepare() { src_install() { insinto "/usr/share/oem" doins ${T}/cloud-config.yml + doins ${FILESDIR}/grub.cfg } diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/grub.cfg b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/grub.cfg new file mode 100644 index 0000000000..48d915f7bd --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/files/grub.cfg @@ -0,0 +1,7 @@ +# CoreOS GRUB settings + +# GCE only has a serial console. +set linux_console="console=ttyS0,115200n8" +serial com0 --speed=115200 --word=8 --parity=no +terminal_input serial_com0 +terminal_output serial_com0 diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r10.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r10.ebuild deleted file mode 120000 index a70b09de78..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2-r10.ebuild +++ /dev/null @@ -1 +0,0 @@ -oem-gce-0.0.2.ebuild \ No newline at end of file diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.3.ebuild similarity index 96% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.3.ebuild index 9e9dcddd6e..423839dfeb 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.2.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-gce/oem-gce-0.0.3.ebuild @@ -34,4 +34,5 @@ src_install() { insinto "/usr/share/oem" doins ${T}/cloud-config.yml + doins ${FILESDIR}/grub.cfg } diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/files/grub.cfg b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/files/grub.cfg new file mode 100644 index 0000000000..a63b8dcd54 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/files/grub.cfg @@ -0,0 +1,11 @@ +# CoreOS GRUB settings + +# Rackspace wanted a longer timeout, I forget why. (15 seconds) +set timeout=15 + +# Switch default console to ttyS4, only applies to Linux since +# GRUB needs exact IO ports for non-standard serial devices. +set linux_console="console=ttyS4,115200n8 8250.nr_uarts=5" + +# Blacklist MEI, the firmware is just plain broken. +set linux_append="modprobe.blacklist=mei_me" diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/oem-rackspace-onmetal-0.0.4.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/oem-rackspace-onmetal-0.0.5.ebuild similarity index 95% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/oem-rackspace-onmetal-0.0.4.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/oem-rackspace-onmetal-0.0.5.ebuild index ada1ded465..890d3280a5 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/oem-rackspace-onmetal-0.0.4.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-rackspace-onmetal/oem-rackspace-onmetal-0.0.5.ebuild @@ -26,4 +26,5 @@ src_install() { insinto "/usr/share/oem" doins ${T}/cloud-config.yml + doins ${FILESDIR}/grub.cfg } From b666a1bb5e17309bcbd2a93e2ad32f4ed7d0b140 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Fri, 28 Nov 2014 11:26:35 -0800 Subject: [PATCH 2/6] xen: update to latest release, 4.4.1 I've seen somewhat more success running this version under QEMU than the last time I tried. With luck I can get something all the way working. :) --- .../profiles/coreos/base/package.accept_keywords | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords index dc89045401..7da989811b 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords @@ -97,10 +97,10 @@ dev-util/checkbashisms =sys-fs/lvm2-2.02.107 =sys-block/thin-provisioning-tools-0.3.2 -# this version includes the xen target -=sys-boot/grub-2.02_beta2 -# current stable xen-tools doesn't build without multilib -=app-emulation/xen-tools-4.4.0-r9 +# current stable (4.3.x) xen-tools doesn't build without multilib +~app-emulation/xen-4.4.1 +~app-emulation/xen-tools-4.4.1 +~app-emulation/xen-pvgrub-4.4.1 # Security update, Gentoo hasn't finished marking it stable yet. # https://www.openssl.org/news/secadv_20141015.txt From 90c69481642b3c181c267f1d2115031414b32078 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Fri, 28 Nov 2014 11:35:58 -0800 Subject: [PATCH 3/6] coreos-dev: prune i7z from dev images, we don't need it Left over from something chromeos. --- .../coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild | 8 -------- 1 file changed, 8 deletions(-) diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild index 21c56cfbfb..aa8a25dc6d 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild @@ -53,11 +53,3 @@ RDEPEND=" sys-process/procps sys-process/psmisc " - -# TODO: sys-apps/iotools -X86_DEPEND=" - app-benchmarks/i7z -" - -RDEPEND="${RDEPEND} x86? ( ${X86_DEPEND} )" -RDEPEND="${RDEPEND} amd64? ( ${X86_DEPEND} )" From ccc3361d79eac32ba77bcf3e99668ef8626a3c3e Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Fri, 28 Nov 2014 11:39:00 -0800 Subject: [PATCH 4/6] coreos-dev: Add vm-testing use flag to pull in QEMU and Xen Experimenting with ways to do more comprehensive platform testing. If it proves practical then we can enable this by default. --- ...s-dev-0.1.0-r72.ebuild => coreos-dev-0.1.0-r73.ebuild} | 0 .../coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild | 8 +++++++- .../coreos-overlay/coreos/config/env/app-emulation/xen | 5 +++++ .../coreos/config/env/app-emulation/xen-tools | 6 ++++++ 4 files changed, 18 insertions(+), 1 deletion(-) rename sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/{coreos-dev-0.1.0-r72.ebuild => coreos-dev-0.1.0-r73.ebuild} (100%) create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos/config/env/app-emulation/xen create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos/config/env/app-emulation/xen-tools diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0-r72.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0-r73.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0-r72.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0-r73.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild index aa8a25dc6d..aeb433821d 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/coreos-dev/coreos-dev-0.1.0.ebuild @@ -9,7 +9,7 @@ HOMEPAGE="http://coreos.com" LICENSE="GPL-2" SLOT="0" KEYWORDS="amd64 arm x86" -IUSE="" +IUSE="vm-testing" # The dependencies here are meant to capture "all the packages # developers want to use for development, test, or debug". This @@ -52,4 +52,10 @@ RDEPEND=" sys-process/ktop sys-process/procps sys-process/psmisc + vm-testing? ( + app-emulation/xen + app-emulation/xen-pvgrub + app-emulation/xen-tools + app-emulation/qemu + ) " diff --git a/sdk_container/src/third_party/coreos-overlay/coreos/config/env/app-emulation/xen b/sdk_container/src/third_party/coreos-overlay/coreos/config/env/app-emulation/xen new file mode 100644 index 0000000000..60101e0239 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos/config/env/app-emulation/xen @@ -0,0 +1,5 @@ +# Creating symlinks on FAT doesn't work, so don't do that +INSTALL_MASK="${INSTALL_MASK} + /boot/xen-?.?.gz + /boot/xen-?.gz + /boot/xen.gz" diff --git a/sdk_container/src/third_party/coreos-overlay/coreos/config/env/app-emulation/xen-tools b/sdk_container/src/third_party/coreos-overlay/coreos/config/env/app-emulation/xen-tools new file mode 100644 index 0000000000..422b8b0eda --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos/config/env/app-emulation/xen-tools @@ -0,0 +1,6 @@ +# We provide xenstore as a standalone package +INSTALL_MASK="${INSTALL_MASK} + /usr/bin/xenstore + /usr/lib/debug/usr/bin/xenstore.debug + /usr/lib/debug/usr/lib*/libxenstore.so* + /usr/lib*/libxenstore.so*" From b93f7aa695235cae3e93fca6bb5615db2a39cf60 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Fri, 28 Nov 2014 13:37:49 -0800 Subject: [PATCH 5/6] coreos-kernel: enable Xen backend drivers and watchdog For running CoreOS as a Dom0 host. --- ...l-3.17.2-r2.ebuild => coreos-kernel-3.17.2-r3.ebuild} | 0 .../coreos-kernel/files/x86_64_defconfig-3.17.2 | 9 ++++++--- 2 files changed, 6 insertions(+), 3 deletions(-) rename sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/{coreos-kernel-3.17.2-r2.ebuild => coreos-kernel-3.17.2-r3.ebuild} (100%) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-3.17.2-r2.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-3.17.2-r3.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-3.17.2-r2.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-3.17.2-r3.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/files/x86_64_defconfig-3.17.2 b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/files/x86_64_defconfig-3.17.2 index 9d5bad9b4a..2dda75c398 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/files/x86_64_defconfig-3.17.2 +++ b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/files/x86_64_defconfig-3.17.2 @@ -1313,6 +1313,7 @@ CONFIG_BLK_DEV_NVME=m # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set CONFIG_XEN_BLKDEV_FRONTEND=m +CONFIG_XEN_BLKDEV_BACKEND=m CONFIG_VIRTIO_BLK=m # CONFIG_BLK_DEV_HD is not set CONFIG_BLK_DEV_RBD=m @@ -1864,6 +1865,7 @@ CONFIG_USB_NET_DRIVERS=m # # CONFIG_WAN is not set CONFIG_XEN_NETDEV_FRONTEND=m +CONFIG_XEN_NETDEV_BACKEND=m CONFIG_VMXNET3=m CONFIG_HYPERV_NET=m # CONFIG_ISDN is not set @@ -2348,7 +2350,7 @@ CONFIG_ITCO_VENDOR_SUPPORT=y # CONFIG_W83977F_WDT is not set # CONFIG_MACHZ_WDT is not set # CONFIG_SBC_EPX_C3_WATCHDOG is not set -# CONFIG_XEN_WDT is not set +CONFIG_XEN_WDT=m # # PCI-based Watchdog Cards @@ -3005,15 +3007,16 @@ CONFIG_XEN_SELFBALLOONING=y CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y CONFIG_XEN_SCRUB_PAGES=y CONFIG_XEN_DEV_EVTCHN=m -# CONFIG_XEN_BACKEND is not set +CONFIG_XEN_BACKEND=y CONFIG_XENFS=m CONFIG_XEN_COMPAT_XENFS=y CONFIG_XEN_SYS_HYPERVISOR=y CONFIG_XEN_XENBUS_FRONTEND=y -# CONFIG_XEN_GNTDEV is not set +CONFIG_XEN_GNTDEV=m CONFIG_XEN_GRANT_DEV_ALLOC=m CONFIG_SWIOTLB_XEN=y CONFIG_XEN_TMEM=m +CONFIG_XEN_PCIDEV_BACKEND=m CONFIG_XEN_PRIVCMD=m CONFIG_XEN_ACPI_PROCESSOR=m CONFIG_XEN_MCE_LOG=y From 61e08f49e35ca97313d0338a7f47d41fc9a9d567 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Sat, 29 Nov 2014 17:51:16 -0800 Subject: [PATCH 6/6] oem-xendom0: experimental OEM for testing Xen under QEMU For use with the `qemu_xen` vm type. The base image's packages must be built with the `USE=vm-testing` flag set in order to include Xen. --- .../oem-xendom0/files/cloud-config.yml | 32 +++++++++++++++++++ .../coreos-base/oem-xendom0/files/grub.cfg | 15 +++++++++ .../oem-xendom0/oem-xendom0-4.4.1.ebuild | 29 +++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/files/cloud-config.yml create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/files/grub.cfg create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/oem-xendom0-4.4.1.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/files/cloud-config.yml b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/files/cloud-config.yml new file mode 100644 index 0000000000..32e95c27aa --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/files/cloud-config.yml @@ -0,0 +1,32 @@ +#cloud-config + +coreos: + units: + - name: xenstored.service + command: start + runtime: yes + content: | + [Unit] + RequiresMountsFor=/proc/xen + + [Service] + ExecStartPre=/usr/sbin/modprobe xen-evtchn + ExecStart=/usr/sbin/xenstored --no-fork + ExecStartPost=/usr/bin/xenstore write /local/domain/0/name Domain-0 + ExecStartPost=/usr/bin/xenstore write /local/domain/0/domid 0 + - name: xenconsoled.service + command: start + runtime: yes + content: | + [Unit] + Requires=xenstored.service + After=xenstored.service + + [Service] + ExecStart=/usr/sbin/xenconsoled + oem: + id: xendom0 + name: Xen Domain0 for Testing + version-id: @@OEM_VERSION_ID@@ + home-url: https://coreos.com + bug-report-url: https://github.com/coreos/bugs/issues diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/files/grub.cfg b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/files/grub.cfg new file mode 100644 index 0000000000..1a524b6c84 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/files/grub.cfg @@ -0,0 +1,15 @@ +# Boot CoreOS as Xen Domain0 + +set default=coreos-xen + +set xen_console="console=vga,com1 com1=115200,8n1" +set linux_console="console=hvc0 console=tty0" +serial com0 --speed=115200 --word=8 --parity=no +terminal_input console serial_com0 +terminal_output console serial_com0 + +menuentry "CoreOS on Xen" --id=coreos-xen { + multiboot /xen-@@XEN_VERSION@@.gz $xen_console noreboot + gptprio.next -d root -u usr_uuid + module /boot/vmlinuz $linux_console $linux_root usr=PARTUUID=$usr_uuid +} diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/oem-xendom0-4.4.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/oem-xendom0-4.4.1.ebuild new file mode 100644 index 0000000000..67dfd0d5a0 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/oem-xendom0/oem-xendom0-4.4.1.ebuild @@ -0,0 +1,29 @@ +# Copyright (c) 2013 CoreOS, Inc.. All rights reserved. +# Distributed under the terms of the GNU General Public License v2 + +EAPI=5 + +DESCRIPTION="OEM suite for Xen testing" +HOMEPAGE="" +SRC_URI="" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="amd64" +IUSE="" + +# no source directory +S="${WORKDIR}" + +src_prepare() { + sed -e "s%@@OEM_VERSION_ID@@%${PVR}%g" \ + ${FILESDIR}/cloud-config.yml > ${T}/cloud-config.yml || die + sed -e "s%@@XEN_VERSION@@%${PV}%g" \ + ${FILESDIR}/grub.cfg > ${T}/grub.cfg || die +} + +src_install() { + insinto "/usr/share/oem" + doins ${T}/cloud-config.yml + doins ${T}/grub.cfg +}