ubuntu05.04 linux2.6.10 内核安装
2017-01-10 17:10
351 查看
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说 2012-05-17 00:38:37
分类: LINUX
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说
linux内核编程4部曲之二:增加linux内核系统调用
linux内核编程4部曲之三:修改O(1)调度算法
linux内核编程4部曲之四:模块编程
一、编译环境
ubuntu 5.10,要编译的内核源码版本2.6.12
二、下载并解压源代码
首先从linux内核的官网www.kernel.org把源代码下载下来。为了和后面实验要求符合,我们要下载使用O(1)调度器的源码。因此这里下载了2.6.12版本源码。下载 下linux-2.6.12.tar.bz2,将下载源码放入/usr/src/目录下。如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/85e76b8124a2426b4fda455d46da0091.jpg)
解压该源码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/27e6015b7735639035031a5fba0e97f0.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/60467ebe0374869999fe831c71ad2aed.jpg)
三、构建编译环境
现在我们得到的只是源代码,只是许许多多的文本文件,要想使这些文件成为可以运行的程序,需要使用编译器进行编译以及链接。编译器有很多,但在里linux下一般都使用gnu的开源编译器套件,这里包括gcc等,现在我们安装基本的编译器套件,如图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/3d940a6ad0e5e84719508988cfe27c5f.jpg)
四、安装ncurses库
这里使用Ubuntu系统,因为系统自带的ncurses库在支持make menuconfig的时候会出错,所以,依然要安装ncurses库,这里我们从源码安装。首先去ncurses官网http://ftp.gnu.org/pub/gnu/ncurses/ 上下载源码。这里我们下载5.9版本,并通过简单的安装方式.configure 和make、make
install方式安装。如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/2e91e1aa3974f1a334c4d22ef311f63a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/650ada4c9b42778a0e2e709e2988c958.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/e4aa1d1816185025a3031bd40e1acc37.jpg)
五、配置内核
一切准备工作做完,现在我们就可以配置内核了,这里我们使用make menuconfig方式。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/60a4781bd3299947b30bf32fd54bd0f3.jpg)
在使用make menuconfig这个命令后,会出现如下的字符界面,我们就可以在这个界面上对内核进行配置。但是如果这不是你第一次配置这个内核,那么请先运行:make mrproper来清除以前的配置,回到默认配置,然后再运行:make menuconfig.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/f8e85eb904c1bd7c9e74763c669f2c77.jpg)
在这里,我们以对cpu支持的配置为例,其余的选项就不一一详述,首先查看本机的cpu类型,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/38dcd1326dbf73de3718ac287e2e0956.jpg)
在这里我们可以看到,我的电脑的cpu是AMD Athlon的,因此我们在cpu选项里面选用AMD,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/bfba8308dcbcfb2630a230b9c8545aef.jpg)
在这里需要注意的是:
A、 cpu的设置在linux内核编译过程中,不是必需的,即使保持默认的386选项(我们刚才把它改成了AMD),内核也能正常运行,只不过运行慢一些而已。
B、 一般容易出问题的地方在于Device Driver的设置。我在一开始就遇到了在内核编译完,通过grub引导系统过程中报 “ALERT! /dev/sda1 does not exist . Dropping to a shell!”的错误。这是因为硬盘驱动没有配置好而造成的。运行lspci命令,查看到下面这行:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/ba938377bd833b4c58c3e37bcb2d4712.jpg)
由此确定,需要配置SCSI、PCI-X、Fusion-MPT驱动,需要在响应的驱动选项里将[M]设置为[*],因为硬盘驱动是在系统开机的时候加载,所以不能以模块形式加载。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/ff542590595ffd4dc480794a49e67c7f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/e393524dc2b0d35c1dad97399097b01c.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/134619a072dd659fa9dd0015c241cbf9.jpg)
把这几个驱动内部的选项全部改为[*]:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/9a959ec8a33d3d200af5694f522cd16f.jpg)
六、编译内核
对内核的配置完成之后,现在就可以开始编译内核了,只需要一个简单的make命令即可,之后我们就只能慢慢等,直到编译完成,在我的电脑上,大概用了25分钟。下图是运行make后的部分输出。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/176394611b0561eaca6511128435ce9e.jpg)
七、安装内核
编译完成之后,我们需要安装内核,主要分为如下几步:
1)、安装模块
安装模块,对于内核来说,每一个内核版本有自己的模块目录,默认在/lib/modules/内核版本号这个目录下,make modules_install会创建对应的目录,并把对应的模块文件拷贝过去。注意,这一步必须要在编译过内核再做。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/3116f68c76443e804c2c63a410f22cf9.jpg)
2)、拷贝bzImage文件
bzImage文件是内核映像文件,是启动内核所必需的,我们应当把它拷贝到/boot目录下。在这里,我为自己新建了一个目录,我们把它拷贝过去,并且按照一般内核映像文件的命名方式为它改名为vmlinuz-2.6.12。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/714d9d360222624ce9f1ad3581a975ad.jpg)
3)、制作initrd文件
initrd文件命名为initrd.img-2.6.12
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/7799670187c060553d631f16f8fde3f0.jpg)
4)、修改grub启动项
要能引导起我们的新系统,需要更改grub配置,增加启动选项。ubuntu 5.10的grub版本比较低,配置文件为/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有启动项基础上,添加我们自己的启动项,并把它设为默认启动项,配置如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/168ed38fffdf7774643d6d54d63f2f8e.jpg)
5)重启
不出意外的话,我们的内核已经正常加载了,运行uname -a,会发现,内核版本已经是2.6.12了。
自己编译 安装时发生
根据上面的修改,可以了
倒数第二步可以运行 update-grup来完成
分类: LINUX
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说
linux内核编程4部曲之二:增加linux内核系统调用
linux内核编程4部曲之三:修改O(1)调度算法
linux内核编程4部曲之四:模块编程
一、编译环境
ubuntu 5.10,要编译的内核源码版本2.6.12
二、下载并解压源代码
首先从linux内核的官网www.kernel.org把源代码下载下来。为了和后面实验要求符合,我们要下载使用O(1)调度器的源码。因此这里下载了2.6.12版本源码。下载 下linux-2.6.12.tar.bz2,将下载源码放入/usr/src/目录下。如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/85e76b8124a2426b4fda455d46da0091.jpg)
解压该源码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/27e6015b7735639035031a5fba0e97f0.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/60467ebe0374869999fe831c71ad2aed.jpg)
三、构建编译环境
现在我们得到的只是源代码,只是许许多多的文本文件,要想使这些文件成为可以运行的程序,需要使用编译器进行编译以及链接。编译器有很多,但在里linux下一般都使用gnu的开源编译器套件,这里包括gcc等,现在我们安装基本的编译器套件,如图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/3d940a6ad0e5e84719508988cfe27c5f.jpg)
四、安装ncurses库
这里使用Ubuntu系统,因为系统自带的ncurses库在支持make menuconfig的时候会出错,所以,依然要安装ncurses库,这里我们从源码安装。首先去ncurses官网http://ftp.gnu.org/pub/gnu/ncurses/ 上下载源码。这里我们下载5.9版本,并通过简单的安装方式.configure 和make、make
install方式安装。如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/2e91e1aa3974f1a334c4d22ef311f63a.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/650ada4c9b42778a0e2e709e2988c958.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/e4aa1d1816185025a3031bd40e1acc37.jpg)
五、配置内核
一切准备工作做完,现在我们就可以配置内核了,这里我们使用make menuconfig方式。如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/60a4781bd3299947b30bf32fd54bd0f3.jpg)
在使用make menuconfig这个命令后,会出现如下的字符界面,我们就可以在这个界面上对内核进行配置。但是如果这不是你第一次配置这个内核,那么请先运行:make mrproper来清除以前的配置,回到默认配置,然后再运行:make menuconfig.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/f8e85eb904c1bd7c9e74763c669f2c77.jpg)
在这里,我们以对cpu支持的配置为例,其余的选项就不一一详述,首先查看本机的cpu类型,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/38dcd1326dbf73de3718ac287e2e0956.jpg)
在这里我们可以看到,我的电脑的cpu是AMD Athlon的,因此我们在cpu选项里面选用AMD,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/bfba8308dcbcfb2630a230b9c8545aef.jpg)
在这里需要注意的是:
A、 cpu的设置在linux内核编译过程中,不是必需的,即使保持默认的386选项(我们刚才把它改成了AMD),内核也能正常运行,只不过运行慢一些而已。
B、 一般容易出问题的地方在于Device Driver的设置。我在一开始就遇到了在内核编译完,通过grub引导系统过程中报 “ALERT! /dev/sda1 does not exist . Dropping to a shell!”的错误。这是因为硬盘驱动没有配置好而造成的。运行lspci命令,查看到下面这行:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/ba938377bd833b4c58c3e37bcb2d4712.jpg)
由此确定,需要配置SCSI、PCI-X、Fusion-MPT驱动,需要在响应的驱动选项里将[M]设置为[*],因为硬盘驱动是在系统开机的时候加载,所以不能以模块形式加载。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/ff542590595ffd4dc480794a49e67c7f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/e393524dc2b0d35c1dad97399097b01c.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/134619a072dd659fa9dd0015c241cbf9.jpg)
把这几个驱动内部的选项全部改为[*]:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/9a959ec8a33d3d200af5694f522cd16f.jpg)
六、编译内核
对内核的配置完成之后,现在就可以开始编译内核了,只需要一个简单的make命令即可,之后我们就只能慢慢等,直到编译完成,在我的电脑上,大概用了25分钟。下图是运行make后的部分输出。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/176394611b0561eaca6511128435ce9e.jpg)
七、安装内核
编译完成之后,我们需要安装内核,主要分为如下几步:
1)、安装模块
安装模块,对于内核来说,每一个内核版本有自己的模块目录,默认在/lib/modules/内核版本号这个目录下,make modules_install会创建对应的目录,并把对应的模块文件拷贝过去。注意,这一步必须要在编译过内核再做。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/3116f68c76443e804c2c63a410f22cf9.jpg)
2)、拷贝bzImage文件
bzImage文件是内核映像文件,是启动内核所必需的,我们应当把它拷贝到/boot目录下。在这里,我为自己新建了一个目录,我们把它拷贝过去,并且按照一般内核映像文件的命名方式为它改名为vmlinuz-2.6.12。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/714d9d360222624ce9f1ad3581a975ad.jpg)
3)、制作initrd文件
initrd文件命名为initrd.img-2.6.12
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/7799670187c060553d631f16f8fde3f0.jpg)
4)、修改grub启动项
要能引导起我们的新系统,需要更改grub配置,增加启动选项。ubuntu 5.10的grub版本比较低,配置文件为/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有启动项基础上,添加我们自己的启动项,并把它设为默认启动项,配置如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201504/168ed38fffdf7774643d6d54d63f2f8e.jpg)
5)重启
不出意外的话,我们的内核已经正常加载了,运行uname -a,会发现,内核版本已经是2.6.12了。
自己编译 安装时发生
Kernel panic - not syncing: VFS: Unable to mount root fs on
根据上面的修改,可以了倒数第二步可以运行 update-grup来完成
相关文章推荐
- Ubuntu 10.04 编译安装最新版本Linux-2.6.34内核
- [转]Ubuntu 10.04 编译安装最新版本Linux-2.6.34内核
- ubuntu 12.04编译安装linux-3.6.10内核笔记
- Ubuntu 编译安装 Linux 4.0.5 内核,并修复 vmware 网络内核模块编译错误
- 如何在Ubuntu 13.10上安装Linux内核 3.12
- ubuntu10.04下编译安装linux 3.14.18内核
- 怎样在 ubuntu 上安装 Linux 3.11 内核
- Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码
- 如何在Ubuntu 13.10上安装Linux内核 3.12
- 菜鸟的安卓内核开发之旅1--安装Ubuntu及熟悉常用linux命令
- ubuntu 10.04 编译安装最新版本linux-2.6.34内核
- Ubuntu 12.04/11.10 用户如何安装最新的 Linux 3.4 内核
- 对<< ubuntu 12.04编译安装linux-3.6.10内核笔记>>的修正
- ubuntu 10.04 编译安装最新版本linux-2.6.34内核
- 怎样在 ubuntu 上安装 Linux 3.11 内核
- ubuntu 10.04 编译安装最新版本linux-2.6.34内核
- ubuntu 10.04 编译安装最新版本linux-2.6.34内核
- ubuntu 10.04 编译安装linux-2.6.36内核(debug)
- ubuntu8.10手动编译安装内核linux-2.6.27.7
- Ubuntu 12.04安装Bochs 2.6.2, 调试linux 0.11 内核