ubuntu系统内核替换
此处将内核由高版本替换成低版本。替换前的系统为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
下载完成后开始进行解压
$ sudo tar -zxf linux-2.6..tar.gz /usr/src
现在开始进行替换,步骤如下:
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目录下
$ sudo cp /usr/src/linux-headers-3.8.--generic/.config /usr/src/linux-2.6.
4)导入配置文件。运行以下命令:
$ cd /usr/src/linux-2.6. $ 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)开始编译,依次输入以下命令:
$ sudo make mrproper //清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行。 $ 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 //将此代码删除或注释掉
**************************//
$ sudo make install $ sudo make modules //编译模块
//*************可能出现的问题*************
问题:modpost: found 96 section mismatch(es).
‘make CONFIG_DEBUG_SECTION_MISMATCH=Y’
解决方案:
sudo make CONFIG_DEBUG_SECTION_MISMATCH=y
**************************//
$ sudo make modules_install //安装模块
6)最后创建initrd文件:
# mkinitramfs -o /boot/initrd.img-2.6.
7)更新grub引导列表
$ sudo update-grub $ sudo gedit /boot/grub/grub.cfg
将Code3拷贝至Code1和Code2之间,即将Ubuntu, with Linux 2.6.35启动项拷贝至最前面,这样在重启时系统会自动选择第一个作为默认启动,于是就能进入内核为Linux 2.6.35的系统。
Code1:
if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi
Code2:
menuentry 'Ubuntu, with Linux 3.8.0-29-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root a5208505--4e32-b5f8-8b554b2a0b85
linux /boot/vmlinuz-3.8.--generic root=UUID=a5208505--4e32-b5f8-8b554b2a0b85 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.8.--generic
}
Code3:
menuentry 'Ubuntu, with Linux 2.6.35' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root a5208505--4e32-b5f8-8b554b2a0b85
linux /boot/vmlinuz-2.6. root=UUID=a5208505--4e32-b5f8-8b554b2a0b85 ro quiet splash $vt_handoff
initrd /boot/initrd.img-2.6.
}
可能出现的问题:
问题一:在重启后可能会出现如下问题:
warning: can't open directory /lib/modules/2.6.34/modules.dep, no such files or directory
解决方案:
这时,可以先从旧内核中进入系统,然后执行以下命令:
$ su root //获得root权限 # cd /boot # cp initrd.img-2.6. initrd-2.6..old //备份原有文件 # depmod –a //检查所有模块 # update-initramfs –k 2.6. –c # cd /tmp # gzip –dc /boot/initrd.img-2.6.| cpio –id # touch lib/modules/2.6./modules.dep # find ./ | cpio –H newc –o > /boot/initrd.img-2.6..new # gzip /boot/initrd.img-2.6..new # cd /boot # 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系统内核替换的更多相关文章
- ubuntu 按键替换 Control_R to Left
ubuntu 按键替换 Control_R to Left 1 查看当前键盘布局 $xmodmap -pke keycode 105 = Control_R NoSymbol Control_Rkey ...
- Ubuntu:替换DASH图标
替换DASH图标 替换ubuntu搜索的图标 默认图标位置 备份 sudo mv /usr/share/unity/icons/launcher_bfb.png /usr/share/unity/ic ...
- 将MPLS编译进linux内核中
系统环境:linux kernel 2.6.35.(此环境是上一篇文章中将ubuntu内核替换后的环境) 编译过程如下: 1)首先需要下载patch文件:linux-kernel-v2.6.35-mp ...
- Ubuntu 源使用帮助
地址 https://mirrors.ustc.edu.cn/ubuntu/ 说明 Ubuntu 软件源 收录架构 AMD64 (x86_64), Intel x86 其他架构请参考 Ubuntu P ...
- ubuntu 使用阿里云 apt 源
以下内容来自 https://opsx.alibaba.com/mirror Ubuntu对应的“帮助”信息 修改方式:打开 /et/apt/sources.list 将http://archive. ...
- 升级Ubuntu 16.04 到 Ubuntu 18.04 的方法
特别注意,在进行升级前,请做好重要数据备份工作,防止升级失败或者其他奇怪原因,导致数据丢失或损坏 sudo vim /etc/apt/sources.list 将 http://archive.ubu ...
- 初探Docker CentOS 7.9 2009 Mini 操作系统环境初始化 和Docker初始化
初探docker 什么是docker?docker就是一种虚拟化技术,将一个服务虚拟化成一个拥有操作系统内核作为基石的快速使用服务.不用担心环境不同服务效果 不同. docker 官网可以从中央仓库中 ...
- 自制Azure中国版“加血包”
Micrsoft Azure中国版的国际出口最近升级为电话线拨号模式,目测为10个用户共享一条56kb的电话线拨号链路.有图有真相: 中国的IT从业者,有三分之一的职业生涯时间是在跟网络斗智斗勇.这点 ...
- Ubuntu18.04美化主题(mac主题)
前端时间Ubuntu18.04LTS发布,碰巧之前用的Ubuntu16.04出了一点问题,懒得解决,索性就换了Ubuntu18.04. 成果: 参考博客:https://www.cnblogs.com ...
随机推荐
- Windows应用程序要点
一个完整的Windows应用程序除了WinMain函数外,还包含用于处理用户动作和窗口消息的窗口函数. Windows应用程序具有的一些特性: 消息驱动机制 图形设备接口(GDI) 基于资源的程序设 ...
- Mysql获取去重后的总数
如果一张表中某个字段存在重复的值,现在我想去重后获取这个字段值的总数 先看这张表 这张表中的openid有重复值 怎么通过sql语句获取openid的去重总数呢 select count(distin ...
- Linux 挂载aliyun数据盘
适用系统:Linux(Redhat , CentOS,Debian,Ubuntu) * Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作. 下面的操作将会把数据盘划 ...
- 关于jdk环境变量配置成了1.6.0_39 32位jdk 的路径 cmd中java -version却还是显示 64位或者其他jdk 路径的解决方法
其实是c盘或者其他盘的 jdk 安装的太多了,把其他的都卸载掉就行了
- FZU 2170 花生的序列(动态规划)
动态规划,转移方程为 dp[i][j] = (dp[i-1][j]+dp[i][j-1])%MOD,定义还是比较裸的,讨论一下就可以了 #include <iostream> #inclu ...
- CodeForces 591B Rebranding
水题 #include<cstdio> #include<cstring> #include<cmath> #include<vector> #incl ...
- 使用Spring框架的好处(转帖)
http://blog.csdn.net/cynhafa/article/details/6205361 在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为 ...
- NAVICAT 拒绝链接的问题
处理步骤 1.先在原有的建一个新的用户 2.成功后,再点击原有的,即可使用
- android usb挂载分析---vold处理内核消息
android usb挂载分析---vold处理内核消息 分类: u盘挂载2012-03-29 22:25 3215人阅读 评论(0) 收藏 举报 androidactioniteratordiskd ...
- Paragraph 对象'代表所选内容、范围或文档中的一个段落。Paragraph 对象是 Paragraphs 集合的一个成员。Paragraphs 集合包含所选内容、范围或文档中的所有段落。
Paragraph 对象'代表所选内容.范围或文档中的一个段落.Paragraph 对象是 Paragraphs 集合的一个成员.Paragraphs 集合包含所选内容.范围或文档中的所有段落. 方法 ...