gnomeos: Make run script transparently update existing FS image
This is noticeably faster.
This commit is contained in:
parent
26de73ea55
commit
f812720fc6
|
|
@ -49,42 +49,50 @@ if (! test -f ${OBJ}); then
|
||||||
rm -f ${OBJ}.tmp
|
rm -f ${OBJ}.tmp
|
||||||
qemu-img create ${OBJ}.tmp 2G
|
qemu-img create ${OBJ}.tmp 2G
|
||||||
mkfs.ext3 -q -F ${OBJ}.tmp
|
mkfs.ext3 -q -F ${OBJ}.tmp
|
||||||
mkdir -p fs
|
|
||||||
umount fs || true
|
|
||||||
mount -o loop ${OBJ}.tmp fs
|
|
||||||
|
|
||||||
cd fs
|
|
||||||
|
|
||||||
TOPROOT_BIND_MOUNTS="home root tmp"
|
|
||||||
|
|
||||||
for d in $TOPROOT_BIND_MOUNTS; do
|
|
||||||
mkdir -m 0755 $d
|
|
||||||
done
|
|
||||||
chmod a=rwxt tmp
|
|
||||||
|
|
||||||
mkdir ostree
|
|
||||||
mkdir -p -m 0755 ./ostree/var/{log,run,tmp,spool}
|
|
||||||
cd ostree
|
|
||||||
mkdir repo
|
|
||||||
ostree --repo=repo init
|
|
||||||
ostree --repo=${OSTREE_REPO} local-clone repo
|
|
||||||
for branch in base dev; do
|
|
||||||
rev=$(ostree --repo=repo rev-parse ${BRANCH_PREFIX}${branch});
|
|
||||||
ostree --repo=repo checkout ${rev} ${BRANCH_PREFIX}${branch}-${rev}
|
|
||||||
ln -s ${BRANCH_PREFIX}${branch}-${rev} ${BRANCH_PREFIX}${branch}-current
|
|
||||||
done
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
mkdir proc # needed for ostree-init
|
|
||||||
cp -a ./ostree/${BRANCH_PREFIX}base-current/usr/sbin/ostree-init .
|
|
||||||
|
|
||||||
cd ${WORKDIR}
|
|
||||||
|
|
||||||
umount fs
|
|
||||||
rmdir fs
|
|
||||||
mv ${OBJ}.tmp ${OBJ}
|
mv ${OBJ}.tmp ${OBJ}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
mkdir -p fs
|
||||||
|
umount fs || true
|
||||||
|
sleep 1 # Avoid Linux kernel bug, pretty sure it's the new RCU pathname lookup
|
||||||
|
mount -o loop gnomeos-fs.img fs
|
||||||
|
|
||||||
|
cd fs
|
||||||
|
|
||||||
|
TOPROOT_BIND_MOUNTS="home root tmp"
|
||||||
|
|
||||||
|
for d in $TOPROOT_BIND_MOUNTS; do
|
||||||
|
if ! test -d $d; then
|
||||||
|
mkdir -m 0755 $d
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
chmod a=rwxt tmp
|
||||||
|
|
||||||
|
if ! test -d ostree; then
|
||||||
|
mkdir ostree
|
||||||
|
mkdir -p -m 0755 ./ostree/var/{log,run,tmp,spool}
|
||||||
|
mkdir ostree/repo
|
||||||
|
ostree --repo=ostree/repo init
|
||||||
|
fi
|
||||||
|
cd ostree
|
||||||
|
ostree --repo=${OSTREE_REPO} local-clone repo
|
||||||
|
for branch in base dev; do
|
||||||
|
rev=$(ostree --repo=repo rev-parse ${BRANCH_PREFIX}${branch});
|
||||||
|
if ! test -d ${BRANCH_PREFIX}${branch}-${rev}; then
|
||||||
|
ostree --repo=repo checkout ${rev} ${BRANCH_PREFIX}${branch}-${rev}
|
||||||
|
fi
|
||||||
|
ln -sf ${BRANCH_PREFIX}${branch}-${rev} ${BRANCH_PREFIX}${branch}-current
|
||||||
|
done
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
test -d proc || mkdir proc # needed for ostree-init
|
||||||
|
cp -a ./ostree/${BRANCH_PREFIX}base-current/usr/sbin/ostree-init .
|
||||||
|
|
||||||
|
cd ${WORKDIR}
|
||||||
|
|
||||||
|
umount fs
|
||||||
|
rmdir fs
|
||||||
|
|
||||||
ARGS="$@"
|
ARGS="$@"
|
||||||
if ! echo $ARGS | grep -q 'init='; then
|
if ! echo $ARGS | grep -q 'init='; then
|
||||||
ARGS="init=/ostree-init $ARGS"
|
ARGS="init=/ostree-init $ARGS"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue