与windows镜像制作思路一样,本文参考了openstack官网juno版本的《image-guide》。镜像制作主要分3步:
1、创建虚拟磁盘,主要需要关注的是虚拟磁盘格式;
2、通过虚拟机管理软件或者远程桌面接入到虚拟机在第1步创建的虚拟磁盘上安装操作系统;主要关注虚拟机的IO驱动,同时,远程桌面的操作可能会遇见一些问题,比如键盘模式。
3、在第2步的基础上安装云初始化软件bsd-cloudinit-installer。注意安装完成后,关闭虚拟机,保护好现场,不要启动虚拟机。
下面分别介绍:
一、创建虚拟磁盘:
<code>qemu-img create -f qcow2 freebsd.qcow2 100G</code>
具体大小可以根据自己的需求进行调整,这里是100G。
二、通过虚拟机管理软件远程桌面接入到虚拟机安装操作系统:
首先下载FREEBSD操作系统的安装介质,我这里采用的是网上安装版本:
<code>curl </code><code>ftp</code><code>:</code><code>//ftp</code><code>.freebsd.org</code><code>/pub/FreeBSD/releases</code><code>\</code>
<code>/amd64/amd64/ISO-IMAGES/10</code><code>.0</code><code>/FreeBSD-10</code><code>.0-RELEASE-amd64-bootonly.iso >\</code>
<code>FreeBSD-10.0-RELEASE-amd64-bootonly.iso</code>
接下来通过kvm虚拟机安装工具命令qemu-kvm 进行安装:
<code>qemu-kvm -smp 1 -m 2048 -cdrom </code><code>/data/iso/FreeBSD-10</code><code>.0-RELEASE-amd64-bootonly.iso \</code>
<code>-drive </code><code>if</code><code>=virtio,</code><code>file</code><code>=</code><code>/data/img/freebsd</code><code>.qcow2 \</code>
<code>-net nic,model=virtio -net user -k en-us</code>
注意上面的参数-k en-us,官网文档中是没有的,如果没有这个参数,键盘输入会碰到问题。其它参数的含义可以通过qemu-kvm -h进行参考。
在图形界面,选择install,下载安装,注意选择china的镜像源地址,否则速度很慢。
注意,这里很重要,安装过程增加新用户,并且将新用户加入wheel组,否则不能使用su。
安装完成后,修改 /etc/ssh/sshd_config 中的参数:PasswordAuthentication yes
生成sshkey,启动sshd:
<code>ssh</code><code>-keygen</code>
<code>service sshd start</code>
三、安装配置云计算初始化软件openstack-cloud
<code>echo</code> <code>'console="comconsole,vidconsole"'</code> <code>>> </code><code>/boot/loader</code><code>.conf</code>
<code>echo</code> <code>'autoboot_delay="1"'</code> <code>>> </code><code>/boot/loader</code><code>.conf</code>
<code>pkg </code><code>install</code> <code>ca_root_nss</code>
<code>fetch --ca-cert=</code><code>/usr/local/share/certs/ca-root-nss</code><code>.crt \</code>
<code>https:</code><code>//raw</code><code>.github.com</code><code>/pellaeon/bsd-cloudinit-installer/master/</code>
<code>installer.sh</code>
<code>sh .</code><code>/installer</code><code>.sh</code>
安装配置sudo:
<code>pkg </code><code>install</code> <code>sudo</code>
<code>echo</code> <code>'freebsd ALL=(ALL) NOPASSWD: ALL'</code> <code>> </code><code>/usr/local/etc/sudoers</code><code>.d</code><code>/10-cloudinit</code>
注意,将上面增加的其他用户也加入到上面,比如:
yourname ALL=(ALL) NOPASSWD: ALL
其中上面的yourname修改为你自己想新增的用户名。
关机:
<code> </code><code>shutdown</code> <code>-h now</code>
最后,上传镜像:
<code>glance image-create --name freebsd --disk-</code><code>format</code> <code>qcow2 \</code>
<code>--container-</code><code>format</code> <code>bare --is-public </code><code>true</code> <code>\</code>
<code>--</code><code>file</code> <code>/data/img/freebsd</code><code>.qcow2</code>
为了能够制定虚拟机在哪一个物理机上,我直接使用命令方式手动生成虚拟机:
获取flavor、image、net_id、secgroup、service:
<code>nova flavor-list</code>
<code>nova image-list</code>
<code>nova net-list</code>
<code>nova secgroup-list</code>
<code>nova service-list</code>
根据上面命令得到的信息,执行下面的命令生成虚拟机:
<code>nova boot --flavor freebsd-1cpu2G-100g --image freebsd --nic net-</code><code>id</code><code>=212d7fa0-94af-466d-93ad-5ee50afcfb49 \</code>
<code>--security-group default --availability-zone nova:node-14.domain.tld FreeBSD-001</code>
<code></code>
本文转自yuweibing51CTO博客,原文链接: http://blog.51cto.com/yuweibing/1656451,如需转载请自行联系原作者