DM8168处理器Linux内核编译方法

合集下载

编译内核的步骤

编译内核的步骤

如何编译Linux内核分类:Unix/Linux 2009-02-22 17:09 48483人阅读评论(15) 收藏举报linux内核linuxnetworkingnetworkfilesystemsterminal内核,是一个操作系统的核心。

它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。

新的内核修订了旧内核的bug,并增加了许多新的特性。

如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

本文将以RedHat Linux 6.0(kernel 2.2.5)为操作系统平台,介绍在Linux上进行内核编译的方法。

一、下载新内核的源代码目前,在Internet上提供Linux源代码的站点有很多,读者可以选择一个速度较快的站点下载。

笔者是从站点上下载了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目录下的对应目录中。

linux内核编译教程

linux内核编译教程

linux内核编译教程Linux内核是开源操作系统Linux的核心部分,负责管理计算机的硬件资源和提供系统调用等基本功能。

编译Linux内核是根据自己的需求定制Linux系统的一个重要步骤。

本文将介绍如何编译Linux内核。

首先,要开始编译Linux内核,需要下载最新的内核源代码。

可以在Linux官网的下载页面找到相应的内核版本。

将源代码下载到本地后,解压缩到一个合适的位置。

接下来,需要安装一些必要的依赖包。

不同的Linux发行版可能有不同的依赖包名称,可以通过包管理器进行安装。

例如,对于Debian/Ubuntu系统,可以使用apt-get命令安装依赖包。

常见的依赖包包括gcc编译器、make工具、flex和bison等。

在安装完依赖包之后,进入解压缩后的内核源码目录。

可以通过cd命令切换到该目录。

在目录中可以找到一个名为.config 的文件,这是内核的配置文件。

可以通过复制现有的配置文件或者使用make menuconfig等命令进行配置。

配置完成后,可以开始编译内核了。

在内核源码目录中运行make命令,编译过程可能需要一些时间。

可以使用make命令的参数来设置编译的选项,例如使用-j参数指定并行编译的进程数,加快编译速度。

编译完成后,可以使用make modules_install命令安装内核模块。

然后,使用make install命令安装编译好的内核。

这些命令可能需要root权限才能执行。

安装完成后,需要更新系统的引导程序以启动新编译的内核。

具体的操作步骤可以根据不同的引导程序进行设置。

一般来说,需要编辑/boot/grub/grub.cfg文件,添加新内核的引导项。

最后,重启计算机,选择新编译的内核启动。

如果一切正常,系统将会以新内核启动。

在编译Linux内核的过程中,可能会遇到各种问题。

可以通过查找相关文档、咨询论坛或者向开发者社区寻求帮助来解决问题。

总之,编译Linux内核是一个复杂的过程,但通过理解以上步骤和不断实践,可以逐渐掌握这一技能,并根据自己的需求定制出适合的Linux系统。

DM8168的U-Boot编译

DM8168的U-Boot编译

DM8168的U-Boot编译Revision HistoryDraft Date Revision No. Description 2016/07/04 V1.0 1.初始版本。

目录1U-Boot说明和安装源码 (3)1.1DM8168的u-boot说明 (3)1.2安装u-boot (3)2u-boot.noxip.bin.spi编译 (4)2.1清理U-Boot (4)2.2配置U-Boot (4)2.3编译U-Boot (4)3u-boot.min.sd编译 (5)3.1清理U-Boot (5)3.2配置U-Boot (5)3.3编译U-Boot (5)4u-boot.bin编译 (6)4.1清理U-Boot (6)4.2配置U-Boot (6)4.3编译U-Boot (7)1 U-Boot说明和安装源码1.1DM8168的u-boot说明DM8168可以通过boot[4-0]模式拨码开关,进行启动方式选择。

每种启动模式也有不同顺序的启动。

这里我们推荐两种模式:(1) spi启动产品模式下,我们推荐使用spi-flash作为引导程序,把u-boot.noxip.bin.spi和uImage,烧写到spi-flash里面,文件系统烧写到nand-flash。

(2) mmc启动在产品调试阶段,一般使用mmc启动,会更加地方便,这时u-boot-min(MLO),u-boot.bin 和uImage都会保存到sd卡的boot分区,文件系统会保存到sd卡的root分区。

u-boot镜像文件说明:u-boot.noxip.bin.spi spi flash启动对应u-boot文件;u-boot.min.sd SPL对应MLO文件,sd启动的第一阶段;u-boot.bin u-boot的第二阶段,sd启动主功能。

u-boot.noxip.bin.spi、MLO(u-boot.min.sd)和u-boot.bin是依赖不同的配置编译生成的,为加以区分,将其分别称为u-boot.noxip.bin.spi、MLO(u-boot.min.sd)和u-boot.bin编译。

新手指南 Linux编译内核操作流程

新手指南 Linux编译内核操作流程

新手指南Linux编译内核操作流程[日期:2009-12-07] 来源: 作者:北南南北提要:编译内核主要是通过内核实现某些功能,比如iptables 需要内支持;所有的硬件的支持也是通过内核实现的;本文只是简单的给初学者讲一下编译内核的流程;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++正文++++++++++++++++++++++++++++++++++++++++++++++++++++++++++一、为什么要编译内核;有时我们为了实现某些功能,比如对iptables的防火墙有些需要内核支持;还有实现一些硬件的支持等,这时我们需要重编内核;二、内核源码版本的选择;如果发行版本提供内核源码,最好还是用发行版本提供的;比如Fedora 4.0 提供了很多版本的内核源码;我们安装好后,他自带的配置文件大多能满足我们的需要,对于新手来说,根据自带的内核的配置文件.config ,我们也能学到一点如何配置内核。

也没有什么难的,熟能生巧罢了;如果从 下载最新稳定版本的内核也是可以的;三、内核源码安装或解压;对于Fedora Core 4.0 来说,内核源码是放在/usr/src/kernels 目录中;如果通过在线升级内核,也是放在这个目录中;如果您的系统中的/usr/src/kernels/ 中没有内容,说明您没有安装内核的源码包kernel-devel 软件包;您可以通过软件包管理器来补装,请参考《Fedora/ RedHat软件包管理指南》如果您用Fedora Core 4.0 ,我建议您在保留老内核的基础上,在线下载最新版本的内核kerenl-devel 和对应版本的kernel 或者从 下载,有时可能新的kerenl 已经解决了您所面对的问题,这时就没有必要编译内核了;如果您是通过在线安装的内核源码包,比如通过apt+synaptic 或者yum 安装的,内核源码会被放到/usr/src/kernel 下的目录中,您要进入相对应的目录进行编译;在线更新软件包,请参考《Fedora/ RedHat软件包管理指南》,推荐apt+synaptic 工具;如果您是是下载kernel 和kernel-devel 的rpm 包,可以通过来安装;[root@localhost beinan]# rpm -ivh kernel*.rpm如果您是从 下载的类似linux-2.6.13.tar.bz2 或者linux-2.6.13.tar.gz的,您要把下载下来的文件移到/usr/src 目录中解压;然后进入解压的目录中进行配置和编译;[root@localhost beinan]# mv linux-2.6.13.tar.bz2[root@localhost beinan]# cd /usr/src/[root@localhost src]# tar jxvf linux-2.6.12.3.tar.bz2提示:本文以linux-2.6.12.3为例,其实通过发行版的升级版的kernel-devel 和从 下载下来的差不多,大同小异;不同的是通过在线升级的rpm格式的内核源码包,有配置文件.config 可以参考;安装到的目的地是/usr/src/kernel 对FC 4.0来说;如果您要高编译和配置内核,四、内核的配置;1、进入目录执行make mrproper ,对于从 下载而来的tar.bz格式的源码包;[root@localhost src]# cd linux-2.6.12.3/[root@localhost linux-2.6.12.3]#[root@localhost src]# cd linux-2.6.12.3/[root@localhost linux-2.6.12.3]# make mrproper[root@localhost linux-2.6.12.3]# make menuconfig对于Fedora Core 4.0 ,如果您是通过在线安装的kernel和kernel-devel 新版本的包,比如是2.6.12-1.1398_FC4-i686,你可以直进入/usr/src/kernel/相应的目录中直接执行make menuconfig ;利用发行版本提供的 .config 来配置,这样方便点。

Linux内核编译过程详解

Linux内核编译过程详解

内核升级前的准备工作:Linux系统进行内核升级或定制内核时需要安装GCC编译工具、make编译器,同时变异内核需要root权限。

安装GCC编译环境参考:/rhelinux/248.html操作系统:RHEL 5.5开始安装:按照以下顺序安装所需要的包就可以完成GCC的安装了1. rpm -ivh kernel-headers-2.6.18-194.el5.i386.rpm2. rpm -ivh glibc-headers-2.5-49.i386.rpm3. rpm -ivh glibc-devel-2.5-49.i386.rpm4. rpm -ivh libgomp-4.4.0-6.el5.i386.rpm5. rpm -ivh gcc-4.1.2-48.el5.i386.rpm6. rpm -ivh libstdc++-devel-4.1.2-48.el5.i386.rpm7. rpm -ivh gcc-c++-4.1.2-48.el5.i386.rpm8. rpm -ivh ncurses-5.5-24.20060715.i386.rpm9. rpm -ivh ncurses-devel-5.5-24.20060715.i386.rpm注意:在升级编译完内核,重启后提示如下错误信息:RedHat nash Version 5.1.19.6 startingrver(2.6.33.3)mount: could not find filesystem …/dev/root‟setuproot: moving /dev failed: No such file or directorysetuproot: error mounting /proc: No such file or directorysetuproot: error mounting /sys: No such file or directoryswitchroot: mount failed: No such file or directoryKernel panic – not syncing: Attempted to kill init![Linux-initrd @ 0x1fc37000,0x228585 bytes]于是在网上找了很多,也尝试了很多加模块、重编译了N次、改fstab等方法,都不行。

linux内核编译步骤

linux内核编译步骤

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厂家站点或者下载。

2、清除从前编译内核时残留的.o 文件和不必要的关联cd /usr/src/linuxmake mrproper3、配置内核,修改相关参数,请参考其他资料在图形界面下,make xconfig;字符界面下,make menuconfig在内核配置菜单中正确设置个内核选项,保存退出4、正确设置关联文件make dep5、编译内核对于大内核(比如需要SCSI支持),make bzImage对于小内核,make zImage6、编译模块make modules7、安装模块make modules_install8、使用新内核把/usr/src/linux/arch/i386/boot/目录内新生成的内核文件bzImage/zImage拷贝到/boot目录,然后修改/etc/lilo.conf文件,加一个启动选项,使用新内核bzImage/zImage启动。

格式如下:boot=/dev/hdamap=/boot/mapinstall=/boot/boot.bprompttimeout=50lineardefault=linux-new ### 告诉lilo缺省使用新内核启动linux ###append="mem=256M"image=/boot/vmlinuz-2.2.14-5.0label=linuxread-onlyroot=/dev/hda5image=/boot/bzImage(zImage)label=linux-newread-onlyroot=/dev/hda5保留旧有的启动选项可以保证新内核不能引导的情况,还可以进入linux进行其他操作。

linux内核编译流程

linux内核编译流程

linux内核编译流程Linux内核编译流程一、概述Linux内核是操作系统的核心组件,负责管理计算机的硬件和软件资源,提供各种系统服务。

编译Linux内核是将源代码转换为可执行文件的过程,是定制和优化内核的重要手段。

本文将介绍Linux 内核的编译流程,帮助读者了解内核编译的基本步骤和注意事项。

二、准备工作在编译Linux内核之前,需要进行一些准备工作。

首先,确保系统中已经安装了必要的开发工具,如编译器、链接器等。

其次,获取Linux内核的源代码,可以从官方网站或镜像站点下载最新版本的源代码包。

解压源代码包后,进入源代码目录,即可开始编译。

三、配置内核在进行内核编译之前,需要对内核进行配置。

配置内核的目的是选择需要编译进内核的功能和驱动程序,以及设置相应的参数。

Linux 内核提供了多种配置工具,如make menuconfig、make xconfig 等。

这些工具提供了图形化或文本界面,方便用户进行配置。

通过这些工具,可以选择需要的功能和驱动,也可以设置调试选项和优化参数。

四、编译内核配置完成后,即可开始编译内核。

编译内核的过程是将源代码转换为可执行文件的过程,包括预处理、编译、汇编和链接等步骤。

在Linux内核中,使用make命令进行编译。

make命令会读取Makefile文件,根据其中的规则和依赖关系,自动执行相应的编译命令。

五、安装内核编译完成后,即可安装内核。

安装内核的目的是将编译生成的可执行文件和相关文件复制到系统的相应位置,使系统能够加载和运行新内核。

在Linux内核中,使用make install命令进行安装。

make install命令会将内核文件复制到/boot目录,并更新引导程序的配置文件,以使系统能够启动新内核。

六、配置引导程序安装完成后,需要配置引导程序,使系统能够加载和启动新内核。

引导程序是在计算机启动时运行的程序,负责加载操作系统内核并启动系统。

在Linux系统中,常用的引导程序有GRUB、LILO等。

内核编译的步骤

内核编译的步骤

内核编译的步骤内核编译是指将Linux内核源代码转换为可执行的二进制文件的过程。

本文将介绍内核编译的详细步骤,以帮助读者了解并掌握这一过程。

第一步:获取内核源代码要进行内核编译,首先需要获取Linux内核的源代码。

可以通过官方网站或开源社区下载最新版本的内核源代码,也可以从版本控制系统中获取。

第二步:配置内核在进行内核编译之前,需要对内核进行配置。

配置内核的目的是根据具体需求选择合适的功能和选项。

可以使用make menuconfig、make xconfig或make config等命令进行配置。

第三步:编译内核配置完成后,就可以开始编译内核了。

在终端中切换到内核源代码目录,并执行make命令。

编译过程可能需要一段时间,取决于计算机性能和内核源代码的大小。

第四步:安装内核编译完成后,可以将生成的内核安装到系统中。

可以使用make install命令或手动将编译生成的内核文件复制到/boot目录,并修改引导加载程序的配置文件。

第五步:更新引导加载程序安装完内核后,需要更新引导加载程序,使其能够启动新安装的内核。

可以使用grub2-mkconfig、grub-mkconfig、update-grub 等命令更新引导加载程序的配置文件。

第六步:重启系统完成内核编译和引导加载程序的配置后,需要重启系统以使新内核生效。

在重启过程中,选择新安装的内核并等待系统启动。

第七步:验证新内核系统重启后,可以通过执行uname -r命令来验证新内核是否成功安装。

如果显示的内核版本是刚刚安装的新内核版本,则说明内核编译成功。

第八步:配置内核模块除了编译内核本身,还可以编译和加载内核模块。

内核模块是一种动态加载的代码,可以在运行时添加或删除。

可以使用make modules和make modules_install命令编译和安装内核模块。

第九步:定制内核在掌握了基本的内核编译步骤后,还可以根据具体需求进行内核定制。

可以通过配置内核选项和功能来满足特定的需求,例如优化性能、减小内核体积等。

DM8168心得之从SD卡启动linux系统

DM8168心得之从SD卡启动linux系统

DM8168心得之从SD卡启动linux系统/******************************************************************* author: 卢浩* time: 12.03.08* environment: ubuntu10.04LTS +TI DM8186* kernel version: linux-2.6.37******************************************************************/SD卡的在上篇文章里面已经制作好了三分区。

所以这里就可以拿来直接用了我们把MLO,uboot.bin和uImage拷贝到SD里面,这几个文件在uboot的制作里面有介绍,uImage没介绍,这里顺便说以下,基于TI的linux-2.6.37的源代码,用默认配置然后编译生成uImage这里面的boot.noxip.bin 和rd-jffs2.bin是我烧写到nand用文件,这个在用sd卡烧写到nand 里面会用到,到时候再介绍。

然后文件系统这边就直接解压BSP包里面的把解压得到的文件系统拷贝到sd卡的第二分区里面rootfs里面。

设置拨码开关为1110100000,spi和nand的拨码开关要关闭接下来我们插入SD卡。

打开电源,按空格键进入uboot状态我们需要改变一些变量从SD启动Setenv bootcmd 'mmc rescan 0;fatload mmc 0 81000000 uImage;bootm 81000000'setenv bootargs 'console=ttyO2,115200n8 root=/dev/mmcblk0p2 mem=128M rootwait' 然后saveenv 重启,就能够从sd卡完全加载至启动linux系统。

我做的时候还有一些小插曲,请看图从SD卡启动到一半失败了,这个ro表示我的SD卡被锁了。

编译Linux内核

编译Linux内核

编译Linux内核实验目的学习重新编译Linux内核,理解、掌握Linux内核和发行版本的区别。

实验内容重新编译内核是一件比你想像的还要简单的事情,它甚至不需要你对内核有任何的了解,只要你具备一些基本的Linux操作系统的知识就可以进行。

本次实验,要求你在RedHat Fedora Core 5的Linux系统里,下载并重新编译其内核源代码(版本号KERNEL-2.6.15-1.2054);然后,配置GNU的启动引导工具grub,成功运行你刚刚编译成功的Linux内核。

实验提示Linux是当今流行的操作系统之一。

由于其源码的开放性,现代操作系统设计的思想和技术能够不断运用于它的新版本中。

因此,读懂并修改Linux内核源代码无疑是学习操作系统设计技术的有效方法。

本实验首先介绍Linux内核的特点、源码结构和重新编译内核的方法,讲述如何通过Linux系统所提供的/proc虚拟文件系统了解操作系统运行状况的方法。

最后,对Linux编程环境中的常用工具也有简单介绍。

1.1查找并且下载一份内核源代码我们知道,Linux受GNU通用公共许可证(GPL)保护,其内核源代码是完全开放的。

现在很多Linux的网站都提供内核代码的下载。

推荐你使用Linux的官方网站: ,如图1-1。

在这里你可以找到所有的内核版本。

图1-1 Linux的官方网站由于作者安装的Fedora Core 5并不附带内核源代码,第一步首先想办法获取合适版本的Linux内核代码。

通过命令# uname –r2.6.15-1.2054_FC5这就是说,RedHat Fedora Core 5采用的内核版本是2.6.15-1.2054_FC5。

但是,官方网站/pub/linux/kernel/找不到对应版本。

请别着急,既然它是RedHat发布的,RedHat的官方网站总有吧。

浏览/pub/fedora/linux/core/5/source/SRPMS,我们发现果然有文件kernel-2.6.15-1.2054_FC5.src.rpm,这个rpm文件就是2.6.15-1.2054_FC5版的内核源代码了。

核心板linux内核及驱动模块编译步骤

核心板linux内核及驱动模块编译步骤

核心板linux内核编译及驱动模块编译步骤一、内核编译:1,拷贝开发板linux系统源代码(linux-2.6.30)到ubuntu的任意位置,打开终端,进入linux-2.6.30目录,输入命令:cp arch/arm/configs/sbc6045_defconfig .config 回车2,输入命令:make menuconfig 回车,若提示以下界面*** Unable to find the ncurses libraries or the*** required header files.*** 'make menuconfig' requires the ncurses libraries.****** Install ncurses (ncurses-devel) and try again.***输入命令:sudo apt-get install libncurses5-dev 回车,安装ncurses3,安装完成后,输入命令:make menuconfig 回车,进入配置选项界面,按需修改,目前未修改。

4,输入命令:make uImage 回车,若提示Can't use 'defined(@array)',修改kernel/timeconst.pl 文件中 373行,if (!defined(@val))改为if (!@val) ,重新执行make uImage命令。

二、驱动模块编译(若从未编译过内核,需要先编译内核):1,将编写好到源文件(如:cgc-pio.c)拷贝到linux-2.6.30/drivers/char/目录2,修改linux-2.6.30/drivers/char/目录下到Makefile文件,增加一行,内容为:obj-m += xxx.o,如:obj-m += cgc-pio.o3,打开linux终端,进入linux-2.6.30目录,输入命令:make modules 回车,完成后在linux-2.6.30/drivers/char/目录下会产生对应到.ko文件(如:cgc-pio.ko)。

linux模块编译步骤(详解)

linux模块编译步骤(详解)

Linux内核模块编程Linux 内核模块编程是一个很重要的知识点。

尤其是编写底层驱动程序时,一定会涉及到它。

内核模块编程也是 Tiger哥学习 Linux 时第一节课所接触的知识。

由此可以看出它的 important, 也可以看出其实它很 easy 。

一前言:1. 什么是内核模块1> 内核模块是具有独立功能的程序。

它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行。

2> 模块编程和内核版本密切相连,因为不同的内核版本中某些函数的函数名会有变化。

因此模块编程也可以说是内核编程。

3> 特点:模块本身不被编译进内核映像,从而控制了内核的大小;模块一旦被加载,就和内核中的其他部分完全一样。

2 . 用户层编程和内核模块编程的区别应用程序内核模块程序使用函数libc库内核函数运行空间用户空间内核空间运行权限普通用户超级用户入口函数main()module_init出口函数exit()module_exit编译gcc makefile链接gcc insmod运行直接运行insmod调试gdb kdbug、kdb、kgdb二 . 说了这么多,那么怎么编写一个内核模块的程序呢?1. 我们先来看两个最简单的函数实例,也是几乎所有程序员在学习一门新语言时都会编写的程序:输出 hello world!现在我们分别用模块编程输出 hello world! ,和在用户层编程输出 hello wrold !。

通过这两个程序我们来分析下如何来编写一个内核模块程序。

用户层编程: hello.c#include<stdio.h>int main(void){printf("hello world/n");}内核编程 : module.c#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT "hello,I am edsionte/n");return 0;}static void hello_exit(void){printk(KERN_ALERT "goodbye,kernel/n");}module_init(hello_init);module_exit(hello_exit);// 可选MODULE_AUTHOR("Tiger-John");MODULE_DESCRIPTION("This is a simple example!/n"); MODULE_ALIAS("A simplest example");Tiger-John说明:1.> 相信只要是学过 C 语言的同学对第一个程序都是没有问题的。

编译Linux系统内核的方法步骤

编译Linux系统内核的方法步骤

编译Linux系统内核的方法步骤1.需要先安装编译环境进入root 帐户:> su输入密码安装必要的工具:> apt-get install build-essential(安装gcc, make 等)> apt-get install libncurses-dev(安装make menuconfig 时必须的库文件)> apt-get install kernel-package, fakeroot(Debian 系统里生成kernel-image 的一些配置文件和工具)> apt-get install initramfs-tools, module-init-tools2.安装kernel-source:可以从Ubuntu 的源安装,这样的好处是简单,而且安装的内核是Debian 化了的,缺点是内核不是最新的内核。

> apt-get install linux-source也可以从 下载内核安装。

的境象应该很多,选一个最快的来下载,因为要下载的文件很大。

我这里介绍的是安装 2.6.24 的内核,加上了ck 的补丁。

下载linux-2.6.24.tar.bz2 和patch-2.6.24.bz2 ,并且把它们都存放在/usr/src 目录下。

> tar xvjf linux-2.6.24.tar.bz2> ln -s linux-2.6.24 linux(如果已经有了linux 目录,则要先将其删除)> cd linux> bzcat ../patch-2.6.24.bz2 | patch -p1至此,内核源文件以及补丁就都安装好了。

3.编译内核把源码包解压到/usr/src/linux-2.6.24,然后在/usr/src/下创建一个名为linux 的指向/usr/src/linux-2.6.24的链接(link)。

在shell中输入root@FE2000:~# cd ..root@FE2000:/# cd /usr/src/linuxroot@FE2000:/usr/src/linux# make mrproperroot@FE2000:/usr/src/linux# make menuconfig或者make gconfig此时qconf已经读取了默认配置,你也可以这样做:在qconf中点File->Load 去读取其他的设置文件。

linux内核编译与裁剪

linux内核编译与裁剪

Linux内核编译内幕详解内核,是一个操作系统的核心。

它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/l inux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。

全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。

而Linux的内核则是这些特点的最直接的代表。

想象一下,拥有了内核的源程序对你来说意味着什么?首先,我们可以了解系统是如何工作的。

通过通读源代码,我们就可以了解系统的工作原理,这在Windows下简直是天方夜谭。

其次,我们可以针对自己的情况,量体裁衣,定制适合自己的系统,这样就需要重新编译内核。

在Windows下是什么情况呢?相信很多人都被越来越庞大的Windows整得莫名其妙过。

再次,我们可以对内核进行修改,以符合自己的需要。

这意味着什么?没错,相当于自己开发了一个操作系统,但是大部分的工作已经做好了,你所要做的就是要增加并实现自己需要的功能。

在Windows下,除非你是微软的核心技术人员,否则就不用痴心妄想了。

内核版本号由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。

Linux的开发采用的是集市模型(bazaar,与cathedral--教堂模型--对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。

一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(d evelopment tree)。

一些新特性、实验性改进等都将首先在开发树中进行。

如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。

嵌入式Linux内核编译步骤和经验

嵌入式Linux内核编译步骤和经验

嵌入式Linux内核编译步骤和经验5.tar.xz,并且顺利的编译安装成功了,上电重启都OK的。

不过,我使用的.config配置文件,是Fedora 13自带内核的配置文件,即/lib/modules/`uname -r`/build/.configd) 如果你是移植Linux到嵌入式系统,则还要再下载安装交叉编译工具链。

例如,你的目标单板CPU可能是arm或mips等cpu,则安装相应的交叉编译工具链。

安装后,需要将工具链路径添加到PATH环境变量中。

例如,你安装的是arm工具链,那么你在shell中执行类似如下的命令,假如有类似的输出,就说明安装好了。

[root@localhost linux-2.6.33.i686]# arm-linux-gcc --versionarm-linux-gcc (Buildroot 2010.11) 4.3.5Copyright (C) 2008 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.注:arm的工具链,可以从这里下载:回复“ARM”即可查看。

二、设置编译目标在配置或编译内核之前,首先要确定目标CPU架构,以及编译时采用什么工具链。

这是最最基础的信息,首先要确定的。

如果你是为当前使用的PC机编译内核,则无须设置。

否则的话,就要明确设置。

这里以arm为例,来说明。

有两种设置方法():a) 修改Makefile打开内核源码根目录下的Makefile,修改如下两个Makefile变量并保存。

ARCH := armCROSS_COMPILE := arm-linux-注意,这里cross_compile的设置,是假定所用的交叉工具链的gcc程序名称为arm-linux-gcc。

编译内核步骤详解

编译内核步骤详解

编译内核步骤详解开始就是下载最新的内核,我用的FC5,内核已经很新了,是2.6.8,在 下载了一个最新的内核,2.6.20的。

把 kernel下载到随便一个地方,tar:之后把压缩包放到/usr/src/redhat/SOURCES/下面,其实这么也可以这样,把内核解压到 /usr/src/下面就可以了,然后进入/usr/src/就可以发现已经有2.6.20这个文件夹了,编译内核是在这个文件下面进行的。

也就是说你要进入到这个文件夹下面才可以进行之后的操作哦。

整体上分为三步:1、配置内核(就是确定哪些功能要保留在编译好的内核中,哪些功能要从内核中删除),生成一个编译配置文件.config2、编译内核。

3、安装内核。

之后的就是正式的步骤:进入当前的目录/usr/src/redhat/SOURCES/linux-2.6.20清除当前目录下编译设置:步骤1:$make mrproper其实这步可以不要的。

一般还是要一下吧。

该命令确保目录下没有相关的文件和配置,如果已经编译过linux内核,建议使用该命令步骤2:配置内核模块的功能,有几种方式可以进行界面选择:$make config(文本的配置方式,需要用户自己写配置文件)$make menuconfig(文本选单的配置方式,在有字符终端下才能使用)$make xconfig(图形窗口模式的配置方式,必须支持Xwindow下才能使用)$make oldconfig(文本配置方式,在原内核配置的基础修改时使用)这里推荐make xconfig方式,图形窗口的配置比较直观,对应每一项相应的配置时,有三种选择:Y--该模块编译进内核N--该模块不编译进内核M--该模块编译成可加载内核模块内核编译中各项模块功能的选择请参考我的另外一篇文章。

这里我选择的是:menuconfig,进去之后是一个蓝色界面.总共有10多个大的条目,按enter 进入,前面有[ ]的可以直接输入大写的Y/N,Y显示是一个*,而N是默认的选择就是[空白],如果你要选择就按下Y,或者不选N,当然了还有[m].其实条目下面可能还有一个东西就是---->,也是按回车进入设置.好像还有一个X选择的,进入了就晓得拉.这里边很多东东都要注意选啊,这个要求您对硬件,软件,网络有一定的认识,实在不知道就按默认的来吧.免得以后启动不了骂天骂地都没用哦,我可是好多次启动不了,最后才摸出窍门的…这个步骤完成之后,系统会提醒您,next step you should run “make dep”然后, 内核模块文件连接:步骤3:#make dep (一到两分钟)在确定要编译哪些东东之后(make *config),这个要确定依赖性用这条指令就可以完成了,也就不用麻烦您那么忙着搞了,呵呵,这个确定依赖性以后,然后就要清除一些东东了…步骤4:#make clean (少于一分钟)清除一些不必要的文件,那些乱七八糟的东东是可能会导致您在编译过程中出现错误的哦,一定要做哦…步骤5:#make bzImage(15分钟左右)-这个就是生成您的新核心,也就是kernel啦,所有的系统硬件软件交互都靠它了哦..其实可以是make zImage的,但是你要确保您所编译的这个新内核在640K之下,您就可以使用make zImage,如果比640K大,那就要用make bzImage,您要说没编译出来咋知道多大呢?我的看法是建议用bzImage,因为我编译出来的内核一般都是800~900K左右. …我是菜鸟,本帖子也是为我一样的菜鸟所写,所以. ..咱们就默认make bzImage…假如内核现在已经编译好了,当然越小越好哦,这时候系统会有个提示编译后的bzImage放到哪里去了,提示最后几行,已经告诉了您的新编译出的核心位置啊,一般都在这里/usr /src/linux-2.6.20/arch/i386/boot/,这时候您要做的就是把它放到/boot目录底下去哦,不然系统可没法启动的…#cp /usr/src/linux-2.6.20/arch/i386/boot/bzImage /boot/vmlinuz-2.6.20 这里好像可以不手动复制,系统最后也会在boot下面产生一个吧。

LINUX内核模块编译步骤

LINUX内核模块编译步骤

LINUX内核模块编译步骤Linux内核模块编译是为了向现有内核添加新的功能或驱动程序。

在编译步骤中,我们将介绍如何编译一个简单的内核模块。

1.确认安装所需软件在开始之前,我们需要确保系统上已经安装了一些软件包。

这些软件包包括GCC编译器、make工具和Linux内核的源代码。

3.进入内核源代码目录使用Terminal或命令行工具进入源代码所在的目录。

4. 创建Makefile文件Makefile是一个指示编译器如何编译源代码的文件。

在内核源代码目录中,创建一个名为Makefile的文件,并添加以下内容:```obj-m += module_name.oall:make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modulesclean:make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean ```在上述代码中,`module_name.o`是要编译的模块的文件名。

这个文件名应该与你的模块源代码文件名相匹配。

5.创建模块源代码文件在内核源代码目录中,创建一个包含模块源代码的文件。

例如,创建一个名为`module_name.c`的文件,并添加以下内容:```c#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("Your Name");MODULE_DESCRIPTION("A simple example Linux module.");MODULE_VERSION("0.1");static int __init module_name_init(void)printk(KERN_INFO "Module loaded.\n");return 0;static void __exit module_name_exit(void)printk(KERN_INFO "Module removed.\n");module_init(module_name_init);module_exit(module_name_exit);```在上述代码中,`module_name_init`函数在模块加载时被调用,`module_name_exit`函数在模块卸载时被调用。

Linux内核编译说明

Linux内核编译说明

Linux内核编译说明1.Linux内核源码结构:内核源码中主要包含以下子目录:arch :包含了与体系结构相关的代码对应于每一个支持的体系结构,有一个相应的子目录如i386、arm、alpha等。

其每个体系结构子目录下包含几个主要的子目录:kernel :包含与体系结构相关的内核代码mm :包含与体系结构相关的内存管理代码lib :包含与体系结构相关的库代码documentation:包含内核的文档drivers :包含设备驱动代码。

每类设备有相应的子目录,如char 、block、net等fs :包含文件系统的代码。

每个支持的文件系统有相应的子目录,如ext2、proc等include :内核头文件,对每一种体系结构,分别有相应的子目录。

init :包含内核初始化代码lib :包含内核的库代码mm :包含内存管理代码kernel :包含内核管理代码net :包含网络部分的代码2.系统引导的过程在pc机上系统启动过程:系统加电以后bois对系统完成监测设置后将控制权交给硬盘上MBR中的BootLoader 在这里即是lilo或grub等。

BootLoader 将操作系统代码调入内存,然后将控制权交给arch/i386/boot中的Setup.S 这段程序。

Setup.S 这段程序在386实模式下对系统进行基本的检测和设置后转入保护模式把控制权交给Head.SHead.S 建立内存管理和中断管理的框架后调用init/main.c中的start_kernel()函数在start_kernel执行完成后用户就可以登录和使用linux了。

Start_kernel()函数在init/main.c 中定义。

Start_kernel的流程中的主要步骤:setup_arch(&command_line); 用于和处理器、内存等最基本的硬件相关部分的初始化。

在arch/i386/kernel/setup.c 中定义;parse_options(command_line); 把启动时得到的参数从命令行的字符串中分离出来并赋给相应的变量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux内核编译方法
RevisionHistory
DraftDate Revision No. Description 2016/07/27 V1.0 1.初始版本。

目录
1 内核编译 (3)
1.1安装内核源代码 (3)
1.2清理内核 (3)
1.3配置内核 (4)
1.4编译内核 (6)
1.5编译模块 (7)
2 自启服务说明(针对启动失败) (8)
1内核编译
当前使用Linux版本为:linux-2.6.37,光盘中路径为"Linux\kernel\linux-xxx\src\linux-2.
6.3
7.tar.gz"。

1.1安装内核源代码
将内核源文件复制到任意目录下,如"/media/data/8168",并解压安装到"/media/dat a/8168/linux-2.6.37"目录下,进入该目录后,执行命令如下:
Host# sudo mkdir -p linux-2.6.37
Host#tar zxvf linux-2.6.37.tar.gz -C linux-2.6.37
图1
图2
1.2清理内核
进入linux-2.6.37内核源码的顶层目录,然后执行以下命令:
Host# sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-g
nueabi- ARCH=arm distclean
图3
make clean、make mrproer、make distclean的区别:
删除的文件范围从小到大依次为:make clean < make mrproper< make distclean。

make clean:删除大多数的编译生成文件,但会保留.config内核配置文件。

make mrproper:删除所有编译生成文件,同时删除内核配置文件以及各种备份文件。

make distclean:删除所有的编译生成文件,同时删除内核配置文件以及各种备份文件和补丁文件,清除最完整。

1.3配置内核
配置内核。

执行如下命令:
Host# sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnuea
bi- ARCH=arm ti8168_evm_defconfig
图4
这一步已完成平台所需配置,如用户需添加再其他配置(如无需要可跳过此步),可执行下一步选择配置:
Host# sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-g
nueabi- ARCH=arm menuconfig
图5
图6
1.4编译内核
编译内核镜像。

执行如下命令:
Host# sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-g
nueabi- ARCH=arm uImage -j 8
图7
编译完成如下图所示:
图8
编译完成后在"/media/DM8168/linux-2.6.37/arch/arm/boot"路径下生成uImage文件。

如下图所示:
图9
1.5编译模块
最后执行模块的编译。

执行如下命令:
Host# sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-g
nueabi- ARCH=arm modules -j 8
图10
将系统卡插入pc机,在ubuntu上确认是否挂载了系统卡,将编译的模块安装到系统卡rootfs分区,执行如下命令:
Host# sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- ARCH=arm modules_install INSTALL_MOD_PATH=/media/rootfs
图11
至此编译完成。

但由于编译完成后,驱动中缺少syslink.ko,会导系统的一些驱动无法正常使用,因此还要根据《syslink使用文档》编译和安装syslink.ko驱动,然后将syslink 步骤生成的dsp目录复制到SD卡开发板文件系统/rootfs/lib/modules/2.6.37/kernel/drivers 目录路径。

注意:如需生成制卡工具里面的压缩包可以把modules安装到ubuntu其他目录而非sd卡rootfs,将syslink.ko添加进去,然后再进入安装目录打包成压缩包即可。

2自启服务说明(针对启动失败)
用户自启服务有以下列表
图12
其中S01load-hd-firmware.sh:加载HDVPSS固件,需要内核模块支持,如果没有系统启动时会停在下图位置,无法正常进入系统。

图13
问题:使用自己编译的内核镜像不能启动,原因为以上所述。

解决方法:
1.可以把启动卡放到ubuntu的pc机上
图14
2.进入rootfs目录:
Host# sudo rm /media/teddy/rootfs/etc/rc5.d/S01load-hd-firmware.sh //用户目录删除自启动服务。

3.重新启动开发板系统。

相关文档
最新文档