上篇文章我们讲述了如何定制Linux外围文件系统,本文我们来讲讲如何定制Linux内核。
思路
- 对照windows硬件设备管理器检视设备配置:CPU、硬盘控制器、网络控制器、USB控制器(HID、Mass storage);
- 先将裁完的内核搭配原文件系统观察系统能否启动,能启动后再换成自制文件系统;
- 不一次性裁完,一个模块一个模块裁,每裁完一个模块编译一次观察系统是否能够启动;
- 先裁确定的部分,不确定的模块先不裁,将确定的都裁完后,再单独将不确定的选项添加进去进行编译,观察系统能否启动。
Step1
下载最新的稳定版Linux kernel src。
Step2
解压之后输入下列命令进行配置:
代码语言:javascript复制make menuconfig部分模块选择:
64位的系统
任何人均可访问swap
程序通信
selinux加载时所需要的设置
将.config内核配置文件放入内核中
支持开机加载RAM disk
支持动态模块加载
电源全关
socket要选
TCP
DHCP支持
因为windows网卡是qualcomm的(如下图),所以要以上两个驱动
可以看到我的windows网卡是qualcomm的
选中之后才会加载usb-storage.ko模块
存储媒介的驱动
fat、vfat文件支持
ntfs文件支持
设置语言,如果设置错误,U盘读不出

以上三项是语言模块,如果不选上,则语言设置成简体中文和utf8也没用,因为根本没有这个模块
内核调试,包括将调试信息打印到显示屏上
加密机制
加密机制Step3
配置好之后会生成.config文件,然后输入命令(用4个处理器同时编译):
make –j4进行编译,等待编译完成后,输入命令:
代码语言:javascript复制make modules_install在/lib/modules/目录下生成内核版本的模块驱动,拷贝到bootmini/lib/modules/对应目录下。然后输入命令:
make install生成编译完成的内核,拷贝到/boot目录下,并修改/boot/grub/grub.conf中小系统对应的内核,即可利用新编译的内核启动。
真机效果
1. 网络功能(ifconfig 和 ping)
ifconfig
ping2. 系统支持通过ssh方式访问其他机器

总结
- 裁剪内核的过程中首先应该把完全能够确定要或不要的模块删掉或加进内核,再慢慢将不确定的模块少量甚至单独加进去,编译安装观察是否能够重启,否则一次性全部裁完发现kernel panic了完全不知道哪里错了。
- 万一kernel panic了,解决方案是重开一个虚拟机,将原系统的硬盘挂载到新开的虚拟机里,就可以看到原系统的文件系统了。
原系统的根目录

