ubuntu内核编译需要多长时间

在分析Linux内核源码的过程中,我想如果能够修改内核源码并运行修改后的内核就太好了。
恐怕第一次修改只会打印“Hello,WangJiangkun”这一行。
“发射时!”,这绝对让我高兴。
要成功编译修改后的内核,首先今天要编译内核。
为了了解完整的故事,今天的起点将是源代码机。
1.在裸机上安装最小的Debian系统。
为了尽可能清晰地了解编译内核所需的组件,请在安装系统时仅安装最低限度的系统,然后使用apt-get安装所需的所有内容。
使用网络安装,安装过程中出现软件选择界面时不要选择任何选项,这样安装的系统最小。
要使用ssh进行远程登录,完成最小系统安装后,需要安装ssh服务器并设置静态IP地址(该IP地址是Debian安装过程中通过DHCP获取的)。
2.安装ssh服务器apt-getinstallssh3。
设置静态IP地址并修改/etc/network/interfaces.conf文件蓝色部分被添加,红色部分被遮挡,黑色部分保持不变。
#此文件描述了系统上可用的网络接口#以及如何启用它们。
有关详细信息,请参阅接口(5)。
#Theloifacenetworkinterfaceautoloifaceloinetloopback#Theprimarynetworkinterfaceallow-hotplugeth0#WangJiankuncommentedthefollowingline#ifaceeth0inetdhcp#WangJiankunaddedthefollowinglinesifaceeth0inetstatica地址192.168.1.251netmask255.255.255.0broadcast192.168.1.255network192.168.1.0gateway192.168.1.1重新启动系统后,更改将生效。
4.通过wgetadmin@wangjk:~/kernel$wgethttp://kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz25下载Linux内核源代码并解压文件。
Linux-2.6.19.tar.bz2administrator@wa。
ngjk:~/kernel$tarjxflinux-2.6.19.tar.bz2tar:bzip2:Cannotexec:Nosuchfileordirectorytar:Errorisnotrecoverable:exitingnowtar:Childreturnedstatus2tar:Errorexitdelayedfrompreviouserrorsadministrator@wangjk:~/kernel$好像没有包bzip2,那就安装一下:apt-getinstallbzip26安装Debiankernel-package软件包。
安装kernel-package软件包时,最好使用命令:apt-getbuild-depkernel-package,而不是使用命令:apt-getinstallkernel-package最后安装的软件包是第一个软件包的子集。
使用后者安装kernel-package软件包后,会出现一个头文件。
运行makemenuconfig命令时未发现错误,如下所示:admin@。
wangjk:~/kernel/linux-2.6.19$makemenuconfigHOSTCCscripts/basic/fixdepscripts/basic/fixdep.c:105:23:错误:sys/types.h:没有这样的文件或目录scripts/basic/fixdep.c:106:22:错误:sys/stat.h:否suchfileordirectoryscripts/basic/fixdep.c:107:22:error:sys/mman.h:Nouchfileordirectoryscripts/basic/fixdep.c:108:20:error:unistd.h:没有这样的fileordirectoryscripts/basic/fixdep.c:109:19:错误:fcntl.h:否suchfileordirectoryscripts/basic/fixdep.c:110:20:error:string.h:没有这样的fileordirectoryscripts/basic/fixdep.c:111:20:error:stdlib.h:Nouchfileordirectoryscripts/basic/fixdep.c:112:19:error:stdio.h:Nouchfileordirectory主要是因为libc6-dev包没有安装。
因此,即使您使用apt-getinstallkernel-package,您仍然必须使用apt-getbuild-depkernel-package。
它不像使用一次apt-getbuild-depkernel-package那样方便。
7、安装libncurses5-dev软件包以支持makemenuconfig。
使用apt-getbuild-depkernel-package安装内核包后,运行makemenuconfig仍然给出错误消息,如下所示:admin@wangjk:~/kernel/linux-。
2.6.19百万美元akemenuconfigHOSTCCscripts/kconfig/lxdialog/checklist.oInfileincludedfromscripts/kconfig/lxdialog/checklist.c:24:scripts/kconfig/lxdialog/dialog.h:32:20:error:curses.h:No这样的文件或目录中的文件包含来自scripts/kconfig/lxdialog/checklist.c:24:scripts/kconfig/lxdialog/dialog.h:97:error:expectedspecifier-qualifier-listbe前'chtype'脚本/kconfig/lxdialog/dialog.h:187:错误:预期')'之前'*'tokenscripts/kconfig/lxdialog/dialog.h:193:错误:预期')'之前'*'tokenscripts/kconfig/lxdialog/dialog.h:195:错误:预期')'之前'*'tokenscripts/kconfig/lxdialog/dialog.h:196:错误:预期')'之前'*'tokenscripts/kconfig/lxdia日志/dialog.h:197:错误:预期')'之前'*'tokenscripts/kconfig/lxdialog/dialog.h:198:错误:预期')'之前'*'tokenscripts/kconfig/lxdialog/dialog.h:200:错误:预期')'之前'*'tokenscripts/kconfig/lxdialog/checklist.c:31:错误:预期')'之前'*'tokenscripts/kconfig/lxdialog/checklist.c:59:error:expected')'before'*'tokenscripts/kconfig/lxdialog/checklist.c:95:error:expected')'before'*'token[省略下一部分]原来最小系统不支持图形只需安装libncurses5-开发。
8.将系统配置文件复制到内核目录cp/boot/config-2.6.18-6-686./.config9.虽然运行makemenuconfig会复制原来的系统配置文件,但如果所有配置都正确,仍然会出现问题发生。
使用默认配置。
在我的系统上,当加载文件系统时它就会死掉,所以我仍然需要做必要的设置,主要用于更改scsi。
将部件和SATA编译到内核中,而不是将它们编译成模块,如下所示:DeviceDrivers--->SerialATA(prod)和ParallelATA(实验)驱动程序--->SCSIdevicesupport--->从两个部分编译所有蓝色级联。
内核的选项(实际上并不是所有必需的,但为了简单起见,我现在就这样做)。
10.安装fakeroot软件包。
11.使用fakerootmake-kpkg--initrd--revision=custom.1.0kernel_image12编译内核。
安装内核wangjk:/home/administrator/kernel#dpkg-ilinux-image-2。
.6.19_custom.1.0_i386.deb选择之前选择的软件包linux-image-2.6.19(读取数据库...当前安装的17679个文件和目录。
)解压linux-image-2.6.19(来自linux-image-2.6).19_custom.1.0_i386.deb)...完成。
设置linux-image-2.6.19(custom.1.0)...运行depmod.Findingvalidramdiskcreators.Usingmkinitramfs-kpkgtobuildtheramdisk.Runningpostinsthookscript/sbin/update-grub.Youshouldn'tcall/sbin/update-grub.PLeasecall/usr/sbin/update-grub代替!正在搜索GRUB安装目录...找到:/boot/grub正在搜索默认文件...找到:/boot/grub/defaultTestingforanexistingGRUBmenu.lstfile...找到:/boot/grub/menu.lstSearchingforsplashimage...nonefound,跳过。
.找到内核:/boot/vmlinuz-2.6.19找到内核:/boot/vmlinuz-2.6.18-6-686Update/boot/grub/menu.lst...done13。
重启系统加载新内核,查看版本号admin@wangjk:~$cat/。
procedure/versionLinuxversion2.6.19(root@wangjk)(gccversion4.1.220061115(pre-release)(Debian4.1.1-21))#1SMPThuMay721:52:10CST2009administrator@wangjk:~$可以看到这是我编译的内核。
本文摘自CSDN博客。
转载时请注明出处:http://blog.csdn.net/jiankun_wang/archive/2009/05/04/4147806.aspx------------。
-------------------------Ubuntu不自带Linux内核源代码,需要自行下载安装。
1、查看自己的uname-r2内核版本,查看源码中的内核源码类表apt-cachesearchlinux-source3,下载并安装内核源码sudoapt-getinstalllinux-source-2.6.27//我选择的是这个,自己看看Dothisis4,稍等...下载完成后,会出现一个压缩包,名为linux-source-2.6.xx.tar.bz2。
5、解压包tarjxvflinux-source-2.6.27.tar.bz2//查看您的版本。
解压后会创建源码目录/usr/src/linux-source-2.6.276。
输入源代码后。
目录,配置makeoldconfig7文件,生成make8内核,疯狂等待大约一个小时9,编译makemodules10模块,安装makemodules_install模块就这样了准备好!^_^来说说Makefile吧$(MAKE)-C$(KERNELDIR)M=$(PWD)modules_install#PWD当前工作目录变量obj-m:=hello.o#hello.o就是你要的驱动生成,以后可以自己改KERNELDIR:=/lib/modules/2.6.27-7-generic/build#这里不要复制,写你自己的版本。
该目录执行PWD内核源代码目录:=$(shellpwd)#将当前工作目录分配给PWD模块:$(MAKE)-C$(KERNELDIR)M=$(PWD)modulesmodules_install:下面是一个经典的例子“你好世界!”。
你自己做吧。
#include#includeMODULE_LICENSE("DualBSD/GPL");staticinthello_init(void){printk(KERN_ALERT"你好,世界!\n");return0;}staticvoidhello_exit(void){printk(KERN_ALERT"再见,残酷世界!\n");}module_init(hello_init);module_exit(hello_exit);本文摘自CSDN博客。
转载时请注明出处:http://blog.csdn.net/unikingest/archive/2009/03/10/3977747.aspx---------。
--------------------------------------------------------------------------------------我更改了这篇文章并添加了一些评论http://blog.theosoft.net/article.asp?id=57第一次使用。
LinuxKernel内容是编译内核。
我用的是Ubuntu,和其他Linux有很多地方不一样,所以我把我的过程记录下来,方便以后使用。
首先,当然,如果需要的话,请下载内核源代码。
最新的内核,您可以访问ftpkernel.org。
当然,内部速度可能会很慢。
如果您是教育网用户,可以从上海交通大学镜像站下载。
地址:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/。
它没有最新的内核(更新需要一些时间)。
==============================================================注意。
如果你正在编译Ubuntu自带的内核,你需要做的就是在Synaptic中搜索linuxsouce并使用ubuntupatch下载内核源代码。
sudoapt-getsourcelinux-source-2.6.27======================================================================注意。
我从linux-2.6.19.2.tar.gz下载了最新版本。
下载之后,当然是解压。
但是,它无法直接编译,因为标准的Ubuntu安装缺少必要的组件。
打开终端并输入命令:sudo-iaapt-getinstallbuild-essentialkernel-packagelibncurses5-dev然后进入Synapt并安装所有软件包,从ncurses开始,这样就可以开始编译内核了。
首先做以下命令复制当前内核配置文件。
cp/boot/config-`uname-r`./.config然后makemenuconfig选择“LoadanAlternateConfigurationFile”,然后选择刚刚复制的.config文件作为配置文件。
然后就可以了。
当该过程完成并决定退出时,系统将提示您询问“是否要保存新的内核配置?”只需选择“是”。
下一步是编译。
输入命令:make。
您还可以将编译任务拆分为两个线程来执行。
只需输入:make-j2。
编译通常需要1到1.5小时,具体取决于处理器性能。
编译完成后,运行安装。
:makemodule_installmakeinstall然后添加启动信息,但是安装前还需要安装initramfs-tools组件。
安装后输入:mkinitramfs-o/boot/initrd.img-2.X.XX/lib/modules/2.X.XX==。
==================================================================注解后面的参数不是必须的,否则启动新内核时会出现错误:WARNING:Failedtoopendirectory/lib/modules/2.6.15.7-ubuntu1:NosuchfileordirectoryFATAL:无法打开/lib/modules/2.6.15.7-ubuntu1/modules.dep。

tempforwriting:没有这样的文件或目录=========================================================注意。
最后打开/boot/grub/menu.lst,在####EndDefaultOptions##中添加如下两段:titleUbuntu,kernel2.6.19.2root(hd0,4)kernel/vmlinuz-2.6.19.2root=/dev/hdd6initrd/initrd.img-2.6.19.2savedefaultboottitleUbuntu,kernel2.6.19.2(recoverymode)root(hd0,4)kernel/vmlinuz-2.6.19.2root=/dev/hdd6rosingleinitrd/initrd.img-2.6.19.2boot注意root字段并且内核应该被编写为模仿Menu.lst文件下面的现有内容。
接下来是(hd0,4),那么你也写(hd0,4),然后你写root=/dev/hdd6,你也写root=/dev/hdd6,但是内核版本号变成了当前编译的版本号。
然后重新启动计算机并选择要在GRUB中运行的新内核。
如果启动失败,您可以重新启动并选择旧内核。

大家编译一个x86的Linux内核需要多长时间?

编译时添加-jXX参数会导致CPU核心数+1。
可以加快编译速度。
在我的笔记本T5450上编译需要10分钟。
我的内核是为机器量身定制的。
没有裁剪的全功能内核似乎花了我30分钟。