⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kinstall.sh

📁 unix and linux net driver
💻 SH
字号:
#!/bin/sh##  kinstall.sh -- install updated kernel PPP driver in Linux kernel source#     Michael Callahan callahan@maths.ox.ac.uk 17 May 1995##  This script is complicated because we want to avoid installing a driver#  in a kernel if it won't work in that kernel.  This means two things:#    1) we check the version of the kernel and refuse to install if the#       kernel is too old;#    2) we check that the files already in the kernel aren't more recent#       than the one we're about to install.#  If either 1) or 2) occurs then we exit with an error message and don't#  touch anything.##  In addition, we have to edit the Makefile in the drivers/net#  directory to add support for the ppp-comp compression option.LINUXSRC=/usr/src/linuxif [ $# -gt 1 ]; then   echo usage: $0 [linux-source-directory]   exit 1fiif [ $# -eq 1 ]; then   LINUXSRC=$1fi##  Make sure we can find the kernel sourceLINUXMK=$LINUXSRC/Makefileif [ ! -r $LINUXMK -o ! -d $LINUXSRC/drivers ]; then  echo There appears to be no kernel source distribution in $LINUXSRC.  echo Give the top-level kernel source directory as the argument to  echo this script.  echo usage: $0 [linux-source-directory]  exit 1fi##  Check that the kernel source Makefile includes the #    VERSION, PATCHLEVEL, SUBLEVEL version-numbering scheme#    introduced in 1.0.1if [ `egrep '^VERSION|^PATCHLEVEL|^SUBLEVEL' $LINUXMK | wc -l` -ne 3 ]; then  echo You appear to have a very old kernel. You must upgrade.  echo It is recommended that you upgrade to the most recent 2.0.x kernel.  exit 1fi##  Set the VERSION, PATCHLEVEL, SUBLEVEL variablesVERSION=`egrep '^VERSION' $LINUXMK | sed 's/[^0-9]//g'`PATCHLEVEL=`egrep '^PATCHLEVEL' $LINUXMK | sed 's/[^0-9]//g'`SUBLEVEL=`egrep '^SUBLEVEL' $LINUXMK | sed 's/[^0-9]//g'`KERNEL=$VERSION.$PATCHLEVEL.$SUBLEVEL##  Pass judgement on the kernel versionif [ $VERSION -lt 2 ]; then    echo You appear to be running $KERNEL. There is no support for    echo kernels predating 2.0.0.  It is recommended that you upgrade    echo to the most recent 2.0.x kernel.    exit 1fi## convenience function to exit if the last command failedbombiffailed () {  STATUS=$?  if [ $STATUS -ne 0 ]; then    echo "=== kinstall.sh exiting with failure status $STATUS"    exit $STATUS  fi}## convenience function to compare two files marked with ==FILEVERSION# version numbers; returns success if $1 is not older than $2newer () {  file1=$1  file2=$2  pat='==FILEVERSION[ \t]+[0-9]+[ \t]*=='  # Find the revision in the kernel  f1rev=""  if [ -r $file1 ]; then    f1rev=`egrep "$pat" $file1 | head -1 | sed 's/[^0-9]//g'`  fi  # Find the revision of the local file  f2rev=""  if [ -r $file2 ]; then    f2rev=`egrep "$pat" $file2 | head -1 | sed 's/[^0-9]//g'`  fi  # Make the strings the same length to avoid comparison problems  f1rev=`echo "0000000000"$f1rev | tail -c 10`  f2rev=`echo "0000000000"$f2rev | tail -c 10`  # Test the order of the two revisions  if [ $f1rev -ge $f2rev ]; then    true ; return  fi  false ; return}##  Install the files.installfile () {  BASE=`basename $1`  if [ ! -e $BASE ]; then    if [ -e ../include/linux/$BASE ]; then      BASE=../include/linux/$BASE    else      echo Could not find source file $BASE !      false ; return    fi  fi  if newer $1 $BASE; then    echo $1 is not older than $BASE, skipping    return 0  fi  BACKUP=`echo $1 | sed 's/.c$/.old.c/;s/.h$/.old.h/'`  if [ -f $1 -a $BACKUP != $1 ]; then    echo Saving old $1 as `basename $BACKUP`    mv $1 $BACKUP    bombiffailed  fi  echo Installing new $1  cp $BASE $1  bombiffailed  touch $1  bombiffailed}## Check for the root usertest_root() {  my_uid=`id -u`  my_name=`id -u -n`  if [ $my_uid -ne 0 ]; then    echo    echo "********************************************************************"    echo "Hello, $my_name. Since you are not running as the root user, it"    echo "is possible that this script will fail to install the needed files."    echo "If this happens then please use the root account and re-execute the"    echo "'make kernel' command.  (This script is paused for 10 seconds.)"    echo "********************************************************************"    echo    sleep 10s  fi}test_rootechoecho "Notice to the user:"echoecho "It is perfectly legal for this script to run without making any changes"echo "to your system. This means that the system currently contains the"echo "necessary changes to support this package. Please do not attempt to"echo "force this script to replace any file nor make any patch. If you do so"echo "then it is probable that you are actually putting older, buggier, code"echo "over the newer, fixed, code. Thank you."echoecho Installing into kernel version $KERNEL in $LINUXSRCechoif [ -f $LINUXSRC/drivers/net/ppp.h ]; then  echo Moving old $LINUXSRC/drivers/net/ppp.h file out of the way  mv $LINUXSRC/drivers/net/ppp.h $LINUXSRC/drivers/net/ppp.old.h  bombiffailedfifor FILE in $LINUXSRC/drivers/net/bsd_comp.c \	    $LINUXSRC/drivers/net/ppp_deflate.c \	    $LINUXSRC/drivers/net/zlib.c \	    $LINUXSRC/drivers/net/zlib.h \            $LINUXSRC/include/linux/if_ppp.h \            $LINUXSRC/include/linux/if_pppvar.h \            $LINUXSRC/include/linux/ppp-comp.h \            $LINUXSRC/include/linux/ppp_defs.h  do  installfile $FILE nodoneinstallfile $LINUXSRC/drivers/net/ppp.c yesecho -n 'Adding BSD compression module to drivers makefile...'NETMK=$LINUXSRC/drivers/net/Makefilefgrep bsd_comp.o $NETMK >/dev/nullif [ ! "$?" = "0" ]; then   if [ -f $NETMK.orig ]; then      mv $NETMK.orig $NETMK   fi   sed 's/ppp.o$/ppp.o bsd_comp.o/g' <$NETMK >$NETMK.temp   bombiffailed   echo -n '.'   mv $NETMK $NETMK.orig   bombiffailed   echo -n '.'   mv $NETMK.temp $NETMK   bombiffailedelse   echo -n '(already there--skipping)'fiechoecho -n 'Adding Deflate compression module to drivers makefile...'NETMK=$LINUXSRC/drivers/net/Makefilefgrep ppp_deflate.o $NETMK >/dev/nullif [ ! "$?" = "0" ]; then   echo -n '.'   sed 's/bsd_comp.o$/bsd_comp.o ppp_deflate.o/g' <$NETMK >$NETMK.temp   bombiffailed   echo -n '.'   mv $NETMK $NETMK.orig   bombiffailed   echo -n '.'   mv $NETMK.temp $NETMK   bombiffailedelse   echo -n '(already there--skipping)'fiecho# ## # install header stub files in /usr/include/net# for FILE in if_ppp.h \#             if_pppvar.h \#             ppp-comp.h \# 	    if.h \#             ppp_defs.h#   do#   if [ ! -f /usr/include/net/$FILE ]; then#     echo Installing stub include file in /usr/include/net/$FILE#     echo "#include <linux/$FILE>" > /usr/include/net/$FILE#     bombiffailed#     chown 0:0 /usr/include/net/$FILE#     bombiffailed#     chmod 444 /usr/include/net/$FILE#     bombiffailed#     touch /usr/include/net/$FILE#     bombiffailed#   fi# doneecho "Kernel driver files installation done."exit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -