安装intel wifi link 5100 AG无线网卡驱动程序,mac80211-10.0.4子系统的readme文件翻译

/*802.11子系统包*/

README for external mac80211 subsystem package

Copyright (c) 2007, Intel Corporation
version: mac80211-10.0.4

date   : Mon Jan  7 18:42:07 PST 2008

/*这个mac80211子系统包可以在大多数2.6.18版本以上内核安装,你可以通过 uname -r确定你linux的内核版本*/

This archive provides a package for the mac80211 subsystem, 
installable into most kernels with a version of 2.6.18 or
later.  You can determine your kernel version by running:

% uname -r

/*注:mac80211子系统被一群团体开发。为了使它被更广泛的使用,intel把这些包装系统放在一起*/

NOTE:  The mac80211 subsystem is being developed by a group of
community developers.  Intel put together this packaging system
in order to better facilitate the widespread availability and
adoption of the subsystem.

/*这个文件概述了mac80211包为什么存在,它有什么用,怎样安装使用它。*/
This file provides an overview of why the mac80211 package exists,
what it does, and how it does it.

/*索引*/
Index
Quick steps
Why?
What?
How?
What is in a release?
Makefile targets
Updating compatiblity
Version numbering

/*快速安装步骤*/
Quick steps

/*如果你是一个仅仅想要尽可能快的尝试运行它的用户,下面是一些到目前为止最简单的步骤*/
If you're a user that just wants to try and get up and running
as quickly as possible, here are the simplest steps we have so

far:

% make patch_kernel

/*上面这一步,如果运行成功的话,你的当前内核源码树应该已经包含 mac80211 子系统了。接着你应该配置你的内核,加载mac80211 子系统模块*/

/*本人注:我是linux2.6.20版本的内核,在运行这一命令时,提示 “兼容性”问题。*/

The above, if it succeeds, should patch your current running 
kernel source tree to contain the mac80211 subsystem sources.  Now
you need to configure your kernel build to build the mac80211
modules:

/*切换到当前内核源码目录下,配置内核*/
% cd /lib/modules/$(uname -r)/build
% make menuconfig

/*按下面进行设置*/
You will want to set the following to <M>:
CONFIG_MAC80211=m

        Networking --->
  Generic IEEE 802.11 Networking Stack (dscape)

You can turn on the sub-options for that subsystem if you want.

/*保存配置,并退出*/
Select 'Exit' until it prompts to save your kernel configuration
and select 'Yes'.  Now you can build the module:

% make modules
% make modules_install

/*注:从mac80211-2.0.0起,你必须配置CONFIG_CFG80211,并且重建你的内核镜像*/
NOTE:  As of mac80211-2.0.0 you must also enable CONFIG_CFG80211 and 
rebuild your main kernel image.  This is because the latest mac80211 
changes re-implement the kernel built-in from net/core/wireless.c as 
part of the net/wireless/ sources.

% make all
% make install

/*从新内核启动*/
You will then need to reboot into the new kernel (vs. just loading the 
new 80211 modules)

Why?
/*linux内核的网络团体通常都是这方面的顶尖人员,对于普通用户而言如果你能升级到最新的内核那意味着漏洞修补,打补丁,增强功能将对你有用。对有些人而言,这是可以接受的,对其他人而言,则不能。*/
The network community for the Linux kernel typically has an 
approach of focusing purely on the 'tip'.  To the average 
user that means that bug fixes, patches, and enhancements will
only be available to you if you can upgrade to the latest
development kernel.  For some, this is acceptable.  For others,
it is not.

/*这个包可以增加系统的无线功能*/
This package is created in order to try and provide the user (you)
with fixes and enhancements that affect *just* the wireless 
subsystem required for use with your hardware.  


As with any software, new changes may introduce new bugs.  
Upgrading from one version of the mac80211 subsystem to the 
next might regress a problem, or even introduce a new one -- 
if it does, and you find it, please file a bug at 
http://bughost.org under the project 'mac80211'.


What?

So what does this package contain?  It represents the latest
version of the mac80211 as available via the GIT repository 
hosted at:


git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-dev.git


In addition to the above, any patches submitted by the mac80211 subsystem 
developers which are deemed to be bug fixes or improve existing 
functionality which have not been made available in the GIT repository.

/*当你在你的系统上运行make的时候,脚本程序检查你的目标内核确定哪些兼容性改变需要在你的系统上编译*/
When you run make on your system, the build scripts will examine your 
target kernel to determine which backward compatibility changes are 
required to compile on your system.  A side effect of the mac80211 
developers using the latest kernel tip as their baseline is that the 
subsystem itself emerges to use whichever new features or APIs may have 
been made available in the rest of the kernel.  This will typically 
break building and running on kernels released prior to those changes.  
The build system for this package attempts to correct that behavior.




How?

/*目标内核通过KSRC=/patch/to/kernel指定,如果没有指定,默认在下面目录中查找*/
When you run the build, it runs a series of scripts against the 
target kernel. The target is specified via KSRC=/patch/to/kernel.
If no KSRC is provided, it will default to looking in:

/lib/modules/$(uname -r)/build

/*每一个脚本都试着确定被调用的内核功能是否是当前所用的内核版本的。在以前,一个模块程序通常像下面这样写*/
Each of the scripts attempts to determine if a given set of
kernel functionality is present.  In the good old days, a module
could do something simple like:


#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
/* some code */
#else
/* some other code */
#endif

/*在最近几年,因为一些原因不用这些方法了。两个最重要的原因是因为:*/
Over the last few years, however, this approach has broken due
to a number of reasons.  The two most prominent causes are:

/*在一个更新后,内核API和结构会变化(这种更新不能通过KERNEL_VERSION宏来检查)*/
* Kernel API and structure changes occurring within
 an -rc update (which can not be checked with the 
 KERNEL_VERSION macro)

* Distributions backporting new kernel features into
 older kernels such that the older vanilla kernel 
 (as originally provided by Linus) does not have the
 feature but the distributor does.

/*一个说明脚本程序在干什么的例子是在一个特殊的头文件上运行一个“grep“查找命令来确定参数传给函数时是否已经改变或者是否存在一个特殊的定义*/
An example of what a script might do is perform a grep operation
on a particular header file to determine if the parameters
passed to a function have changed, or if a particular definition
exists.


What is in a release?

The details of how a typical release cycle is as follows:

1.  Latest files are obtained from Jiri's GIT
    repository into a local GIT tree (eg., /repos/jbenc)


2.  mac80211 subsystem files are copied from the GIT tree into
    the 'origin' directory via:


% make BASE=/repos/jbenc origin


3.  The patches in the 'pending' directory are applied to the
    'origin' in numerical sequence to build a new tree stored
    in the 'modified' directory.

/*进行各种测试*/
4.  Miscellaneous testing is performed (build iwlwifi, associate, 
    etc.)


5.  The files in 'stubs' are sourced with the following 
    environment variables defined:
MAC80211_VERSION=versionstring
    with the output of that sourcing going into the base
    directory as a file with the same name (eg., stubs/README
    creates README).  This is used to update the documentation
    to contain the latest version fields.


6.  The package is tarballed up with a version stamp named:
mac80211-${MAC80211_VERSION}.tgz


7*. A test system performs a tinderbox build of the package 
    against:
* Linus' vanilla kernels > 2.6.18
* Latest kernel sources version available as a 'stable' 
 package from the following distributions (alphabetical):


Fedora Core
Gentoo
OpenSuse
Ubuntu


  * This is not yet done.  Currently I have to do the smoke test
    build by hand, which means I'm only building against the latest
    Gentoo kernel and a couple other random kernel images I have on
    my system.



/*Makefile 的目标*/
Makefile targets

/*构建文件(Makefile,Kbuild,etc.)支持多个目标取决于你想做什么。这一段文字简单对每个目标进行了一些概述。*/
The build supports multiple targets depending on what you 
are trying to do.  This section provides an overview of each
of those targets.

clean
Removes *.ko, *.o, and *.mod.c from the tree.  This
also deletes the compat directory (built with the 
source target)

See Makefile

origin
Updates the tip sources.  Specify the source repository
via BASE= on the make command line.  

NOTE:  The script will not perform any GIT fetching 
from the Internet and will only copy the mac80211 related 
files from the directory specified.  If you want to 
update to the latest GIT version you would need to 
first obtain Jiri Benc's GIT repository and then direct
the make to that directory via BASE.  By default,
the script will look in /home/repos/mac80211/

Once the tip files are copied, the patches in 'pending'
are applied in sequential order.

See scripts/generate_origin
/*从 'pending' 目录创建一个 'tip' 应用所有的补丁文件*/
modified
Creates a modified 'tip' applying all of the patches
from the 'pending' directory.


See scripts/generate_modified
/*检查目标内核跟mac80211源程序是否兼容, 并且从 'modified' 目录到'compatitble'目录,创建一个源程序兼容版本。*/
source
Examines if the target kernel can be used without
any changes to the modified mac80211 sources provided in the
tip directory and creates a compatible version of the
sources from 'modified' in the 'compatitble' directory.


See scripts/generate_source

/*检查目标内核跟mac80211源程序是否兼容,并且从 'origin' 目录到'compatitble'目录,创建一个源程序兼容版本。 */
unmodified
Examines if the target kernel can be used without
any changes to the modified mac80211 sources provided in the
tip directory and creates a compatible version of the
sources from 'origin' in the 'compatitble' directory.

/*如果你想要一个纯正的与你内核兼容的 mac80211版本,你通常要用到这个。*/
You would typically use this if you want a "pure" version
of mac80211 compatible with your kernel.

See scripts/generate_source

/*转移生成的或者顶端源码到目标内核。为了把mac80211子系统加进配置文件,这个命令也会给内核配置文件(Makefile, Kconfig, etc.)打补丁。*/
patch_kernel
Transfers the generated or tip sources into the target
kernel.  This will also patch the required kernel
build files (Makefile, Kconfig, etc.) as needed in order
to add the mac80211 subsystem to the build.

See scripts/patch_kernel

dist
Builds a distribution tarball and places it in the
distros directory.  The filename for the tarball is
mac80211-${MAC80211_VERSION}.tgz.

NOTE:  MAC80211_VERSION defaults to 'test'.


See Makefile


Updating compatibility

/*一旦构建(Makefile,Kbuild,etc.)失败的根本原因被确定,为了使内核正常工作,需要对内核打补丁*/
Ok -- you're developing, or you just moved to a new kernel and
*WHAM* the kernel build breaks.  Once the root cause of the
build failure is determined, a patch is required in order
to support making that kernel 'just work' for everyone else.

/*通常运行下面命令*/
The following are the typical steps performed:

% make source
% mv compatible old
% make source

Now, edit the sources in the compatible/ directory.  You can test
your sources by running:

% make patch_kernel
% cd /lib/modules/$(uname -r)/build
% make menuconfig <-- If you haven't already enabled mac80211
% make modules 

/*一旦构建问题得到满意的解决,接着把它制作成补丁。*/
Once you are satisfied the build problems are fixed, create 
the patch:
% diff -Nupr old compatible > compatible-$(uname -r).patch


The work to this point is a huge help to others in the community
so go ahead and send the patch to the mac80211-devel mailing list.

/*如果你想知道怎样修改你的 mac80211包以便它自动应用你的补丁,请看下面的脚本。*/
If you want to figure out how to modify the mac80211 package so
that it will automatically apply your patch if needed, look
in the following scripts:

scripts/determine_compat
scripts/generate_compatible

Version numbering


The mac80211 package uses a three field versioning scheme:


mac80211-x.y.z.tgz

X will increase whenever a new base/tip is taken from the kernel.
You can see tip/GIT for the commit ID head cached when the
'make update' target was used.


Y will increase as snapshots are made available in the external
package that may contain code which has not yet been merged into
the kernel itself.

Z will increase only as bug or compatibility patches are made
available against a given snapshot.  Z increases will not contain
new functionality and are intended to only provide stability
fixes.

你可能感兴趣的:(git,tree,Build,makefile,patch,networking)