生效linux内核,Linux内核
内核
单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。
内核组成部分:
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内核相关推荐
- 在Linux上进行内核参数调整
在Solaris上,使用工具mdb就可以直接修改内核内存里的内容.而在Linux上,则通常使用命令sysctl(8)做类似的事情. 本文以Fedora为例,介绍如何在Linux上进行内核参数调整. 常 ...
- Linux 实例常用内核网络参数介绍与常见问题处理
查看和修改 Linux 实例内核参数 方法一.通过 /proc/sys/ 目录 查看内核参数:使用 cat 查看对应文件的内容,例如执行命令 cat /proc/sys/net/ipv4/tcp_tw ...
- Linux集群和自动化维1.4.2 优化Linux下的内核TCP参数以提高系统性能
1.4.2 优化Linux下的内核TCP参数以提高系统性能 内核的优化跟服务器的优化一样,应本着稳定安全的原则.下面以Squid服务器为例来说明,待客户端与服务器端建立TCP/IP连接后就会关闭Soc ...
- 宋宝华:评Linux 5.13内核
目录 Misc cgroup Landlock安全模块 系统调用的堆栈随机化 printk无锁ringbuffer的进一步优化 BPF可调用内核函数 公共的IO PAGE Fault支持 Linux ...
- linux内核编译,内核参数修改
核心(kernel):/boot/vmlinuz-version version 带发行包版本,本地版本 内核模块(kernel object): /lib/modules/version/ 内核设计 ...
- linux之mini2440内核移植
与其它操作系统相比,Linux最大的特点:它是一款遵循GPL(General Public License GNU通用公共许可证(简称为GPL),是由自由软件基金会发行的用于计算机软件的许可证.)的 ...
- Linux启动和内核管理
文章目录 CentOS 6的启动管理 1.1 Linux组成 1.2 内核设计流派 1.3 CentOS 6 启动流程 1.3.1 CentOS 6 启动流程 1.3.1 硬件启动POST 1.3.2 ...
- linux 3.4内核初始化,S3C2440移植linux3.4.2内核之内核框架介绍及简单修改
@[TOC] uboot启动内核分析 进入cmd_bootm.c,找到对应的bootm命令对应的do_bootm():int do_bootm(cmd_tbl_t *cmdtp, int flag, ...
- linux怎样查看内核参数,Linux 实例如何查看和修改 Linux 实例内核参数?
<操作系统>课程设计报告课程设计题目:操作系统课程设计 设计时间:2016/1/10一. 课程设计目的与要求需要完成的内容:(1) 安装虚拟机:Vmware.Vmware palyer ( ...
最新文章
- 可以控制到多低(功率)?
- JAVA基础代码分享--模拟人机猜拳系统
- 【linux回炉 档案权限与目录配置】
- Luogu2791 幼儿园篮球题【斯特林数,数学】
- 强化学习及其在NLP上的应用
- alpine linux安装ftp,如何在Alpine Linux上安装GLPK?
- CSRF的绕过与利用
- xmta温度控制仪说明书_XMT系列数显温度控制器使用说明书
- IBM Cloud Paks:云端追光者也!
- 算术运算导致溢出。_【S7200指令教程】数据运算指令ADD SUB MUL DIV
- ios pan手势滑动消失动画_iOS仿抖音—评论视图滑动消失
- flask向html传函数,Flask----函数数据类型传参
- Java基础——抽象
- 113. cURL 简介(1)
- Revit API切换三维视图
- 【网络覆盖优化】基于matlab的网络覆盖遗传优化问题仿真
- jeep智能手表软件测评中心的测试,够了,不要太帅:Jeep黑骑士智能手表深度评测...
- 树莓派4B全40管脚对应功能示意图
- Jack Lin tools 3Dmax批渲染插件
- Socket面试题整理