Upgrade firecracker from v1.1.0 to v1.4.1
Issue #, if available:
Description of changes: Upgrade firecracker from v1.1.0 to v.1.4.1
Firecracker diff https://github.com/firecracker-microvm/firecracker/compare/v1.1.0...v1.4.1
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
Not sure how the upgrade to v1.1 was performed previously, but it seems like fc-go-sdk remained at v1.0. The correct process should be
- upgrade fc in fc-go-sdk; and
- upgrade fccd
The correct process should be upgrade fc in fc-go-sdk; and upgrade fccd
firecracker submodule in the repo is used to compile firecracker binary for CI testing.
We then uses firecracker-go-sdk to talk to firecracker.
As long as API from different versions of firecracker are compatible, we won't have issue.
Yeah, it's better to align though.
CI is failing due to issue compiling firecracker using upstream devtool.
_submodules/firecracker/tools/devtool -y build --release && \
_submodules/firecracker/tools/devtool -y strip
| [Firecracker devtool] About to pull docker image public.ecr.aws/firecracker/fcuvm:v55
| v55: Pulling from firecracker/fcuvm
| 74ac377868f8: Pull complete
| 83ee436935aa: Pull complete
| 46994605c311: Pull complete
| 85a877bd2809: Pull complete
| e39a8eb621aa: Pull complete
| 0ddcea765f91: Pull complete
| be45bf2bd951: Pull complete
| ffdb30d3fd42: Pull complete
| edbdb3176e37: Pull complete
| Digest: sha256:aa52d6030f44ceb19b4f0e75c885639729a4f43196397016df41ebc1e7497686
| Status: Downloaded newer image for public.ecr.aws/firecracker/fcuvm:v55
| public.ecr.aws/firecracker/fcuvm:v55
| fatal: not a git repository: /firecracker/../../.git/modules/firecracker
| make: *** [Makefile:348: bin/firecracker] Error 128
| 🚨 Error: The command exited with status 2
| user command error: exit status 2
The root cause is the build script release.sh of firecracker v1.3.3 uses git describe to get firecracker version. This won't be an issue if you directly build from firecracker repo. However firecracker-containerd includes firecracker as a submodule, which links firecrcker's .git to firecrecker-containerd's directory.
→ cat .git
gitdir: ../.git/modules/firecracker
Since firecracker is complied in a docker container, not mounting the git directory from fc-cd but using git command will give us the above error.
Talked to firecracker, they have a fix in the upcoming release. We probably should wait until the new release, and directly upgrade to it.
@fangn2 do you know the reason of the fc kernel build failure?
make: *** [Makefile:363: _submodules/firecracker/build/kernel/linux-4.14/vmlinux-4.14-x86_64.bin] Error 141
This change LGTM if the failure is fixed.
The kernel build failures are coming from here: https://github.com/firecracker-microvm/firecracker/blob/02dd0328589c59ae11b7ad13eaf412410f8e72e1/resources/tests/build_kernel.sh#L45-L49
head exits after reading 1 line which sends SIGPIPE to sort which returns 141. The set -euo pipefail causes the whole script to exit at this point.
It's worth noting that upstream firecracker moved to prebuilt binaries and devtool build_kernel is going to go away on our next update: https://github.com/firecracker-microvm/firecracker/pull/3896
I misread what FC did. They're still building from source, but you can't specify a config any more and it's not built in a container. The actual scripts to build the kernel are pretty small, so I think we can just copy the bits we need and have it all in this project.