linux云服务器启动程序,国内某公有云 linux云主机开机初始化过程分析和他的镜像制作过程...

这篇博客介绍了某公有云Linux云主机的启动过程,包括开机脚本执行、单用户模式的使用,以及系统初始化脚本的分析。文中详细解析了从/etc/rc.local开始的一系列模块化脚本,涉及网络配置、DNS设置、yum源优化等多个方面。此外,还展示了镜像制作过程中如何更换内核、禁用防火墙和服务,以及调整yum源等步骤。
摘要由CSDN通过智能技术生成

最近学习了国内某公有云的linux云主机启动之后,在镜像内部的初始化过程,分享出来,仅供参看。

一、开机过程

448da0dd33fbaa7b275884f1dae6b063.png

aa884282385def7ba25f476eaba397b8.png

可以看到开机时候按照数字顺序执行了一连串的脚本,其中也提示的该公有云厂商的名字的ucloud,最后一条显示做了清理工作。进系统一看 果然找不到这些脚本了。

二、进单用户模式找出这些脚本

想让开机的时候不让最后一步 999-clwanup.sh执行的办法很多,我采取的的办法是单用户模式,简单上个图,具体方法大家谷歌下。

成功进入单用户模式,并复制他的初始化脚本

6e59e20f330a7d494fa43786bcf0dd78.png

三 初始化过程分析

(一) 脚本执行的入口还是传统的/etc/rc.local,主程序是bootstrap.sh

/ucloud_boot/bootstrap.sh

目录如下图(可耻的把uuid匿了,怕ucloud的人来砍我)

b0e35ed88678149852dc02eff53455df.png

主程序代码:注释我加的#!/bin/bash

script_abs=$(readlink -m "$0")

script_dir=$(dirname $script_abs)  #这两行是获取执行目录,之所以搞得复杂我觉得可能有些镜像用了软连接)

cd $script_dir

. lib/utils.sh  #导入几个函数

for module in $(ls modules/*.sh | sort)   #按照数字排列执行 modules目录下sh文件

do

$(. $module)

if [[ $? != 0 ]]; then

echo "[$module] failed"

else

echo "[$module] succeed"

fi

done

if [[ -d "$BOOTSTRAP_DIR" ]]; then #估计是老的写法代码没删掉

rm -rf $BOOTSTRAP_DIR

fi

每个模块 解释

050-sysprep.sh  (删除系统存在过的网卡mac信息)

100-interface.sh   (写入新的网卡信息到 ifcfg文件)

101-cleanup-ethX-bak.sh (清楚旧网卡备份)

110-dns.sh (设置dns)

120-hostname.sh(设置hostname)

150-fix-epel-key.sh (修改epel源配置)

200-password-root.sh (设置密码)

300-disk.sh (如果有新的硬盘 挂在到 /data)

700-add-rpmforge-repo.sh

701-add-remi-repo.sh

703-add-10gen-repo.sh

749-exclude-kernel-update.sh (更新yum设置)

750-localize-repo.sh 设置yum源

760-lock-minor-version.sh 设置yum源版本

799-clear-yum-repos.sh  清理yum目录

800-skip-fstab-check.sh 强制开机时候不检查硬盘

801-update-ntp-server.sh 设置ntp

803-disable-service.sh 如果没有装docker的话禁用iptables

810-disable-GSSAPIAuth.sh 修改sshd的配置

850-optimize-sysctl.sh 调整网络参数 ulimit

855-cp-syslog.sh 设置日志轮转

860-install-updates.sh 更新bash 和glibc

880-cp-set-irq-affinity.sh

996-install-sysstat.sh.disabled

997-install-kdump.sh.disabled

998-cleanup-last.sh 清理现场

999-cleanup.sh 清理历史记录

脚本文件展示到此结束,然后还发现了一点,history 和  bash_history 竟然没有清理

四 部分镜像制作过程

下面展示了ucloud虚拟机制作过程,概括起来有这么几件事情:改用他内核(不知道是不是他自己定制的);禁用防火墙;禁用常规服务以节约内存,修改串口日志输出,设置yum源

1  2016-07-21 12:52:26 ls

2  2016-07-21 13:14:33 ll /etc/grub.conf

3  2016-07-21 13:16:22 rm -f /etc/grub.conf ;ln -s /boot/grub/grub.conf /etc/grub.conf

4  2016-07-21 13:16:27 ll /etc/grub.conf

5  2016-07-21 13:16:43 rz

6  2016-07-21 13:19:11 ll /etc/grub.conf

7  2016-07-21 13:21:20 wget http://static.ucloud.cn/kernel/2.6.32-431.11.25.el6.ucloud.x86_64.tar.gz

8  2016-07-21 13:22:53 tar -zxvf 2.6.32-431.11.25.el6.ucloud.x86_64.tar.gz

9  2016-07-21 13:23:02 ls

10  2016-07-21 13:25:19 cd 2.6.32-431.11.25.el6.ucloud.x86_64

11  2016-07-21 13:25:28 ls

12  2016-07-21 13:31:00 /sbin/iptables -P INPUT ACCEPT && /sbin/iptables -F ; service iptables stop

13  2016-07-21 13:31:18 ls

14  2016-07-21 13:31:25 bash install.sh

15  2016-07-21 13:48:17 ls

16  2016-07-21 13:50:04 yum -y install lsof iotop sysstat

17  2016-07-21 13:51:34 chkconfi --list

18  2016-07-21 13:51:39 chkconfig --list

19  2016-07-21 13:53:43 getenforce

20  2016-07-21 13:59:06 chkconfig --level auditd          123456 0ff

21  2016-07-21 13:59:26 chkconfig --level auditd  123456 0ff

22  2016-07-21 14:00:18 chkconfig auditd           --level  123456 0ff

23  2016-07-21 14:01:05 chkconfig auditd           --level  123456  off

24  2016-07-21 14:04:23 chkconfig blk-availability --level  123456  off

25  2016-07-21 14:04:23 chkconfig cgconfig       --level  123456 off

26  2016-07-21 14:04:23 chkconfig cgred          --level  123456 off

27  2016-07-21 14:04:23 chkconfig dnsmasq        --level  123456 off

28  2016-07-21 14:04:23 chkconfig fcoe           --level  123456 off

29  2016-07-21 14:04:23 chkconfig ip6tables      --level  123456 off

30  2016-07-21 14:04:23 chkconfig iptables       --level  123456 off

31  2016-07-21 14:04:23 chkconfig iscsi          --level  123456 off

32  2016-07-21 14:04:23 chkconfig iscsid         --level  123456 off

33  2016-07-21 14:04:23 chkconfig kdump          --level  123456 off

34  2016-07-21 14:04:23 chkconfig lldpad         --level  123456 off

35  2016-07-21 14:04:23 chkconfig lvm2-monitor   --level  123456 off

36  2016-07-21 14:04:23 chkconfig mdmonitor      --level  123456 off

37  2016-07-21 14:04:23 chkconfig multipathd     --level  123456 off

38  2016-07-21 14:04:23 chkconfig netconsole     --level  123456 off

39  2016-07-21 14:04:23 chkconfig netfs          --level  123456 off

40  2016-07-21 14:04:23 chkconfig nfs            --level  123456 off

41  2016-07-21 14:04:23 chkconfig nfslock        --level  123456 off

42  2016-07-21 14:04:23 chkconfig pppoe-server   --level  123456 off

43  2016-07-21 14:04:23 chkconfig rdisc          --level  123456 off

44  2016-07-21 14:04:23 chkconfig restorecond    --level  123456 off

45  2016-07-21 14:04:23 chkconfig rpcbind        --level  123456 off

46  2016-07-21 14:04:23 chkconfig rpcgssd        --level  123456 off

47  2016-07-21 14:04:23 chkconfig rpcidmapd      --level  123456 off

48  2016-07-21 14:04:23 chkconfig rpcsvcgssd     --level  123456 off

49  2016-07-21 14:04:23 chkconfig saslauthd      --level  123456 off

50  2016-07-21 14:04:23 chkconfig sendmail       --level  123456 off

51  2016-07-21 14:04:23 chkconfig udev-post      --level  123456 off

52  2016-07-21 14:04:24 chkconfig wpa_supplicant --level  123456 off

53  2016-07-21 14:04:49 chkconfig --list | grep ":on"

54  2016-07-21 14:05:50 cd

55  2016-07-21 14:06:02 ll /etc/grub.conf

56  2016-07-21 14:07:17 rm -rfv /root/.ssh/*  /tmp/*     ;  rm -fv /root/*

57  2016-07-21 14:07:31 ls

58  2016-07-21 14:07:48 rpm -qa | grep kernel

59  2016-07-21 14:26:35 rpm -e kernel-firmware-2.6.32-431.11.21.el6.ucloud.x86_64

60  2016-07-21 14:26:36 rpm -e kernel-headers-2.6.32-431.11.21.el6.ucloud.x86_64

61  2016-07-21 14:26:36 rpm -e kernel-2.6.32-431.11.22.el6.ucloud.x86_64

62  2016-07-21 14:26:37 rpm -e kernel-devel-2.6.32-431.11.22.el6.ucloud.x86_64

63  2016-07-21 14:26:39 rpm -e kernel-2.6.32-431.11.15.el6.ucloud.x86_64

64  2016-07-21 14:26:39 rpm -e kernel-devel-2.6.32-431.11.15.el6.ucloud.x86_64

65  2016-07-21 14:26:41 rpm -e kernel-firmware-2.6.32-431.11.22.el6.ucloud.x86_64

66  2016-07-21 14:26:41 rpm -e kernel-headers-2.6.32-431.11.22.el6.ucloud.x86_64

67  2016-07-21 14:26:41 rpm -e kernel-firmware-2.6.32-431.11.15.el6.ucloud.x86_64

68  2016-07-21 14:26:42 rpm -e kernel-headers-2.6.32-431.11.15.el6.ucloud.x86_64

69  2016-07-21 14:26:42 rpm -e kernel-2.6.32-431.11.21.el6.ucloud.x86_64

70  2016-07-21 14:26:45 rpm -e kernel-devel-2.6.32-431.11.21.el6.ucloud.x86_64

71  2016-07-21 14:26:52 rpm -qa | grep kernel

72  2016-07-21 14:27:48 rpm -qa | grep kernel |grep 431 | wc -l

73  2016-07-21 14:29:00 rm -f /etc/grub.conf ;ln -s /boot/grub/grub.conf /etc/grub.conf

74  2016-07-21 14:29:11 ll /etc/grub.conf

75  2016-07-21 14:30:05 rm -rfv /root/.ssh/*  /tmp/*     ;  rm -fv /root/*

76  2016-07-21 14:30:19 ls

77  2016-07-21 14:31:18 yum check all

78  2016-07-21 14:31:54 yum -y install yum-utils

79  2016-07-21 14:33:26 yum-complete-transaction

80  2016-07-21 14:33:59 cd

81  2016-07-21 14:34:01 ls

82  2016-07-21 14:34:14 package-cleanup --dupes (清理yum安装软件剩余的缓存)

83  2016-07-21 14:34:32 package-cleanup --cleandupes

84  2016-07-21 14:42:13 cd /etc/yum.repos.d/

85  2016-07-21 14:42:14 ls

86  2016-07-21 14:43:37 chkconfig --list | grep ":on" | wc -l

87  2016-07-21 14:43:47 chkconfig --list | grep ":on"

88  2016-07-21 14:45:11 ll

89  2016-07-21 14:46:42 ll /etc/yum.repos.d/

90  2016-07-21 14:46:47 ll /etc/yum.repos.d/ | wc -l

91  2016-07-21 14:49:00 more CentOS-Base.repo

92  2016-07-21 14:50:01   sed -i 's/centos.mirror.ucloud.cn/mirrors.ucloud.cn/g' /etc/yum.repos.d/CentOS-Base.repo   设置yum源

93  2016-07-21 14:50:33 sed -i 's/centos.mirrors.ucloud.cn/mirrors.ucloud.cn/g' /etc/yum.repos.d/CentOS-Base.repo

94  2016-07-21 14:50:51 more CentOS-Base.repo

95  2016-07-21 14:51:57   more epel.repo

96  2016-07-21 14:53:13 sed -i 's/epel.mirror.ucloud.cn/mirrors.ucloud.cn/g' /etc/yum.repos.d/epel.repo  设置epel源

97  2016-07-21 14:53:27 more epel.repo

98  2016-07-21 15:00:16 more /boot/grub/grub.conf

99  2016-07-21 15:03:50 cat /boot/grub/grub.conf | grep title  | wc -l

100  2016-07-21 15:07:25 cat /boot/grub/grub.conf | grep 'console=tty1 console=ttyS0,115200n8' | wc -l

101  2016-07-21 15:07:55 cd

102  2016-07-21 15:08:36 cat /etc/securetty  | grep ttyS0  | wc -l

103  2016-07-21 15:10:35 ls /

104  2016-07-21 15:10:54 rm -rf /boot_ucloud/

105  2016-07-21 15:10:58 ls /

106  2016-07-21 15:12:02 reboot

107  2016-07-21 15:41:22 poweroff

108  2016-09-13 15:03:31 ll

109  2016-09-13 15:03:41 tail /var/log/secure

110  2016-09-13 15:04:49 cat /root/.bash_history

111  2016-09-13 15:05:01 vim /root/.bash_history

112  2016-09-13 15:06:32 sz /root/.bash_history

113  2016-09-13 15:07:13 history

114  2016-09-13 15:07:52 history >history.txt

五 总结:

从表面看,ucloud的镜像启动过程和制作镜像过程做的比较粗糙,脚本写的比较乱,前后风格完全不一致,基本没有对centos本身调优。附件为本文中所有提到的文件,ucloud的朋友要是看到了别来砍我哦。另外windows没有单用户模式,安全模式也是要密码的,其实也是有办法的,等有空了我来搞一把。题外话,连aws现在都采用cloud-init来初始化虚拟机了,再用传统的脚本是不是有点low啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值