基于本地系统创建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。
制作镜像
使用 VMWare vCenter Converter 或 Virtual box 等虚拟化平台的导出镜像工具,详情请参考各平台的导出工具文档。
使用 qemu-img 命令 或 使用 dd 命令方式导出镜像
- 使用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等,请参照格式转换进行转换。
后续操作
生成的镜像即可以导入百度智能云,进一步创建实例。