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、用户和组管理命令 
    2、理解文件权限和默认权限 
    3、设置文件权限
    4、特殊权限 
    5、ACL

    2017-12-08
  • N25–第十二周作业

    1、  请描述一次完整的http请求处理过程; (1)建立和处理连接:接收请求或者拒绝请求; (2)接收请求:接收来自于网络上的主机请求报文中对某特定的资源的一次请求的过程; (3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息 (4)访问资源:获取请求报文中请求的资源 (5)构建响应报文; (6)发送响应报文; (7)记录…

    2017-03-28
  • 用户和组管理

    Linux用户和用户组管理   Linux是个多用户多任务的分时操作系统,所有要使用系统资源的用户必须向系统管理员申请一个账号,然后以这个身份进入系统。用户登陆系统是也是一种验证方式,系统通过用户的UID(Username IDentification)这种机制来识别用户的身份和权限。每个用户账号都是唯一的用户名和用户口令。用户在登陆时键入正确的用…

    Linux干货 2016-08-07
  • 马哥教育网络班22期+第二周课程练习

    Linux上文件可管理类命令,其常用的使用方法和相关示例 目录管理类命令 目录管理类命令包含:mkdir,rmdir mkdir 使用说明及格式 移除空目录 rmdir [OPTION]… DIRECTORY…   常见选项及说明 -p –parents 创建时如果父目录不存在,一并创建 -v –ve…

    Linux干货 2016-08-24
  • 逻辑卷LVM练习题

     2、新建用户archlinux,要求其家目录为/users/archlinux ,而后su切换至archlinux用户,复制/etc/pam.d目录至自己 的家目录 [root@Cloud /]#useradd -d /users/archlinux archlinux #新建用户archlinux [archlinux@Cloud ~]# getent…

    Linux干货 2017-03-16
  • 关于大型网站技术演进的思考(一):存储的瓶颈(1)

    原文出处: 夏天的森林  前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。 首先我们要思考一个问题,什么样的网站才是大型网…

    Linux干货 2015-02-26

评论列表(1条)

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

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