`
GuanQBY2008
  • 浏览: 8535 次
  • 性别: Icon_minigender_1
  • 来自: 信阳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

学习.MTC.Project.Linux.内核编译.内核树

阅读更多
第一步,下载源代码
  • 1.查看内核版本信息[1]:
  • mc22@mc22-laptop:~$ uname -a
    Linux mc22-laptop 2.6.32-24-generic #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 i686 GNU/Linux
    

  • 2.使用apt查看可下载的内核源码[2]:
  • mc22@mc22-laptop:~$ apt-cache search linux-source
    linux-source - Linux kernel source with Ubuntu patches
    linux-source-2.6.32 - Linux kernel source for version 2.6.32 with Ubuntu patches
    

  • 3.其中有linux-source-2.6.32,正好是与我使用的linux一样的内核,使用apt直接下载:
  • mc22@mc22-laptop:~$ sudo apt-get install linux-source-2.6.32
    

  • 4.下载完成后,在/usr/src目录下,可以找到压缩包linux-source-2.6.32.tar.bz2,解压此压缩包得到整个内核的源代码[3]:
  • mc22@mc22-laptop:/usr/src$ sudo tar -jxvf linux-source-2.6.32.tar.bz2
    


    第二步,配置及编译内核
  • 1.进入/usr/src/linux-source-2.6.32目录下,配置参考[2][4],此处使用oldconfig命令,将当前系统的参数写入配置。
  • mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make oldconfig
     
    scripts/kconfig/conf -o arch/x86/Kconfig
    #
    # using defaults found in /boot/config-2.6.32-24-generic
    #
    #
    # configuration written to .config
    #
    

  • 2.此处编译会出现错误[5]:
  • LD [M]  ubuntu/omnibook/omnibook.o
    ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory
    make[2]: *** [ubuntu/omnibook/omnibook.o] Error 1
    make[1]: *** [ubuntu/omnibook] Error 2
    make: *** [ubuntu] Error 2
    

       解决方法是进入源码的目录,打开omnibook的Makefile进行少量修改:
    mc22@mc22-laptop:/$ sudo gedit /usr/src/linux-source-2.6.32/ubuntu/omnibook/Makefile
    

       将文件中的:
    #EXTRA_LDFLAGS +=  $(src)/sections.lds
    EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
    

       改为:
    EXTRA_LDFLAGS +=  $(src)/sections.lds
    #EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
    

  • 3.在此源码目录下执行make(可跳过):
  • mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make
    

  • 4.在同一目录下执行make bzImage命令:
  • mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make bzImage
    

       编译内核大概耗时1小时以上,之后会在当前目录生成新文件vimlinux,其权限为-rwxr-xr-x。

  • 5.之后执行make modules命令编译模块,若未执行步骤2,需要修改omnibook的Makefile,方法同步骤2:
  • mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make modules
    

  • 6.执行make modules_install命令安装模块:
  • mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make modules_install
    

  • 7.执行完上述操作,切换到目录/lib/modules/,会看到新出现的2.6.32.28+drm33.13文件夹,里面的build文件夹就是编译模块需要的文件树。不过我做到这一步的时候,提示磁盘空间不够,系统挂掉了,给虚拟机分配的空间太小了,8GB。第二次使用20G大小的虚拟机,执行完全部操作之后磁盘占用为7.9G

  • 参考:
    [1] 查看Linux内核版本的命令
    [2] Linux 2.6内核的编译步骤及模块的动态加载
    [3] linux解压 tar命令
    [4] Linux 2.6.19.x 内核编译配置选项简介
    [5] 内核编译的过程(网上收集)
    • 大小: 6.6 KB
    • 大小: 7.4 KB
    • 大小: 17.2 KB
    • 大小: 24.1 KB
    • 大小: 6.8 KB
    分享到:
    评论

    相关推荐

    Global site tag (gtag.js) - Google Analytics