编译Linux内核报告.docx

上传人:b****7 文档编号:11210583 上传时间:2023-02-25 格式:DOCX 页数:11 大小:2.04MB
下载 相关 举报
编译Linux内核报告.docx_第1页
第1页 / 共11页
编译Linux内核报告.docx_第2页
第2页 / 共11页
编译Linux内核报告.docx_第3页
第3页 / 共11页
编译Linux内核报告.docx_第4页
第4页 / 共11页
编译Linux内核报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

编译Linux内核报告.docx

《编译Linux内核报告.docx》由会员分享,可在线阅读,更多相关《编译Linux内核报告.docx(11页珍藏版)》请在冰豆网上搜索。

编译Linux内核报告.docx

编译Linux内核报告

Linux

 

编译Linux内核

在linux操作系统环境下重新编译内核。

实验主要内容:

●查找并且下载一份内核源代码

●配置内核

●编译内核和模块

●配置启动文件

本次实验指导是在Ubuntu12.04(内核版本为3.2.0-23-generic-pae)的Linux系统里,下载并编译新的Linux内核源代码(鼓励选用最新版本,如3.14.4);然后,配置GNU的启动引导工具grub,成功运行编译成功的Linux内核。

实验指导

1.查找并且下载一份内核源代码

Linux受GNU通用公共许可证(GPL)保护,其内核源代码是完全开放的。

现在很多Linux的网站都提供内核代码的下载。

推荐使用Linux的官方网站:

http:

//www.kernel.org。

图1Linux的官方网站

在Linux下可以通过wget命令下载源代码:

$cd/tmp

$wgethttp:

//www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.1.tar.xz

下载的内核源代码保存在/tmp目录下,文件名为linux-3.15.1.tar.xz。

2.解压内核源代码

将新的内核代码解压到/usr/src目录下,注意此处要用root身份。

对于xz类型的压缩包的解压方法:

#xz–dlinux-3.15.1.tar.xz

#tar–xvflinux-3.15.1.tar–C/usr/src

需要说明的是,其实还有许多网站保存此文件;它们采取的压缩方式可能不同,需要采用不同的命令进行解压。

3.配置内核

在编译内核前,一般来说都需要对内核进行相应的配置。

配置是精确控制新内核功能的机会。

配置过程也控制哪些需编译到内核的二进制映像中(在启动时被载入),哪些是需要时才装入的内核模块(module)。

首先进入内核源代码目录:

#cd/usr/src/linux-3.15.1

如果不是第一次编译的话,有必要将内核源代码树置于一种完整和一致的状态(如果是第一次可跳过此步)。

因此,推荐执行命令makemrproper。

它将清除目录下所有配置文件和先前生成核心时产生的.o文件:

#makemrproper

然后配置编译选项(此处使用原内核的配置文件,完整的配置命令看操作提示):

#cp/boot/config-3.2.0-23-generic-pae.config

该命令的作用是将原内核配置文件拷贝的当前目录下,并命名为.config。

若需要进一步修改配置请参照操作提示。

4.编译内核和模块

编译内核,就用:

#make

编译内核需要较长的时间,具体与机器的硬件条件及内核的配置等因素有关(采用VMWare虚拟机,需要约50分钟)。

完成后产生的内核文件bzImage的位置在/usr/src/linux/arch/i386/boot目录下,当然这里假设用户的CPU是Intelx86型的,并且你将内核源代码放在/usr/src/linux目录下。

如果选择了可加载模块,编译完内核后,要对选择的模块进行编译,可用:

#makemodules

5.安装新内核模块和新内核

首先,用下面的命令将新内核模块安装到系统的标准模块目录中:

#makemodules_install

然后,建立要载入ramdisk的映像文件:

#mkinitramfs-o/boot/initrd.img-3.15.1

 

如果Linux系统安装在scsi磁盘上,这步是必须的,否则可以跳过。

如果你的linux不是ubuntu,而是其他发行版本,那么使用的命令可能不是mkinitramfs,但功能和用法类似。

第三,用下面的命令将新内核安装到系统中:

#makeinstall

通常,Linux在系统引导后从/boot目录下读取内核映像到内存中。

因此如果想要使用自己编译的内核,就必须用makeinstall命令将启动文件安装到/boot目录下。

6.了解grub配置启动文件

如果使用grub启动Linux,需要在grub.cfg中增加启动项(近几年Ubuntu发行版的启动文件为/boot/grub/grub.cfg文件)。

建议不要去编辑这个文件,因为这个文件是自动生成的。

sudomkinitramfs-o/boot/initrd.img-3.15.1

sudoupdate-initramfs-c-k3.15.1

sudoupdate-grub2//自动修改系统引导配置,产生grub.cfg启动文件

可以查看启动配置文件:

#more–d/boot/grub/grub.cfg

若文件中有如下内容,说明新内核启动项已添加成功。

menuentry'Ubuntu,withLinux3.14.4'--classubuntu--classgnu-linux--classgnu--classos{

Recordfailgfxmode$linux_gfx_mode

insmodgzioinsmodpart_msdos

insmodext2setroot='(hd0,msdos1)'

search--no-floppy--fs-uuid--set=rootccc4776d-a0ae-410b-9ffd-54eff9ca4f6d

linux/boot/vmlinuz-3.14.4root=UUID=ccc4776d-a0ae-410b-9ffd-54eff9ca4f6drofind_preseed=/preseed.cfgnopromptquiet

initrd/boot/initrd.img-3.14.4}

menuentry'Ubuntu,withLinux3.14.4(恢复模式)'--classubuntu--classgnu-linux--classgnu--classos{

Recordfailinsmodgzio

insmodpart_msdosinsmodext2

setroot='(hd0,msdos1)'

search--no-floppy--fs-uuid--set=rootccc4776d-a0ae-410b-9ffd-54eff9ca4f6d

echo'LoadingLinux3.14.4...'

linux/boot/vmlinuz-3.14.4root=UUID=ccc4776d-a0ae-410b-9ffd-54eff9ca4f6drorecoverynomodesetfind_preseed=/preseed.cfgnoprompt

echo'Loadinginitialramdisk...'

initrd/boot/initrd.img-3.14.4

}

7.重启系统查看效果

经过前边步骤,已编译了内核镜像且放到了指定位置/boot;也配置了/boot/grub/grub.cfg。

现在,可以重启主机系统,期待编译过的Linux操作系统内核正常运行!

#reboot重启系统

系统启动后,从启动菜单中选中新内核引导Linux(默认是从新内核镜像启动系统);进入后可以执行uname–r命令查看内核版本。

3、遇到的问题

1、刚开始安装Ubuntu时,中间有一步是试用Ubuntu还是安装Ubuntu,我不太理解,就试用,但是后来有自己分区,总是出现根源分区错误,然后我点击安装,他说安装会清空我的磁盘消息,我也不敢安装,不知道怎么办,后来,我请教同学后才知道,原来清空的是虚拟机的磁盘,点击安装就行了。

2、当虚拟机安装好时,却打不开,我找不到原因,安装好了怎么会打不开呢,原来是我那个ubuntu-12.04-desktop-amd64.iso还没有装进去,只是出现一个虚拟机的样子。

安装后正常启动!

3、一切安装准备做好了,开始进入实验环节,但是我找不到终端在哪,就XX一下,Ctrl加Alt加T就可以快捷打开终端了,我试试了,成功。

4、这个实验真是个费时间的工作,有时候要等一个多小时,在做的过程中,我忘记截图了,就只好又来一次,好累的!

四、实验心得

这次实验总体来说不难,自己在操作过程中遇到的困难,通过XX就可以解决,而且这次实验主要的就是时间问题,太耗时间了。

而且实验成功之后感觉自己真的学到了点东西,动手一步一步做出来特别有成就感,所以我要继续努力。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 成考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1