N22-妙手-第十周博客作业

1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)

2016-10-21 14_21_15-演示文稿1 - PowerPoint.png

    (1) POST阶段

        加电自检,确保每个设备能正常工作

    (2) BIOS

        按次序查找跟引导设备,第一个有引导程序的设备即为本次启动要用到的设备

    (3) Bootloader:引导加载器

        GRUB:提供一个菜单,允许用户选择要启动的系统或不同的内核版本;把用户选择的系统或内核版本装载到内存特定的空间中解压、展开,完成后将控制权交给内核

    (4) Kernel:

        自身初始化:

        探测可识别到的所有硬件设备

        加载硬件驱动设备。

        注意:如果不能识别设备,需要临时生成ramdisk来动态识别设备的驱动,并加载硬件设备

    (5) roofts:

        只读的方式挂载跟文件系统

    (6) /sbin/init:开始启动用户空间程序

        设置默认运行级别

        运行系统初始化脚本:脚本存放位置:/etc/rc.d/rc.sysinit

        设置主机名

        设置欢迎信息

        激活udev和SELinux

        挂载/etc/fstab文件中定义的所有文件系统

        检测跟文件系统,如果一切正常,以读写方式重新挂载根文件系统

        设置系统时钟

        根据/etc/sysctl.conf文件的设置,设置内核参数

        激活lvm及raid设备

        激活swap设备

        加载额外的设备的驱动程序

        清理操作

        关闭对应级别需要停止的服务,启动对应级别需要开启的服务

        设置登录终端

2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;
 

    (1) 为硬盘新建两个主分区;并为其安装grub;

        创建分区:

21.png

        安装grub

N22-妙手-第十周博客作业22.png

    (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;

        内核和ramdisk文件

N22-妙手-第十周博客作业23.png

        第二个分区上的rootfs

N22-妙手-第十周博客作业24.png

    (3) 为rootfs提供bash、ls、cat程序及所依赖的库文件;

N22-妙手-第十周博客作业25.png

    (4) 为grub提供配置文件;

        grub.conf配置文件放置于/tmp/boot/grub

N22-妙手-第十周博客作业26.png

    (5) 将新的硬盘设置为第一启动项并能够正常启动目标主机;

        新建目标主机:Test Installation of Grub

N22-妙手-第十周博客作业27.png

        启动正常

28.png

3、制作一个kickstart文件以及一个引导镜像。描述其过程。

    (1) 制作kickstart文件

        安装制作kickstart文件程序

            yum -y install system-config-kickstart

        启动制作kickstart文件程序

            ksystem-config-kickstart

    

    (2) 制作引导镜像

        在根用户家目录下创建myboot目录

        挂载光盘镜像至/media/cdrom

        复制/media/cdrom/isolinux目录至/root/myboot

        复制制作完成的ks.cfg至/root/myboot目录下

        创建光盘镜像:mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/

31.png

        在VMWare中选择boot.iso作为引导镜像

32.png

4、写一个脚本
  (1) 能接受四个参数:start, stop, restart, status
   start: 输出“starting 脚本名 finished.”
   …

  (2) 其它任意参数,均报错退出;

#!/bin/bash
#
cat << EOF
start)   start the service
stop)    stop the service
restart) restart the service
status)  check the status of the service
*****************************************
*****************************************
EOF

read -p "Please input your selection: " selection

case $selection in
start) 
    echo "starting $0 finished"
    ;;
stop)
    echo "stopping $0 finished"
    ;;
restart)
    echo "restarting $0 finished"
    ;;
status)
    echo "checking the status of $0 finished"
    ;;
*)
    echo "please input valid selection"
    ;;
esac

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

#!/bin/bash
#

while true; do
    if who | grep "^meng\>" >& /dev/null; then
        break
    fi
    sleep 3
done

echo "$(date +"%F %T") meng login" >> /tmp/userinfo.log

6、写一个脚本,显示用户选定要查看的信息;
   cpu) display cpu info
   mem) display memory info
   disk) display disk info
   quit) quit
   非此四项选择,则提示错误,并要求用户重新选择,只到其给出正确的选择为止;

#!/bin/bash
#
cat << EOF
Display information as following shown selection
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
************************************************
EOF

while true; do
    read -p "Please input your selection: " selection

    case $selection in
    cpu) 
        lscpu
        ;;
    mem)
        free -m
        ;;
    disk) 
        fdisk -l /dev/vd[a-z]
        ;;
    quit)
        echo "Bye Bye"
        exit 0
        ;;
    *)
        echo "Please input valid selection"
        ;;
    esac
done

7、写一个脚本
  (1) 用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来;
  (2) 提示用户输入一个用户名或输入“quit”退出;
    当输入的是用户名,则调用函数显示用户信息;
    当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit:

#!/bin/bash
#


userInfo() {
        local userLine=$(grep $1 /etc/passwd)
        local userSHELL=${userLine##*:}
        local userID=$(echo $userLine | cut -f3 -d:)
        echo "$userSHELL and $userID"
        
}

quit() {
    if [ "$1" == "quit" ]; then
        echo "Bye Bye"
        exit 2
    fi
}
 
while true; do
    read -p "Please input your username or input 'quit': " choice

    if [ "$choice" == "quit" ]; then
        quit $choice
        break
    fi

    if id $choice >& /dev/null; then
        userInfo $choice
    fi
done

8、写一个脚本,完成如下功能(使用函数)
   (1) 提示用户输入一个可执行命令的名字;获取此命令依赖的所有库文件;
   (2) 复制命令文件至/mnt/sysroot目录下的对应的rootfs的路径上,例如,如果复制的文件原路径是/usr/bin/useradd,则复制到/mnt/sysroot/usr/bin/目录中;
   (3) 复制此命令依赖的各库文件至/mnt/sysroot目录下的对应的rootfs的路径上;规则同上面命令相关的要求;

read -p "Please input a command: " cmd

cmdPath=$(which $cmd | grep bin)

cpCmd() {

cp $cmdPath /mnt/sysroot$cmdpath
echo "Copy $cmdPath to path /mnt/sysroot/"

}

cpFile() {

libFile=$(ldd $cmdPath | grep -o "/[^[:space:]]\{1,\}")
for i in $libFile; do

    cp $lib /mnt/sysroot$cmdPath
    echo "Copy $libFile to path/mnt/sysroot/$cmdPath"
done
}

cpCmd

cpFile

原创文章,作者:mxb93,如若转载,请注明出处:http://www.178linux.com/52532

(0)
mxb93mxb93
上一篇 2016-12-05 17:04
下一篇 2016-12-05 17:05

相关推荐

  • N26-第五周博客

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]].*$" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; [root…

    系统运维 2017-02-10
  • 文件系统配额操作

    创建磁盘配额是实际工作中会遇到的内容,下面是一个磁盘配额的全部过程 一、总体步骤 1 启用配额挂载选项 2 创建配额数据库 3启用数据库 4指定用户空间限制 5测试 6查询 二、分步操作过程 (1)  查看独立的磁盘(或者是分区) [root@localhoast ~]# lsblk NAME   …

    Linux干货 2016-11-23
  • shell脚本编写-4

    1、while 循环的特殊用法(遍历文件的每一行) while read line; do 循环体 done < /PATH/FROM/SOMEFILE 依次读取/PATH/FROM/SOMEFILE 文件中的每一行,且将行赋值给变量line 练习:扫描/etc/passwd 文件每一行,如发现GECOS 字段为空,则填充用户名和单位电话为629856…

    Linux干货 2016-09-01
  • 2班jackcui20160802作业

    1、每日课堂笔记总结 2、预习 3、每日课堂pdf练习 4、在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 [root@centos7 /]# groupadd g1 [root@centos7 /…

    Linux干货 2016-08-05
  • Linux基于OpenSSL实现私有CA构建

    前言 随着互联网的迅猛发展,网络通信已经成为传递信息的主要途径。而通信时的数据传输大部分却是明文传输的,在网络这个不安全的环境下,如果没有一套数据加密机制,就会导致敏感信息和重要数据泄露,引起不可估量的损失。而OpenSSL正好弥补了这一缺憾,那什么是OpenSSL呢?OpenSSL是一套强大的具有加密功能的组件,它包含libcrypto(公共加密库)、li…

    Linux干货 2015-04-13
  • 【Linux基础】计算机及操作系统基础

    【Linux基础】计算机及操作系统基础 计算机的组成及其功能 计算机的组成 简单来说,计算机应由两部分组成:第一部分:硬件 冯诺依曼结构体系 当前计算机主要是基于冯诺依曼体系结构设计的,在该体系中,计算机硬件由5个部件组成。分别是:运算器、控制器、存储器、输入设备和输出设备。而现今运算器和控制器一般集成在一起,叫中央处理器(Central Processin…

    Linux干货 2018-03-04