共计 5547 个字符,预计需要花费 14 分钟才能阅读完成。
OpenStack 制作 Ubuntu 镜像
1. 下载对应需求的 Ubuntu 镜像
2. 安装 kvm-pxe(此步骤因为在搭建openstack 环境应该已经下载,故应该可以省略)
apt-get install kvm-pxe
Note:用于解决出现 :failed to find romfile“pxe-rtf8138.bin” 错误
3. 创建一个大小 10G 的“硬盘”(raw格式)
kvm-img create -f raw ubuntu.img 10G
4. 使用刚才下载的 ubuntu“安装盘”和刚创建的“硬盘”引导启动系统,为了简单起见,本文使用kvm 虚拟技术,避开 xen 繁琐的配置。-vnc参数代表撕开 vnc 访问,以便可以使用其他机器远程登陆到这个引导界面进行安装操作:
kvm -m 1024 -cdrom ubuntu-11.10-server-amd64.iso -drive file=ubuntu.img -boot d -nographic -vnc :5
Note:
1. 本命令是前台进程,会占用一个终端,后续操作需要打开一个新的终端
2. 启动 kvm 命令可以在 server 版本中运行,但是安装系统的操作需要桌面图形支持
3. 如果提示端口 3 被占用,访问拒绝,那么继续向后调整到端口 4,5 直到不提示错误
状态是上面一行命令保持不动,此时继续执行下面操作
5. 用 vncviewer 登陆引导界面后按照屏幕的提示完成 ubuntu 的安装工作 ( 安装过程和自己电脑一样,安装过程省略 )。需要注意的是在分区阶段把10GB 硬盘全部分成一个 ext4 分分区,并挂在到 / 下,不要创建多个分区也不要创建 swap 分区
vncviewer 192.168.1.198:5905
Note:
1. 192.168.1.198是本机IP
2. 安装完成后退出,必要时 kill 掉kvm进程
3. 5905的数字 3 对应之前的vnc:5,如果修改,则二者应该保持一致。
6. 重启虚拟机镜像
kvm -m 1024 -drive file=ubuntu.img -boot c -net nic -net user -nographic -vnc :5
主意:2048代表虚拟机内存大小,如果真机内存较大的情况下,建议将该值调整到 1024 或者2048,这样可以保证较为流畅的操作
7. 安装相关模板服务制作
vncviewer 192.168.1.198:5905进入模板系统
(因为 vnc 内对 ctrl+alt+t 组合键不能识别,故不能通过快捷键在虚拟机内直接调用终端,所以需要手动点击左上角 ubuntu 图标,在搜索一栏输入终端,并启动终端),然后执行如下三行
apt-get update
apt-get upgrade
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-11/92642p2.htm
相关阅读:
为 OpenStack Nova 制作 Ubuntu 镜像 http://www.linuxidc.com/Linux/2012-09/70031.htm
在 Ubuntu 12.10 上安装部署 Openstack http://www.linuxidc.com/Linux/2013-08/88184.htm
Ubuntu 12.04 OpenStack Swift 单节点部署手册 http://www.linuxidc.com/Linux/2013-08/88182.htm
MySQL 服务器的 HA 集群之 Corosync+DRBD+Pacemaker 实现 http://www.linuxidc.com/Linux/2012-08/68101.htm
MySQL 服务器的 HA 集群之 Corosync+DRBD+Pacemaker 实现 - 上篇 http://www.linuxidc.com/Linux/2012-06/61963.htm
MySQL 服务器的 HA 集群之 Corosync+DRBD+Pacemaker 实现 - 下篇 http://www.linuxidc.com/Linux/2012-06/61964.htm
8. 调整 Ubuntu 镜像
因为 Openstack 只接受 ext4 文件系统格式的镜像,所以需要把上面创建的 raw 镜像转换成 ext4 镜像。下面的步骤用来找出镜像文件里面的分区起点是从哪里开始的:
losetup -f ubuntu.img
losetup -a
会提示如下信息
/dev/loop0: [fb00]:24117291 (/home/localadmin/ubuntu.img)
fdisk -l /dev/loop0
提示如下信息
Disk /dev/loop0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000502e6
Device Boot Start End Blocks Id System
/dev/loop0p1 * 2048 20969471 10483712 83 Linux
上面最后一行显示分区是从扇区(sector)2048开始的,每个扇区是 512 个字节,所以是从 2048 x 512 = 1048576 个字节开始的。记住这个1048576,下面会用到。
卸载 loop 后重新从 1048576 字节开始挂载:
losetup -d /dev/loop0
losetup -f -o 1048576 ubuntu.img
losetup -a
提示信息:/dev/loop0: [fb00]:24117291 (/home/localadmin/ubuntu.img), offset 1048576
把这整个分区拷贝到一个新文件就是一个我们要的 ext4 文件系统镜像:
dd if=/dev/loop0 of=ubuntutemplate.img
会提示:
20969472+0 records in
20969472+0 records out
10736369664 bytes (11 GB) copied, 107.455 s, 99.9 MB/s
用完 loop 后记得卸载:
losetup -d /dev/loop0
挂载(mount)刚创建的 ext4 文件系统镜像,并修改分区加载表(/etc/fstab),注释或删除以前的,加上 UUID=uec-rootfs 一行:
mount -o loop ubuntutemplate.img /mnt
vi /mnt/etc/fstab
注释掉原有行
#UUID=1dc3a59e-faab-41ee-b232-3300163676bf / ext4 errors=remount-ro 0 1
然后添加
UUID=uec-rootfs / ext4 defaults 0 0
保存退出
把内核(vmlinuz)和内存盘(initrd)文件拷贝出来以便后面和虚拟机镜像一起发布到 OpenStack 云里。这个最好是手动进入 /mnt/boot 目录里查看 initrd 和vmlinuz这两个文件,因为不同版本 ubuntu 对应最后的标示不一样,如 server 版本 ubuntu,则两个文件名分别都已server 结尾,如果是 desktop 版本的,则会以 generic 结尾,笔者因为使用 desktop 版本制作,情况属于后者,至于拷贝到哪里,要看你 img 文件在哪里,笔者是直接放在了 /root/ 目录下
使用完虚拟机镜像后记得卸载(unmount):
cp /mnt/boot/initrd.img-3.2.0-29-generic /root/
cp /mnt/boot/vmlinuz-3.2.0-29-generic/root/
umount /mnt
把刚才的虚拟机镜像 ubuntutemplate.img 的文件系统标志改成‘uec-rootfs’:
tune2fs -L uec-rootfs ubuntutemplate.img
9. 发布 Ubuntu 镜像
发布镜像需要使用上述三个文件 initrd.img-3.2.0-29-generic、vmlinuz-3.2.0-29-generic 和ubuntutemplate.img
glance add name=”ubuntu-ramdisk” is_public=true container_format=ari disk_format=ari < initrd.img-3.0.0-12-server
返回一个ramdisk_id(一大长串那个):如图1
glance add name=”ubuntu-kernel” is_public=true container_format=aki disk_format=aki < vmlinuz-3.0.0-12-server
返回一个 kernel_id:(一大长串那个) 如图2
glance add name=”ubuntufinal” is_public=true container_format=ami disk_format=ami kernel_id=图 2 的idramdisk_id=图 1 的id < ubuntutemplate.img
三个文件分别上传完毕之后,打开 dashboard 利用 ubuntutemplate 启动实例即可
建议给实例选择机器配置时选择多核高内存的选项,以保证实例的流畅运行
更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2
OpenStack 制作 Ubuntu 镜像
1. 下载对应需求的 Ubuntu 镜像
2. 安装 kvm-pxe(此步骤因为在搭建openstack 环境应该已经下载,故应该可以省略)
apt-get install kvm-pxe
Note:用于解决出现 :failed to find romfile“pxe-rtf8138.bin” 错误
3. 创建一个大小 10G 的“硬盘”(raw格式)
kvm-img create -f raw ubuntu.img 10G
4. 使用刚才下载的 ubuntu“安装盘”和刚创建的“硬盘”引导启动系统,为了简单起见,本文使用kvm 虚拟技术,避开 xen 繁琐的配置。-vnc参数代表撕开 vnc 访问,以便可以使用其他机器远程登陆到这个引导界面进行安装操作:
kvm -m 1024 -cdrom ubuntu-11.10-server-amd64.iso -drive file=ubuntu.img -boot d -nographic -vnc :5
Note:
1. 本命令是前台进程,会占用一个终端,后续操作需要打开一个新的终端
2. 启动 kvm 命令可以在 server 版本中运行,但是安装系统的操作需要桌面图形支持
3. 如果提示端口 3 被占用,访问拒绝,那么继续向后调整到端口 4,5 直到不提示错误
状态是上面一行命令保持不动,此时继续执行下面操作
5. 用 vncviewer 登陆引导界面后按照屏幕的提示完成 ubuntu 的安装工作 ( 安装过程和自己电脑一样,安装过程省略 )。需要注意的是在分区阶段把10GB 硬盘全部分成一个 ext4 分分区,并挂在到 / 下,不要创建多个分区也不要创建 swap 分区
vncviewer 192.168.1.198:5905
Note:
1. 192.168.1.198是本机IP
2. 安装完成后退出,必要时 kill 掉kvm进程
3. 5905的数字 3 对应之前的vnc:5,如果修改,则二者应该保持一致。
6. 重启虚拟机镜像
kvm -m 1024 -drive file=ubuntu.img -boot c -net nic -net user -nographic -vnc :5
主意:2048代表虚拟机内存大小,如果真机内存较大的情况下,建议将该值调整到 1024 或者2048,这样可以保证较为流畅的操作
7. 安装相关模板服务制作
vncviewer 192.168.1.198:5905进入模板系统
(因为 vnc 内对 ctrl+alt+t 组合键不能识别,故不能通过快捷键在虚拟机内直接调用终端,所以需要手动点击左上角 ubuntu 图标,在搜索一栏输入终端,并启动终端),然后执行如下三行
apt-get update
apt-get upgrade
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-11/92642p2.htm
相关阅读:
为 OpenStack Nova 制作 Ubuntu 镜像 http://www.linuxidc.com/Linux/2012-09/70031.htm
在 Ubuntu 12.10 上安装部署 Openstack http://www.linuxidc.com/Linux/2013-08/88184.htm
Ubuntu 12.04 OpenStack Swift 单节点部署手册 http://www.linuxidc.com/Linux/2013-08/88182.htm
MySQL 服务器的 HA 集群之 Corosync+DRBD+Pacemaker 实现 http://www.linuxidc.com/Linux/2012-08/68101.htm
MySQL 服务器的 HA 集群之 Corosync+DRBD+Pacemaker 实现 - 上篇 http://www.linuxidc.com/Linux/2012-06/61963.htm
MySQL 服务器的 HA 集群之 Corosync+DRBD+Pacemaker 实现 - 下篇 http://www.linuxidc.com/Linux/2012-06/61964.htm