Created
June 17, 2012 16:17
-
-
Save anak10thn/2944987 to your computer and use it in GitHub Desktop.
Toroo Kernel Script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Ibnu Yahya <[email protected]> | |
version='3.0.4' | |
pkgversion=`date '+%d%m%Y'` | |
softname='linux' | |
oldkernel=`uname -r` | |
#oldkernel="2.6.33.4" | |
arch='i486' | |
cpu='i686' | |
Ktune=i486 | |
Karch=x86 | |
Kver=${version} | |
buildir=$(pwd) | |
srcdir="/usr/src/linux-${version}" | |
rm -rf $srcdir | |
newdir="${softname}-${version}-${arch}-${pkgversion}" | |
tar vxf $softname-$version.tar.bz2 -C /usr/src/ | |
cp /boot/config-$oldkernel $srcdir/.config | |
#cp i386-config.flavour.generic $srcdir/.config | |
#cp ./config/config-generic-3.0.4 $srcdir/.config | |
cd $srcdir | |
make menuconfig | |
make bzImage | |
make modules | |
PKG=/tmp/${newdir} | |
cd ${buildir} | |
rm -rf ${PKG} | |
rm -f ${PKG}.tgz | |
# Creating main directories | |
mkdir -p ${PKG}/boot | |
mkdir -p ${PKG}/etc/rc.d | |
mkdir -p ${PKG}/lib/modules | |
mkdir -p ${PKG}${srcdir} | |
mkdir -p ${PKG}/usr/{doc,src}/kernel-${version} | |
# mkdir -p ${PKG}/usr/include | |
# Install the kernel | |
install -D -m644 ${srcdir}/arch/${Karch}/boot/bzImage ${PKG}/boot/vmlinuz-${version} | |
install -D -m644 ${srcdir}/System.map ${PKG}/boot/System.map-${version} | |
install -D -m644 ${srcdir}/.config ${PKG}/boot/config-${version} | |
( | |
cd ${PKG}/boot | |
ln -s vmlinuz-${version} vmlinuz | |
ln -s System.map-${version} System.map | |
ln -s config-${version} config | |
) | |
## Install kernel modules | |
( | |
cd ${srcdir} | |
make INSTALL_MOD_PATH=${PKG} modules_install | |
) | |
( | |
cd ${srcdir} | |
## Install fake kernel source | |
install -D -m644 Module.symvers ${PKG}${srcdir}/Module.symvers | |
install -D -m644 Makefile ${PKG}${srcdir}/Makefile | |
install -D -m644 kernel/Makefile ${PKG}${srcdir}/kernel/Makefile | |
install -D -m644 .config ${PKG}${srcdir}/.config | |
install -D -m644 .config ${PKG}/lib/modules/${version}/.config | |
## Install scripts directory | |
cp -a scripts/ ${PKG}${srcdir} | |
# cp -a Documentation/ ${PKG}${srcdir} | |
## remove other architecture docs | |
#for i in `/bin/ls arch/ -F1|grep "/"|grep -v "x86\|ia64"` DocBook/; | |
# do [ -d ${PKG}${srcdir}/Documentation/$i ] \ | |
# && rm -fr ${PKG}${srcdir}/Documentation/$i; | |
#done | |
## Install userspace kernel headers | |
#( | |
#cd ${srcdir} | |
#make headers_check | |
#make headers_install ARCH=i386 INSTALL_HDR_PATH=${PKG}/usr | |
#) | |
#( | |
#cd ${PKG}/usr/include/linux | |
# ln -sf autoconf.h config.h | |
#) | |
## Install kernel space kernel headers | |
( | |
cd ${srcdir} | |
cp -rf include ${PKG}${srcdir}/include | |
) | |
## Install headers for lirc | |
mkdir -p ${PKG}${srcdir}/drivers/media/video | |
cp drivers/media/video/*.h ${PKG}${srcdir}/drivers/media/video/ | |
for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102 usbvideo zc0301; do | |
mkdir -p ${PKG}${srcdir}/drivers/media/video/$i | |
cp -a drivers/media/video/$i/*.h ${PKG}${srcdir}/drivers/media/video/$i | |
done | |
## Install dm headers | |
mkdir -p ${PKG}${srcdir}/drivers/md | |
cp drivers/md/*.h ${PKG}${srcdir}/drivers/md | |
## Install inotify.h | |
mkdir -p ${PKG}${srcdir}/include/linux | |
cp include/linux/inotify.h ${PKG}${srcdir}/include/linux/ | |
## Install CLUSTERIP file for iptables | |
mkdir -p ${PKG}${srcdir}/net/ipv4/netfilter/ | |
cp net/ipv4/netfilter/ipt_CLUSTERIP.c ${PKG}${srcdir}/net/ipv4/netfilter/ | |
## Install wireless headers | |
mkdir -p ${PKG}${srcdir}/net/mac80211/ | |
cp net/mac80211/*.h ${PKG}${srcdir}/net/mac80211/ | |
## Install Kconfig files | |
for i in `find . -name "Kconfig*"`; do | |
mkdir -p ${PKG}${srcdir}/`echo $i | sed 's|/Kconfig.*||'` | |
cp $i ${PKG}${srcdir}/$i | |
done | |
## Copy arch files | |
mkdir -p ${PKG}${srcdir}/arch/${Karch}/kernel | |
cp arch/${Karch}/kernel/asm-offsets.s ${PKG}${srcdir}/arch/${Karch}/kernel | |
cp arch/${Karch}/Makefile* ${PKG}${srcdir}/arch/${Karch} | |
cp -r arch/${Karch}/configs ${PKG}${srcdir}/arch/${Karch} | |
## Copy arch includes for external modules and fix the nVidia issue | |
mkdir -p ${PKG}${srcdir}/arch/${Karch} | |
cp -a arch/${Karch}/include ${PKG}${srcdir}/arch/${Karch}/ | |
(cd ${PKG}${srcdir}/arch && ln -s ${Karch} i386) | |
## Remove alien architectures | |
cd ${PKG}${srcdir}/arch | |
find . -type d -mindepth 1 -maxdepth 1 ! -iname x86 | xargs rm -fr | |
## Create needed symlinks | |
(cd ${PKG}${srcdir}/include | |
rm -f asm asm-${Karch} 2>/dev/null | |
ln -s ../arch/${Karch}/include/asm asm-${Karch} | |
ln -s ../arch/${Karch}/include/asm asm | |
) | |
(cd ${PKG}/lib/modules/${version} | |
rm -rf source build 2>/dev/null | |
ln -sf ../../..${srcdir} build | |
) | |
) | |
# Creating rc.modules | |
cat << EOF > ${PKG}/etc/rc.d/rc.modules.new | |
#!/bin/sh | |
# rc.modules $(date) <[email protected]> | |
EOF | |
cat << "EOF" >> ${PKG}/etc/rc.d/rc.modules.new | |
# | |
# This file loads extra drivers into the Linux kernel. | |
# As kmod and udev handle module loading, this file will be mostly | |
# commented out, but is still useful for loading selected modules at boot time. | |
# | |
RELEASE=$(uname -r) | |
echo "Updating module dependencies for Linux $RELEASE" | |
/sbin/depmod -A | |
EOF | |
find ${PKG}/lib/modules -type f -iname *.ko | sed -e "s/^.*\/\(.*\)\.ko$/# \/sbin\/modprobe \1/m ; \ | |
s/# \(.* ac$\)/\1/ ; \ | |
s/# \(.* battery$\)/\1/ ; \ | |
s/# \(.* button$\)/\1/ ; \ | |
s/# \(.* fan$\)/\1/ ; \ | |
s/# \(.* fuse$\)/\1/ ; \ | |
s/# \(.* processor$\)/\1/ ; \ | |
s/# \(.* thermal$\)/\1/ ; \ | |
s/# \(.* lp$\)/\1/ ; \ | |
s/# \(.* parport_pc$\)/\1/ ; \ | |
s/# \(.* video$\)/\1/" | sort \ | |
>> ${PKG}/etc/rc.d/rc.modules.new | |
chmod 755 ${PKG}/etc/rc.d/rc.modules.new | |
chown -R root:root ${PKG} | |
mkdir -p ${PKG}/install | |
cat << "EOF" > ${PKG}/install/doinst.sh | |
config() { | |
NEW="$1" | |
OLD="`dirname $NEW`/`basename $NEW .new`" | |
# If there's no config file by that name, mv it over: | |
if [ ! -r $OLD ]; then | |
mv $NEW $OLD | |
elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy | |
rm $NEW | |
fi | |
# Otherwise, we leave the .new copy for the admin to consider... | |
} | |
config etc/rc.d/rc.modules.new | |
EOF | |
cat << "EOF" > ${PKG}/install/slack-desc | |
kernel: Linux kernel | |
kernel: | |
kernel: The Linux kernel is compiled with support for most hardware. | |
kernel: | |
kernel: Drivers (such as for CD-ROM drives on proprietary interfaces, or | |
kernel: or ethernet cards) may be loaded as modules. | |
kernel: See /etc/rc.d/rc.modules for examples | |
kernel: | |
kernel: | |
kernel: | |
kernel: | |
EOF | |
mkdir -p ${PKG}/usr/src/${softname}-${version} | |
cp ${buildir}/build-${softname}.sh ${PKG}/usr/src/${softname}-${version} | |
cd ${PKG} | |
makepkg -p -l y -c n ${PKG}.tlz | |
# cleanup | |
cd ${buildir} | |
rm -rf ${PKG} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment