SlideShare a Scribd company logo
纯手工打造虚拟器件
Based on RedHat Linux distributions
李建盛
2010.10.19
1.5
Copyright © 2010 CopyLeft jiangshen.li@i-soft.com.cn
议程
Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
2 / 25
注:本演示文稿大多数时候都是实际的例子粘贴!所以不会有太多的理论和教条。
1. 制作虚拟编译环境
2. 定制安装介质
3. 制作虚拟镜像
制作虚拟编译环境
Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
3 / 25
也许你听说过LFS发行版,从头开始定制环境是个什么样的流程,你已经成竹在胸。
制作虚拟编译环境
准备工作
制作虚拟编译环境 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
4 / 25
root@code Centos5.5]# scp CentOS-5.5-i386-bin-DVD.iso root@192.168.210.153:~/
The authenticity of host '192.168.210.153 (192.168.210.153)' can't be established.
RSA key fingerprint is 31:e1:e4:fa:ef:26:8a:8b:5f:0e:43:e4:d6:25:e0:63.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.210.153' (RSA) to the list of known hosts.
reverse mapping checking getaddrinfo for bogon failed - POSSIBLE BREAK-IN ATTEMPT!
root@192.168.210.153's password:
CentOS-5.5-i386-bin-DVD.iso 100% 3991MB 11.2MB/s 05:58
[root@kvmsupport revisor]# mv ~/CentOS-5.5-i386-bin-DVD.iso .
[root@kvmsupport revisor]# pwd
/project/revisor
[root@kvmsupport revisor]# mkdir t
[root@kvmsupport revisor]# mount -oloop CentOS-5.5-i386-bin-DVD.iso t
[root@kvmsupport revisor]# mkdir -p pool/RPMS/
[root@kvmsupport revisor]# cp -vfp t/CentOS/*.rpm pool/RPMS/
[root@kvmsupport revisor]# mkdir virenv
开始制作虚拟编译环境
制作虚拟编译环境 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
5 / 25
建立rpm执行环境
[root@kvmsupport revisor]export ROOT=`pwd`/virenv
[root@kvmsupport revisor]mkdir -p $ROOT/var/lib/rpm $ROOT/tmp/RPMS/ $ROOT/bin/
$ROOT/proc $ROOT/etc
[root@kvmsupport revisor]rpm2cpio pool/RPMS/glibc-2.5*.rpm | (cd $ROOT; cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/glibc-devel-2.5*.rpm | (cd $ROOT; cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/bzip2-libs-*.*.rpm |(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/popt-*.*.rpm |(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/sqlite-3*.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/neon-0.25.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/openssl-0.9.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/krb5-libs-1.6*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/e2fsprogs-libs-1.39*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/expat-1.95.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/libsepol-1.15.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/libgcc-4.1.2*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/libstdc++-4.1.2*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/beecrypt-[^d]*.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/libselinux-*.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/nss-3*.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/nspr-4*.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/rpm-*.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/rpm-libs-4.4.*.el5.i386.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/libtermcap-[^d]*.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/bash-*.*.rpm|(cd $ROOT;cpio -idm)
开始制作虚拟编译环境 (Continued)
制作虚拟编译环境 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
6 / 25
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/zlib-[^d]*.*.rpm|(cd $ROOT;cpio -idm)
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/info-*.*.rpm|(cd $ROOT;cpio -idm)
建立虚拟编译环境
制作虚拟编译环境 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
7 / 25
[root@kvmsupport revisor]# cp /etc/resolv.conf $ROOT/etc/resolv.conf
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/gzip-*.*.rpm|(cd $ROOT/tmp;cpio -idm)
[root@kvmsupport revisor]# cp $ROOT/tmp/bin/gzip $ROOT/bin/
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/grep-*.*.rpm|(cd $ROOT/tmp/;cpio -idm)
[root@kvmsupport revisor]# cp $ROOT/tmp/bin/grep $ROOT/bin/
[root@kvmsupport revisor]# rpm2cpio pool/RPMS/coreutils-*.*.rpm|(cd $ROOT/tmp/;cpio -idm)
[root@kvmsupport revisor]# cp $ROOT/tmp/bin/ln $ROOT/bin/
[root@kvmsupport revisor]# cp $ROOT/tmp/bin/cat $ROOT/bin/
[root@kvmsupport revisor]# cp $ROOT/tmp/bin/rm $ROOT/bin/
[root@kvmsupport revisor]# touch $ROOT/etc/mtab
[root@kvmsupport revisor]# echo $ROOT > $ROOT/etc/virtroot
[root@kvmsupport revisor]# cp /etc/sysconfig/network $ROOT/etc/sysconfig/
[root@kvmsupport revisor]# cp /etc/sysconfig/network-scripts/ifcfg-eth0
$ROOT/etc/sysconfig/network-scripts/
[root@kvmsupport revisor]# mount proc $ROOT/proc -t proc
[root@kvmsupport revisor]# for i in pool/RPMS/*.rpm; do cp -vfp $i $ROOT/tmp/RPMS/; done
[root@kvmsupport revisor]# chroot virenv/
bash-3.2# export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin
bash-3.2# rpm -ivh RPMS/setup-2.5.58-7.el5.noarch.rpm --force --root /
bash-3.2# rpm -ivh RPMS/filesystem-2.4.0-3.el5.i386.rpm --force --root /
bash-3.2# rpm -ivh RPMS/basesystem-8.0-5.1.1.el5.centos.noarch.rpm --force --root /
bash-3.2# rpm -Uvh RPMS/*.rpm --force --nodeps --root /
此时,你需要等待很长时间,大约在一个小时左右,视你的机器配置而定。
完成后执行下列必备的文件拷贝:
[root@kvmsupport revisor]# tar -czvf dev.tgz /dev/
建立虚拟编译环境 (Continued)
制作虚拟编译环境 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
8 / 25
[root@kvmsupport revisor]# tar -zxvf dev.tgz -C virenv/
[root@kvmsupport revisor]# cp -rvf /usr/share/zoneinfo/ virenv/usr/share/zoneinfo/
[root@kvmsupport revisor]# cp virenv/usr/share/zoneinfo/Asia/Shanghai virenv/etc/localtime
[root@kvmsupport revisor]# cp /etc/fstab virenv/etc/
[root@kvmsupport revisor]# cp /etc/hosts virenv/etc/
[root@kvmsupport revisor]# cp /etc/mtab virenv/etc/
开始为程序打rpm package
制作虚拟编译环境 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
9 / 25
[root@kvmsupport revisor]# chroot virenv/
现在我们以phpMyadmin这个软件包为例,编译一番。
bash-3.2# wget
http://download.fedora.redhat.com/pub/epel/5Server/SRPMS/phpMyAdmin-2.11.10.1-1.el5.src.rpm .
bash-3.2# rpm -ivh phpMyAdmin-2.11.10.1-1.el5.src.rpm
bash-3.2# cd /usr/src/redhat/SPECS/
bash-3.2# rpmbuild -ba phpMyAdmin.spec
bash-3.2# cd ../RPMS/noarch/
bash-3.2# ls
phpMyAdmin-2.11.10.1-1.noarch.rpm
定制安装介质
Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
10 / 25
也许你熟悉kickstart,fedora liveCD等工具,那么基于大而全的linux发行版定制出满足自身需
求的安装介质,是你的必备技能之一。
定制安装介质
复制rpm包,及修改comps.xml
定制安装介质 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
11 / 25
[root@kvmsupport revisor]# cd /project/revisor/
[root@kvmsupport revisor]# mkdir DIY
[root@kvmsupport revisor]# cd DIY
[root@kvmsupport DIY]# cp ../t/repodata/comps.xml .
[root@kvmsupport DIY]# sed '/xml:lang=/d' comps.xml >comps-new.xml
[root@kvmsupport DIY]# ls
comps-new.xml comps.xml
[root@kvmsupport DIY]# rm -rf comps.xml
[root@kvmsupport DIY]# mv comps-new.xml comps.xml
[root@kvmsupport DIY]# cp -rvf ../t/CentOS CentOS5.5
[root@kvmsupport DIY]# cd CentOS5.5/
#cp ../virenv/usr/src/redhat/RPMS/noarch/phpMyAdmin-2.11.10.1-1.noarch.rpm CentOS/
在comps.xml中添加如下内容:
<category>
<id>Third_Party_Extras</id>
<name>Third Party Extras</name>
<description>A selection of requested extras from third party software suppliers. </description>
<display_order>110</display_order>
<grouplist>
<groupid>phpMyAdmin</groupid>
</grouplist>
</category>
<group>
<id>phpMyAdmin</id>
<name>PhpMyAdmin</name>
复制rpm包,及修改comps.xml (Continued)
定制安装介质 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
12 / 25
<description>Mysql DB GUI management tools, based php web application.</description>
<default>false</default>
<uservisible>true</uservisible>
<packagelist>
<packagereq type="default">phpMyAdmin</packagereq>
</packagelist>
</group>
制作本地repo
定制安装介质 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
13 / 25
你知道仓库吗?repo :
[root@kvmsupport DIY]# createrepo -g comps.xml .
[root@kvmsupport DIY]# cat yum.conf.tmp
[mycentos]
name=mycentos
baseurl=file:///project/revisor/DIY/CentOS5/
enabled=0
gpgcheck=0
[root@kvmsupport DIY]# repoclosure -c yum.conf.tmp -r mycentos
Reading in repository metadata - please wait....
Checking Dependencies
Repos looked at: 1
mycentos
Num Packages in Repos: 2600
package: phpMyAdmin-2.11.10.1-1.noarch from mycentos
unresolved deps:
php-mcrypt >= 0:4.1.0
编辑comps.xml添加如下一行,并将php-mcrypt包放到相应的目录。
<packagereq type="default">php-mcrypt</packagereq>
<packagereq type="default">libmcrypt</packagereq>
[root@kvmsupport CentOS5]# rm -rf repodata/
[root@kvmsupport CentOS5]# createrepo -g repodata/comps.xml .
[root@kvmsupport DIY]# rm -rf /var/cache/yum/mycentos/
[root@kvmsupport DIY]# repoclosure -c yum.conf.tmp -r mycentos
制作本地repo (Continued)
定制安装介质 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
14 / 25
Reading in repository metadata - please wait....
Checking Dependencies
Repos looked at: 1
mycentos
Num Packages in Repos: 2602
制作安装光盘
定制安装介质 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
15 / 25
[root@kvmsupport DIY]# mkdir anaconda
[root@kvmsupport DIY]# cd anaconda/
[root@kvmsupport anaconda]# cp ../CentOS5/CentOS/anaconda-
anaconda-11.1.2.209-1.el5.centos.i386.rpm anaconda-runtime-11.1.2.209-1.el5.centos.i386.rpm
[root@kvmsupport anaconda]# cp ../CentOS5/CentOS/anaconda-* .
[root@kvmsupport anaconda]# rpm2cpio anaconda-11.*.i386.rpm |cpio -idm
39021 blocks
[root@kvmsupport anaconda]# rpm2cpio anaconda-runtime-*.i386.rpm |cpio -idm
6620 blocks
[root@kvmsupport anaconda]# cd ..
[root@kvmsupport DIY]# export ANA_DIR=/project/revisor/DIY/anaconda/
[root@kvmsupport DIY]# export PYTHONPATH=${ANA_DIR}/usr/lib/anaconda:${PYTHONPATH}
[root@kvmsupport DIY]# export PATH=${ANA_DIR}/usr/lib/anaconda-runtime:${PATH}
[root@kvmsupport DIY]# export PRODUCT=CentOS5
你可能需要安装一些软件如:pykickstart,libdhcp,python-pyblock,pyparted等
[root@kvmsupport DIY]# pkgorder --product=CentOS /project/revisor/DIY/mycentos/
x86_64 CentOS |tee pkgfile-x86-64
继续安装软件:squashfs-tools
[root@kvmsupport DIY]# buildinstall --comp dist-1.0.20101018 
--pkgorder /project/revisor/DIY/pkgfile-x86-64 --version 1.0 --product 'CentOS'
--release 1.0 --prodpath CentOS `pwd`/mycentos
[root@kvmsupport DIY]# createrepo --baseurl="media://$dvd_discinfo" -g comps.xml
/project/revisor/DIY/mycentos
3436/3436 - CentOS/sblim-cmpi-base-test-1.6.0-40.el5.x86_64.rpm
Saving Primary metadata
制作安装光盘 (Continued)
定制安装介质 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
16 / 25
Saving file lists metadata
Saving other metadata
[root@kvmsupport DIY]# rm -rf .olddata
[root@kvmsupport DIY]# find mycentos/CentOS/ -name "TRANS.TBL" -exec rm -f {} ;
[root@kvmsupport DIY]# publisher="lijiangsheng1@gmail.com"
[root@kvmsupport DIY]# mkisofs -q -r -R -J -T -no-emul-boot -boot-load-size 4 
-b isolinux/isolinux.bin -c isolinux/boot.cat -boot-info-table -V "mycentos" 
-A "mycentos 1.0 update$date $arch DVD" -publisher "$publisher" -p "$publisher"
-x lost+found -o mycentos-1.0-$date-$arch-DVD.iso mycentos/
制作虚拟镜像及其更改
Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
17 / 25
也许你熟悉amazon AMI,KVM qcow2等镜像文件,那么对于其工作的方式以及驾驭它的能
力,想必能够为虚拟化解决方案撑起一片独立天空!
制作虚拟镜像及其更改
制作镜像文件并qemu-kvm启动之
制作虚拟镜像及其更改 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
18 / 25
lee@python:/media/test$ sudo kvm-img create -f qcow2 mycentos.img 5G
lee@python:/media/test$ sudo kvm --m 512 --cdrom ../mycentos-1.0-20101018-x86_64-DVD.iso 
--drive file=mycentos.img,if=scsi,index=0 --boot d --net nic --net user --vnc :1
此时启动vncview, 访问IP:1,
安装刚才定制的Linux
制作虚拟镜像及其更改 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
19 / 25
利用vncview,看实例吧!
修改配置文件,以及定制应用(一)
制作虚拟镜像及其更改 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
20 / 25
方法之一:利用古老的工具
raw格式相对简单些:
losetup /dev/loop0 image.img
kpartx -a /dev/loop0
mount /dev/mapper/loop0p1 /mnt/image
qcow2.
lee@python:~$ sudo modprobe nbd max_part=63
sudo qemu-nbd -c /dev/nbd0 mycentos.img
sudo mount /dev/nbdp1 whatyoucreatedir
sudo vgscan
sudo vgchange -ay
sudo mount /dev/VolGroup00/LogVol00 act
sudo umount act
sudo vgchange -an VolGroup00
修改配置文件,以及定制应用(二)
制作虚拟镜像及其更改 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
21 / 25
方法之二:利用libguestfs程序接口或工具
libguestfs is a set of tools for accessing and modifying virtual machine (VM) disk images.
You can use this for viewing and editing files inside guests, scripting changes to VMs,
monitoring disk used/free statistics, P2V, V2V, performing partial backups, cloning VMs,
and much else besides.
libguestfs can access nearly any type of filesystem including: all known types of Linux 
filesystem (ext2/3/4, XFS, btrfs etc), any Windows filesystem (VFAT and NTFS), any Mac OS X 
and BSD filesystems, LVM2 volume management, MBR and GPT disk partitions, raw disks, qcow2,
VirtualBox VDI, VMWare VMDK, CD and DVD ISOs, SD cards, and dozens more. libguestfs doesn't
need root permissions.
All this functionality is available through a convenient shell called guestfish, or use
virt-rescue to get a rescue shell for fixing unbootable virtual machines.
libguestfs is also a library that can be linked with C and C++ management programs and has
bindings for Perl, Python, Ruby, Java, OCaml, PHP, Haskell and C#. You can also use it from
shell scripts or the command line. Using our FUSE module you can also mount guest filesystems
on the host. There is a subproject to allow you to merge changes into the Windows Registry in
Windows guests. You can examine unknown disk images to find out what they contain.
libguestfs is a mature program, in development since Feb 2009, with a 100 page manual,
deployed in enterprise environments, and with many successful users.
结束语
Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
22 / 25
结束语
关于反馈
结束语 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
23 / 25
我需要你的反馈!
参考资料
结束语 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
24 / 25
Internet is good.
google
http://revisor.fedoraunity.org/
http://fedorahosted.org/
https://fedorahosted.org/liveusb-creator/
http://git.fedorahosted.org/git/livecd
http://virt-tools.org/
Q&A
结束语 Copyright © 2010 CopyLeft
jiangshen.li@i-soft.com.cn
25 / 25
有问题吗?
Thanks!

More Related Content

What's hot (20)

PDF
Lpreservereurobsd2014
krispcbsd
 
PDF
Self 2013
krispcbsd
 
PDF
Life Preserver - AsiaBSDCon2014
krispcbsd
 
PDF
Texas 2013
krispcbsd
 
PDF
Bundling Packages and Deploying Applications with RPM
Alexander Shopov
 
KEY
Puppet NBLUG 2008-09
Eric Eisenhart
 
PDF
Ilf2013
krispcbsd
 
DOCX
Really useful linux commands
Michael J Geiser
 
PDF
當專案漸趕,當遷移也不再那麼難 (Ship Your Projects with Docker EcoSystem)
Ruoshi Ling
 
PDF
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Cosimo Streppone
 
PPT
Hadoop Installation
mrinalsingh385
 
PPT
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf Conference
 
PDF
Getting Started with Redis
Daniel Ku
 
PDF
Arbeiten mit distribute, pip und virtualenv
Markus Zapke-Gründemann
 
PDF
Configuration Surgery with Augeas
Puppet
 
PDF
Jump into Squeak - Integrate Squeak projects with Docker & Github
hubx
 
PDF
rake puppetexpert:create - Puppet Camp Silicon Valley 2014
nvpuppet
 
PDF
Docker security
Janos Suto
 
PPT
Composer - Package Management for PHP. Silver Bullet?
Kirill Chebunin
 
PDF
Install nagios
hassandb
 
Lpreservereurobsd2014
krispcbsd
 
Self 2013
krispcbsd
 
Life Preserver - AsiaBSDCon2014
krispcbsd
 
Texas 2013
krispcbsd
 
Bundling Packages and Deploying Applications with RPM
Alexander Shopov
 
Puppet NBLUG 2008-09
Eric Eisenhart
 
Ilf2013
krispcbsd
 
Really useful linux commands
Michael J Geiser
 
當專案漸趕,當遷移也不再那麼難 (Ship Your Projects with Docker EcoSystem)
Ruoshi Ling
 
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Cosimo Streppone
 
Hadoop Installation
mrinalsingh385
 
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf Conference
 
Getting Started with Redis
Daniel Ku
 
Arbeiten mit distribute, pip und virtualenv
Markus Zapke-Gründemann
 
Configuration Surgery with Augeas
Puppet
 
Jump into Squeak - Integrate Squeak projects with Docker & Github
hubx
 
rake puppetexpert:create - Puppet Camp Silicon Valley 2014
nvpuppet
 
Docker security
Janos Suto
 
Composer - Package Management for PHP. Silver Bullet?
Kirill Chebunin
 
Install nagios
hassandb
 

Viewers also liked (18)

PDF
Code reading
Li Jiansheng
 
PDF
Docbook intr
Li Jiansheng
 
PDF
Newbie 3 things
Li Jiansheng
 
PDF
Deep dive-oz
Li Jiansheng
 
PDF
Ovirt 代码阅读分享
pan liyang
 
PDF
Python in vir
Li Jiansheng
 
PDF
社区翻译那点事
Li Jiansheng
 
PDF
People for geek
Li Jiansheng
 
PDF
Linux anaconda
Li Jiansheng
 
PDF
数据中心操作系统浅析
Li Jiansheng
 
PDF
The challenge - testing the oVirt project
Eyal Edri
 
PDF
Ovirt deep dive
Li Jiansheng
 
PDF
Understand ovirt
Li Jiansheng
 
PDF
Open source culture_in_china_team
Li Jiansheng
 
PDF
深入浅出云计算之IaaS
Li Jiansheng
 
PDF
Hackers and painter book reading
Li Jiansheng
 
PDF
Why based success_opensource_project_will_fail_its_product_last
Li Jiansheng
 
PDF
2015中国软件技术大会-开放云介绍
Li Jiansheng
 
Code reading
Li Jiansheng
 
Docbook intr
Li Jiansheng
 
Newbie 3 things
Li Jiansheng
 
Deep dive-oz
Li Jiansheng
 
Ovirt 代码阅读分享
pan liyang
 
Python in vir
Li Jiansheng
 
社区翻译那点事
Li Jiansheng
 
People for geek
Li Jiansheng
 
Linux anaconda
Li Jiansheng
 
数据中心操作系统浅析
Li Jiansheng
 
The challenge - testing the oVirt project
Eyal Edri
 
Ovirt deep dive
Li Jiansheng
 
Understand ovirt
Li Jiansheng
 
Open source culture_in_china_team
Li Jiansheng
 
深入浅出云计算之IaaS
Li Jiansheng
 
Hackers and painter book reading
Li Jiansheng
 
Why based success_opensource_project_will_fail_its_product_last
Li Jiansheng
 
2015中国软件技术大会-开放云介绍
Li Jiansheng
 
Ad

Similar to Self revisor (20)

PDF
Deployment Tactics
Ian Barber
 
PDF
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
Leo Lorieri
 
PPTX
A Fabric/Puppet Build/Deploy System
adrian_nye
 
PPTX
drupal ci cd concept cornel univercity.pptx
rukuntravel
 
PDF
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Fabrice Bernhard
 
PPTX
Toolbox of a Ruby Team
Arto Artnik
 
PDF
Scripting for infosecs
nancysuemartin
 
PDF
An Overview of the IHK/McKernel Multi-kernel Operating System
Linaro
 
PDF
The Container Security Checklist
LibbySchulze
 
PDF
Building and Customizing CoreOS
雄也 日下部
 
PDF
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 
PDF
Managing and Monitoring Application Performance
Sebastian Marek
 
DOCX
How to install squid proxy on server or how to install squid proxy on centos o
Proxiesforrent
 
PDF
The Modern Developer Toolbox
Pablo Godel
 
PDF
Docker, c'est bonheur !
Alexandre Salomé
 
PDF
Deploying Symfony | symfony.cat
Pablo Godel
 
PPT
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltStack
 
PDF
Docker jako prostředí pro automatizaci testů
Radim Daniel Pánek
 
PDF
Chicago Docker Meetup Presentation - Mediafly
Mediafly
 
PDF
PHP selber bauen
Walter Ebert
 
Deployment Tactics
Ian Barber
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
Leo Lorieri
 
A Fabric/Puppet Build/Deploy System
adrian_nye
 
drupal ci cd concept cornel univercity.pptx
rukuntravel
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Fabrice Bernhard
 
Toolbox of a Ruby Team
Arto Artnik
 
Scripting for infosecs
nancysuemartin
 
An Overview of the IHK/McKernel Multi-kernel Operating System
Linaro
 
The Container Security Checklist
LibbySchulze
 
Building and Customizing CoreOS
雄也 日下部
 
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 
Managing and Monitoring Application Performance
Sebastian Marek
 
How to install squid proxy on server or how to install squid proxy on centos o
Proxiesforrent
 
The Modern Developer Toolbox
Pablo Godel
 
Docker, c'est bonheur !
Alexandre Salomé
 
Deploying Symfony | symfony.cat
Pablo Godel
 
SaltConf14 - Ben Cane - Using SaltStack in High Availability Environments
SaltStack
 
Docker jako prostředí pro automatizaci testů
Radim Daniel Pánek
 
Chicago Docker Meetup Presentation - Mediafly
Mediafly
 
PHP selber bauen
Walter Ebert
 
Ad

More from Li Jiansheng (9)

PDF
The way of_open_source
Li Jiansheng
 
PDF
Community governance evolution_open_infra_china_day_2018
Li Jiansheng
 
PDF
Why said engineer_is_roadblock- lc3
Li Jiansheng
 
PDF
东方文化与技术社区
Li Jiansheng
 
PPT
开发者与开源社区
Li Jiansheng
 
PPT
GitHub 开源指南深度解读
Li Jiansheng
 
PDF
秘方文化与Ceph项目分析
Li Jiansheng
 
PDF
Inner source introduction
Li Jiansheng
 
PDF
oVirt社区最新活跃度
Li Jiansheng
 
The way of_open_source
Li Jiansheng
 
Community governance evolution_open_infra_china_day_2018
Li Jiansheng
 
Why said engineer_is_roadblock- lc3
Li Jiansheng
 
东方文化与技术社区
Li Jiansheng
 
开发者与开源社区
Li Jiansheng
 
GitHub 开源指南深度解读
Li Jiansheng
 
秘方文化与Ceph项目分析
Li Jiansheng
 
Inner source introduction
Li Jiansheng
 
oVirt社区最新活跃度
Li Jiansheng
 

Recently uploaded (9)

PPTX
Emotional-Intelligence-in-the-Light-of-Islam.pptx
ssuser9e038a
 
PPTX
why-journaling-helps-in-self-growth.pptx
StrengthsTheatre
 
PPTX
Emotional Intelligence Understanding and Recognition
ssuser9fcca3
 
PPTX
Banking_Fraud_Presentation_with_Visuals.
johnwick25061999
 
PDF
self love, mindfulness, psychology, growth
tanya99budhiraja
 
PPTX
Project Management Class that provides clarity on project management tools
DonEmeka3
 
PPTX
09CHAPTER-O1-Areas-Exposed-to-Hazards-Disaster-from-Difft.-Perspectives.pptx
jeromedmangino23
 
PDF
Why Tripura Now Relies Heavily on Civil Services Over IAS Officers.pdf
blogging022
 
PPTX
what is personality and Personality Development.pptx
Teenu10
 
Emotional-Intelligence-in-the-Light-of-Islam.pptx
ssuser9e038a
 
why-journaling-helps-in-self-growth.pptx
StrengthsTheatre
 
Emotional Intelligence Understanding and Recognition
ssuser9fcca3
 
Banking_Fraud_Presentation_with_Visuals.
johnwick25061999
 
self love, mindfulness, psychology, growth
tanya99budhiraja
 
Project Management Class that provides clarity on project management tools
DonEmeka3
 
09CHAPTER-O1-Areas-Exposed-to-Hazards-Disaster-from-Difft.-Perspectives.pptx
jeromedmangino23
 
Why Tripura Now Relies Heavily on Civil Services Over IAS Officers.pdf
blogging022
 
what is personality and Personality Development.pptx
Teenu10
 

Self revisor

  • 1. 纯手工打造虚拟器件 Based on RedHat Linux distributions 李建盛 2010.10.19 1.5 Copyright © 2010 CopyLeft [email protected]
  • 2. 议程 Copyright © 2010 CopyLeft [email protected] 2 / 25 注:本演示文稿大多数时候都是实际的例子粘贴!所以不会有太多的理论和教条。 1. 制作虚拟编译环境 2. 定制安装介质 3. 制作虚拟镜像
  • 3. 制作虚拟编译环境 Copyright © 2010 CopyLeft [email protected] 3 / 25 也许你听说过LFS发行版,从头开始定制环境是个什么样的流程,你已经成竹在胸。 制作虚拟编译环境
  • 4. 准备工作 制作虚拟编译环境 Copyright © 2010 CopyLeft [email protected] 4 / 25 root@code Centos5.5]# scp CentOS-5.5-i386-bin-DVD.iso [email protected]:~/ The authenticity of host '192.168.210.153 (192.168.210.153)' can't be established. RSA key fingerprint is 31:e1:e4:fa:ef:26:8a:8b:5f:0e:43:e4:d6:25:e0:63. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.210.153' (RSA) to the list of known hosts. reverse mapping checking getaddrinfo for bogon failed - POSSIBLE BREAK-IN ATTEMPT! [email protected]'s password: CentOS-5.5-i386-bin-DVD.iso 100% 3991MB 11.2MB/s 05:58 [root@kvmsupport revisor]# mv ~/CentOS-5.5-i386-bin-DVD.iso . [root@kvmsupport revisor]# pwd /project/revisor [root@kvmsupport revisor]# mkdir t [root@kvmsupport revisor]# mount -oloop CentOS-5.5-i386-bin-DVD.iso t [root@kvmsupport revisor]# mkdir -p pool/RPMS/ [root@kvmsupport revisor]# cp -vfp t/CentOS/*.rpm pool/RPMS/ [root@kvmsupport revisor]# mkdir virenv
  • 5. 开始制作虚拟编译环境 制作虚拟编译环境 Copyright © 2010 CopyLeft [email protected] 5 / 25 建立rpm执行环境 [root@kvmsupport revisor]export ROOT=`pwd`/virenv [root@kvmsupport revisor]mkdir -p $ROOT/var/lib/rpm $ROOT/tmp/RPMS/ $ROOT/bin/ $ROOT/proc $ROOT/etc [root@kvmsupport revisor]rpm2cpio pool/RPMS/glibc-2.5*.rpm | (cd $ROOT; cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/glibc-devel-2.5*.rpm | (cd $ROOT; cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/bzip2-libs-*.*.rpm |(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/popt-*.*.rpm |(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/sqlite-3*.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/neon-0.25.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/openssl-0.9.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/krb5-libs-1.6*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/e2fsprogs-libs-1.39*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/expat-1.95.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/libsepol-1.15.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/libgcc-4.1.2*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/libstdc++-4.1.2*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/beecrypt-[^d]*.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/libselinux-*.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/nss-3*.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/nspr-4*.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/rpm-*.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/rpm-libs-4.4.*.el5.i386.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/libtermcap-[^d]*.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/bash-*.*.rpm|(cd $ROOT;cpio -idm)
  • 6. 开始制作虚拟编译环境 (Continued) 制作虚拟编译环境 Copyright © 2010 CopyLeft [email protected] 6 / 25 [root@kvmsupport revisor]# rpm2cpio pool/RPMS/zlib-[^d]*.*.rpm|(cd $ROOT;cpio -idm) [root@kvmsupport revisor]# rpm2cpio pool/RPMS/info-*.*.rpm|(cd $ROOT;cpio -idm)
  • 7. 建立虚拟编译环境 制作虚拟编译环境 Copyright © 2010 CopyLeft [email protected] 7 / 25 [root@kvmsupport revisor]# cp /etc/resolv.conf $ROOT/etc/resolv.conf [root@kvmsupport revisor]# rpm2cpio pool/RPMS/gzip-*.*.rpm|(cd $ROOT/tmp;cpio -idm) [root@kvmsupport revisor]# cp $ROOT/tmp/bin/gzip $ROOT/bin/ [root@kvmsupport revisor]# rpm2cpio pool/RPMS/grep-*.*.rpm|(cd $ROOT/tmp/;cpio -idm) [root@kvmsupport revisor]# cp $ROOT/tmp/bin/grep $ROOT/bin/ [root@kvmsupport revisor]# rpm2cpio pool/RPMS/coreutils-*.*.rpm|(cd $ROOT/tmp/;cpio -idm) [root@kvmsupport revisor]# cp $ROOT/tmp/bin/ln $ROOT/bin/ [root@kvmsupport revisor]# cp $ROOT/tmp/bin/cat $ROOT/bin/ [root@kvmsupport revisor]# cp $ROOT/tmp/bin/rm $ROOT/bin/ [root@kvmsupport revisor]# touch $ROOT/etc/mtab [root@kvmsupport revisor]# echo $ROOT > $ROOT/etc/virtroot [root@kvmsupport revisor]# cp /etc/sysconfig/network $ROOT/etc/sysconfig/ [root@kvmsupport revisor]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 $ROOT/etc/sysconfig/network-scripts/ [root@kvmsupport revisor]# mount proc $ROOT/proc -t proc [root@kvmsupport revisor]# for i in pool/RPMS/*.rpm; do cp -vfp $i $ROOT/tmp/RPMS/; done [root@kvmsupport revisor]# chroot virenv/ bash-3.2# export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin bash-3.2# rpm -ivh RPMS/setup-2.5.58-7.el5.noarch.rpm --force --root / bash-3.2# rpm -ivh RPMS/filesystem-2.4.0-3.el5.i386.rpm --force --root / bash-3.2# rpm -ivh RPMS/basesystem-8.0-5.1.1.el5.centos.noarch.rpm --force --root / bash-3.2# rpm -Uvh RPMS/*.rpm --force --nodeps --root / 此时,你需要等待很长时间,大约在一个小时左右,视你的机器配置而定。 完成后执行下列必备的文件拷贝: [root@kvmsupport revisor]# tar -czvf dev.tgz /dev/
  • 8. 建立虚拟编译环境 (Continued) 制作虚拟编译环境 Copyright © 2010 CopyLeft [email protected] 8 / 25 [root@kvmsupport revisor]# tar -zxvf dev.tgz -C virenv/ [root@kvmsupport revisor]# cp -rvf /usr/share/zoneinfo/ virenv/usr/share/zoneinfo/ [root@kvmsupport revisor]# cp virenv/usr/share/zoneinfo/Asia/Shanghai virenv/etc/localtime [root@kvmsupport revisor]# cp /etc/fstab virenv/etc/ [root@kvmsupport revisor]# cp /etc/hosts virenv/etc/ [root@kvmsupport revisor]# cp /etc/mtab virenv/etc/
  • 9. 开始为程序打rpm package 制作虚拟编译环境 Copyright © 2010 CopyLeft [email protected] 9 / 25 [root@kvmsupport revisor]# chroot virenv/ 现在我们以phpMyadmin这个软件包为例,编译一番。 bash-3.2# wget http://download.fedora.redhat.com/pub/epel/5Server/SRPMS/phpMyAdmin-2.11.10.1-1.el5.src.rpm . bash-3.2# rpm -ivh phpMyAdmin-2.11.10.1-1.el5.src.rpm bash-3.2# cd /usr/src/redhat/SPECS/ bash-3.2# rpmbuild -ba phpMyAdmin.spec bash-3.2# cd ../RPMS/noarch/ bash-3.2# ls phpMyAdmin-2.11.10.1-1.noarch.rpm
  • 10. 定制安装介质 Copyright © 2010 CopyLeft [email protected] 10 / 25 也许你熟悉kickstart,fedora liveCD等工具,那么基于大而全的linux发行版定制出满足自身需 求的安装介质,是你的必备技能之一。 定制安装介质
  • 11. 复制rpm包,及修改comps.xml 定制安装介质 Copyright © 2010 CopyLeft [email protected] 11 / 25 [root@kvmsupport revisor]# cd /project/revisor/ [root@kvmsupport revisor]# mkdir DIY [root@kvmsupport revisor]# cd DIY [root@kvmsupport DIY]# cp ../t/repodata/comps.xml . [root@kvmsupport DIY]# sed '/xml:lang=/d' comps.xml >comps-new.xml [root@kvmsupport DIY]# ls comps-new.xml comps.xml [root@kvmsupport DIY]# rm -rf comps.xml [root@kvmsupport DIY]# mv comps-new.xml comps.xml [root@kvmsupport DIY]# cp -rvf ../t/CentOS CentOS5.5 [root@kvmsupport DIY]# cd CentOS5.5/ #cp ../virenv/usr/src/redhat/RPMS/noarch/phpMyAdmin-2.11.10.1-1.noarch.rpm CentOS/ 在comps.xml中添加如下内容: <category> <id>Third_Party_Extras</id> <name>Third Party Extras</name> <description>A selection of requested extras from third party software suppliers. </description> <display_order>110</display_order> <grouplist> <groupid>phpMyAdmin</groupid> </grouplist> </category> <group> <id>phpMyAdmin</id> <name>PhpMyAdmin</name>
  • 12. 复制rpm包,及修改comps.xml (Continued) 定制安装介质 Copyright © 2010 CopyLeft [email protected] 12 / 25 <description>Mysql DB GUI management tools, based php web application.</description> <default>false</default> <uservisible>true</uservisible> <packagelist> <packagereq type="default">phpMyAdmin</packagereq> </packagelist> </group>
  • 13. 制作本地repo 定制安装介质 Copyright © 2010 CopyLeft [email protected] 13 / 25 你知道仓库吗?repo : [root@kvmsupport DIY]# createrepo -g comps.xml . [root@kvmsupport DIY]# cat yum.conf.tmp [mycentos] name=mycentos baseurl=file:///project/revisor/DIY/CentOS5/ enabled=0 gpgcheck=0 [root@kvmsupport DIY]# repoclosure -c yum.conf.tmp -r mycentos Reading in repository metadata - please wait.... Checking Dependencies Repos looked at: 1 mycentos Num Packages in Repos: 2600 package: phpMyAdmin-2.11.10.1-1.noarch from mycentos unresolved deps: php-mcrypt >= 0:4.1.0 编辑comps.xml添加如下一行,并将php-mcrypt包放到相应的目录。 <packagereq type="default">php-mcrypt</packagereq> <packagereq type="default">libmcrypt</packagereq> [root@kvmsupport CentOS5]# rm -rf repodata/ [root@kvmsupport CentOS5]# createrepo -g repodata/comps.xml . [root@kvmsupport DIY]# rm -rf /var/cache/yum/mycentos/ [root@kvmsupport DIY]# repoclosure -c yum.conf.tmp -r mycentos
  • 14. 制作本地repo (Continued) 定制安装介质 Copyright © 2010 CopyLeft [email protected] 14 / 25 Reading in repository metadata - please wait.... Checking Dependencies Repos looked at: 1 mycentos Num Packages in Repos: 2602
  • 15. 制作安装光盘 定制安装介质 Copyright © 2010 CopyLeft [email protected] 15 / 25 [root@kvmsupport DIY]# mkdir anaconda [root@kvmsupport DIY]# cd anaconda/ [root@kvmsupport anaconda]# cp ../CentOS5/CentOS/anaconda- anaconda-11.1.2.209-1.el5.centos.i386.rpm anaconda-runtime-11.1.2.209-1.el5.centos.i386.rpm [root@kvmsupport anaconda]# cp ../CentOS5/CentOS/anaconda-* . [root@kvmsupport anaconda]# rpm2cpio anaconda-11.*.i386.rpm |cpio -idm 39021 blocks [root@kvmsupport anaconda]# rpm2cpio anaconda-runtime-*.i386.rpm |cpio -idm 6620 blocks [root@kvmsupport anaconda]# cd .. [root@kvmsupport DIY]# export ANA_DIR=/project/revisor/DIY/anaconda/ [root@kvmsupport DIY]# export PYTHONPATH=${ANA_DIR}/usr/lib/anaconda:${PYTHONPATH} [root@kvmsupport DIY]# export PATH=${ANA_DIR}/usr/lib/anaconda-runtime:${PATH} [root@kvmsupport DIY]# export PRODUCT=CentOS5 你可能需要安装一些软件如:pykickstart,libdhcp,python-pyblock,pyparted等 [root@kvmsupport DIY]# pkgorder --product=CentOS /project/revisor/DIY/mycentos/ x86_64 CentOS |tee pkgfile-x86-64 继续安装软件:squashfs-tools [root@kvmsupport DIY]# buildinstall --comp dist-1.0.20101018 --pkgorder /project/revisor/DIY/pkgfile-x86-64 --version 1.0 --product 'CentOS' --release 1.0 --prodpath CentOS `pwd`/mycentos [root@kvmsupport DIY]# createrepo --baseurl="media://$dvd_discinfo" -g comps.xml /project/revisor/DIY/mycentos 3436/3436 - CentOS/sblim-cmpi-base-test-1.6.0-40.el5.x86_64.rpm Saving Primary metadata
  • 16. 制作安装光盘 (Continued) 定制安装介质 Copyright © 2010 CopyLeft [email protected] 16 / 25 Saving file lists metadata Saving other metadata [root@kvmsupport DIY]# rm -rf .olddata [root@kvmsupport DIY]# find mycentos/CentOS/ -name "TRANS.TBL" -exec rm -f {} ; [root@kvmsupport DIY]# publisher="[email protected]" [root@kvmsupport DIY]# mkisofs -q -r -R -J -T -no-emul-boot -boot-load-size 4 -b isolinux/isolinux.bin -c isolinux/boot.cat -boot-info-table -V "mycentos" -A "mycentos 1.0 update$date $arch DVD" -publisher "$publisher" -p "$publisher" -x lost+found -o mycentos-1.0-$date-$arch-DVD.iso mycentos/
  • 17. 制作虚拟镜像及其更改 Copyright © 2010 CopyLeft [email protected] 17 / 25 也许你熟悉amazon AMI,KVM qcow2等镜像文件,那么对于其工作的方式以及驾驭它的能 力,想必能够为虚拟化解决方案撑起一片独立天空! 制作虚拟镜像及其更改
  • 18. 制作镜像文件并qemu-kvm启动之 制作虚拟镜像及其更改 Copyright © 2010 CopyLeft [email protected] 18 / 25 lee@python:/media/test$ sudo kvm-img create -f qcow2 mycentos.img 5G lee@python:/media/test$ sudo kvm --m 512 --cdrom ../mycentos-1.0-20101018-x86_64-DVD.iso --drive file=mycentos.img,if=scsi,index=0 --boot d --net nic --net user --vnc :1 此时启动vncview, 访问IP:1,
  • 20. 修改配置文件,以及定制应用(一) 制作虚拟镜像及其更改 Copyright © 2010 CopyLeft [email protected] 20 / 25 方法之一:利用古老的工具 raw格式相对简单些: losetup /dev/loop0 image.img kpartx -a /dev/loop0 mount /dev/mapper/loop0p1 /mnt/image qcow2. lee@python:~$ sudo modprobe nbd max_part=63 sudo qemu-nbd -c /dev/nbd0 mycentos.img sudo mount /dev/nbdp1 whatyoucreatedir sudo vgscan sudo vgchange -ay sudo mount /dev/VolGroup00/LogVol00 act sudo umount act sudo vgchange -an VolGroup00
  • 21. 修改配置文件,以及定制应用(二) 制作虚拟镜像及其更改 Copyright © 2010 CopyLeft [email protected] 21 / 25 方法之二:利用libguestfs程序接口或工具 libguestfs is a set of tools for accessing and modifying virtual machine (VM) disk images. You can use this for viewing and editing files inside guests, scripting changes to VMs, monitoring disk used/free statistics, P2V, V2V, performing partial backups, cloning VMs, and much else besides. libguestfs can access nearly any type of filesystem including: all known types of Linux filesystem (ext2/3/4, XFS, btrfs etc), any Windows filesystem (VFAT and NTFS), any Mac OS X and BSD filesystems, LVM2 volume management, MBR and GPT disk partitions, raw disks, qcow2, VirtualBox VDI, VMWare VMDK, CD and DVD ISOs, SD cards, and dozens more. libguestfs doesn't need root permissions. All this functionality is available through a convenient shell called guestfish, or use virt-rescue to get a rescue shell for fixing unbootable virtual machines. libguestfs is also a library that can be linked with C and C++ management programs and has bindings for Perl, Python, Ruby, Java, OCaml, PHP, Haskell and C#. You can also use it from shell scripts or the command line. Using our FUSE module you can also mount guest filesystems on the host. There is a subproject to allow you to merge changes into the Windows Registry in Windows guests. You can examine unknown disk images to find out what they contain. libguestfs is a mature program, in development since Feb 2009, with a 100 page manual, deployed in enterprise environments, and with many successful users.
  • 22. 结束语 Copyright © 2010 CopyLeft [email protected] 22 / 25 结束语
  • 23. 关于反馈 结束语 Copyright © 2010 CopyLeft [email protected] 23 / 25 我需要你的反馈!
  • 24. 参考资料 结束语 Copyright © 2010 CopyLeft [email protected] 24 / 25 Internet is good. google http://revisor.fedoraunity.org/ http://fedorahosted.org/ https://fedorahosted.org/liveusb-creator/ http://git.fedorahosted.org/git/livecd http://virt-tools.org/
  • 25. Q&A 结束语 Copyright © 2010 CopyLeft [email protected] 25 / 25 有问题吗? Thanks!