23004 Commits

Author SHA1 Message Date
Kai Lüke
daf0a01b55 coreos-base/oem-gce: grant CAP_NET_ADMIN to set routes for LB
With the switch from rkt to systemd-nspawn the ability for the service
to set the routing entries for the TCP load balancer got lost,
resulting in an unreachable LB as reported in
https://github.com/kinvolk/Flatcar/issues/459

The fix also reported there is to retain CAP_NET_ADMIN when starting
the service.
2021-07-29 15:30:39 +02:00
Flatcar Buildbot
990e4f82b8 sys-kernel: Upgrade Linux Firmware 20210511 to 20210716 2021-07-29 07:07:37 +00:00
Kai Lüke
c1b2d88aa2 build_image_util.sh: delete vmlinuz file from /usr partition
The vmlinuz kernel image gets installed to /usr/boot/ but isn't usable
for dm-verity until it gets copied over to /boot/flatcar/ and the hash
gets embedded at a particular offset. The file in /usr/boot/ uses space
while it's not having a real purpose as long as dm-verity is used.

Delete the vmlinuz file under /usr/boot/ to free up space. When
generating the ISO image we use the vmlinuz file from /boot/flatcar/
which also has the advantage that we only distribute a single vmlinuz
file with one particular checksum.
2021-07-28 20:59:16 +02:00
Kai Lüke
1c0936769d sys-fs/cryptsetup: Sync with Gentoo 2021-07-28 19:43:22 +02:00
Jeremi Piotrowski
6ce5d3165f
build_library/toolchain_util: check CBUILD+CHOST for rust warning
For consistency with code further down in the file: aarch64 cross compilation only applies when CBUILD is x86,
for native aarch64 builds rust is guaranteed to have aarch64 rustlibs.
2021-07-28 16:47:13 +02:00
Kai Lüke
b892315775
Merge pull request #131 from kinvolk/kai/btrfs-usr-oem
disk_util: support compressed btrfs filesystems, use btrfs for the OEM partition
2021-07-28 13:34:50 +02:00
Kai Lüke
beabd977e1 Merge pull request #1106 from kinvolk/kai/bootengine-verity-hashoffset
Support BTRFS in OEM and /usr partitions
2021-07-28 13:34:37 +02:00
Kai Lüke
622a99058c coreos-base/update_engine: support btrfs as /usr filesystem
This pulls in
https://github.com/kinvolk/update_engine/pull/11
2021-07-28 13:29:02 +02:00
Kai Lüke
ab2467e547 sys-apps/seismograph: support btrfs in rootdev
This pulls in
https://github.com/kinvolk/seismograph/pull/6
2021-07-28 13:28:55 +02:00
Kai Lüke
e45a6140d0 sys-apps/ignition: support btrfs on the OEM partition
This pulls in
https://github.com/kinvolk/ignition/pull/21
2021-07-28 13:28:45 +02:00
Kai Lüke
bdc7f36d4f sys-kernel/coreos-modules: use 4k pages for arm64
Btrfs filesystems do not support a non-standard 64k page size on arm64
when the filesystem was created by a 4k page size system.

Use the default page size for arm64 to ensure compatibility with
btrfs filesystems created by amd64 systems.
2021-07-28 13:28:45 +02:00
Kai Lüke
c01560ba63 coreos-base/coreos-init: support btrfs on the OEM partition
This pulls in
https://github.com/kinvolk/init/pull/42
2021-07-28 13:28:28 +02:00
Kai Lüke
42b4f612ca sys-kernel/bootengine: support btrfs /usr filesystems
Pulls in https://github.com/kinvolk/bootengine/pull/25
2021-07-28 13:28:10 +02:00
Jeremi Piotrowski
cfbc81ee59
Merge pull request #136 from kinvolk/jepio/boostrap-use-stage1-properly
bootstrap_sdk: override seed path after building stage1
2021-07-28 12:15:34 +02:00
Kai Lüke
1240faa3ea Merge pull request #1136 from kinvolk/kai/vmlinuz-compression
sys-kernel/coreos-modules: switch to gzip/zstd compression
2021-07-28 11:29:43 +02:00
Kai Lüke
29f2903c87 sys-kernel/coreos-modules: switch to gzip/zstd compression
With the default gzip compression the 60 MB limit for the vmlinuz
bundle of kernel+initramfs was reached. The limit comes from the size
of the /boot partition which is 128 MB large and the kernel needs to
fit twice, in addition to GRUB.

Use zstd for the initramfs as it provides a similar speed but better
compression. For the kernel we can't switch yet to zstd for arm64
but for amd64 it works.
2021-07-27 14:48:26 +02:00
Kai Lüke
e4f811dd0d disk_layout: optimize btrfs filesystem overhead
The defaults already give more space than the ext4 defaults but it's
recommended to use the mixed mode for filesystems smaller than 1-5 GB.
Another aspect is the duplication of metadata and while it currently is
off it's actually related to the underlying block device and could
change as soon as the block device type changes.

Select the mixed mode that uses a merged area for data and metadata
blocks. Also ensure that no metadata duplication gets enabled
automatically.
2021-07-27 14:23:47 +02:00
Kai Lüke
bc97e15c3c disk_layout: use btrfs for the OEM partition
The compression feature of btrfs allows us to store more in the
size-limited /usr and OEM partitions. The size should of course still
be monitored to not bloat the image but more headroom helps to try
things out quickly without hitting the hard limit which fails the
build.
Use btrfs for the OEM partition but with zlib compression because
the outdated GRUB version doesn't support zstd yet.
New subvolumes currently can't be used for the OEM partition as default
subvolumes because GRUB tries to read the grub.cfg from the top
subvolume (at least with our old version). (We could however use
subvolumes for the /usr partition when switching to btrfs if that
makes any sense.)
2021-07-27 14:08:42 +02:00
Kai Lüke
d0cf1a4d19 disk_util: support compressed btrfs filesystems
The limited /usr and OEM partiton size is a challenge when adding new
packages or updating a package. Since the disk layout can't be changed
for compatibility reasons when updating an existing instance, we can't
simply try out something without ensuring first that enough space is
there by removing something else. This situation can be relaxed by
leveraging btrfs compression. There was some support for btrfs but it
was a bit outdated and didn't allow to configure compression or setting
read-only flags.
Fix the btrfs support, allow to mark the default subvolume as read only
and add a compression variable that allows to select a compression
algorithm. Instead of enabling compression by setting the mount option,
we can set the filesystem attribute which has the benefit that
compression is still used with the default mount options for this (top)
directory and its contents. While for the ext2 /usr partition a hack
existed to force read-only mode by modifying some bytes and checking
these bytes could also be used to know if read-only should be used to
prevent corruption of dm-verity data, we rather check directly whether
dm-verity is active for this partition and mount it read-only (and
with the norecovery option to really prevent any write attempt).
2021-07-27 14:08:42 +02:00
Kai Lüke
29fbd62339
Merge pull request #135 from kinvolk/kai/test-update
jenkins/kola/qemu(_uefi): run update test from previous release
2021-07-27 12:50:29 +02:00
Kai Lüke
e96c1c5e6d jenkins/kola/qemu(_uefi): run update test from previous release
The newly enabled update test performs an update from the built image
to itself. This is useful to test that the update mechanism didn't
break but it doesn't say if the built image will be accepted as update
from the previous official release.

Introduce an additional kola run that begins from the previous official
release and tests to update to the built image. Since the test does two
updates it also covers the case of updating from the built image to the
built image. Thus, we can skip the test in the normal run.
This new kola run is done first to keep the qemu-latest symlink valid
for the main test suite.
2021-07-27 11:51:58 +02:00
Jeremi Piotrowski
e2c10a9fe8 bootstrap_sdk: override seed path after building stage1
When performing a full bootstrap (stage1-4), the stage1 results are currently
discarded because of the logic in catalyst_build: the first build stage uses
the "seed" and every following stage uses the previous stages results *but*
stage1 is built before catalyst_build. So from the point of view of
catalyst_build, stage2 is the first one and uses the seed tarball.

To make sure stage1 results are used if it was built, set the SEED variable to
the latest stage1 location.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-26 16:29:13 +00:00
Kai Lüke
1b70f59cd0 jenkins/kola: share a single qemu script file 2021-07-26 15:01:24 +02:00
Jeremi Piotrowski
8e44a167d5
Merge pull request #133 from kinvolk/jepio/fix-arm64-devcontainer
disk_layout: devcontainer: use architecture agnostic part uuid
2021-07-22 22:10:29 +02:00
Dongsu Park
08ea76673f .github: list only ebuilds with a unique VERSION_OLD
Due to unnecessary wildcard listings, ebuild files including all rc or
beta are being listed. Since `VERSION_OLD` is already generated as a
unique version, we do not need to list multiple files to filter by
running `head -n1` etc. We just need to use only the specific ebuild.
Simply list only the unique ebuild file.
2021-07-22 15:31:20 +02:00
Dongsu Park
e2cd417df5 .github: make correct input for runc versions
Before passing runc versions to `sed '/-/!{s/$/_/}'`, we need to replace
`_` with `-`, because runc tarball files already have names like
`1.0.0_rc2`. Without the fix, version sort would `1.0.0` come before
`1.0.0_rc2`, which is not expected in the later steps.
2021-07-22 12:41:45 +02:00
Sayan Chowdhury
1b068b5186 Merge pull request #1126 from kinvolk/sayan/update-systemd-247.7
sys-apps/systemd: Bump to v247.7
2021-07-21 16:50:28 +05:30
Sayan Chowdhury
64ea092d0c Merge pull request #189 from kinvolk/sayan/update-to-curl-7.78
net-misc/curl: Bump curl to 7.78.0 release
2021-07-21 16:49:37 +05:30
Sayan Chowdhury
f26a5a17d3 net-misc/curl: Bump curl to 7.78.0 release
This releases includes fixes for the following CVEs:
- CVE-2021-22924
- CVE-2021-22926
- CVE-2021-22925

The changes are not sync with Gentoo upstream, rather modified in the
overlay. The changes are:
- 7.78.0 removes metalink support
- 7.78.0 remmoves references to darwinssl package

Signed-off-by: Sayan Chowdhury <sayan@kinvolk.io>
2021-07-21 13:55:05 +05:30
Sayan Chowdhury
a3715fe1d9 Merge pull request #1124 from kinvolk/linux-5.10.52-main
Upgrade Linux Kernel in main from 5.10.49 to 5.10.52
2021-07-21 13:35:35 +05:30
Flatcar Buildbot
e1e7bd2c2c sys-kernel: Upgrade Kernel 5.10.49 to 5.10.52 2021-07-21 07:10:12 +00:00
Sayan Chowdhury
cf97d4ad91 sys-apps/systemd: Bump to v247.7
Signed-off-by: Sayan Chowdhury <sayan@kinvolk.io>
2021-07-20 23:29:14 +05:30
Dongsu Park
a76fb38501 Merge pull request #1120 from kinvolk/dongsu/containerd-1.5.4
app-emulation/containerd: update to 1.5.4
2021-07-20 16:49:08 +02:00
Dongsu Park
70bfaff439 app-emulation/containerd: update to 1.5.4
Update app-emulation/containerd to 1.5.4, mainly to address
CVE-2021-32760.
2021-07-20 16:36:48 +02:00
Sayan Chowdhury
6f9eb8dd31 Merge pull request #187 from kinvolk/sayan/update-readline-8.0
sys-libs/readline: Sync with Gentoo upstream; updates to 8.1
2021-07-20 16:58:30 +05:30
Dongsu Park
2df538b480 Merge pull request #1115 from kinvolk/go-1.16.6-main
Upgrade Go in main from 1.16.5 to 1.16.6
2021-07-19 18:28:20 +02:00
Mathieu Tortuyaux
37bc8884e5
Merge pull request #132 from kinvolk/tormath1/qemu-option
build_lib/qemu_tmpl: fix short-form warning
alpha-2942.0.0
2021-07-19 17:50:06 +02:00
Jeremi Piotrowski
4ba3218d6a boostrap_sdk: only build aarch64 cross-rust on x86 hosts
The rust ebuild has some magic to detect cross-toolchains present on the
system and enable building additional cross targets. The code to trigger
the rebuild of rust is part of install_cross_rust, and checks whether
the cross directories exist in the rust installation. If they don't,
then rust is removed and rebuilt to allow for the auto-detection to
happen.

Right now there are two issues with the code. Firstly, the path that is
checked is wrong, which leads to rust always being removed and rebuilt.
The path checked is /usr/lib/rust-*/rustlib but /usr/lib/rustlib is
where the files are installed.

The second issue is that it checks for aarch64 dirs when CHOST is
aarch64-cros-linux-gnu. However, on an aarch64 host the aarch64 dirs
will already exist from building the sdk itself. The rust ebuild is not
ready to handle aarch64 hosts yet and blows up. The correct behavior is
to combine the check for CHOST with a check for the right CBUILD.

On an aarch64 host we should presumably check for the x86 CHOST and rust
dirs, but that can be added later, because it needs more work.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-19 15:11:12 +00:00
Jeremi Piotrowski
e4f57bea82 bootstrap_sdk: fix issues around lib->lib64 symlink
The arm64 profiles don't specify SYMLINK_LIB=yes, which makes sense
since arm64 systems don't support multilib in the way that we are used
to from x86. What this means is that build artifacts are installed into
separate lib and lib64 directories. The root overlay installed in stage4
needs to check for SYMLINK_LIB before trying to create a symlink,
otherwise it fails to be applied because it collides with the directory
in the rootfs.

This uncovered a second minor issues - the rust toolchain bootstrap
scripts checked for /usr/lib64/rust*, but the ebuild installs to
/usr/lib/rust.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-19 15:11:09 +00:00
Jeremi Piotrowski
0a1b0be7f3 dev-lang/rust: don't enable aarch64 cross target when host is aarch64
This does not work because the host and cross rust targets share the
same name. This needs to be reworked to (potentially) enable x86 cross
targets for aarch64 targets.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-19 15:09:01 +00:00
Jeremi Piotrowski
0064e6b3ec profiles: remove "pc xen" from arm64 GRUB_PLATFORMS
grub refuses to build these targets when host is arm64.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-19 15:08:59 +00:00
Jeremi Piotrowski
a90c4265bf profiles: move BOOSTRAP_USE=cros_host to arch indepenent part of sdk profile
So that it can apply to both arm64 and amd64 sdk profiles.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-19 15:08:56 +00:00
Jeremi Piotrowski
d460bf3a8d coreos-base/update_engine: add glib-utils to (B)DEPEND
glib-utils are used during the build so they need to be part of host
dependencies for update_engine. This only really pops up during a repeat
bootstrap, when update_engine is being built from source but glib has
been installed from a binary. BDEPEND would be the correct variable but
that requires EAPI=7, so additionally added it to DEPEND for now.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-19 15:08:54 +00:00
Jeremi Piotrowski
44fcb0513a mark platform specific host/sdk dependencies as amd64/!arm64
kola-data and google-cloud-sdk install pre-built amd64 binaries, so
there's no point installing them right now. Both could be made to work
at a later time. iucode and syslinux and are x86 specific and won't
build. selinux related packages *currently* don't work/build on arm64
but could be made to work.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-19 15:08:51 +00:00
Jeremi Piotrowski
0aaa9766c7 keyword sdk dependencies for arm64
Where the packages are part of coreos-overlay, I keyworded the ebuilds
directly to the same level of stability as amd64. Other packages have
been keyworded through the profile, as close to the amd64 level as I
could manage.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-19 15:08:48 +00:00
Dongsu Park
065661a751 Merge pull request #1113 from kinvolk/dongsu/open-vm-tools-11.3.0
app-emulation/open-vm-tools: update to 11.3.0
2021-07-19 12:01:03 +02:00
Sayan Chowdhury
2300ad3287 sys-libs/readline: Sync with Gentoo upstream
Signed-off-by: Sayan Chowdhury <sayan@kinvolk.io>
2021-07-19 14:43:33 +05:30
Flatcar Buildbot
e03a28561c dev-lang: Upgrade Go 1.16.5 to 1.16.6 2021-07-19 07:26:12 +00:00
Jeremi Piotrowski
911da26072 disk_layout: devcontainer: use architecture agnostic part uuid
The previously used uuid 4f68bce3-e8cd-4db1-96e7-fbcaf984b709 is valid
for x86_64 root partitions, which resulted in the dev container not
working with systemd-nspawn on aarch64. systemd-nspawn fails with:

  No suitable root partition found in image

Change the partition uuid to the architecture agnostic one documented
in the man page:

  A GUID partition table (GPT) with a single partition of type 0fc63daf-8483-4772-8e79-3d69d8477de4.

This makes systemd-nspawn happy on aarch64.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
2021-07-16 15:35:18 +00:00
Mathieu Tortuyaux
35387cfdff
build_lib/qemu_tmpl: fix short-form warning
starting from qemu-6.0.0, options with short-form are deprecated.

```
$ ./flatcar_production_qemu.sh
qemu-system-x86_64: -fsdev local,id=conf,security_model=none,readonly,path=/tmp/flatcar-configdrive.gyqmdrQqfA: warning: short-form boolean option 'readonly' deprecated
Please use readonly=on instead
```

See this commit: ccd3b3b811

Signed-off-by: Mathieu Tortuyaux <mathieu@kinvolk.io>
2021-07-16 16:04:50 +02:00