linux内核裁剪的具体过程和方法

简介: 进程间通信函数和系统调用。Linux内核的五大组成部分之一,一定要选。BSD Process Accounting(CONFIG_BSD_PROCESS_ACCT)[N/y/?]用于启动由内核将进程信息写入文件的用户级系统调用。
进程间通信函数和系统调用。Linux内核的五大组成部分之一,一定要选。
BSD Process Accounting(CONFIG_BSD_PROCESS_ACCT)[N/y/?]
用于启动由内核将进程信息写入文件的用户级系统调用。就看您想不想用它了。
Sysctl support(CONFIG_SYSCTL)[Y/n/?]
在内核正在运行的时候修改内核。用8KB空间换取某种方便。别选吧,除非你真的想试试。
Kernel support for a.out binaries(CONFIG_BINFMT_AOUT)[Y/m/n/?]
为了能使用以前编译的程序,选y。
Kernel support for ELF binaries(CONFIG_BINFMT_ELF)[Y/m/n/?]
为了能使用现在编译的程序,选y。
Kernel support for MISC binaries(CONFIG_BINFMT_MISC)[Y/m/n/?]
一般选y,用于支持java等代码的自动执行。
Parallel port support(CONFIG_PARPORT)[N/y/m/?]
并口设备,如打印机。

5)plug and play support 即插即用设备支持
Plug and Play support (CONFIG_PNP)[N/y/?]
选y吧。

6)block devices 块设备
Normal PC floppy disk support(CONFIG_BLK_DEV_FD)[Y/m/n/?]
一般的软驱。选y。
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support(CONFIG_BLK_DEV_IDE)[Y/m/n/?]
这几种接口的硬盘、光驱、磁带、软驱。选y。
Include IDE/ATAPI CDROM support(CONFIG_BLK_DEV_IDECD)[Y/m/n/?]
CDROM。选y。

7)networking options 网络选项
Packet socket (CONFIG_PACHET)[Y/m/n/?]
按照目前网络发展的状况,选y比较好。当然也可以选其它的。
Kernel/User netlink socke(CONFIG_NETLINK)[N/y/?]
内核与用户进程双向通信。选y。
Network firewalls(CONFIG_FIREWALL)[N/Y/?]
如果真的需要用防火墙,就选y。
UNIX domain sockets(confgi_unix)[Y/m/n/?]
socket 的用处太多了。选y。
TCP/IP networking(CONFIG_INET)[Y/n/?]
选y,理由如上一条。
The IPX protocol (CONFIG_IPX)[N/y/m/?]
其实并没有那么多人真的需要使用或者学习IPX,所以一般选N。
Appletalk DDP(CONFIG_ATALK)[N/y/m/?]
选N,理由同上。

8)SCSI support SCSI支持,SCSI low-level drives SCSI低级驱动
根据系统中SCSI设备的实际情况选择。

9)Networking device support 网络设备支持
如果用LAN上网,就选择网卡;
如果用MODEM拨号上网,就要看ISP提供那种服务了,一般都是PPP。

10)Amateur Radio support 业余收音机支持
这是什么我不太清楚,所以选N。

11)ISDN subsystem ISDN子系统
好像已经有支持ISDN的MODEM了,所以最好先看看自己的MODEM是不是这种,再做选择。

12)Old CD-ROM dfivers (not SCSI, not IDE) 老式光驱驱动
一般选N,因为这种设备实在很少见。

13)Character devices 字符设备
Virtual terminal(CONFIG_VT)[Y/n/?]
Linux上一般可以用Alt+F1/F2/F3/F4来切换不同的任务终端,即使在一台计算机上也可以充分使用Linux的多任务能力,一些需要以命令行方式安装合适用的软件如果有虚拟终端的支持就会更方便,因此选y。
Support for console on virtual terminal(CONFIG_VT_CONSOLE)[Y/n/?]
选y将支持一个虚拟终端作为控制台。一般为Alt+F1。
Support for console on serial port(CONFIG_SERIAL)[Y/m/n/?]
除非真的需要一个串口控制台,否则选n。
Extended dumb serial driver options(CONFIG_SERIAL_EXTENDED)[N/y/?]
如果希望使用"dumb"的非标准特性(如HUB6支持),选y,一般选N。
Non-standard serial port support(CONFIG_SERIAL_NONSTANDARD)[N/y/?]
非标准串口。一般选N。
UNIX98 PTY support(CONFIG_UNIX98_PTYS)[Y/n/?]
PTY指伪终端,一般用户就选n。但如果想用telnet或者xterms作为终端访问主机,并且已经安装了glibc2.1,就可以选y。
Maximum number of UNIX98 PTYs in use(0-2048)(CONFIG_UNIX98_PTY_COUNT)[256]
缺省值就可以了。
Mouse Support(not serial mice)(CONFIG_MOUSE)[Y/n/?]
PS/2等非串口鼠标选y,否则选N。

14)Mice 鼠标
根据自己的鼠标类型选择。

15)Video for Linux Linux视频
根据系统中的音/视频捕捉设备选择。

16)Joystick support 操纵杆
根据系统中的游戏杆设备选择

17)Ftape,the floopy tape device driver Ftape设备驱动
Ftape (QIC-80/Travan)support(CONFIG_FTAPE)[N/y/m/?]
如果系统中有磁带机,选y。

18)Filesystems 文件系统
文件系统的选择要比较仔细,因为其中的一些给某些系统功能提供支持。而且除了proc、ext2等文件系统之外,其它的文件系统(包括下面的网络文件系统)都可以选择为m方式,从而减小内核启动时的体积。
Quota support(CONFIG_QUOTA)[N/y/?]
用于给用户划分定量的磁盘空间。如不用此功能就选N。
DOS FAT fs support(CONFIG_FAT_FS)[N/y/m/?]
为内核提供FAT支持,多数用户有可能从Linux访问同一系统中的WINDOWS硬盘空间,因此最好选y。
ISO 9660 CDROM filesystem support(CONFIG_ISO9660_FS)[Y/m/n/?]
有标准光驱的系统应该选Y。
Minix fs support(CONFIG_MINIX_FS)[N/y/m/?]
用于创建启动盘的文件系统,多数应该选y或者m。
/proc filesystem support(CONFIG_PROC_FS)[Y/n/?]
虚拟文件系统,必须选Y。
Second extended fs support(CONFIG_EXT2_FS)[Y/m/n/?]
Linux标准文件系统,都应该选Y。

19)Network file systems 网络文件系统
Coda filesystem support (advanced network fs)(CONFIG_CODA_FS)[N/y/m/?]
先看帮助再选。
NFS filesystem support(CONFIG_NFS_FS)[Y/m/n/?]
选Y或n,能够访问远程NFS文件系统。
SMB filesystem support(to mount WfW shares etc.)(CONFIG_SMB_FS)[N/y/m/?]
要访问WINDOWS系统中的共享资源选y。
NCP filesystem support(to mout NetWare volumes)(CONFIG_NCP_FS)[N/y/m/?]
如果真的需要访问NetWare文件系统,就选y或者m。

20)Partion Types 分区类型
一般用不上;要用请参看帮助。

21)Console drivers 控制台驱动
VGA text console(CONFIG_VGA_CONSOLE)[Y/n/?]
用VGA模式下用文本方式操作Linux,一般选y。
Video mode selection support(CONFIG_VIDEO_SELECT)[N/y/?]
大多数系统都不需要这项功能。

第十一部分:除以下选项,其它全部删除
file systems --->文件系统
Second extended fs support
[*] Ext2 extended attributes
[*] Ext2 POSIX Access Control Lists
[*] Ext2 Security Labels
Ext3 journalling file system support
[*] Ext3 extended attributes
[*] Ext3 POSIX Access Control Lists
[*] Ext3 Security Labels 以上这些肯定是要选择的,linux的标准文件系统
Kernel automounter support 内核自动挂载的,当然要选
Kernel automounter version 4 support (also supports v3) 当然要选
DOS/FAT/NT Filesystems --->
DOS FAT fs support
MSDOS fs support
VFAT (Windows-95) fs support
NTFS file system support
Native language support语言支持,这里就支持英语和汉语就行了,不多说了
[]NLS ISO 8859-1 必须选择,这个是关于U盘挂载的。
CD-ROM/DVD Filesystems ---> 这个是关于挂载ISO文件的,用的话就选。
ISO 9660 CDROM file system support
第十二部分: 全部删除
Instrumentation support
第十三部分:全部删除
Kernel hacking --->破解核心?可不是当骸客啦,不选
第十四部分:全部删除
Security options --->
第十五部分:全部删除
Cryptographic options --->这是核心支持加密的选项
第十六部分:全部删除
Library routines --->



附:
内核配置
  内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig等等,它们的功能都是一样的,区别应该从名字上就能看出来,只有make oldconfig是指用系统当前的设置(./.config)作为缺省值。这里用的是make menuconfig。
  需要牢记:不必要的驱动越多,内核就越大,不仅运行速度慢、占用内存多,在少数情况下、还会引发其他问题。具体步骤如下:
首先确定shell是bash。
然后
$make menuconfig
有一些默认的符号其含义如下:
y:加载
n:不加载
m:作为模块加载

可以配置的选项有以下一些:
1)code maturity level option 代码成熟度
prompt for development and/or incomplete code/drivers [N/y/?]
如果有兴趣测试一下内核中尚未最终完成的某些模块,就选y,否则选N,想知道更详细的信息选?会看到联机帮助(以下?的含义相同),N大写表示缺省值。

2)processor type and features 处理器类型及特性
Processor family(386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC, PPro/6x86MX)[PPro/6x86MX]
[]内的是缺省值,我们可以根据前面介绍的uname 命令执行的结果选择。此项如果高于386,那么生成的内核在386机器上将不能启动。
Math emulation(CONFIG_MATH_EMULATION)[N/y/?]
需要进行协处理器模拟吗?一般的机器都回n。如果机器已经有硬件的协处理器,那么内核仍将使用硬件,而忽略软件的math-emulation,这将使内核变大变慢。
MTRR(Memory Type Range Register)support(CONFIG_MTRR)[N/y/?]
在Pentium、Pro/Pentium II类的系统中可以提高图像写入速度。
Symmetric multi-processing support(CONFIG_SMP)[Y/n/?]
如果您的机器有多个处理器,就选y。此时要选中下面的Enhanced Real Time Clock Support

3)loadable model support 可加载模块支持
Enable loadable module support(CONFIG_MODULES)[Y/n/?]
最好选y,不然许多仅供动态加载的模块就不能用了。
Set version information on all symbols for modules(CONFIG_MODVERSIONS)[N/y/?]
选N
Kernel module loader(CONFIG_KMOD)[N/y/?]

4)general setup 一般设置
Networking support(CONFIG_NET)[Y/n/?]
选y吧,现在还有几台计算机不用上网呢?
PCI support (CONFIG_PCI)[Y/n/?]
PCI 总线和设备总该有吧。
PCI access mode(BIOS,Direct,Any)[Any]
缺省值比较保险,但如果您对您的主板很有信心,就选BIOS。
PCI quirks (CONFIG_PCI_QUIRKS)[Y/n/?]
用于修补BIOS中对PCI有影响的BUG,同样,如果您对主板很有信心,就选n。
Backward-compatible /proc/pci〉(CONFIG_PCI_OLD_PROC)[Y/n/?]
以前的内核使用/proc/pci,新版内核使用/proc/bus/pci,要保持兼容性就选y。
MCA support(CONFIG_MCA)[N/y/?]
查看帮助吧。
SGI Visual Workstation support(CONFIG_VISWS)[N/y/?]
您的机器是SGI的吗?是就选y。
System V IPC(CONFIG_SYSVIPC)[Y/n/?]

进程间通信函数和系统调用。Linux内核的五大组成部分之一,一定要选。
BSD Process Accounting(CONFIG_BSD_PROCESS_ACCT)[N/y/?]
用于启动由内核将进程信息写入文件的用户级系统调用。就看您想不想用它了。
Sysctl support(CONFIG_SYSCTL)[Y/n/?]
在内核正在运行的时候修改内核。用8KB空间换取某种方便。别选吧,除非你真的想试试。
Kernel support for a.out binaries(CONFIG_BINFMT_AOUT)[Y/m/n/?]
为了能使用以前编译的程序,选y。
Kernel support for ELF binaries(CONFIG_BINFMT_ELF)[Y/m/n/?]
为了能使用现在编译的程序,选y。
Kernel support for MISC binaries(CONFIG_BINFMT_MISC)[Y/m/n/?]
一般选y,用于支持java等代码的自动执行。
Parallel port support(CONFIG_PARPORT)[N/y/m/?]
并口设备,如打印机。

5)plug and play support 即插即用设备支持
Plug and Play support (CONFIG_PNP)[N/y/?]
选y吧。

6)block devices 块设备
Normal PC floppy disk support(CONFIG_BLK_DEV_FD)[Y/m/n/?]
一般的软驱。选y。
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support(CONFIG_BLK_DEV_IDE)[Y/m/n/?]
这几种接口的硬盘、光驱、磁带、软驱。选y。
Include IDE/ATAPI CDROM support(CONFIG_BLK_DEV_IDECD)[Y/m/n/?]
CDROM。选y。

7)networking options 网络选项
Packet socket (CONFIG_PACHET)[Y/m/n/?]
按照目前网络发展的状况,选y比较好。当然也可以选其它的。
Kernel/User netlink socke(CONFIG_NETLINK)[N/y/?]
内核与用户进程双向通信。选y。
Network firewalls(CONFIG_FIREWALL)[N/Y/?]
如果真的需要用防火墙,就选y。
UNIX domain sockets(confgi_unix)[Y/m/n/?]
socket 的用处太多了。选y。
TCP/IP networking(CONFIG_INET)[Y/n/?]
选y,理由如上一条。
The IPX protocol (CONFIG_IPX)[N/y/m/?]
其实并没有那么多人真的需要使用或者学习IPX,所以一般选N。
Appletalk DDP(CONFIG_ATALK)[N/y/m/?]
选N,理由同上。

8)SCSI support SCSI支持,SCSI low-level drives SCSI低级驱动
根据系统中SCSI设备的实际情况选择。

9)Networking device support 网络设备支持
如果用LAN上网,就选择网卡;
如果用MODEM拨号上网,就要看ISP提供那种服务了,一般都是PPP。

10)Amateur Radio support 业余收音机支持
这是什么我不太清楚,所以选N。

11)ISDN subsystem ISDN子系统
好像已经有支持ISDN的MODEM了,所以最好先看看自己的MODEM是不是这种,再做选择。

12)Old CD-ROM dfivers (not SCSI, not IDE) 老式光驱驱动
一般选N,因为这种设备实在很少见。

13)Character devices 字符设备
Virtual terminal(CONFIG_VT)[Y/n/?]
Linux上一般可以用Alt+F1/F2/F3/F4来切换不同的任务终端,即使在一台计算机上也可以充分使用Linux的多任务能力,一些需要以命令行方式安装合适用的软件如果有虚拟终端的支持就会更方便,因此选y。
Support for console on virtual terminal(CONFIG_VT_CONSOLE)[Y/n/?]
选y将支持一个虚拟终端作为控制台。一般为Alt+F1。
Support for console on serial port(CONFIG_SERIAL)[Y/m/n/?]
除非真的需要一个串口控制台,否则选n。
Extended dumb serial driver options(CONFIG_SERIAL_EXTENDED)[N/y/?]
如果希望使用"dumb"的非标准特性(如HUB6支持),选y,一般选N。
Non-standard serial port support(CONFIG_SERIAL_NONSTANDARD)[N/y/?]
非标准串口。一般选N。
UNIX98 PTY support(CONFIG_UNIX98_PTYS)[Y/n/?]
PTY指伪终端,一般用户就选n。但如果想用telnet或者xterms作为终端访问主机,并且已经安装了glibc2.1,就可以选y。
Maximum number of UNIX98 PTYs in use(0-2048)(CONFIG_UNIX98_PTY_COUNT)[256]
缺省值就可以了。
Mouse Support(not serial mice)(CONFIG_MOUSE)[Y/n/?]
PS/2等非串口鼠标选y,否则选N。

14)Mice 鼠标
根据自己的鼠标类型选择。

15)Video for Linux Linux视频
根据系统中的音/视频捕捉设备选择。

16)Joystick support 操纵杆
根据系统中的游戏杆设备选择

17)Ftape,the floopy tape device driver Ftape设备驱动
Ftape (QIC-80/Travan)support(CONFIG_FTAPE)[N/y/m/?]
如果系统中有磁带机,选y。

18)Filesystems 文件系统
文件系统的选择要比较仔细,因为其中的一些给某些系统功能提供支持。而且除了proc、ext2等文件系统之外,其它的文件系统(包括下面的网络文件系统)都可以选择为m方式,从而减小内核启动时的体积。
Quota support(CONFIG_QUOTA)[N/y/?]
用于给用户划分定量的磁盘空间。如不用此功能就选N。
DOS FAT fs support(CONFIG_FAT_FS)[N/y/m/?]
为内核提供FAT支持,多数用户有可能从Linux访问同一系统中的WINDOWS硬盘空间,因此最好选y。
ISO 9660 CDROM filesystem support(CONFIG_ISO9660_FS)[Y/m/n/?]
有标准光驱的系统应该选Y。
Minix fs support(CONFIG_MINIX_FS)[N/y/m/?]
用于创建启动盘的文件系统,多数应该选y或者m。
/proc filesystem support(CONFIG_PROC_FS)[Y/n/?]
虚拟文件系统,必须选Y。
Second extended fs support(CONFIG_EXT2_FS)[Y/m/n/?]
Linux标准文件系统,都应该选Y。

19)Network file systems 网络文件系统
Coda filesystem support (advanced network fs)(CONFIG_CODA_FS)[N/y/m/?]
先看帮助再选。
NFS filesystem support(CONFIG_NFS_FS)[Y/m/n/?]
选Y或n,能够访问远程NFS文件系统。
SMB filesystem support(to mount WfW shares etc.)(CONFIG_SMB_FS)[N/y/m/?]
要访问WINDOWS系统中的共享资源选y。
NCP filesystem support(to mout NetWare volumes)(CONFIG_NCP_FS)[N/y/m/?]
如果真的需要访问NetWare文件系统,就选y或者m。

20)Partion Types 分区类型
一般用不上;要用请参看帮助。

21)Console drivers 控制台驱动
VGA text console(CONFIG_VGA_CONSOLE)[Y/n/?]
用VGA模式下用文本方式操作Linux,一般选y。
Video mode selection support(CONFIG_VIDEO_SELECT)[N/y/?]
大多数系统都不需要这项功能。

22)Sound 声音
Sound card support(CONFIG_SOUND)[N/y/m/?]
如果系统中安装了声卡,就选y(或者m),然后查看帮助。

23)Kernel hacking 内核监视
kernel hacking往往会生成非常大或者非常慢(甚至又大又慢)的内核,甚至会引起内核工作不稳定。如果一定要选,那么也最好不要选其中的"development"、"experimental"、"debugging"项


目录
相关文章
|
3月前
|
安全 网络协议 Linux
深入理解Linux内核模块:加载机制、参数传递与实战开发
本文深入解析了Linux内核模块的加载机制、参数传递方式及实战开发技巧。内容涵盖模块基础概念、加载与卸载流程、生命周期管理、参数配置方法,并通过“Hello World”模块和字符设备驱动实例,带领读者逐步掌握模块开发技能。同时,介绍了调试手段、常见问题排查、开发规范及高级特性,如内核线程、模块间通信与性能优化策略。适合希望深入理解Linux内核机制、提升系统编程能力的技术人员阅读与实践。
424 1
|
3月前
|
Ubuntu Linux
Ubuntu 23.04 用上 Linux 6.2 内核,预计下放到 22.04 LTS 版本
Linux 6.2 带来了多项内容更新,修复了 AMD 锐龙处理器设备在启用 fTPM 后的运行卡顿问题,还增强了文件系统。
|
3月前
|
Ubuntu Linux
Ubuntu 23.10 现在由Linux内核6.3提供支持
如果你想在你的个人电脑上测试一下Ubuntu 23.10的最新开发快照,你可以从官方下载服务器下载最新的每日构建ISO。然而,请记住,这是一个预发布版本,所以不要在生产机器上使用或安装它。
|
3月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
1569 10
|
3月前
|
监控 Ubuntu Linux
什么Linux,Linux内核及Linux操作系统
上面只是简单的介绍了一下Linux操作系统的几个核心组件,其实Linux的整体架构要复杂的多。单纯从Linux内核的角度,它要管理CPU、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。
303 0
|
3月前
|
Web App开发 缓存 Rust
|
3月前
|
Ubuntu 安全 Linux
Ubuntu 发行版更新 Linux 内核,修复 17 个安全漏洞
本地攻击者可以利用上述漏洞,攻击 Ubuntu 22.10、Ubuntu 22.04、Ubuntu 20.04 LTS 发行版,导致拒绝服务(系统崩溃)或执行任意代码。
|
2月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
420 2
二、Linux文本处理与文件操作核心命令
|
2月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
290 137