1.安装必要的软件
sudo apt-get install vim libncurses5-dev gcc make git exuberant-ctags
2.配置内核源码仓库
创建仓库目录:
mkdir -p git/kernels; cd git/kernels
同步内核源码到仓库: git clone -b staging-next git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
3.设置内核配置
复制对应的config文件为".config"到内核源码目录,其中"uname -r"为获取内核版本的命令。
cd ~/git/kernels/staging
cp /boot/config-'uname -r'* .config
修改配置
使用如下make方式的一种进行配置:
1)如果.config不存在,运行make config/menuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。
2)如果.config存在,运行make config/menuconfig时的缺省设置即是当前.config的设置,若对设置进行了修改,.config将被更新。
3)arch/arm/defconfig是一个缺省的配置文件,make defconfig时会根据这个文件生成当前的.config。
4)arch/arm/configs文件夹中有许多命名为xxx_defconfig的配置文件,如果运行make xxx_defconfig,当前.config文件会由xxx_defconfig文件生成。
5)make oldconfig时的缺省设置即是当前.config的设置,只有新属性需要手动设置,并且备份当前.config文件为.config.old,如若make config/menuconfig设置不当可用于恢复先前的.config。
6)"make silentoldconfig"时的缺省设置即是当前.config的设置,同时升级依赖属性。
7)"make olddefconfig"时的缺省设置即是当前.config的设置,但新属性设置为默认值,不再提醒。
8)“make menuconfig“基于文本的彩色菜单、单选列表、对话框。
4.编译内核
如果使用多核处理器,则可以在make时指定多核来加快编译速度,make -jx (x为用于编译的核心数)
make
或者
make -jx
5.安装编译好的内核
要安装内核,需要升级GRUB配置文件或者使用installkernel脚本,执行这个脚本会安装内核到/boot/,安装模块到/lib/modules/x.y.z(x.y.z类似于3.1.5),并且升级文件 /boot/grub/grub.conf。十分幸运,Ubuntu提供了这样的脚本,位于/sbin/installkernel。
可以使用如下指令,运行这个脚本
sudo make modules_install install
或者
su -c "make modules_install install"
6.运行你的内核
linux保存了旧的和新的内核,所以在新内核运行出错时,我们可以引导运行旧的内核。引导程序grub可以让我们选择运行新的或旧的内核。
有些linux发行版本默认跳过grub引导选项界面,直接引导默认的内核。
我们可以通过如下操作,设置系统启动时进入grub引导选项界面。
sudo vim /etc/default/grub
删除如下两行 GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
如下配置项,用于配置grub引导选项界面的显示时间。
GRUB_TIMEOUT=0
配置完成后,使用如下指令升级grub。
sudo update-grub2
7.Email 软件
安装email传输客户端 sudo apt-get install esmtp
安装基于文字界面的email客户端
sudo apt-get install mutt
如果需要使用git发送邮件的命令发送邮件,那就必须安装git-email软件包
sudo apt-get install git-email
8.可选工具
安装图形化界面git工具
sudo apt-get install gitk
9.建立索引工程
在 git/kernels/staging/ 文件夹里,执行如下指令建立源码索引工程
make tags
建立索引后,为了是vim可以使用该索引工程,需要在 /etc/vim/vimrc 文件添加如下内容
set tags=/"生成tags的路径"/tags
例如:
set tags=~/git/kernels/staging/tags
ctags的详细使用方法,见 http://vim.wikia.com/wiki/Browsing_programs_with_tags
本博文翻译于 http://kernelnewbies.org/OutreachyfirstpatchSetup?action=show&redirect=OPWfirstpatchSetup