I test it on Arch Linux and Ubuntu and works fine if the source of the kernel is in
~/src/linux-KERNEL_VERSION
#!/bin/bash
set -e
if (( $EUID != 0 )); then
echo "this script must be run as root"
exit 1
fi
if (( $# != 1 )); then
echo "pass only the KERNEL_VERSION as parameter"
exit 1
fi
DISTRO=$(cat /etc/issue | awk '{print $1}')
CORE=$(grep -c processor /proc/cpuinfo)
FLAGS=`expr $CORE + 1`
JFLAGS=-j$FLAGS
cd /home/$SUDO_USER/src/linux-$1
echo "copy the config file"
sleep 1
case $DISTRO in
"Arch")
zcat /proc/config.gz > .config
;;
"Ubuntu")
cp /boot/config* .config
;;
esac
KER_NAME=$(cat .config | grep CONFIG_LOCALVERSION | grep -Po '(?<=\")[^)]*(?=\")')
echo "start make"
sleep 1
make $JFLAGS
make modules_install
echo "finish make"
echo "install the kernel"
sleep 1
cp -v arch/x86/boot/bzImage /boot/vmlinuz-$1$KER_NAME
case $DISTRO in
"Arch")
mkinitcpio -k $1$KER_NAME -c /etc/mkinitcpio.conf -g /boot/initramfs-$1$KER_NAME.img
;;
"Ubuntu")
mkinitramfs -o /boot/initrd.img-$1$KER_NAME $1
;;
esac
cp System.map /boot/System.map-$1$KER_NAME
echo "updating grub"
sleep 1
cp /boot/grub/grub.cfg /boot/grub/grub.cfg.old
grub-mkconfig -o /boot/grub/grub.cfg
No comments:
Post a Comment