Linux系统启动流程之kernel

Linux系统启动流程之kernel

 

1、内核参数修改方法:

2、内核内核模块管理:

3、内核编译

用户空间访问、监控内核的方式:/proc, /sys

伪文件系统

/proc/sys: 此目录中的文件很多是可读写的

/sys/: 某些文件可写

  1、内核参数修改方法:

echo VALUE > /proc/sys/TO/SOMEFILE

sysctl -w kernel.hostname=

[[email protected] vm]# free -m
  total   used   free   shared    buffers     cached
Mem:    7983  541  7442  0  149  269
-/+ buffers/cache:  123   7860
Swap:    4094    0 4094
[[email protected] vm]# echo 1 > /proc/sys/vm/drop_caches
[[email protected] vm]# free -m
 total  used   free  shared  buffers  cached
Mem:  7983  125  7857   0  0  9
-/+ buffers/cache: 115  7867
Swap: 4094  0  4094

[[email protected] kernel]# sysctl -w vm.drop_caches=1
vm.drop_caches = 1
[[email protected] kernel]# free -m
 total  used   free  shared  buffers  cached
Mem:  7983  125  7857   0  0  9
-/+ buffers/cache: 115  7868
Swap: 4094  0  4094

[[email protected] kernel]# cat /proc/sys/kernel/hostname
localhost.localdomain
[[email protected] kernel]# echo wfx >/proc/sys/kernel/hostname
[[email protected] kernel]# hostname
wfx

[[email protected] kernel]# sysctl -w kernel.hostname="local.com"
kernel.hostname = local.com
[[email protected] kernel]# hostname
local.com

[[email protected] kernel]# cat /proc/sys/net/ipv4/ip_forward
0

[[email protected] 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
...

[[email protected] 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

[[email protected] kernel]# cat /proc/sys/net/ipv4/ip_forward   #验证
1

[[email protected] 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 安装驱动时内核模块必须同一版本

[[email protected] kernel]# lsmod |grep floppy
floppy                 95465  0
[[email protected] kernel]# modprobe -r floppy   #删除模块floppy
[[email protected] kernel]# lsmod |grep floppy
[[email protected] kernel]# modprobe floppy   #加载模块floppy
[[email protected] kernel]# lsmod |grep floppy
floppy                 95465  0
[[email protected] 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

[[email protected] kernel]# modprobe -r floppy  #删除模块floppy
[[email protected] kernel]# insmod floppy     #装载模块,不是指定名称,而是指定文件名路径
insmod: can‘t read ‘floppy‘: No such file or directory
[[email protected] kernel]# insmod /lib/modules/2.6.18-164.el5/kernel/drivers/block/floppy.ko
[[email protected] kernel]# lsmod |grep floppy  #验证加载模块floppy成功
floppy    95465  0
[[email protected] kernel]# rmmod floppy   #删除模块floppy方法二
[[email protected] kernel]# lsmod |grep floppy
[[email protected] kernel]#

  3、内核编译

内核中的功能除了核心功能之外,在编译时,大多功能都有三种选择:

1、不使用此功能;

2、编译成内核模块;

3、编译进内核;

如何手动编译内核:

make gconfig: Gnome桌面环境使用,需要安装图形开发库组:GNOME SoftwareDevelopment

make kconfig: KDE桌面环境使用,需要安装图形开发库

[[email protected] 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
...

[[email protected] linux]# yum groupinstall "Development Tools" "Development Libraries" -y

运行时间:10-100min

[[email protected] 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

[[email protected] ~]# tar xf linux-2.6.8.1.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/
[[email protected] src]# ls
kernels  linux  linux-2.6.8.1  redhat
[[email protected] src]# ln -sv linux-2.6.8.1 linux
`linux/linux-2.6.8.1‘ -> `linux-2.6.8.1‘
[[email protected] src]# ls
kernels  linux  linux-2.6.8.1  redhat
[[email protected] src]# cd linux

[[email protected] linux]# ls -al
...
-rw-r--r--  1 root root  79210 2007-10-31 02:01 .config

...

[[email protected] linux]#  cp /boot/config-2.6.23.1-42.fc8 /usr/src/linux/.config
cp: overwrite `/usr/src/linux/.config‘? y

[[email protected] linux]# ls -al  #使用本机正常使用的内核版本文件做二次编辑,降低出错率

...

-rw-r--r--  1 root root  79210 2016-11-19 15:49 .config

...

[[email protected] linux]# make menuconfig  #必须在linux目录下执行后进入文本模式

30MIN--5H      编辑后的设置存到.config中

第1步、make menuconfig: 打开文本下的图形窗口

第2步、make

第3步、make modules_install

第4步、make install

screen命令:  连接断开也能再次打开

screen -ls:  显示已经建立的屏幕

screen:     直接打开一个新的屏幕

Ctrl+a, d:  拆除屏幕,可还原回来

screen -r ID:  还原回某屏幕

exit: 退出

[[email protected] linux]# yum install screen

[[email protected] ~]# screen -ls
There are screens on:
    8231.pts-4.fox    (Detached)
    8200.pts-0.fox    (Detached)
2 Sockets in /var/run/screen/S-root.
[[email protected] ~]# screen -r 8231

二次编译时清理,清理前,如果有需要,请备份配置文件.config:

make clean   清理配制好的二进制模块

make mrproper    清除所有残留的文件,包括.config文件

---end---

时间: 2024-08-08 12:17:37

Linux系统启动流程之kernel的相关文章

Linux系统启动流程之(3)系统故障修复之二

Linux系统启动流程之(3)系统故障修复之二 通过上一篇可以了解如何来重新安装grub从而修复grub引导,那么如果损坏的不仅仅为grub引导,如果还出现了其它更为严重的问题呢.下面几个案例来说明: 案例一: 通常系统服务运行之前会运行init程序来开启第一个进程,那么如果init被删除呢? #删除或者移动init程序到别处 [[email protected] ~]# which init /sbin/init [[email protected] ~]# mv /sbin/init /te

Linux系统启动流程之(3)系统故障修复之一

Linux系统启动流程之(3)系统故障修复之一 在使用linux中可能因为各种原因导致机器无法启动,于是针对这些问题都会应该有一个应对的措施,来恢复系统让此进行工作.下面用几个案例来逐一说明. 案例一: 破坏掉grub中bootloader,及磁盘的前446字节存放的 grub的stage1第一阶段. #使用dd命令将前446字节的bootloader数据填充为0 [[email protected] ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1

Linux系统启动流程之grub

什么是GRUB GNU GRUB 是一个多重操作系统启动管理器.GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而来.GRUB 最初由Erich Stefan Boleyn 设计和应用: 系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载.传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成. Linux中GRUB的配置文件 [[email pr

Linux系统启动流程之inittab

/etc/inittab详解 BIOS自检完成后,BIOS会根据用户设置的启动顺序来由那个设备来启动电脑的操作系统,这个设备一般是硬盘. 也就是进入到硬盘的MBR区域(引导扇区),这个区域中的有512个字节的大小,其中前446个字节中保存的程序是选择启动分区,也就是电脑由那个硬盘分区来载入开机的程序.那么在这个446个字节的空间中保存的就是启动程序,然后由这个小程序来加载存储在其他位置的操作系统,也就是启动grub程序. 当找到启动设备(硬盘)时,第一阶段所用的boot loader(存放在引导

Linux系统启动流程之chkconfig

根据用户的要求,需要在系统正常启动后自动运行某些脚本. chkconfig xxx on 这个命令就自动在对应的rc2 rc3 rc4的目录下创建脚本 先拿rc2.d来看看 这个是rc2.d目录里一个文件的内容,chkconfig 2345 57 43 2345指明了运行级别,当系统运行在2 3 4 5级别时运行该脚本,57是开机优先级 43是关机优先级.开机优先级数字越低越优先执行,关机优先级是数字越低就越迟关闭. 这个是我自己写的测试脚本 注意:这个脚本必须在/etc/rc.d/init.d

inux系统启动流程之(2)grub

Linux系统启动流程之(2)grub Linux启动流程中在引导bootloader时会检查出磁盘的前446字节,从而找出/boot/grub下的相应的配置,来去挂载假根文件系统来解压内核来完成根切换. 回顾启动流程: POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs--> switchroot--> /sbin/init-->(/etc/inittab, /e

CentOS 系统启动流程之GRUB

系统启动之GRUB GRUB(Boot Loader) 从系统启动流程可以得知,在BIOS读取相关信息之后,接下来是去第一个可以启动的设备当中的MBR中读取Boot Loader信息,Boot Loader提供具有菜单功能.直接加载内核信息,以及相关的控制权转交功能.所以说系统启动必须要有Boot Loader,然后才能去加载内核. Boot Loader存储于MBR当中,MBR只有512bytes,其中446bytes存储Boot Loader,但是Boot Loader功能很强大,所以446

Linux系统启动过程详解

 Linux系统启动过程详解 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了. 启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,

Linux系统启动流程与内管管理(上)

在讲linux系统启动流程之前,来讲讲linux的组成,这样能能帮助我们深入了解系统的启动流程,废话不多说直接上系统启动流程图 linux组成 linux:kernel+rootfs kenrel的作用:进程管理.内存管理.网络管理.驱动程序.文件系统.安全管理等 rootfs:程序和glibc 库:函数结合,function,调用接口(头文件负责传输) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派 单内核:把所有功能集成与一个程序 如: