Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54918
  • 博文数量: 2
  • 博客积分: 111
  • 博客等级: 民兵
  • 技术积分: 205
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-21 11:34
个人简介

要独立设计一款3D打印机!

文章分类

全部博文(2)

文章存档

2013年(1)

2012年(1)

我的朋友

分类: LINUX

2013-03-13 23:23:36

Linux内核升级方法

没事搞了一下内核升级,呵呵呵,但是在这里,我说明一点,一定注意内核的升级:

我们搞ARM开发的时候要编译内核模块,比如我写了一个字符设备hello.ko

   如果insmod出现错误提示错误的格式,那么根据网上的方法说,是因为PC上内核版本和烧写到ARM上的内核版本不同所致、但是我至今没有把它们升级到相同的版本。因为开发板是mini6410的,内核大致是2.6.38。但是这个友善提供的内核里面加了很多的log,连内核名字都是FriendlyARM,其他的更改更不知道了。使用友善提供的内核升级PC,无意是找死。如此类似,不要轻易升级内核。

其实升级内核,就从正规服务器下载完整源码就好了,一般步骤如下:

我升级的内核是linux-headers-2.6.32-38-generic  =>  linux-2.6.38.3    虚拟机上做的

使用命令

#uname -a

可以查看当前你的内核版本


比如我的新内核文件名字是linux-2.6.28.3.tar.gz,把它复制到/usr/src下,以root身份解压,生成了linux-2.6.38.3的文件夹。
进入并在root身份下执行命令:

#make mrproper   

//清理以前编译过的痕迹。把.config都给清理掉了,所以复制以前内核的版本中的.config过来
       //这里有个拷贝过程,不多说——就是你这个新内核文件夹下要有.config文件

#make menuconfig  

// 这里要是编译不出来图形界面,你可以安装这个玩意,专业名词我也不知道怎么叫:

sudo apt-get install libncurses5-dev

安装完成就好再次执行make menuconfig    

配置这里就不用说了。其实不用怎么配置。然后:

#make bzImage

#make modules

#make modules_install

#make install

依次执行完成。

去根目录下/boot/文件下ls看看,应该生成

config-2.6.38.3

System.map-2.6.38.3

vmlinuz-2.6.38.3

在这个/boot/目录下执行命令

#mkinitramfs -o /boot/initrd.img-2.6.38.3-uk /lib/modules/2.6.38.3

这个initrd.img-2.6.38.3-uk是要生成的文件

后边的是你编译内核的时候生成的文件夹

这时候在/boot/中ls,是否生成了initrd.img-2.6.38.3-uk这个文件?

然后把/boot/grub/grub.cfg中打开

找到和这个类似的文档:

 

复制并黏贴到它前边,对比你会觉得只改了改名字:

 

保存退出就好了。重新启动系统。

再次使用

#uname -a

Linux ubuntu 2.6.38.3 #1 SMP Wed Mar 13 06:10:54 PDT 2013 i686 GNU/Linux

阅读(13641) | 评论(2) | 转发(2) |
1

上一篇:u-boot源码分析--do_bootm()函数

下一篇:没有了

给主人留下些什么吧!~~

wangyaxian20162016-08-02 13:19:33

你好,你在文中说“如果insmod出现错误提示错误的格式,那么根据网上的方法说,是因为PC上内核版本和烧写到ARM上的内核版本不同所致”。是不是就是说明了linux内核不区分x86与arm?还有我在网上看到arm板的内核编译都是采用交叉编译,能不能直接在arm板进行编译?

wangyaxian20162016-08-02 13:19:17

你好,你在文中说“如果insmod出现错误提示错误的格式,那么根据网上的方法说,是因为PC上内核版本和烧写到ARM上的内核版本不同所致”。是不是就是说明了linux内核不区分x86与arm?还有我在网上看到arm板的内核编译都是采用交叉编译,能不能直接在arm板进行编译?