aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorV.Krishn <vkrishn4@gmail.com>2022-05-02 18:47:53 +0530
committerV.Krishn <vkrishn4@gmail.com>2022-05-02 18:47:53 +0530
commitf4015fb8dafde299401fbe7a8dc13026dfb9f13f (patch)
tree70acca12561fbb17ae0077fc2df0992e1275f80d
parent7f0c771467249f68d3a657af584e52f3e25c3f5b (diff)
downloadscripts-f4015fb8dafde299401fbe7a8dc13026dfb9f13f.tar.bz2
update knoppix/860/init to rambak version
-rw-r--r--knoppix/860/init180
1 files changed, 166 insertions, 14 deletions
diff --git a/knoppix/860/init b/knoppix/860/init
index ecf5f9b..7494e38 100644
--- a/knoppix/860/init
+++ b/knoppix/860/init
@@ -17,12 +17,15 @@
DISTRO="Knoppix 8.6"
KVERSION="8.6.0-2019-08-08"
+# KVERS=$(echo ${KVERSION//.} | cut -b -3) # ... cannot do
+KVERS='860' # Short (hardcode)
# Reset fb color mode
RESET="]R"
# ANSI COLORS
# Erase to end of line
-CRE=" "
+CRE="
+"
# Clear entire screen
CLEAR=""
# Normal color
@@ -410,7 +413,7 @@ message \
/ / _ - / /||/ / / / / / / ____/ / ____/ / / / | \ _ \ / __ \
/ / \ \ / / | / / /_/ / / / / / / / / /\ \ / /_/ / _ / /_/ /
/_/ |_|/_/ |_/ \____/ /_/ /_/ /_/ /_/ |_| \____/ /_/ \____/'
-message "${WELCOME}"
+message "${WELCOME} ... /w rambak"
if [ -n "$SPLASH" ] && [ -r /splash.ppm ] && type -p fbi >/dev/null 2>&1; then
( fbi -T 6 -1 -noedit -noverbose -t 45 /splash.ppm >/dev/null 2>&1 & )
@@ -933,7 +936,7 @@ check_data_partition(){
*) datapart="${rootdisk}${part}" ;;
esac
[ -b "$datapart" ] || return 2
- read_only "$datapart" && return 1
+ read_only "$datapart" && return 3 # ...
# If we reached this part, the data partition is valid.
echo "$datapart"
# Now check if we can resize.
@@ -998,8 +1001,9 @@ mountdata(){
local img base ext m mods found="" rw="rw"
local rootdisk="${ROOTDEV%[0-9]}"; rootdisk="${rootdisk%[0-9]}"
case "$rootdisk" in /dev/mmcblk*) rootdisk="${rootdisk%p}";; esac
- read_only && rw="ro"
- for base in $home /mnt-system/"$knoppix_dir"/knoppix-data /mnt-system/knoppix; do
+ ## read_only && rw="ro" ...
+ ## for base in $home /mnt-system/"$knoppix_dir"/knoppix-data /mnt-system/knoppix; do ...
+ for base in $home /ramdisk/knoppix-data /mnt-system/"$knoppix_dir"/knoppix-data /mnt-system/knoppix; do
for ext in aes img inf; do
img="$base.$ext"
[ -r "$img" ] || continue
@@ -1014,6 +1018,8 @@ mountdata(){
;;
img)
checkfs "$img" ext2
+ # ...
+ if [ "${img%/knoppix-data.img}" = '/ramdisk' ]; then rw="rw"; RW="rw"; fi
message -e "\r${CRE}${GREEN}${USING} ${YELLOW}$img ($rw,loop)${NORMAL}"
if mount -t ext2 -o loop,$rw "$img" /KNOPPIX-DATA; then
found="true"
@@ -1060,20 +1066,106 @@ mountdata(){
return 1
}
+# -----------
+# findrambak devices...
+RAMBAK=""
+findrambak(){
+ local dev RBAKFILE=''
+ local rambakfile=knoppix-data.tar.gz
+ local rambakdata=knoppix-data.img
+ local rambakempty=knoppix-data.img.empty.tar.gz
+ # local rambaksize=3372 # ~3.3GB # for note
+ for d in sda sda1 sdb sdb1 sdc1 sdd1 sde1 sdf1; do
+ dev=/dev/$d
+ [ -b "$dev" ] || continue
+ message -n -e "\r${CRE}${BLUE}trying rambak in: ${MAGENTA}$dev${NORMAL}"
+ # make sure folder rambak exists in USB or BOOT disk/device
+ mount $dev /mnt-system/rambak >/dev/null 2>&1 || continue
+ sleep 1
+ RBAKFILE=/mnt-system/rambak/KNOPPIX${KVERS}/${rambakfile}
+ if [ -r "$RBAKFILE" ]; then
+ RBAKFILE=$RBAKFILE
+ else
+ RBAKFILE=/mnt-system/rambak/${rambakfile}
+ fi
+
+ # --------------------------------------------------------------------
+ # Use 'knoppix-data.img' directly from other media (not knoppix disk)
+ # --------------------------------------------------------------------
+ if checkbootparam "ramdisklink"; then
+ message -n -e "\r${CRE}${BLUE}linking ${rambakdata} image from: ${MAGENTA}$dev${NORMAL}"
+ RAMBAKDISK=/mnt-system/rambak/KNOPPIX${KVERS}/${rambakdata}
+ cd /ramdisk; mkdir tmp
+ if [ -r "$RAMBAKDISK" ]; then
+ ln -s ${RAMBAKDISK} ./ >/dev/null 2>&1 || continue
+ RAMBAK="$dev"; RW="rw"
+ return 0
+ fi
+ message -n -e "\r${CRE}${RED}linking ${rambakdata} image from: ${MAGENTA}$dev${NORMAL} FAILED"
+ umount /mnt-system/rambak >/dev/null 2>&1
+ RAMBAK=""
+ return 1
+ fi
+ # --------------------------------------------------------------------
+
+ if [ -r "$RBAKFILE" ]; then
+ message -n -e "\r${CRE}${GREEN}${rambakfile} ${FOUNDAT}: ${MAGENTA}$dev${NORMAL} "
+ cd /ramdisk; mkdir tmp
+ cp $RBAKFILE /ramdisk/
+
+ cp /mnt-system/rambak/${rambakempty} ./
+ tar -zxf ${rambakempty} >/dev/null 2>&1
+ mount -t ext2 -o loop,rw ${rambakdata} tmp >/dev/null 2>&1 || continue
+
+ cd tmp; tar -zxf "/ramdisk/${rambakfile}" >/dev/null 2>&1
+ cd /ramdisk; umount tmp >/dev/null 2>&1
+ # rm -f "/ramdisk/${rambakfile}" "/ramdisk/${rambakempty}" #leave for trace
+ RAMBAK="$dev"; RW="rw"
+ return 0
+ fi
+ message -e "\r${CRE}${RED}NOT IN: ${MAGENTA}$dev${NORMAL} "
+ umount /mnt-system/rambak >/dev/null 2>&1
+ RAMBAK=""
+ done
+ return 1
+}
+
mountknoppix(){
- local k dev dir count=0 RC=0
+ local k dev dir count=0 RC=0 k2 dev2 dir2 k3 dev3 dir3 # ...
[ -b /dev/cloop ] || mknod -m 644 /dev/cloop b 240 0
grep -q cloop /proc/devices || insmod /mnt-system/"$knoppix_dir"/modules/cloop.ko preload=32 || return 2
grep -q aufs /proc/filesystems || insmod /mnt-system/"$knoppix_dir"/modules/aufs.ko || return 3
+ modprobe loop
+ grep -q squashfs /proc/filesystems || insmod /mnt-system/"$knoppix_dir"/modules/squashfs.ko || return 3
+ local bn bd bkname bnum k2dir k2dirmnt k3dir k3dirmnt
+ # Note dummy file KNOPPIX<num> (cloop format) need to be present
+ # in KNOPPIX/ or KNOPPIX${KVERS}/ for .sfs and .d directories to get activated.
for k in /mnt-system/"$knoppix_dir"/[Kk][Nn][Oo][Pp][Pp][Ii][Xx] \
- /mnt-system/"$knoppix_dir"/[Kk][Nn][Oo][Pp][Pp][Ii][Xx][0-9]; do
+ /mnt-system/"$knoppix_dir"/[Kk][Nn][Oo][Pp][Pp][Ii][Xx][0-9] \
+ /mnt-system/rambak/KNOPPIX${KVERS}/[Kk][Nn][Oo][Pp][Pp][Ii][Xx][0-9]; do
+ bd=$(dirname $k)
+ bn=$(basename $k)
+ # bkname=$(echo $bn | cut -b -5) # format [Kk][Nn][Oo][Pp][Pp][Ii][Xx]
+ # bnum=${bn//[KkNnOoPpPpIiXx]/} # format [0-9]
+ k2dir=${bd}'.sf4' # format <dirname>.sf4
+ k2=${k2dir}'/'${bn}'.sf4' # format <dirname>.sf4/KNOPPIX<num>.sf4
+ k3dir=${bd}'.d' # format <dirname>.d
+ k3=${k3dir}'/'${bn}'.d' # format <dirname>.d/KNOPPIX<num>.d
+
[ -r "$k" ] || continue
check_knoppix "$k"
if [ $count = 0 ]; then
- dev=/dev/cloop ; dir=/KNOPPIX
+ dev=/dev/cloop; dir=/KNOPPIX
+ dev2=/dev/loop; dir2='/KNOPPIX.sf4'
+ dev3=$k3dir; dir3=/KNOPPIX.d # for -bind mounting
else
- dev=/dev/cloop$count ; dir=/KNOPPIX$count
+ dev=/dev/cloop$count; dir=/KNOPPIX$count
[ -b $dev ] || mknod -m 644 $dev b 240 $count
+ dev2=/dev/loop$count ; dir2='/KNOPPIX'"$count"'.sf4'
+ # add /dev/loop devices
+ # [ -b $dev2 ] || mknod -m 640 $dev2 b 7 $count # not needed
+ dev3=$k3; dir3='/KNOPPIX'"$count"'.d' # for -bind mounting
+
[ -d $dir ] || mkdir -m 755 $dir
fi
if ! losetup $dev $k >/dev/null 2>&1 || ! mount -r -t iso9660 $dev $dir >/dev/null 2>&1; then
@@ -1083,18 +1175,52 @@ mountknoppix(){
umountknoppix
return 4
fi
+ if [ -r "$k2" ]; then
+ echo -n -e "${GREEN} $(basename $k2) ${NORMAL}"
+ [ -d $dir2 ] || mkdir -m 755 $dir2
+# if ! losetup $dev2 $k2 >/dev/null 2>&1 || ! mount -r -t squashfs $dev2 $dir2 >/dev/null 2>&1; then
+ if ! mount -r -t squashfs $k2 $dir2 >/dev/null 2>&1; then
+ echo "============= ERROR: $k2 ============="
+ # Verbose error message
+ echo -n -e "\n\r${RED}${BROKENIMAGE}: $k2 ${ON} "; mount | grep /mnt-system; dmesg | tail | grep ' loop'; echo -n "${NORMAL}"
+ umountknoppixsfs
+ fi
+ fi
+ if [ -r "$k3" ]; then
+ echo -n -e "${YELLOW} $(basename $k3) ${NORMAL}"
+ [ -d $dir3 ] || mkdir -m 755 $dir3
+ # if ! mount -o bind,ro $k3 $dir3 >/dev/null 2>&1; then # mount(8) since v2.27
+ if ! mount -r -o bind $k3 $dir3 >/dev/null 2>&1; then
+ echo "============= ERROR: $k3 ============="
+ # Verbose error message
+ echo -n -e "\n\r${RED}${BROKENIMAGE}: $k3 ${ON} "; mount | grep /mnt-system; dmesg | tail | grep '.d'; echo -n "${NORMAL}"
+ umountknoppixd
+ fi
+ fi
+
let count++
done
return 0
}
-# Release all Knoppix compressed file systems
+# Release all Knoppix compressed/readonly file systems # ...
umountknoppix(){
for dev in /dev/cloop*; do
umount -f "$dev" >/dev/null 2>&1
losetup -d "$dev" >/dev/null 2>&1
done
}
+umountknoppixsfs(){ # sf4 ...
+ for dev in /dev/loop*; do
+ umount -f "$dev" >/dev/null 2>&1
+ losetup -d "$dev" >/dev/null 2>&1
+ done
+}
+umountknoppixd(){ # .d dirs ...
+ for dev in /KNOPPIX*.d; do
+ umount -f "$dev" >/dev/null 2>&1
+ done
+}
# Release the /mnt-system root partition
umountroot(){
@@ -1108,14 +1234,32 @@ remountroot(){
}
mountunion(){
- local dir tree=""
+ local dir tree="" d2="" d3="" # ...
for dir in /KNOPPIX /KNOPPIX[0-9]; do
+ d2=$dir'.sf4'; d3=$dir'.d'
[ -d "$dir" ] && tree="$dir=ro${tree:+:$tree}"
+ [ -d "$d2" ] && tree="$d2=ro${tree:+:$tree}" # ...
+ [ -d "$d3" ] && tree="$d3=ro${tree:+:$tree}"
done
+ # echo "========== $tree =========="
mount -t aufs -o "br:$1:$tree,noplink" unionfs /UNIONFS
return $?
}
+# -----------
+message -n -e "${CRE}${RED}Trying to find rambak disk...${NORMAL}"
+# -----------
+if findrambak; then
+ message -e "${CRE}${BLUE}knoppix-data.img found, rambak disk mounted...${NORMAL}"
+ RW="rw"
+else
+ message -e "${CRE}${BLUE}Trying to rsync root.overlay on ${MAGENTA}/ramdisk${BLUE}...${NORMAL}"
+ # tar -zxf /mnt-system/rambak/root.overlay.tar.gz -C / > /dev/null 2>&1
+fi
+sleep 4
+# -----------
+
+
if mountknoppix; then # compressed
checkbootparam "debug" && debugshell "Past mounting /KNOPPIX."
if test -z "$NOIMAGE" && test -z "$TSCLIENT"; then
@@ -1135,17 +1279,22 @@ if mountknoppix; then # compressed
1) message "${CRE}${RED}KNOPPIX-DATA Partition $data_partition exists, but cannot be used.${NORMAL}" ;;
0) message "${CRE}${GREEN}KNOPPIX-DATA Partition $data_partition OK${NORMAL}";;
esac
+ message -e "\r${CRE}${RED}1.dstat -> $dstat${NORMAL}"
if [ "$dstat" != 1 -a "$dstat" != 2 ] && mountdata; then
checkbootparam "debug" && debugshell "Past mounting /KNOPPIX-DATA."
- if [ "$RW" = "ro" ] || read_only "$ROOTDEV"; then
+ # if [ "$RW" = "ro" ] || read_only "$ROOTDEV"; then # ...
+ if [ "$RW" = "ro" ]; then
+ message -n -e "\r${CRE}${RED}Still RO...${NORMAL}"
mountunion /ramdisk=rw:/KNOPPIX-DATA=ro
else
+ message -n -e "\r${CRE}${BLUE}Final attempt to get RW right. ...${NORMAL}"
mountunion /KNOPPIX-DATA=rw
fi
else
mountunion /ramdisk=rw
fi
else
+ message -e "\r${CRE}${RED}2.dstat -> $dstat${NORMAL}"
mountunion /ramdisk=rw
if [ -n "$SETRO" ]; then
# Set all partitions on root disk to read-only
@@ -1208,8 +1357,9 @@ esac
checkbootparam "debug" && debugshell "Past symlinks to /UNIONFS."
-# Check for updates on-disk, install them if necessary.
-ls /mnt-system/KNOPPIX/update*.zip /mnt-system/KNOPPIX/update*.tar.gz /mnt-system/KNOPPIX/update*.taz 2>/dev/null | while read update; do
+# Check for updates on-disk, install them if necessary. Add rambak ...
+# ls /mnt-system/KNOPPIX/update*.zip /mnt-system/KNOPPIX/update*.tar.gz /mnt-system/KNOPPIX/update*.taz 2>/dev/null | while read update; do
+ls /mnt-system/rambak/KNOPPIX"$KVERS"/update*.tar.gz /mnt-system/KNOPPIX/update*.zip /mnt-system/KNOPPIX/update*.tar.gz /mnt-system/KNOPPIX/update*.taz 2>/dev/null | while read update; do
if [ -r "$update" ]; then
message -e "\r${CRE}${GREEN}${UPDATING} ${YELLOW}$update${NORMAL}"
case "$update" in
@@ -1219,6 +1369,8 @@ ls /mnt-system/KNOPPIX/update*.zip /mnt-system/KNOPPIX/update*.tar.gz /mnt-syste
fi
done
+export RAMBAK=$RAMBAK
+
# Before starting init: check for "adriane" or "secure" bootoption
CONFS="/etc/inittab /etc/sudoers /etc/PolicyKit/PolicyKit.conf"
if checkbootparam "adriane" && type -p adriane >/dev/null 2>&1; then