如何给linux安装新内核?
一、获取内核源码
二、解压内核源码
首先以root帐号登录,然后进入/usr/src子目录。如果用户在安装linux时,安装了内核的源代码,则会发现一个linux-x.y.z的子目录。该目录下存放着内核x.y.z的源代码。此外,还会发现一个指向该目录的链接linux。删除该连接,然后将新内核的源文件拷贝到/usr/src目录中,并解压:
#tarzxvflinux-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-rfasmlinux
#ln-s/usr/src/linux/include/asm-i386asm
#ln-s/usr/src/linux/include/linuxlinux
#ln-s/usr/src/linux/include/scsiscsi
删除源代码目录中残留的.o文件和其它从属文件。
#cd/usr/src/linux
#makemrproper
三.增量补丁
有时不需要完全重新安装,只需打增量补丁,类似升级,在内核源码树根目录运行:
patch-p1<../patch-x.y.z
四.内核源码树目录:
arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位pc相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(pci总线)和power(cpu相关状态)。
block:部分块设备驱动程序。
crypto:常用加密和散列算法(如aes、sha等),还有一些压缩和crc校验算法。
documentation:关于内核各部分的通用解释和注释。
drivers:设备驱动程序,每个不同的驱动占用一个子目录。
fs:各种支持的文件系统,如ext、fat、ntfs等。
include:头文件。其中,和系统相关的头文件被放置在linux子目录下。
init:内核初始化代码(注意不是系统引导代码)。
ipc:进程间通信的代码。
kernel:内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在arch/*/kernel目录下。
lib:库文件代码。
mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。
net:网络相关代码,实现了各种常见的网络协议。
scripts:用于配置内核文件的脚本文件。
security:主要是一个selinux的模块。
sound:常用音频设备的驱动程序等。
usr:实现了一个cpio。
在i386体系下,系统引导将从arch/i386/kernel/head.s开始执行,并进而转移到init/main.c中的main()函数初始化内核。
五.配置内核
#cd/usr/src/linux
内核配置方法有三种:
(1)命令行:makeconfig
(2)菜单模式的配置界面:makemenuconfig
(3)xwindow:makexconfig
linux的内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。由于内核的配置选项非常多,本文只介绍一些比较重要的选项。
1、codematurityleveloptions(代码成熟度选项)
promptfordevelopmentand/orincompletecode/drivers(config_experimental)如果用户想要使用还处于测试阶段的代码或驱动,可以选择“y”。如果想编译出一个稳定的内核,则要选择“n”。
2、processortypeandfeatures(处理器类型和特色)
(1)、processorfamily(386,486/cx486,586/k5/5x86/6x86,pentium/k6/tsc,ppro/6x86mx)选择处理器类型,缺省为ppro/6x86mx。
(2)、maximumphysicalmemory(1gb,2gb)内核支持的最大内存数,缺省为1g。
(3)、mathemulation(config_math_emulation)协处理器仿真,缺省为不仿真。
(4)、mtrr(memorytyperangeregister)support(config_mtrr)
选择该选项,系统将生成/proc/mtrr文件对mtrr进行管理,供xserver使用。
(5)、symmetricmulti-processingsupport(config_smp)选择“y”,内核将支持对称多处理器。
3、loadablemodulesupport(可加载模块支持)
(1)、enableloadablemodulesupport(config_modules)选择“y”,内核将支持加载模块。
(2)、kernelmoduleloader(config_kmod)选择“y”,内核将自动加载那些可加载模块,否则需要用户手工加载。
4、generalsetup(一般设置)
(1)、networkingsupport(config_net)该选项设置是否在内核中提供网络支持。
(2)、pcisupport(config_pci)该选项设置是否在内核中提供pci支持。
(3)、pciaccessmode(bios,direct,any)该选项设置linux探测pci设备的方式。选择“bios”,linux将使用bios;选择“direct”,linux将不通过bios;选择“any”,linux将直接探测pci设备,如果失败,再使用bios。
(4)parallelportsupport(config_parport)选择“y”,内核将支持平行口。
5、plugandplayconfiguration(即插即用设备支持)
(1)、plugandplaysupport(config_pnp)选择“y”,内核将自动配置即插即用设备。
(2)、isaplugandplaysupport(config_isapnp)选择“y”,内核将自动配置基于isa总线的即插即用设备。
6、blockdevices(块设备)
(1)、normalpcfloppydisksupport(config_blk_dev_fd)选择“y”,内核将提供对软盘的支持。
(2)、enhancedide/mfm/rlldisk/cdrom/tape/floppysupport(config_blk_dev_ide)选择“y”,内核将提供对增强ide硬盘、cdrom和磁带机的支持。
7、networkingoptions(网络选项)
(1)、packetsocket(config_packet)选择“y”,一些应用程序将使用packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。
(2)、networkfirewalls(config_firewall)选择“y”,内核将支持防火墙。
(3)、tcp/ipnetworking(config_inet)选择“y”,内核将支持tcp/ip协议。
(4)theipxprotocol(config_ipx)选择“y”,内核将支持ipx协议。
(5)、appletalkddp(config_atalk)选择“y”,内核将支持appletalkddp协议。
8、scsisupport(scsi支持)
如果用户要使用scsi设备,可配置相应选项。
9、networkdevicesupport(网络设备支持)
networkdevicesupport(config_netdevices)选择“y”,内核将提供对网络驱动程序的支持。
10、ethernet(10or100mbit)(10m或100m以太网)
在该项设置中,系统提供了许多网卡驱动程序,用户只要选择自己的网卡驱动就可以了。此外,用户还可以根据需要,在内核中加入对fddi、ppp、slip和无线lan(wirelesslan)的支持。
11、characterdevices(字符设备)
(1)、virtualterminal(config_vt)选择“y”,内核将支持虚拟终端。
(2)、supportforconsoleonvirtualterminal(config_vt_console)
选择“y”,内核可将一个虚拟终端用作系统控制台。
(3)、standard/generic(dumb)serialsupport(config_serial)
选择“y”,内核将支持串行口。
(4)、supportforconsoleonserialport(config_serial_console)
选择“y”,内核可将一个串行口用作系统控制台。
12、mice(鼠标)
ps/2mouse(aka"auxiliarydevice")support(config_psmouse)如果用户使用的是ps/2鼠标,则该选项应该选择“y”。
13、filesystems(文件系统)
(1)、quotasupport(config_quota)选择“y”,内核将支持磁盘限额。
(2)、kernelautomountersupport(config_autofs_fs)选择“y”,内核将提供对automounter的支持,使系统在启动时自动mount远程文件系统。
(3)、dosfatfssupport(config_fat_fs)选择“y”,内核将支持dosfat文件系统。
(4)、iso9660cdromfilesystemsupport(config_iso9660_fs)
选择“y”,内核将支持iso9660cdrom文件系统。
(5)、ntfsfilesystemsupport(readonly)(config_ntfs_fs)
选择“y”,用户就可以以只读方式访问ntfs文件系统。
(6)、/procfilesystemsupport(config_proc_fs)/proc是存放linux系统运行状态的虚拟文件系统,该项必须选择“y”。
(7)、secondextendedfssupport(config_ext2_fs)ext2是linux的标准文件系统,该项也必须选择“y”。
14、networkfilesystems(网络文件系统)
(1)、nfsfilesystemsupport(config_nfs_fs)选择“y”,内核将支持nfs文件系统。
(2)、smbfilesystemsupport(tomountwfwsharesetc.)(config_smb_fs)
选择“y”,内核将支持smb文件系统。
(3)、ncpfilesystemsupport(tomountnetwarevolumes)(config_ncp_fs)
选择“y”,内核将支持ncp文件系统。
15、partitiontypes(分区类型)
该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择“y”即可。
16、consoledrivers(控制台驱动)
vgatextconsole(config_vga_console)选择“y”,用户就可以在标准的vga显示方式下使用linux了。
17、sound(声音)
soundcardsupport(config_sound)选择“y”,内核就可提供对声卡的支持。
18、kernelhacking(内核监视)
magicsysrqkey(config_magic_sysrq)选择“y”,用户就可以对系统进行部分控制。一般情况下选择“n”。
六、编译内核
(一)、建立编译时所需的从属文件
#cd/usr/src/linux
#makedep
(二)、清除内核编译的目标文件
#makeclean
(三)、编译内核
#makezimage
内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件zimage。如果编译的内核很大的话,系统会提示你使用makebzimage命令来编译。这时,编译程序就会生成一个名叫bzimage的内核映像文件。
(四)、编译可加载模块
如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。
#makemodules
#makemodelus_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-fsystem.map
#ln-ssystem.map-2.3.14system.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 kernel (linux内核)怎么安装?
1、下载新内核源码:到金太阳下载官网www.kernel.org,下载最新版本linux内核,保存到/usr/src/kernels目录,大约54mb。
2、#cd/usr/src/kernels
3、#tarjvxflinux-2.6.31.5.tar.bz2
4、进入系统原内核目录,把其中的隐藏文件.config复制到新内核目录中。
5、cd进入新内核目录,然后执行#makeoldconfig 此时所有提示均按回车,选项提示都默认。
6、#makexconfig此时弹出一个内核配置窗口,里面全是英文,我看不懂,干脆就直接把这个窗口关掉,继续往下做。
7、#makebzimage&&makemodules&&makemodules_install&&makeinstall第七步编译时间比较长,要30到50分钟不等,要看机器情况了。
8、#uname-r查看内核版本,完成上面步骤后就可以重启系统了,启动时会在grub菜单里出现新内核选项了。 此方法安装新内核后同时也会保留旧内核,启动时,可以在新老内核间选择,相当的实用
如何修改linux内核源码并调试?
将修改的代码添加进内核树,然后修改makefile和config文件,从新编译。