N27—第十周作业

N27_第十周作业

1、请详细描述Centos系统的启动流程(详细到每个过程系统做了哪些事情)
详情请参考http://www.178linux.com/85713
2、为运行于虚拟机上的Centos 6添加一块新的硬盘,提供两个主分区;
(1)为硬盘新建两个主分区;并为其安装grub
(2)为硬盘的第一个主分区提供内核和ramdisk文件;为第二个分区提供rootfs
(3)为rootfs提供bash、ls、cat程序及所依赖的库文件
(4)为grub提供配置文件;
(5)将新的硬盘设置为第一启动项并能够正常启动目标主机

1)增加一块新的硬盘,
[root@localhost ~]# cd /sys/class/scsi_host/
[root@localhost scsi_host]# ls
host0  host1  host2
[root@localhost scsi_host]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@localhost scsi_host]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@localhost scsi_host]# echo "- - -" > /sys/class/scsi_host/host2/scan

fdifsk /dev/sdd
………
[root@localhost ~]#mkdir /mnt/{boot,sys}
[root@localhost ~]# mount /dev/sdd1 /mnt/boot/
[root@localhost ~]# mount /dev/sdd2 /mnt/sys/
2) 为硬盘的第一个主分区提供内核和ramdisk文件
[root@localhost ~]# cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/boot/vmlinuz
[root@localhost ~]# cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/boot/initramfs.img
[root@localhost ~]# grub-install --root-directory=/mnt/boot/ /dev/sdd1
为第二个分区提供rootfs
[root@localhost ~]# cd /mnt/sys/
[root@localhost sys]# mkdir bin dev etc home lib lib64 media mnt opt proc root sbin selinux srv sys tmp usr var
3) 为rootfs提供bash、ls、cat程序及所依赖的库文件
[root@localhost ~]# cp /bin/{bash,ls,cat} /mnt/sys/bin/
[root@localhost ~]# ldd /bin/bash
    linux-vdso.so.1 =>  (0x00007fff095ff000)
    libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007fe547896000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fe547692000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fe5472fd000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fe547ac9000)

……
[root@localhost ~]# ldd $(which --skip-alias bash) |grep -o "/.*\.[[:digit:]]"|xargs -I {} cp {} /mnt/sys/lib64
[root@localhost ~]# ldd $(which --skip-alias ls) |grep -o "/.*\.[[:digit:]]"|xargs -I {} cp {} /mnt/sys/lib64
[root@localhost ~]# ldd $(which --skip-alias cat) |grep -o "/.*\.[[:digit:]]"|xargs -I {} cp {} /mnt/sys/lib64
用chroot测试
[root@localhost ~]# chroot /mnt/sys/
bash-4.1# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin    selinux  srv  sys  tmp    usr  var
bash-4.1# exit
exit
4) 为grub提供配置文件[root@localhost ~]# vim /mnt/boot/boot/grub/grub.conf
default=0
timeout=5
title Centos (my centos)
root (hd0,0)
kernel /vmlinuz ro root=/dev/sdd2 init=/bin/bash
initrd /initramfs.img
3、制作一个kickstart文件以及一个引导镜像。描述其过程
1)通过编辑anaconda-ks.cfg文件
2)运行system-config-kickstart
4、写一个脚本
(1)能接受四个参数:start,stop,restart,status
start:输出”starting脚本名finished”
…
(2)其他任意参数,均报错退出
#!/bin/bash
if [ "$1" = "start" ];then
echo "starting $0 finished"
elif [ "$1" = "stop" ];then
echo "stopping $0 finished"
elif [ "$1" = "restart" ];then
echo "restarting $0 finished"
elif [ "$1" = "status" ];then
echo "statusing $0 finished"
else
echo "请输入start/stop/restart/status"
fi
exit 1
5、写一个脚本,判断给定的用户是否登录了当前系统
(1)如果登录了,则显示用户登录,脚本终止
(2)每3秒钟,查看一次用户是否登录
#!/bin/bash
while true;do
        if `who | grep "$1" &>null `;then
        echo "$1 is alreadly loged in"
        break
        else
        echo "$1 is not loged in"
        fi
        sleep 3
done
6、写一个脚本,显示用户选定要查看的信息
cpu)display cpu info
mem)display memory info
disk)display disk info
quit)quit

#!/bin/bash
cat << EOF
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
EOF
while true;do
read -p "please choose:" choose
case ${choose} in
cpu)
    lscpu
    ;;
mem)
    free -m
    ;;
disk)
    df -HT
    ;;
quit)
    exit
    ;;
*)
    echo “Error!Please choose again!!”
    continue

esac
done
7、写一个脚本
(1)用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来
(2)提示用户输入一个用户或输入”quit”退出
当输入的是用户名,则调用函数显示用户信息;
当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit
#!/bin/bash
#!/bin/bash
#查询用户及shell 
#author:dodo 

user_id () {

if id $username &> /dev/null; then
             grep "^$username" /etc/passwd | awk -F: '{print "UID is:"$3, " Shell is:"$7}'
else
         echo "none user" 
fi

}

while true;do
read -p "please enter username or quit:" username
if [ $username == "quit" ];then
       exit 0
    else
       user_id $username
fi
done

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87981

赞 (1)
N27_flypigN27_flypig
上一篇 2017-10-21 18:50
下一篇 2017-10-21 21:52

相关推荐

  • 流编辑器Sed(Stream Edit)详解

    流编辑器Sed(Stream Edit)详解       Grep 、sed 和awk并称为文本三剑客。使用Grep就可以很好的实现文本查找的功能,而且简单有效。然而其却无法直接对其进行编辑,sed的出现便解决了这一问题。 Sed被称为流编辑器,它是一种新型的非交互式的文本编辑器,它逐行处理文件或输入,并将结…

    Linux干货 2016-08-22
  • N26-第十五周

    温故知新1、总结sed和awk的详细用法;sed stream EDitor 流编辑器,行级sed  [option] …’script’ [input-file]script 地址定界编辑命令常用选项-n 静默模式 ,不输出模式空间中的内容至屏幕-e script –expression …

    Linux干货 2017-08-24
  • N22-妙手-第四周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cp -r /etc/skel /home/tuser1 [root@localhost ~]# chmod&nb…

    Linux干货 2016-09-05
  • linux挂载的基本使用

    挂载   挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。 我们要访问存储设备中的文件,必须将文件所在的分区(已有文件系统)挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。 挂载条件 1、挂载点必须是一个目录。 2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将隐藏不可用。对于其他…

    Linux干货 2016-09-07
  • 从Linux小白到大牛——与狼共舞的日子11

    马哥教育网络班21期+第10周课程练习 1、详细描述一次加密通讯的过程,结合图示最佳。 加密过程 1.使用单向加密算法,提取A的文件的特征码。 2.使用A的私钥对提取出来的特征码进行加密,把加密后的特征码附加在A的文件的后面。 3.使用对称加密对刚刚的A的文件和加密后的特征码进行加密,生成对称加密密钥 4.使用B的公钥对第3步骤的对称加密的密钥进行加密,加密…

    Linux干货 2016-12-05
  • 内核编译

    单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。 内核组成部分核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE;: kernel: 内核 kernel object: 内核对象,一般放置于/lib/modules/VERSION-RELEASE/ [ ]: N [M]: M [*…

    Linux干货 2015-11-06