打造 ubuntu server 12.04 jeos

现在都流行云主机,虚拟主机也升级为虚拟机。虚拟机(Virtual Machine)和虚拟主机(Virtual Host)少一个字,功能却多太多了。


软件产品在客户现场部署的时候,受限于软硬件和网络环境,往往效率较低。对于这个问题,一种改进办法是把软件灌装到工程机,做成硬件盒子销售,不仅可以提高事实效率,还能多卖钱(交付硬件往往让客户觉得有价值)。另一种改进办法则是把软件灌装到虚拟机,把虚拟机文件拷贝到客户提供的主机中运行。这种技术本质上和云主机是一样的,虽然不能提升产品价格,但至少解决了软件产品部署麻烦的问题。尤其在提交测试的时候非常有用。

现在的操作系统越做越大,安装一个Linux发行版动辄上G。Ubuntu 8.0以前的时候曾出过JeOS(Just Enough OS, pronounced: "Juice"),但后来不再单独提供JeOS光盘,而是把JeOS功能集成到Server版的安装光盘ISO文件中。安装界面上按F4,选择Minimal Installation(虚拟机安装选择Minimal Virtual Machine)进行安装。然而令人遗憾的是,所谓的Minimal并不小,我用VMWare试了多次,Ubuntu Server 12.04 LTS i686安装完怎么也得生成1GB左右的vmdk文件,与我的期望相去甚远。Ubuntu官网上有介绍用vmbuilder定制系统地方法,由于过于复杂本人没有试验成功。相关资料:

JeOS介绍:https://help.ubuntu.com/community/JeOS

使用vmbuilder定制JeOS:https://help.ubuntu.com/12.10/serverguide/jeos-and-vmbuilder.html


通过不懈的研究实践,我找到了两个制作JeOS的方法。

第一种是从ubuntu的官网上下载ubuntu-core,并将其制作成虚拟机系统。ubuntu-core下载:http://cdimage.ubuntu.com/cdimage/ubuntu-core/releases/12.04.4/release/ubuntu-core-12.04.4-core-i386.tar.gz

ubuntu-core不是iso光盘,是官方裁剪过的文件系统打包。首先创建一个最小硬件配置的虚拟机,仅包括CPU、内存、硬盘、光驱和显示器就够了。然后用Ubuntu Server光盘启动选择“Rescue broken system”,然后进入Terminal,使用fdisk进行分区。Ubuntu Core: https://wiki.ubuntu.com/Core

由于Rescue broken system”可用命令太少,我实际是在一个安装好的Ubuntu虚拟机挂载Ubuntu-core的vmdk格式硬盘中完成的磁盘分区操作。使用fdisk /dev/sdb(/dev/sda是安装好的Ubuntu的硬盘)先后创建两个primary分区/dev/sdb1和/dev/sdb2,将其中一个改为Linux Swap。使用命令a设置/dev/sdb1为启动分区之后,键入w保存并退出fdisk。再使用mkfs.ext4和mkswap分别将/dev/sdb1和/dev/sdb2格式化为ext4和swap。具体操作请参考:http://computernetworkingnotes.com/file-system-administration/how-to-create-swap-partition.html

视频教程(需翻墙):http://www.youtube.com/watch?v=xiM9GOKvTI4

下载好ubuntu-core和做好磁盘分区之后,只需要挂载/dev/sdb1到/mnt/sdb1,然后将文件系统解压到/mnt/sdb1。

由于ubuntu-core实在是什么都没有,还需要使用apt-get install net-tools vim-tiny grub-pc。安装grub的命令:

#grub-install --root-directory=/mnt/sdb1 /dev/sdb1

但是以上命令还不能进入期待已久的Ubuntu core,启动到grub就停止了。从grub进入ubuntu的参考:http://askubuntu.com/questions/21342/how-can-i-load-ubuntu-when-all-i-have-is-grub?answertab=active#tab-top 方法如下:

set root=(hd0,1)
linux /vmlinuz root=/dev/sda1
initrd /initrd.img
boot

注意:由于ubuntu-core中的/boot是空的,/vmlinuz和/initrd.img并不存在,我是从安装好的UbuntuServer 12.04中复制过来的,并重新做了软链接。每次启动都要通过grub太麻烦了,手工编辑一下:

vi /etc/default/grub
修改GRUB_DEFAULT=0为1

参考:http://askubuntu.com/questions/265010/how-do-i-edit-grub-menu

全部安装完成后,硬盘vmdk文件控制在200多兆,算是小有收获吧。

总结:终于可以进入ubuntu-core了,但是要做的工作还有很多,比如还需要手工编辑网卡等等。实践证明这条路不够好。


第二种是下载做好的Ubuntu-12.04LTS-JeOS虚拟机:http://virtualappliances.eu/

下载文件只有不到60MB,生成虚拟机后,硬盘vmdk文件也只有150MB。更重要的是相比第一种方法,这种方法来的太方便了。但是别急,该JeOS只分配了2GB的硬盘空间,这哪里够用啊。要解决这个问题,也有两个办法,一种办法是对硬盘进行扩容(不是添加新硬盘,而是对老硬盘扩容);另一种办法则是将该JeOS的文件系统复制到一个新的大容量vmdk硬盘中去。

硬盘扩容使用vmware图形界面或者vmware-vdiskmanager.exe -x 工具就可以。但是由于涉及到保留文件系统的情况下对分区进行扩容resize2fs还是比较麻烦的。我没有去实践如何对硬盘扩容,只是查询了相关资料。http://blog.sina.com.cn/s/blog_643e8386010142zq.html 大家可以自行研究补充。

前面大篇幅讲述如何安装Ubuntu-core,实际是为了将这个JeOS用相同的方法复制到配置了大容量硬盘vmdk的虚拟机中去。具体过程也参考了http://virtualappliances.eu/ DOCUMENT>BUILDING A JEOS APPLIANCE

到最后一步修改grub的方法稍有不同。先进入Ubuntu,使用blkid查询/dev/sda1的UUID。参考:http://serverfault.com/questions/3132/how-do-i-find-the-uuid-of-a-partition

$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext4"

然后修改/boot/grub/grub.conf,将查询到的UUID替换掉相关内容即可。最终制作好的jeos(UbuntuServer12.04LTS i686 + 4GB RAM + 80G HardDisk) ovf格式vmdk文件大小为60MB。生成VMWare虚拟机为167MB。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值