N25第十周博客作业

1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)
        (1)post:加电自检
                主要是bios完成,检查主机各个组件是否完好,能否达到运行要求;
        (2)Boot Sequence:启动顺序
                这一步是按照bios的预先设置来选择首选启动项;
        (3)Boot Loader:引导加载器
                这一步是在选择启动介质后,在介质的第一扇区会有一段小程序来引导我们启动不同的系统或内核版本;
        (4)kernel:加载内核
                 当选定内核或系统,由Bootloader将内核或系统加载到 内存中特定空间中,解压、展开,而后把系统控制权叫给内核;
        (5)运行/sbin/init
                当内核被唤醒后,它开始完成系统的构建、加载驱动,然后开始运行第一个程序:init;
        (6)选择默认级别:
                init会根据/etc/inittab等文件的定义来选择默认启动级别,完成系统开启;
        (7)运行系统初始化脚本,完成系统初始化:
                在系统开启后,init会根据/etc/rc.d/rc.sysinit来初始化系统,包括设置主机名、设置欢迎信息、激活udev和SELinux、挂载/etc/fstab文件中定义的所有文件系统等;
        (8)关闭对应级别下要停止的服务和启动对应级别下需要开启的服务:
                根据init配置文件,关闭/etc/rc.d/rc#.d/下K*的所有服务,开启S*的所有服务,注#代表启动级别;
        (9)设置登陆终端:
                这一步主要是开启一个登陆接口,并为之加载环境变量、别名配置等文件,如果是5级别的话,还会开启图形界面,加载图形界面所需的各种插件。

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

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

       ~]#  mkdir /mnt/{sysboot,sysroot}

       ~]#  fdisk /dev/sdb

              n–> p–>1–>+500M

              n–> p–>2–>+2G

              w

        ~]# partprobe /dev/sdb

        ~]# mkfs.ext4 /dev/sdb1

        ~]# mkfs.ext4 /dev/sdb2

        ~]# mount /dev/sdb1 /mnt/sysboot

        ~]# mount /dev/sdb2 /mnt/sysroot

        ~]# grub-install –root-directory=/mnt  /dev/sdb

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

        ~]# cp /boot/vmlinuz-2.6.32-431.el6.x86_64  /mnt/sysboot/vmlinuz

        ~]# cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/sysboot/initramfs.img     

        ~]# mkdir /mnt/sysroot/{bin,proc,lib64,mnt,sbin,…}   

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

        [root@localhost sysroot]# ldd /bin/{cat,ls,bash}

/bin/cat:

linux-vdso.so.1 =>  (0x00007fff91dff000)

libc.so.6 => /lib64/libc.so.6 (0x000000354a200000)

/lib64/ld-linux-x86-64.so.2 (0x0000003549a00000)

/bin/ls:

linux-vdso.so.1 =>  (0x00007fffc3f22000)

libselinux.so.1 => /lib64/libselinux.so.1 (0x000000354ba00000)

librt.so.1 => /lib64/librt.so.1 (0x000000354b200000)

libcap.so.2 => /lib64/libcap.so.2 (0x000000354de00000)

libacl.so.1 => /lib64/libacl.so.1 (0x0000003555a00000)

libc.so.6 => /lib64/libc.so.6 (0x000000354a200000)

libdl.so.2 => /lib64/libdl.so.2 (0x000000354aa00000)

/lib64/ld-linux-x86-64.so.2 (0x0000003549a00000)

libpthread.so.0 => /lib64/libpthread.so.0 (0x000000354a600000)

libattr.so.1 => /lib64/libattr.so.1 (0x0000003558600000)

/bin/bash:

linux-vdso.so.1 =>  (0x00007fff00dff000)

libtinfo.so.5 => /lib64/libtinfo.so.5 (0x000000355b200000)

libdl.so.2 => /lib64/libdl.so.2 (0x000000354aa00000)

libc.so.6 => /lib64/libc.so.6 (0x000000354a200000)

/lib64/ld-linux-x86-64.so.2 (0x0000003549a00000

[root@localhost ~]#cp /bin/{bash,ls,cat}  /mnt/sysroot/bin

[root@localhost ~]# cd /mnt/sysroot/lib64/

[root@localhost lib64]# cp /lib64/libc.so.6 ./

[root@localhost lib64]# cp /lib64/libselinux.so.1 ./

[root@localhost lib64]# cp /lib64/librt.so.1 ./

[root@localhost lib64]# cp /lib64/libcap.so.2 ./

[root@localhost lib64]# cp /lib64/libacl.so.1 ./

[root@localhost lib64]# cp /lib64/libc.so.6 ./

[root@localhost lib64]# cp /lib64/libdl.so.2 ./

[root@localhost lib64]# cp /lib64/ld-linux-x86-64.so.2 ./

[root@localhost lib64]# cp /lib64/libpthread.so.0 ./

[root@localhost lib64]# cp /lib64/libattr.so.1 ./

[root@localhost lib64]# cp /lib64/libtinfo.so.5 ./

[root@localhost lib64]# cp /lib64/libdl.so.2 ./  

[root@localhost lib64]# cp /lib64/libc.so.6 ./

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

        vim /mnt/sysboot/grub/grub.conf

            default=0

            timeout=5

            title Linux test

            root (hd0,0)

            kernel /vmlinuz ro root=/dev/sda2  selinux=0 init=/bin/bash

            initrd /initramfs.img

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

        新建虚拟机,再选择磁盘时选择这块磁盘;


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

        首先安装system-config-kickstart,然后打开;

            基本配置:主要是语言为中文,键盘默认,设置根密码;

            安装方法:根据情况选择,以光盘驱动器为例;

            引导装载程序选项:默认即可;

            分区信息:清除主引导记录,然后开始添加磁盘分区,主要是根分区、swap、boot和home四个分区;

            网络配置:最好配置一块网卡,设定好ip等信息;

            防火墙配置:建议都先关闭,可在完成后激活;

            显示配置:默认;            

            软件包选择:基本系统;

        配置好以后保存,路径为/var/ftp/ks.cfg,然后安装vsftpd服务,并启动,测试是否可以正常访问;

        然后新建一个虚拟机,在启动时加载镜像,在安装界面摁esc,出现字符界面:boot::,输入以下命令:

                linux ip=IP(根据实际情况,必须与有ftp访问的服务器在同一网段上) netmask=NETMASK ks=ftp://ks.cfg完整路径

        如果不出意外地话,虚拟机会根据ks.cfg来安装部署。

             

  

4、写一个脚本
  (1) 能接受四个参数:start, stop, restart, status
   start: 输出“starting 脚本名 finished.”
   …
  (2) 其它任意参数,均报错退出;

#!/bin/sh

case $1 in

start)

      echo “starting $0 finished “;;

stop)

     echo “stop $0 finished”;;

restart)

     echo “restart $0 finished”;;

status)

     echo “status $0 finished”;;

*)

   echo “error!!”

   exit 1

esac


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

  (2) 每3秒钟,查看一次用户是否登录;

         #!/bin/bash

         [ $# -ne 1 ] && echo “need 1 user!!” &&exit 1

usr(){

 if who | grep $1 &>/dev/null;then

  echo “$1 is login..”

  return 0

 else

  echo “$1 is not login..”

  return 2

 fi

}

while true;do

 usr $1

 rt=$?

 [ $rt -eq 0 ] && break || sleep 3

done


6、写一个脚本,显示用户选定要查看的信息;
   cpu) display cpu info
   mem) display memory info
   disk) display disk info
   quit) quit

#!/bin/sh

cat <<a

=========================

cpu) display cpu info

mem) display memory info

disk) display disk info

quit) quit

=========================

a

ab() {

read -p “Please enter your choice: ”  i

case $i in

cpu)

  lscpu;;

mem)

  free -h;;

disk)

   fdisk -l  /dev/[s,h]d[a-z];;

quit)

   exit 0;;

*)

  echo “Please choose again!!”

  ab

esac

}

ab

   非此四项选择,则提示错误,并要求用户重新选择,只到其给出正确的选择为止;
7、写一个脚本
  (1) 用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来;
  (2) 提示用户输入一个用户名或输入“quit”退出;
    当输入的是用户名,则调用函数显示用户信息;
    当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit: 

#!/bin/bash

usr() {

 grep “^$1\>” /etc/passwd|awk  -F: ‘{print $3,$7}’

}

cat <<a

user)  display user info;

quit)  quit

a

ub() {

while true;do

  read -p “please input: ” i

  case $i in

    quit)

       exit 0;;

    $i)

       usr $i

       ub

  esac

done

}

ub

        

原创文章,作者:N25_韩奇洋,如若转载,请注明出处:http://www.178linux.com/70591

(0)
N25_韩奇洋N25_韩奇洋
上一篇 2017-03-10 13:21
下一篇 2017-03-10 15:12

相关推荐

  • 第四周博客作业

    趁着这几天有时间,先把第四周的作业写了,好在没有什么新的知识点考核。  1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cp -r /etc/skel/ /home/tuser1 […

    Linux干货 2016-12-21
  • 十.Linux博客-2016年8月12日变量、算术表达式、测试

    格式说明: 操作 概念 命令 说明及举例 十.变量、算术表达式、测试 bash -n +脚本 检查语法错误 .bash_profile 配置文件PATH=$PATH:$HOME/bin:. 加.方便但不安全 unset name 删变量name 小驼峰 第一个单词字母小写,以后单词首字母大写大驼峰 每一个单词首字母都大写 set…

    Linux干货 2016-08-24
  • 马哥教育网络20期第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; fdisk /dev/sdb ; mke2fs -t ext4 -b 2048 -L MYDATA -m 2 –O acl /dev/sdb1 (2) 挂载至/data/mydata目录,要求挂载…

    Linux干货 2016-08-15
  • 马哥教育网络班21期+第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:也叫做桥接器,工作在OSI七层中第二层数据链路层,主要是用来连接两个局域网的一种存储或者转发设备,它能将一个大的LAN分隔      为多个网段,也可以将多个LAN互联为一个逻辑LAN,网桥是在数据层上实现的局域网互联;即使…

    Linux干货 2016-09-08
  • vim基本总结

    ASCII可以将计算机存储的0或1转成我们认识的文字。在Linux中,绝大部分的配置文件都是以ASCII的纯文本形态存在。通过文本编辑器,可以实现对这些文本文件的更改。常风的文本编辑器有emacs, pico,nano,joe与vi(vim是vi的升级版)等。那么为会么要学vi呢? l 因为vi是内置编辑器,系统安装好就有了 l 很多软件…

    2017-08-05
  • rsyslog日志存储到mysql数据库中并利用loganalyzer进行web图形化分析管理

    概述     系统日志的重要性,相信大家都深有体会,当发生故障后,第一时间就是查看相关报错信息和日志信息,以定位问题所在,还可以基于日志,进行日志的分析,从而获取系统运行状态的一些规律,本篇就介绍关于系统日志的先关内容,具体分为:     1、rsyslog相关概念的介绍 &nb…

    Linux干货 2016-10-18

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-15 00:41

    操作系统的启动过程能用图示来说明会更好~~cp的那部分可以使用循环~~继续加油~