linux4.1.6+aufs4.1

http://aufs.sourceforge.net/

linux kernel version aufs version
4.0 and later aufs4
Currently aufs4 supports these kernels.

version status in mainline support status
linux-4.x-rcN  latest supported and fully tested
linux-4.1 latest supported and fully tested
linux-4.0 stable supported and fully tested
3.14 and later aufs3

Currently aufs3 supports these kernels.

version status in mainline support status
linux-3.19 stable supported and fully tested
linux-3.18.1+ for v3.18.1 and later supported but little tested
linux-3.18 longterm supported and fully tested
linux-3.17 [EOL] supported but little tested
linux-3.16 [EOL] ditto
linux-3.15 [EOL] ditto
linux-3.14.40+   for v3.14.40 and later   ditto
linux-3.14.21+   for v3.14.21 and later   ditto
linux-3.14 longterm supported and fully tested
3.9 ... 3.13 aufs3
Unsupported since Jan 2015
3.2, 3.2.x, 3.4 and 3.8 aufs3
Unsupported since Nov 2013
3.6 and 3.7 aufs3
Unsupported since Aug 2013
3.0, 3.1, 3.3 and 3.5 aufs3
Unsupported since Apr 2013
2.6.35 ... 2.6.39 aufs2.2
Unsupported since Oct 2012
2.6.31 ... 2.6.34 aufs2.1
Unsupported since Aug 2011
2.6.27 ... 2.6.30 aufs2

Unsupported since Sep 2010

Started in Feb 2009

2.6.25 ... 2.6.27 aufs1(fs/aufs25)
2.6.16 ... 2.6.24 aufs1(fs/aufs)

Started late in 2005

and made widely public in early summer in 2006

2.6.15 and earlier aufs1(fs/aufs)

Untested, but some of users tried and succeeded

Note1: aufs1 is NOT maintained since Jan 2009.
Note2: packages called aufs2-base were temporary trasition releases and are NOT maintained either.
Public aufs4 GIT trees GIT HTTP
aufs4 with mainline kernel source files git://github.com/sfjro/aufs4-linux.git https://github.com/sfjro/aufs4-linux.git
aufs4 standalone git://github.com/sfjro/aufs4-standalone.git https://github.com/sfjro/aufs4-standalone.git
aufs (v3 and later) utilities git://git.code.sf.net/p/aufs/aufs-util http://git.code.sf.net/p/aufs/aufs-util
Public aufs3 GIT trees GIT HTTP
aufs3 with full kernel source files git://git.code.sf.net/p/aufs/aufs3-linux

Currnetly (Mar 2013) the aufs3-linux.git repository on
SourceForge is unstable, particulary the web interface doesn‘t
show the all branches correctly. I created the same named
repostitory on GitHub.
Try git://github.com/sfjro/aufs3-linux.git.

http://git.code.sf.net/p/aufs/aufs3-linux
aufs3 standalone git://git.code.sf.net/p/aufs/aufs3-standalone http://git.code.sf.net/p/aufs/aufs3-standalone
aufs (v3 and later) utilities git://git.code.sf.net/p/aufs/aufs-util http://git.code.sf.net/p/aufs/aufs-util
Public aufs2 GIT trees GIT HTTP
aufs2 (with full kernel source files) git://git.c3sl.ufpr.br/aufs/aufs2-2.6.git http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-2.6.git
aufs2 standalone
  1. git://git.c3sl.ufpr.br/aufs/aufs2-standalone.git
  2. git://aufs.git.sourceforge.net/gitroot/aufs/aufs2-standalone.git
http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git
aufs2 utilities
  1. git://git.c3sl.ufpr.br/aufs/aufs2-util.git
  2. git://aufs.git.sourceforge.net/gitroot/aufs/aufs2-util.git
http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-util.git
Public aufs1 CVS tree CVS
aufs1 standalone and utilities See the project page on
SourceForge

aufs manual for aufs4.x-rcN
(Running "man aufs" on your actual system is recommended since the
contents may depend upon the aufs version)

Contributions


Aufs4 -- advanced multi layered unification filesystem version 4.x
http://aufs.sf.net
Junjiro R. Okajima

0. Introduction
----------------------------------------
In the early days, aufs was entirely re-designed and re-implemented
Unionfs Version 1.x series. Adding many original ideas, approaches,
improvements and implementations, it becomes totally different from
Unionfs while keeping the basic features.
Recently, Unionfs Version 2.x series begin taking some of the same
approaches to aufs1‘s.
Unionfs is being developed by Professor Erez Zadok at Stony Brook
University and his team.

Aufs4 supports linux-4.0 and later, and for linux-3.x series try aufs3.
If you want older kernel version support, try aufs2-2.6.git or
aufs2-standalone.git repository, aufs1 from CVS on SourceForge.

Note: it becomes clear that "Aufs was rejected. Let‘s give it up."
      According to Christoph Hellwig, linux rejects all union-type
      filesystems but UnionMount.
<http://marc.info/?l=linux-kernel&m=123938533724484&w=2>

PS. Al Viro seems have a plan to merge aufs as well as overlayfs and
    UnionMount, and he pointed out an issue around a directory mutex
    lock and aufs addressed it. But it is still unsure whether aufs will
    be merged (or any other union solution).
<http://marc.info/?l=linux-kernel&m=136312705029295&w=1>

1. Features
----------------------------------------
- unite several directories into a single virtual filesystem. The member
  directory is called as a branch.
- you can specify the permission flags to the branch, which are ‘readonly‘,
  ‘readwrite‘ and ‘whiteout-able.‘
- by upper writable branch, internal copyup and whiteout, files/dirs on
  readonly branch are modifiable logically.
- dynamic branch manipulation, add, del.
- etc...

Also there are many enhancements in aufs, such as:
- test only the highest one for the directory permission (dirperm1)
- copyup on open (coo=)
- ‘move‘ policy for copy-up between two writable branches, after
  checking free space.
- xattr, acl
- readdir(3) in userspace.
- keep inode number by external inode number table
- keep the timestamps of file/dir in internal copyup operation
- seekable directory, supporting NFS readdir.
- whiteout is hardlinked in order to reduce the consumption of inodes
  on branch
- do not copyup, nor create a whiteout when it is unnecessary
- revert a single systemcall when an error occurs in aufs
- remount interface instead of ioctl
- maintain /etc/mtab by an external command, /sbin/mount.aufs.
- loopback mounted filesystem as a branch
- kernel thread for removing the dir who has a plenty of whiteouts
- support copyup sparse file (a file which has a ‘hole‘ in it)
- default permission flags for branches
- selectable permission flags for ro branch, whether whiteout can
  exist or not
- export via NFS.
- support <sysfs>/fs/aufs and <debugfs>/aufs.
- support multiple writable branches, some policies to select one
  among multiple writable branches.
- a new semantics for link(2) and rename(2) to support multiple
  writable branches.
- no glibc changes are required.
- pseudo hardlink (hardlink over branches)
- allow a direct access manually to a file on branch, e.g. bypassing aufs.
  including NFS or remote filesystem branch.
- userspace wrapper for pathconf(3)/fpathconf(3) with _PC_LINK_MAX.
- and more...

Currently these features are dropped temporary from aufs4.
See design/08plan.txt in detail.
- nested mount, i.e. aufs as readonly no-whiteout branch of another aufs
  (robr)
- statistics of aufs thread (/sys/fs/aufs/stat)

Features or just an idea in the future (see also design/*.txt),
- reorder the branch index without del/re-add.
- permanent xino files for NFSD
- an option for refreshing the opened files after add/del branches
- light version, without branch manipulation. (unnecessary?)
- copyup in userspace
- inotify in userspace
- readv/writev

2. Download
----------------------------------------
There are three GIT trees for aufs4, aufs4-linux.git,
aufs4-standalone.git, and aufs-util.git. Note that there is no "4" in
"aufs-util.git."
While the aufs-util is always necessary, you need either of aufs4-linux
or aufs4-standalone.

The aufs4-linux tree includes the whole linux mainline GIT tree,
git://git.kernel.org/.../torvalds/linux.git.
And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot
build aufs4 as an external kernel module.
Several extra patches are not included in this tree. Only
aufs4-standalone tree contains them. They are describe in the later
section "Configuration and Compilation."

On the other hand, the aufs4-standalone tree has only aufs source files
and necessary patches, and you can select CONFIG_AUFS_FS=m.
But you need to apply all aufs patches manually.

You will find GIT branches whose name is in form of "aufs4.x" where "x"
represents the linux kernel version, "linux-4.x". For instance,
"aufs4.0" is for linux-4.0. For latest "linux-4.x-rcN", use
"aufs4.x-rcN" branch.

o aufs4-linux tree
$ git clone --reference /your/linux/git/tree 	git://github.com/sfjro/aufs4-linux.git aufs4-linux.git
- if you don‘t have linux GIT tree, then remove "--reference ..."
$ cd aufs4-linux.git
$ git checkout origin/aufs4.0

Or You may want to directly git-pull aufs into your linux GIT tree, and
leave the patch-work to GIT.
$ cd /your/linux/git/tree
$ git remote add aufs4 git://github.com/sfjro/aufs4-linux.git
$ git fetch aufs4
$ git checkout -b my4.0 v4.0
$ (add your local change...)
$ git pull aufs4 aufs4.0
- now you have v4.0 + your_changes + aufs4.0 in you my4.0 branch.
- you may need to solve some conflicts between your_changes and
  aufs4.0. in this case, git-rerere is recommended so that you can
  solve the similar conflicts automatically when you upgrade to 4.1 or
  later in the future.

o aufs4-standalone tree
$ git clone git://github.com/sfjro/aufs4-standalone.git aufs4-standalone.git
$ cd aufs4-standalone.git
$ git checkout origin/aufs4.0

o aufs-util tree
$ git clone git://git.code.sf.net/p/aufs/aufs-util aufs-util.git
- note that the public aufs-util.git is on SourceForge instead of
  GitHUB.
$ cd aufs-util.git
$ git checkout origin/aufs4.0

Note: The 4.x-rcN branch is to be used with `rc‘ kernel versions ONLY.
The minor version number, ‘x‘ in ‘4.x‘, of aufs may not always
follow the minor version number of the kernel.
Because changes in the kernel that cause the use of a new
minor version number do not always require changes to aufs-util.

Since aufs-util has its own minor version number, you may not be
able to find a GIT branch in aufs-util for your kernel‘s
exact minor version number.
In this case, you should git-checkout the branch for the
nearest lower number.

For (an unreleased) example:
If you are using "linux-4.10" and the "aufs4.10" branch
does not exist in aufs-util repository, then "aufs4.9", "aufs4.8"
or something numerically smaller is the branch for your kernel.

Also you can view all branches by
	$ git branch -a

3. Configuration and Compilation
----------------------------------------
Make sure you have git-checkout‘ed the correct branch.

For aufs4-linux tree,
- enable CONFIG_AUFS_FS.
- set other aufs configurations if necessary.

For aufs4-standalone tree,
There are several ways to build.

1.
- apply ./aufs4-kbuild.patch to your kernel source files.
- apply ./aufs4-base.patch too.
- apply ./aufs4-mmap.patch too.
- apply ./aufs4-standalone.patch too, if you have a plan to set
  CONFIG_AUFS_FS=m. otherwise you don‘t need ./aufs4-standalone.patch.
- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your
  kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild.
- enable CONFIG_AUFS_FS, you can select either
  =m or =y.
- and build your kernel as usual.
- install the built kernel.
  Note: Since linux-3.9, every filesystem module requires an alias
  "fs-<fsname>". You should make sure that "fs-aufs" is listed in your
  modules.aliases file if you set CONFIG_AUFS_FS=m.
- install the header files too by "make headers_install" to the
  directory where you specify. By default, it is $PWD/usr.
  "make help" shows a brief note for headers_install.
- and reboot your system.

2.
- module only (CONFIG_AUFS_FS=m).
- apply ./aufs4-base.patch to your kernel source files.
- apply ./aufs4-mmap.patch too.
- apply ./aufs4-standalone.patch too.
- build your kernel, don‘t forget "make headers_install", and reboot.
- edit ./config.mk and set other aufs configurations if necessary.
  Note: You should read $PWD/fs/aufs/Kconfig carefully which describes
  every aufs configurations.
- build the module by simple "make".
  Note: Since linux-3.9, every filesystem module requires an alias
  "fs-<fsname>". You should make sure that "fs-aufs" is listed in your
  modules.aliases file.
- you can specify ${KDIR} make variable which points to your kernel
  source tree.
- install the files
  + run "make install" to install the aufs module, or copy the built
    $PWD/aufs.ko to /lib/modules/... and run depmod -a (or reboot simply).
  + run "make install_headers" (instead of headers_install) to install
    the modified aufs header file (you can specify DESTDIR which is
    available in aufs standalone version‘s Makefile only), or copy
    $PWD/usr/include/linux/aufs_type.h to /usr/include/linux or wherever
    you like manually. By default, the target directory is $PWD/usr.
- no need to apply aufs4-kbuild.patch, nor copying source files to your
  kernel source tree.

Note: The header file aufs_type.h is necessary to build aufs-util
      as well as "make headers_install" in the kernel source tree.
      headers_install is subject to be forgotten, but it is essentially
      necessary, not only for building aufs-util.
      You may not meet problems without headers_install in some older
      version though.

And then,
- read README in aufs-util, build and install it
- note that your distribution may contain an obsoleted version of
  aufs_type.h in /usr/include/linux or something. When you build aufs
  utilities, make sure that your compiler refers the correct aufs header
  file which is built by "make headers_install."
- if you want to use readdir(3) in userspace or pathconf(3) wrapper,
  then run "make install_ulib" too. And refer to the aufs manual in
  detail.

There several other patches in aufs4-standalone.git. They are all
optional. When you meet some problems, they will help you.
- aufs4-loopback.patch
  Supports a nested loopback mount in a branch-fs. This patch is
  unnecessary until aufs produces a message like "you may want to try
  another patch for loopback file".
- vfs-ino.patch
  Modifies a system global kernel internal function get_next_ino() in
  order to stop assigning 0 for an inode-number. Not directly related to
  aufs, but recommended generally.
- tmpfs-idr.patch
  Keeps the tmpfs inode number as the lowest value. Effective to reduce
  the size of aufs XINO files for tmpfs branch. Also it prevents the
  duplication of inode number, which is important for backup tools and
  other utilities. When you find aufs XINO files for tmpfs branch
  growing too much, try this patch.

4. Usage
----------------------------------------
At first, make sure aufs-util are installed, and please read the aufs
manual, aufs.5 in aufs-util.git tree.
$ man -l aufs.5

And then,
$ mkdir /tmp/rw /tmp/aufs
# mount -t aufs -o br=/tmp/rw:${HOME} none /tmp/aufs

Here is another example. The result is equivalent.
# mount -t aufs -o br=/tmp/rw=rw:${HOME}=ro none /tmp/aufs
  Or
# mount -t aufs -o br:/tmp/rw none /tmp/aufs
# mount -o remount,append:${HOME} /tmp/aufs

Then, you can see whole tree of your home dir through /tmp/aufs. If
you modify a file under /tmp/aufs, the one on your home directory is
not affected, instead the same named file will be newly created under
/tmp/rw. And all of your modification to a file will be applied to
the one under /tmp/rw. This is called the file based Copy on Write
(COW) method.
Aufs mount options are described in aufs.5.
If you run chroot or something and make your aufs as a root directory,
then you need to customize the shutdown script. See the aufs manual in
detail.

Additionally, there are some sample usages of aufs which are a
diskless system with network booting, and LiveCD over NFS.
See sample dir in CVS tree on SourceForge.

5. Contact
----------------------------------------
When you have any problems or strange behaviour in aufs, please let me
know with:
- /proc/mounts (instead of the output of mount(8))
- /sys/module/aufs/*
- /sys/fs/aufs/* (if you have them)
- /debug/aufs/* (if you have them)
- linux kernel version
  if your kernel is not plain, for example modified by distributor,
  the url where i can download its source is necessary too.
- aufs version which was printed at loading the module or booting the
  system, instead of the date you downloaded.
- configuration (define/undefine CONFIG_AUFS_xxx)
- kernel configuration or /proc/config.gz (if you have it)
- behaviour which you think to be incorrect
- actual operation, reproducible one is better
- mailto: aufs-users at lists.sourceforge.net

Usually, I don‘t watch the Public Areas(Bugs, Support Requests, Patches,
and Feature Requests) on SourceForge. Please join and write to
aufs-users ML.

6. Acknowledgements
----------------------------------------
Thanks to everyone who have tried and are using aufs, whoever
have reported a bug or any feedback.

Especially donators:
Tomas Matejicek(slax.org) made a donation (much more than once).
	Since Apr 2010, Tomas M (the author of Slax and Linux Live
	scripts) is making "doubling" donations.
	Unfortunately I cannot list all of the donators, but I really
	appreciate.
	It ends Aug 2010, but the ordinary donation URL is still available.
	<http://sourceforge.net/donate/index.php?group_id=167503>
Dai Itasaka made a donation (2007/8).
Chuck Smith made a donation (2008/4, 10 and 12).
Henk Schoneveld made a donation (2008/9).
Chih-Wei Huang, ASUS, CTC donated Eee PC 4G (2008/10).
Francois Dupoux made a donation (2008/11).
Bruno Cesar Ribas and Luis Carlos Erpen de Bona, C3SL serves public
	aufs2 GIT tree (2009/2).
William Grant made a donation (2009/3).
Patrick Lane made a donation (2009/4).
The Mail Archive (mail-archive.com) made donations (2009/5).
Nippy Networks (Ed Wildgoose) made a donation (2009/7).
New Dream Network, LLC (www.dreamhost.com) made a donation (2009/11).
Pavel Pronskiy made a donation (2011/2).
Iridium and Inmarsat satellite phone retailer (www.mailasail.com), Nippy
	Networks (Ed Wildgoose) made a donation for hardware (2011/3).
Max Lekomcev (DOM-TV project) made a donation (2011/7, 12, 2012/3, 6 and
11).
Sam Liddicott made a donation (2011/9).
Era Scarecrow made a donation (2013/4).
Bor Ratajc made a donation (2013/4).
Alessandro Gorreta made a donation (2013/4).
POIRETTE Marc made a donation (2013/4).
Alessandro Gorreta made a donation (2013/4).
lauri kasvandik made a donation (2013/5).
"pemasu from Finland" made a donation (2013/7).
The Parted Magic Project made a donation (2013/9 and 11).
Pavel Barta made a donation (2013/10).
Nikolay Pertsev made a donation (2014/5).
James B made a donation (2014/7).
Stefano Di Biase made a donation (2014/8).
Daniel Epellei made a donation (2015/1).

Thank you very much.
Donations are always, including future donations, very important and
helpful for me to keep on developing aufs.

7.
----------------------------------------
If you are an experienced user, no explanation is needed. Aufs is
just a linux filesystem.

Enjoy!

# Local variables: ;
# mode: text;
# End: ;

aufs-util.git tree

README in aufs-util


Contributions

Michael S. Zick wrote good examples, and made them public.


aufs2-util.git tree (obsolete)

README in aufs2-util

Reports around aufs2

PDF Filesystems in LiveCD

Samples in aufs2-util

cluster aufs for cluster
brsync rsync between aufs branches
shwh Show Whiteout mode
auroot chroot-ed/jail environment for internet
auware aufs for VMware Appliance
vserver aufs for Linux-VServer
logrow expand the size of the mounted loopback block device
uloop loopback block device in userspace

Aufs1 (obsoleted)

README for aufs1
aufs.5 for aufs1
tips from users
history of aufs1

时间: 2024-10-10 07:49:03

linux4.1.6+aufs4.1的相关文章

linux4.10.8 内核移植(三)---裁剪内核

一.裁剪内核 1.1 第一次修改 现在的内核大小为2.8M左右,要裁剪到2.0M以下,毕竟给内核分区就只有2.0M. 这两个设备我们没有,裁剪掉. 进入make menuconfig中,搜索mousedev: 进入里面按需要进行裁剪. 搜索 lp: hostname修改: 文件系统再此修改: 去掉如下选项: 再次进入device driver,->input device->touch creen 配置上 去掉: 修改完后,保存.然后编译执行,查看uImage的大小 裁剪出来的大小为2.66M

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell 阿里云现在提供的云服务器很好用的,用来编译内核性能也不错.本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行. 如果不是root用户可以使用su命令切换到root用户. 注:使用xshell的时候最好把这一项给关闭了(工具——选项——高级) 一.环境准备 1.准备linux源码和补丁,可以在官网(http://www.kernel.org)上下载,这里我们下载4.5版本. 不过阿里提供了http://mir

编译Linux-4.9.9内核流程记录

本文部分资料出自: http://www.cnblogs.com/xiaocen/p/3717993.html 首先下载代码: https://www.kernel.org/pub/linux/kernel/v4.x/ 解压到/usr/src (似乎编译内核必须在这) 进入/usr/src 执行: ln -sv linux-3.13.2 linux 进入 /usr/scr/linux-4.9.9/ 以下配置: 不建议选第一个,要很久.. make config:遍历选择所要编译的内核特性 mak

编译linux-4.2.1+busybox-1.23.2构建简单系统

一.准备相关环境和软件包 # yum groupinstall -y "Development Tools"           ##批量安装编译环境 # yum install -y ncurses ncurses-devel          ##安装字符终端处理库,包括面板和菜单 # yum install -y libmcrypt libmcrypt-devel glibc-static  ##安装加密算法扩展库.libc静态库 # yum install -y grub2-t

linux4.10.8 内核移植(一)---环境搭建及适配单板。

一.环境搭建 源码包下载:git clone https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.10.8.tar.gz 或者直接去kernel.org上面进行下载. 交叉编译工具链制作: 这个已经在u-boot移植中已经做过了:http://www.cnblogs.com/kele-dad/p/6910040.html 二.内核启动过程 2.1 Windows 和 Linux 系统的启动区别 由bootloader确定启动哪块单板. 2.2

向tiny6410中移植中移植linux-4.5.1内核(最新)

下载linux-4.5.1.tar.gz 解压在任意目录下.我解压在/home/tiny6410/ # tar xvzf linux-4.5.1.tar.gz # cd linux-4.5.1/ 修改Makefile文件 在第251和252行上  改成自己的交叉编译器 251 ARCH ?= arm 252 CROSS_COMPILE ?= arm-linux- 在linux源码文件中有一个三星Demo板的默认配置 这里我们的配置文件就先用这个  arch/arm/configs/s3c6400

Linux-4.查看网卡信息,状态

Linux-4.查看网卡信息 1.查看有几张网卡,也能看出网卡控制器的制造商信息lspci | grep -i -E --color 'network|ethernet' [实例][email protected]:~# lspci |grep -i eth02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5716 Gigabit Ethernet (rev 20)02:00.1 Ethernet controll

LINUX系统开启故障排错及linux-4.16.8内核编译安装

1.破解root口令,并为grub设置保护功能 1).进入单用户模式 在 GRUB 启动菜单里使用 "e" 操作按键进入 CentOS 的启动菜单向界面 ,移动光标至"kernel"配置项一行,在末尾加入single,ctrl+x,然后进入bash#页面2).进入单用户模式后,不需要输入用户名和口令,系统启动完成后将直接获得管理员 root 的权限,控制台的提示符为"#",需要以rw方式挂载/ mount -o remount rw /3).输入

vm + Linux14.04 + Linux-4.4.125的内核

VM + Linux14.04 + 4.4.125kernel编译 前言:安装步骤网上较多,所以本文重在记录编译过程中遇到的问题,不具有普适性 必备技能: ~,/ 等符号代表哪些目录: 熟悉常见的命令,如cp.解压文件 等 问题1 提示权限不够 ? 最简单的办法是命令前面加sudo,比如sudo cp linux-4.4.125 \program 问题2 在编译阶段,由于硬盘空间不够并且意外关闭了虚拟机,导致重新启动虚拟机时,显示不了登录界面或者循环显示登录界面 Ctrl + Alt + F5