菜鸟学Linux 第033篇笔记 bootloader,inittab

简介:

菜鸟学Linux 第033篇笔记 bootloader,inittab



Linux 系统自启动流程



PC OS (Linux)


POST-->BIOS(Boot Sequence)-->MBR(bootloader,446byte),GPT-->Kernel

-->initrd-->ROOTFS /sbin/init(/etc/inittab)


运行级别 (启动的服务不同)

运行级别:0-6

0 halt

1 single user mode 直接以管理员身份切入 s,S,single

2 multi user mode, no NFS

3 multi user mode, text mode

4 reserved

5 multi user mode, graphic mode

6 reboot

详解启动过程

bootloader(MBR)

LILO LInux LOader(早期,适合嵌入式系统)

GRUB GRand Unified Bootloader

stage1 MBR

stage1_5 识别文件系统

stage2 /boot/grub/

bootloader 有446字节最多


/etc/grub.conf 文件格式

default=0 默认启动title

timeout=5 等待用户选择的超时时长

splashimage= 背景图片

hiddenmenu 隐藏菜单

password myroot

password --md5  此处为进入编辑grub时输入密码

title 内核标题,或操作系统名称字符串,可自由修改

root (hd0,0) 内核文件所在的设备:对grub而言,所有类型硬盘一律hd 

第一个0 表示第几个磁盘,第二个对应硬盘分区

kernel 内核路径和传递给内核的参数 /proc/cmdline

initrd ramdisk文件路径

password --md5  放在此处则进入内核需要输入密码


内核设计风格


RedHat, SUSE

核心 动态加载 内核模块

内核 /lib/modules/"内核版本号命名的目录"/ 

vmlinuz-2.6.32

/lib/modules/2.6.32/

RedHat5 ramdisk-->initrd

RedHat6 ramfs-->initramfs

单内核 Linux (LWP)

核心 KO (kernel object)

微内核 windows Solaris(多线程)


Jail

chroot (run command or interactive shell with special root directory)

chroot /test/vrroot or /test/vrrot/bin/bash

ldd /path/Binary_file 显示二进制文件所依赖的共享库



Command

yum install gimp 一个图形编辑软件

使用Xshell远程软件可以启动远程的图形界面gimp & 


grub-md5-crypt 使用md5给生成grub密文


runlevel Print previous and current SysV runlevel

who -r  display runlevel

uname  ( print system information)

-r, --kernel-release

              print the kernel release

dd if=/dev/zero of=/dev/sda count=1 bs=400 破坏硬盘的bootloader

修复grub

第一种:

#grub

grub>root (hd0,0)

grub> set (hd0)

第二种:

#grub-install --root-directory=/path/boot's parent /dev/hda


给其它硬盘安装grub

1.将硬盘格式化好之后,挂载到一个以/mnt/boot目录下该硬盘的你目录必须是boot

2.使用命令grub-install --root-directory=/mnt /dev/sd(a,b,c...)  

前边的root-directory 必须选用boot的父目录

3.完成后会在该硬盘下生成一个grub的文件夹,打开后里边有文件

4.手动生成一个grub.conf配置文件在grub目录下vim /mnt/boot/grub/grub.conf

编辑该配置文件

default=0

timeout=5

title mylinux(name)

root (hd0,0)

kernel /vmlinuz-2.6.18-308.el5

initrd /initrd-2.6.18-308.el5.img

注意以上两个的版本是一样的,,这样grub就制作完成了


如果grub.conf配置文件丢失,系统启动时会进入grub模式,只要知道内核在哪里就可以启动

如果硬盘多可以在grub模式下输入find (hd0,0)/按Tab来查看此硬盘下所有的内核文件

查找到后执行 

 grub> root (hd#,#)

 grub> kernel /vmlinuz-2.6.18-308.el5

 grub> initrd /initrd-2.6.18-308.el5.img

 grub> boot

 即可启动该Linux系统#号表示要对应具体的第几块硬盘,第几个分区




Kernel初始化的过程:

1、设备探测

2、驱动初始化(可能会从initrd (initramfs)文件中装载驱动模块)

3、以只读挂载根文件系统

4、装载第一个进程init (PID:1)


/sbin/init: (/etc/inittab) (古老)

RedHat6 upstart ubuntu, d-bus, event-driven

systemd 并行


/etc/inittab文件下的定义

# Default runlevel. The runlevels used by RHS are:

id:5:initdefault: 格式含义

id 标识符

runlevels 在哪个级别运行此行

action 在什么情况下执行此行

initdefault 设定默认运行级别

sysinit 系统初始化

wait 等待级别切换至此级别时执行

respawn 一旦程序终止,会重新启动该程序

process 要运行程序


# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit

/etc/rc.d/rc.sysinit完成的任务

1、激活udev和selinux

2、根据/etc/sysctl.conf文件,来设定内核参数

3、设定时钟

4、装载键盘映射

5、启用交换分区

6、设置主机名

7、根文件系统检测,并在没有错误之后,以读写方式重新挂载

8、激活RAID和LVM设备

9、启用磁盘配额

10、根据/etc/fstab,检查并其它文件系统

11、清理过期的锁和PID文件


/etc/rc.d/init.d /etc/init.d

服务类脚本

start

stop

SysV: /etc/rc.d/init.d

start|stop|restart|status

reload|configtest

脚本中的

# chkconfig: 345 26 74

第一组 runlevels 

第二SS   start 优先次序

第三KK  kill  次序

当chkconfig命令来为此脚本在rc#.d目录创建链接时,

runlevels表示默认创建为S*开头的链接如果为-则表示所有级别,

除此之外的级别默认创建为K*开关的链接

S后面的启动优先级为SS所表示的数字,K后面的优级为KK所表示的数字

# description:

用于说明此脚本的简单功能\,续行


chkconfig命令 updates and queries runlevel information for system services

--list 列出所有独立守护服务的启动设定

先将服务脚本cp到/etc/rc.d/init.d/目录下

chkconfig --add SERVICE_NAME 添加服务链接到/etc/rc.d/rc#.d目录下

chkconfig --add SERVICE_NAME 删除/etc/rc.d/rc#.d目录下的服务链接

chkconfig --level RUNLEVEL SERVICE_NAME {on|off}

如果省略级别指定,默认为2345级别


/etc/rc.local /etc/rc.d/rc.local 

系统最后启动的一个服务,准确说,应该执行的最后一个脚本


# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

启动终端

/etc/inittab的任务

1.设定默认运行级别

2.运行系统初始化脚本

3.运行指定运行级别对应的目录下的脚本

4.设定Ctrl+Alt+Del组合键的操作

5.定义UPS电源在电源故障、恢复时执行的操作

6.启动虚拟终端(2345)

7.启动图形终端(5)

守护进程的类型

独立守护进程xinetd默认可能未安装,需自行安装 yum install xinetd

xinetd 超级守护进程代理人 需要关联至运行级别

瞬时守护进程:不需要关联至运行级别

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1877226如需转载请自行联系原作者


Winthcloud

相关文章
|
29天前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
29天前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
17小时前
|
编解码 Linux
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是开源的MPEG-4视频编解码器,曾与DivX一起用于早期MP4视频编码,但现在已被H.264取代。要集成XviD到Linux上的FFmpeg,首先下载源码,解压后配置并编译安装libxvid。接着,在FFmpeg源码目录中,重新配置FFmpeg以启用libxvid,然后编译并安装。成功后,通过`ffmpeg -version`检查是否启用libxvid。详细步骤包括下载、解压libxvid,使用`configure`和`make`命令安装,以及更新FFmpeg配置并安装。
10 2
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
|
6天前
|
Web App开发 安全 Linux
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
《FFmpeg开发实战》书中介绍轻量级流媒体服务器MediaMTX,但其功能有限,不适合生产环境。推荐使用国产开源的ZLMediaKit,它支持多种流媒体协议和音视频编码标准。以下是华为欧拉系统下编译安装ZLMediaKit和FFmpeg的步骤,包括更新依赖、下载源码、配置、编译、安装以及启动MediaServer服务。此外,还提供了通过FFmpeg进行RTSP和RTMP推流,并使用VLC播放器拉流的示例。
20 3
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
|
7天前
|
编解码 Linux
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
《FFmpeg开发实战》书中指导如何在Linux环境下为FFmpeg集成libwebp以支持WebP图片编解码。首先,从GitHub下载libwebp源码,解压后通过`libtoolize`,`autogen.sh`,`configure`,`make -j4`和`make install`步骤安装。接着,在FFmpeg源码目录中重新配置并添加`--enable-libwebp`选项,然后进行`make clean`,`make -j4`和`make install`以编译安装FFmpeg。最后,验证FFmpeg版本信息确认libwebp已启用。
17 1
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
|
13天前
|
Linux 编解码 Python
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
AV1是一种高效免费的视频编码标准,由AOM联盟制定,相比H.265压缩率提升约27%。各大流媒体平台倾向使用AV1。本文介绍了如何在Linux环境下为FFmpeg集成AV1编解码库libaom、libdav1d和libsvtav1。涉及下载源码、配置、编译和安装步骤,包括设置环境变量以启用这三个库。
36 3
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
|
17天前
|
网络协议 Linux Shell
Linux重定向笔记
Linux重定向笔记
16 0
|
27天前
|
编解码 Linux 5G
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
AVS3,中国制定的第三代音视频标准,是首个针对8K和5G的视频编码标准,相比AVS2和HEVC性能提升约30%。uavs3d是AVS3的解码器,支持8K/60P实时解码,且在各平台有优秀表现。要为FFmpeg集成AVS3解码器libuavs3d,需从GitHub下载最新源码,解压后配置、编译和安装。之后,重新配置FFmpeg,启用libuavs3d并编译安装,通过`ffmpeg -version`确认成功集成。
34 0
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
|
1月前
|
NoSQL Java Linux
linux笔记
linux笔记
17 0
|
1月前
|
存储 运维 Java
Linux笔记02 —— Shell补充
Linux笔记02 —— Shell补充
41 2