Openstack镜像制作

制作Ubuntu 11.10 Server镜像

制作镜像需要在桌面版本的系统中进行,本文采用的系统是Ubuntu 11.10 桌面版

 

1.       下载Ubuntu镜像

wget http://mirror.lupaworld.com/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.       192.168.1.187是kvm启动引导系统的机器IP

2.       安装完成后退出,必要时kill掉kvm进程

6.       重启虚拟机镜像

kvm -m 512 -drivefile=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 Linux 6.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 -drivefile=rhel6.img,index=0,if=virtio,boot=on -net nic,model=virtio -usbdevicetablet -net user -nographic -vnc :0

Note:

1.       内存过小不能成功启动自定义分区功能

2.       VNC的模式会发现总是有两个鼠标,而且移动很慢,这个时候只要我们在qemu启动的时候加上-usbdevice tablet就可以解决VNC下的问题了

3.       安装相关模板服务制作

系统安装完成后请选择”reboot”重启系统进入

1          

2          

3          

1              关闭网卡重命名

echo ''>/lib/udev/rules.d/75-persistent-net-generator.rules

2              开启DHCP功能

rhel6默认是不配置网卡的,所以我们必须手工启动本功能

vi /etc/sysconfig/network-scripts/ifcfg-eth0

默认的网络配置是

               DEVICE="eth0"

               HWADDR=specifc macaddress

               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

            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 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 http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-15.iso

wget http://alt.fedoraproject.org/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 -fdavirtio-win-1.1.16.vfd  -cdromWIN_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.       修复在虚拟机启动时的错误

1          

2          

3          

4          

5          

6          

7          

1              应用程序-特定 权限设置未将 COM 服务器应用程序的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE

开始→控制面板→管理工具→组件服务

打开 组件服务 树目录 →计算机→我的电脑→DCOM配置

右边的面板里 找到 netman 右键→属性→安全→ 启动和激活权限 →自定义→编辑   添加 network service 用户,把本地启动和本地激活勾上就可以了

 

2              Parallel port driver 服务启动失败

只需要在注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Parport中,将“start=3”改为“start=0”

3              启动后出现第一个页面,请选择完成,经多次测试否则会出现网卡不启动的现象

8.       发布镜像

glance-H 192.168.1.133  -A openstack addname="win2003"  is_public=truedisk_format=raw < win2003.img

你可能感兴趣的:(openstack镜像制作)