CasperSecurity

Current Path : /usr/lib/kernel/install.d/
Upload File :
Current File : //usr/lib/kernel/install.d/90-loaderentry.install

#!/usr/bin/env bash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# systemd is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with systemd; If not, see <http://www.gnu.org/licenses/>.

COMMAND="$1"
KERNEL_VERSION="$2"
ENTRY_DIR_ABS="$3"
KERNEL_IMAGE="$4"
INITRD_OPTIONS_START="5"

if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then
    exit 0
fi

if ! [[ -d "$ENTRY_DIR_ABS" ]]; then
    exit 0
fi

MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID

BOOT_ROOT=${ENTRY_DIR_ABS%/$MACHINE_ID/$KERNEL_VERSION}
BOOT_MNT=$(stat -c %m $BOOT_ROOT)
if [[ $BOOT_MNT == '/' ]]; then
    ENTRY_DIR=$ENTRY_DIR_ABS
else
    ENTRY_DIR=${ENTRY_DIR_ABS#$BOOT_MNT}
fi

if [[ $COMMAND == remove ]]; then
    rm -f "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf"
    rm -f "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION+"*".conf"
    exit 0
fi

if ! [[ $COMMAND == add ]]; then
    exit 1
fi

if ! [[ $KERNEL_IMAGE ]]; then
    exit 1
fi

if [[ -f /etc/os-release ]]; then
    . /etc/os-release
elif [[ -f /usr/lib/os-release ]]; then
    . /usr/lib/os-release
fi

if ! [[ $PRETTY_NAME ]]; then
    PRETTY_NAME="Linux $KERNEL_VERSION"
fi

if [[ -f /etc/kernel/cmdline ]]; then
    read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline
elif [[ -f /usr/lib/kernel/cmdline ]]; then
    read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline
else
    declare -a BOOT_OPTIONS

    read -r -d '' -a line < /proc/cmdline
    for i in "${line[@]}"; do
        [[ "${i#initrd=*}" != "$i" ]] && continue
        [[ "${i#BOOT_IMAGE=*}" != "$i" ]] && continue
        BOOT_OPTIONS+=("$i")
    done
fi

if [[ -f /etc/kernel/tries ]]; then
    read -r TRIES </etc/kernel/tries
    if ! [[ "$TRIES" =~ ^[0-9]+$ ]] ; then
        echo "/etc/kernel/tries does not contain an integer." >&2
        exit 1
    fi
    LOADER_ENTRY="$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION+$TRIES.conf"
else
    LOADER_ENTRY="$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf"
fi

install -g root -o root -m 0644 "$KERNEL_IMAGE" "$ENTRY_DIR_ABS/linux" || {
    echo "Could not copy '$KERNEL_IMAGE' to '$ENTRY_DIR_ABS/linux'." >&2
    exit 1
}

INITRD_OPTIONS=( "${@:${INITRD_OPTIONS_START}}" )

for initrd in "${INITRD_OPTIONS[@]}"; do
    if [[ -f "${initrd}" ]]; then
        initrd_basename="$(basename ${initrd})"
        [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \
            echo "Installing $ENTRY_DIR_ABS/${initrd_basename}"
        install -g root -o root -m 0644 "${initrd}" "$ENTRY_DIR_ABS/${initrd_basename}" || {
            echo "Could not copy '${initrd}' to '$ENTRY_DIR_ABS/${initrd_basename}'." >&2
            exit 1
        }
    fi
done

# If no initrd option is supplied, fall back to "initrd" which is
# the name used by dracut when generating it in its kernel-install hook
[[ ${#INITRD_OPTIONS[@]} == 0 ]] && INITRD_OPTIONS=( initrd )

mkdir -p "${LOADER_ENTRY%/*}" || {
    echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2
    exit 1
}

[ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \
    echo "Creating $LOADER_ENTRY"
{
    echo "title      $PRETTY_NAME"
    echo "version    $KERNEL_VERSION"
    echo "machine-id $MACHINE_ID"
    echo "options    ${BOOT_OPTIONS[*]}"
    echo "linux      $ENTRY_DIR/linux"
    for initrd in "${INITRD_OPTIONS[@]}"; do
        [[ -f $ENTRY_DIR_ABS/$(basename ${initrd}) ]] && \
            echo "initrd     $ENTRY_DIR/$(basename ${initrd})"
    done
    :
} > "$LOADER_ENTRY" || {
    echo "Could not create loader entry '$LOADER_ENTRY'." >&2
    exit 1
}
exit 0
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY