SystemImager安装

安装环境

SystemImager服务器:CentOS release5.5 (Final) x86_64“Image-Server”

SystemImager客户端:CentOS release5.4 (Final) x86_64 ”Image-Client“

一 安装perl模块

1 下载模块安装包

Perl模块下载地址为:

http://search.cpan.org/~abw/AppConfig-1.66/

http://search.cpan.org/~chorny/MLDBM-2.04/

http://search.cpan.org/~grantm/XML-Simple-2.18/

下载的模块安装包为

AppConfig-1.66.tar.gz

MLDBM-2.04.tar.gz

XML-Simple-2.18.tar.gz

2 将包上传至vm中的SystemImager服务器端

将上述软件包下载到本机后用SecureCRT_CN上传到SystemImager服务器端

3 安装perl模块

chmod+x AppConfig-1.66.tar.gz

# tarzxf AppConfig-1.66.tar.gz

# cdAppConfig-1.66

#perl Makefile.PL

#make && make install

chmod+x MLDBM-2.04.tar.gz

# tarzxf MLDBM-2.04.tar.gz

# cdMLDBM-2.04

#perl Makefile.PL

#make && make install

chmod+x XML-Simple-2.18.tar.gz

# tarzxf XML-Simple-2.18.tar.gz

# cdXML-Simple

#perl Makefile.PL

#make && make install

二 给SystemImager Server端安装SystemImager软件

mkdir–p /home/systemimager

cd /home/systemimager

下载脚本install

wgethttp://download.systemimager.org/pub/sis-install/install

chmod+x install

./install-v --download-only systemconfiguratorsystemimager-common systemimager-x86_64boot-standard systemimager-x86_64initrd_template systemimager-server

#以上命令是x86_64操作系统下载的软件包

systemconfigurator-2.2.11-1.noarch.rpm

systemimager-common-4.0.2-1.noarch.rpm

systemimager-x86_64boot-standard-4.0.2-1.noarch.rpm

systemimager-x86_64initrd_template-4.0.2-1.noarch.rpm

systemimager-server-4.0.2-1.noarch.rpm

#如果是32位的OS则运行如下命令去下载软件包

./install-v --download-only systemconfigurator systemimager-common systemimager-i386boot-standardsystemimager-i386initrd_template systemimager-server

#下载的软件包为

systemimager-common-4.0.2-1.noarch.rpm

systemimager-server-4.0.2-1.noarch.rpm

systemimager-i386boot-standard-4.0.2-1.noarch.rpm

systemimager-i386initrd_template-4.0.2-1.noarch.rpm

如果不用install脚本下载软件包也可以使用下列链接

wget http://sourceforge.net/projects/systemconfig/files/systemconfigurator/2.2.11/systemconfigurator-2.2.11-1.noarch.rpm/

wgethttp://sourceforge.net/projects/systemimager/files/systemimager/4.0.2/systemimager-common-4.0.2-1.noarch.rpm

wgethttp://sourceforge.net/projects/systemimager/files/systemimager/4.0.2/systemimager-server-4.0.2-1.noarch.rpm

wgethttp://sourceforge.net/projects/systeminstaller/files/systeminstaller/1.04/systeminstaller-1.04.tar.gz

wget http://sourceforge.net/projects/systemimager/files/systemimager/4.0.2/systemimager-x86_64boot-standard-4.0.2-1.noarch.rpm/download

wgethttp://sourceforge.net/projects/systemimager/files/systemimager/4.0.2/systemimager-i386boot-standard-4.0.2-1.noarch.rpm

安装软件包

rpm -ivh --nodeps *.rpm

安装完以后的默认路径

/usr/lib/systemimager

/usr/sbin/si_cpimage

/usr/sbin/si_rmimage

/usr/sbin/si_mvimage

/usr/sbin/si_getimage

/usr/libexec/gthumb-image-viewer

/usr/bin/si_lsimage

/usr/bin/pdfimages

/var/lib/systemimager

/var/lib/systemimager/images

/var/lock/systemimager

/var/log/systemimager

/etc/systemimager

/etc/systemimager/systemimager.conf

/etc/systemimager/getimage.exclude

重启xinetd

servicexinetd stop

servicexinetd start

或者

servicexinetd restart

三 在客户端安装Systemimager软件,用来生成映像

mkdir –p /home/systemimager

cd /home/systemimager

下载install脚本

wget http://download.systemimager.org/pub/sis-install/install

chmod +x install

下载安装包到

./install -vsystemimager-client systemimager-commonsystemimager-x86_64initrd_template

安装软件包

cd /home/systemimager/

rpm-ivh --nodeps *.rpm

安装完以后的目录为

/etc/systemimager/updateclient.local.exclude

/etc/systemimager/client.conf

/etc/systemimager/updateclient.local.exclude.orig

/usr/sbin/si_prepareclient

/usr/sbin/si_updateclient

在client端启动rsync

运行以下命令只需要输入两次”y”即可

/usr/sbin/si_prepareclient –server “Image-Server”

查看rsync是否启动

ps aux |grep rsync

netstat –anpt |grep rsync

四 在SystemImager服务器上创建黄金客户端的系统镜像

现在我们已经准备好复制黄金客户端磁盘上的内容到SystemImager服务器,镜像将被存储在SystemImager服务器上的/var/lib/SystemImager目录,通过下面的命令检查并确认你在这个目录下有足够的磁盘空间:

#df -h /var/lib/systemimager

文件系统 容量 已用 可用 已用% 挂载点

/dev/mapper/VolGroup00-LogVol00 93G3.1G 86G 4% /

如果没有足够的空间容纳黄金客户端磁盘内容的拷贝,在你使用getimage命令时加上-directory选项,或这在/etc/SystemImager/SystemImager.conf 文件中修改镜像文件默认的存储位置“DEFAULT_IMAGE_DIR =/var/lib/systemimager/images”

看一下是否安装DHCP,如果没有的话需要安装

# rpm -qa |grep dhcp

# /usr/sbin/si_getimage-golden-client “Image-Client” image Zoho-CentOS5.4-Image

Thisprogram will get the " Zoho-CentOS5.4-Image " system imagefrom “Image-Client”

makingthe assumption that all filesystems considered part

ofthe system image are using ext2, ext3, jfs, FAT, reiserfs, or xfs.

Thisprogram will not get /proc, NFS, or other filesystems

notmentioned above.

***********************************WARNING ***********************************

Allfiles retrieved from a golden client are, by default, made accessible to

anyonewho can connect to the rsync port of this machine. See rsyncd.conf(5)

fordetails on restricting access to these files on the imageserver. See the

systemimager-sshpackage for a more secure (but less effecient) method of

makingimages available to clients.

***********************************WARNING ***********************************

See"getimage -help" for command line options.

Continue?([y]/n): y

*******************************************************************

先分析文件列表,然后复制文件,可以在屏幕上看到文件滚动的情形。【太多,省略】

*******************************************************************

lib/modules/2.6.18-164.el5/kernel/drivers/ata/pata_sis.ko

lib/modules/2.6.18-164.el5/kernel/drivers/ata/pdc_adma.ko

lib/modules/2.6.18-164.el5/kernel/drivers/ata/sata_inic162x.ko

lib/modules/2.6.18-164.el5/kernel/drivers/ata/sata_mv.ko

lib/modules/2.6.18-164.el5/kernel/drivers/ata/sata_nv.ko

rsyncerror: timeout in data send/receive (code 30) at io.c(171) [sender=2.6.8]

rsync:connection unexpectedly closed (9400368257 bytes received so far) [receiver]

rsyncerror: error in rsync protocol data stream (code 12) at io.c(463)[receiver=2.6.8]

rsync:connection unexpectedly closed (959622 bytes received so far) [generator]

rsyncerror: error in rsync protocol data stream (code 12) at io.c(463)[generator=2.6.8]

-------------Zoho-CentOS5.4-Image IMAGE RETRIEVAL FINISHED -------------

shell-init:error retrieving current directory: getcwd: cannot access parent directories: 没有那个文件或目录

Press<Enter> to continue...

IPAddress Assignment

---------------------

Thereare three ways to assign IP addresses to the client systems on an

ongoingbasis:

1)DHCP

----------------------------------------------------------------

A DHCP server will assign IP addresses toclients installed with

this image.They may be assigned a different address each time.

If you want to use DHCP, but must ensurethat your clients

receive the same IP address each time, see"man si_mkdhcpstatic".

2)STATIC

----------------------------------------------------------------

The IP address the client uses duringautoinstall will be

permanently assigned to that client.

3)REPLICANT

----------------------------------------------------------------

Don't mess with the network settings in thisimage. I'm using

it as a backup and quick restore mechanismfor a single machine.

Whichmethod do you prefer? [1]: 1

Youhave chosen method 1 for assigning IP addresses.

Areyou satisfied? ([y]/n): y

XMLin()requires either XML::SAX or XML::Parser at /usr/lib/systemimager/perl/SystemImager/Server.pmline 1587

查看一下生成的镜像

[root@sd images]# ls/var/lib/systemimager/images/Zoho-CentOS5.4-Image

bin bootdev etc homelib

查看生成镜像的大小

[root@sd images]# du -shZoho-CentOS5.4-Image

1.5G Zoho-CentOS5.4-Image

至此克隆的第一步已经完成,在上面的几个步骤中首先是配置服务器,其次是配置客户端。
最后进行了镜像制做

报错信息

Can't locateXML/Simple.pm in [at] INC ( [at] INC contains:

上述报错好像是缺少XML::Simple 模块或者是该模块没有正确安装

安装模块,运行如下命令

# cpan install XML:Simple

[root@sd systemconfigurator]#/usr/sbin/si_getimage -golden-client “Image-Client” -image Zoho-CentOS5.4-Image

Can't locate Boot.pm in @INC (@INC contains: /usr/lib/systemconfig/usr/lib/systemimager/perl/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at/usr/lib/systemimager/perl/SystemImager/Common.pm line 1316.

BEGIN failed--compilationaborted at /usr/lib/systemimager/perl/SystemImager/Common.pm line 1316.

Compilation failed in requireat /usr/lib/systemimager/perl/SystemImager/Server.pm line 2244.

BEGIN failed--compilationaborted at /usr/lib/systemimager/perl/SystemImager/Server.pm line 2244.

Compilation failed in requireat /usr/sbin/si_getimage line 46.

BEGIN failed--compilationaborted at /usr/sbin/si_getimage line 46.

出现上述报错的原因是systemconfigurator没有安装

它的功能是: http://wiki.systemimager.org/index.php/System_Configurator

使用方法:http://blog.youkuaiyun.com/asmcvc/article/details/11770851 工具: unyaffs,mkyaffs2image 其中unyaffs有windows版本和linux版本,mkyaffs2image只有linux版本。 windows版本的unyaffs用法: 把system.img复制到unyaffs的相同目录下,cmd命令下cd到unyaffs的目录下,然后执行命令:unyaffs system.img unyaffs会把system.img解压到其目录下。 linux版本的unyaffs用法: 把unyaffs复制到/usr/bin目录下,并修改权限为可执行。 然后cd到system.img目录下(假定目录为system目录),执行命令:unyaffs system.img 然后对system目录下的文件进行修改。 注意:修改完后的文件要修改一下权限,尽量和其他文件的权限保持一致。例如:chmod 644 framework-res.apk mkyaffs2image用法: 复制到/usr/bin目录下,并修改权限为可执行。 这里以打包system目录为system.img为例,执行命令: mkyaffs2image system system.img 然后把新生成的system.img复制替换掉原:adt-bundle-windows-x86\sdk\system-images\android-17\armeabi-v7a\system.img 执行bat批处理命令启动模拟器: D:\adt-bundle-windows-x86\sdk\tools\emulator-arm.exe -avd AndroidVM -partition-size 128 这里以修改android系统启动画面为例: 打开解包目录下的\framework\framework-res.apk 替换图片:framework-res.apk\assets\images\android-logo-mask.png为下图: 然后对\framework\framework-res.apk文件重新签名,复制到linux下后修改文件权限和原来一致。 然后mkyaffs2image system system.img打包生成新的system.img,替换原来的system.img,并启动模拟器,效果图如下: 修改代码: 工具:odextools(参考:《一键odex批量合并工具odextools的重新整理与使用》)、dexopt-wrapper 其中odextools.bat的代码: 批处理有一处bug:每打包一次会把odex文件删除掉,导致在后面的打包过程中会出现找不到:system/framework/core.odex类似的错误,因此只需要在打包完后不删除odex文件即可,找到del /f !apkx!.odex 1>nul 2>nul改为:::del /f !apkx!.odex 1>nul 2>nul,也就是注释掉这一行代码。 具体使用方法(操作在windows下): 在odextools\romdir目录下创建文件夹:system 利用unyaffs解包system.img后,把所有文件复制到system目录下。 然后运行odextools.bat,如图: 选择一个需要整合odex的目录选项即可。odextools.bat会自动设置环境变量,使用baksmali.jar来反编译odex为smali,然后再调用smali.jar打包为classes.dex, 然后再打包到相应的apk包(framework目录下对应的是jar后缀的,实际上也是个apk包),最后再重新签名。 如果要修改代码,则需要把上面重新打包生成的apk文件,利用常规方法反编译后修改smali代码,例如插桩输入log信息。然后再回编译并重新签名。 最后一步:因为system.img中的apk是优化过的,apk主目录下是没有classes.dex文件的,而是一个被优化过的odex文件,用于优化启动速度。 因此需要将修改后的apk包再用dexopt-wrapper优化apk包后生成出odex文件,然后删除apk包里的classes.dex,并在相同目录下放置与apk包同名的odex文件。 按照原system目录的文件结构组织好后,目录复制到linux环境下使用mkyaffs2image重新打包成system.img。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值