• 上传镜像指导
    本帖最后由 小白 于 2017-10-26 14:18 编辑 上传镜像镜像制作完成后,您需要将镜像上传到CCE的私有镜像仓库,供创建应用时使用。为了上传镜像,需要使Docker客户端能够访问私有镜像仓库,那么您需要配置本地Docker客户端。 说明:本节只介绍在常用的Ubuntu系统(Ubuntu、Debian等)、CentOS系统(CentOS、RedHat等)、OSX、Windows 10系统上的设置方法,其余系统的设置方法请参考https://docs.docker.com/datacenter/dtr/2.0/configure/config-security/设置。 前提条件 [*]用户已注册公有云账号。 [*]安装了Docker 1.10.0或以上的版本。您可以在https://www.docker.com/下载Docker,安装指导请参见https://docs.docker.com/。 [*]Guestbook应用需要上传的frontend、redis和redisslave三个镜像已经制作完成并已传至上传镜像所在服务器。 [*]AK/SK证书已经上传到CCE上。 操作步骤 [*]连接私有镜像仓库。 说明:认证证书默认有效时间为一年,如果超时请重新下载。 [list=a] [*]单击“镜像仓库 > 上传镜像 > 下载认证文件”,下载证书文件。图1 私有镜像 证书文件“dockercfg.txt”保存在系统默认目录下。 说明:由于不同浏览器的默认文件处理方式不同,请根据系统提示,保存证书文件。 证书文件示例:{"auths":{"117.78.33.214":{"auth":"X2F1dGhfdG9rZW46YTljYWI4YmNiZWJjNGNmMDhjZjkwODI1ODQxYzBhZWItVUdGS1Y4VVlVR09KSUZRVEw0VUwtMjAxNjA2MTcxODAzNTgtZTc1ZmJiNmFlNTIwYjA3ZTA4ZjY5OThiOGEyZGFiNTJiYjgyNWI4YjRhNDQ4YzMwNjRmNDBiZGI5OWE3NDQxMA==","email":""}}}其中,“117.78.33.214”所处字段即为镜像仓库的地址,此处仅为示例,请以实际值为准。 [*]以root用户登录安装了Docker的机器,执行如下命令,进入“~/.docker”目录。 说明: [*]您也可以使用其他用户登录,但是该用户必须拥有执行Docker的权限。 [*]如果docker服务器上没有“~/.docker”目录,请执行mkdir -p ~/.docker命令创建。 [*]如果您使用Windows操作系统的机器,请进入“%USERPROFILE%/.docker”目录配置config.json。 cd ~/.docker[*]执行vi config.json命令,将dockercfg证书文件内容拷贝到“config.json”文件中。 [*]配置Docker参数,允许Docker访问私有镜像仓库。(以docker 17.05.0-ce版本为例) 说明:不同版本的Docker在不同操作系统下配置不同,关于配置Docker参数的详细信息,请参见Docker社区文档https://docs.docker.com/datacenter/dtr/2.0/configure/config-security/。 [*]Ubuntu14.04系统下:vi /etc/default/docker把 1.a中获取的镜像仓库地址加到 “DOCKER_OPTS”中的 “--insecure-registry”后面,如下加粗字体所示。# Use DOCKER_OPTS to modify the daemon startup options.DOCKER_OPTS="--insecure-registry 117.78.33.214" 执行如下命令重启docker。service docker restart [*]Ubuntu 16.04系统下:请将镜像仓库地址添加为/etc/docker/daemon.json文件中insecure-registries的参数值。{"insecure-registries": ["117.78.33.214"]} 执行如下命令重启docker。systemctl daemon-reloadservice docker restart [*]CentOS系统(CentOS、RedHat等)下(以CentOS 7为例):执行如下命令获取Docker配置文件的路径。service docker status在Loaded开头那行后面即为Docker的配置文件,如下加粗字体所示。# service docker statusRedirecting to /bin/systemctl status docker.servicedocker.service - Docker Application Co ntainer Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled) Active: active (running) since Sat 2017-05-20 10:41:14 CST; 16min ago Docs: https://docs.docker.com编辑Docker配置文件,把1.a中获取的镜像仓库地址加到“ExecStart”开头那行“--insecure-registry”后面,如下加粗字体所示。vi /usr/lib/systemd/system/docker.service把1.a中获取的镜像仓库地址加到“ExecStart”开头那行“--insecure-registry”后面,如下加粗字体所示。[Service]Type=notifyExecStart=/usr/bin/dockerd --insecure-registry 117.78.33.214执行如下命令重启docker。systemctl daemon-reloadservice docker restart [*]OSX系统下:打开Docker GUI配置界面,在Daemon页签“Insecure registres”下添加镜像地址,如下图所示。添加完成后重启docker。 [*]Windows 10系统下:打开Docker GUI配置界面,在Daemon页签“Insecure registres”下添加镜像地址,如下图所示。添加完成后重启docker。 [*]OS Yosemite 10.10.2或更早,Windows 7及更早:使用“docker-machine ssh”或“boot2docker ss
  • 使用对象存储托管docker镜像源
    本帖最后由 华为云存储 于 2017-9-20 11:41 编辑私有的Docker镜像会占用企业较大的存储空间,且内容重要,不容丢失。 对象存储则是最适合存放这类文件的平台。 Docker的官方文档: docker官方文档 这里给出使用Ubuntu 16.04 LTS版本搭建docker镜像源 并用华为云对象存储进行托管的方案: 使用harbor搭建docker registry,请参考CSDN这篇文章 使用S3fs来对接OBS, 需要安装并配置S3fs, 安装过程请参考华为云论坛这篇文章:【教程】使用S3fs让ECS虚拟机直接挂载OBS对象存储桶 在安装的harbor目录下配置docker-compose.yml文件: 1946 /mnt/res是在3.2中配置s3fs时的关联OBS桶的本地目录。也可以指定其他目录,但是必须与3.2中配置s3fs中的挂载地址一致。配置完毕后,在harbor目录下:[code]docker-compose up –d[/code]示例:[code]root@ubuntu:~/harbor/harbor# docker-compose up –d[/code] 至此安装结束,上传已有的镜像即可看到镜像已经存入了华为云对象存储OBS中: [code]docker push your-image-name[/code]示例: [code]docker push 10.0.0.3/test/swarm[/code]
  • [交流分享] 什么是虚拟机镜像
    一个虚拟机镜像是一个文件,文件内包含了已经安装好可启动操作系统的虚拟磁盘。虚拟机镜像有不同的格式,常见的镜像格式如下:1 Raw "raw" 镜像格式是最最简单的,并且是被 KVM 和 Xen 原生支持的格式,你 可以想象裸格式镜像和块设备文件是二进制位相当的,就好像从块设备拷 贝过来的,比方说,使用dd 命令将 /dev/sda 内容拷贝到一个文件。2 qcow2 qcow2 (QEMU 写时复制版本2)格式通常是KVM使用,相比裸格式,它有额 外的特性,例如: •使用稀疏文件呈现方式,因此镜像尺寸更小。 •支持快照。 因为qcow2 镜像是稀疏的,因此,qcow2镜像通常比裸格式镜像小,更小的 文件意味着上传更快,因此通常转换裸格式镜像到qcow2格式上传比直接 上传裸格式镜像文件更快。3 UEC tarball UEC(Ubuntu 企业云) 文件是一个包含了 AMI AKI ARI文件的tar包压缩文件。4 VMDK VMDK (Virtual Machine Disk) 是 VMware ESXi 虚拟化使用的镜像格式。5 VDI VDI (Virtual Disk Image)是 VirtualBox 使用的镜像格式。OpenStack 计算节 点并不直接支持VDI格式,因此你在OpenStack中使用VDI镜像需要提前转换 成其他受支持的格式。6 VHD 微软 Hyper-V 使用 VHD 镜像格式。7 VHDX Microsoft Server 2012 中的 Hyper-V 版本使用的新的 VHDX 格式,它比VHD 有额外的新的特性例如支持更大的磁盘以及意外掉电时数据丢失保护。8 OVF OVF (Open Virtualization Format)是一种虚拟机打包格式,由 DMTF (分布 式任务管理)标准组定义,单个 OVF 包包含一个或多个镜像文件, .ovf 后 缀的 XML元数据文件包含了关于虚拟机信息及其他文件的信息。 OVF 包可通过几种方式分发,例如,可以通过一系列分散的文件分发或者 通过一个tar归档文件(.ova后缀)分发。 OpenStack 计算节点目前并不支持 OVF 包,如果你想要在Openstack中使用,你需要从OVF中释放磁盘镜像文件。9 ISO ISO 格式是磁盘镜像被格式化成只读 ISO 9660(ECMA-119) 文件系统的格 式,通常用于 CD 和 DVD。通常 ISO 不被考虑是虚拟机镜像格式,由于他 包含一个可启动的文件系统,你可以将它看做是和其他虚拟机镜像文件一 样。 相应的虚拟机镜像磁盘格式虚拟机的磁盘格式指的是底层的磁盘镜像格式,虚拟设备厂商有不同的格式来放置虚拟机磁 盘镜像包含的信息。常见的镜像磁盘格式如下:•raw: 无结构的磁盘镜像格式;如果你有一个无扩展名的磁盘文件,那么这个磁盘文件可 能是裸格式。•vhd: VHD磁盘格式,一种被VMware, Xen, Microsoft, VirtualBox, 以及其他虚拟机管理程序 通用的磁盘格式。•vmdk:能被多钟虚拟机管理程序支持的通用格式。•vdi:能被 VirtualBox 虚机管理程序和 QEMU 模拟器支持的格式。•qcow2: 由 QEMU 模拟器支持,能动态扩展以及支持写时复制特性。•iso:光盘数据内容的归档格式,例如CD-ROM。
  • [技术干货] 华为云上如何自定义个可自动扩容root分区的Linux私有镜像
    本帖最后由 达康书记 于 2017-9-15 11:05 编辑华为云上以CentOS 7.3 64bit为例,root分区在非末尾分区(e.g: /dev/xvda1: root,/dev/xvda2: swap),如何自定义个可自动扩容root分区的Linux私有镜像。 1、查询扩容系统盘分区情况,第一分区是根分区,第二分区是swap [code][root@sluo-ecs-e6dc-resizefs ~]# parted -l /dev/xvda Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot 2 41.0GB 42.9GB 2000MB primary linux-swap(v1) [root@sluo-ecs-e6dc-resizefs ~]# blkid /dev/xvda1: UUID="7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea" TYPE="ext4" /dev/xvda2: UUID="5de3cf2c-30c6-4fb2-9e63-830439d4e674" TYPE="swap" [/code] 2、编辑fstab分区表将swap分区挂载删掉 [code][root@sluo-ecs-e6dc-resizefs ~]# tail -n 3 /etc/fstab # UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1 UUID=5de3cf2c-30c6-4fb2-9e63-830439d4e674 swap swap defaults 0 0 [root@sluo-ecs-e6dc-resizefs ~]# vi /etc/fstab [root@sluo-ecs-e6dc-resizefs ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Jun 27 10:03:28 2017 # # Accessible filesystems, by reference, are maintained under ´/dev/disk´ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1 [/code] 3、关闭swap [code][root@sluo-ecs-e6dc-resizefs ~]# swapoff -a[/code] 4、删掉swap分区 [code][root@sluo-ecs-e6dc-resizefs ~]# parted /dev/xvda GNU Parted 3.1 Using /dev/xvda Welcome to GNU Parted! Type ´help´ to view a list of commands. (parted) p Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot 2 41.0GB 42.9GB 2000MB primary linux-swap(v1) (parted) rm 2 (parted) p Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot (parted) quit Information: You may need to update /etc/fstab. [root@sluo-ecs-e6dc-resizefs ~]# parted -l /dev/xvda Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 41.0GB 40.9GB primary ext4 boot[/code] 5、用yum安装一个叫growpart的工具,growpart可能集成在cloud-utils-growpart/cloud-utils/cloud-initramfs-tools/cloud-init包里,可以直接yum install cloud-*确保growpart命令可用即可 [code][root@sluo-ecs-e6dc-resizefs ~]# yum install cloud-utils cloud-utils-growpart[/code] 6、使用growpart将swap扩容到第一分区的root分区 [code][root@sluo-ecs-e6dc-resizefs ~]# growpart /dev/xvda 1 CHANGED: partition=1 start=2048 old: size=79978496 end=79980544 new: size=83873317,end=83875365 [root@sluo-ecs-e6dc-resizefs ~]# parted -l /dev/xvda Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 42.9GB 42.9GB primary ext4 boot[/code] 7、关闭虚拟机转成私有镜像 [code][root@sluo-ecs-e6dc-resizefs ~]# poweroff Connection closed by foreign host. Disconnected from remote host(139.159.209.21:22) at 11:08:54. Type `help´ to learn how to use Xshell prompt.[/code] 8、用此新私有镜像发放虚拟机,指定系统盘100G,登陆虚拟机检查是不是自动扩容到root分区了 [code][root@ecs-b002-100g-resizefs ~]# parted -l /dev/xvda Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 107GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 107GB 107GB primary ext4 boot [root@ecs-b002-100g-resizefs ~]# blkid /dev/xvda1: UUID="7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea" TYPE="ext4" [root@ecs-b002-100g-resizefs ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Tue Jun 27 10:03:28 2017 # # Accessible filesystems, by reference, are maintained under ´/dev/disk´ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1[/code] 9、OK成功了,是不是很简单啊。
  • [技术干货] 使用Virt-Manager制作镜像关键步骤
    【摘要】使用Redhat出品的Virt-Manager,界面化制作私有镜像,将ISO变成云镜像。 1 创建Linux虚拟机镜像关键步骤1.1 进入virt-manager软件视图登录镜像制作服务器右击桌面选择“Open in Terminal”进入terminal视图输入su - root,进入root用户,输入如下命令TMOUT=0virt-manager进入KVM虚拟机管理软件1.2 创建KVM的Linux虚拟机(1) 点击如下图标进入创建虚拟机界面,选择安装方式为“Local install media(ISO image or CDROM)”(2) 点击“Browser”选择提前准备好的ISO镜像文件可以选择添加按钮“+”进行添加新的ISO存放目录选择好最终目录后,点击open点击Finish完成ISO镜像存放目录的添加。选择好需要创建虚拟机的ISO镜像文件后,点击“Choose Volume”完成安装虚拟机所需系统ISO的选择如果操作系统类型和版本号无法自动发现,可以去勾选选项手动选择和待安装系统匹配最接近的系统点击Forward,进入下一视图,规划虚拟机的CPU和内存点击Forward进入下一视图修改磁盘的系统盘大小点击Forward后,勾选“Customize configuration before install”,点击“Finish”。1.3 进入如下硬件配置视图,修改几个重要选项为确保系统安装时从ISO进行启动安装,选择IDE CDROM1,连接之前选择的ISO修改Display VNC为VNC server模式选择Video QXL的选项为Cirrus点击“Begin install”开始安装安装完系统后,选择reboot进行初始化系统,登陆进入系统后,关闭系统,修改启动顺序,并且挂载准备好的ISO光驱,然后启动虚拟机主备安装需要定制化的软件。选择提前制作好的带有需要安装软件的ISO镜像,连接到IDE CDROM1,然后开机。进入系统。1.4 安装定制化软件、cloud-init软件和系统配置登陆系统后,挂载光驱文件进行安装软件。输入如下命令挂载光驱,拷贝里面内容到root目录下新建目录。mkdir /mnt/cdrommount /dev/cdrom /mnt/cdrommkdir /root/vmtools/cp /mnt/cdrom* /root/vmtools/安装软件后,使用如下命令安装cloud-init软件,此处安装cloud-init不知道能不能直接连接互联网进行安装,不清楚是否需要做其他网络配置等yum install cloud-init参考《镜像服务用户指南》的镜像文件创建私有镜像的初始化配置完后,关闭虚拟机即完成了KVM的虚拟机创建。2 创建windows虚拟机的镜像关键步骤2.1 创建虚拟机创建window的KVM虚拟机过程和Linux类似,参考1.1和1.2章节即可。2.2 安装系统前的配置更改安装系统之前需要修改下来的主要配置项。2.3 安装window的vmtools软件安装完系统后,关闭虚拟机,在IDE CDROM1处挂载含有vmtools和cloud-init软件的ISO镜像文件,然后开启虚拟机后安装vmtools。1.2.4 切换磁盘和网卡的驱动模式windows安装完驱动需要关机,重置默认的ide/e1000切到virtio-blk/virtio-net接口后开机一定要先关机,然后进行切换磁盘和网卡驱动,然后再开机1.2.5 配置windows镜像其他配置切换完成后启动虚拟机,进入系统查看设备管理器中的驱动类型是否正常显示如下的设备驱动管理界面,然后再参考指导书《镜像制作用户指南》安装cloudbase-init,进行其他配置。然后关闭虚拟机得到qcow2镜像后,可导入华为云平台,注册成私有镜像。
  • [技术干货] 使用KIWI如何制作KVM和XEN同时适用的归一化镜像
    本帖最后由 达康书记 于 2017-9-13 17:47 编辑平时我们经常碰到要制作镜像的情形,OpenStack推荐了比较多的工具,比如KIWI,Diskimage-builder和virt-builder等。 [code]https://docs.openstack.org/image-guide/create-images-automatically.html[/code] 那么为了避免KVM和XEN下多次制作镜像,如何使用KIWI制作KVM和XEN同时适用的归一化镜像呢? 首先啥是KIWI? [code]https://doc.opensuse.org/projects/kiwi/doc/ https://github.com/openSUSE/kiwi[/code] 1、Linux磁盘分区命名使用by-uuid方式进行统一配置: kiwi的XML配置文件使用的默认方式即by-id,在如下type部分增加一个devicepersistency="by-uuid"即可。 1428 2、添加Linux操作系统自带的xen-pv和virtio前端驱动到initrd或initramfs中 2.1、在kiwi的XML配置文件里增加安装xen-pv和virtio驱动 1429 2.2、在config.sh脚本中增加装载xen-pv和virtio前端驱动到initrd或initramfs中 1430 注意:不同OS发行版装载initrd方式可能有变化 [*]RHEL、CentOS、Oracle系列操作系统,修改/etc/dracut.conf在add-driver项中添加xen-pv和virtio的驱动,执行dracut -f命令,重新生成initrd。 [*]Ubuntu、Debian系列操作系统,修改/etc/initramfs-tools/modules文件,添加xen-pv以及virtio的驱动,执行update-initramfs -u命令,重新生成initrd。 [*]大多数SUSE、OpenSUSE系列操作系统 (少数跟红帽系列OS一样处理即可),修改/etc/sysconfig/kernel文件,在INITRD_MODULES=""添加xen-pv以及virtio的驱动,执行mkinitrd命令,重新生成initrd。
  • [问题求助] 华为云镜像服务规格介绍之你问我答~
    1. 华为云上可以创建多少个私有镜像? 默认每个用户在每个区域可以创建10个私有镜像 2. 华为云上可以共享多少个镜像? 默认每个用户在每个区域可以共享30个镜像 3. 每个镜像可以共享给多少个租户呢? 每个镜像最多可以共享给128个项目租户 4. 华为云现在有多少个公共镜像? 每个区域上线的公共镜像种类不同,华北区已经有32款公共镜像啦 推荐试用一下华为推出的欧拉OS哦,功能多多~! 官方公共镜像支持的操作系统类型 5. 私有镜像导入对规格有什么要求呢? 华为云支持用户把自己的私有镜像迁移到华为云上,那么对镜像的规格有什么要求呢? 镜像文件大小不超过128GB 镜像系统盘大小不超过255GB 还有更多说明戳这里:通过外部镜像文件创建镜像 6. 我的私有镜像系统盘大小是40GB, 可以创多大系统盘的云主机呢? 创建云主机时系统盘大小可以自己规划哦,比原来镜像系统盘大小大就可以啦 7. 还有?还有问题?你问我答呀!
  • JEP 282 jlink:Java链接器
    概要创建一个用于将一组模块和它们的依赖组装与优化到一个自定义运行时镜像中去的工具,此运行时镜像的细节在 JEP220 中定义动机JEP261 在编译时(javac命令)和运行时(java命令)之间定义了一个可选阶段:链接时。链接时需要一个链接工具用于组装和优化一组模块以及它们的可传递依赖,以建立一个运行时镜像,或可执行文件。运行时是一个对全局进行优化的较好时机,因为在编译时进行优化会比较困难,而在运行时进行优化代价高昂。一个例子是,在一个计算的所有输入成为常量(亦既非未知)时对其进行优化。还有一个例子是把不再会被执行到的代码移除。描述$ jlink --module-path 模块路径> --add-modules 模块名> --limit-modules 模块名> --output 输出路径>[*]–module-path 是链接器将要发现可观测模块的路径。这些模块可以是以 JAR 文件,JMOD 文件或 exploded 模块的形式存在 [*]–add-modules 将要被加入运行时镜像的模块名。这些模块还会通过传递依赖,导致更多的模块被加入 [*]–limit-modules 对可观测模块的**进行限制 [*]–output 用于存放产生的运行时镜像的路径–module-path, –add-modules 和 –limit-modules 选项在 JEP261 中进行了详细描述。其余 jlink 将会支持的选项包含: [*]–help 打印使用/帮助信息 [*]–version 打印版本信息
  • [交流分享] 【掀起你的盖头来】IMS镜像服务
    本帖最后由 一计安天下 于 2017-8-28 19:10 编辑 什么是镜像? 在当前云计算的核心概念中,“实例”无疑是最核心的一个。实例(包括虚拟机,裸机,甚至容器)是云上资源的具体体现。镜像则是实例的模板,包含着操作系统和应用程序,是实例在云上最原始的存在。用户可以使用同一个镜像创建多个实例,甚至不同类型的实例。 IMS能干啥? 一张图带你领略IMS的功能 502 这么多功能,干货是哪些? 干货1:导入私有镜像业务离线迁移的首选功能,可以将自己的镜像文件自助式传入云平台,支持的格式包括qcow2,zvhd,vhd,vmdk,还支持选择KMS加密哦。503 干货2:虚拟机转镜像 公共镜像,私有镜像不好用,想改造一下,就用这个。允许用户将自己的虚拟机转成私有镜像,同样支持KMS加密功能。 504 干货3:共享镜像 好东西,想分享,想把镜像给其他租户用,又想保留一些自己的隐私,考虑一下。允许用户将自己的私有镜像共享给region内的其他租户使用。 477 不远的将来IMS能干啥? 1.即将上线资源标签功能,IMS支持镜像设置key-value型标签,方便用户进行管理。 2.即将支持raw格式镜像以及裸机镜像的导入,还不速速迁移到华为云上来? 3.即将支持数据卷的导入,再也不用担心业务迁移丢数据了。 4.越来越多的新OS即将上线。