lib/sysroot-deploy: Refactor kernel layout parsing
I'd like to move the new canonical kernel directory to `/usr/lib/modules/$kver`, as Fedora has done. The `get_kernel_from_tree()` function now abstracts over parsing the data (src vs destination filenames, as well as checksum) in preparation for adding the new case. In preparation for this, let's change the current test suite to use the *current* directory of `/usr/lib/ostree-boot`, and also add coverage of `/boot`. Closes: #1053 Approved by: jlebon
This commit is contained in:
1 parent
8b60f63f58
commit
f1102763df
4 files changed
+125
-93
No files matched your search
+25
-14
@@ -363,8 +363,10 @@ setup_os_boot_grub2() {
|
||||
|
||||
setup_os_repository () {
|
||||
mode=$1
|
||||
bootmode=$2
|
||||
shift
|
||||
bootmode=$1
|
||||
shift
|
||||
bootdir=${1:-usr/lib/ostree-boot}
|
||||
|
||||
oldpwd=`pwd`
|
||||
|
||||
@@ -379,14 +381,19 @@ setup_os_repository () {
|
||||
cd ${test_tmpdir}
|
||||
mkdir osdata
|
||||
cd osdata
|
||||
mkdir -p boot usr/bin usr/lib/modules/3.6.0 usr/share usr/etc
|
||||
echo "a kernel" > boot/vmlinuz-3.6.0
|
||||
echo "an initramfs" > boot/initramfs-3.6.0
|
||||
bootcsum=$(cat boot/vmlinuz-3.6.0 boot/initramfs-3.6.0 | sha256sum | cut -f 1 -d ' ')
|
||||
mkdir -p usr/bin usr/lib/modules/3.6.0 usr/share usr/etc
|
||||
mkdir -p ${bootdir}
|
||||
echo "a kernel" > ${bootdir}/vmlinuz-3.6.0
|
||||
echo "an initramfs" > ${bootdir}/initramfs-3.6.0
|
||||
bootcsum=$(cat ${bootdir}/vmlinuz-3.6.0 ${bootdir}/initramfs-3.6.0 | sha256sum | cut -f 1 -d ' ')
|
||||
export bootcsum
|
||||
mv boot/vmlinuz-3.6.0 boot/vmlinuz-3.6.0-${bootcsum}
|
||||
mv boot/initramfs-3.6.0 boot/initramfs-3.6.0-${bootcsum}
|
||||
|
||||
# Add the checksum for legacy dirs (/boot, /usr/lib/ostree-boot), but not
|
||||
# /usr/lib/modules.
|
||||
if [[ $bootdir != usr/lib/modules ]]; then
|
||||
mv ${bootdir}/vmlinuz-3.6.0{,-${bootcsum}}
|
||||
mv ${bootdir}/initramfs-3.6.0{,-${bootcsum}}
|
||||
fi
|
||||
|
||||
echo "an executable" > usr/bin/sh
|
||||
echo "some shared data" > usr/share/langs.txt
|
||||
echo "a library" > usr/lib/libfoo.so.0
|
||||
@@ -458,13 +465,17 @@ os_repository_new_commit ()
|
||||
branch=${3:-testos/buildmaster/x86_64-runtime}
|
||||
echo "BOOT ITERATION: $boot_checksum_iteration"
|
||||
cd ${test_tmpdir}/osdata
|
||||
rm boot/*
|
||||
echo "new: a kernel ${boot_checksum_iteration}" > boot/vmlinuz-3.6.0
|
||||
echo "new: an initramfs ${boot_checksum_iteration}" > boot/initramfs-3.6.0
|
||||
bootcsum=$(cat boot/vmlinuz-3.6.0 boot/initramfs-3.6.0 | sha256sum | cut -f 1 -d ' ')
|
||||
bootdir=usr/lib/ostree-boot
|
||||
if ! test -d ${bootdir}; then
|
||||
bootdir=boot
|
||||
fi
|
||||
rm ${bootdir}/*
|
||||
echo "new: a kernel ${boot_checksum_iteration}" > ${bootdir}/vmlinuz-3.6.0
|
||||
echo "new: an initramfs ${boot_checksum_iteration}" > ${bootdir}/initramfs-3.6.0
|
||||
bootcsum=$(cat ${bootdir}/vmlinuz-3.6.0 ${bootdir}/initramfs-3.6.0 | sha256sum | cut -f 1 -d ' ')
|
||||
export bootcsum
|
||||
mv boot/vmlinuz-3.6.0 boot/vmlinuz-3.6.0-${bootcsum}
|
||||
mv boot/initramfs-3.6.0 boot/initramfs-3.6.0-${bootcsum}
|
||||
mv ${bootdir}/vmlinuz-3.6.0 ${bootdir}/vmlinuz-3.6.0-${bootcsum}
|
||||
mv ${bootdir}/initramfs-3.6.0 ${bootdir}/initramfs-3.6.0-${bootcsum}
|
||||
|
||||
echo "a new default config file" > usr/etc/a-new-default-config-file
|
||||
mkdir -p usr/etc/new-default-dir
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "1..19"
|
||||
echo "1..20"
|
||||
|
||||
. $(dirname $0)/libtest.sh
|
||||
|
||||
@@ -27,3 +27,23 @@ echo "1..19"
|
||||
setup_os_repository "archive-z2" "syslinux"
|
||||
|
||||
. $(dirname $0)/admin-test.sh
|
||||
|
||||
cd ${test_tmpdir}
|
||||
rm httpd osdata testos-repo sysroot -rf
|
||||
setup_os_repository "archive-z2" "syslinux" "boot"
|
||||
|
||||
${CMD_PREFIX} ostree --repo=sysroot/ostree/repo pull-local --remote=testos testos-repo testos/buildmaster/x86_64-runtime
|
||||
rev=$(${CMD_PREFIX} ostree --repo=sysroot/ostree/repo rev-parse testos/buildmaster/x86_64-runtime)
|
||||
${CMD_PREFIX} ostree admin deploy --karg=root=LABEL=MOO --karg=quiet --os=testos testos:testos/buildmaster/x86_64-runtime
|
||||
assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'options.* root=LABEL=MOO'
|
||||
assert_file_has_content sysroot/boot/loader/entries/ostree-testos-0.conf 'options.* quiet'
|
||||
assert_file_has_content sysroot/boot/ostree/testos-${bootcsum}/vmlinuz-3.6.0 'a kernel'
|
||||
assert_file_has_content sysroot/boot/ostree/testos-${bootcsum}/initramfs-3.6.0 'an initramfs'
|
||||
# kernel/initrams should also be in the tree's /boot with the checksum
|
||||
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${rev}.0/boot/vmlinuz-3.6.0-${bootcsum} 'a kernel'
|
||||
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${rev}.0/boot/initramfs-3.6.0-${bootcsum} 'an initramfs'
|
||||
assert_file_has_content sysroot/ostree/deploy/testos/deploy/${rev}.0/etc/os-release 'NAME=TestOS'
|
||||
assert_file_has_content sysroot/ostree/boot.1/testos/${bootcsum}/0/etc/os-release 'NAME=TestOS'
|
||||
${CMD_PREFIX} ostree admin status
|
||||
validate_bootloader
|
||||
echo "ok kernel in tree's /boot"
|
||||
@@ -30,8 +30,7 @@ setup_os_repository "archive-z2" "uboot"
|
||||
. $(dirname $0)/admin-test.sh
|
||||
|
||||
cd ${test_tmpdir}
|
||||
ln -s ../../boot/ osdata/usr/lib/ostree-boot
|
||||
cat << 'EOF' > osdata/boot/uEnv.txt
|
||||
cat << 'EOF' > osdata/usr/lib/ostree-boot/uEnv.txt
|
||||
loaduimage=load mmc ${bootpart} ${loadaddr} ${kernel_image}
|
||||
loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}${fdtfile}
|
||||
loadramdisk=load mmc ${bootpart} ${rdaddr} ${ramdisk_image}
|
||||
|
||||
Reference in new issue
Block a user