1. 下载内核代码
$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux-stable.git
2. 创建所需分支
2.1 查看所有分支
$ git branch -a
得到类似输出:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/linux-2.6.11.y
remotes/origin/linux-2.6.12.y
remotes/origin/linux-2.6.13.y
remotes/origin/linux-2.6.14.y
remotes/origin/linux-2.6.15.y
remotes/origin/linux-2.6.16.y
remotes/origin/linux-2.6.17.y
remotes/origin/linux-2.6.18.y
remotes/origin/linux-2.6.19.y
remotes/origin/linux-2.6.20.y
remotes/origin/linux-2.6.21.y
remotes/origin/linux-2.6.22.y
remotes/origin/linux-2.6.23.y
remotes/origin/linux-2.6.24.y
remotes/origin/linux-2.6.25.y
remotes/origin/linux-2.6.26.y
remotes/origin/linux-2.6.27.y
remotes/origin/linux-2.6.28.y
remotes/origin/linux-2.6.29.y
remotes/origin/linux-2.6.30.y
remotes/origin/linux-2.6.31.y
remotes/origin/linux-2.6.32.y
remotes/origin/linux-2.6.33.y
remotes/origin/linux-2.6.34.y
remotes/origin/linux-2.6.35.y
remotes/origin/linux-2.6.36.y
remotes/origin/linux-2.6.37.y
remotes/origin/linux-2.6.38.y
remotes/origin/linux-2.6.39.y
remotes/origin/linux-3.0.y
remotes/origin/linux-3.1.y
remotes/origin/linux-3.10.y
remotes/origin/linux-3.11.y
remotes/origin/linux-3.12.y
remotes/origin/linux-3.13.y
remotes/origin/linux-3.14.y
remotes/origin/linux-3.15.y
remotes/origin/linux-3.16.y
remotes/origin/linux-3.17.y
remotes/origin/linux-3.18.y
remotes/origin/linux-3.19.y
remotes/origin/linux-3.2.y
remotes/origin/linux-3.3.y
remotes/origin/linux-3.4.y
remotes/origin/linux-3.5.y
remotes/origin/linux-3.6.y
remotes/origin/linux-3.7.y
remotes/origin/linux-3.8.y
remotes/origin/linux-3.9.y
remotes/origin/linux-4.0.y
remotes/origin/linux-4.1.y
remotes/origin/linux-4.10.y
remotes/origin/linux-4.11.y
remotes/origin/linux-4.12.y
remotes/origin/linux-4.13.y
remotes/origin/linux-4.14.y
remotes/origin/linux-4.15.y
remotes/origin/linux-4.16.y
remotes/origin/linux-4.17.y
remotes/origin/linux-4.2.y
remotes/origin/linux-4.3.y
remotes/origin/linux-4.4.y
remotes/origin/linux-4.5.y
remotes/origin/linux-4.6.y
remotes/origin/linux-4.7.y
remotes/origin/linux-4.8.y
remotes/origin/linux-4.9.y
remotes/origin/master
2.2 创建本地分支
$ git checkout -b linux-3.10.y origin/linux-3.10.y
查看创建后的本地分支情况:
[zoug2016 linux-stable]$ git branch -v
* linux-3.10.y e7a59c7 Linux 3.10.108
master ce397d2 Linux 4.18-rc1
3. 安装依赖xmlto
xmlto的作用: Convert xml to many other formats
$ sudo yum install xmlto
4. 编译mandocs和安装
4.1 编译
$ make mandocs
4.2 安装
$ sudo make installmandocs
5 测试man内核函数帮助
$ man printk
查看内核make支持的选项说明:
$ make help
$ make help
Cleaning targets:
clean - Remove most generated files but keep the config and
enough build support to build external modules
mrproper - Remove all generated files + config + various backup files
distclean - mrproper + remove editor backup and patch files
Configuration targets:
config - Update current config utilising a line-oriented program
nconfig - Update current config utilising a ncurses menu based program
menuconfig - Update current config utilising a menu based program
xconfig - Update current config utilising a QT based front-end
gconfig - Update current config utilising a GTK based front-end
oldconfig - Update current config utilising a provided .config as base
localmodconfig - Update current config disabling modules not loaded
localyesconfig - Update current config converting local mods to core
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
defconfig - New config with default from ARCH supplied defconfig
savedefconfig - Save current config as ./defconfig (minimal config)
allnoconfig - New config where all options are answered with no
allyesconfig - New config where all options are accepted with yes
allmodconfig - New config selecting modules when possible
alldefconfig - New config with all symbols set to default
randconfig - New config with random answer to all options
listnewconfig - List new options
oldnoconfig - Same as silentoldconfig but set new symbols to n (unset)
Other generic targets:
all - Build all targets marked with [*]
* vmlinux - Build the bare kernel
* modules - Build all modules
modules_install - Install all modules to INSTALL_MOD_PATH (default: /)
firmware_install- Install all firmware to INSTALL_FW_PATH
(default: $(INSTALL_MOD_PATH)/lib/firmware)
dir/ - Build all files in dir and below
dir/file.[oisS] - Build specified target only
dir/file.lst - Build specified mixed source/assembly target only
(requires a recent binutils and recent build (System.map))
dir/file.ko - Build module including final link
modules_prepare - Set up for building external modules
tags/TAGS - Generate tags file for editors
cscope - Generate cscope index
gtags - Generate GNU GLOBAL index
kernelrelease - Output the release version string
kernelversion - Output the version stored in Makefile
headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH
(default: /home/zoug/work/linuxLearn/linux-kernel/linux-stable/usr)
Static analysers
checkstack - Generate a list of stack hogs
namespacecheck - Name space analysis on compiled kernel
versioncheck - Sanity check on version.h usage
includecheck - Check for duplicate included header files
export_report - List the usages of all exported symbols
headers_check - Sanity check on exported headers
headerdep - Detect inclusion cycles in headers
coccicheck - Check with Coccinelle.
Kernel packaging:
rpm-pkg - Build both source and binary RPM kernel packages
binrpm-pkg - Build only the binary kernel package
deb-pkg - Build the kernel as an deb package
tar-pkg - Build the kernel as an uncompressed tarball
targz-pkg - Build the kernel as a gzip compressed tarball
tarbz2-pkg - Build the kernel as a bzip2 compressed tarball
tarxz-pkg - Build the kernel as a xz compressed tarball
perf-tar-src-pkg - Build perf-3.2.102.tar source tarball
perf-targz-src-pkg - Build perf-3.2.102.tar.gz source tarball
perf-tarbz2-src-pkg - Build perf-3.2.102.tar.bz2 source tarball
perf-tarxz-src-pkg - Build perf-3.2.102.tar.xz source tarball
Documentation targets:
Linux kernel internal documentation in different formats:
htmldocs - HTML
pdfdocs - PDF
psdocs - Postscript
xmldocs - XML DocBook
mandocs - man pages
installmandocs - install man pages generated by mandocs
cleandocs - clean all generated DocBook files
Architecture specific targets (x86):
* bzImage - Compressed kernel image (arch/x86/boot/bzImage)
install - Install kernel using
(your) ~/bin/installkernel or
(distribution) /sbin/installkernel or
install to $(INSTALL_PATH) and run lilo
fdimage - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)
fdimage144 - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)
fdimage288 - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)
isoimage - Create a boot CD-ROM image (arch/x86/boot/image.iso)
bzdisk/fdimage*/isoimage also accept:
FDARGS="..." arguments for the booted kernel
FDINITRD=file initrd for the booted kernel
x86_64_defconfig - Build for x86_64
i386_defconfig - Build for i386
make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build
make V=2 [targets] 2 => give reason for rebuild of target
make O=dir [targets] Locate all output files in "dir", including .config
make C=1 [targets] Check all c source with $CHECK (sparse by default)
make C=2 [targets] Force check of all c source with $CHECK
make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections
make W=n [targets] Enable extra gcc checks, n=1,2,3 where
1: warnings which may be relevant and do not occur too often
2: warnings which occur quite often but may still be relevant
3: more obscure warnings, can most likely be ignored
Multiple levels can be combined with W=12 or W=123
Execute "make" or "make all" to build all targets marked with [*]
For further info see the ./README file