内核参数修改 内核编译 第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)
petmasterpetmaster
上一篇 2016-01-16
下一篇 2016-01-18

相关推荐

  • 在马帮的宣言

    好好学习,在这半年时间让自己的道路上再迈出一大步

    Linux干货 2016-10-28
  • 输出重定向 输入重定向 管道简单介绍 -20160729

    输出重定向 输入重定向 管道简单介绍 标准输入和输出 我们先来了解下输入和输出的概念: 在计算机中我们了解到计算机的组成部分:其中有输入 输出设备。       输出重定向 对于程序来说: 程序 :指令 + 数据 对于数据来说,数据可以由我们通过键盘输入,或者程序直接使用存储设备上的数据,我们称为读入 数据,程序处理数据后需要返…

    Linux干货 2016-08-04
  • 超级用户切换普通用户后如何重置root密码

    今天在使用su命令切换root用户和普通用户使用中不小心改了root密码,在普通用户条件下怎么也切换不到root用户,于是通过搜索和尝试终于改了root密码,现以centos7为例总结如下: 1、首先进入开启菜单,按下e键进入编辑模式,找到ro那一行,将ro改为rw,在语言后面加上init=/bin/sh 2、根据提示按下ctrl-x键(注意选中x) 3、尝…

    Linux干货 2017-03-27
  • 第二章 操作系统发展史

    Linux主流版本:   Debian(英语发音:/ˈdɛbiən/)是由GPL和其他自由软件许可协议授权的自由软件组成的操作系统,由Debian项目(Debian Project)组织维护。   历史: Debian于1993年8月16日由一名美国普渡大学学生伊恩·默多克(Ian Murdock)首次发表。伊恩·默多克最初把他的系统称为…

    Linux干货 2016-06-03
  • 网络管理1

    一、知识整理 1、路由转发:拆除第一层MAC地址,根据IP地址广播,收到信号后重新封装。一个路由器连接多个广播域,一个交换机连接多个冲突域。 2、网络用户应用程序:WEB浏览器;即时消息;电子邮件;协作(视频会议,vnc);web网络服务;文件网络服务;数据库服务;中间件服务(Tomcat);安全服务(netfilter)。 3、HDR:报头。Frame C…

    Linux干货 2016-09-05
  • keepalive配置文件详解

    第一部分:全局定义块 1、email通知。作用:有故障,发邮件报警。 2、Lvs负载均衡器标识(lvs_id)。在一个网络内,它应该是唯一的。 3、花括号“{}”。用来分隔定义块,因此必须成对出现。如果写漏了,keepalived运行时,不会得到预期的结果。由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。 global_defs{ n…

    2017-09-17