diff options
-rw-r--r-- | classes/image_types_ostree.bbclass | 87 | ||||
-rw-r--r-- | classes/image_types_ota.bbclass | 5 |
2 files changed, 89 insertions, 3 deletions
diff --git a/classes/image_types_ostree.bbclass b/classes/image_types_ostree.bbclass new file mode 100644 index 0000000..5b9ac97 --- /dev/null +++ b/classes/image_types_ostree.bbclass | |||
@@ -0,0 +1,87 @@ | |||
1 | # OSTree deployment | ||
2 | |||
3 | inherit image_types | ||
4 | |||
5 | IMAGE_DEPENDS_ostree = "ostree-native:do_populate_sysroot \ | ||
6 | virtual/kernel:do_deploy \ | ||
7 | ${INITRAMFS_IMAGE}:do_image_cpio" | ||
8 | |||
9 | # Please redefine OSTREE_REPO in your local.conf in order to have a persistent | ||
10 | # OSTree repo | ||
11 | OSTREE_REPO ?= "${DEPLOY_DIR_IMAGE}/ostree_repo" | ||
12 | export OSTREE_REPO | ||
13 | |||
14 | # OSTREE_BRANCHNAME can also be redefined | ||
15 | OSTREE_BRANCHNAME ?= "${IMAGE_BASENAME}" | ||
16 | export OSTREE_BRANCHNAME | ||
17 | |||
18 | IMAGE_CMD_ostree () { | ||
19 | OSTREE_ROOTFS=`mktemp -d ${WORKDIR}/ostree-root-XXXXX` | ||
20 | cp -rp ${IMAGE_ROOTFS}/* ${OSTREE_ROOTFS} | ||
21 | cd ${OSTREE_ROOTFS} | ||
22 | |||
23 | # Create sysroot directory to which physical sysroot will be mounted | ||
24 | mkdir sysroot | ||
25 | ln -sf /sysroot/ostree ostree | ||
26 | ln -sf /sysroot/tmp tmp | ||
27 | |||
28 | mkdir -p usr/rootdirs | ||
29 | mkdir -p var/rootdirs | ||
30 | |||
31 | # Implement UsrMove | ||
32 | dirs="bin sbin lib" | ||
33 | |||
34 | for dir in ${dirs} ; do | ||
35 | if [ -d ${dir} ] && [ ! -L ${dir} ] ; then | ||
36 | mv ${dir} usr/rootdirs/ | ||
37 | rm -rf ${dir} | ||
38 | ln -sf /usr/rootdirs/${dir} ${dir} | ||
39 | fi | ||
40 | done | ||
41 | |||
42 | # Move persistent directories to /var | ||
43 | dirs="home opt mnt media srv" | ||
44 | |||
45 | for dir in ${dirs}; do | ||
46 | if [ -d ${dir} ] && [ ! -L ${dir} ]; then | ||
47 | mv ${dir} var/rootdirs/ | ||
48 | ln -sf /var/rootdirs/${dir} ${dir} | ||
49 | fi | ||
50 | done | ||
51 | |||
52 | if [ -d root ] && [ ! -L root ]; then | ||
53 | mv root var/roothome | ||
54 | ln -sf /var/roothome root | ||
55 | fi | ||
56 | |||
57 | # Creating boot directories is required for "ostree admin deploy" | ||
58 | |||
59 | mkdir -p boot/loader.0 | ||
60 | mkdir -p boot/loader.1 | ||
61 | ln -sf boot/loader.0 boot/loader | ||
62 | |||
63 | checksum=`sha256sum ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} | cut -f 1 -d " "` | ||
64 | |||
65 | cp ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} boot/vmlinuz-${checksum} | ||
66 | cp ${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE}-${MACHINE}.cpio.gz boot/initramfs-${checksum} | ||
67 | |||
68 | cd ${WORKDIR} | ||
69 | |||
70 | # Create a tarball that can be then commited to OSTree repo | ||
71 | OSTREE_TAR=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ostree.tar.bz2 | ||
72 | tar -C ${OSTREE_ROOTFS} -cjf ${OSTREE_TAR} . | ||
73 | rm -rf ${OSTREE_ROOTFS} | ||
74 | |||
75 | if [ ! -d ${OSTREE_REPO} ]; then | ||
76 | ostree --repo=${OSTREE_REPO} init --mode=archive-z2 | ||
77 | fi | ||
78 | |||
79 | # Commit the result | ||
80 | ostree --repo=${OSTREE_REPO} commit \ | ||
81 | --tree=tar=${OSTREE_TAR} \ | ||
82 | --skip-if-unchanged \ | ||
83 | --branch=${OSTREE_BRANCHNAME} \ | ||
84 | --subject="Commit-id: ${IMAGE_NAME}" | ||
85 | |||
86 | } | ||
87 | |||
diff --git a/classes/image_types_ota.bbclass b/classes/image_types_ota.bbclass index cc526b6..bb55e61 100644 --- a/classes/image_types_ota.bbclass +++ b/classes/image_types_ota.bbclass | |||
@@ -13,8 +13,8 @@ do_otaimg[depends] += "e2fsprogs-native:do_populate_sysroot \ | |||
13 | parted-native:do_populate_sysroot \ | 13 | parted-native:do_populate_sysroot \ |
14 | virtual/kernel:do_deploy \ | 14 | virtual/kernel:do_deploy \ |
15 | virtual/bootloader:do_deploy \ | 15 | virtual/bootloader:do_deploy \ |
16 | ${INITRD_IMAGE}:do_rootfs \ | 16 | ${INITRD_IMAGE}:do_image_cpio \ |
17 | ${PN}:do_rootfs" | 17 | ${PN}:do_image_ext4" |
18 | 18 | ||
19 | ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_BASENAME}-${MACHINE}.ext4" | 19 | ROOTFS ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_BASENAME}-${MACHINE}.ext4" |
20 | INITRD_IMAGE ?= "core-image-minimal-initramfs" | 20 | INITRD_IMAGE ?= "core-image-minimal-initramfs" |
@@ -45,7 +45,6 @@ do_otaimg () { | |||
45 | rm -f $BOOTIMG | 45 | rm -f $BOOTIMG |
46 | build_bootfs $BOOTIMG | 46 | build_bootfs $BOOTIMG |
47 | 47 | ||
48 | # ext4 image should be already here because of IMAGE_TYPEDEP_otaimg | ||
49 | ROOTIMG=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4 | 48 | ROOTIMG=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext4 |
50 | 49 | ||
51 | BOOTFSBLOCKS=`du -bks ${BOOTIMG} | cut -f 1` | 50 | BOOTFSBLOCKS=`du -bks ${BOOTIMG} | cut -f 1` |