Linux kernel
The Core Subsystems of the Linux Kernel are as follows:
- The Process Scheduler
- The Memory Management Unit (MMU)
- The Virtual File System (VFS)
- The Networking Unit
- Inter-Process Communication Unit
kernel version
Linux内核版本号由3组数字组成:
第一个组数字:内核版本。 第二个组数字:Major revision 第三个组数字:Minor revision
例1: 2.6.18-128.ELsmp 头两个数字合在一齐可以描述内核系列,如稳定版的2.6.0,它是2.6版内核系列。 128: 表示这个当前版本的 patch 次数,而ELsmp指出了当前内核是为ELsmp特别调校的。 EL: Enterprise Linux; smp: 表示该内核版本支持多处理器。
更新内核
内核查看工具,可选安装:
sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline
删除不使用的内核
查看当前使用的 kernel,不要删除这个版本 DO NOT REMOVE THIS KERNEL!
uname -r
查看系统中安装的 kernel:
dpkg --list 'linux-image-*'
删除不再使用的 kernel:
sudo apt-get purge linux-image-x.x.x-x-generic
最终更新 grub2 boot 启动菜单:
sudo update-grub2
最后重启系统。参考链接:Remove old kernel
Linux OS
除了最核心的 kernel 之外,OS 还包括 Shell,可视化界面,以及其它的第三方程序和链接库,
比如常用的 ls
, cd
命令和libc.so.6
C 标准库等,其中 Shell 是用户程序与内核之间的接口。
Glibc
The C language provides no built-in facilities for performing such common operations as input/output, memory management, string manipulation, and the like. Instead, these facilities are defined in a standard library, which you compile and link with your programs.
The GNU C Library, described in this document, defines all of the library functions that are specified by the ISO C standard, as well as additional features specific to POSIX and other derivatives of the Unix operating system, and extensions specific to GNU systems.
Misc
Linux kernel 源码中的 C
代码是按着 C
语言语法的定义实现的,所以gcc
可以编译。另外内核源码里实现了部分基础接口,功能可能与 glibc
类似,比如 kmalloc
,但是完全不依赖后者。glibc
是C
标准的实现,可能有些函数依赖 kernel,有些和内核完全没关系。
Reference
- https://www.geeksforgeeks.org/the-linux-kernel/
- https://en.wikipedia.org/wiki/Linux_kernel_version_history
- https://www.kernel.org/doc/html/v4.15/process/changes.html
- The GNU C Library
- Glibc timeline
- GlibC 2.26
- libc introduction