Openstack镜像制作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

制作Ubuntu 11.10 Server镜像
制作镜像需要在桌面版本的系统中进行,本文采用的系统是Ubuntu 11.10 桌面版
1.下载Ubuntu镜像
wget /ubuntu-releases//oneiric/ubuntu-11.10-server-amd64.iso 2.安装kvm-pxe
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 512 -cdrom ubuntu-11.10-server-amd64.iso -drive file=ubuntu.img -boot d -nographic -vnc :0
Note:
1.本命令是前台进程,会占用一个终端,后续操作需要打开一个新的终端
2.启动kvm命令可以在server版本中运行,但是安装系统的操作需要桌面图形支持5.用vncviewer登陆引导界面后按照屏幕的提示完成ubuntu的安装工作(安装过程和自己
电脑一样,安装过程省略)。

需要注意的是在分区阶段把10GB硬盘全部分成一个ext4 root分区,不要创建多个分区也不要创建swap分区
vncviewer 192.168.1.187:5900
Note:
1.19
2.168.1.187是kvm启动引导系统的机器IP
2.安装完成后退出,必要时kill掉kvm进程
6.重启虚拟机镜像
kvm -m 512 -drive file=ubuntu.img,if=scsi,index=0,boot=on -boot c -net nic -net user -nographic -vnc :0
7.安装相关模板服务制作
vncviewer 192.168.1.187:5900
apt-get update
apt-get upgrade
apt-get install -y openssh-server cloud-init
70-persistent-net.rules 会自动添加其他的网络接口,需要删除这个文件避免自动添加除了eth0 以外的接口。

删除后系统基本就准备好了,关闭虚拟机:
rm -rf /etc/udev/rules.d/70-persistent-net.rules
shutdown -h now
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 云里。

使用完虚拟机镜像后记得卸载(unmount):
cp /mnt/boot/initrd.img-3.0.0-12-server /home/localadmin/
cp /mnt/boot/vmlinuz-3.0.0-12-server /home/localadmin/
umount /mnt
把刚才的虚拟机镜像ubuntutemplate.img 的文件系统标志改成‘uec-rootfs’:
tune2fs -L uec-rootfs ubuntutemplate.img
9.发布Ubuntu 镜像
发布镜像需要使用上述三个文件initrd.img-3.0.0-12-server、vmlinuz-3.0.0-12-server和ubuntutemplate.img
glance add -A openstack -H 192.168.1.133 name="ubuntu-ramdisk" is_public=true container_format=ari disk_format=ari < initrd.img-3.0.0-12-server
返回一个ramdisk_id:如1
glance add -A openstack -H 192.168.1.133 name="ubuntu-kernel" is_public=true container_format=aki disk_format=aki < vmlinuz-3.0.0-12-server
返回一个kernel_id:如2
glance add -A openstack -H 192.168.1.133 name="ubuntufinal" is_public=true container_format=ami disk_format=ami kernel_id=2 ramdisk_id=1 < ubuntutemplate.img
制作Red Hat Enterprise Linux6.0 x64镜像
1.创建一个大小10G的“硬盘”(raw格式)
kvm-img create -f raw rhel6.img 10G
2.使用rhel-server-6.0“安装盘”和刚创建的“硬盘”引导启动系统
kvm -m 2048 -boot d -cdrom rhel-server-6.0-x86_64-dvd.iso -drive file=rhel6.img,index=0,if=virtio,boot=on -net nic,model=virtio -usbdevice tablet -net user -nographic -vnc :0
Note:
1.内存过小不能成功启动自定义分区功能
2.VNC的模式会发现总是有两个鼠标,而且移动很慢,这个时候只要我们在
qemu启动的时候加上-usbdevice tablet就可以解决VNC下的问题了
3.安装相关模板服务制作
系统安装完成后请选择”reboot”重启系统进入
3.1关闭网卡重命名
echo ''>/lib/udev/rules.d/75-persistent-net-generator.rules
3.2开启DHCP功能
rhel6默认是不配置网卡的,所以我们必须手工启动本功能
vi /etc/sysconfig/network-scripts/ifcfg-eth0
默认的网络配置是
DEVICE="eth0"
HWADDR=specifc mac address
NM_CONTROLLED="yes"
ONBOOT="no"
修改为:
DEVICE="eth0"
#请注释掉HWADDR,在KVM中不一定是这个MAC地址
#HWADDR=specifc mac address
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO="dhcp"
4.调整Red Hat Enterprise Linux镜像
因为Openstack只接受ext4文件系统格式的镜像,所以需要把上面创建的raw镜像转换成ext4镜像。

下面的步骤用来找出镜像文件里面的分区起点是从哪里开始的:
losetup -f rhel6.img
losetup –a
/dev/loop0: [fb00]:24117291 (/home/localadmin/ rhel6.img)
fdisk -l /dev/loop0
D isk /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 rhel6.img
losetup –a
/dev/loop0: [fb00]:24117291 (/home/localadmin/rhel6.img), offset 1048576
把这整个分区拷贝到一个新文件就是一个我们要的ext4 文件系统镜像:
dd if=/dev/loop0 of= rhel6template.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 rhel6template.img /mnt
vi /mnt/etc/fstab
UUID=uec-rootfs / ext4 defaults 0 0
#UUID=1dc3a59e-faab-41ee-b232-3300163676bf / ext4 defaults 0 1
tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
把内核(vmlinuz)和内存盘(initramfs)文件拷贝出来以便后面和虚拟机镜像一起发布到OpenStack 云里。

使用完虚拟机镜像后记得卸载(unmount):
cp /mnt/boot/vmlinuz-2.6.32-71.el6.x86_64 /home/localadmin/
cp /mnt/boot/initramfs-2.6.32-71.el6.x86_64.img /home/localadmin/
umount /mnt
把刚才的虚拟机镜像rhel6template.img 的文件系统标志改成‘uec-rootfs’:
tune2fs -L uec-rootfs rhel6template.img
5.发布Red Hat Enterprise Linux镜像
发布镜像需要使用上述三个文件initramfs-2.6.32-71.el6.x86_64.img、vmlinuz-2.6.32-71.el6.x86_64和rhel6template.img
glance add -A openstack -H 192.168.1.133 name="rhel6-ramdisk" is_public=true container_format=ari disk_format=ari < initramfs-2.6.32-71.el6.x86_64.img
返回一个ramdisk_id,如:5
glance add -A openstack -H 192.168.1.133 name="rhel6-kernel" is_public=true container_format=aki disk_format=aki < vmlinuz-2.6.32-71.el6.x86_64
返回一个kernel _id,如:6
glance add -A openstack -H 192.168.1.133 name="rhel6final" is_public=true container_format=ami disk_format=ami ramdisk_id=5 kernel_id=6 < rhel6x86_64template.img
制作Windows 2003 Server镜像
1.Windows 2003 Server镜像下载
自行下载或者制作启动ISO镜像文件并准备正版CD-KEY
2.创建一个大小10G的“硬盘”(raw格式)
kvm-img create -f raw win2003.img 10G
3.下载virtio驱动
wget /pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-15.iso wget /pub/alt/virtio-win/latest/images/bin/virtio-win-1.1.16.vfd
4.使用刚才下载的windows 2003 server“安装盘”和刚创建的“硬盘”引导启动系统,映
射驱动vfd到软盘A, 开启bios启动选择菜单,启动时按住F12 ,进入光盘安装界面
kvm -m 1024 -drive file=win2003.img,cache=writeback,if=virtio,boot=on -fda virtio-win-1.1.16.vfd -cdrom WIN_2003_SP2.iso -net nic -net user -boot order=d,menu=on -usbdevice tablet -nographic -vnc :0
Note:
1.请迅速打开一个vncviewer终端,否则会自动进入硬盘启动模式,如果不慎进
入,请kill掉kvm进程,再重启kvm尝试迅速按F12
2.安装后会自动重启,请开启远程桌面访问
5.重启虚拟机镜像,加载virtio驱动
kvm -m 1024 -drive file=win2003.img,cache=writeback,if=virtio,boot=on -cdrom virtio-win-0.1-15.iso -net nic,model=virtio -net user -boot order=c -usbdevice tablet -nographic -vnc :0
Note:
1.本步骤出现屏幕较慢,请耐心等待
2.启动后进入系统需要按住Alt+Ctrl+Del,Del建议使用数字小键盘上的Del
6.再用vnc访问,应该会提示自动安装virtio的网卡驱动
7.修复在虚拟机启动时的错误
7.1应用程序-特定权限设置未将COM 服务器应用程序的本地激活权限授予用
户NT AUTHORITY\NETWORK SERVICE
开始→控制面板→管理工具→组件服务
打开组件服务树目录→计算机→我的电脑→DCOM配置
右边的面板里找到netman 右键→属性→安全→启动和激活权限→自定义→
编辑添加network service 用户,把本地启动和本地激活勾上就可以了
7.2Parallel port driver 服务启动失败
只需要在注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\ Parport
中,将“start=3”改为“start=0”
7.3启动后出现第一个页面,请选择完成,经多次测试否则会出现网卡不启动的现象
8.发布镜像
glance -H 192.168.1.133 -A openstack add name="win2003" is_public=true disk_format=raw < win2003.img。

相关文档
最新文档