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
下一篇 2016-12-05

相关推荐

  • Linux Service and Security(Part 1)

    一、知识整理 1、不安全的传统协议: telnet、FTP、POP3等:不安全的密码; http、smtp、NFS等:不安全信息; Ldap、NIS、rsh等:不安全验证。 设计基本原则: 使用成熟的安全系统; 以小人之心度输入数据; 外部系统是不安全的; 最小授权; 减少外部接口; 缺省使用安全模式; 在入口处检查; 安全不是似是而非; 从管理上保护好系统…

    Linux干货 2016-10-09
  • Linux用户和组的相关管理命令(一、用户的相关命令)

    Linux是一个可以实现多用户登录的操作系统,通过su – 用户名 可以进行用户之间的切换,从而完成不同登录用户下对私有文件的操作,同时,每个用户有且只有一个主组,但是可以有零个或多个附加组,每个组可以是一个用户的主组,同时还可以是多个用户的附加组。因此,熟练掌握用户和组的相关命令十分重要。 首先,要了解用户和组的配置文件各有两个: 与用户相关的…

    2017-07-22
  • 8月4号作业

    正则表达式表示18位身份证号 egrep "\b[0-9]{17}(x|X|[0-9])\b" 正则表达式表示手机号 egrep "\b1[3,5,8,7][0-9]{9}\b" phone 正则表达式表示邮箱 grep -E "\b[[:alnum:]].*@[[:alnum:]]{2,3}.[[:alnu…

    Linux干货 2016-08-08
  • Linux计划任务和进程

    一、进程管理 1.进程简介 一个程序对应多个进程;一个进程对应一个程序。 2.进程状态的查看与控制 查看进程状态 w 查看个别用户的进程 eg: w userName list-info JCPU: PCPU: WAHT: from: IDLE: 用户空闲时间 load average: ps -aux -a: 显示所有用户的进程 -u:显示用户名和启动时间…

    2017-09-09
  • Haproxy+keepalivd+LAMP

    目录 一、试验部署 1、实验要求 2、实验准备 3、拓扑结构 4、网络规划 二、基础设置 1、LAMP配置 2、HAProxy配置 3、Keepalived配置 三、测试 四、总结 一、试验部署 1、实验要求 (1) 动静分离部署wordpress,动静都要能实现负载均衡,要注意会话的问题; (2) 给出设计拓扑,写成博客; (3)haproxy的设定要求:…

    2017-05-18
  • N25_第一周博客作业

    一、计算机组成及其功能      1、CPU:          运算器:计算功能,对数据进行加工处理的部件。          控制器:负责从存储器读取指令,控制计算器之间的运行状态和结果;     &nbs…

    Linux干货 2016-12-04