内核参数修改 内核编译 第14天

Linux内核:单内核,模块化

内核的某些模块

编译进内核本体 [*]

编译成内核模块 [M]

不选择使用     [ ]

内核的组成部分

/boot/vmlinuz-VERSION

/lib/modules/VERSION/

*.ko

模块间有可能有依赖关系

内核模块管理

lsmod:显示内核已装载的模块;

动态装卸载模块:

卸载:modprob -r 模块名

  rmmod 模块名

装载:modporb 模块名

insmod 模块路径 (使用modinfo可以查看)

查看某模块的详细信息

modinfo 模块名

检查并生成模块间依赖关系的命令

depmod

复制e1000模块至/mnt/sysroot目录,可在新的系统中启用网络功能

内核参数的配置:

/proc,/sys

/proc:内核映像

许多参数(读写,只读)

只读文件:输出统计信息

读写文件:设定内核工作机制

/proc/sys

不允许使用文本编辑器打开进行编写,而只能通过重定向或使用专用的工具;

/proc:虚拟成了文件系统

net/ipv4/ip_forward

几个常用参数:

kernel.hostname

vm.drop_caches

net.ipv4.icmp_echo_ignore_all

net.ipv4.ip_forward

ip地址属于内核,而非网卡。

修改内核参数的办法

echo “ “>/proc/sys/

sysctl –w net.ipv4.ip_forward=1

cat /proc/sys/net/ipv4/ipforward

配置文件:/etc/sysctl.conf

sysctl –a:显示sysctl可控制的所有内核参数;

sysctl –p:重读配置文件并生效之;

/sys:

Linux 2.4-:/dve所有设备都是事先预置。 

Linux 2.6+:/dev下所有设备文件能够按需创建。

kernel初始化时,根文件系统尚未挂载。

/sys中存入硬件设备的相关信息。

用户空间的某应用程序就可根据/sys中信息来为每个设备按需创建设备文件。 

udev:用户空间的程序,用于创建所需要设备, udevadmin

/etc/udev/rules.d目录下

ramdisk:/boot/initramfs-VERSION.img

创建工具:mkinitrd  CentOS5

  dracut  CentOS6

Dracut /boot/initramfs-`uname –r`.img `uname –r`

展开initramfs文件:

cp /boot/initramfs-RELEASE.img /tmp/initramfs.img.gz

gzip –d /tmp/initramfs.img.gz

mkdir /tmp/initramfs

cd /tmp/initramfs

cpio –id < ../initramfs.img

bash子进程:

exec COMMAND:能启动command为一个进程,此进程会取代当前shell进程;

echo $DISPLAY 显示当前的桌面和屏幕;

screen工具:

启动新的屏幕:screen

退出新屏幕:exit 关闭屏幕

拆除新屏幕:Ctrl+a,d  临时隐藏屏幕;

screen –ls :查看所有被隐藏屏幕的ID

screen –r SID:连接至某隐藏的屏幕;

lftp工具:ftp客户端工具

lftp HOST

-u USERNAME,PASSWORD

-p PORT

-e ‘CMD’

lftp:子命令

help:获取帮助信息

cd:切换目录

lcd:切换本地系统目录

get FILE:下载文件;

!COMMAND:执行shell命令,而非FTP命令

mget FILE1…FILEn:下载多个文件,支持使用通配符

mirror DIR:镜像目录至本地

put FILE:上传文件

put FILE1…FILEn:上传多个文件

lftpget:类似于wget:下载指定URL

kernel:

www.kernel.org

编译内核前提:查看本地硬件信息常用工具

1、 查看CPU信息:

cat /proc/cpuinfo

x86info:不常用 需要额外安装

lscup

2、查看PCI信息

lspci

-v

3、查看USB

lsusb

4、查看块设备

lsblk

1、 查看所有硬件

/boot/config-2.6.32… 所有硬件信息整合到此文件中

编译:交叉编译

cross-compilling

编译内核的步骤:(安装好开发环境) CentOS6:Development Tools; Server Platform Development; curese-devel)

第一步:配置内核

make config

make allyesconfig

make allnoconfig

make menuconfig

make gconfig(依赖于Gnome桌面环境及Gnome的图形开发环境, –gkt2)

make kconfig(依赖于KDE桌面环境及KDE图形开发环境,qt)

第二步:编译

make

第三步:安装内核模块

make modules_install

安装位置:/lib/modules/VERSION

分析模块间依赖关系并成dep文件

第四步:安装内核

make install

安装内核:/boot/vmlinuz-VERSION

编辑grub.conf,添加一新的title

获取源代码,展开指定目录下:

tar xf Linux-3.10… -C /usr/src

ln –sv linux-3.10.10 linux

cd linux

make menuconfig

编辑完成后自动保存成.config文件

可以先将/boot下的config文件复制到Linux目录中,将名字改为.config,再使用make menuconfig来修改配置。

后续的编译,开始之前的清理工作

make clean

清理编译的文件,但保留配置文件;

make mrproper

移除所有编译生成的文件,配置文件和备份文件;

make distclean

完全清理

 

1、 将编译生成的文件保存至别处;

mkdir /path/to/somewhere

cd /path/to/somewhere

./configure –ksource=/usr/src/linux

2、 如何只编译内核的部分代码

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

cd /usr/src/linux

例如: make SUBDIR=arch/

 make diver/net/

(2) 只编译部分模块

make M=path/to/dir

make M=drivers/net

(3) 只编译一个模块

make path/to/dir/MOD_NAME.ko

例如:

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

(4) 将编译生成的文件保存至别处

make O=/path/to/some/where

1. 交叉编译

make ARCH=arch

例如:

make ARCH=arm

获取ARCH的可用默认配置

make ARCH=arch help 

例如:

make ARCH=arm acs5k_defconfig

原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/4441

(0)
上一篇 2016-01-16 22:55
下一篇 2016-01-18 17:16

相关推荐

  • shell脚本基础

    编程基础 v程序:指令+数据 v程序编程风格: 过程式:以指令为中心,数据服务于指令(适合小型程序) 对象式:以数据为中心,指令服务于数据(适合大型程序) vshell程序:提供了编程能力,解释执行 程序的执行方式 v计算机:运行二进制指令; v编程语言: 低级:汇编 高级: 编译:高级语言–>编译器–>目标代码 java…

    Linux干货 2016-08-15
  • Linux文件管理类命令

    文件管理工具:cp,mv,rm cp命令:copy,用于实现复制功能      源文件 —-> 目标文件        cp [OPTION]… [-T] SOURCE DEST   #单源复制        …

    Linux干货 2016-08-22
  • 游戏运维工程师

    爱乐盟互动为深圳市政府评定的深圳市重点文化企业,同时为广东省高科技产业商会常务理事单位,注册资金人民币1000万元。公司的原创大型MMORPG网游《王者传说2》为深圳市政府重点支持的网游项目,《王者传说2》将全面领先于国内的同类产品,成为业界新标准的重要网游产品!! 《王者传说2》已进入产品研发的重要阶段。除《王者传说2》,爱乐盟也已经启动了数款全新大型网游…

    Linux干货 2016-10-19
  • php的serialize序列化和json性能测试

    最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。 在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持。 在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize…

    Linux干货 2015-04-07
  • 正则表达式的如何使用

    简述:正则表达式主要用于文本的搜索,它表示了搜索文本的过滤条件。根据这些条件,对目标文本朱行进行匹配检查,最后对输出匹配到符合过滤条件的行。 使用:正确高效的使用正则表达式,需要掌握以下基本知识点         1:语法 grep [OPTION] PATTERN FILE……

    Linux干货 2017-06-04
  • Linux的自动化安装实现

    在介绍自动化安装系统之前让我们来回顾一下系统的启动流程,系统的启动大概分为一下几个步骤:加电自检 boot sequence(mbr)— boot loader –>kernel(initramfs)—>rootfs  /sbin/init大概就是这么几个过程了,接下来来介绍系统的安装,安装系统虽然看起来简单,普…

    系统运维 2016-09-19