云服务器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等,请参照格式转换进行转换。

    后续操作

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

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