lkml.org 
[lkml]   [2002]   [Jan]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: system.map
    Timothy Covell wrote:

    > On Wednesday 02 January 2002 13:39, Tony Hoyle wrote:
    >
    >>Timothy Covell wrote:
    >>
    >>> Of course, you can copy over the new System.map
    >>>file to /boot, but their is no (easy) way of having more than
    >>>one active version via "lilo" or "grub". And that could be
    >>>considered a deficiency of the Linux OS.
    >>>
    >>???? Just call it System.map-2.2.17, System.map-2.5.1, etc. Sounds
    >>pretty 'easy' to me.
    >>
    >>'make install' does all this for you, btw.
    >>
    >>Tony
    >>
    >
    > Not on grub. I quote:
    > It is also possible to do "make install" if you have lilo
    > installed to suit the kernel makefiles,
    > but you may want to check your particular lilo setup first.
    >
    > But, on my grub based system, I have to:
    >
    > 1. "make bzlilo" which creates vmlinuz and System.map
    > and puts them in / and not in /boot. (make bzlilo is easier to use
    > than bzimage)
    >
    > 2. cp /vmlinuz /boot/vmlinuz-x.y.x ; cp /System.map /boot/System.map-x.y.z
    >
    > 3. rm /boot/System.map ; ln -s /boot/System.map-x.y.z /boot/System.map
    >
    > 4. vi /boot/grub.conf (or /etc/grub.conf) and put in new kernel boot entry.
    >
    > 5. sync;sync;shutdown -r now
    >


    None of this sounds incredibly complicated, and, in fact, a scripting
    language (e.g. perl) does quite nicely.

    I wrote a little script that does the whole thing for me;
    I can think of a bunch of improvements (like writing a new
    /etc/lilo.conf file) that can be added with minimal effort:

    I'm curious to know what the standard approach to this is.
    What other scripts are out there?

    #!/usr/bin/perl

    # ----------------------------------------------------
    # Program: kernel-install
    # Description: This script installs a kernel after it
    # has been built, since "make install"
    # doesn't do it the way I like it.
    # ----------------------------------------------------

    $srcdir = "/usr/src/linux";

    # Origin Files
    $kernel = "$srcdir/arch/i386/boot/bzImage";
    $map = "$srcdir/System.map";
    $header = "$srcdir/include/linux/kernel.h";
    # Destination Directory
    $destdir= "/boot";

    # Make sure all the files exist
    if( !((-e $srcdir) && (-e $header) && (-e $kernel)) ) {
    exit(-1);
    }

    # getversion will return $version
    &getversion;

    # Start copying stuff
    system("cp $kernel $destdir/vmlinuz-$version");
    system("cp $header $destdir/kernel.h-$version");
    if( -e $map ) {
    system("cp $map $destdir/System.map-$version");
    }

    # Remove existing softlinks
    if( -e "$destdir/vmlinuz" ) {
    unlink("$destdir/vmlinuz");
    }
    if( -e "$destdir/kernel.h" ) {
    unlink("$destdir/kernel.h");
    }
    if( -e "$destdir/System.map") {
    unlink("$destdir/System.map");
    }

    # Recreate links
    symlink("$destdir/vmlinuz-$version","$destdir/vmlinuz");
    symlink("$destdir/kernel.h-$version","$destdir/kernel.h");
    if( -e $map ) {

    symlink("$destdir/System.map-$version","$destdir/System.map");
    }

    # Run LILO
    system("lilo");

    # ----------------------------------------------------
    # Subroutine: get_kernel_version
    # Description: The kernel version for the kernel build
    # can be found in the main Makefile.
    # ----------------------------------------------------
    sub getversion
    {
    $version = "";
    local($makefile) = "$srcdir/Makefile";
    if( !(-e $makefile) ) {
    exit(-1);
    }

    open(MAKE,$makefile);
    # We only need the first three lines
    $i = 0;
    local($line);
    while( ($line = <MAKE>) && ($i++ < 4) ) {
    # Grab the name value pairs by splitting line by =
    (local($name), local($value)) = split(/=/, $line, 2);
    # RegExp: Remove whitespace from value
    $_ = $value;
    s/^\s*(.*)\s*$/\1/;
    # Add . between version & level, and level & sublevel
    $version .= $1;
    if( ($i==1) || ($i==2) ) {
    $version .= ".";
    }
    }
    close(MAKE);
    }


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:15    [W:6.720 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site