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
下一篇 2017-03-10

相关推荐

  • Linux基础小模块

    1.基础知识小块:shell 由shell程序的自带命令:即为内置命令(builtin) 独立的可执行程序文件、文件名 :即为外部命令  [root@localhost~]#ls      ~用户当前所在目录  #:命令提示符(管理员帐号root)  $:普通用户   &nbsp…

    Linux干货 2016-08-05
  • DNS-BIND

    1.实验环境 服务器类型 域名 IP 主DNS服务器 test.com. 192.5.24.101 从DNS服务器 192.5.24.102 子DNS服务器 ops.test.com. 192.5.24.201 备注:所有服务器需保持时间同步。 2.正向解析区域(192.5.24.101) 1)  安装bind 2)  编辑主配置文件,修…

    2017-05-31
  • 说明Linux系统上命令的使用格式

    命令使用格式: COMMAND [OPTIONS…] [ARGUMENTS…]         选项:用于启用或关闭命令的某些功能                  短选项:-c(一个字符 ),例如:-l,…

    Linux干货 2016-10-31
  • 日常练习加部分步骤注释

                                                      …

    2017-07-30
  • 马哥教育网络班21期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash     #     nolog=`awk -F: '$…

    Linux干货 2016-09-19
  • C++的std::string的“读时也拷贝”技术!

    C++的std::string的读时也拷贝技术! 嘿嘿,你没有看错,我也没有写错,是读时也拷贝技术。什么?我的错,你之前听说写过时才拷贝,嗯,不错的确有这门技术,英文是Copy On Write,简写就是COW,非常’牛’!那么我们就来看看这个’牛’技术的效果吧。 我们先编写一段程序 #include <string> #include…

    Linux干货 2015-04-03

评论列表(1条)

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

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