频道栏目
首页 > 资讯 > Linux > 正文

将Ubuntu10.04自带2.6.32内核升级成3.0内核图文教程

15-03-31        来源:[db:作者]  
收藏   我要投稿

1、完成如下实践工作,并截屏说明实践步骤:1)下载安装虚拟机VMWare Workstation;2)在虚拟机中安装Linux2.x ;3)通过自行编译,将Linux 2.x内核升级到Linux 3.x。

1) 安装VMware Workstation 11.1.0。

 

2) 在虚拟机中安装Ubuntu 10.04 LTS (ubuntu-10.04-desktop-i386.iso),其Linux内核版本为2.6.32。

 

3) 从kernel.org下载新版3.0.0内核,在Ubuntu10.04上编译后安装,从而升级到3.0.0内核。

 

2、对1题的3)完成的同时,回答如下问题:

1) 内核主要源代码目录包括什么,每个目录下主要实现什么管理?

/arch:目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。

/documentation:目录下是一些文档,没有内核代码,可惜都是English的,是对每个目录作用的具体说明。

/drivers:目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于/drivers/sound;block 下为块设备驱动程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看/drivers/block/genhd.c中的device_setup()。它不仅初始化硬盘,也初始化,因为安装nfs文件系统的时候需要网络。其他:如, Lib放置核心的库代码; Net,核心与网络相关的代码; Ipc,这个目录包含核心的进程间通讯的代码; Fs,所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2。

/fs:目录存放Linux支持的文件系统代码和各种类型的文件操作代码。每一个子目录支持一个文件系统,如ext3文件系统对应的就是ext3子目录

/include:目录包括编译核心所需要的大部分头文件,例如与平台相关的头文件在/include/linux子目录下,与 intel cpu相关的头文件在/include/asm-i386子目录下,而/include/scsi目录则是有关scsi设备的头文件目录。

/init:目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研究核心如何工作的好起点。

/ipc:目录包含了核心进程间的通信代码。

/Kernel:内核管理的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同时与处理器结构相关代码都放在/arch/*/kernel目录下。

/lib:目录包含了核心的库代码,不过与处理器结构相关的库代码被放在/arch/*/lib/目录下。

/mm:目录包含了所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等。与具体硬件体系结构相关的内存管理代码位于/arch/*/mm目录下,例如/arch/i386/mm/Fault.c 。

/net:目录里是核心的网络部分代码,实现了各种常见的网络协议,其每个子目录对应于网络的一个方面。

/scripts:目录包含用于配置核心的脚本文件等

/block:块设备驱动程序I/O调度。

/crypto:常用加密和散列算法(如AES,SHA等),还有一些压缩和CRC校验算法。

/security:主要包含SELinux模块。

/sound:ALSA,OSS音频设备的驱动核心代码和常用设备驱动。

/usr:实现了用于打包和压缩的cpio等。

2) 内核升级必要的软件包需要那些?

编译内核用到:gcc, libncurses5-dev

下载内核文件用到:wget

解压缩内核源代码用到:tar

3) 编译内核的步骤是什么?

第一步:Configure

sudo make menuconfig

上面的命令用来配置Linux内核,一旦执行了该命令,屏幕将会弹出一个窗口,里面都是菜单列表,我们可以选择新配置选项,如果不熟悉该配置的话,我们只需要进入File systems菜单项,来确认ext4文件系统被选中,如果没有选中的话,选中它,并且保存配置。

 

第二步:Compile

sudo make

上面的命令用来编译Linux内核,这个步骤比较花时间,大概用了40-50分钟。

第三步:Install

sudo make modules_install install

上面的命令用来将Linux3.0内核安装到系统中,该命令将会在/boot/目录下创建一些文件,并且会在grub.cfg文件中建立一个启动项,我们可以检查一下该启动项是否被正确创建,/boot/目录下的文件如下:

System.map-3.0.0

vmlinuz-3.0.0

initrd.img-3.0.0

config-3.0.0

重启系统,我们会进入新的Linux3.0内核的Ubuntu系统中。

4) 在编译过程中通常会遇到的问题有哪些,解决的办法是什么?

问题1:没有足够的权限,这是由于当前用户权限不够引起的,在Ubuntu上可以通过在命令前面加入sudo来按照root权限执行命令。

问题2:安装软件包失败,这是由于ubuntu官方网站在国外,国内一般不容易连接成功,这时可以通过替换Ubuntu源来解决,源的配置文件为/etc/apt/sources.list,将此文件中的内容替换成国内的源地址即可。本文中替换的源为网易Ubuntu10.04源:

deb http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse

deb-src http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse

deb http://mirrors.163.com/ubuntu/ lucid-security universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ lucid-security universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ lucid-updates universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ lucid-proposed universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ lucid-proposed universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ lucid-backports universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ lucid-backports universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ lucid-updates universe main multiverse restricted

 

5) 你在编译过程中实际遇到了什么问题,最后的解决办法是什么?收获是什么?

问题1:下载内核的命令经常下到一半就连接中断。

我的解决办法是在Windows下采用迅雷软件进行内核下载,然后通过samba共享文件机制把内核文件共享到Ubuntu中。

问题2:内核编译速度比较慢。

我的解决办法是在VMware中为虚拟机分配6个CPU核和3GB内存,这样虚拟机可以6个线程一起进行内核编译,从而显著加快速度。

 

收获:

经过这次Linux内核升级实验,我对Linux内核的编译、工作机制有了更好的了解,对我们今后开展Android内核的安全加固项目提供了有效指导。

相关TAG标签
上一篇:主键和索引的区别
下一篇:SqlServer2008之关于”***对象无效“错误
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站