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/目录

7735b0a81a6afd763e530b4ffb87e59c.png

3、创建符号链接

da481a5f409880adf198c4f1da5f9bbe.png

5、编译

39d1db447062bb603590f38764252e00.png

46679b13ff45ec12b273f5cb67ce9f74.png

1、设置release号

fdc489d2d20acc9b2e9f7594f782818b.png94c1f124c80d8c7dc7f55c7cd2fff3f9.png

2、设置主机名

5243f695f2855f995bb4d0f69cdb9e3b.png05eadd56266f55a57c2e5594085fba98.png

3、设置支持NTFS文件系统

5d81b6a806b7e08d9e64067ef355cf0a.pngebed70581eeed042434f3d85eaf1fd93.png

4、设置支持的网络驱动

7c9b9d9c7882b97a1a15fd2aacc65ab1.png

46088bdff8e3b0e4e3382a2fe839ac41.png

4a25c1cfb281b071afe88c48e94cf46d.png30eafdd2920ad0520d5229ceda0e36c0.pnggeneral 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核心数

1b7a5c1ecd2d83d820e5788b3e24cad9.png

6、安装

1710c1418627f56e172f621936504ee6.png

854cfac6c036a9594ff63475a62350ff.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值