Files
binary-repo/sys/kernel/live-boot/live-boot.script
T
2023-01-17 13:47:25 +00:00

70 lines
1.8 KiB
Bash

#!/bin/sh
is_file_avaiable(){
disktmp=$(mktemp)
rm -f $disktmp
mkdir -p $disktmp || true
timeout 10 mount -t auto "$1" $disktmp &>/dev/null
[ -f "$disktmp/$2" ] && [ -b "$1" ]
status=$?
umount -lf $disktmp 2>/dev/null
return $status
}
mountroot()
{
while [ "$root" == "" ] ; do
list=$(ls /sys/class/block/ | grep ".*[0-9]$" | grep -v loop | grep -v ram | grep -v nbd | grep -v fd | sed "s|^|/dev/|g")
for part in $list ; do
sleep 0.1
echo "Looking for: $part"
if is_file_avaiable "$part" "/live/filesystem.squashfs" ; then
export root=$part
elif is_file_avaiable "$part" "/mount-me" ; then
export home=$part
fi
done
done
}
mount_top()
{
:
}
mount_premount()
{
if cat /proc/cmdline | grep "break=live" >/dev/null ; then
launch_interactive_shell
fi
for mod in dm_mod dm-raid raid0 raid1 raid456 loop ; do
modprobe $mod || true
done
if [ -f /ventoy/hook/arch/ventoy-disk.sh ] ; then
echo "Loading Ventoy hooks"
sh /ventoy/hook/arch/ventoy-disk.sh || true
sleep 0.3
fi
}
mount_bottom()
{
mkdir -p /donkey/a # upper
mkdir -p /donkey/b # workdir
mkdir -p /live_root/
mkdir -p ${rootmnt}/
mkdir -p /source/ # lower
mount $root ${rootmnt}/ 2> /dev/null
mount ${rootmnt}/live/airootfs.sfs /source/ 2> /dev/null
mount -t overlay -o lowerdir=/source/,upperdir=/donkey/a/,workdir=/donkey/b overlay /live_root
mount -t tmpfs -o size=100% none /donkey/a
mount -t tmpfs -o size=100% none /donkey/b
[ -d /source/merge/ ] && cp -prfv /source/merge/* /live_root/
mount --bind /live_root ${rootmnt}/
mkdir ${rootmnt}/cdrom/ 2> /dev/null
mkdir ${rootmnt}/source/ 2> /dev/null
mount $root ${rootmnt}/cdrom/ 2> /dev/null
mount ${rootmnt}/live/filesystem.squashfs ${rootmnt}/source/ 2> /dev/null
[ "$home" != "" ] && mount $home ${rootmnt}/data/user 2>/dev/null
}