Linux内核构建选项之文件系统

文件系统作为操作系统的一个模块,需要对内核进行配置才能使用;内核提供对文件系统功能选项的配置功能

内核配置
make ARCH=arm menuconfig

文件系统选项的配置
File Systems --->

构建方式:
内置构建:[*] <*> ---> 增加内核镜像文件大小
模块构建: < > <M> ---> 提供动态加载移除的灵活性

嵌入式配置原则:
1. 文件系统主要进行内置构建

2. 一般不选择EXPERIMENTAL的模块或者特性(产品应用)

3. 对于不确定的选项使用默认配置

4.按照业务要求选择合适的文件系统

文件系统选项说明:

一、文件系统公共选项: fs/Kconfig
CONFIG_FS_POSIX_ACL (ACL控制)
CONFIG_FILE_LOCKING (NFS网络文件系统, flock系统调用)

[Notify]
CONFIG_FSNOTIFY
CONFIG_DNOTIFY (基于目录的文件变化的通知机制)
CONFIG_INOTIFY_USER (替代Dnotify)
CONFIG_FANOTIFY
CONFIG_FANOTIFY_ACCESS_PERMISSIONS

[Quota: ext2,ext3,reiserfs]
CONFIG_QUOTA
CONFIG_QUOTA_NETLINK_INTERFACE
CONFIG_PRINT_QUOTA_WARNING
CONFIG_QUOTA_DEBUG
CONFIG_QUOTA_TREE
CONFIG_QFMT_V1
CONFIG_QFMT_V2
CONFIG_QUOTACTL
CONFIG_QUOTACTL_COMPAT

[Autofs4: 类似Windows上的网络驱动器]
CONFIG_AUTOFS4_FS

[FUSE]
CONFIG_FUSE_FS
CONFIG_CUSE (FUSE extension)

[Caches]
CONFIG_FSCACHE
CONFIG_FSCACHE_XXX
CONFIG_CACHEFILES
CONFIG_CACHEFILES_XXX

[Partition Types]
CONFIG_PARTITION_ADVANCED (hard disks)

[NLS: Native Language Support]
CONFIG_NLS
CONFIG_NLS_DEFAULT
CONFIG_NLS_CODEPAGE_XXX (CP936,GB2312)
CONFIG_NLS_ISO8859_XXX

[DLM: Distributed Lock Manager]
CONFIG_DLM (为各种分布式文件系统提供通用的锁定支持)

二、具体文件系统特性选项:
CONFIG_EXT2_XXX
CONFIG_EXT3_XXX
CONFIG_EXT4_XXX

CONFIG_REISERFS_XXX
CONFIG_BTRFS_XXX
CONFIG_JFS_XXX

......

CONFIG_UDF_XXX

[Windows FS]
CONFIG_FAT_FS (base functions to support MS-DOS/VFAT)
CONFIG_VFAT_FS (windows 95,fat32)
CONFIG_MSDOS_FS
CONFIG_FAT_DEFAULT_CODEPAGE
CONFIG_FAT_DEFAULT_IOCHARSET (vfat use, "utf8" not recommened here)
CONFIG_NTFS_XXX

CONFIG_PROC_XXX
CONFIG_TMPFS_XXX
CONFIG_SYSFS

.......

[Misc FS]
CONFIG_YAFFS2_XXX
YAFFS_YAFFS1: 512B/page
YAFFS_DOES_ECC: fs ECC or MTD-NAND ECC
YAFFS_YAFFS2: >=2K bytes/page
YAFFS_AUTO_YAFFS2
YAFFS_ALWAYS_CHECK_CHUNK_ERASED
YAFFS_EMPTY_LOST_AND_FOUND
YAFFS_DISABLE_BLOCK_REFRESHING (useful for MLC)
YAFFS_DISABLE_BACKGROUND
YAFFS_XATTR

CONFIG_JFFS2_XXX
JFFS2_FS_DEBUG
JFFS2_FS_WRITEBUFFER
JFFS2_FS_WBUF_VERIFY
JFFS2_SUMMARY (EXPERIMENTAL:sumtool,for faster mount)
JFFS2_FS_XATTR(EXPERIMENTAL)
JFFS2_FS_POSIX_ACL (xattr)
JFFS2_FS_SECURITY (xattr)
JFFS2_COMPRESSION_OPTIONS: ZLIB,LZO,RTIME,RUBIN
JFFS2_CMODE_NONE
JFFS2_CMODE_PRIORITY (first successful one)
JFFS2_CMODE_SIZE (smallest size one)
JFFS2_CMODE_FAVOURLZO (smallest, but lzo favour)

CONFIG_CRAMFS

CONFIG_SQUASHFS_XXX
SQUASHFS_XATTR
SQUASHFS_LZO (aimed at embedded systems with slower CPUs)
SQUASHFS_XZ
SQUASHFS_EMBEDDED
SQUASHFS_FRAGMENT_CACHE_SIZE (default: the last 3 fragments)

CONFIG_UBIFS_XXX
CONFIG_LOGFS_XXX
......

[Network FS]
CONFIG_NFS_XXX (client)
NFS_COMMON
NFS_ACL_SUPPORT
Version: V3 V4
ROOT_NFS
NFS_FSCACHE
NFS_USE_LEGACY_DNS / NFS_USE_KERNEL_DNS
CONFIG_NFSD_XXX
CONFIG_SUNRPC_XXX
CONFIG_CIFS_XXX(samba)

时间: 2024-10-08 09:47:35

Linux内核构建选项之文件系统的相关文章

linux 内核移植和根文件系统的制作

1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRAVERSION = .1 其 中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4.2.5

20150514我读《深入理解linux内核》之虚拟文件系统笔记

20150514我读<深入理解linux内核>之虚拟文件系统笔记 2015-05-14 Lover雪儿 虚拟文件系统所隐含的思想就是把很多不同种类的文件系统的共同信息放入内核,其中有一个字段或者函数来支持Linux所支持的所有实际文件系统所提供的任何操作.对所调用的每个读.写或者其他函数,内核都能把他们替换成支持本地Linux文件系统.NTFS文件系统,或者文件所在的任何其他文件系统的实际函数. 虚拟文件系统可以称为虚拟文件系统转换,是一个内核软件层,用来处理与Unix标准文件系统相关的所有系

Linux内核启动及根文件系统载入过程

上接博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令,就进入Linux内核启动阶段.与u-boot类似,普通Linux内核的启动过程也能够分为两个阶段,但针对压缩了的内核如uImage就要包含内核自解压过程了.本文以linux-2.6.37版源代码为例分三个阶段来描写叙述内核启动全过程.第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式.使能MMU.设置一级页表等,而第三阶段则主要为

Linux内核源代码情景分析-文件系统的安装

执行sudo mount -t ext2 /dev/sdb1 /mnt/sdb,将文件系统挂在到/mnt/sdb上.系统调用mount,映射到内核层执行的是sys_mount.假设/dev/sdb1和/mnt/sdb都位于ext2文件系统中. asmlinkage long sys_mount(char * dev_name, char * dir_name, char * type, unsigned long flags, void * data)//dev_name指向了"/dev/sdb

linux内核(三)文件系统

1.为什么需要根文件系统 (1)init进程的应用程序在根文件系统上(2)根文件系统提供了根目录/(3)内核启动后的应用层配置(etc目录)在根文件系统上.几乎可以认为:发行版=内核+rootfs(4)shell命令程序在根文件系统上.譬如ls.cd等命令总结:一套linux体系,只有内核本身是不能工作的,必须要rootfs(上的etc目录下的配置文件./bin /sbin等目录下的shell命令,还有/lib目录下的库文件等···)相配合才能工作. 下面是根文件系统顶层目录 根文件系统的实质是

Linux 系统裁剪笔记 4 (内核配置选项及删改)

在menuconfig中配置,可以对进行Linux内核配置选项及删改.本文介绍详细配置方法.第一部分:全部删除Code maturity level options ---> 代码成熟等级选项[]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选.第二部分 :除以下选项,其它全部删除General setup-〉System V IPC (IPC:Inter

Linux内核源代码情景分析-设备文件系统devfs

我们以前多次讲过到,以主设备号/次设备号为基础的设备文件管理方式是有根本性的缺点的.这种从Unix早期一直沿用下来的方案一方面给设备号的管理带来了麻烦,一方面也破坏了/dev目录结构.Unix/Linux系统中的所有目录的结构都是层次的,惟独/dev目录是"平面"的.这不光是风格的问题,也直接影响着访问的效率和管理的方便与否. 那么理想中的/dev目录应该是什么样的呢?首先,它应该是层次的.树状的.其次,它的规模应该是可伸缩的,而且不受数量的限制(例如256个主设备号).还有,/dev

linux系统移植和根文件系统制作

1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRAVERSION = .1 其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4.2.5.

Linux环境下使用JFS文件系统

Linux环境下使用JFS文件系统 JFS是IBM公司为linux系统开发的一个日志文件系统.从IBM的实力及它对Linux的态度来看,JFS应该是未来日志文件系统中最具实力的一个文件系统. JFS提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的.JFS 能够在几秒或几 分钟内就把文件系统恢复到一致状态.JFS能够保证数据在任何意外宕机的情况下,不会造成磁盘数据的丢失与损坏. 一.JFS文件系统特点 1.存储空间更大 JFS 支持的最小文件系统是 16M 字节.最大文件