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)
上一篇 2016-12-05 17:04
下一篇 2016-12-05 17:05

相关推荐

  • Linux的哲学思想

    Linux的哲学思想 一切皆文件 不管是普通的文件、目录,还是跟硬件相关的字符设备、块设备、套接字等在Linux中都被当作文件来进行统一的操作管理。 单个程序完成简单的功能,复杂的功能由多个程序组合而成 单个程序只实现简单功能,保证了其高效运行,而复杂功能由多个简单程序组合而成,也能保证一定的高效性。 尽量避免与用户交互 程序从启动开始到结束不需要用户参与,…

    Linux干货 2017-07-02
  • 部署LAMP之WordPress, PMA(https), Discuz

    一、环境介绍     系统:CentOS 6.7     软件:httpd-2.2, mysql-5.3, wordpress-4.3, pma4.0     网络:       …

    Linux干货 2016-03-24
  • 马哥教育网络班22期+第5周课程练习

    1、显示当前系统上root、fedora或user1用户的默认shell;cat /etc/passwd | grep "^\<root\>"cat /etc/passwd | grep "^\<fedora\>"cat /etc/passwd | grep "^\<user1\…

    Linux干货 2016-09-19
  • NET25-第11周作业

    1、详细描述一次加密通讯的过程,结合图示最佳。 第一步:他们需要实现协商好对称加密算法,单向加密算法,公钥加密算法,交换公钥等。 第二步:B用户想要将数据传给A,首先需要使用单向加密算法取出数据的特征码,并用自己的私钥对这段特征码进行加密(数字签名),B用户生成临时对称密钥,并用对称密钥加密整段数据,B用户使用 A用户的公钥加密一次性对称密钥,附加在整段数据…

    Linux干货 2017-05-15
  • 硬链接和软链接的说明

    1、硬链接和软链接的区别    (1)、原理上:                   【1】 硬链接(hard link):                 &…

    2017-07-21
  • 文件系统管理

                                高级文件系统管理 磁盘配额 控制用户在一个分区上使用多大的空间。 操作步骤: 1、创建一个10G的分区 /dev/sdc1并将其格式化,挂载 2、如果是新…

    Linux干货 2016-08-29