【c 项目源码】【金宝盒源码】【webflux 源码分析】find7内核源码_oppo开源内核

时间:2024-11-30 00:23:13 来源:github直播网站源码 编辑:利景源码

1.linux.bz2解压linux.bz
2.安卓层次结构安卓层

find7内核源码_oppo开源内核

linux.bz2解压linux.bz

       LinuxKernel(Linux内核)怎么安装?

       1、下载新内核源码:到官网www.kernel.org,下载最新版本linux内核,保存到/usr/src/kernels目录,大约MB。

       2、#cd/usr/src/kernels

       3、#tarjvxflinux-2.6..5.tar.bz2

       4、进入系统原内核目录,把其中的隐藏文件.config复制到新内核目录中。

       5、cd进入新内核目录,然后执行#makeoldconfig此时所有提示均按回车,选项提示都默认。

       6、#makexconfig此时弹出一个内核配置窗口,里面全是英文,我看不懂,干脆就直接把这个窗口关掉,继续往下做。

       7、#makebzImagemakemodulesmakemodules_installmakeinstall第七步编译时间比较长,要到分钟不等,要看机器情况了。

       8、#uname-r查看内核版本,完成上面步骤后就可以重启系统了,启动时会在GRUB菜单里出现新内核选项了。此方法安装新内核后同时也会保留旧内核,启动时,可以在新老内核间选择,相当的实用

       å¦‚何给linux安装新内核?

       ä¸€ã€èŽ·å–内核源码

       äºŒã€è§£åŽ‹å†…核源码

       é¦–先以root帐号登录,然后进入/usr/src子目录。如果用户在安装Linux时,安装了内核的源代码,则会发现一个linux-x.y.z的子目录。该目录下存放着内核x.y.z的源代码。此外,还会发现一个指向该目录的链接linux。删除该连接,然后将新内核的源文件拷贝到/usr/src目录中,并解压:

       #tarzxvfLinux-2.3..tar.gz

       æ–‡ä»¶é‡Šæ”¾æˆåŠŸåŽï¼Œåœ¨/usr/src目录下会生成一个linux子目录。其中包含了内核2.3.的全部源代码。将/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-iasm

       #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:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和位PC相关的代码存放在i目录下,其中比较重要的包括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。

       åœ¨i体系下,系统引导将从arch/i/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(,内核内核/Cx,/K5/5x/6x,Pentium/K6/TSC,PPro/6xMX)选择处理器类型,缺省为Ppro/6xMX。

       ï¼ˆ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”,内核将提供对网络驱动程序的支持。

       ã€Ethernet(orMbit)(M或M以太网)

       åœ¨è¯¥é¡¹è®¾ç½®ä¸­ï¼Œç³»ç»Ÿæä¾›äº†è®¸å¤šç½‘卡驱动程序,用户只要选择自己的网卡驱动就可以了。此外,用户还可以根据需要,在内核中加入对FDDI、PPP、SLIP和无线LAN(WirelessLAN)的支持。

       ã€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”,内核可将一个串行口用作系统控制台。

       ã€Mice(鼠标)

       PS/2mouse(aka"auxiliarydevice")support(CONFIG_PSMOUSE)如果用户使用的是PS/2鼠标,则该选项应该选择“y”。

       ã€Filesystems(文件系统)

       ï¼ˆ1)、Quotasupport(CONFIG_QUOTA)选择“y”,内核将支持磁盘限额。

       ï¼ˆ2)、Kernelautomountersupport(CONFIG_AUTOFS_FS)选择“y”,内核将提供对automounter的支持,使系统在启动时自动mount远程文件系统。

       ï¼ˆ3)、DOSFATfssupport(CONFIG_FAT_FS)选择“y”,内核将支持DOSFAT文件系统。

       ï¼ˆ4)、ISOCDROMfilesystemsupport(CONFIG_ISO_FS)

       é€‰æ‹©â€œy”,内核将支持ISOCDROM文件系统。

       ï¼ˆ5)、NTFSfilesystemsupport(readonly)(CONFIG_NTFS_FS)

       é€‰æ‹©â€œy”,用户就可以以只读方式访问NTFS文件系统。

       ï¼ˆ6)、/procfilesystemsupport(CONFIG_PROC_FS)/proc是存放Linux系统运行状态的虚拟文件系统,该项必须选择“y”。

       ï¼ˆ7)、Secondextendedfssupport(CONFIG_EXT2_FS)EXT2是Linux的标准文件系统,该项也必须选择“y”。

       ã€NetworkFileSystems(网络文件系统)

       ï¼ˆ1)、NFSfilesystemsupport(CONFIG_NFS_FS)选择“y”,内核将支持NFS文件系统。

       ï¼ˆ2)、SMBfilesystemsupport(tomountWfWsharesetc.)(CONFIG_SMB_FS)

       é€‰æ‹©â€œy”,内核将支持SMB文件系统。

       ï¼ˆ3)、NCPfilesystemsupport(tomountNetWarevolumes)(CONFIG_NCP_FS)

       é€‰æ‹©â€œy”,内核将支持NCP文件系统。

       ã€PartitionTypes(分区类型)

       è¯¥é€‰é¡¹æ”¯æŒä¸€äº›ä¸å¤ªå¸¸ç”¨çš„分区类型,用户如果需要,在相应的选项上选择“y”即可。

       ã€Consoledrivers(控制台驱动)

       VGAtextconsole(CONFIG_VGA_CONSOLE)选择“y”,用户就可以在标准的VGA显示方式下使用Linux了。

       ã€Sound(声音)

       Soundcardsupport(CONFIG_SOUND)选择“y”,内核就可提供对声卡的支持。

       ã€Kernelhacking(内核监视)

       MagicSysRqkey(CONFIG_MAGIC_SYSRQ)选择“y”,用户就可以对系统进行部分控制。一般情况下选择“n”。

       å…­ã€ç¼–译内核

       ï¼ˆä¸€ï¼‰ã€å»ºç«‹ç¼–译时所需的从属文件

       #cd/usr/src/linux

       #makedep

       ï¼ˆäºŒï¼‰ã€æ¸…除内核编译的目标文件

       #makeclean

       ï¼ˆä¸‰ï¼‰ã€ç¼–译内核

       #makezImage

       å†…核编译成功后,会在/usr/src/linux/arch/i/boot目录中生成一个新内核的映像文件zImage。如果编译的内核很大的话,系统会提示你使用makebzImage命令来编译。这时,编译程序就会生成一个名叫bzImage的内核映像文件。

       ï¼ˆå››ï¼‰ã€ç¼–译可加载模块

       å¦‚果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。

       #makemodules

       #makemodelus_install

       ç¼–译成功后,系统会在/lib/modules目录下生成一个2.3.子目录,里面存放着新内核的所有可加载模块。

       ä¸ƒã€å¯åŠ¨æ–°å†…æ ¸

       ï¼ˆä¸€ï¼‰ã€å°†æ–°å†…核和System.map文件拷贝到/boot目录下

       #cp/usr/src/linux/arch/i/boot/bzImage/boot/vmlinuz-2.3.

       #cp/usr/src/linux/System.map/boot/System.map-2.3.

       #cd/boot

       #rm-fSystem.map

       #ln-sSystem.map-2.3.System.map

       ï¼ˆäºŒï¼‰ã€é…ç½®/etc/lilo.conf文件。在该文件中加入下面几行:

       default=linux-2.3.

       image=/boot/vmlinuz-2.3.

       label=linux-2.3.

       root=/dev/hda1

       read-only

       ï¼ˆä¸‰ï¼‰ã€ä½¿æ–°é…ç½®ç”Ÿæ•ˆ

       #/sbin/lilo

       ï¼ˆå››ï¼‰ã€é‡æ–°å¯åŠ¨ç³»ç»Ÿ

       #/sbin/reboot

       æ–°å†…核如果不能正常启动,用户可以在LILO:提示符下启动旧内核。然后查出故障原因,重新编译新内核即可。

       CDlinux里启动提示cantfindoutwherecdlinuxisinstalled?

       æˆ‘已经解决了我用grub4dos引导,目录如下H:LinuxCDlinuxCDlinux-0.9.7.1.isomenu.lst如下:titlefindandbootCDlinux-0.9.7.1.isofallback3find--set-root/Linux/CDlinux/BZIMAGEkernel/Linux/CDlinux/BZIMAGEquietCDL_LANG=zh_CN.UTF-8CDL_GUI=yesCDL_AMOUNT=yesCDL_DIR=/Linux/CDlinuxCDL_IMG=CDlinux-0.9.7.1.isoinitrd/Linux/CDlinux/INITRD注意把CD里的BZIMAGE、INITRD解压出来放到CDlinux目录下

安卓层次结构安卓层

       Android系统架构分为哪四个层次,每一层所提供的源码基本功能是什么?

       1.操作系统层(OS)

       Android使用Linux2.6作为操作系统,Linux2.6是开源一种标准的技术,Linux也是内核内核一个开放的操作系统。Android对操作系统的源码使用包括核心和驱动程序两部分,Android的开源c 项目源码Linux核心为标准的Linux2.6内核,Android更多的内核内核是需要一些与移动设备相关的驱动程序。

       2.各种库(Libraries)和Android运行环境(RunTime)

       本层次对应一般嵌入式系统,源码相当于中间件层次。开源Android的内核内核本层次分成两个部分一个是各种库,另一个是源码Android运行环境。

       3.应用程序框架(ApplicationFramework)

       Android的开源应用程序框架为应用程序层的开发者提供APIs,它实际上是内核内核一个应用程序的框架。

       4.应用程序(Application)

       Android的源码应用程序主要是用户界面(UserInterface)方面的,通常以JAVA程序编写,开源其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。

       安卓框架有哪些?

       android应用开发框架是ApplicationFramework.其系统架构由5部分组成,分别是:LinuxKernel、AndroidRuntime、金宝盒源码Libraries、ApplicationFramework、Applications。

       第二部分将详细介绍这5个部分。下面自底向上分析各层。Android架构1、LinuxKernelAndroid基于Linux2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。

       LinuxKernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是webflux 源码分析说各层各尽其职,各层提供固定的SAP(ServiceAccessPoint),专业点可以说是高内聚、低耦合。如果你只是做应用开发,就不需要深入了解LinuxKernel层。

       安卓系统英文是什么?

       系统Android是基于Linux开放性内核的操作系统,是Google公司在年月5日公布的手机操作系统。早期由原名为"Android"的公司开发,谷歌在年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的要涨停源码智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:华为、中兴、联想等。编辑本段系统架构应用程序Android以Java为编程语言,从接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类(class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped),甚至被系统清除(kill)。js优雅源码View等同于J2ME的Displayable,程序人员可以通过View类与“XMLlayout”档将UI放置在视窗上,Android1.5的版本可以利用View打造出所谓的Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的AndroidHero手机即含有大量的widget。至于ViewGroup是各种layout的基础抽象类(abstractclass),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件(event)息息相关,两者之间通过Listener结合在一起,每一个View都可以注册一个eventlistener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。中介软件操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(VirtualMachine)。Bionic是Android改良libc的版本。Android同时包含了Webkit,所谓的Webkit就是AppleSafari浏览器背后的引擎。Surfaceflinger是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的BionicLibc。Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideoMultimediaFramework(PVMF)、OperatingSystemCompatibilityLibrary(OSCL)、Common、OpenMAX。Android使用skia为核心图形引擎,搭配OpenGL/ES。skia与LinuxCairo功能相当,但相较于LinuxCairo,skia功能还只是雏形的。年Skia公司被Google收购,年初,SkiaGL源码被公开,目前Skia也是GoogleChrome的图形引擎。Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(DalvikVirtualMachine)。Dalvik虚拟机是一种“暂存器型态”(RegisterBased)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。Dalvik虚拟机可以有多个实例(instance),每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。硬件抽像层Android的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL的目的是为了把Androidframework与Linuxkernel隔开,让Android不至过度依赖Linuxkernel,以达成kernelindependent的概念,也让Androidframework的开发能在不考量驱动程序实现的前提下进行发展。HALstub是一种代理人(proxy)的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数(operations),并由Androidruntime向HAL取得stub的operations,再callback这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即moduleID,就可以取得操作函数。编程语言Android是运行于Linuxkernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被GNUGPL授权证所约束的部份,例如Android将驱动程序移到userspace,使得Linuxdriver与Linuxkernel彻底分开。bionic/libc/kernel/并非标准的kernelheaderfiles。Android的kernelheader是利用工具由Linuxkernelheader所产生的,这样做是为了保留常数、数据结构与宏。目前Android的Linuxkernel控制包括安全(Security),存储器管理(MemoryManagement),程序管理(ProcessManagement),网络堆栈(NetworkStack),驱动程序模型(DriverModel)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是Android用来辅助Git工作的一个工具。编辑本段系统版本很多玩家用户可能会奇怪:“为什么Android会用甜点作为它们系统版本的代号?”这个命名方法开始于Andoird1.5发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照个字母数序:纸杯蛋糕,甜甜圈,松饼,冻酸奶,姜饼,蜂巢。

copyright © 2016 powered by 皮皮网   sitemap