Linux 内核
(重定向自Linux内核)
编译与安装
mkdir ../build
make O=../build menuconfig
# 注意备份 ../build/.config 文件
make O=../build
sudo make O=../build modules_install
cd ../build
sudo cp -v arch/x86/boot/bzImage /boot/vmlinuz-2.6.35.3-lily
sudo cp -v System.map /boot/System.map-2.6.35.3-lily
Arch下(参见mkinitcpio)
sudo mkinitcpio -k 2.6.35.3-lily -g /boot/kernel26-lily
sudo mkinitramfs -k 2.6.35.3lily -o /boot/kernel26-lily
如果只需要编译指定的模块,使用 make M=path/to/module
。
参数
logo.nologo
- 不使用启动图标。[2]
initramfs
- 启动到Busybox。此时不需要指定根分区。此时可以进行磁盘检查、格式转换等。
resume=/dev/disk/by-label/swap
- 指定休眠后从何处恢复。不指定此参数可能导致不能恢复,也可能已在initramfs中指定(Ubuntu)。
break=premount / postmount
- 在挂载前/后进入 initramfs shell(Arch Linux;未在其它发行版上证实)。在 postmount 时可以更改 root 分区。注意启动不同版本的内核的话可能会出问题的。
修改与调节
修改启动图标
生成 ppm
图片
pngtopnm linuxlogo.png > linuxlogo.pnm
pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm
将所得文件复制到 drivers/video/logo
下覆盖相应的文件(如 logo_linux_clut224.ppm
)即可。
注意图标数目等于CPU核心的数目。
模块的编译
编写 Makefile 指定模块文件名:
obj-m := t.o
编译:
make -C /usr/src/linux-$(uname -r) modules M=$PWD
参见
外部链接
- Kernel Compilation From Source - ArchWiki
- Linux 2.6.19.x 内核编译配置选项简介【作者:金步国】
- Linux 内核的文件 Cache 管理机制介绍
- Linux中文控制台 - 菜菜博士 - 在网络的家
- linux 系统中 I/O 调度的选择
- mjg59 | Subverting security with kexec
- Writing kernel exploits
- Linux kernel 笔记 (8) ——vmlinux,vmlinuz,zImage,bzImage | 我的站点
- Writing a Linux Loadable Kernel Module (LKM) - Interfacing to GPIOs | derekmolloy.ie
- >Ryan A. Chapman | Linux System Call Table for x86_64
- 内核如何检测soft lockup与hard lockup? | Linux Performance
补丁
- Gentoo-zh/linux-cjktty, 控制台中文补丁 - 查看主题 • Ubuntu中文论坛
- Budget Fair Queueing (BFQ) Storage-I/O Scheduler
- dolohow/uksm: Ultra Kernel Samepage Merging
在线工具
- Linux Cross Reference,很方便的 Linux 内核源码标识符搜索工具
- code search
调试工具
- systemd 關機時, 進程結束超時定位方法, 用到了 ftrace