From a3bd9556483f6cb5fd8a2c02b09f35f707b4b21d Mon Sep 17 00:00:00 2001 From: TomasM Date: Wed, 11 Oct 2017 03:58:35 -0400 Subject: [PATCH] bootfiles for slax-debian --- Slax/debian/bootfiles/bootinst.bat | 101 +++++++++++++++++++ Slax/debian/bootfiles/bootinst.sh | 149 +++++++++++++++++++++++++++++ Slax/debian/bootfiles/bootlogo.png | Bin 0 -> 23015 bytes Slax/debian/bootfiles/runadmin.vbs | 3 + Slax/debian/bootfiles/samedisk.vbs | 68 +++++++++++++ 5 files changed, 321 insertions(+) create mode 100644 Slax/debian/bootfiles/bootinst.bat create mode 100644 Slax/debian/bootfiles/bootinst.sh create mode 100644 Slax/debian/bootfiles/bootlogo.png create mode 100644 Slax/debian/bootfiles/runadmin.vbs create mode 100644 Slax/debian/bootfiles/samedisk.vbs diff --git a/Slax/debian/bootfiles/bootinst.bat b/Slax/debian/bootfiles/bootinst.bat new file mode 100644 index 0000000..417861f --- /dev/null +++ b/Slax/debian/bootfiles/bootinst.bat @@ -0,0 +1,101 @@ +#!/bin/sh +exec /bin/bash "$(dirname "$0")"/bootinst.sh +exec /bin/sh "$(dirname "$0")"/bootinst.sh + +@echo off +COLOR 2F +cls +echo =============================================================================== +echo. +echo ________.__ +echo / ____/^| ^| _____ ___ ___ +echo \____ \ ^| ^| \__ \ \ \/ / +echo / \^| ^|__/ __ \_^> ^< +echo /______ /^|____(____ /__/\_ \ +echo \/ \/ \/ +echo. +echo =============================================================================== +echo. + +set DISK=none +set BOOTFLAG=boot666s.tmp + +:checkPrivileges +mkdir "%windir%\AdminCheck" 2>nul +if '%errorlevel%' == '0' rmdir "%windir%\AdminCheck" & goto gotPrivileges else goto getPrivileges + +:getPrivileges +ECHO. +ECHO Administrator Rights are required +ECHO Invoking UAC for Privilege Escalation +ECHO. +runadmin.vbs %0 +goto end + +:gotPrivileges +CD /D "%~dp0" + +echo This file is used to determine current drive letter. It should be deleted. >\%BOOTFLAG% +if not exist \%BOOTFLAG% goto readOnly + +echo.|set /p=wait please +for %%d in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do echo.|set /p=. & if exist %%d:\%BOOTFLAG% set DISK=%%d +echo . . . . . . . . . . +del \%BOOTFLAG% +if %DISK% == none goto DiskNotFound + +wscript.exe samedisk.vbs %windir% %DISK% +if %ERRORLEVEL% == 99 goto refuseDisk + +echo Setting up boot record for %DISK%: ... + +if %OS% == Windows_NT goto setupNT +goto setup95 + +:setupNT +\linux\boot\syslinux.exe -maf -d /linux/boot/ %DISK%: +if %ERRORLEVEL% == 0 goto setupDone +goto errorFound + +:setup95 +\linux\boot\syslinux.com -maf -d /linux/boot/ %DISK%: +if %ERRORLEVEL% == 0 goto setupDone +goto errorFound + +:setupDone +echo Installation finished. +goto pauseit + +:errorFound +color 4F +echo. +echo Error installing boot loader +goto pauseit + +:refuseDisk +color 4F +echo. +echo Directory %DISK%:\linux\boot\ seems to be on the same physical disk as your Windows. +echo Installing bootloader would harm your Windows and thus is disabled. +echo Please use different drive and try again. +goto pauseit + +:readOnly +color 4F +echo. +echo You're starting this installer from a read-only media, this will not work. +goto pauseit + +:DiskNotFound +color 4F +echo. +echo Error: can't discover current drive letter + +:pauseit +if "%1" == "auto" goto end + +echo. +echo Press any key... +pause > nul + +:end diff --git a/Slax/debian/bootfiles/bootinst.sh b/Slax/debian/bootfiles/bootinst.sh new file mode 100644 index 0000000..9755534 --- /dev/null +++ b/Slax/debian/bootfiles/bootinst.sh @@ -0,0 +1,149 @@ +#!/bin/sh +# +# This script will setup booting from disk (USB or harddrive) +# +# If you see this file in a text editor instead of getting it executed, +# then it is missing executable permissions (chmod). You can try to set +# exec permissions for this file by using: chmod a+x bootinst.sh +# Alternatively, you may try to run bootinst.bat file instead +# +# Scrolling down will reveal the actual code of this script. +# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# if we're running this from X, re-run the script in konsole or xterm +if [ "$DISPLAY" != "" ]; then + if [ "$1" != "--rex" -a "$2" != "--rex" ]; then + konsole --nofork -e /bin/sh $0 --rex 2>/dev/null || xterm -e /bin/sh $0 --rex 2>/dev/null || /bin/sh $0 --rex 2>/dev/null + exit + fi +fi + +# make sure I am root +if [ "$UID" != "0" -a "$UID" != "" ]; then + echo "" + echo "You are not root. You must run bootinst script as root." + echo "The bootinst script needs direct access to your boot device." + echo "Use sudo or kdesudo or similar wrapper to execute this." + read junk + exit 1 +fi + +# change working directory to dir from which we are started +CWD="$(pwd)" +BOOT="$(dirname "$0")" +BOOT="$(realpath "$BOOT" 2>/dev/null || echo $BOOT)" +cd "$BOOT" + +# find out device and mountpoint +PART="$(df . | tail -n 1 | tr -s " " | cut -d " " -f 1)" +DEV="$(echo "$PART" | sed -r "s:[0-9]+\$::" | sed -r "s:([0-9])[a-z]+\$:\\1:i")" #" + +# check if disk is already bootable. Mostly for Windows discovery +if [ "$(fdisk -l "$DEV" | fgrep "$DEV" | fgrep "*")" != "" ]; then + echo "" + echo "Partition $PART seems to be located on a physical disk," + echo "which is already bootable. If you continue, your drive $DEV" + echo "will boot only Linux by default." + echo "Press [Enter] to continue, or [Ctrl+C] to abort..." + read junk +fi + +if [ ! -x ./extlinux.exe ]; then + # extlinux is not executable. There are two possible reasons: + # either the fs is mounted with noexec, or file perms are wrong. + # Try to fix both, no fail on error yet + chmod a+x ./extlinux.exe + mount -o remount,exec $DEV +fi + +# install syslinux bootloader +echo "* attempting to install bootloader to $BOOT..." + +# Try to use installed extlinux binary and fallback to extlinux.exe only +# if no installed extlinux is not found at all. +EXTLINUX="$(which extlinux 2>/dev/null)" +if [ "$EXTLINUX" = "" ]; then + EXTLINUX="./extlinux.exe" +fi + +"$EXTLINUX" --install "$BOOT" + +if [ $? -ne 0 ]; then + echo "Error installing boot loader." + echo "Read the errors above and press enter to exit..." + read junk + exit 1 +fi + +if [ "$DEV" != "$PART" ]; then + # Setup MBR on the first block + echo "* setup MBR on $DEV" + dd bs=440 count=1 conv=notrunc if="$BOOT/mbr.bin" of="$DEV" 2>/dev/null + + # Toggle bootable flags + echo "* set bootable flag for $PART" + PART="$(echo "$PART" | sed -r "s:.*[^0-9]::")" + ( + fdisk -l "$DEV" | fgrep "*" | fgrep "$DEV" | cut -d " " -f 1 \ + | sed -r "s:.*[^0-9]::" | xargs -I '{}' echo -ne "a\n{}\n" + echo a + echo $PART + echo w + ) | fdisk $DEV >/dev/null 2>&1 +fi + +echo "Boot installation finished." +echo "Press Enter..." +read junk +cd "$CWD" diff --git a/Slax/debian/bootfiles/bootlogo.png b/Slax/debian/bootfiles/bootlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8ebbf4a1a91057b48a4cc225168e04901ceeaf GIT binary patch literal 23015 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 +' Inspired by: http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/disk/drives/ +' ------------------------------------------- + +drive1 = "" +drive2 = "" +phys1 = "" +phys2 = "" + +Set args = WScript.Arguments + +if args.Length > 0 then + drive1 = args.Item(0) +end if +if args.Length > 1 then + drive2 = args.Item(1) +end if + +if drive1 = "" then + WScript.Quit(1) +end if + +if drive2 = "" then + WScript.Quit(2) +end if + + +ComputerName = "." +Set wmiServices = GetObject _ + ("winmgmts:{impersonationLevel=Impersonate}!//" & ComputerName) +Set wmiDiskDrives = wmiServices.ExecQuery _ + ("SELECT Caption, DeviceID FROM Win32_DiskDrive") + +For Each wmiDiskDrive In wmiDiskDrives + + strEscapedDeviceID = _ + Replace(wmiDiskDrive.DeviceID, "\", "\\", 1, -1, vbTextCompare) + Set wmiDiskPartitions = wmiServices.ExecQuery _ + ("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & _ + strEscapedDeviceID & """} WHERE " & _ + "AssocClass = Win32_DiskDriveToDiskPartition") + + For Each wmiDiskPartition In wmiDiskPartitions + Set wmiLogicalDisks = wmiServices.ExecQuery _ + ("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & _ + wmiDiskPartition.DeviceID & """} WHERE " & _ + "AssocClass = Win32_LogicalDiskToPartition") + + For Each wmiLogicalDisk In wmiLogicalDisks + + if UCase(Left(drive1,1)) = UCase(Left(wmiLogicalDisk.DeviceID,1)) then + phys1=wmiDiskDrive.DeviceID + end if + + if UCase(Left(drive2,1)) = UCase(Left(wmiLogicalDisk.DeviceID,1)) then + phys2=wmiDiskDrive.DeviceID + end if + + Next + Next +Next + +if phys1 = phys2 then + WScript.Quit(99) +end if