此处将内核由高版本替换成低版本。替换前的系统为ubuntu 12.04 kernel 3.8.0. 替换后的内核版本为2.6.35.

首先下载需要替换的内核文件,下载链接:https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.tar.gz

下载完成后开始进行解压

  1. $ sudo tar -zxf linux-2.6..tar.gz /usr/src

现在开始进行替换,步骤如下:

1)安装必要的软件包。在正式替换之前先安装几个必要的软件包:

  1. $ sudo apt-get install build-essential kernel-package libncurses5-dev libqt3-headers

各个包的主要作用如下:

  build-essential: 基本的编程库(gcc, make等)

  kernel-package: Debian 系统里生成 kernel-image 的一些配置文件和工具

  libncurses5-dev: make menuconfig要调用的

  libqt3-headers: make xconfig要调用的

其他的工具在升级过程中可以根据提示安装。

2)解压。将已经下载的linux-2.6.35.tar.gz拷贝到/usr/src目录下,然后解压到/usr/src/linux-2.6.35目录下。

3)拷贝原有配置文件。把正在使用中的内核配置文件/usr/src/linux-headers-3.8.0-29-generic/.config 拷到/usr/src/linux-2.6.35目录下

  1. $ sudo cp /usr/src/linux-headers-3.8.--generic/.config /usr/src/linux-2.6.

4)导入配置文件。运行以下命令:

  1. $ cd /usr/src/linux-2.6.
  2.  
  3. $ sudo make menuconfig

//*************可能出现的问题*************

问题:提示unable to find the ncurses libraries

解决方案:sudo apt-get install ncurses-dev

*************///

这时,终端会弹出一个配置界面,注意主菜单最后有两项:

load a kernel configuration...

save a kernel configuration...

先选第一项 load ....,意思是,利用当前的内核配置详单来设置将要编译的内核,然后选save这一项保存,最后退出配置界面。

5)开始编译,依次输入以下命令:

  1. $ sudo make mrproper //清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行。
  2.  
  3. $ sudo make //编译,此过程需要较长时间。

//*************可能出现的问题*************

问题1:gcc: error: elf_i386: no such file or directory

解决方案:

在文件:/usr/src/linux-2.6.35/arch/x86/vdso/Makefile中:

replace "-m elf_x86_64" by "-m64" on the line starting with VDSO_LDFLAGS_vdso.lds

replace "-m elf_x86" by "-m32" on the line starting with VDSO_LDFLAGS_vdso32.lds

问题2:error: duplicate member ‘page’

解决方案:

打开文件drivers/net/igbvf/igbvf.h,然后将129行的代码注释掉即可。

struct page *page                  //将此代码删除或注释掉

**************************//

  1. $ sudo make install
  2.  
  3. $ sudo make modules //编译模块

//*************可能出现的问题*************

问题:modpost: found 96 section mismatch(es).

‘make CONFIG_DEBUG_SECTION_MISMATCH=Y’

解决方案:

sudo make CONFIG_DEBUG_SECTION_MISMATCH=y

**************************//

  1. $ sudo make modules_install //安装模块

6)最后创建initrd文件:

  1. # mkinitramfs -o /boot/initrd.img-2.6.

7)更新grub引导列表

  1. $ sudo update-grub
  2.  
  3. $ sudo gedit /boot/grub/grub.cfg

将Code3拷贝至Code1和Code2之间,即将Ubuntu, with Linux 2.6.35启动项拷贝至最前面,这样在重启时系统会自动选择第一个作为默认启动,于是就能进入内核为Linux 2.6.35的系统。

Code1

  1. if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi

Code2

  1. menuentry 'Ubuntu, with Linux 3.8.0-29-generic' --class ubuntu --class gnu-linux --class gnu --class os {
  2.  
  3. recordfail
  4.  
  5. gfxmode $linux_gfx_mode
  6.  
  7. insmod gzio
  8.  
  9. insmod part_msdos
  10.  
  11. insmod ext2
  12.  
  13. set root='(hd0,msdos1)'
  14.  
  15. search --no-floppy --fs-uuid --set=root a5208505--4e32-b5f8-8b554b2a0b85
  16.  
  17. linux /boot/vmlinuz-3.8.--generic root=UUID=a5208505--4e32-b5f8-8b554b2a0b85 ro quiet splash $vt_handoff
  18.  
  19. initrd /boot/initrd.img-3.8.--generic
  20.  
  21. }

Code3:

  1. menuentry 'Ubuntu, with Linux 2.6.35' --class ubuntu --class gnu-linux --class gnu --class os {
  2.  
  3. recordfail
  4.  
  5. gfxmode $linux_gfx_mode
  6.  
  7. insmod gzio
  8.  
  9. insmod part_msdos
  10.  
  11. insmod ext2
  12.  
  13. set root='(hd0,msdos1)'
  14.  
  15. search --no-floppy --fs-uuid --set=root a5208505--4e32-b5f8-8b554b2a0b85
  16.  
  17. linux /boot/vmlinuz-2.6. root=UUID=a5208505--4e32-b5f8-8b554b2a0b85 ro quiet splash $vt_handoff
  18.  
  19. initrd /boot/initrd.img-2.6.
  20.  
  21. }

可能出现的问题:

问题一:在重启后可能会出现如下问题:

warning: can't open directory /lib/modules/2.6.34/modules.dep, no such files or directory

解决方案:

这时,可以先从旧内核中进入系统,然后执行以下命令:

  1. $ su root //获得root权限
  2.  
  3. # cd /boot
  4.  
  5. # cp initrd.img-2.6. initrd-2.6..old //备份原有文件
  6.  
  7. # depmod –a //检查所有模块
  8.  
  9. # update-initramfs –k 2.6. –c
  10.  
  11. # cd /tmp
  12.  
  13. # gzip –dc /boot/initrd.img-2.6.| cpio –id
  14.  
  15. # touch lib/modules/2.6./modules.dep
  16.  
  17. # find ./ | cpio –H newc –o > /boot/initrd.img-2.6..new
  18.  
  19. # gzip /boot/initrd.img-2.6..new
  20.  
  21. # cd /boot
  22.  
  23. # mv initrd.img-2.6..new.gz initrd.img-2.6.

此部分的参考链接:

http://kpjack.blog.51cto.com/627289/318296/

内核替换更多介绍:

http://www.2cto.com/os/201312/265425.html

ubuntu系统内核替换的更多相关文章

  1. ubuntu 按键替换 Control_R to Left

    ubuntu 按键替换 Control_R to Left 1 查看当前键盘布局 $xmodmap -pke keycode 105 = Control_R NoSymbol Control_Rkey ...

  2. Ubuntu:替换DASH图标

    替换DASH图标 替换ubuntu搜索的图标 默认图标位置 备份 sudo mv /usr/share/unity/icons/launcher_bfb.png /usr/share/unity/ic ...

  3. 将MPLS编译进linux内核中

    系统环境:linux kernel 2.6.35.(此环境是上一篇文章中将ubuntu内核替换后的环境) 编译过程如下: 1)首先需要下载patch文件:linux-kernel-v2.6.35-mp ...

  4. Ubuntu 源使用帮助

    地址 https://mirrors.ustc.edu.cn/ubuntu/ 说明 Ubuntu 软件源 收录架构 AMD64 (x86_64), Intel x86 其他架构请参考 Ubuntu P ...

  5. ubuntu 使用阿里云 apt 源

    以下内容来自 https://opsx.alibaba.com/mirror Ubuntu对应的“帮助”信息 修改方式:打开 /et/apt/sources.list 将http://archive. ...

  6. 升级Ubuntu 16.04 到 Ubuntu 18.04 的方法

    特别注意,在进行升级前,请做好重要数据备份工作,防止升级失败或者其他奇怪原因,导致数据丢失或损坏 sudo vim /etc/apt/sources.list 将 http://archive.ubu ...

  7. 初探Docker CentOS 7.9 2009 Mini 操作系统环境初始化 和Docker初始化

    初探docker 什么是docker?docker就是一种虚拟化技术,将一个服务虚拟化成一个拥有操作系统内核作为基石的快速使用服务.不用担心环境不同服务效果 不同. docker 官网可以从中央仓库中 ...

  8. 自制Azure中国版“加血包”

    Micrsoft Azure中国版的国际出口最近升级为电话线拨号模式,目测为10个用户共享一条56kb的电话线拨号链路.有图有真相: 中国的IT从业者,有三分之一的职业生涯时间是在跟网络斗智斗勇.这点 ...

  9. Ubuntu18.04美化主题(mac主题)

    前端时间Ubuntu18.04LTS发布,碰巧之前用的Ubuntu16.04出了一点问题,懒得解决,索性就换了Ubuntu18.04. 成果: 参考博客:https://www.cnblogs.com ...

随机推荐

  1. AJAX(XMLHttpRequest)进行跨域请求方法详解(三)

    注意:以下代码请在Firefox 3.5.Chrome 3.0.Safari 4之后的版本中进行测试.IE8的实现方法与其他浏览不同. 3,带验证信息的请求 身份验证是Web开发中经常遇到的问题,在跨 ...

  2. Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https【转载】

    转自 Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https - OPEN 开发经验库http://www.open-open.com/lib/view/open1 ...

  3. 用memcached的时候找key找不到,写了个命令来找找

    for i in $(seq 30); do echo "stats cachedump $i 0" | nc 192.168.88.150 11211 | grep groupS ...

  4. C#编写Windows服务程序图文教程

    安装服务程序C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe  要安装的服务程序路径(如F:\***.exe)卸载服务程序C: ...

  5. 选择LDO的方法(转)

    http://www.micro-bridge.com/news/sort.asp?dy1=技术资料&dy2=产品相关资料&page=2 作者:LANDA PHAM   来源:德州仪器 ...

  6. ural1542 Autocompletion

    Autocompletion Time limit: 2.0 secondMemory limit: 64 MB The Japanese are infinitely in love with ma ...

  7. HDU 1883 Phone Cell(计算几何)

    方法:选取一个点A,以点A为圆心做一个半径为r的圆,然后枚举另一个点B,以B为圆心做一个圆,如果这两个圆有交集,那我们在这个交集内选取一个点做半径为r的圆,这个圆就包括了A和B点,找到交集最多的区域并 ...

  8. 某技术大牛的帖子(android项目总结)

    1. 一般性控件需要设置onclick事件才会有点击效果(selector). 2.  <item android:drawable=”@drawable/btn_ct_green” /> ...

  9. Django之路: 基本命令与网址进阶

    一.Django 基本命令 温馨提示:如果你想学习Django,那么就请您从现在开始按照笔记记录一步一步的用手把代码敲出来,千万不要偷懒哦..... 1.创建一个Django project djan ...

  10. spring mvc3中JACKSON序列化日期格式的问题 - 墙头草的Java - BlogJava

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...