到kernel.org下载最新的内核,然后解压, cd 到你解压的目录
1. make menuconfig
2. make -j4
3. make moles_install
4. make install
---------------------------------------
OK!
⑵ 编译linux内核如何编译initrd.img
ubuntu/disks
kernel /boot/vmlinuz-2.6.27-2-generic root=UUID=40586D90586D860E loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.27-2-generic
注意:两个内核文件都可以在/boot目录下看到,我猜是:
/boot/vmlinuz-2.6.27-2-generic和
/boot/initrd.img-2.6.27-2-generic
如果不是,改成正确的名字。错了也没关系啊,一个内核进不去,重启之后从另一个内核进去不就行了。
⑶ 如何编译Linux内核
一、编译环境
ubuntu 5.10,要编译的内核源码版本2.6.12
二、下载并解压源代码
首先从linux内核的官网www.kernel.org把源代码下载下来。为了和后面实验要求符合,我们要下载使用O(1)调度器的源码。因此这里下载了2.6.12版本源码。下载 下linux-2.6.12.tar.bz2,将下载源码放入/usr/src/目录下。如下图所示:
解压该源码:
三、构建编译环境
现在我们得到的只是源代码,只是许许多多的文本文件,要想使这些文件成为可以运行的程序,需要使用编译器进行编译以及链接。编译器有很多,但在里linux下一般都使用gnu的开源编译器套件,这里包括gcc等,现在我们安装基本的编译器套件,如图所示:
四、安装ncurses库
这里使用Ubuntu系统,因为系统自带的ncurses库在支持make menuconfig的时候会出错,所以,依然要安装ncurses库,这里我们从源码安装。首先去ncurses官网http://ftp.gnu.org/pub/gnu/ncurses/ 上下载源码。这里我们下载5.9版本,并通过简单的安装方式.configure 和make、make install方式安装
⑷ Linux内核编译
在你升级的时候有时候也会升级内核的,之后重启你会发现,会有好几种内核共存的,随便用哪个都可以启动系统的
同样,你自己编译的内核,可以与其它内核兼容,原来的内核最好不要删,留着,万一你编译的内核有问题,还可以用原来的内核启动系统
⑸ linux内核编译详细教程及开发Linux系统
摘录linuxaid
一步一步编译安装Linux内核
摘要
文章将为你详细并逐步的描述如何编译、配置、安装一个定制的RedHat Linux内核。我们知道,一个定制的内核从很多方面来看都是必需的,在此我不再讨论这个问题。我只向大家展示如何编译、配置和安装一个定制的内核。虽然下面所列步骤主要是针对RedHat Linux用户,但它也同样适用于其它Linux发行版的使用者。当然,一些较小的改动是必须的(例如,并不是所有的系统都使用initrd)
(2002-09-02 12:38:46)
By Wing, 出处:蓝风
摘要
文章将为你详细并逐步的描述如何编译、配置、安装一个定制的RedHat Linux内核。我们知道,一个定制的内核从很多方面来看都是必需的,在此我不再讨论这个问题。我只向大家展示如何编译、配置和安装一个定制的内核。虽然下面所列步骤主要是针对RedHat Linux用户,但它也同样适用于其它Linux发行版的使用者。当然,一些较小的改动是必须的(例如,并不是所有的系统都使用initrd)
硬件配置
下列步骤需在一个下列配置的计算机系统中演示:Compaq Presatio 4010 Series cinorter system,15.5GB硬盘,96 MB内存,400 MHz Intel Celeron Processorm ,Red Hat Linux 7.0(内核版本为2.2.16-22)
目标
我们的目标是在进行完下列步骤后得到一个完全运行的定制过的内核,例如,我有一个 定制过的内核2.2.16-22ghosh在我的系统中运行(我的名字叫Subhasish Ghosh,你也可以命名为其它名称,事实上在系统中有两个内核是同时运行的)下面,搜索并编译Linux内核。
编译、配置并安装一个定制的RedHat Linux内核的步骤:
整个步骤如下:
步骤1:以“root"身份登录,然后执行下列步骤
步骤2:在命令提示中键入 "rpm-q kernel-headers kernel-source make dev86"
步骤3:如果这些rpm包已经装好,直接进入步骤4。否则,挂载上RedHat Linux 7.0 光盘并执行rpm-Uvh以便安装这些必须的rpm包。
步骤4:如果你已有一个完全运行的X window System,那么在命令提示中键入“startx”。如果没有配置X window System,那么在命令提示中键入“make config”或者“make menuconfig”。
步骤5:进入GNOME环境,打开GNOME终端并键入“cd /usr/src/linux”然后回车。
步骤6:在/usr/src/linux 目录下,键入“make xconfig”。
步骤7:屏幕上将出现GUI版本的“make config",它将提供给你不同选项使你获得一个定制的内核。
步骤8:现在,我建议你尽量使用缺省设置。请注意不要轻易改变选项,因为许多选项非常敏感,需要专业处理,你仅需要做以下改动:
1.处理器型号和特征:选择正确的处理器取决于你是否使用Pentium Ⅱ或者Pentium Ⅲ,或像我一样使用Intel Celeron.例如,我操作如下:
Processor Family:PPro/686MXMaximum Physical Memory:1 GBMath Emulation:YesMTRR:YesSMP:Yes
2.打开文件系统对话框并做以下改动:
例如我是如下选择的:
DOS FAT fs support:Yes(y)MSDOD fs support:Yes(y)UMSDOS:mVFAT(Window 95) support:Yes(y)NTFS filesystem support (read-only):Yes(y)NTFS read-write support(DANGEROUS):NO(n)
完成以上选择后,请确认你没有改变其它选项。以上所有改动是无害的, 不会对你的Linux内核产生坏作用。
3.保存并从主对话框中退出
步骤9:在/usr/src/Linux目录下执行"ls -al".
步骤10:你将看到一个名为"Makefile"的文件,它对整个编译过程非常重要。因此,一定要先使用“cp Makefile Makefile.bak”命令对该文件进行备份。
步骤11:在usr/src/linux 中执行"vi Makefile"。
步骤12:找到EXTRAVERSION并改变它.例如:我将EXTRAVERSION=-22改为EXTRAVERSION="-22grosh".当然,你完全可以任意命名它。
步骤13:保存并退出文件。
步骤14:下列步骤在/usr/src/Linux 目录下执行。键入“make dep clean”回车。
步骤15:键入:“make bzImage moles”。这需要花费一些时间。你可以在这段时间休息一会。
步骤16:以上步骤完成后,在/usr/src/Linux/arch/i386/boot目录下将产生一个“bzlmage”文件。找到这个目录并检查“bzlmage”文件是否已经产生.如果上述步骤得到了正确的执行并且在“make xconfig”中的所有选项都选择正确的话,你一定会看到这个文件。如果没有这个文件,那么很遗憾,你得从头开始。
步骤17:在/usr/src/linux目录下键入“cp ./arch/i386/boot/bzlmage /boot/vmlinuz-2.2.16.22ghosh”并回车。
步骤18:键入:“cp System.map /boot/System.map-2.2.16-22ghosh”。
步骤19:键入:“make moles install”,回车。你将看见所有的模块将在一个新的指定目录下被安装。
步骤20:键入:“mkinitrd /boot/initrd-2.2.16-22ghosh.img2.2.16-22ghosh”。
步骤21:键入:“vi /etc/lilo.conf”且随后加入以下条目
image=/boot/vmlinuz-2.2.16-22ghoshlabel=GhoshKernelinitrd=/boot/initrd-2/2/16-22ghosh.imgroot=/dev/hdc5read-only
步骤22:保存并退出。请注意:在lilo.conf文件中已经按你的要求改变了相应的条目,但重要的一点是根目录必须是你的系统的根目录。例如:在我的系统中是在/dev/hde5中。插入你的系统的有关信息。
步骤23:键入:“/sbin/lilo -v -v”。
步骤24:阅读屏幕上的所有信息。假如没有显示错误,那么所有的工作就已完成了。Congratulations!
步骤25:键入:“/sbin/reboot”或“/sbin/shutdowm-r now”重新开机。
步骤26:在启动屏中,按Tab键(如果你使用的是LILO启动屏,可按 ctrl-X 键),你可以看见与其它选项一同出现的“GhoshKernel”选项。
步骤27:键入:GhoshKernel,回车。完全运行的定制内核就被引导装入系统中了。
终曲
以“root”身份登录,键入“uname -r”然后回车。你会在屏幕上看到2.2.16-22ghosh条目,它表示你正在运行定制过的内核,而不是2.2.16-22的内核版本。记住你可以在一个计算机中运行多个不同版本的内核。如果你遇到了问题,发E-mail给我,邮箱是:[email protected]。
资源
在许多Web站点里都有关于如何编译和运行最优化的定制内核的信息。例如http://www.vmlinuz.nu/。还有一些其它的关于Linux内核的使用和编译的站点。
⑹ linux编译内核步骤
一、准备工作
a) 首先,你要有一台PC(这不废话么^_^),装好了Linux。
b) 安装好GCC(这个指的是host gcc,用于编译生成运行于pc机程序的)、make、ncurses等工具。
c) 下载一份纯净的Linux内核源码包,并解压好。
注意,如果你是为当前PC机编译内核,最好使用相应的Linux发行版的源码包。
不过这应该也不是必须的,因为我在我的Fedora 13上(其自带的内核版本是2.6.33.3),就下载了一个标准的内核linux-2.6.32.65.tar.xz,并且顺利的编译安装成功了,上电重启都OK的。不过,我使用的.config配置文件,是Fedora 13自带内核的配置文件,即/lib/moles/`uname -r`/build/.config
d) 如果你是移植Linux到嵌入式系统,则还要再下载安装交叉编译工具链。
例如,你的目标单板CPU可能是arm或mips等cpu,则安装相应的交叉编译工具链。安装后,需要将工具链路径添加到PATH环境变量中。例如,你安装的是arm工具链,那么你在shell中执行类似如下的命令,假如有类似的输出,就说明安装好了。
[root@localhost linux-2.6.33.i686]# arm-linux-gcc --version
arm-linux-gcc (Buildroot 2010.11) 4.3.5
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for ing conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
注:arm的工具链,可以从这里下载:回复“ARM”即可查看。
二、设置编译目标
在配置或编译内核之前,首先要确定目标CPU架构,以及编译时采用什么工具链。这是最最基础的信息,首先要确定的。
如果你是为当前使用的PC机编译内核,则无须设置。
否则的话,就要明确设置。
这里以arm为例,来说明。
有两种设置方法():
a) 修改Makefile
打开内核源码根目录下的Makefile,修改如下两个Makefile变量并保存。
ARCH := arm
CROSS_COMPILE := arm-linux-
注意,这里cross_compile的设置,是假定所用的交叉工具链的gcc程序名称为arm-linux-gcc。如果实际使用的gcc名称是some-thing-else-gcc,则这里照葫芦画瓢填some-thing-else-即可。总之,要省去名称中最后的gcc那3个字母。
b) 每次执行make命令时,都通过命令行参数传入这些信息。
这其实是通过make工具的命令行参数指定变量的值。
例如
配置内核时时,使用
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
编译内核时使用
make ARCH=arm CROSS_COMPILE=arm-linux-
注意,实际上,对于编译PC机内核的情况,虽然用户没有明确设置,但并不是这两项没有配置。因为如果用户没有设置这两项,内核源码顶层Makefile(位于源码根目录下)会通过如下方式生成这两个变量的值。
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
-e s/sh[234].*/sh/ )
ARCH?= $(SUBARCH)
CROSS_COMPILE ?=
经过上面的代码,ARCH变成了PC编译机的arch,即SUBARCH。因此,如果PC机上uname -m输出的是ix86,则ARCH的值就成了i386。
而CROSS_COMPILE的值,如果没配置,则为空字符串。这样一来所使用的工具链程序的名称,就不再有类似arm-linux-这样的前缀,就相当于使用了PC机上的gcc。
最后再多说两句,ARCH的值还需要再进一步做泛化。因为内核源码的arch目录下,不存在i386这个目录,也没有sparc64这样的目录。
因此顶层makefile中又构造了一个SRCARCH变量,通过如下代码,生成他的值。这样一来,SRCARCH变量,才最终匹配到内核源码arch目录中的某一个架构名。
SRCARCH := $(ARCH)
ifeq ($(ARCH),i386)
SRCARCH := x86
endif
ifeq ($(ARCH),x86_64)
SRCARCH := x86
endif
ifeq ($(ARCH),sparc64)
SRCARCH := sparc
endif
ifeq ($(ARCH),sh64)
SRCARCH := sh
endif
三、配置内核
内核的功能那么多,我们需要哪些部分,每个部分编译成什么形式(编进内核还是编成模块),每个部分的工作参数如何,这些都是可以配置的。因此,在开始编译之前,我们需要构建出一份配置清单,放到内核源码根目录下,命名为.config文件,然后根据此.config文件,编译出我们需要的内核。
但是,内核的配置项太多了,一个一个配,太麻烦了。而且,不同的CPU架构,所能配置的配置项集合,是不一样的。例如,某种CPU的某个功能特性要不要支持的配置项,就是与CPU架构有关的配置项。所以,内核提供了一种简单的配置方法。
以arm为例,具体做法如下。
a) 根据我们的目标CPU架构,从内核源码arch/arm/configs目录下,找一个与目标系统最接近的配置文件(例如s3c2410_defconfig),拷贝到内核源码根目录下,命名为.config。
注意,如果你是为当前PC机编译内核,最好拷贝如下文件到内核源码根目录下,做为初始配置文件。这个文件,是PC机当前运行的内核编译时使用的配置文件。
/lib/moles/`uname -r`/build/.config
这里顺便多说两句,PC机内核的配置文件,选择的功能真是多。不编不知道,一编才知道。Linux发行方这样做的目的,可能是想让所发行的Linux能够满足用户的各种需求吧。
b) 执行make menuconfig对此配置做一些需要的修改,退出时选择保存,就将新的配置更新到.config文件中了。
注
⑺ Linux内核源码如何编译
首先uname -r看一下你当前的linux内核版本
1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname -r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。
2、配置内核 make menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。
3、编译,依次执行make、make bzImage、make moles、make moles
4、安装,make install
5、.创建系统启动映像,到 /boot 目录下,执行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改启动项,因为你在启动的时候会出现多个内核供你选择,此事要选择你刚编译的那个版本,如果你的电脑没有等待时间,就会进入默认的,默认的那个取决于 /boot/grub/grub.cfg 文件的设置,找到if [ "${linux_gfx_mode}" != "text" ]这行,他的第一个就是你默认启动的那个内核,如果你刚编译的内核是在下面,就把代表这个内核的几行代码移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
当然你也可以修改 set default="0"来决定用哪个,看看你的内核在第几位,default就填几,不过我用过这种方法,貌似不好用。
重启过后你编译的内核源码就成功地运行了,如果出现问题,比如鼠标不能用,usb不识别等问题就好好查查你的make menuconfig这一步,改好后就万事ok了。
最后再用uname -r看看你的linux内核版本。是不是你刚下的那个呢!有没有成就感?
打字不易,如满意,望采纳。
⑻ linux内核编译
首先到www.kernel.org网站去下载一个2.6以上版本的内核。因为旧版本在编译时的指令与2.6版本有些不同。用tar zxvf 或 jxvf 结压。解压后进入文件夹,输入 make menuconfig 后可以看到一个图形界面,用于对内核进行配置。具体的配置项请参考《linux 2.6 内核配置》,该文章可以从网络文库中下载。配置完成后,记住一定要保存到.config系统文件中。最后输入make,进行编译。编译完成后在boot文件夹下会自动生成zImage文件,这就是新内核的镜像文件。编译一般需要两个小时。
⑼ Linux内核编译,步骤及截图.
哪个版本?2.6以上的版本就很简单了。基本上就是
# tar xzvf *****.tar.gz
# cd *****
# ./configure 注意这里可以定制内核选项
# make
# make install