前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何定制Linux内核?

如何定制Linux内核?

原创
作者头像
是你的乖宝宝哦
修改2022-10-06 20:18:01
2.1K0
修改2022-10-06 20:18:01
举报
文章被收录于专栏:前端之心前端之心前端之心

上篇文章我们讲述了如何定制Linux外围文件系统,本文我们来讲讲如何定制Linux内核。

思路

  1. 对照windows硬件设备管理器检视设备配置:CPU、硬盘控制器、网络控制器、USB控制器(HID、Mass storage);
  2. 先将裁完的内核搭配原文件系统观察系统能否启动,能启动后再换成自制文件系统;
  3. 不一次性裁完,一个模块一个模块裁,每裁完一个模块编译一次观察系统是否能够启动;
  4. 先裁确定的部分,不确定的模块先不裁,将确定的都裁完后,再单独将不确定的选项添加进去进行编译,观察系统能否启动。

Step1

下载最新的稳定版Linux kernel src。

Step2

解压之后输入下列命令进行配置:

make menuconfig

部分模块选择:

64位的系统
64位的系统
任何人均可访问swap
任何人均可访问swap
程序通信
程序通信
selinux加载时所需要的设置
selinux加载时所需要的设置
将.config内核配置文件放入内核中
将.config内核配置文件放入内核中
支持开机加载RAM disk
支持开机加载RAM disk
支持动态模块加载
支持动态模块加载
电源全关
电源全关
socket要选
socket要选
TCP
TCP
DHCP支持
DHCP支持
因为windows网卡是qualcomm的(如下图),所以要以上两个驱动
因为windows网卡是qualcomm的(如下图),所以要以上两个驱动
可以看到我的windows网卡是qualcomm的
可以看到我的windows网卡是qualcomm的
选中之后才会加载usb-storage.ko模块
选中之后才会加载usb-storage.ko模块
存储媒介的驱动
存储媒介的驱动
fat、vfat文件支持
fat、vfat文件支持
ntfs文件支持
ntfs文件支持
设置语言,如果设置错误,U盘读不出
设置语言,如果设置错误,U盘读不出
以上三项是语言模块,如果不选上,则语言设置成简体中文和utf8也没用,因为根本没有这个模块
以上三项是语言模块,如果不选上,则语言设置成简体中文和utf8也没用,因为根本没有这个模块
内核调试,包括将调试信息打印到显示屏上
内核调试,包括将调试信息打印到显示屏上
加密机制
加密机制
加密机制
加密机制

Step3

配置好之后会生成.config文件,然后输入命令(用4个处理器同时编译):

make –j4

进行编译,等待编译完成后,输入命令:

make modules_install

/lib/modules/目录下生成内核版本的模块驱动,拷贝到bootmini/lib/modules/对应目录下。然后输入命令:

make install

生成编译完成的内核,拷贝到/boot目录下,并修改/boot/grub/grub.conf中小系统对应的内核,即可利用新编译的内核启动。

真机效果

1. 网络功能(ifconfig 和 ping)

ifconfig
ifconfig
ping
ping

2. 系统支持通过ssh方式访问其他机器

总结

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思路
  • Step1
  • Step2
  • Step3
  • 真机效果
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档