基于本地系统创建linux镜像
所有文档

          云服务器 BCC

          基于本地系统创建linux镜像

          应用场景

          主要应用于用户期望在本地创建符合平台要求的自定义镜像。

          本文介绍如何基于ubuntu16.04系统制作自定义镜像。

          操作步骤

          准备工作

          由于百度智能云要求导入的镜像在格式、驱动等方面存在限制,请详细了解镜像导入限制,并在必要时提前配置系统,百度智能云提供了镜像检测工具可以帮助您快速检查相关的配置。

          查找系统分区

          完整的linux系统镜像至少需要包含mbr(主引导记录)、根分区(/目录挂载的地方,包含文件系统主体),否则将无法进入系统。

          boot分区(挂载/boot目录,保存系统内核和其他启动过程需要的文件)、home分区(挂载/home目录,包含用户目录),如果包含这两个分区,也需要一并拷贝。

          执行mount命令查看挂载状况:

              sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
              proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
              udev on /dev type devtmpfs (rw,nosuid,relatime,size=1002644k,nr_inodes=250661,mode=755)
              devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
              tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204784k,mode=755)
              /dev/sda1 on / type ext4 (rw,relatime,data=ordered)
              securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
              tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
              tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
              tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
              cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
              pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
              cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
              cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
              cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
              cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
              cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
              cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
              cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
              cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
              cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
              cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
              mqueue on /dev/mqueue type mqueue (rw,relatime)
              hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
              debugfs on /sys/kernel/debug type debugfs (rw,relatime)
              systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
              fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
              lxcfs on /var/lib/lxcfs type fuse.lxcfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
              tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=204784k,mode=700)

          可以看出,并不包含boot、home分区,只需要拷贝mbr和根分区即可,即拷贝/dev/sda。

          制作镜像

          1.使用qmeu-img制作镜像:

          如果没有qemu-img命令,则运行如下命令进行安装:

              apt-get update
              apt-get install qemu

          执行以下命令生成镜像,其中test.qcow2为生成的镜像,镜像存储到新的磁盘或网络目录/mnt/test/下进行保存, -O指定输出镜像格式(可以根据需求选择格式类型,包括qcow2、vpc、vmdk、raw格式等,目前百度智能云只支持raw和qcow2格式镜像导入)。

          `qemu-img convert -f raw -O qcow2 /dev/sda /mnt/test/test.qcow2`

          操作耗时几分钟,完成后执行以下命令进行兼容性转换

          qemu-img amend -f qcow2 -o compat=0.10 test.qcow2

          使用qemu-img info查看镜像信息如下:

              image: test.qcow2
              file format: qcow2
              virtual size: 40G (42949672960 bytes)
              disk size: 3.6G
              cluster_size: 65536
              Format specific information:
              compat: 0.10
              refcount bits: 16

          2.使用dd命令制作镜像:

          执行如下命令拷贝磁盘

          dd if=/dev/sda of=/mnt/test/test.img bs=1M

          以上命令为全盘拷贝,如果需要只拷贝某个分区,可以使用count参数进行指定:(其中bs的值*count的值=需要拷贝的大小)

          dd if=/dev/sda of=/mnt/test/test.img bs=1M count=1024

          需耗时几分钟,完成后使用qemu-img info查看镜像信息:

          image: test.img
          file format: raw 
          virtual size: 40G (42949672960 bytes)
          disk size: 40G

          格式转换

          当前百度智能云支持raw、qcow2格式的镜像导入,如使用其他格式如vmdk、vpc等,请参照格式转换进行转换。

          后续操作

          生成的镜像即可以导入百度智能云,进一步创建实例。

          上一篇
          导入自定义镜像
          下一篇
          镜像快速指南