diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c1875053..4cab1c07b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -285,7 +285,7 @@ jobs: run: | set -euxo pipefail find test/.tmp -name '*.deb' -print0 | xargs -t -0 -I {} \ - sh -c "dpkg --fsys-tarfile {} | tar -C test/.tmp --wildcards --extract '*vmlinuz*' --file -" + sh -c "dpkg --fsys-tarfile {} | tar -C test/.tmp --wildcards --extract '*vmlinuz*' --wildcards --extract '*config*' --file -" - name: Run local integration tests if: runner.os == 'Linux' diff --git a/xtask/src/run.rs b/xtask/src/run.rs index 8bba7a532..652e4d844 100644 --- a/xtask/src/run.rs +++ b/xtask/src/run.rs @@ -340,6 +340,28 @@ pub fn run(opts: Options) -> Result<()> { } } } + + // Copy kernel configs as well (based on Debian path conventions) + let config_path = PathBuf::from( + kernel_image + .to_string_lossy() + .replace("vmlinuz-", "config-"), + ); + if config_path.exists() { + let mut destination = PathBuf::from("/boot"); + destination.push(config_path.file_name().expect("filename")); + for bytes in [ + "dir /boot 0755 0 0\n".as_bytes(), + "file ".as_bytes(), + destination.as_os_str().as_bytes(), + " ".as_bytes(), + config_path.as_os_str().as_bytes(), + " 0755 0 0\n".as_bytes(), + ] { + stdin.write_all(bytes).expect("write"); + } + } + // Must explicitly close to signal EOF. drop(stdin);