zoukankan      html  css  js  c++  java
  • redhat server 5.3内核升极2.6.18 升级到 3.5 装systemtap 原创

    1. 在 LINUX 3.5源代码目录下执行  yum install ncurses-devel     make menuconfig

     

    2  打开内核跟踪事件,用于SYSTEMTAP跟踪

       kernel hacking --->tracers(new)--->enable uprobes-based dynamic events

       文件系统相关选项要打开

      

    即为

    CONFIG_SYSFS_DEPRECATED_V2=y

    不这样设为出错,安装内核重起后就会出现如下状况

     mount: could not find filesystem ‘/dev/root’
     setuproot: moving /dev failed: No such file or directory
     setuproot: error mounting /proc: No such file or directory
     setuproot: error mounting /sys: No such file or directory
     switchroot: mount failed: No such file or directory

     

     

     3. 头文件出错

    In file included from /usr/include/sys/time.h:31,
    from /usr/include/linux/input.h:12,
    from samples/hidraw/hid-example.c:14:
    /usr/include/sys/select.h:78: error: conflicting types for 'fd_set'
    /usr/include/linux/types.h:12: error: previous declaration of 'fd_set' was here
    In file included from /usr/include/linux/input.h:14,
    from samples/hidraw/hid-example.c:14:
    /usr/include/sys/types.h:46: error: conflicting types for 'loff_t'
    /usr/include/linux/types.h:30: error: previous declaration of 'loff_t' was here
    /usr/include/sys/types.h:62: error: conflicting types for 'dev_t'
    /usr/include/linux/types.h:13: error: previous declaration of 'dev_t' was here
    In file included from /usr/include/sys/types.h:133,
    from /usr/include/linux/input.h:14,
    from samples/hidraw/hid-example.c:14:
    /usr/include/time.h:105: error: conflicting types for 'timer_t'
    /usr/include/linux/types.h:22: error: previous declaration of 'timer_t' was here
    In file included from /usr/include/linux/input.h:14,
    from samples/hidraw/hid-example.c:14:
    /usr/include/sys/types.h:198: error: conflicting types for 'int64_t'
    /usr/include/linux/types.h:98: error: previous declaration of 'int64_t' was here
    /usr/include/sys/types.h:204: error: conflicting types for 'u_int64_t'
    /usr/include/linux/types.h:97: error: previous declaration of 'u_int64_t' was here
    In file included from /usr/include/linux/input.h:14,
    from samples/hidraw/hid-example.c:14:
    /usr/include/sys/types.h:235: error: conflicting types for 'blkcnt_t'
    /usr/include/linux/types.h:114: error: previous declaration of 'blkcnt_t' was here

    mples/hidraw/hid-example.c:35:26: error: linux/hidraw.h: No such file or directory
    samples/hidraw/hid-example.c: In function ‘main’:
    samples/hidraw/hid-example.c:50: error: storage size of ‘rpt_desc’ isn’t known
    samples/hidraw/hid-example.c:51: error: storage size of ‘info’ isn’t known
    samples/hidraw/hid-example.c:67: error: ‘HIDIOCGRDESCSIZE’ undeclared (first use in this function)
    samples/hidraw/hid-example.c:67: error: (Each undeclared identifier is reported only once
    samples/hidraw/hid-example.c:67: error: for each function it appears in.)
    samples/hidraw/hid-example.c:75: error: ‘HIDIOCGRDESC’ undeclared (first use in this function)
    samples/hidraw/hid-example.c:86: warning: implicit declaration of function ‘HIDIOCGRAWNAME’
    samples/hidraw/hid-example.c:93: warning: implicit declaration of function ‘HIDIOCGRAWPHYS’
    samples/hidraw/hid-example.c:100: error: ‘HIDIOCGRAWINFO’ undeclared (first use in this function)
    samples/hidraw/hid-example.c:51: warning: unused variable ‘info’
    samples/hidraw/hid-example.c:50: warning: unused variable ‘rpt_desc’
    make[2]: *** [samples/hidraw/hid-example] Error 1
    make[1]: *** [samples/hidraw] Error 2
    make: *** [vmlinux] Error 2

    处理方法:

     [root@localhost linux-3.5]# cp include/linux/hidraw.h /usr/include/linux/
     [root@localhost linux-3.5]# cp include/linux/hid.h /usr/include/linux/

    vi  samples/hidraw/hid-example.c

    将13-15行的如下3行移动到33行以后。
    
    /* Linux */
    #include <linux/types.h>
    #include <linux/input.h>
    #include <linux/hidraw.h>
    
    /* Unix */
    #include <sys/ioctl.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    /* C */
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <errno.h>
    

    vi /usr/include/linux/input.h

    line 647
    #define BUS_PCI                 0x01
    #define BUS_ISAPNP              0x02
    #define BUS_USB                 0x03
    #define BUS_HIL                 0x04
    #define BUS_BLUETOOTH           0x05
    /*以下一行为新增*/
    #define BUS_VIRTUAL             0x06 
     
    #define BUS_ISA                 0x10
    #define BUS_I8042               0x11
    #define BUS_XTKBD               0x12
    #define BUS_RS232               0x13
    #define BUS_GAMEPORT            0x14
    #define BUS_PARPORT             0x15
    #define BUS_AMIGA               0x16
    #define BUS_ADB                 0x17
    #define BUS_I2C                 0x18
    #define BUS_HOST                0x19
    #define BUS_GSC                 0x1A
    /*以下两行为新增*/
    #define BUS_ATARI               0x1B
    #define BUS_SPI                 0x1C

     4.确定参数设置 .config

    [root@localhost linux-3.5]# cat .config | grep CONFIG_DEBUG_INFO 
    CONFIG_DEBUG_INFO=y
    [root@localhost linux-3.5]# cat .config | grep CONFIG_KPROBES 
    CONFIG_KPROBES=y
    [root@localhost linux-3.5]# cat .config | grep CONFIG_RELAY 
    CONFIG_RELAY=y
    [root@localhost linux-3.5]# cat .config | grep CONFIG_DEBUG_FS 
    CONFIG_DEBUG_FS=y
    [root@localhost linux-3.5]# cat .config | grep CONFIG_MODULES 
    CONFIG_MODULES=y
    [root@localhost linux-3.5]# cat .config | grep CONFIG_MODULE_UNLOAD 
    CONFIG_MODULE_UNLOAD=y
    
    [root@localhost linux-3.5]#cat .config | grep CONFIG_UTRACE      (linux 3.5 没有这个选项)
    CONFIG_UTRACE=y
    
    [root@localhost linux-3.5]#cat .config | grep CONFIG_SYSFS_DEPRECATED_V2
    
    CONFIG_SYSFS_DEPRECATED_V2=y

     5.make CONFIG_DEBUG_SECTION_MISMATCH=y         编绎内核

      故障问题:
      编译内核时出现“make CONFIG_DEBUG_SECTION_MISMATCH=y” 错误提示:
       root@localhost linux-3.5]#make modules
       CHK     include/linux/version.h
       CHK     include/generated/utsrelease.h
       CALL    scripts/checksyscalls.sh
       Building modules, stage 2.
       MODPOST 1106 modules
       WARNING: modpost: Found 2 section mismatch(es).
       To see full details build your kernel with:
       'make CONFIG_DEBUG_SECTION_MISMATCH=y'
       排错记录:
       编辑.config文件,加入:CONFIG_DEBUG_SECTION_MISMATCH=y重新编译,还是出错,于是直接

        make CONFIG_DEBUG_SECTION_MISMATCH=y编译成功。
        root@localhost linux-3.5]#make CONFIG_DEBUG_SECTION_MISMATCH=y

     

    6.make  modules_install

    7.make install

    8.make headers_install

     

  • 相关阅读:
    Android测试工具 UIAutomator入门与介绍
    C#异步编程
    懒得找,存个笔记:easyui combogrid 下拉+关键字搜索
    mssql replace
    序列化类型为XX的对象时检测到循环引用
    shell脚本运行python命令
    python技巧
    边缘检测测评标准
    mybatis 手动生成可执行sql
    Linux如何扩容物理文件系统分区
  • 原文地址:https://www.cnblogs.com/zengkefu/p/4827723.html
Copyright © 2011-2022 走看看