内核参数修改 内核编译 第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

相关推荐

  • Python函数式编程指南(二):函数

    这是此系列的第二篇,试图说明在Python中如何更好地使用函数并引导诸位使用函数式的思维进行思考。掌握并应用这些内容,就已经是至少形似的函数式风格的代码了,至于思维么,这个真靠自己。 作者水平有限,如有错漏之处还请指出;转载请注明原作者和原地址:) 2. 从函数开始 2.1. 定义一个函数 如下定义了一个求和函数: def add(x, y): return…

    Linux干货 2015-03-11
  • selinux与systemd

    selinux :service enhanced linux 安全增强的Linux  软件的安全性 选择安全系数较高的系统提高现有系统的安全性  计算机的安全等级D  最低的安全级别,提供最少的安全防护,系统访问无限制。DOS   C  访问控制的权限,能够实现可控的安全防护,个人账户管理,审计和…

    Linux干货 2017-05-22
  • shell-语句总结

    shell脚本语法总结 过程式编程语言: 顺序执行 选择执行 循环执行 shell默认是顺序执行,如果有判断或循环语句则执行判断或循环。 条件判断 if     单分支         if 判断条件:then  &nb…

    Linux干货 2016-08-21
  • bash脚本编程练习:判断、循环

      1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # declare -i sumlogin=0 declare -i sumnologin=0 for&nbs…

    Linux干货 2016-11-22
  • Linux基本操作:关机 重启

        Linux系统安装完成以后,就要学会一些Linux的基本操作命令,首先是关机和重启命令,如果进入Linux系统之后连关机重启都不会是不是太不应该了,总不能关机或重启的时候直接关闭电源在开机吧,这就显得太不专业了,这样也会对Linux系统主机不太好,一些进程还没有关闭就直接断电,会导致Linux系统的不稳定出现问题,何况也…

    Linux干货 2016-08-04
  • find命令之德.摩根定律及perm条件详解

    (1)德.摩根定律        !A -a !B=!( A -o B )        !A -o !B=!( A -a B )        使用条件:条件中存在“非”、“与”…

    Linux干货 2016-08-18