mirror of https://github.com/OpenIPC/firmware.git
Do not mount overlay on a certain R/W rootfs
parent
b650d5503c
commit
db8ea24da2
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
on_exit()
|
on_exit() {
|
||||||
{
|
|
||||||
mountpoint -q /proc && umount /proc
|
mountpoint -q /proc && umount /proc
|
||||||
exec /sbin/init $*
|
exec /sbin/init $*
|
||||||
}
|
}
|
||||||
|
@ -11,36 +10,44 @@ trap on_exit 0
|
||||||
mount -t proc proc /proc || exit
|
mount -t proc proc /proc || exit
|
||||||
grep -q overlay /proc/filesystems || exit
|
grep -q overlay /proc/filesystems || exit
|
||||||
|
|
||||||
if grep -q ubifs /proc/cmdline; then
|
if ! grep -q 'root=.*nfs\|mmcblk\|ram' /proc/cmdline; then
|
||||||
mount -t ubifs ubi0:rootfs_data /overlay
|
if grep -q ubifs /proc/cmdline; then
|
||||||
else
|
mount -t ubifs ubi0:rootfs_data /overlay
|
||||||
mtdblkdev=`awk -F ':' '/rootfs_data/ {print $1}' /proc/mtd | sed 's/mtd/mtdblock/'`
|
else
|
||||||
mtdchrdev=`grep 'rootfs_data' /proc/mtd | cut -d: -f1`
|
mtdblkdev=$(awk -F ':' '/rootfs_data/ {print $1}' /proc/mtd | sed 's/mtd/mtdblock/')
|
||||||
mount -t jffs2 /dev/${mtdblkdev} /overlay
|
mtdchrdev=$(grep 'rootfs_data' /proc/mtd | cut -d: -f1)
|
||||||
|
mount -t jffs2 /dev/${mtdblkdev} /overlay
|
||||||
if [ $? -ne 0 ] || { dmesg | grep "jffs2.*: Magic bitmask.*not found" > /dev/null 2>&1; } then
|
|
||||||
echo "jffs2 health check error, format required!"
|
if [ $? -ne 0 ] || { dmesg | grep "jffs2.*: Magic bitmask.*not found" >/dev/null 2>&1; }; then
|
||||||
flash_eraseall -j /dev/${mtdchrdev}
|
echo "jffs2 health check error, format required!"
|
||||||
echo "Done! Remounting..."
|
flash_eraseall -j /dev/${mtdchrdev}
|
||||||
mount -t jffs2 /dev/${mtdblkdev} /overlay || mount -t tmpfs tmpfs /overlay || exit
|
echo "Done! Remounting..."
|
||||||
if ! cat /proc/mounts | grep ${mtdblkdev}; then
|
mount -t jffs2 /dev/${mtdblkdev} /overlay || mount -t tmpfs tmpfs /overlay || exit
|
||||||
echo "--------------------------------"
|
if ! cat /proc/mounts | grep ${mtdblkdev}; then
|
||||||
echo "Crash - your flash in the trash!"
|
echo "--------------------------------"
|
||||||
echo "--------------------------------"
|
echo "Crash - your flash in the trash!"
|
||||||
fi
|
echo "--------------------------------"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -q overlayfs /proc/filesystems; then
|
if grep -q overlayfs /proc/filesystems; then
|
||||||
mount -t overlayfs overlayfs -o lowerdir=/,upperdir=/overlay,ro /mnt || { umount /overlay; exit; }
|
mount -t overlayfs overlayfs -o lowerdir=/,upperdir=/overlay,ro /mnt || {
|
||||||
else
|
umount /overlay
|
||||||
overlay_rootdir=/overlay/root
|
exit
|
||||||
overlay_workdir=/overlay/work
|
}
|
||||||
mkdir -p ${overlay_rootdir} ${overlay_workdir}
|
else
|
||||||
mount -t overlay overlay -o lowerdir=/,upperdir=${overlay_rootdir},workdir=${overlay_workdir} /mnt || { umount /overlay; exit; }
|
overlay_rootdir=/overlay/root
|
||||||
fi
|
overlay_workdir=/overlay/work
|
||||||
|
mkdir -p ${overlay_rootdir} ${overlay_workdir}
|
||||||
|
mount -t overlay overlay -o lowerdir=/,upperdir=${overlay_rootdir},workdir=${overlay_workdir} /mnt || {
|
||||||
|
umount /overlay
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
pivot_root /mnt /mnt/rom
|
pivot_root /mnt /mnt/rom
|
||||||
mount -o noatime,move /rom/proc /proc
|
mount -o noatime,move /rom/proc /proc
|
||||||
mount -o noatime,move /rom/dev /dev
|
mount -o noatime,move /rom/dev /dev
|
||||||
mount -o noatime,move /rom/overlay /overlay
|
mount -o noatime,move /rom/overlay /overlay
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue