首页 > 代码库 > Linux系统启动流程之kernel
Linux系统启动流程之kernel
Linux系统启动流程之kernel
1、内核参数修改方法:
2、内核内核模块管理:
3、内核编译
用户空间访问、监控内核的方式:/proc, /sys
伪文件系统
/proc/sys: 此目录中的文件很多是可读写的
/sys/: 某些文件可写
1、内核参数修改方法:
echo VALUE > /proc/sys/TO/SOMEFILE
sysctl -w kernel.hostname=
[root@localhost vm]# free -m
total used free shared buffers cached
Mem: 7983 541 7442 0 149 269
-/+ buffers/cache: 123 7860
Swap: 4094 0 4094
[root@localhost vm]# echo 1 > /proc/sys/vm/drop_caches
[root@localhost vm]# free -m
total used free shared buffers cached
Mem: 7983 125 7857 0 0 9
-/+ buffers/cache: 115 7867
Swap: 4094 0 4094
[root@localhost kernel]# sysctl -w vm.drop_caches=1
vm.drop_caches = 1
[root@localhost kernel]# free -m
total used free shared buffers cached
Mem: 7983 125 7857 0 0 9
-/+ buffers/cache: 115 7868
Swap: 4094 0 4094
[root@localhost kernel]# cat /proc/sys/kernel/hostname
localhost.localdomain
[root@localhost kernel]# echo wfx >/proc/sys/kernel/hostname
[root@localhost kernel]# hostname
wfx
[root@localhost kernel]# sysctl -w kernel.hostname="local.com"
kernel.hostname = local.com
[root@localhost kernel]# hostname
local.com
[root@localhost kernel]# cat /proc/sys/net/ipv4/ip_forward
0
[root@localhost kernel]# vim /etc/sysctl.conf #修改文件永久有效,但不能立即生效
# Kernel sysctl configuration file for Red Hat Linux
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1 # 0修改为1
...
[root@localhost kernel]# sysctl -p #立即生效
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
[root@localhost kernel]# cat /proc/sys/net/ipv4/ip_forward #验证
1
[root@localhost kernel]# sysctl -a |wc -l #显示所有内核参数及其值
635
2、内核内核模块管理:
lsmod: 查看
modprobe MOD_NAME:装载某模块
modprobe -r MOD_NAME: 卸载某模块
modinfo MOD_NAME: 查看模块的具体信息
insmod /PATH/TO/MODULE_FILE: 装载模块
rmmod MOD_NAME: 卸载某模块
depmod /PATH/TO/MODILES_DIR 安装驱动时内核模块必须同一版本
[root@localhost kernel]# lsmod |grep floppy
floppy 95465 0
[root@localhost kernel]# modprobe -r floppy #删除模块floppy
[root@localhost kernel]# lsmod |grep floppy
[root@localhost kernel]# modprobe floppy #加载模块floppy
[root@localhost kernel]# lsmod |grep floppy
floppy 95465 0
[root@localhost kernel]# modinfo floppy
filename:/lib/modules/2.6.18-164.el5/kernel/drivers/block/floppy.ko #文件路径
alias: block-major-2-*
license:GPL #许可证
author: Alain L. Knaff
srcversion:F532F52860888E835BB857C
depends: #无依赖模块
vermagic:2.6.18-164.el5 SMP mod_unload gcc-4.1
parm: floppy:charp
parm: FLOPPY_IRQ:int
parm: FLOPPY_DMA:int
module_sig:883f3504a8b7cf4bd273d74512bb1123df09e372bd75c92d020dd4b4fc61c617dd1534e826ec209f4bf9199f6f44b9471d2683a52c2b99aead71e
[root@localhost kernel]# modprobe -r floppy #删除模块floppy
[root@localhost kernel]# insmod floppy #装载模块,不是指定名称,而是指定文件名路径
insmod: can‘t read ‘floppy‘: No such file or directory
[root@localhost kernel]# insmod /lib/modules/2.6.18-164.el5/kernel/drivers/block/floppy.ko
[root@localhost kernel]# lsmod |grep floppy #验证加载模块floppy成功
floppy 95465 0
[root@localhost kernel]# rmmod floppy #删除模块floppy方法二
[root@localhost kernel]# lsmod |grep floppy
[root@localhost kernel]#
3、内核编译
内核中的功能除了核心功能之外,在编译时,大多功能都有三种选择:
1、不使用此功能;
2、编译成内核模块;
3、编译进内核;
如何手动编译内核:
make gconfig: Gnome桌面环境使用,需要安装图形开发库组:GNOME SoftwareDevelopment
make kconfig: KDE桌面环境使用,需要安装图形开发库
[root@localhost yum.repos.d]# yum grouplist
Loaded plugins: rhnplugin, security
Repository CD-ROM is listed more than once in the configuration
This system is not registered with RHN.
RHN support will be disabled.
Setting up Group Process
CD-ROM/group | 1.0 MB 00:00
Installed Groups:
...
Available Groups:
Authoring and Publishing
Development Libraries
Development Tools
...
[root@local linux]# yum groupinstall "Development Tools" "Development Libraries" -y
运行时间:10-100min
[root@localhost yum.repos.d]# yum grouplist
Installed Groups:
Development Libraries
Development Tools
...
Available Groups:
Authoring and Publishing
...
内核包下载地址:https://www.kernel.org/pub/linux/kernel/v2.6/
14-Aug-2004 11:13 43M
[root@JackTest ~]# tar xf linux-2.6.8.1.tar.gz -C /usr/src/
[root@JackTest ~]# cd /usr/src/
[root@JackTest src]# ls
kernels linux linux-2.6.8.1 redhat
[root@JackTest src]# ln -sv linux-2.6.8.1 linux
`linux/linux-2.6.8.1‘ -> `linux-2.6.8.1‘
[root@JackTest src]# ls
kernels linux linux-2.6.8.1 redhat
[root@JackTest src]# cd linux
[root@JackTest linux]# ls -al
...
-rw-r--r-- 1 root root 79210 2007-10-31 02:01 .config
...
[root@JackTest linux]# cp /boot/config-2.6.23.1-42.fc8 /usr/src/linux/.config
cp: overwrite `/usr/src/linux/.config‘? y
[root@JackTest linux]# ls -al #使用本机正常使用的内核版本文件做二次编辑,降低出错率
...
...
[root@JackTest linux]# make menuconfig #必须在linux目录下执行后进入文本模式
30MIN--5H 编辑后的设置存到.config中
第1步、make menuconfig: 打开文本下的图形窗口
第2步、make
第3步、make modules_install
第4步、make install
screen命令: 连接断开也能再次打开
screen: 直接打开一个新的屏幕
Ctrl+a, d: 拆除屏幕,可还原回来
screen -r ID: 还原回某屏幕
exit: 退出
[root@fox linux]# yum install screen
[root@fox ~]# screen -ls
There are screens on:
8231.pts-4.fox (Detached)
8200.pts-0.fox (Detached)
2 Sockets in /var/run/screen/S-root.
[root@fox ~]# screen -r 8231
二次编译时清理,清理前,如果有需要,请备份配置文件.config:
make clean 清理配制好的二进制模块
make mrproper 清除所有残留的文件,包括.config文件
---end---
Linux系统启动流程之kernel