initcpio: fixes; overlayfs works now; aufs needs still work

This commit is contained in:
udeved 2016-10-12 12:32:01 +02:00
parent bc88270c4c
commit 60f8ae179f
4 changed files with 67 additions and 16 deletions

View file

@ -104,6 +104,9 @@ CPIOINST = \
initcpio/install/miso_kms \
initcpio/install/miso_shutdown
CPIO = \
initcpio/script/miso_shutdown
MAN_XML = \
buildpkg.xml \
buildtree.xml \
@ -195,6 +198,8 @@ install_iso:
install -dm0755 $(DESTDIR)$(PREFIX)/lib/initcpio/install
install -m0755 ${CPIOINST} $(DESTDIR)$(PREFIX)/lib/initcpio/install
install -m0755 ${CPIO} $(DESTDIR)$(PREFIX)/lib/initcpio
install -dm0755 $(DESTDIR)$(PREFIX)/share/manjaro-tools
install -m0644 ${SHARED_ISO} $(DESTDIR)$(PREFIX)/share/manjaro-tools
@ -247,6 +252,7 @@ uninstall_iso:
for f in ${LIBS_ISO}; do rm -f $(DESTDIR)$(PREFIX)/lib/manjaro-tools/$$f; done
for f in ${CPIOHOOKS}; do rm -f $(DESTDIR)$(PREFIX)/lib/initcpio/hooks/$$f; done
for f in ${CPIOINST}; do rm -f $(DESTDIR)$(PREFIX)/lib/initcpio/install/$$f; done
for f in ${CPIO}; do rm -f $(DESTDIR)$(PREFIX)/lib/initcpio/$$f; done
rm -f $(DESTDIR)$(PREFIX)/share/man/man1/buildiso.1.gz
rm -f $(DESTDIR)$(PREFIX)/share/man/man1/deployiso.1.gz
rm -f $(DESTDIR)$(PREFIX)/share/man/man5/manjaro-tools.conf.5.gz

View file

@ -42,10 +42,16 @@ _mnt_overlayfs() {
local lower_dir="${1}"
local newroot="${2}"
local mnt="${3}"
local work_dir=/run/miso/cowspace/${cow_directory}/workdir
local upper_dir=/run/miso/cowspace/${cow_directory}/upperdir
mkdir -p ${upper_dir} ${work_dir}
mount -t overlay overlay -o lowerdir=${lower_dir},upperdir=${upper_dir},workdir=${work_dir} "${newroot}${mnt}"
local work_dir="/run/miso/cowspace/${cow_directory}/workdir"
local upper_dir="/run/miso/cowspace/${cow_directory}/upperdir"
local tmp_mnt="/ro_branch/${img_name}"
mkdir -p "/rw_branch/upper"
mkdir -p "/rw_branch/work"
mount -t overlay overlay -olowerdir="/ro_branch/${img_name}",upperdir="/rw_branch/upper",workdir="/rw_branch/work" "${newroot}/"
mkdir -p "${upper_dir}" "${work_dir}"
mount -t overlay overlay -o lowerdir="${lower_dir}",upperdir="${upper_dir}",workdir="${work_dir}" "${newroot}${mnt}"
}
# args: /path/to/image_file, mountpoint
@ -155,7 +161,7 @@ miso_mount_handler() {
fi
if [[ "${checksum}" == "y" ]]; then
for fs in livefs mhwdfs desktopfs rootfs;do
for fs in rootfs desktopfs mhwdfs livefs;do
if [[ -f "/run/miso/bootmnt/${misobasedir}/${arch}/${fs}.md5" ]]; then
msg -n ":: Self-test requested, please wait..."
if _verify_checksum "${fs}"; then
@ -173,7 +179,7 @@ miso_mount_handler() {
fi
if [[ "${verify}" == "y" ]]; then
for fs in livefs mhwdfs desktopfs rootfs;do
for fs in rootfs desktopfs mhwdfs livefs;do
if [[ -f "/run/miso/bootmnt/${misobasedir}/${arch}/${fs}.sfs.sig" ]]; then
msg -n ":: Signature verification requested, please wait..."
if _verify_signature; then
@ -206,15 +212,17 @@ miso_mount_handler() {
fi
mkdir -p -m 0700 "/run/miso/cowspace/${cow_directory}"
local _src=/run/miso/bootmnt/${misobasedir}/${arch}
local _src="/run/miso/bootmnt/${misobasedir}/${arch}"
local _dest="/run/miso/sfs"
for fs in livefs mhwdfs desktopfs rootfs;do
if [[ -f "${_src}/${fs}.sfs" ]]; then
_mnt_sfs "${_src}/${fs}.sfs" "/run/miso/sfs/${fs}"
_mnt_overlayfs "/run/miso/sfs/${fs}" "${newroot}" "/"
for sfs in livefs mhwdfs desktopfs rootfs;do
if [[ -f "${_src}/${sfs}.sfs" ]]; then
_mnt_sfs "${_src}/${sfs}.sfs" "${_dest}/${sfs}"
if [[ -f "${_dest}/${sfs}/${sfs}.img" ]]; then
_mnt_dmsnapshot "${_dest}/${sfs}/${sfs}.img" "${newroot}" "/"
else
_mnt_overlayfs "${_dest}/${sfs}" "${newroot}" "/"
fi
if [[ -f "/run/miso/sfs/${fs}/${fs}.img" ]]; then
_mnt_dmsnapshot "/run/miso/sfs/${fs}/${fs}.img" "${newroot}" "/"
fi
done

View file

@ -21,9 +21,9 @@ build() {
add_file /usr/lib/udev/rules.d/10-dm.rules
add_file /usr/lib/udev/rules.d/95-dm-notify.rules
add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules
if [[ $miso_GNUPG_FD ]]; then
if [[ $MISO_GNUPG_FD ]]; then
mkdir -p "$BUILDROOT$dest"/gpg
gpg --homedir "$BUILDROOT$dest"/gpg --import <&$miso_GNUPG_FD
gpg --homedir "$BUILDROOT$dest"/gpg --import <&$MISO_GNUPG_FD
fi
}

View file

@ -0,0 +1,37 @@
#!/bin/ash
# /oldroot depends on things inside /oldroot/run/miso...
mkdir /oldrun
mount -n --move /oldroot/run /oldrun
# Unmount all mounts now.
umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)
# Remove all dm-snapshot devices.
dmsetup remove_all
# Remove all loopback devices.
for _lup in $(grep ^/dev/loop /oldrun/miso/used_block_devices | tac); do
if ! losetup -d ${_lup} 2> /dev/null; then
umount -d ${_lup}
fi
done
# Unmount the space used to store *.cow.
umount /oldrun/miso/cowspace
# Unmount boot device if needed (no copytoram=y used)
if [[ ! -d /oldrun/miso/copytoram ]]; then
if [[ -d /oldrun/miso/img_dev ]]; then
umount /oldrun/miso/img_dev
else
umount /oldrun/miso/bootmnt
fi
fi
# reboot / poweroff / halt, depending on the argument passed by init
# if something invalid is passed, we halt
case "$1" in
reboot|poweroff|halt) "$1" -f ;;
*) halt -f;;
esac