./core/config.mk:include$(BUILD_SYSTEM)/combo/select.mk./core/config.mk:include$(BUILD_SYSTEM)/combo/javac.mk
./core/product_config.mk:include$(BUILD_SYSTEM)/node_fns.mk./core/product_config.mk:include$(BUILD_SYSTEM)/product.mk./core/product_config.mk:include$(BUILD_SYSTEM)/device.mk./core/dynamic_binary.mk:include$(BUILD_SYSTEM)/binary.mk./core/host_static_library.mk:include$(BUILD_SYSTEM)/binary.mk./core/java.mk:include$(BUILD_SYSTEM)/base_rules.mk
./core/host_shared_library.mk:include$(BUILD_SYSTEM)/binary.mk./core/key_char_map.mk:include$(BUILD_SYSTEM)/base_rules.mk./core/package.mk:include$(BUILD_SYSTEM)/java.mk
./core/static_library.mk:include$(BUILD_SYSTEM)/binary.mk./core/definitions.mk:include$(BUILD_SYSTEM)/distdir.mk
./core/envsetup.mk:include$(BUILD_SYSTEM)/product_config.mk./tools/apicheck/Android.mk:include$(BUILD_SYSTEM)/base_rules.mk./tools/dexpreopt/Android.mk:include$(BUILD_SYSTEM)/host_prebuilt.mk
COMMON_GLOBAL_CFLAGS:=-DANDROID-fmessage-length=0-W-Wall-Wno-unusedCOMMON_DEBUG_CFLAGS:=
COMMON_RELEASE_CFLAGS:=-DNDEBUG-UDEBUGCOMMON_PACKAGE_SUFFIX:=.zip
COMMON_JAVA_PACKAGE_SUFFIX:=.jar
COMMON_ANDROID_PACKAGE_SUFFIX:=.apk
ACP:=$(HOST_OUT_EXECUTABLES)/acp$(HOST_EXECUTABLE_SUFFIX)AIDL:=$(HOST_OUT_EXECUTABLES)/aidl$(HOST_EXECUTABLE_SUFFIX)
MKBOOTFS:=$(HOST_OUT_EXECUTABLES)/mkbootfs$(HOST_EXECUTABLE_SUFFIX)MKBOOTIMG:=$(HOST_OUT_EXECUTABLES)/mkbootimg$(HOST_EXECUTABLE_SUFFIX)MKYAFFS2:=
$(HOST_OUT_EXECUTABLES)/mkyaffs2image$(HOST_EXECUTABLE_SUFFIX)
APICHECK:=$(HOST_OUT_EXECUTABLES)/apicheck$(HOST_EXECUTABLE_SUFFIX)FS_GET_STATS:=
$(HOST_OUT_EXECUTABLES)/fs_get_stats$(HOST_EXECUTABLE_SUFFIX)
MKEXT2IMG:=$(HOST_OUT_EXECUTABLES)/genext2fs$(HOST_EXECUTABLE_SUFFIX)MKEXT2BOOTIMG:=external/genext2fs/mkbootimg_ext2.shMKTARBALL:=build/tools/mktarball.shDX:=$(HOST_OUT_EXECUTABLES)/dx
LOCALIZE:=$(HOST_OUT_EXECUTABLES)/localize$(HOST_EXECUTABLE_SUFFIX)HOST_GLOBAL_LDFLAGSTARGET_GLOBAL_LDFLAGSPRIVATE_LDFLAGS
build/core/combo/linux-arm.mk:16:$(combo_target)NO_UNDEFINED_LDFLAGS:=-Wl,--no-undefined
save_CFLAGS=\-g-mabi=aapcs-linux\
LDFLAGS='$LDFLAGS-lX11-lxml2-lXdmcp-lXau-lexpat-lXrender-lXft-lfontconfig-lfreetype-lz'--without-libtiff\#--with-gdktarget=directfb\
LDFLAGS=\-Wl,-rpath-link=$LD_LIBRARY_PATH-L$PREFIX/lib${env_LDFLAGS}${save_LDFLAGS}\
./vendor/marvell/external/alsa/alsa-lib/src/Mdroid.mk:43:LOCAL_CFLAGS+=-mabi=aapcs-linux./vendor/marvell/external/alsa/alsa-tools/Mdroid.mk:8:LOCAL_CFLAGS+=-mabi=aapcs-linux
./vendor/marvell/littleton/libaudio/Mdroid.mk:22:LOCAL_CPPFLAGS+=-mabi=aapcs-linux./external/wpa_supplicant/Android.mk:35:L_CFLAGS+=-mabi=aapcs-linux
./system/wlan/ti/sta_dk_4_0_4_32/CUDK/tiwlan_loader/Android.mk:88:LOCAL_CFLAGS=-Wall-Wstrict-prototypes
$(CLI_DEBUGFLAGS)-D__LINUX__$(DK_DEFINES)-mabi=aapcs-linux./kernel/arch/arm/Makefileifeq($(CONFIG_AEABI),y)
CFLAGS_ABI:=-mabi=aapcs-linux-mno-thumb-interworkelse
CFLAGS_ABI:=$(callcc-option,-mapcs-32,-mabi=apcs-gnu)$(callcc-option,-mno-thumb-interwork,)endif
#Need-Uarmforgcc<3.x
KBUILD_CFLAGS+=$(CFLAGS_ABI)$(arch-y)$(tune-y)$(callcc-option,-mshort-load-bytes,$(callcc-option,
-malignment-traps,))-msoft-float-UarmKBUILD_AFLAGS+=$(CFLAGS_ABI)$(arch-y)$(tune-y)-msoft-floatCFLAGS=\-I/include-I/usr/include-I/usr/X11R7/include\LDFLAGS=\-L/lib-L/usr/lib-L/usr/X11R7/lib\
AndroidBuildSystem
http://www.cublog.cn/u/8059/showart_1420446.html
====================================================
====================================================================2.文件系统分析2.1文件系统概述
2.2ext2,ext3文件系统2.3jffs,jffs2文件系统2.4yafss,yaffs2文件系统
2.5虚拟文件系统(sysfs,proc,tsmpfs等)
2.6一些必要重要的系统文件(/etc/fstab,inittab,init.rc等)2.7制作文件系统
2.1文件系统概述
文件系统(Filesystem)指代贮存在计算机上的文件和目录。文件系统可以有不同的格式,叫做文件系统类型(filesystemtypes)。
这些格式决定信息是如何被贮存为文件和目录。Linux支持多种文件系统,包括sysfs,proc,tmpfs,ext2,ext3,cramfs,ramfs,nfs,
vfat,jffs,jffs2,yaffs,yaffs2等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(VirtualFileSystem),
为各类文件系统提供一个统一的操作界面和应用编程接口。Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件
系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。
不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备
为RAM(DRAM,SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。
2.2ext2,ext3文件系统
在异常断电或系统崩溃(又称不洁系统关机,uncleansystemshutdown)发生时,每个在系统上挂载了的ext2文件系统必须要使用e2fsck
程序来检查其一致性。这是一个很费时的过程,特别是在检查包含大量文件的庞大文件卷时,它会大大耽搁引导时间。在这期间,文件卷上的所有数据
都不能被访问。由ext3文件系统提供的登记报表方式意味着不洁系统关机后没必要再进行此类文件系统检查。使用ext3系统时,一致性检查只在
某些罕见的硬件失效(如硬盘驱动器失效)情况下才发生。参考文档:
Linuxext2/ext3文件系统详解
http://www.blueidea.com/computer/system/2008/5536.aspLinuxEXT2文件系统结构分析(详情见附件)http://chenguang.blog.51cto.com/350944/69655Ext2文件系统的硬盘布局
http://www.ibm.com/developerworks/cn/linux/filesystem/ext2/
2.3jffs,jffs2文件系统
jffs2文件系统制作工具mkfs.jffs21.从网上下载:
mkjffs2-arm.rarhttp://blogimg.chinaunix.net/blog/upfile2/080701192924.rarmkjffs2-pc.rarhttp://blogimg.chinaunix.net/blog/upfile2/080701193005.rar2.通过源代码获得mkfs.jffs2
源码下载地址:ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.0.1.tar.gz编译的过程中缺少sys/acl.h文件,ubunt-8.10通过下面命令安装sudoapt-getinstalllibacl1-dev制作jffs2文件系统
mkfs.jffs2-rrootfs/-orootfs-jffs2.img-e0x4000--pad=0x500000-s0x200-n各参数的意义:
(1)-r:指定要做成image的源文件夹.(2)-o:指定输出image文档的文件名.
(3)-e:每一块要抹除的blocksize,默认值是64KB.要注意,不同的flash,其blocksize会不一样
(4)--pad(-p):用16进制來表示所要输出文档的大小,也就是root.jffs2的size。很重要的是,为了不浪费flash空间,這个值
最好符合flashdriver所规划的分区大小。
(5)如果挂载后会出现类似:CLEANMARKERnodefoundat0x0042c000hastotlen0xc!=normal0x0的警告,则加上-n就会消失。在pc上mountjffs2镜像文件
首先确保系统支持jffs2文件系统,通过命令cat/proc/filesystems查看sudomodprobemtdram
sudomodprobemtdblock插入此模块以后将会生成节点:/dev/mtdblock0sudomodprobejffs2
在一些系统fedoracore5,linux2.6.15.1上的mtdram只有4.2MB所以最好自己指定。例如:
modprobemtdramtotal_size=49152erase_size=128sudoddif=rootfs-jffs2.imgof=/dev/mtdblock0sudomount-tjffs2/dev/mtdblock0/mnt更多参考文档:mkfs.jffs2参数详解
http://blog.sina.com.cn/s/blog_4a4163880100cogf.html~type=v5_one&label=rela_prevarticle在linuxpc上挂载jffs2文件系
http://blog.sina.com.cn/s/blog_4a4163880100cozw.html2.4yafss,yaffs2文件系统
2.4.1yaffs2文件系统制作工具mkyaffs2image2.4.2在pc上挂载yaffs2文件系统2.4.3通过工具释放yaffs2文件系统
YAFFS,YetAnotherFlashFileSystem,是一种类似于JFFS/JFFS2的专门为Flash设计的嵌入式文件系统。与JFFS相比,
它减少了一些功能,因此速度更快、占用内存更少。YAFFS和JFFS都提供了写均衡,垃圾收集等底层操作。它们的不同之处在于:
1)、JFFS是一种日志文件系统,通过日志机制保证文件系统的稳定性。YAFFS仅仅借鉴了日志系统的思想,不提供日志机能,所以稳定性不如JAFFS,但是资源占用少。
2)、JFFS中使用多级链表管理需要回收的脏块,并且使用系统生成伪随机变量决定要回收的块,通过这种方法能提供较好的写均衡,在
YAFFS中是从头到尾对块搜索,所以在垃圾收集上JFFS的速度慢,但是能延长NAND的寿命。
3)、JFFS支持文件压缩,适合存储容量较小的系统;YAFFS不支持压缩,更适合存储容量大的系统。
YAFFS还带有NAND芯片驱动,并为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD和VFS,直接对文件
进行操作。NANDFlash大多采用MTD+YAFFS的模式。MTD(MemoryTechnologyDevices,内存技术设备)是对Flash操作的
接口,提供了一系列的标准函数,将硬件驱动设计和系统程序设计分开。YAFFS2是YAFFS的升级版,能更好的支持NANDFLASH。
2.4.1yaffs2文件系统制作工具mkyaffs2image1.androidyaffs2源代码external/yaffs2/2.从网上下载yaffs2源码
下载:http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs/下载:http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2///点击左下角的Downloadtarball下整个tar包cvs下载:
exportCVSROOT=:pserver:anonymous@cvs.aleph1.co.uk:/home/aleph1/cvscvslogoncvscoyaffs2
tar-xvfyaffs2.tar.bz;cdyaffs2;make
为ubuntu8.10添加yaffs文件系统支持
sudomkdir-p/lib/modules/2.6.27-4-generic/kernel/fs/yaffs2sudocpyaffs2.ko/lib/modules/2.6.27-4-generic/kernel/fs/yaffs2/sudoinsmod/lib/modules/2.6.27-4-generic/kernel/fs/yaffs2/yaffs2.ko制作yaffs2文件系统
mkyaffs2image/nfsroot/rootfs/systemsystem.img
/nfsroot/rootfs/system为文件系统所在的目录system.img为生成的镜像文件2.4.2在pc上挂载yaffs2文件系统sudomkdir-p/mnt/mtd/yaffs2sudomodprobemtdblock
sudomodprobemtdramtotal_size=100000erase_size=256
sudoinsmod/lib/modules/2.6.27-4-generic/kernel/fs/yaffs2/yaffs2.kosudoddif=rootfs.yaffs2of=/dev/mtdblock0
sudomount-tyaffs2/dev/mtdblock0/mnt/mtd/yaffs2#modprobemtdramtotal_size=49152erase_size=128#catrootfs.yaffs2>/dev/mtdblock0
2.4.3通过工具释放yaffs2文件系统yaffs2image逆向工具
http://blog.csdn.net/absurd/archive/2008/11/05/3223825.aspx获取源代码:
http://www.limodev.cn/bbs/download/file.php?id=12.5虚拟文件系统(sysfs,proc,tsmpfs等)2.5.1虚拟文件系统概述2.5.2proc文件系统2.5.3sysfs文件系统2.5.4tmpfs文件系统2.5.5usbdevfs文件系统2.5.6devpts文件系统
2.5.1虚拟文件系统概述
虚拟内核文件系统(VirtualKernelFileSystems),是指那些是由内核产生但并不存在于硬盘上(存在于内存中)的文件系统,
他们被用来与内核进行通信前面介绍的ext2,ext3,jffs2,yaffs2等目录和文件,都是真真正正、实实在在的存储在具体的外部存
储设备上的,它们可能是在本机的硬盘、闪存、光盘中,可能保存在不只一个磁盘分区中,也可能保存在网络中其它主机的存储设备中的。
虚拟文件系统,虽然它们出现在根文件系统中,但它里面的内容却无法在任何外部存储设备中找到,因为它们都在内存中。==========android网络挂载:rootfs/rootfsrw00/dev/root/nfsrw,vers=2,rsize=1024,wsize=1024,...tmpfs/devtmpfsrw,mode=75500devpts/dev/ptsdevptsrw,mode=60000proc/procprocrw00sysfs/syssysfsrw00
linux ,Android基础知识总结
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)