129 lines
3.3 KiB
Bash
Executable File
129 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
LOG_FILE="/tmp/update-kernel.log"
|
|
BACKUP="/home/yorune/MEGA/Systems/Linux/portage"
|
|
TMP_KERNEL="/tmp/kernel-config-$(uname -r)"
|
|
DEFAULT_KERNEL="/usr/src/linux/.config"
|
|
GRUBRELOAD=1
|
|
|
|
function starting() {
|
|
echo -e "\e[93m----------------------COMPILING------------------------------\e[0m"
|
|
sudo cp -rv $DEFAULT_KERNEL $TMP_KERNEL
|
|
cp -r $TMP_KERNEL $BACKUP/kernel-config
|
|
cp -r /etc/portage/* $BACKUP
|
|
qlist -I | sort -u > $BACKUP/list-of-programs
|
|
}
|
|
|
|
function selection() {
|
|
echo -e "\e[93m----------------------SELECTION-----------------------------\e[0m"
|
|
sudo eselect kernel list
|
|
echo
|
|
echo
|
|
read -rp "New kernel is: " KERVER
|
|
echo
|
|
echo -e "Your kernel now is \e[91m$(uname -sr)\e[0m"
|
|
echo -e "Your selected kernel is \e[91m"$KERVER"\e[0m"
|
|
sudo eselect kernel set $KERVER
|
|
sudo eselect kernel list | grep "*"
|
|
echo
|
|
}
|
|
|
|
function compilation() {
|
|
read -rp "Do you want to accept and compile (Y/N): " agreed
|
|
echo
|
|
if [ "$agreed" == "y" ] || [ "$agreed" == "Y" ]
|
|
then
|
|
echo -e "\e[91m----------------------\e[5mSTARTING\e[0m\e[91m------------------------------\e[0m" && sleep 10
|
|
$NOW > /tmp/compiling-starting
|
|
NEW_KERNEL="/tmp/new-kernel-config"
|
|
sudo cp -r "$TMP_KERNEL" "$DEFAULT_KERNEL"
|
|
cd /usr/src/linux || exit
|
|
sudo make menuconfig; sleep 2; sudo cp -r "$DEFAULT_KERNEL" "$NEW_KERNEL"
|
|
sudo genkernel all --makeopts=-j"$(nproc --all)" \
|
|
--kernel-config=$NEW_KERNEL \
|
|
--callback="emerge nvidia-drivers::gentoo" \
|
|
--zfs
|
|
elif [ "$agreed" == "N" ] || [ "$agreed" == "n" ]
|
|
then
|
|
exit
|
|
fi
|
|
}
|
|
|
|
function ending() {
|
|
echo
|
|
echo
|
|
echo -e "\e[93m----------------------CHECKING-----------------------------\e[0m"
|
|
checking
|
|
echo
|
|
echo
|
|
echo -e "\e[93m----------------------REMEMBER-----------------------------\e[0m"
|
|
echo "You can remove:"
|
|
echo "* /lib/modules/OLD_KERNEL"
|
|
echo "* /boot/initramfs-genkernel-OLD_KERNEL"
|
|
echo "* /boot/vmlinuz-OLD_KERNEL"
|
|
echo "* /boot/System.map-OLD_KERNEL"
|
|
echo "* /boot/initramfs-OLD_KERNEL"
|
|
echo "* /usr/src/linux-OLD_KERNEL"
|
|
echo
|
|
echo -e "AFTER EVERYTHING YOU MUST WRITE COMMAND \e[91m"sudo grub-mkconfig -o /boot/grub/grub.cfg"\e[0m"
|
|
}
|
|
|
|
function checking() {
|
|
KERNEL=$(eselect kernel list \
|
|
| awk '{print $2}' \
|
|
| grep -Eo '[0-9]+.[0-9]+.[0-9]+' \
|
|
| tail -n1)
|
|
|
|
INITRANFS="initramfs-$KERNEL-gentoo-x86_64.img"
|
|
SYSTEMMAP="System.map-$KERNEL-gentoo-x86_64"
|
|
VMLINUZ="vmlinuz-$KERNEL-gentoo-x86_64"
|
|
|
|
ifchecking "$INITRANFS"
|
|
ifchecking "$SYSTEMMAP"
|
|
ifchecking "$VMLINUZ"
|
|
[ "$GRUBRELOAD" -eq "1" ] && sudo grub-mkconfig -o /boot/grub/grub.cfg \
|
|
|| echo "Please check all files and regenerate grub again!"
|
|
}
|
|
|
|
function ifchecking () {
|
|
FILE=/boot/$1
|
|
if test -f "$FILE"; then
|
|
echo "$FILE exist in the /boot folder ;)"
|
|
else
|
|
echo "$FILE NOT exist in the /boot folder ;)"
|
|
GRUBRELOAD=0
|
|
fi
|
|
}
|
|
|
|
function addgit() {
|
|
cd "$BACKUP" || exit
|
|
git add .
|
|
git commit -m "Updated: $(date)"
|
|
git push
|
|
cd "$HOME" || exit
|
|
}
|
|
|
|
function main() {
|
|
clear
|
|
|
|
BEGIN=$(date +"%s")
|
|
|
|
starting
|
|
addgit
|
|
selection
|
|
compilation
|
|
|
|
echo -e "\e[31mI am leaving! Thank You!\e[0m" && sleep 3
|
|
|
|
TERMIN=$(date +"%s")
|
|
DIFFTLPS=$(($TERMIN-$BEGIN))
|
|
|
|
echo -e "\e[93m------------------TIME COMPILATION-------------------------\e[0m"
|
|
echo -e "\e[93m$(($DIFFTLPS / 60)) minutes and $(($DIFFTLPS % 60)) seconds \e[0m elapsed for Script Execution." && sleep 3
|
|
ending
|
|
|
|
exit
|
|
}
|
|
|
|
main
|