linux编译内核timer frequency,debian内核编译过程记录(使用kernel-package方法添加ftrace+gcov+CPU抢占模式+cgroup+ timer freque...

1.

之前我们编译内核一般也就是使用make -->make modules_install -->make install --> update-grub 这一系列步骤,自从知道Debian、Ubuntu 机器上可以使用 kernel-package 神器来编译安装内核,上述方法就被我等菜鸟摒弃了。

kernel-package是Debian提供的一个编译Linux内核的一个工具集,安装kernel-package 会同时安装上

build-essential、libncurses-dev、linux-source等一系列工具。

该等神器的神奇之处可以在如下链接中体会进行体会:

http://blog.csdn.net/wangyezi19930928/article/details/23833375

看完这个工具的厉害之后,还是编译一个内核体验一下kernel-package的真正威力:

# cd   linux-3.9.11/   // 进入你想要编译的内核的解压文件夹

# make defconfig   //  arch/arm/defconfig是一个缺省的配置文件,

make defconfig时会根据这个文件生成当前的.config

# make menuconfig   // 编译内核,自己选择(在此过程中一定要把适合自己机器的驱动选好,不然会遇到各种问题,我就遇到了gnome3不被支持的问题,原因是因为显卡驱动没有装好!)

# sudo CONCURRENCY_LEVEL=4 make-kpkg --initrd kernel-image

// 这一句就是在使用kernel-package在编译,CONCURRENCY_LEVEL=4 是设置多线程

(类似于我们make -j4的多线程控制),make-kpkg就是kernel-package提供的编译工具,make-kpkg的安装包是kernel-package。

--initrd参数是说明在生成的image包里有initrd。

1. --initrd: 生成initramfs

2. --revision: deb文件的版本信息,需要数字开头,如10.04.dlrc

3. --append-to-version: 内核版本附加信息

4. kernel_image:内核和模块的安装包

5. kernel_headers,生成内核头文件的安装包。//一般在编译内核时都要加上这个参数,这样在开机grub时可以

有详细的提示信息。

eg:

1.sudo CONCURRENCY_LEVEL=16 make-kpkg --initrd --append-to-version=-gcov kernel_image

2.

sudo make-kpkg --initrd --reversion 10.04.dlrc --append-ro-version -2013121 kernel_image

3.

sudo make-kpkg --initrd --reversion 10.04.dlrc --append-ro-version -2013121 kernel_image kernel_headers

……

dpkg --build                        /home/wangye/kernel-sources/linux-3.9.11/debian/linux-headers-3.9.11-gcov ..

dpkg-deb:正在新建软件包 linux-headers-3.9.11-gcov,包文件为 ../linux-headers-3.9.11-gcov_3.9.11-gcov-10.00.Custom_amd64.deb。

cp -pf debian/control.dist          debian/control

make[2]: Leaving directory `/home/wangye/kernel-sources/linux-3.9.11'

make[1]: Leaving directory `/home/wangye/kernel-sources/linux-3.9.11'

从上面的信息可以看出,我们的make-kpkg生成了一个deb文件,其实这就是我们编译好的内核,

放在当前内核文件夹的上层目录。

#cd ..

linux-headers-3.9.11-gcov_3.9.11-gcov-10.00.Custom_amd64.deb

到此我们的编译工作结束,我们可以使用dpkg 安装我们刚编译好的目录!当然……如果你的编译的内核对其他机器也适用,你可以拷贝这个deb文件到其他机器上直接安装使用。这是神器的一大优势。

#sudo dpkg -i  linux-headers-3.9.11-gcov_3.9.11-gcov-10.00.Custom_amd64.deb

// dpkg  -i 安装生成的deb格式image文件

所以这个神器使得我们编译内核工作变得更加简单快捷。当然如果仅限于此还不能称之为神器!我们使用kernel-package编译内核最大的好处是我们可以使用  dpkg -r 删除我们编译的内核。

如上: 安装我们使用的是 sudo dpkg -i linux-image-3.4.33_3.4.33-10.00.Custom_i386.deb

时我们可以直接使用: sudo dpkg -r  linux-image-3.4.33

Eg:

wangye@wangye:~/kernel-sources$ ls

linux-3.9.11

linux-3.9.11.tar.bz2

linux-headers-3.9.11-gcov_3.9.11-gcov-10.00.Custom_amd64.deb

linux-image-3.9.11-gcov_3.9.11-gcov-10.00.Custom_amd64.deb

linux-image-3.9.11-sil4_3.9.11-sil4-10.00.Custom_amd64.deb               //卸载安装之后的该版本内核!

wangye@wangye:~/kernel-sources$ sudo dpkg -r linux-image-3.9.11-sil4

[sudo] password for wangye:

(正在读取数据库 ... 系统当前共安装有 149088 个文件和目录。)

正在卸载 linux-image-3.9.11-sil4 ...

Examining /etc/kernel/prerm.d.

Examining /etc/kernel/postrm.d .

run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.9.11-sil4 /boot/vmlinuz-3.9.11-sil4

update-initramfs: Deleting /boot/initrd.img-3.9.11-sil4

run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.9.11-sil4 /boot/vmlinuz-3.9.11-sil4

Generating grub.cfg ...

Found background image: /usr/share/images/desktop-base/desktop-grub.png

Found linux image: /boot/vmlinuz-3.9.11-gcov

Found initrd image: /boot/initrd.img-3.9.11-gcov

Found linux image: /boot/vmlinuz-3.2.0-4-amd64

Found initrd image: /boot/initrd.img-3.2.0-4-amd64

done                                                                                #卸载完毕!!

2.

内核添加选项:

2.1  ftrace需要:

72263d0d593ee61425a294597bacb132.png

8968c5dfd42ca931d8640c1b4e2656b7.pngdfe074c4309ec638697ce4073fda8c1a.png

2.2:gcov 需要:

3853ded005ea68a0f9bf3079943ceef0.png

07026a4c6b1226e9a4e4391e06084a4a.png

0a076288d3d8c5b28e795b8b33db6dc5.png

3.3 :Cgroup 选项:

[*] 64-bit kernel

General setup  --->

[*] Control Group support  --->

[*]   Example debug cgroup subsystem

[*]   Freezer cgroup subsystem

......

[*]   Block IO controller

[*]     Enable Block IO controller debugging

3.4 CPU 抢占模式选项:

Processor type and features  --->

[*] Multi-core scheduler support

Preemption Model (Preemptible Kernel (Low-Latency Desktop))

( ) No Forced Preemption (Server)

(X) Voluntary Kernel Preemption (Desktop)

( ) Preemptible Kernel (Low-Latency Desktop)

######

(X) Voluntary Kernel Preemption (Desktop)

适合普通桌面环境的自愿内核抢占这个选项通过向内核添加更多的“清晰抢先点”来减少内核延迟。这些新的抢先点以降低吞吐量的代价,来降低内核的最大延迟, 提供更快的应用程序响应。这通过允许低优先级的进程自动抢先来响应事件,即使进程在内核中进行系统调用。这使得应用程序运行得更“流畅”,即使系统已经是 高负荷运转。如果你是为桌面系统编译内核,选这项。

( ) Preemptible Kernel (Low-Latency Desktop)

适合运行实时程序的主动内核抢占这个选项通过使所有内核代码(非致命部分)编译为“可抢先”来降低内核延迟。这通过允许低优先级进程进行强制抢先来响应事 件,即使这些进程正在进行系统调用或者未达到正常的“抢先点”。这使得应用程序运行得更加“流畅”即使系统已 经是高负荷运转。代价是吞吐量降低,内核运行开销增大。选这项如果你是为桌面或者嵌入式系统编译内核,需要非常低的延迟。如果你要最快的响应,选第三项。 我认为万物是平衡的,低延迟意味着系统运行不稳定,因为过多来响应用户的要求,所以我选第二个。

######

3.5 时钟频率选项:

Processor type and features  --->           [*] Enable seccomp to safely compute untrusted bytecode

Timer frequency (1000 HZ)  --->

( ) 100 HZ

( ) 250 HZ

( ) 300 HZ

(X) 1000 HZ

######

( ) 100 HZ

100 HZ是传统的对服务器、SMP 和 NUMA的系统选项。这些系统有比较多的处理器,可以在中断较集中的时候分担中断

( ) 250 HZ

250 HZ对服务器是一个好的折衷的选项,它同样在SMP 和 NUMA 系统上体现出良好的反应速度。

( ) 300 HZ

(X) 1000 HZ

1000 HZ对于桌面和其他需要快速事件反应的系统是非常棒的。

######

将上述内容全选,然后再加上适合自己内核的驱动,就可以完成了!

该篇文章仅作项目学习记录!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值