CentOS启动流程及Shell脚本编程练习
转至:http://www.178linux.com/88910
一、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)
第一步:POST加电自检
主要实现的功能是检测各个外围硬件设备是否存在而且能够正常运行起来,实现这一自检功能的是固化在主板上的ROM(主要代表为CMOS)芯片上的BIOS(Basic Input/Output System)程序。
第二步:Boot Sequence(选择启动设备以加载MBR)
主要实现的功能是选择要启动的硬件设备,选择了之后就可以读取这个设备上位于MBR里头的bootloader了。这一步的实现是这样的:根据BIOS中对启动顺序的设定,BIOS自己会依次扫描各个引导设备,然后第一个被扫描到具有引导程序(bootloader)的设备就被作为要启动的引导设备。
第三步:加载bootloader(MBR)
这一步实现起来的步骤比较多,前面的BIOS通过读取并执行启动设备的MBR中的bootloader,而bootloader要实现的功能就是提供一个菜单给用户,让用户去选择要启动的系统或不同的内核版本,然后把用户选择的内核版本加载至RAM中的特定空间,接着在RAM中解压、展开,而后把系统控制权移交给内核。
第四步:Kernel自身初始化
Kerenl在得到系统控制权之后,首先要进行自身初始化
(1)探测可识别到的所有硬件设备;
(2)加载硬件驱动程序,即加载真正的根文件系统所在设备的驱动程序(有可能会借助于ramdisk加载驱动);
(3)以只读方式挂载根文件系统;
(4)运行用户空间的第一个应用程序:/sbin/init.
第五步:init管理用户空间服务进程
init可以理解成是内核派来管理用户空间的使者,就好像天使代表上帝来访问人间一样。init这个初始化程序会根据其配置文件执行一系列操作。
二、为运行于虚拟机上的Centos 6 添加一块新硬盘,提供两个主分区;
1.为硬盘新建两个主分区;并为其安装Grub
echo “- – -” > /sys/class/scsi_host/hos0/scan
fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
mount /dev/sdb2 /mnt/minilinux/
mkdir -v /mnt/minilinux/{etc,bin,sbin,lib,lib64,var,proc,usr,sys,boot,dev,tmp}
mount /dev/sdb1 /mnt/minilinux/boot/
grub-install –root-directory=/mnt/minilinux /dev/sdb
2.为硬盘的第一个主分区提供内核和ramdisk文件;为第二个分区提供rootfs
cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/minilinux/boot/initramfs.img
cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/minilinux/boot/vmlinuz
3.为rootfs提供bash、ls、cat程序及所依赖的库文件
cp /bin/{bash,ls,cat} /mnt/minilinux/bin/
cp $(ldd /bin/{bash,ls,cat} |grep -o “/.*\.[0-9]”) /mnt/minilinux/lib64/
chroot /mnt/minilinux/
4.为grub提供配置文件
vi /mnt/minilinux/boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Minilinux
root (hd0,0)
kernel /vmlinuz root=/dev/sda2 selinux=0 init=/bin/bash quiet
initrd /initramfs.img
5.将新的硬盘设为第一启动项并能正常启动目标主机
三、制作一个Kickstart文件以及一个引导镜像,描述其过程
1、制作Ks文件
yum -y install system-config-kickstart
system-config-kickstart
2、创建引导镜像
mkdir /root/miniboot
cp -r /media/CentOS_6.5_Final/isolinux/ /root/miniboot/
cp /root/ks.cfg /root/miniboot/
vim /root/miniboot/isolinux/isolinux.cfg
mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V “CentOS 6 miniboot” -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso /root/miniboot/
四、写一个脚本
(1)能接受四个参数:start,stop,restart,status
start:输出”starting脚本名finished”
(2)其他任意参数,均报错退出

五、写一个脚本,判断给定的用户是否登录了当前系统
(1)如果登录了,则显示用户登录,脚本终止
(2)每3秒钟,查看一次用户是否登录

六、写一个脚本,显示用户选定要查看的信息
cpu)display cpu info
mem)display memory info
disk)display disk info
quit)quit
七、写一个脚本
(1)用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来
(2)提示用户输入一个用户或输入”quit”退出
当输入的是用户名,则调用函数显示用户信息;
当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit

CentOS启动流程及Shell脚本编程练习的更多相关文章
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- Shell脚本编程(一):初识shell script
Shell简介 Shell是一个命令解释器,它是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核 ...
- SHELL脚本编程基础知识
SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- 【Linux】Shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Shell脚本编程具体解释
第12章 Shell脚本编程 l Shell命令行的执行 l 编写.改动权限和运行Shell程序的步骤 l 在Shell程序中使用參数和变量 l 表达式比較.循环结构语句和条件结构语句 l ...
- 30分钟快速学习Shell脚本编程
什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch ...
随机推荐
- golang中的goroutine
1. 概念 go中可以并发执行的活动单元称为goroutine当一个go程序启动时,一个执行main function的goroutine会被创建,称为main goroutinego func() ...
- 介绍一个golang库:fastcache
学习VictoriaMetrics源码的时候发现,VictoriaMetrics的缓存部分,使用了同一产品下的fastcache.下面分享阅读fastcache源码的的结论: 1.官方介绍 fastc ...
- 【Vulnhub靶场】JANGOW: 1.0.1
时隔这么久,终于开始做题了 环境准备 下载靶机,导入到virtualBox里面,这应该不用教了吧 开机可以看到,他已经给出了靶机的IP地址,就不用我们自己去探测了 攻击机IP地址为:192.168.2 ...
- java解洛谷P1003铺地毯问题
此题给出的最大地毯数量为10000,创建[10001][4]长度的二维数组 以稀松数组的方法,[第i个地毯]的 [0][1][2][3]分别保存地毯的坐标和大小 再用需要求的坐标比较即可 public ...
- 从服务之间的调用来看 我们为什么需要Dapr
Dapr 相关的文章我已经写了20多篇了[1] . 当向其他人推荐Dapr 的时候,需要回答的一个问题就是: Dapr 似乎并不是特别令人印象深刻.它提供了一组"构建块",解决了与 ...
- AT2401 [ARC072C] Alice in linear land
基于观察,可以发现这样一条性质: 我们并不关心当前位置和终点的绝对关系,只在乎当前位置和终点的距离,当这个距离确定的时候接下来能走到的位置也是确定的. 基于这个观察可以发现,本质上每个位置的状态就是和 ...
- python程序语法元素分析
#TemConvert.py TempStr = input("请输入带有符号的温度值:") if TempStr[-1] in ['F', 'f']: C = (eval(Tem ...
- 趁着同事玩游戏偷偷认识k8s一家子补补课
趁着同事玩偷偷认识k8s一家子补补课 Kubernetes集群这个大家庭在容器化时代能够新军崛起,要感谢其众多可靠稳定,工作认真负责的优质成员. 这些兄弟姐妹们为集群提供故障转移和高可用性,保证k8s ...
- Java UDP实现聊天功能代码【转】
感谢大佬大佬!!!:https://www.cnblogs.com/woshijpf/p/3735684.html 我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务 ...
- CephFS分布式文件系统
目录 组件 基本组件 块存储 文件存储 对象存储 特点: 1.高性能: 2.高可用性: 3.高可扩展性: 4.特性丰富: 详细配置 一.准备机器 1.修改主机名 2.修改hosts文件 二.Ceph节 ...