国内某公有云 linux云主机开机初始化过程分析和他的镜像制作过程

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

一、开机过程

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

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

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

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

三 初始化过程分析

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

/ucloud_boot/bootstrap.sh

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

主程序代码:注释我加的

#!/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没有单用户模式,安全模式也是要密码的,其实也是有办法的,等有空了我来搞一把。

时间: 2024-10-26 17:39:44

国内某公有云 linux云主机开机初始化过程分析和他的镜像制作过程的相关文章

Linux云主机获取本机公网IP地址

因为公司的云主机使用ifconfig和ip add命令都只能看到内网IP地址,而脚本里面又需要获取公网IP地址进行一些动作: # ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo     inet6 ::1/12

Linux内核编译、管理以及kickstart和引导镜像制作

其实内核就是系统上面的一个文件,包含了驱动主机各项硬件的检测程序与驱动模块,而Linux的内核是单内核体系,且是模块化的 内核的组成部分: 核心文件:/boot/vmlinuz-VERSION 模块文件:/lib/modules/VERSION/ *.ko: 模块间或许存在依赖关系: ramdisk: 非必须性内容:只是用于实现内核在无法加载根文件设备时提供 内核模块管理: lsmod命令:列出已经装载的模块 另一种办法:# cat /proc/modules modinfo: 查看指定模块的详

linux云主机cpu一直很高降不下来,系统日志报nf_conntrack: table full, dropping packet.

在启用了iptables web服务器上,流量高的时候经常会出现下面的错误: ip_conntrack: table full, dropping packet 这个问题的原因是由于web服务器收到了大量的连接,在启用了iptables的情况下,iptables会把所有的连接都做链接跟踪处理,这样iptables就会有一个链接跟踪表,当这个表满的时候,就会出现上面的错误. iptables的链接跟踪表最大容量为/proc/sys/net/ipv4/ip_conntrack_max,链接碰到各种状

公有云与私有云优劣势调研

原文:http://www.hengtianyun.com/download-show-id-170.html 云的概念由来已久.追溯最早的理念,是为了将计算能力从技术限制中解除,希望可以集合大规模计算机的计算能力.而不是受限于物理机的性能瓶颈.后来伴随着硬件技术的发展,软件架构的改善,人们发现云可以应用于很多其它的业务场景,带来很多其它的优点,云的概念也逐渐变得具体和丰富. 如今提到云,人们都会想到一系列的优点.如配置灵活,成本减少.高可靠性,弹性扩展.业界已有的案例都充分证实了云的优点.市场

全球公有云介绍

时至今日,云计算已经不再只是个概念.全球各企业都在逐步尝试或已经部分和全面的使用公有云来建立他们的IT系统.特别是互联网公司,如Netflix,他的所有IT系统都构建在AWS上.在中国,各级政府和企业都在积极将应用搬迁到云上.可以说如果现在还有哪个企业的CIO对云计算知之甚少,或从未考虑过企业应用的云化,那他一定是out of date的. 可能很多人只是听说过云计算,对于公有云提供商,可能也只听过AWS(Amazon web services)或者阿里云.其实还有很多其他公有云提供商,今天我就

公有云:美酒or毒药?--【软件和信息服务】2014.12

几大国际巨头争相布局,公有云市场变幻莫测,而无论这块市场是美酒还是毒药,他们都在翘首期盼. 随着"双11"的胜利落幕,关于公有云的争论又甚嚣尘上,好像"得公有云者得天下",今天还没有跳入公有云的IT厂商好像都是"痴汉".到底公有云的真实机会在哪里?公有云到底是美酒还是毒药? 自从几大公有云巨头开始布局中国市场,包括亚马逊.微软.阿里巴巴.VMware.IBM,大家似乎就觉得中国公有云看到曙光了.其实,公有云市场远比大家看到的巨头抢滩来得复杂,因为

Python批量给云主机配置安全组

这几年对运维人员来说最大的变化可能就是公有云的出现了,我相信可能很多小伙伴公司业务就跑在公有云上, 因为公司业务关系,我个人接触公有云非常的早,大概在12年左右就是开始使用亚马逊云,后来逐渐接触到国内的阿里,腾讯云等,随着公司业务往国内发展,这几年我们也使用了很多国内的公有云厂商,所以在云运维方面也积累了一些经验,从传统的物理机到公有云运维,我个人认为最大的问题就是你能不能用公有云的思路去思考去实现一个安全稳定.可伸缩和经济的业务构架,云运维是有别与传统运维的,比如说了解公有云的都知道安全组的概

2015年中国公有云市场的七个重要特征

2015-12-30 张晓东 东方云洞察 点击上面的链接文字,可以快速关注"东方云洞察"公众号 鄙人今天有些闲情逸致,所以总结一下2015公有云的市场,也调侃轻松一下,供大家一笑.另外,<2015中国公有云市场回顾>正式的总结文章会在CSDN的程序员杂志一月份那一期上刊登.欢迎大家到时候阅读.批评指正. 特征一:公有云服务不"国际化"你都不好意思出门 对于公有云企业来说,如果不在2015年推出国际化的云服务,你都不好意思跟别人说你是"中国领先的

数据库安全之公有云

背景 当前,云计算成为流行的IT系统解决方案.它的可扩展.可伸缩的弹性计算能力,极大的减小了IT建设和管理的难度.并且其以租代购的方式极大的减少了投资.公有云是最重要的一种云计算方式,可以为全球的用户建立起应用系统.但是在公有云中,应用系统和支撑其运转的数据库都迁移到云端,数据的安全是十分重要的问题.越来越多的云端数据泄漏事件,比如最近的部署于云端的某游戏160多万用户数据的泄漏,给云中数据库的安全拉响警钟.相比于传统计算环境,云计算的开放性和虚拟化的特性,传统的数据安全方案变得复杂甚至问能为力