百度
360搜索
搜狗搜索

linux内核编译,linux内核模块编译-通过Makefile重命名.ko文件名和模块名详细介绍

本文目录一览: Linux内核配置与编译相关流程

linux内核配置与编译相关流程1、清除临时文件、中间文件和配置文件
make
clean
不删除配置文件。
make
mrproper
make
distclean
删除编辑的backup文件、补丁文件等2、确定目标系统的软硬件配置情况,比如CPU的类型,网卡的型号,所需要支持的网络协议。3、使用命令配置内核
make
config
基于文本模式的交互配置。
make
menuconfig
基于文本模式的菜单配置。
make
oldconfig
使用已有的配置文件(.config),但是会询问新增的配置选项。
make
xconfig
图形化的配置(需要安装图形化系统)。4、编译内核
make
zImage
make
bzImage
区别:在X86平台上,zImage只能用于小雨512k内核。如果需要获取详细编译信息,则在后面加上V=1.
编译好的内核位于arch/

/boot/目录下。

5、编译内核模块

make

modues

6、安装内核模块

make

modues_install

将编译好的内核模块从内核源代码目录copy到/lib/modues下。7、制作

init

ramdisk

mkinitrd

$initrd-$version

-$version内核安装(X86)1、cp

arch/X86/boot/bzImage

/boot/vmliuz

-$version2、cp

$initrd

/boot/3、修改etc/grub.conf



/etc/lilo.conf$version为所编译的内核版本号。

Linux的内核编译是什么意思?

本视频介绍了Linux的基本概念和原理,特别是介绍了Linux发行版与Linux内核的关系。
所有的软件现在基本都是用高级语言编写的,Linux
内核也不例外。Linux
内核是用
C
语言写的。
但高级语言编写的程序有个问题就是,源代码是不能直接运行的。要么用解释语言解释运行(功能限制很大,应用环境限制也很大),要么就是通过编译器经解释编译链接后成为计算机可以直接运行的计算机语言,也就是一般成为的二进制程序。
Linux的内核编译就是用编译器把
Linux
的内核源代码编译成可以被计算机运行的二进制代码的行为。
当然
Linux
内核并不完全都是
C
语言写的,还有一部分汇编语言,但汇编语言也需要编译的。

如何编译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方式安装。如下图所示: 五、配置内核 一切准备工作做完,现在我们就可以配置内核了,这里我们使用make menuconfig方式。如下图: 在使用make menuconfig这个命令后,会出现如下的字符界面,我们就可以在这个界面上对内核进行配置。但是如果这不是你第一次配置这个内核,那么请先运行:make mrproper来清除以前的配置,回到默认配置,然后再运行:make menuconfig.
在这里,我们以对cpu支持的配置为例,其余的选项就不一一详述,首先查看本机的cpu类型,如下图:
在这里我们可以看到,我的电脑的cpu是AMD Athlon的,因此我们在cpu选项里面选用AMD,如下图所示:
在这里需要注意的是:
A、 cpu的设置在linux内核编译过程中,不是必需的,即使保持默认的386选项(我们刚才把它改成了AMD),内核也能正常运行,只不过运行慢一些而已。
B、 一般容易出问题的地方在于Device Driver的设置。我在一开始就遇到了在内核编译完,通过grub引导系统过程中报 “ALERT! /dev/sda1 does not exist . Dropping to a shell!”的错误。这是因为硬盘驱动没有配置好而造成的。运行lspci命令,查看到下面这行:
由此确定,需要配置SCSI、PCI-X、Fusion-MPT驱动,需要在响应的驱动选项里将[M]设置为[*],因为硬盘驱动是在系统开机的时候加载,所以不能以模块形式加载。
把这几个驱动内部的选项全部改为[*]:
六、编译内核
对内核的配置完成之后,现在就可以开始编译内核了,只需要一个简单的make命令即可,之后我们就只能慢慢等,直到编译完成,在我的电脑上,大概用了25分钟。下图是运行make后的部分输出。
七、安装内核
编译完成之后,我们需要安装内核,主要分为如下几步:
1)、安装模块
安装模块,对于内核来说,每一个内核版本有自己的模块目录,默认在/lib/modules/内核版本号这个目录下,make modules_install会创建对应的目录,并把对应的模块文件拷贝过去。注意,这一步必须要在编译过内核再做。
2)、拷贝bzImage文件
bzImage文件是内核映像文件,是启动内核所必需的,我们应当把它拷贝到/boot目录下。在这里,我为自己新建了一个目录,我们把它拷贝过去,并且按照一般内核映像文件的命名方式为它改名为vmlinuz-2.6.12。
3)、制作initrd文件
initrd文件命名为initrd.img-2.6.12
4)、修改grub启动项
要能引导起我们的新系统,需要更改grub配置,增加启动选项。ubuntu 5.10的grub版本比较低,配置文件为/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有启动项基础上,添加我们自己的启动项,并把它设为默认启动项,配置如下:
5)重启
不出意外的话,我们的内核已经正常加载了,运行uname -a,会发现,内核版本已经是2.6.12了。

Linux内核源码如何编译

首先uname
-r看一下你当前的linux内核版本
1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname
-r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。
2、配置内核
make
menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。
3、编译,依次执行make、make
bzImage、make
modules、make
modules
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编译内核步骤

一、准备工作
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/modules/`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 copying 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/modules/`uname -r`/build/.config
这里顺便多说两句,PC机内核的配置文件,选择的功能真是多。不编不知道,一编才知道。Linux发行方这样做的目的,可能是想让所发行的Linux能够满足用户的各种需求吧。
b) 执行make menuconfig对此配置做一些需要的修改,退出时选择保存,就将新的配置更新到.config文件中了。

阅读更多 >>>  如何恢复linux为windows

RockPI 4A Linux内核下载与编译

本文介绍RockPI 4A单板Debian系统Linux内核的下载和编译方法,为后续介绍RockPI 4A单板Linux内核调试进行抛砖引玉。
一、代码下载
Rockpi 4A Debian版本SDK代码下载方法:
代码下载完成后,显示如下:
kernel 目录下保存Linux内核代码。
build 目录下保存配置和编译脚本。
如果RockPI 4A代码下载失败,提示如下:
解决方法:将下载链接中 https 替换成 git 。
二、内核编译
使用代码里的编译脚本,编译脚本名称: mk-kernel.sh ,位置如下:
注:在脚本 mk-kernel.sh 中有一段代码: source $LOCALPATH/build/board_configs.sh $BOARD ,使用脚本编译时,必须在 build 文件夹同一级目录。
RockPI 4A Linux内核编译方法如下(使用...省略部分编译输出):
其中: rockpi4a 对应RockPI 4A单板,如果使用其它单板,需要设置不同内容。单板类型可参考 build/board_configs.sh 脚本中 case ${BOARD} in 的选项。例:
编译出来的映像路径:

如何编译linux内核

编译linux内核步骤:
1、安装内核
如果内核已经安装(/usr/src/目录有linux子目录),跳过。如果没有安装,在光驱中放入linux安装光盘,找到kernel-source-2.xx.xx.rpm文件(xx代表数字,表示内核的版本号),比如RedHat linux的RPMS目录是/RedHat/RPMS/目录,然后使用命令rpm -ivh kernel-source-2.xx.xx.rpm安装内核。如果没有安装盘,可以去各linux厂家站点或者www.kernel.org下载。
2、清除从前编译内核时残留的.o 文件和不必要的关联
cd /usr/src/linux
make mrproper
3、配置内核,修改相关参数,请参考其他资料
在图形界面下,make xconfig;字符界面下,make menuconfig。在内核配置菜单中正确设置个内核选项,保存退出
4、正确设置关联文件
make dep
5、编译内核
对于大内核(比如需要SCSI支持),make bzImage
对于小内核,make zImage
6、编译模块
make modules
7、安装模块
make modules_install
8、使用新内核
把/usr/src/linux/arch/i386/boot/目录内新生成的内核文件bzImage/zImage拷贝到/boot目录,然后修改/etc/lilo.conf文件,加一个启动选项,使用新内核bzImage/zImage启动。格式如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux-new ### 告诉lilo缺省使用新内核启动linux ###
append="mem=256M"
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
image=/boot/bzImage(zImage)
label=linux-new
read-only
root=/dev/hda5
保留旧有的启动选项可以保证新内核不能引导的情况,还可以进入linux进行其他操作。保存退出后,不要忘记了最重要的一步,运行/sbin/lilo,使修改生效。
9、重新生成ram磁盘
如果您的系统中的/etc/lilo.conf没有使用了ram磁盘选项initrd,略过。如果您的系统中的/etc/lilo.conf使用了ram磁盘选项initrd,使用mkinitrd initrd-内核版本号,内核版本号命令重新生成ram磁盘文件,例如我的Redhat 6.2:
mkinitrd initrd-2.2.14-5.0 2.2.14-5.0
之后把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:
initrd=/boot/initrd-2.2.14-5.0
ram磁盘能使系统性能尽可能的优化,具体参考/usr/src/linux/Documents/initrd.txt文件
10、重新启动,OK!
邮箱拿来。发书给你;Linux_from_Scratch;
$ make menuconfig
$ make
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux作为一个自由软件,
在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定
制一个更高效,更稳定的内核,就需要重新编译内核。本文将以RedHat Linux 6.0(kernel
2.2.5)为操作系统平台,介绍在Linux上进行内核编译的方法。
  一、 下载新内核的源代码
  目前,在Internet上提供Linux源代码的站点有很多,读者可以选择一个速度较快的站点下载。笔者是从站点www.kernelnotes.org上下载了Linux的最新开发版内核2.3.14的源代码,全部代码被压缩到一个名叫Linux-2.3.14.tar.gz的文件中。
  二、 释放内核源代码
  由于源代码放在一个压缩文件中,因此在配置内核之前,要先将源代码释放到指定的目录下。首先以root帐号登录,然后进入/usr/src子目录。如果用户在安装Linux时,安装了内核的源代码,则会发现一个linux-2.2.5的子目录。该目录下存放着内核2.2.5的源代码。此外,还会发现一个指向该目录的链接linux。删除该连接,然后将新内核的源文件拷贝到/usr/src目录中。
  (一)、用tar命令释放内核源代码
  # cd /usr/src
  # tar zxvf Linux-2.3.14.tar.gz
  文件释放成功后,在/usr/src目录下会生成一个linux子目录。其中包含了内核2.3.14的全部源代码。
  (二)、将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。
  # cd /usr/include
  # rm -Rf asm linux
  # ln -s /usr/src/linux/include/asm-i386 asm
  # ln -s /usr/src/linux/include/linux linux
  # ln -s /usr/src/linux/include/scsi scsi
  (三)、删除源代码目录中残留的.o文件和其它从属文件。
  # cd /usr/src/linux
  # make mrproper
  三、 配置内核
  (一)、启动内核配置程序。
  # cd /usr/src/linux
  # make config
  除了上面的命令,用户还可以使用make menuconfig命令启动一个菜单模式的配置界面。如果用户安装了X window系统,还可以执行make xconfig命令启动X window下的内核配置程序。
  (二)、配置内核
  Linux的
内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内
核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序
的支持。由于内核的配置选项非常多,本文只介绍一些比较重要的选项。
  1、Code maturity level options(代码成熟度选项)
  Prompt for development and/or incomplete code/drivers
(CONFIG_EXPERIMENTAL) [N/y/?]
如果用户想要使用还处于测试阶段的代码或驱动,可以选择“y”。如果想编译出一个稳定的内核,则要选择“n”。
  1、 Processor type and features(处理器类型和特色)
  (1)、Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) [PPro/6x86MX] 选择处理器类型,缺省为Ppro/6x86MX。
  (2)、Maximum Physical Memory (1GB, 2GB) [1GB] 内核支持的最大内存数,缺省为1G。
  (3)、Math emulation (CONFIG_MATH_EMULATION) [N/y/?] 协处理器仿真,缺省为不仿真。
  (4)、MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?]
  选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。
  (5)、Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] 选择“y”,内核将支持对称多处理器。
  2、 Loadable module support(可加载模块支持)
  (1)、Enable loadable module support (CONFIG_MODULES) [Y/n/?] 选择“y”,内核将支持加载模块。
  (2)、Kernel module loader (CONFIG_KMOD) [N/y/?] 选择“y”,内核将自动加载那些可加载模块,否则需要用户手工加载。
  3、 General setup(一般设置)
  (1)、Networking support (CONFIG_NET) [Y/n/?] 该选项设置是否在内核中提供网络支持。
  (2)、PCI support (CONFIG_PCI) [Y/n/?] 该选项设置是否在内核中提供PCI支持。
  (3)、PCI access mode (BIOS, Direct, Any) [Any] 该选项设置Linux探测PCI设备的方式。选择“BIOS”,Linux将使用BIOS;选择“Direct”,Linux将不通过BIOS;选择“Any”,Linux将直接探测PCI设备,如果失败,再使用BIOS。
  (4)Parallel port support (CONFIG_PARPORT) [N/y/m/?] 选择“y”,内核将支持平行口。
  4、 Plug and Play configuration(即插即用设备支持)
  (1)、Plug and Play support (CONFIG_PNP) [Y/m/n/?] 选择“y”,内核将自动配置即插即用设备。
  (2)、ISA Plug and Play support (CONFIG_ISAPNP) [Y/m/n/?] 选择“y”,内核将自动配置基于ISA总线的即插即用设备。
  5、 Block devices(块设备)
  (1)、Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] 选择“y”,内核将提供对软盘的支持。
  (2)、Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) [Y/m/n/?] 选择“y”,内核将提供对增强IDE硬盘、CDROM和磁带机的支持。
  6、 Networking options(网络选项)
  (1)、Packet socket (CONFIG_PACKET) [Y/m/n/?] 选择“y”,一些应用程序将使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。
  (2)、Network firewalls (CONFIG_FIREWALL) [N/y/?] 选择“y”,内核将支持防火墙。
  (3)、TCP/IP networking (CONFIG_INET) [Y/n/?] 选择“y”,内核将支持TCP/IP协议。
  (4)The IPX protocol (CONFIG_IPX) [N/y/m/?] 选择“y”,内核将支持IPX协议。
  (5)、Appletalk DDP (CONFIG_ATALK) [N/y/m/?] 选择“y”,内核将支持Appletalk DDP协议。
  8、SCSI support(SCSI支持)
  如果用户要使用SCSI设备,可配置相应选项。
  9、Network device support(网络设备支持)
  Network device support (CONFIG_NETDEVICES) [Y/n/?] 选择“y”,内核将提供对网络驱动程序的支持。
  10、Ethernet (10 or 100Mbit)(10M或100M以太网)
  在该项设置中,系统提供了许多网卡驱动程序,用户只要选择自己的网卡驱动就可以了。此外,用户还可以根据需要,在内核中加入对FDDI、PPP、SLIP和无线LAN(Wireless LAN)的支持。
  11、Character devices(字符设备)
  (1)、Virtual terminal (CONFIG_VT) [Y/n/?] 选择“y”,内核将支持虚拟终端。
  (2)、Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?]
  选择“y”,内核可将一个虚拟终端用作系统控制台。
  (3)、Standard/generic (dumb) serial support (CONFIG_SERIAL) [Y/m/n/?]
  选择“y”,内核将支持串行口。
  (4)、Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?]
  选择“y”,内核可将一个串行口用作系统控制台。
  12、Mice(鼠标)
  PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?] 如果用户使用的是PS/2鼠标,则该选项应该选择“y”。
  13、Filesystems(文件系统)
  (1)、Quota support (CONFIG_QUOTA) [N/y/?] 选择“y”,内核将支持磁盘限额。
  (2)、Kernel automounter support (CONFIG_AUTOFS_FS) [Y/m/n/?] 选择“y”,内核将提供对automounter的支持,使系统在启动时自动 mount远程文件系统。
  (3)、DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] 选择“y”,内核将支持DOS FAT文件系统。
  (4)、ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/m/n/?]
  选择“y”,内核将支持ISO 9660 CDROM文件系统。
  (5)、NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/m/?]
  选择“y”,用户就可以以只读方式访问NTFS文件系统。
  (6)、/proc filesystem support (CONFIG_PROC_FS) [Y/n/?] /proc是存放Linux系统运行状态的虚拟文件系统,该项必须选择“y”。
  (7)、Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] EXT2是Linux的标准文件系统,该项也必须选择“y”。
  14、Network File Systems(网络文件系统)
  (1)、NFS filesystem support (CONFIG_NFS_FS) [Y/m/n/?] 选择“y”,内核将支持NFS文件系统。
  (2)、SMB filesystem support (to mount WfW shares etc.) (CONFIG_SMB_FS)
  选择“y”,内核将支持SMB文件系统。
  (3)、NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS)
  选择“y”,内核将支持NCP文件系统。
  15、Partition Types(分区类型)
  该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择“y”即可。
  16、Console drivers(控制台驱动)
  VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] 选择“y”,用户就可以在标准的VGA显示方式下使用Linux了。
  17、Sound(声音)
  Sound card support (CONFIG_SOUND) [N/y/m/?] 选择“y”,内核就可提供对声卡的支持。
  18、Kernel hacking(内核监视)
  Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] 选择“y”,用户就可以对系统进行部分控制。一般情况下选择“n”。
  四、 编译内核
  (一)、建立编译时所需的从属文件
  # cd /usr/src/linux
  # make dep
  (二)、清除内核编译的目标文件
  # make clean
  (三)、编译内核
  # make zImage
  内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件zImage。如果编译的内核很大的话,系统会提示你使用make bzImage命令来编译。这时,编译程序就会生成一个名叫bzImage的内核映像文件。
  (四)、编译可加载模块
  如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。
  # make modules
  # make modelus_install
  编译成功后,系统会在/lib/modules目录下生成一个2.3.14子目录,里面存放着新内核的所有可加载模块。
  五、 启动新内核
  (一)、将新内核和System.map文件拷贝到/boot目录下
  # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.3.14
  # cp /usr/src/linux/System.map /boot/System.map-2.3.14
  # cd /boot
  # rm -f System.map
  # ln -s System.map-2.3.14 System.map
  (二)、配置/etc/lilo.conf文件。在该文件中加入下面几行:
  default=linux-2.3.14
  image=/boot/vmlinuz-2.3.14
  label=linux-2.3.14
  root=/dev/hda1
  read-only
  (三)、使新配置生效
  # /sbin/lilo
  (四)、重新启动系统
  # /sbin/reboot
  新内核如果不能正常启动,用户可以在LILO:提示符下启动旧内核。然后查出故障原因,重新编译新内核即可。

阅读更多 >>>  如何下载安装正版的Linux

了解更多开源相关,去LUPA社区看看吧。

linux内核编译和根文件系统制作过程

内核编译:
make
menuconfig配置相应的平台,然后保存退出直接make命令就可以编译了。
文件系统制作:
一般都用busybox开源软件来做,下载,解压,然后make
menuconfig配置你想要的属性,然后保存退出,make就可以了,然后make
install就会在目录下看到__install的目录就是你要的根文件系统目录了。
可以确定的有两个问题:
1.你的网关设置有错误
网关是一个确定的IP,不应该是255.255.255.255.
可以不设置网关。
但这个错误不会造成引导失败
2.你的内核编译有问题
你可以在编译内核前,首先清理一下环境:
比如:make
clean
或者
make
distclean,
这个和具体的开发包相关,各家都一些小差别,看说明文档。

linux内核模块编译-通过Makefile重命名.ko文件名和模块名

假设模块的源文件为hello.c,源码如下:
使用该文件编译内核模块。 正常情况下,Makefile文件内容如下:
执行 make 命令,生成hello.ko文件。 执行 sudo insmod hello.ko 命令,安装该模块。 执行 lsmod 命令,查看安装的模块。就会看到第一行的就是hello模块。
但是,如果想自定义模块名称为 xmodule ,而不是默认的 hello ,如何实现呢?方法如下: 在Makefile中重命名obj-m并将obj-m的依赖关系设置为原始模块(hello) 修改后的Makefile文件内容如下:
将obj-m设置为 xmodule .o,并使 xmodule .o依赖于 hello .o. 执行 make 命令后,生成 xmodule .ko, 而不是 hello .ko, 安装命令: sudo insmod xmodule.ko 查看命令: lsmod ,就会看到被安装名为 xmodule 的模块。

如何在Windows下编译Linux内核

内核配置完成,输入make命令即可开始编译内核。如果没有修改Makefile文件并指定ARCH和CROSS_COMPILE参数,则须在命令行中指定:
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
目前大多数主机都是多核处理器,为了加快编译进度,可以开启多线程编译,在make的时候加上“-jN”即可,N的值为处理器核心数目的2倍。例如对于I7 4核处理器,可将N设置为8:
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j8
采用多线程编译的优点是能加快编译进度,。具体可以参照ZLG《嵌入式Linux开发教程(下册)》第1章。

网站数据信息

"linux内核编译,linux内核模块编译-通过Makefile重命名.ko文件名和模块名"浏览人数已经达到24次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux内核编译,linux内核模块编译-通过Makefile重命名.ko文件名和模块名的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!