新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 操作系统研究。UEFI
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机理论与工程『 操作系统原理 』 → [原创]用debian的方式编译内核 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 20363 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [原创]用debian的方式编译内核 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     binaryluo 帅哥哟,离线,有人找我吗?
      
      
      威望:6
      等级:研二(Pi-Calculus看得一头雾水)(版主)
      文章:679
      积分:5543
      门派:IEEE.ORG.CN
      注册:2005/2/19

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给binaryluo发送一个短消息 把binaryluo加入好友 查看binaryluo的个人资料 搜索binaryluo在『 操作系统原理 』的所有贴子 引用回复这个贴子 回复这个贴子 查看binaryluo的博客楼主
    发贴心情 [原创]用debian的方式编译内核

    写在前
    大家如果看了参考文章【1】可能会觉得我接下来要写的跟它里面写的很像啊,怎么还用“原创”??我之所以在标题前加上“原创”,首先,参考文章【1】里介绍的内容我确实自己实践过;其次,在实施的过程中,有些地方按照它的方法是不行的,或者说是按照它的方法我没有成功,还有些地方它说的不是很清楚的,我又尝试了其他方法,最终搞定,也算是有自己的结论。
    本文假设你已经安装了基本系统,主要介绍debian下的内核编译,关于基本系统和桌面的安装网络上有很多资源可以参考,这里将不再赘述。

    入题
    1.安装好基本系统后,首先要做的是升级刚安装好的基本系统,这是参考文章【1】中没有提到的,否则在进行后面步骤的时候会遇到老的内核(我的是2.6.8-2)被移除的麻烦。

    apt-get update
    apt-get dist-upgrade

    2.系统升级完后,先安装等下需要用到的工具软件。按理说升级的时候这些软件大多都已经装好了,如果没装的,输入下面命令安装:

    apt-get install kernel-package ncurses-dev fakeroot wget bzip2 module-init-tools initrd-tools procps

    3.然后是下载最新的内核源码。最新的内核源码可以在http://www.kernel.org/上下载。你可以在其他机子或系统上下好后将其拷贝到/usr/src目录;也可以在命令行下用wget下载:

    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.20.tar.bz2

    我安装的时候最新内核是2.6.16.20,现在已经有2.6.17.1了。

    4.检查/usr/src目录下是否有linux-2.6.16.20.tar.bz2或你下载的最新版内核存在,解压:

    tar jxvf linux-2.6.16.20.tar.bz2

    5.制作配置文件,在这里我按照的是参考文章【1】中的方法,直接将现有内核的配置文件考过来用:

    cp /boot/config-2.6.8.2 /usr/src/linux-2.6.16.20/.config

    6.加载nvidia最新驱动。参考文章【1】中所说的是在testing里有nvidia的源码包,但是我装的时候testing里根本没有,只好又在sources.list里面添加入unstable的源:

    deb http://mirror.vmmatrix.net/debian unstable main non-free contrib
    deb-src http://mirror.vmmatrix.net/debian unstable main non-free contrib

    添加好后,重新更新软件库并安装nvidia源码包:

    apt-get update
    apt-get install nvidia-kernel-source nvidia-kernel-common

    在安装这两个包的时候由于依赖关系,可能会额外的安装其他包,但由于此时使用的是unstable的源,而原来系统用的是testing的源,混合安装可能会出问题,所以我的处理方法是记录下要额外安装的那些包,先到testing里将这些包都安装了,最后又回到unstable下安装上面两个包。我的这种方法有点麻烦,但比较安全,也可能还有其他的方法也能解决这个问题。在下载好nvidia-kernel-source后,在/usr/src下会有一个nvidia-kernel-source.tar.gz包。解压缩:

    tar -zxf nvidia-kernel-source.tar.gz

    7.现在基本工作已就绪。进入 linux-2.6.16.20目录,先要配置内核:

    cd linux-2.6.16.20
    make menuconfig

    配置内核是比较麻烦的,一个小的错误就可能功亏一篑。所以我也按照参考文章【1】里的方法,只是修改了几个可能出现问题的地方,取消下面的选项:

    Block Devices -> Low Performance USB Block driver (BLK_DEV_UB)
    Graphics Support -> nVidia Riva support (FB_RIVA)
    Kernel Hacking -> Use 4Kb for kernel stacks instead of 8Kb (4KSTACKS)
    Processor Type and Features -> Local APIC support on uniprocessors        (X86_UP_APIC)

    另外就是选择了适合自己的处理机类型。

    8.配置内核开始编译。命令比较简单:

    make-kpkg clean
    fakeroot make-kpkg –revision=custom.1.0 kernel_image modules_image

    编译过程差不多要1个半小时,结束后,你可以在/usr/src下看到两个deb包:kernel-image-*.deb nvidia-kernel-*.deb。

    9.下面就是安装新内核:

    dpkg -i kernel-image-*.deb nvidia-kernel-*.deb

    10.修改启动项文件。首先制作initrd:

    cd /boot
    mkinitrd -o /boot/initrd.img-2.6.16.20 2.6.16.20

    我使用的是grub管理器,还要修改/boot/grub/menu.lst,正常情况下你会发现menu.lst中已经加入了你的新内核的信息,但是你对照着老内核的信息你会发现有点出入——新内核的位置不对,所以要手动修改:

    title           Debian GNU/Linux, kernel 2.6.16.20
    root            (hd0,6)
    kernel          /vmlinuz-2.6.16.20 root=/dev/hda8 ro
    initrd          /initrd.img-2.6.16.20
    savedefault
    boot

    title           Debian GNU/Linux, kernel 2.6.16.20 (recovery mode)
    root            (hd0,6)
    kernel          /vmlinuz-2.6.16.20 root=/dev/hda8 ro single
    initrd          /initrd.img-2.6.16.20
    savedefault
    boot

    说明:(hd0, 6)的意思是我的第一块硬盘(我只有一块硬盘)的第六个分区(我的linux装在该分区)。
    这些都完成以后就可以重启了,你会在grub管理器里发现你的新内核,选择新内核启动就可以了。

    11.使用新内核启动后,需要安装nvidia-glx,要保证nvidia-glx的版本跟nvidia-kernel-source的版本是相同的,所以nvidia-kernle-source用的是什么源nvidia-glx也用什么源。因为刚才下载nvidia-kernel-source的时候我的sources.list是unstable的源,后面没有被修改过,所以直接安装:

    apt-get install nvidia-glx

    之后,修改/etc/X11/xorg.conf,注释掉dri模块:
    Load           "i2c"
    Load           "bitmap"
    Load           "ddc"
    #Load        "dri"
    Load           "extmod"
    Load           "freetype"
    Load           "glx"
    Load           "int10"
    Load           "type1"
    Load           "vbe"

    12.安装桌面环境(别忘了修改sources.list为testing源)。

    apt-get install x-window-system-core gnome gdm

    再重启,gdm加载成功后应该可以看见nvidia的标志,说明nvidia驱动安装也成功了。

    13.遗留问题。如果进入系统后如果发现刷新频率调不高,继续修改/etc/X11/xorg.conf:

    HorizSync       30.0 - 81.0
    VertRefresh     56.0 – 75.0

    将水平扫描频率和垂直扫描频率调到你的显示器范围,这两个参数可以在你的显示器说明书上找到。整个编译过程到此也告一段落。

    结语
    按照上面步骤做基本不会出什么问题了,可以成功编译内核。如果以后对内核研究的熟悉了,在配置的时候要多花点功夫,这样内核会发挥更好的性能。

    参考文章
    【1】Leo Tzao,Debian 安装手记,http://debian.linuxsir.org/main/?q=node/107
    【2】Andrew E. Schulman,Debian-nVidia HOWTO,http://home.comcast.net/~andrex/Debian-nVidia/installation.htm
    [/QUOTE]


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/24 13:04:00
     
     with0out 帅哥哟,离线,有人找我吗?魔羯座1990-12-24
      
      
      等级:大二(研究汇编)
      文章:33
      积分:283
      门派:XML.ORG.CN
      注册:2006/1/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给with0out发送一个短消息 把with0out加入好友 查看with0out的个人资料 搜索with0out在『 操作系统原理 』的所有贴子 引用回复这个贴子 回复这个贴子 查看with0out的博客2
    发贴心情 
    多谢,才用虚拟机装了debian跃跃欲试呢...
    :-)

    ----------------------------------------------
    开源 自由 突破 本质 未知 ..

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/7/11 11:43:00
     
     GoogleAdSense魔羯座1990-12-24
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 操作系统原理 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/19 22:19:12

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms