Skip to main content

IT - Virtualization - Supporting Scripts

Supporting scripts

Table of Contents

Build environment

ConvertFromTextToHtmlCodeBox.sh

#!/bin/bash

#=====================================================================================
OutputDetailsHeader() {
  if [[ $fDetail -eq 1 ]]; then
    cat <<EOF
<details>
  <summary style="background-color: #fdf6e3; border-color: red; border-radius: 0px; border-style: solid; line-height: 1; padding-bottom: 0em; padding-left: 0.3em; padding-top: 0em;">
    Click here to see a run example<span class="icon">👇</span>
  </summary>
EOF
  fi
}

#=====================================================================================
OutputFileHeader() {
  if [[ $fFileName -eq 1 ]]; then
    declare sPath="$1"
    declare sFilename="$2"
    [[ -z "${sPath}" ]] && sPath="."
    [[ -z "${sFilename}" ]] && sFilename=stdin
    cat <<EOF
  <div style="font-size: small; line-height: 1; text-align: right;">
    <br />
    <span style="font-family: courier; font-style: italic; line-height: 1; text-align: right;">
      ${sPath}
    </span>
    <br />
    <span style="font-weight: bold;">
      ${sFilename}
    </span>
    <br />
    <br />
  </div>
EOF
  fi
}

#=====================================================================================
OutputFileContents() {
cat <<EOF
  <div style="background-color: #FDF6E3; border-style: solid; border-radius: 10px; border-color: blue; color: black; line-height: 1; padding-top: 0em; padding-left: 0.3em; padding-bottom: 0em; text-align: left;">
    <span style="font-family: courier; font-size: small;">
EOF
#Result	Description	Entity Name	Entity Number	Try it
#non-breaking space	&nbsp;	&#160;
#<	less than	&lt;	&#60;
#>	greater than	&gt;	&#62;
#&	ampersand	&amp;	&#38;
#"	double quotation mark	&quot;	&#34;
#'	single quotation mark (apostrophe)	&apos;	&#39;
#¢	cent	&cent;	&#162;
#£	pound	&pound;	&#163;
#¥	yen	&yen;	&#165;
#€	euro	&euro;	&#8364;
#©	copyright	&copy;	&#169;
#®	registered trademark	&reg;	&#174;
sed 's/&/\&amp;/g;
         s/"/\&quot;/g;
         s/</\&lt;/g;
         s/>/\&gt;/g;
         s/\\/\&bsol;/g ;
         s/ /\&nbsp;/g ;
     1 s/^/<pre>/ ;
     $ s/$/<\/pre>/' < <(
  [[ -z "$1" ]] && cat
  [[ ! -z "$1" ]] && cat "$1"
)
  cat <<EOF
    </span>
  </div>
EOF

}

#=====================================================================================
OutputFileFooter() {
  : nothing
}

#=====================================================================================
OutputDetailsFooter() {

[[ $fDetail -eq 1 ]] && echo "</details>"

}

#=====================================================================================
fDetail=1
fFileName=1

while [[ $# -gt 0 ]]; do
  case "$1" in
  --help | -h)
    echo "
Syntax: $0 [options] input-file-name
Where options are:
  -h | --help     Display this help page
  --no-detail     Do not generate the <details> tag
  --no-file-name  Do not generate output for the file name
"
    exit
    ;;
  --h1) ;;
  --h2) ;;
  --id) shift ;;
  --no-detail) fDetail=0 ;;
  --no-file-name) fFileName=0 ;;
  -*) echo "Option $1 is unknown"
     exit ;;
  -- | *) break ;;
  esac
  shift
done

if [[ -z "$1" ]]; then
  sPath="."
  sFilename="-"
else
  sPath="$(dirname "$1")"
  sFilename="$(basename "$1")"
fi

OutputDetailsHeader 
OutputFileHeader "${sPath}" "${sFilename}"
OutputFileContents "${1}"
OutputFileFooter
OutputDetailsFooter

CreateGuestDirectory.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0) $*"
#echo "${SCRIPT_DIR}"

ShowHelp() {
  echo "
$(basename "$1") [options] emulator-name guest-hardware guest-os
Where options are:
  --           Stop processing options
  -h | --help  Show this help and exit
  --virt-eng   Name of the virtualization program
               SimH
  --guest-hw   Guest simulator platform hardware
  --guest-os   Guest simulator OS
For SimH
  --simh40     Use binaries from SimH 4.0 (Default)
  --simh41     Use binaries from SimH 4.1
"
}

ExitWithMessage() {
  echo "===> $*"
  exit
}

ExitWithErrorMessage() {
  ExitWithMessage "ERROR: $*"
}

sEmuName=
sGuestHw=
sGuestOs=
sSimHVersion=4.0
[[ "$(uname -s)" == CYGWIN* ]] && sRootEmulatorsDirectory=/cygdrive/f/
[[ "$(uname -s)" == Linux*  ]] && sRootEmulatorsDirectory=/Volumes/vol000/
[[ "$(uname -s)" == Darwin* ]] && sRootEmulatorsDirectory=~/Desktop/

while [[ $# -gt 0 ]]; do
  case "$1" in
  --virt-eng) shift ; sEmuName=$1 ;;
  --guest-hw) shift ; sGuestHw=$1 ;;
  --guest-os) shift ; sGuestOs=$1 ;;
  --simh40)
    sSimHVersion=4.0
    ;;
  --simh41)
    sSimHVersion=4.1
    ;;
  --help | -h)
    ShowHelp
    exit
    ;;        
  -- | *) 
    break
    ;;
  esac
  shift
done
[[ -z "${sRootEmulatorsDirectory}" ]] && ExitWithErrorMessage "sRootEmulatorsDirectory not defined"
[[ -z "${sEmuName}" ]] && ExitWithErrorMessage "No Virtualization Engine defined"
[[ -z "${sGuestHw}" ]] && ExitWithErrorMessage "No Guest Hardware Platform defined"
[[ -z "${sGuestOs}" ]] && ExitWithErrorMessage "No Guest OS defined"

mkdir -p "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/"
mkdir -p "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/mirror/"
mkdir -p "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/"
mkdir -p "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/${sGuestHw}_${sGuestOs}/"
mkdir -p "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/by-platform/"
mkdir -p "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/by-platform/${sGuestHw}/"
mkdir -p "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/by-os/"
mkdir -p "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/by-os/${sGuestOs}/"

( cd "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/by-platform/${sGuestHw}/"
  [[ -h "${sGuestOs}" ]] && rm "${sGuestOs}"
  ln -sf "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/${sGuestHw}_${sGuestOs}" "${sGuestOs}"
)

( cd "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/by-os/${sGuestOs}"
  [[ -h "${sGuestHw}" ]] && rm "${sGuestHw}"
  ln -sf "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/${sGuestHw}_${sGuestOs}" "${sGuestHw}" 
)

case "${sEmuName}" in
SimH)
  cd "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/mirror/"
  unset sBinName
  if [[ "$(uname -s)" == CYGWIN* ]]; then
    EXE=.exe
  else
    EXE=
  fi
  if [[ ${sSimHVersion} == 4.0 ]]; then
    [[ ! -d simh-4.0/BIN ]] && ExitWithErrorMessage "ERROR: Cannot find directory 'simh-4.0/BIN'. Did you download the package from https://github.com/simh/simh/suites/11977682803/artifacts/628547788?"

    case "${sGuestHw}" in
    pdp-11)        sBinName=PDP11 ;;
    microvax-3900) sBinName=MicroVAX3900 ;;
    vax-11-750)    sBinName=VAX750 ;;
    vax-11-780)    sBinName=VAX780 ;;
    vax-8600)      sBinName=VAX8600 ;;
    *)
      ExitWithErrorMessage "No process define yet for '${sGuestHw}' under '${sEmuName} 4.0'"
      ;;
    esac
    cd simh-4.0
    chmod a+x BIN/*
  elif [[ ${$sSimHVersion} == 4.1 ]]; then
    if [[ -d simh-4.1 ]]; then
      ( cd simh-4.1 && git fetch --all -v )
    else
      git clone https://github.com/open-simh/simh.git simh-4.1
    fi
    echo "
===> Compiling and testing the simulator for '${sGuestHw}'
"
    case "${sGuestHw}" in
    pdp-11)        sBinName=pdp11 ;;
    microvax-3900) sBinName=microvax3900 ;;
    vax-11-750)    sBinName=vax750 ;;
    vax-11-780)    sBinName=vax780 ;;
    vax-8600)      sBinName=vax8600 ;;
    *)
      ExitWithErrorMessage "No process define yet for '${sGuestHw}' under '${sEmuName} 4.1'"
      ;;
    esac
  fi
  [[ -z "${sBinName}" ]] && ExitWithErrorMessage "no binary program name defined for guest '${sGuestHw}'"

  if [[ $sSimHVersion == 4.1 ]]; then
    if [[ $(uname -s) == CYGWIN* ]]; then
      [[ -d windows-build-windows-build ]] && mv windows-build-windows-build windows-build
      if [[ -d windows-build && -f windows-build/winpcap/WpdPack/Include/pcap.h ]]; then
        : # do nothing
      else
        if [[ ! -f windows-build.zip ]]; then
          echo "===> Downloading pcap for Windows"
          wget --quiet https://github.com/simh/windows-build/archive/windows-build.zip
        fi
        [[ -f windows-build.zip ]] && 7z x -y windows-build.zip
        [[ -d windows-build-windows-build ]] && mv windows-build-windows-build windows-build
      fi
      [[ ! -f windows-build/winpcap/WpdPack/Include/pcap.h ]] && ExitWithErrorMessage "Cannot retrieve the pcap for the Windows build"
    fi

    cd simh-4.1 && make ${sBinName}
    if [[ ! -x ./BIN/${sBinName} ]]; then
      if [[ ${sBinName} == microvax3900 && -x ./BIN/vax ]]; then
        echo "===> WARNING: executable not present. Creating new copy from base guest machine"
        cp BIN/vax${EXE} BIN/${sBinName}${EXE}
      else
        ExitWithErrorMessage "Cannot find binary."
      fi
    fi
  fi

  [[ ! -x "./BIN/${sBinName}${EXE}" ]] && ExitWithErrorMessage "cannot find executable '$(pwd)/./BIN/${sBinName}${EXE}'" 
  ./BIN/${sBinName}

  cd "${sRootEmulatorsDirectory}/Emulators/${sEmuName}/guests/${sGuestHw}_${sGuestOs}/"
  ln -sf ../../mirror/simh-${sSimHVersion}/BIN/${sBinName}${EXE} ${sBinName}-${sSimHVersion}
  echo "===> Test run for the simulator link inside the guest base directory"
  ./${sBinName}-${sSimHVersion}
  ;;
*)
  ExitWithErrorMessage "No process defined yet for '${sEmuName}'"
  ;;
esac
echo
echo "==> Contents of guest directory"
echo
ls 
echo "

Execute the line below to change to your guest base directory

cd '$(pwd)'
"

CreateMyTapInterface.sh

#!/bin/bash

while [[ $# -gt 0 ]]; do
  case "$1" in
  --)
    # stop processing parameters
    break
    ;;
  --help | -h)
    echo "
$(basename "$0"): [options] virtualization-program [vendor] tap-id
Where virtualization-program can be:
  simh    SimH. You need to provide the vendor. Valid values are:
                dec : PDP, VAX, MicroVAX

Where options are:
  --help | -h    This help screen
"
    exit
    ;;
  *)
    break
    ;;
  esac
  shift
done

fErr=1
[[ "$1" == simh && $# -eq 3 ]] && fErr=0
[[ ${fErr} -eq 1 && $# -eq 2 ]] && fErr=0
if [[ ${fErr}  -eq 1 ]]; then
  echo "ERROR: Number of parameters ($#) for '$1' is wrong."
  exit
fi

sVirt="$1"
sTapId="$2"
sVirtTapBase=""
sOUI=""
sNicId=""
case "${sVirt}" in
simh)
  # 08:00:2B:5A:71:E1
  sVirtTapBase="mytap_simh"
  sOUI=""
  case "$2" in
  dec)
    sOUI="08002B"
    ;;
  *)
    echo "ERROR: SimH: Invalid vendor '$2'"
    exit
    ;;
  esac
  sNicId="000000${3}"
  sNicId=${sNicId: -6}
  ;;
*)
  echo "ERROR: Unknown virtualization program '${sVirt}'"
  exit
  ;;
esac

sOUI=$(echo $sOUI|tr '[[:lower:]]' '[[:upper:]]')
sNicId=$(echo $sNicId|tr '[[:lower:]]' '[[:upper:]]')
case "$(uname -s)" in
CYGWIN*)
  if [[ ! -x "/cygdrive/c/Program Files/OpenVPN/bin/openvpn" ]]; then
    echo "ERROR: OpenVPN is not installed"
    exit
  fi
  ;;
esac

echo "Tap interface name is '${sVirtTapBase}_${sOUI}_${sNicId}'"

case "$(uname -s)" in
CYGWIN*)

  wmic nic where '(NetConnectionId="'${sVirtTapBase}_${sOUI}_${sNicId}'")' get
exit

  if [[ $(/cygdrive/c/Program\ Files/OpenVPN/bin/openvpn --show-adapters | grep -c "'${sVirtTapBase}_${sOUI}_${sNicId}'") -eq 0 ]]; then
    cat <<EOF

  Create a tap interface called '${sVirtTapBase}_${sOUI}_${sNicId}'

  Open a cmd session as administrator and execute the following command:

  "c:\Program Files\OpenVPN\bin\tapctl.exe" create --name "${sVirtTapBase}_${sOUI}_${sNicId}" --hwid root\tap0901

  1) After adding to the bridge, the 'Network Connections' page is *not* automatically refreshed. You need to press F5 and confirm that the interface is type is "Network Bridge"
  2) Please double check that the new tap interface is associated to 'TAP-Windows Adapter V9'
EOF
  else
    cat <<EOF

  There is already a tap interface with this name.
EOF
  fi
  cat <<EOF

  There is no CLI way to identify if this interface is already member of the network bridge. I will open the 'Control Panel\Network and Internet\Network Connections'. Please right clich the interface and then click "Add to bridge". Afther this is done, please press ENTER to continue.


EOF
  cmd /c ncpa.cpl
  read -p 'Press ENTER to continue: '

  sSimHGuest=""
  [[ -x microvax3900-4.1 ]] && sSimHGuest=microvax3900-4.1

  /cygdrive/c/Program\ Files/OpenVPN/bin/openvpn --show-adapters | grep "'${sVirtTapBase}_${sOUI}_${sNicId}'"|awk '{print $2}'
  printf 'show xq eth\nexit' > .tmp.$$.ini
  ./${sSimHGuest} .tmp.$$.ini
  rm .tmp.$$.ini
  ;;
*)
  echo "$(uname -s): I have no idea how to proceed...."
  exit
  ;;
esac

case "${sVirt}" in
simh)
  cat <<EOF

  Add the following lines to your SimH .ini file

  For a MicroVAX3900

    ; Network Interface
    set xq enable
    ; Attention: If it fails with DELQA-T, try DELQA. The other option is DEQNA, which is the oldest board type
    set xq type=delqa-t
    set xq mac=${sOUI:0:2}:${sOUI:2:2}:${sOUI:4:2}:${sNicId:0:2}:${sNicId:2:2}:${sNicId:4:2}
    attach xq ...
EOF
  ;;
*)
  echo "${sVirt}: I have no idea what to suggest"
  ;;
esac

GenerateHtmlFromAllSupportingScripst.sh

#!/bin/bash

[[ -f /tmp/$$.tmp ]] && rm /tmp/$$.tmp
touch /tmp/$$.tmp

cat >> /tmp/$$.tmp <<EOF
<h1 style="text-align: left;">Supporting scripts</h1>
<h2 style="text-align: left;">Table of Contents</h2>
<ul>
EOF

c=1
for f in *.sh; do
  echo "<li><a href=\"#chapter-id-${c}\">${f}</a></li>" >>/tmp/$$.tmp
  ((c++))
done

cat >>/tmp/$$.tmp <<EOF
</ul>

<h2 style="text-align: left;">Build environment</h2>
EOF

c=1
for f in *.sh; do
  echo $f
  cat >>/tmp/$$.tmp <<EOF
<h3 id="“chapter-id-${c}”" style="text-align: left;">${f}</h3>
EOF
  ./ConvertFromTextToHtmlCodeBox.sh --no-file-name --no-detail $f >> /tmp/$$.tmp
  ((c++))
done 

case $(uname -s) in
CYGWIN*) cat /tmp/$$.tmp > /dev/clipboard ;;
#Darwin*)
#Linux*)
esac

rm /tmp/$$.tmp

simh.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0) $*"
"${SCRIPT_DIR}/CreateGuestDirectory.sh" --virt-eng SimH $*

simh_3bsd_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" 3bsd

simh_4-1bsd_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" 4-1bsd

simh_4-2bsd_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" 4-2bsd

simh_4-3bsd-reno_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" 4-3bsd-reno

simh_4-3bsd_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" 4-3bsd

simh_4bsd_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" 4bsd

simh_microvax-3900.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0) $*"
"${SCRIPT_DIR}/simh.sh" --guest-hw microvax-3900 $*

simh_pdp-11.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0) Guest OS: $1"
"${SCRIPT_DIR}/simh.sh" pdp-11 "$1"

simh_ultrix-1.0_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" --guest-os ultrix-1.0 $*

simh_ultrix-1.1_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" --guest-os ultrix-1.1 $*

simh_ultrix-2.0_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-780.sh" --guest-os ultrix-2.0 $*

simh_ultrix-3.0_microvax-3900.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_microvax-3900.sh" ultrix-3.0

simh_ultrix-3.1_pdp-11.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_pdp-11.sh" ultrix-3.1

simh_ultrix-4.0_microvax-3900.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_microvax-3900.sh" --guest-os ultrix-4.0 $*

simh_ultrix-4.0_vax-8600.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-8600.sh" ultrix-4.0

simh_ultrix-4.2_microvax-3900.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_microvax-3900.sh" --guest-os ultrix-4.2 $*

simh_ultrix-4.5_microvax-3900.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_microvax-3900.sh" --guest-os ultrix-4.5 $*

simh_vax-11-750.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0) Guest OS: $1"
"${SCRIPT_DIR}/simh.sh" vax-11-750 "$1"

simh_vax-11-780.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0) $*"
"${SCRIPT_DIR}/simh.sh" --guest-hw vax-11-780 $*

simh_vax-8600.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0) Guest OS: $1"
"${SCRIPT_DIR}/simh.sh" vax-8600 "$1"

simh_vm2-2.0_vax-11-750.sh

#!/bin/bash

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "($0)"
"${SCRIPT_DIR}/simh_vax-11-750.sh" vms-2.0

Comments

Popular posts from this blog

IT - Which Is Faster: find | cpio -pdvm OR rsync?

To determine which is faster between find | cpio -pdvm and rsync for copying a large directory tree locally, we need to consider several factors: the nature of the operation, the tools' design, the system environment, and the specific use case. Let’s break this down based on the information provided in the web results and general knowledge about these tools. Overview of the Tools find | cpio -pdvm : find : Recursively lists all files and directories in a given path. cpio : A tool for copying files into or out of a cpio or tar archive. In this case, with the -pdvm options: -p : Pass-through mode (copy files from one directory tree to another). -d : Create directories as needed. -v : Verbose mod...

IT - Troubleshooting Kodi DLNA Visibility Issues After Windows Updates: A Deep Dive Into Conflicts, Fixes, and Lessons Learned

Title: Troubleshooting Kodi DLNA Visibility Issues After Windows Updates: A Deep Dive Into Conflicts, Fixes, and Lessons Learned Subtitle: How I Diagnosed and Solved Intermittent Kodi Visibility Problems on a Samsung Smart TV After Windows OS Updates and Media Server Conflicts Introduction Home media streaming should be seamless, but anyone who has integrated Kodi into a smart home setup knows that stability isn't always guaranteed. Recently, I encountered a frustrating issue: Kodi, running perfectly on my Windows 10 Pro desktop, suddenly became invisible to my Samsung Smart TV via DLNA. The journey to resolve this seemingly simple visibility issue turned into a deep technical rabbit hole involving Windows Media Server, Universal Media Server, Jellyfin, NordVPN, and the very internals o... The System Setup Before diving into the problem, it's essential to understand my hardware and software setup: Operating System: Windows 10 Pro (build 2009) Media Server: Kodi (...

Movie - The Wizard of Oz (1939)

  My views Plot In rural  Kansas ,  Dorothy Gale  lives on a farm owned by her Uncle Henry and Aunt Em, and wishes she could be somewhere else. Dorothy's neighbor, Almira Gulch, who had been bitten by Dorothy's dog, Toto, obtains a sheriff's order authorizing her to seize Toto. Toto escapes and returns to Dorothy, who runs away to protect him. Professor Marvel, a charlatan fortune-teller, convinces Dorothy that Em is heartbroken, which prompts Dorothy to return home. She returns just as a  tornado  approaches the farm. Unable to get into the locked storm cellar, Dorothy takes cover in the farmhouse and is knocked unconscious. She seemingly awakens to find the house moving through the air, with her and Toto still inside it. The house comes down in an unknown land, and Dorothy is greeted by a good witch named  Glinda , who floats down in a bubble and explains that Dorothy has landed in Munchkinland in the  Land of Oz , and that the Munchkins are cel...