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

相关推荐

  • 软件包管理、自建yum源与LAMP架构的自动编译安装

    软件包管理 CentOS采用RedHat开发的rpm包管理器管理应用程序包。rpm包是由二进制可执行程序、库、配置文件、帮助文件等组成,支持安装、卸载、查询、升级、降级、校验等操作。 从组成结构上,rpm包由文件清单、安装和卸载时运行的脚本构成。 包管理器有其自带的公共数据库。其数据包括:程序包的名称、版本、依赖关系,功能说明,及各个文件的路径及校验码信息等…

    Linux干货 2016-12-05
  • Linux用户及组的管理相关知识

    Linux用户及组的管理相关知识 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who | cut -d " " -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 ~]# last -x | head -1 3、取出当前系统上被用户当作其默认shell的最多的那…

    Linux干货 2016-10-05
  • 马哥教育网络班21期-第八周课程练习

    第八周作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:集线器工作在OSI七层模型的物理层;功能是将传输信号再生或放大,收到数据后将数据转发至除接收接口外的所有接口(广播)),但是由于集线器所有端口属于共享带宽,属于同一个冲突域和属于同一个广播域,容易产生信号冲突导致帧碎片,现今大部分集线器已经被交换机所替代; 网…

    Linux干货 2016-09-01
  • Linux中基础且常用的指令介绍及示例

    首先需要明确的是:Linux中无论是指令还是选项或者参数,请认真对待字母大小写。Linux中通用的命令使用方式是:命令 [选项] [参数] 1. pwd pwd:print name of current/working directory,即打印当前的目录(工作目录),光杆处于哪个目录下就会在终端上输出当前路径的绝对路径。用法示例: [lanti…

    Linux干货 2016-10-30
  • 软件编译安装小结

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1439073     本文主要针对 configure 和 cmake 做一个介绍以及我们重新配置编译参数文件时,都需要做哪些清…

    Linux干货 2016-08-15
  • 马哥教育网络19期+第四周练习博客

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。  cp /etc/skel /home/tuser1  chmod -R  700 /home/tuser1 2、编辑/etc/group文件,…

    Linux干货 2016-06-19