要独立设计一款3D打印机!
分类: 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
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板进行编译?