123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #!/usr/bin/bash
- # See: https://gitlab.com/tearch-linux/applications-and-tools/mkinitcpio-teaiso
- live_mount(){
- mkdir -p /pisi/a # upper
- mkdir -p /pisi/b # workdir
- mkdir -p /live_root/
- mkdir -p /new_root/
- mkdir -p /source/ # lower
- mount $root /new_root/ 2> /dev/null
- mount /new_root/live/pisi.sfs /source/ 2> /dev/null
- mount -t overlay -o lowerdir=/source/,upperdir=/pisi/a/,workdir=/pisi/b overlay /live_root
- mount -t tmpfs -o size=100% none /pisi/a
- mount -t tmpfs -o size=100% none /pisi/b
- [ -d /source/merge/ ] && cp -prfv /source/merge/* /live_root/
- mount --bind /live_root /new_root/
- mkdir /new_root/cdrom/ 2> /dev/null
- mkdir /new_root/source/ 2> /dev/null
- mount $root /new_root/cdrom/ 2> /dev/null
- mount /new_root/cdrom/live/pisi.sfs /new_root/source/ 2> /dev/null
- [ "$home" != "" ] && mount $home /new_root/home 2>/dev/null
- }
- 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
- }
- run_hook() {
- # live-boot
- if cat /proc/cmdline | grep "boot=live" >/dev/null ; then
- 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/pisi.sfs"
- then
- export root=$part
- elif is_file_avaiable "$part" "/mount-me"
- then
- export home=$part
- fi
- done
- done
- export mount_handler="live_mount"
- fi
- }
- run_latehook(){
- if ! cat /proc/cmdline | grep "init=" ; then
- export init=/sbin/init
- fi
- sleep 0.3
- }
|