Linux启动和内核管理

系统启动和内核管理

Linux组成

Linux:kerne+rootfs(应用程序)

kernel:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能

roots:程序和glibc

函数:相当于命令的集合

库:函数集合,function,调用接口(头文件负责描述)

过程调用:procedure,无返回值

函数调用:function

程序:二进制执行文件

内核设计:

单内核(monolithic kernel):Linux

把所有功能集成于一个同一个程序

微内核(micro kernel):Windows,Solaris

每种功能使用一个单独子系统实现

内核

Linux内核特点:

支持模块化:.ko(内核对象)

如:文件系统,硬件驱动,网络协议等

支持内核模块的自动化的装载和卸载

组成部分:

核心文件:/boot/vmlinuz-VERSION-release(存放着最重要的一些文件)

ramdisk:辅助的伪文件系统

Centos5;/boot/initrd-VERSION-release.img

Centos6,7:/boot/initramfs-VERSION-release.img

模块文件:/lib/modules/VERSION-release(大部分功能模块)

/lib/modules(存放着大部分的驱动)

Centos6启动过程

POST加电启动检查→MBR引导→GRUB→加载内核

启动流程:

POST:Power-On-Self-Test

ROM(只读):BIOS,保存着有关计算机系统重要的基本输入输出程序,加电就会运行这些程序,系统信息设置,开机加电自检程序等

RAM(此处不代表内存):断电也不会丢失RAM中的数据,因为主板有电池,在BIOS中调整的顺序会保存在此处

按次序查找引导设备,第一个有引导程序的设备为本次启动设备(可在BIOS中调整)

bootloader:引导加载器(用来启动计算机的一段儿程序),引导程序

windows:ntloader,仅仅是启动OS,只可以启动Windows

Linux:早期用LILO(LInux LOader只能用来引导Linux)来引导Linux,grub引导Linux也可以引导Windows

GRUB:GRand Unified Bootloader

GRUB 0.X:老版本

MBR:

446:bootloader(grub的第一阶段),64:分区表,2:55AA

GRUB:

primary boot loader:1st stage(grub的第一阶段)

1.5 stage(用来读取boot分区的文件系统驱动)两者都是以二进制方式存储

读取文件系统驱动,用initramfs-VERSION-release中的文件来读取文件系统驱动;

Centos5 ramdisk:模拟了一块儿磁盘,还需将模拟的磁盘转换为文件系统再转换为磁盘

Centos6 ramfs:直接给了一个文件系统,通过文件系统访问磁盘

系统初始化

POST-->BootSequence(BIOS)-->Bootloader(MBR)-->kernel(ramdisk)-->rootfs(只读)-->init(systemd)

ramdisk文件制作:

mkinitrd "文件名(最好是原名)`uname -r`.img" `uname -r`(为当前正在使用的内核重新制作ramdisk文件)

init程序的类型

SysV:init,Centos 5之前

配置文件/etc/inittab

Upstart:init,Centos6

配置文件:/etc/inittab, /etc/init/*.conf

Systemd:systemd, CentOS 7

配置文件:/usr/lib/systemd/system

/etc/systemd/system

开机启动流程:

post

mbr boot loader grub

/boot/vmlinxz

/boot/initramfs.

/sbin/init

/etc/inittab

/etc/rcN.d/ --> /etc/init.d/xxx

/etc/rc.d/rc.local

login

模式(在/etc/inittab中调整开机模式):

0:关机

1:单用户模式

2:多用户模式,不具有NFS功能

3:多用户模式(跟2几乎相同,并且是字符界面)

4:未使用,暂时没用上

5:图形界面

6:重启

默认级别:3,5

切换级别:init #

查看级别:runlevel

Centos 5的配置文件:/etc/inittab

ntsysv查看开机启动的程序

chkconfig --list "程序名称"

--add 添加到开机启动的服务

"程序名称" on 开机启动

--del "程序名称" 删除服务开机启动

(1)默认模式定义

(2)系统初始化脚本

(3)运行模式对应的脚本

/etc/rc#.d/下存放了S开头的一系列启动文件,数值越小,启动优先级最高;

同时存放了K开头的一系列停止文件,数值越小,关闭优先级越高

/etc/rc#.d/S99local作用是写开机要做的事情

/etc/rc.d/rc.local中放的内容是随着服务器开机启动而启动

xinetd管理的服务

瞬态:服务被xinetd进程所管理

进入的请求首先被xinetd代理

配置文件:/etc/xinetd.conf、/etc/xinetd.d/<servicename>

当/boot目录下的vmlinux文件丢失的时候,可以使用光盘救援模式将光盘中isolinux下的vmlinux改名并复制到/boot目录下即可

cp /mnt/cdrom/isolinux/vmlinux /mnt/sysimage/vmlinux-`uname -r`即可

当/boot目录丢失的时候进入救援模式执行

rpm -ivh /mnt/cdrom/Package/kernel-xxxxxx --force --root=/mnt/sysimage/

grub legacy

grub

stage1:mbr

stage1_5(1.5阶段):mbr之后的扇区

grub.conf(grub的配置文件)

/etc/grub.conf中指明了根分区的位置,找到了根文件之后就可以找到/下面的一系列进程,然后进行启动

安装grub

(1)grub-install

安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到DIR/boot目录下

grub-install [--root-directory=DIR](指定grub安装的位置的父目录) /dev/DISK 440个字节的修复方法 grub-install /dev/sda

(2)grub(交互式命令,hd写的是boot挂载点的第几块硬盘,hd0,0就是第一块硬盘的第一个分区)

root(hd#,#)

setup(hd#)

破解root口令(必须要在服务器面前)

(1)启动过程中出现选择菜单后输入"a"在后方输入1进入单用户模式

(2)进入后passwd root设置新密码

(3)在/etc/grub.conf文件中追加"password fang"则是将进入单用户模式加为明文密码

grub-md5-crypt可生成随机md5密码,将生成的随机密码复制到/etc/grub.conf中password后面则是将进入单用户模式加密

grub-crypt生成随机密码,将生成的随机密码复制到/etc/grub.conf中的password -encrypted 后方

启动口令:/etc/grub.conf启动的菜单下面添加password -encrypted "生成的随机密码"可将启动也添加上密码

配置文件:/boot/grub/grub.conf

default=#:设定默认启动的菜单项;

timeout=#:指定菜单项等待选项选择的时长

splashimage(hd#,#)/PATH/XPM_FILE:菜单背景图片

password:启动菜单编辑设定密码

hiddenmenu:隐藏菜单

title:定义菜单项标题

root(hd#,#):查找stage2及kernel文件所在设备分区;

kernel:为grub的根kernel "内核包位置"

initrd "内核匹配的ramfs文件"

/proc目录:

存放一系列进程文件

参数:只读:输出信息

/proc/sys

sysctl -a:所有正在生效的设置

sysctl -w:修改指定的某一行数据,修改后的数据会存放在内存中,重启后会还原

sysctl -p:读取/etc/sysctl.conf文件,是修改生效,当文件中不存在某行的时候,就会与内村中定义的同步

常用参数:

net.ipv4.forward:管理路由功能是否开启0为开启,1为关闭

net.ipv4.icmp_echo_ignore_all:不允许别的主机ping自身

vm.drop_caches:将此值改为1则是释放缓存内存

/sys目录:

存放一系列与硬件相关的主要内容

编译安装内核

内核组成部分:

kernel,内核核心,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE

kernel object:内核对象,一般放置于/lib/modules/VERSION-RELEASE

[ ]:Not set(没有启用)

[M]:m(以模块方式存在的,并为独立文件)

[*]:y(存放到vmlinuz中了,不为独立文件了)

内核版本

运行中的内核:

uname命令:

uname - print system information

uname [OPTION]...

-n:显示主机名称

-r:显示VERSION-RELEASE

-a:显示所有的信息

内核模块命令:

lsmod 显示已经加载的模块

显示的内容来自于:/proc/modules文件

modinfo命令:

显示模块的详细描述信息

modinfo [ -k kernel ] [ modulename|filename]

-n:只显示模块文件路径

-p:显示模块参数

-a:author作者

-d:description描述

-l:license

例子:lsmod | grep xfs;modinfo xfs 查看xfs模块是否运行,并且查看详细信息

modprobe命令(自动解决依赖关系):

装载或卸载内核模块

modprobe

-r:卸载模块,并且模块之间是存在依赖性的,驱动消失后,硬件也就消失了

配置文件:/etc/modprobe.conf或者是/etc/modprobe.d/*.conf

depmod命令:

设置模块之间的依赖关系

装载或卸载内核模块:

insmod命令:指定模块文件,不会自动解决依赖模块

insmod [ filename ] [ module options ]

insmod `modinfo -n exportfs`(将反撇号中的执行结果用insomod加载)

rmmod命令:卸载模块

rmmod [ modulename ]

编译内核

1 从www.kernel.org下载要编译的内核文件

2 安装Development Tools组

3 .config:准备文本配置文件,可以将系统上已有的config-3.10.0-693.el7.x86_64文件修改为.config文件编辑

4 make menuconfig:配置内核选项,此命令是一个菜单,菜单中"--->"说明后方还有子菜单

[ ]:Not set(没有启用)

[M]:m(以模块方式存在的,并为独立文件)

[*]:y(存放到vmlinuz中了,不为独立文件了)

5 make [ -j #]( -j 指定CPU核数)会在/lib下生成一个编译的版本的目录

6 make modules_install:安装模块,相当于安装了lib/modules目录

7 make install:安装内核相关文件

原文地址:http://blog.51cto.com/kaikai0720/2055636

时间: 2024-10-11 16:10:10

Linux启动和内核管理的相关文章

Linux 第20天: (09月12日) Linux启动和内核管理

本章内容 CentOS 5和6的启动流程服务管理Grub管理自制Linux启动排错编译安装内核 Linux组成Linux: kernel+rootfskernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能rootfs:程序和glibc库:函数集合, function, 调用接口(头文件负责描述)过程调用:procedure,无返回值函数调用:function程序:二进制执行文件内核设计流派:单内核(monolithic kernel):Linux把所有功能集成于同一个程序微内

linux启动及内核管理

一:Linux 系统系统的组成 Linux由kernel和rootfs组成,那么什么是kernel,什么是rootfs呢?kernel:操作系统内核,操作系统内核是指大多数操作系统的核心部分.kernel用于进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能rootfs:程序和glibc.rootfs之所以存在,是因为需要在VFS机制下给系统提供最原始的挂载点.VFS是Linux文件系统实现必须遵循的一种机制,rootfs是一种具体实现的文件系统.Linux下所有文件系统的实现都必须符合

Linux入门之内核管理番外篇(4)udev入门(1)

Linux入门之内核管理番外篇(4)udev入门(1) 前言 在上篇中的内核模块管理讲解中,最后或多或少会留下一些疑问,那么这些疑问就是内核模块的参数是怎么和对应的硬件所匹配上的,而硬件又是怎么被内核识别,并且一个个都映射成实际存在的文件,而这些文件之间的关系及作用.当然在最后了解到,这些硬件设备的探测信息是通过一个叫udev的工具来实现的,通过udev中配置的规则可以很有效的识别每一个硬件,并配合sysfs文件系统,将每个探测到的硬件信息导入到/sys目录中,那么与/proc目录对与内核系统信

启动和内核管理

一.启动和内核管理 1)CentOS 5和6的启动流程 2)服务管理 3)Grub管理 4)自制Linux 5)启动排错 6)编译安装内核 二.linux组成   Linux:kernel+rootfs kernel:进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能(selinux) rootfs:程序和glibc    库:函数集合,无返回值 函数调用:function 程序:二进制执行文件 Linux内核特点:支持模块化:.ko(内核对象)如:文件系统,硬件驱动,网络协议等 支持内

Linux 自学笔记——内核管理初步及编译

Linux Kernel: 内核设计体系:单内核.微内核: 内核的组成部分: 1.Kernel:内核核心,一般为bzimage,通常位于/boot目录,名称为vmlinuz-VERSION-release: 2.Kernel object:内核对象,即内核模块,一般放置于/lib/modules/VERSION-release/,maninfo命令通过读取此文件的信息以显示相关信息: 内核模块与内核核心版本一定要严格匹配: []:N: [M]:Module,编译进模块中: [*]:Y,编译进内核

Linux系统管理(一)Linux设备和内核管理

设备和内核管理 一.  设备管理概述 1.Linux设备的分类 字符设备(c):以字符为单位,传输速率较低,无需缓冲区. 块设备(b):以数据块为单位组织和传输数据,需要建立缓冲区 网络设备(s):一种通过SOCKET接口进行主机通信的设备 2.设备文件 (1)功能 用于用户访问设备进行输入和输出操作 (2)常见的设备文件 /dev/hd*   IDE接口的硬盘(IDE接口的设备) /dev/sd*   SCSI/USB设备 /dev/cua*  串口设备 /dev/lp*  并口设备 /dev

Linux-系统启动和内核管理

本章内容 CentOS 5和6的启动流程 服务管理 Grub管理 自制Linux 启动排错 编译安装内核 CentOS7启动流程 Unit介绍 服务管理和查看 启动排错 破解口令 修复grub2 Linux组成 Linux: kernel+rootfs kernel: 进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs:程序和glibc 库:函数集合, function, 调用接口(头文件负责描述) 过程调用:procedure,无返回值 函数调用:function 程序:

Linux 0.12 内核管理存储器

其分段,用分段的机制把进程间的虚拟地址分隔开. 每一个进程都有一张段表LDT.整个系统有一张GDT表.且整个系统仅仅有一个总页表. 其地址翻译过程为: 程序中给出的32位地址(实际上被看做段内偏移地址),再依据代码段寄存器CS中的16位段选择子,可在GDT或LDT中查找对应的段描写叙述符.从段描写叙述符中提取段的基地址,与程序给出的32位地址相加.得到结果为线性地址. 依据此线性地址查找系统页文件夹表,再查二级或是多级页表,终于得到物理地址. 此方式系统仅仅有一个4G的线性地址空间由各进程共享(

Linux系统启动和内核管理

Linux组成 由 kernel 和 rootfs 组成 单内核:(进程管理,内存管理,网络管理, 驱动程序,文件系统, 安全功能) /boot/vmlinuz-VERSION-release 辅助的伪根系统 /boot/initramfs-VERSION-release.img            这是一个cpio格式的归档文件,存放的是各种驱动模块 md5sum vmlinuz /boot/vmlinuz       查看两个文件中的内容是否完全一致,只要有一个字符不一样,两个文件的md5