linux内核编译命令 理解,谢烟客---------Linux之理解内核、内核模块、编译内核
内核组成: uname命令
内核:uname,mkinitrd,dracut
模块: lsmod,modinfo,depmod,modprobe,insmod,rmmod
/proc,sysctl,/sys,/dev,udevadm,hotplug命令
内核编译
Linux内核组成
内核文件 bzImage 位置: /boot/vmlinuz-VERSION-RELEASE
内核模块 .ko 位置: /lib/modules/VERSION-RELEASE
辅助文件 initramfs(CentOS 6,7) , initrd (CentOS5)
查看内核相关的信息
uname显示系统(kernel)信息
-s 显示操作系统名称
-n 显示当前主机名称: 显示节点名称
-r 显示VERSION及RELEASE号
-v 显示内核制作信息号 SMP 对称多处理器
-m 当前硬件平台 x86_64
-p 显示处理器类型或架构 x86_64
-i 硬件架构 x86_64
-o 操作系统(GNU/Linux)
使用示例1、系统信息
# uname
Linux
# uname -o
GNU/Linux
2、显示节点名称
# uname -n
localhost.localdomain
# cat /proc/sys/kernel/hostname
localhost.localdomain
# hostname
localhost.localdomain
3、显示version-release号
# uname -r
2.6.32-696.el6.i686
4、内核制作版本号
# uname -v
#1 SMP Tue Mar 21 18:53:30 UTC 2017
5、当前硬件平台
# uname -m
i686
6、处理器架构
# uname -p
i686
7、硬件架构
# uname -i
i386
8、操作系统
# uname -o
GNU/Linux
辅助文件: initramfs,initrd
生成mv /boot/initramfs-VERSION-RELEASE.img /root
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
dracut /boot/initramfs-$(uname -r).img $(uname -r)
展开1、查看文件的类型
file
2、改名.gzip结尾
mv
3、解压
gzip -d
4、查看文件类型
file
5、展开
install -d initrd
cd initrd
cpio -id
Linux内核模块
吸收微内核设计:支持模块化设计:
内核中模块 .ko (kernel object)
程序调用的库 .so (share object)
内核模块相当于程序的库的概念,只是模块只能被kernel调用。库只能被程序调用
编译成模块: [M]
编译进内核: [*]
不编译此功能: [ ]
查看所有已经装载的模块lsmod# lsmod
Module Size Used by
模块 大小 使用次数
查看模块信息modinfo
模块路径 -n
显示指定内核的模块信息 -k kernel
显示模块的描述 -d
模块的参数 -p
License -l
Author -a
1、显示所有信息
# modinfo ext4
filename: /lib/modules/2.6.32-696.el6.i686/kernel/fs/ext4/ext4.ko
license: GPL
description: Fourth Extended Filesystem
author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion: 74AEE2BDA63AC8482A78F4D
depends: mbcache,jbd2
vermagic: 2.6.32-696.el6.i686 SMP mod_unload modversions 686
2、仅显示filename
# modinfo -n ext4
/lib/modules/2.6.32-696.el6.i686/kernel/fs/ext4/ext4.ko
3、仅显示License
# modinfo -l ext4
GPL
4、仅显示description
# modinfo -d ext4
Fourth Extended Filesystem
5、仅显示作者
# modinfo -a ext4
Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
6、显示模块参数
# modinfo -p ext4
生成模块的依赖关系depmod
为指定内核生成依赖 -b
/boot/system.map-VERSION-RELEASE 内核依赖的模块及库
/lib/modules/VERSION-RELEASE/modules.dep.bin 模块的依赖关系
装载模块modprobe MODULE 或 insmod $(modinfo -n MODULE)# modprobe pcnet32
# lsmod | fgrep pcnet32
pcnet32 29107 0
mii 4476 1 pcnet32
安装pcnet32模块
# insmod $(modinfo -n pcnet32)
insmod: error inserting '/lib/modules/2.6.32-696.el6.i686/kernel/drivers/net/pcnet32.ko': -1 Unknown symbol in module
查看依赖
# modinfo pcnet32
depends: mii
依据路径安装被依赖的模块
# insmod $(modinfo -n mii)
查看是否安装
# lsmod | fgrep mii
mii 4476 0
安装Pcnet32
# insmod $(modinfo -n pcnet32)
查看是否安装
# lsmod | fgrep pcnet32
pcnet32 29107 0
mii 4476 1 pcnet32
#
拆除模块modprobe -r MODULE 或 rmmod MODULE# modprobe -r pcnet32
# lsmod | fgrep pcnet32
#
# rmmod pcnet32
# lsmod | fgrep pcnet32
#
/proc目录
只读 内核内部统计、状态信息
可写 可配置参数,/proc/sys目录中,由sysctl命令控制,内核性能调整
临时生效:echo 'STRING' > /proc/sys/kernel/hostname , sysctl -w kernel.hostname='STRING'
永久有效:/etc/sysctl.conf
sysctl命令
-p CONFIG_FILE 读取文件设定参数
-w PARAMETER='VALUE' 设定内核参数
# echo 'VALUE' > /proc/sys/kernel/hostname
# sysctl -w kernel.hostname='VALUE'
主机名: /proc/sys/kernel/hostname
路由转发: /proc/sys/net/ipv4/ip_forward 1:开启; 0:关闭
cache/buffer回收: /proc/sys/vm/drop_caches 1: dropcache
-a 显示所有内核参数
-p 重读配置文件 配置文件: /etc/sysctl.conf
路由转发: 打开路由转发时,一个网卡的用户能够ping通另一个网卡所在网络的主机临时生效
1、查看主机名
# cat /proc/sys/kernel/hostname
localhost.localdomain
2、设置主机名
# echo "Lcc.org" > /proc/sys/kernel/hostname
# cat /proc/sys/kernel/hostname
Lcc.org
# hostname
Lcc.org
3、设定主机名
# sysctl -w kernel.hostname="lcc.org"
kernel.hostname = lcc.org
4、查看主机名
# hostname
lcc.org
# cat /proc/sys/kernel/hostname
lcc.org
永久有效
# cp /etc/sysctl.conf{,.bak}
# echo "kernel.hostname=magedu.com" >> /etc/sysctl.conf
# hostname
lcc.org
# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.hostname = magedu.com
# hostname
magedu.com
/sys目录
内核探测的硬件信息
kernel 2.4- /dev/目录下事先创建所有设备文件,/dev/目录文件多,造成大量空间浪费
kernel 2.4+ /dev/目录下按需生成设备文件,kernel临时探测,按需创建,节约空间
udev工具: udevadmin,hotplug
简易编译内核
1)获取源码
2)开发环境
3)查看目标主机的硬件设备信息
4)目标实际需要
1、获取源码
**小于3.10版本
2、展开至/usr/local/目录
3、创建符号链接
5、编译
1、设置release号
2、设置主机名
3、设置支持NTFS文件系统
4、设置支持的网络驱动
general setup
Local version - append to kernel release
-1.os.cpu
((none)) Default hostname 默认主机名
File systems
JFS
GFS2
Btrfs
DOS/FAT
NTFS
Device drivers
Netowrk device support
Enternet driver support
打开一个虚拟的屏幕:
退出: ctrl + a 松开a后按d
列出: screen -ls
连接回: screen -r ID
5、编译
make -j #
# lscpu 中 cpu(s) 后的数字为cpu核心数
6、安装
linux内核编译命令 理解,谢烟客---------Linux之理解内核、内核模块、编译内核相关推荐
- linux环境下ps命令行,Linux下ps命令详解 Linux下ps命令的详细使用方法
Linux下ps命令详解 Linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运 ...
- linux编程运行命令,如何运行linux程序
原标题:如何运行linux程序 搞懂linux程序如何运行是一件重要的事情,这是为我们进一步发展打下了坚实基础的一步.本文将通过实例来详细地讲解如何运行linux程序.希望对于大家理解有帮助. 首先, ...
- Linux下dislocate命令用法,在 Linux 中遨游手册页的海洋 | Linux 中国
原标题:在 Linux 中遨游手册页的海洋 | Linux 中国 Linux 系统上的手册页可以做的不仅仅是提供特定命令的信息.它们可以帮助你发现你没有意识到的命令. https://linux.cn ...
- 清理linux 服务器的命令行,使用Linux上的Magic SysRq键修复冻结的X服务器,清理重新启动并运行其他低级命令 | MOS86...
在Linux中,魔术SysRq键可以直接发送命令到Linux内核.您可以使用它来恢复冻结或干净地重新启动系统,即使没有任何反应. 魔术SysRq键是作为Linux键盘驱动程序的一部分实现的 - 只要L ...
- linux中sed命令用例,Linux中使用sed命令或awk命令修改常规配置文件
一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...
- linux设置历史命令保留数目限制,linux下修改history命令保存条数
在linux系统下.history命令会保存多少条命令呢?曾在一本书上说,如果注销系统,那么会将所有的历史命令都定入到~/.bash_history, 但只保留1000条命令(这个是由默认的shell ...
- linux文件编辑命令详细整理,Linux文件编辑命令vi详细说明
目录 1.引言 2.vi命令与vim命令 3.vi命令使用 3.1一般模式 3.2编辑模式(重点) 3.3命令行模式 1.引言 相信有很多程序员朋友,在长时间不操作linux系统或者初学linux命令 ...
- linux 网络io命令详解,Linux下五种网络IO模型详解
本文我们主要来了解一下Unix/Linux下5种网络IO模型:blocking IO, nonblocking IO, IO multiplexing, signal driven IO, async ...
- linux运维命令日志管理,Linux运维实战第二天:Linux基础命令之文件处理命令
这次博客的主要内容是基础命令,虽然普通的命令没技术含量,但是有技术含量的都是以普通的命令为基础.千里之行始于足下,Let's Go! Linux中的命令分为内部命令和外部命令两种: 内部命令:是she ...
- linux中which命令详解,Linux下which命令使用详解(转)
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...
最新文章
- 20101029总结
- 本地yum源简单配置
- 创建了联合索引还用在单个字段上创建索引吗_数据库 索引并不是万能的
- 必须采用初始化列表一共有三种情况
- halcon的算子清点: Chapter 2-3-4 控制、开发、文件操作
- Ubuntu 14 配置Android Studio的快捷启动方式
- linux centos7不能ssh免密登录自己的问题解决
- r语言 去除双引号_tidyfst vs pandas(12):去除重复条目
- mongodb中Gson和java##Bean对象转化类
- MVC3.0+DWZ探索
- java程序流程控制_java程序流程控制
- pdf php 添加元数据,PDF怎么添加/清除元数据-PDF添加/清除元数据的方法 - 河东软件园...
- primefaces教程_Primefaces,带有JPA的Spring 4(Hibernate 4 / EclipseLink)示例教程
- python 闭包的作用_python中对闭包的理解
- 电机学、电机拖动相关知识(试着更新电机的相关知识,感谢指出错误)
- PSP 版本6.60 破解 PRO-B10自制系统升级图文教程
- TCP/IP、HTTP、HTTPS
- 究竟什么是token??
- 【美国大学生数学建模比赛】2020C题(总结和原创参赛论文)百度云请自取
- html safari图片不显示,html - 某些FA图标显示在FF,Chrome和Safari中,但没有浏览器会全部显示它们 - 堆栈内存溢出...
热门文章
- 梅特勒托利多电子秤显示EEP服务器错误,托利多电子秤TCII故障维修方法(一)...
- TKinter —— GUI in python 4. Handing User Event 小组件 赋功能 (概念 必看!)
- 嵌入式linux检测U盘拔插
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at:
- python 直方图 横向_python绘制直方图
- android mac 探针,wifi探针获取手机mac地址
- 域名被微信屏蔽如何解决
- 19. 卫健委官网医院查询爬虫+验证码识别(云打码)综合案例
- 高景一号01星遥感影像解译数据分辨率是多少
- apache评分表的意义_APACHE-II评分系统表.doc