内核

单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。

内核组成部分:

kernel:内核核心,一般为bzimage,通常在/boot目录下,名称为vmlinuz

kernel object:内核对象一般有三种选择,一般放置于/lib/modules/VERSION-RELEASE/

[ ]:N 不选择

[ ]:M 选择编译为模块

[ ]:Y 直接选择成为核心组成部分

辅助文件:ramdisk有以下两种

initrd

initramfs

运行中的内核;

uname命令

uname - print system information

uname [OPTION]...

-a:显示所有信息

-s:显示内核即操作系统名称

-n:显示主机节点名称

-r:内核的版本号和release号

-v:显示内核的版本制作信息

-p:显示处理器架构信息

-m:显示内核所在的硬件平台名称

-o:显示操作系统名称

模块:

lsmod命令

显示由核心已经装载的内核模块

lsmod显示的信息来自于cat /proc/modules文件

modinfo:查看模块的详细信息

eg:modinfo ext4

modinfo [ -0 ] [ -F field ] [ -k kernel ] [ modulename|filename... ]

-k:显示指定内核的详细信息

-p:显示模块参数

-n:只显示模块文件路径

-a:只显示模块作者

-d:显示decription

-l:license

modprobe:装载或卸载内核模块

modprobe [ -C config-file ] [ modulename ] [ module parameters... ]

默认配置文件:/etc/modprobe.conf,/etc/modprobe.d/*.conf

-n:用作测试

-q:静默模式

-r:移除模块

-C:指明读取模块的配置文件路径

modprobe -r [ modulename... ] 卸载某模块

depmod:内核模块依赖关系文件及系统信息映射文件的生成工具;

装载或卸载内核模块:

insmod:装载模块(不解决依赖性关系)

insmod [ filename ] [ module options... ]

rmmod:卸载模块

rmmod [ modulename ]

/proc目录:内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系统加以输出

参数:

只读:输出信息

可写:可接受用户指定“新值”来实现对内核某功能或特性的配置

/proc/sys

(1)sysctl命令用于查看或设定此目录中诸多参数

sysctl -w path.to.parameter=VALUE

sysctl -w kernel.hostname=danran.com

(2)echo命令通过重定向的方式也可以修改大多数参数的值

echo "VALUE" > /proc/sys/path/to/parameter

sysctl

配置文件:/etc/sysctl.conf

(1)设置参数

sysctl -w parameter=VALUE

(2)通过读取配置文件件设置参数生效

sysctl -p [/path/to/conf_file]

内核中的路由转发

sysctl -w /proc/sys/net/ipv4/ip_forword=1

常用的参数:

net.ipv4.ip_forword

kernel.hostname

sysctl -w vm.drop_caches=1 清理系统缓存

/sys目录:

sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息,有些参数是可以修改的,用于调整硬件工作特性。

udev:通过此路径下输出的信息动态为各设备创建所需要设备文件,udev是运行用户空间程序:专用工具:udevadmin,hotplug

udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d及/usr/lib/udev/rules.d目录下

ramdisk文件的制作

(1) mkinitrd 为当前正在使用的内核重新制作ramdisk文件

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) 由当前系统版本生成相应版本的initramfs文件

(2) dracut命令 为当前正在使用的内核重新制作ramdisk文件

dracut /boot/initramfs-$(uname -r).img $(uname -r)

编译内核

前提:

(1) 准备好开发环境

(2) 获取目标主机上硬件设备的相关信息

(3) 获取到木变主机系统功能的相关信息,例如要启动的文件系统

准备好开发环境:

包组(Centos 6)

Server Platform Development

Development Tools

目标主机硬件设备的相关信息:

CPU:

cat /proc/cpuinfo

x86info -a

lscpu

PCI

lspci 查看PCI设备的信息

-v

-vv

lsusb 查看usb设备的信息

lsblk 查看块设备的信息

了解全部硬件设备信息

hal-device

简单依据模板文件的制作过程:

tar xf liunx-3*.tar.gz -C /usr/src -C指定指定目录

cd /usr/src

ln -sv linux-3* linux 创建解压文件的软链接linux

cd linux

cp /boot/config-$(uname -r) ./.config 复制boot目录下的config-$(uname -r)文件到当前目录下并命名为.config

make menuconfig 执行编译,配置内核选项

.config 文件文件

make help

screen 打开一个会话

make -j # #可以同内核核心数一致,也可以是核心的两倍,多线程同时编译

make modules——install 安装模块

make install 安装内核

安装bzImage为/boot/vmlinuz-VERSION-RELEASE

生成initramfs文件

编辑grub的配置文件

init 6 重启系统,并测试使用新内核

编译内核步骤

(1) 配置内核选项

支持“更新”模式进行配置

(a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项

(b) make menuconfig:基于curses的文本窗口界面

(c) make gconfig:依赖GTK开发环境的窗口界面

(d) make xconfig:基于QT开发环境的窗口界面

支持“全新配置”模式进行配置

(a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置;

(b) make allnoconfig:所有选项均回答为“no”

(2) 编译

make [-j #]

如何只编译内核中的一部分功能:

(1) 只编译某某子目录中的相关代码

cd /usr/src/linux

make dir/ (只能使用相对路径)

(b) 只编译一个特定的模块

cd /usr/src/linux

make dir/file.ko

eg:只为e1000编译驱动

make drivers/net/ethernet/intel/e1000/e1000.ko

如何交叉编译内核

编译的目标平台与当前平台不相同

make ARCH=arch_name

要获取特定目标平台的使用帮助

make ARCH=arch_name help

如何在已经执行过编译操作的内核源码树做重新编译

事先清理操作

make clean:清理大多数编译生成的文件,但会保留config文件等;

make mrproper:清理所有编译生成的文件、config及某些备份文件

make distclen:mrproper、patches以及编辑器备份文件

screen命令

打开新的screen

screen

退出并关闭screen

exit

剥离当前screen

Ctrla,d

显示所有已经打开的screen

screen -ls

恢复某screen

screen -r [SESSION]

生效linux内核,Linux内核相关推荐

  1. 在Linux上进行内核参数调整

    在Solaris上,使用工具mdb就可以直接修改内核内存里的内容.而在Linux上,则通常使用命令sysctl(8)做类似的事情. 本文以Fedora为例,介绍如何在Linux上进行内核参数调整. 常 ...

  2. Linux 实例常用内核网络参数介绍与常见问题处理

    查看和修改 Linux 实例内核参数 方法一.通过 /proc/sys/ 目录 查看内核参数:使用 cat 查看对应文件的内容,例如执行命令 cat /proc/sys/net/ipv4/tcp_tw ...

  3. Linux集群和自动化维1.4.2 优化Linux下的内核TCP参数以提高系统性能

    1.4.2 优化Linux下的内核TCP参数以提高系统性能 内核的优化跟服务器的优化一样,应本着稳定安全的原则.下面以Squid服务器为例来说明,待客户端与服务器端建立TCP/IP连接后就会关闭Soc ...

  4. 宋宝华:评Linux 5.13内核

    目录 Misc cgroup Landlock安全模块 系统调用的堆栈随机化 printk无锁ringbuffer的进一步优化 BPF可调用内核函数 公共的IO PAGE Fault支持 Linux ...

  5. linux内核编译,内核参数修改

    核心(kernel):/boot/vmlinuz-version version 带发行包版本,本地版本 内核模块(kernel object): /lib/modules/version/ 内核设计 ...

  6. linux之mini2440内核移植

    与其它操作系统相比,Linux最大的特点:它是一款遵循GPL(General Public License  GNU通用公共许可证(简称为GPL),是由自由软件基金会发行的用于计算机软件的许可证.)的 ...

  7. Linux启动和内核管理

    文章目录 CentOS 6的启动管理 1.1 Linux组成 1.2 内核设计流派 1.3 CentOS 6 启动流程 1.3.1 CentOS 6 启动流程 1.3.1 硬件启动POST 1.3.2 ...

  8. linux 3.4内核初始化,S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

    @[TOC] uboot启动内核分析 进入cmd_bootm.c,找到对应的bootm命令对应的do_bootm():int do_bootm(cmd_tbl_t *cmdtp, int flag, ...

  9. linux怎样查看内核参数,Linux 实例如何查看和修改 Linux 实例内核参数?

    <操作系统>课程设计报告课程设计题目:操作系统课程设计 设计时间:2016/1/10一. 课程设计目的与要求需要完成的内容:(1) 安装虚拟机:Vmware.Vmware palyer ( ...

最新文章

  1. 可以控制到多低(功率)?
  2. JAVA基础代码分享--模拟人机猜拳系统
  3. 【linux回炉 档案权限与目录配置】
  4. Luogu2791 幼儿园篮球题【斯特林数,数学】
  5. 强化学习及其在NLP上的应用
  6. alpine linux安装ftp,如何在Alpine Linux上安装GLPK?
  7. CSRF的绕过与利用
  8. xmta温度控制仪说明书_XMT系列数显温度控制器使用说明书
  9. IBM Cloud Paks:云端追光者也!
  10. 算术运算导致溢出。_【S7200指令教程】数据运算指令ADD SUB MUL DIV
  11. ios pan手势滑动消失动画_iOS仿抖音—评论视图滑动消失
  12. flask向html传函数,Flask----函数数据类型传参
  13. Java基础——抽象
  14. 113. cURL 简介(1)
  15. Revit API切换三维视图
  16. 【网络覆盖优化】基于matlab的网络覆盖遗传优化问题仿真
  17. jeep智能手表软件测评中心的测试,够了,不要太帅:Jeep黑骑士智能手表深度评测...
  18. 树莓派4B全40管脚对应功能示意图
  19. Jack Lin tools 3Dmax批渲染插件
  20. Socket面试题整理

热门文章

  1. JS中document对象 window对象
  2. (二)面试前的准备【要知己知彼,不打无准备之仗】
  3. Mac上解决Chrome浏览器跨域问题
  4. VMware安装以及安装Window7教程
  5. JavaScript数据结构与算法——列表详解(上)
  6. ANN:DNN结构演进History—LSTM网络
  7. 常用JavaScript的高级技巧
  8. 为什么已有Elasticsearch,我们还要重造实时分析引擎AresDB?
  9. 把云计算从云端带进国内的虚拟化软件
  10. 红外摄像机的功率究竟有多大