马哥教育网络第21期-第十周课程练习

1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)

1.post加电自检,bios检测基础硬件设备
2.boot sequence:按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到设备;读取启动设备MBR中
的bootloader,启动GRUB,选择内核加载到内存中。
3.kernel:自身初始化:探测可识别到的所有硬件设备;加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)
以只读方式挂载根文件系统;运行用户空间的第一个应用程序:/sbin/init
4.运行/sbin/init:设置默认运行级别/etc/inittab 运行系统初始脚本/etc/rc.d/rc.sysinit完成系统初始化,
关闭对应下需要关闭的服务,启动需要启动服务/etc/rc.d/init.d,设置登录终端 
系统初始化:
POST --> BootSequence (BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只读) --> init

2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;
  (1) 为硬盘新建两个主分区;并为其安装grub;
  (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;
  (3) 为rootfs提供bash、ls、cat程序及所依赖的库文件;
  (4) 为grub提供配置文件;
  (5) 将新的硬盘设置为第一启动项并能够正常启动目标主机;
(1)
    [root@node1 ~]# fdisk -l /dev/sdb

    Disk /dev/sdb: 21.5 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xf34d70c0
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1        1000     8032468+  83  Linux
    /dev/sdb2            1001        2610    12932325   83  Linux
    [root@node1 ~]# partx -a /dev/sdb
    [root@node1 ~]# mkfs.ext4 /dev/sdb1
    [root@node1 ~]# mkfs.ext4 /dev/sdb2
    [root@node1 /]# mkdir -p /mnt/{ramdisk,rootfs}
    [root@node1 /]# mount /dev/sdb1 /mnt/ramdisk/
    [root@node1 /]# mount /dev/sdb1 /mnt/rootfs/
    [root@node1 /]# grub-install --root-directory=/mnt /dev/sdb
(2)
        [root@node1 boot]# cp /boot/vmlinuz-2.6.32-642.1.1.el6.x86_64 /mnt/ramdisk/
        [root@node1 boot]# cp /boot/initramfs-2.6.32-642.1.1.el6.x86_64.img /mnt/rootfs/
(3)
        [root@node1 boot]# mkdir -p /mnt/rootfs/{bin,lib,lib64}
        [root@node1 boot]# cp -r /bin/bash /mnt/rootfs/bin
        [root@node1 boot]# cp $(ldd /bin/bash | awk '$3~/^\lib64/{printf $3}') /mnt/rootfs/
(4)
        default=0
        timeout=5
        splashimage=(hd0,0)/grub/splash.xpm.gz
        hiddenmenu
        title CentOS (2.6.32-642.6.2.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.6.2.el6.x86_64 ro root=/dev/sdb1 selinux=0 init=/bin/bash
        initrd /initramfs-2.6.32-642.6.2.el6.x86_64.img
3、制作一个kickstart文件以及一个引导镜像。描述其过程。
yum -y install system-config-kickstart
[root@centos6 ~]# cat ks.cfg 
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use NFS installation media
nfs --server=192.168.1.114 --dir=/mnt
key 123456
# Root password
rootpw --iscrypted $1$lYPG.hOy$UL8JxMVjmQeMp4018XIPn1
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us

[root@centos6 ~]# mkdir -p /tmp/myiso/isolinux
[root@centos6 ~]# cp /media/isolinux/* /tmp/myiso/isolinux/
[root@centos6 ~]# mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS
 6.8 x86_64 boo-b /tmp/myiso/isolinux/isolinux.bin -c /tmp/myiso/isolinux/boot.cat -o /root/boot.iso 
 myiso


4、写一个脚本
  (1) 能接受四个参数:start, stop, restart, status
   start: 输出“starting 脚本名 finished.”
   ...
  (2) 其它任意参数,均报错退出;
  
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
case $1 in
	start)
		echo "starting finished";;
	stop)
		echo "stoping finished";;
	restart)
		echo "restart finished";;
	*)
		exit 2
esac
  
5、写一个脚本,判断给定的用户是否登录了当前系统;
  (1) 如果登录了,则显示用户登录,脚本终止;
  (2) 每3秒钟,查看一次用户是否登录;

#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
while [ 0 ];do
    if `w | grep "^$1\>" &> /dev/null`;then
        echo  "$1 is login"
        exit 2
    else
        sleep 3
    fi
done

6、写一个脚本,显示用户选定要查看的信息;
   cpu) display cpu info
   mem) display memory info
   disk) display disk info
   quit) quit
   非此四项选择,则提示错误,并要求用户重新选择,只到其给出正确的选择为止;
   
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
while [ 0 ];do
	case $1 in
		cpu)
			lscpu;;
		mem)
			cat /proc/meminfo;;
		disk)
			fidsk -l;;
		*)
			echo "error"
			continue;;
		quit)
			exit 1;;
	esac
done

7、写一个脚本
  (1) 用函数实现返回一个用户的UID和SHELL;用户名通过参数传递而来;
  (2) 提示用户输入一个用户名或输入“quit”退出;
    当输入的是用户名,则调用函数显示用户信息;
    当用户输入quit,则退出脚本;进一步地:显示键入的用户相关信息后,再次提醒输出用户名或quit: 
 
#!/bin/bash
while [ 0 ];do
	read -p " input user:" username
	if [ $username == "quit" ];then
		exit 2
	else
		userinfo $username 
	fi
done

userinfo {
	if `id $username &> /dev/null`;then
		echo "uid: `id -u $username`"
		echo "shell: `grep '^$username' /etc/passwd | cut -d: -f7`"
	else
		echo "error"
	fi	
		 
}

8、写一个脚本,完成如下功能(使用函数)
   (1) 提示用户输入一个可执行命令的名字;获取此命令依赖的所有库文件;
   (2) 复制命令文件至/mnt/sysroot目录下的对应的rootfs的路径上,例如,如果复制的文件原路径是/usr/bin/useradd,则复制到/mnt/sysroot/usr/bin/目录中;
   (3) 复制此命令依赖的各库文件至/mnt/sysroot目录下的对应的rootfs的路径上;规则同上面命令相关的要求;
   
#!/bin/bash
read -p " input argu: " comd
path=$(which $comd)
lib=$(ldd $path | egrep -o "[^[:space:]]+")

comcp $comd
libcp $comd

comcp {
	cp $path /mnt/sysroot$path	
}

libcp {
	for i in $lib;do
		cp $i /mnt/sysroot$path
	done
}

以上

原创文章,作者:N21_619463772,如若转载,请注明出处:http://www.178linux.com/48552

(0)
N21_619463772N21_619463772
上一篇 2016-11-14 08:28
下一篇 2016-11-14 08:28

相关推荐

  • 十个让你变成糟糕的程序员的行为

    之前本站发表过《优秀程序员的十个习惯》以及《程序员需要具备的基本技能》,那是我们需要去学习和培养的。这里,我们主要讨论十个糟糕程序员的特征,主要是需要让我们去避免和小心的。 1) 情绪化的思维 如果你开始使用不同颜色的眼光来看待这个世界的话,那么你可能会成为一个很糟糕的程序员。情绪化的思维或态度很有可能会把自己变成一个怪物。相信你经常可以看到很多很糟糕的程序…

    Linux资讯 2015-04-03
  • grup修复与安装操作介绍

    一、bgru Stage1的安装     1、stage1存储在MBR的前446字节,首先破坏。使用dd命令     2、使用grub-install命令安装修复grub stage1     3、使用grub命令修复 二、进入救援模式,修改grub     1、先破坏grub …

    Linux干货 2016-06-03
  • N25期第六周作业

    请详细总结vim编辑器的使用并完成以下练习题 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加# sed -r 's/^[^[:space:]]+/#&/g' /tmp/rc.sysinit :%s/^[^[:space:]]\+/#&a…

    Linux干货 2016-12-26
  • 网络班27期第五周作业

    N27_网络班 第五周作业 1、 显示当前系统上root、fedora或user1用户的默认shell [root@localhost ~]# grep -E ‘^(root|fedora|user1)’ /etc/passwd | cut -d: -f1,7 2、 找出/etc/rc.d/init.d/function文件中某单词后面跟一组小括号的行,形如…

    Linux干货 2017-08-28
  • Mariadb数据库复制系列(三):半同步复制

       实验三:半同步复制的实现 默认情况下,主从复制的结构中,主从节点之间复制操作是异步的,这样就有可能造成主从节点之间数据不一致的情况发生,所谓版同步复制就是指在一主多从的场景中,我们设定主节点与其中一个或多个从节点(一般是一个)的数据复制是同步进行的,从而保证了该从节点和主节点之间的数据的一致性。故当主节点发生故障时,就可以基于其他方式将该从节点提升为主…

    Linux干货 2016-11-24
  • 计算机基础第一部分

    ** 第一课:计算机基础知识** 第一章计算机的组成 计算机是由硬件(Hardwaer)和软件(Software)来组成两大类,他是一台可以自由传输数据, 储存数据,娱乐,工作等等的智能设备。 第一节计算机硬件 主板架构图 内存====用来存储临时数据,弱点喜欢松动一般电脑黑屏都是他松动了,导致电脑不能机 基本上%80以上的电脑不能开机都是他出了问题,服务器…

    Linux干货 2017-05-19

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-16 15:54

    写的很好,就是排版可能需要修改一下,继续加油