self revisor

Post on 07-Nov-2014

593 Views

Category:

Self Improvement

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

step by step for respin fedora/CentSO/RHEL linux for you.

TRANSCRIPT

纯手工打造虚拟器件

Based on RedHat Linux distributions

李建盛

2010.10.19

1.5

Copyright © 2010 CopyLeft jiangshen.li@i-soft.com.cn

议程

Copyright © 2010 CopyLeftjiangshen.li@i-soft.com.cn

2 / 25

注:本演示文稿大多数时候都是实际的例子粘贴!所以不会有太多的理论和教条。

1. 制作虚拟编译环境2. 定制安装介质3. 制作虚拟镜像

制作虚拟编译环境

Copyright © 2010 CopyLeftjiangshen.li@i-soft.com.cn

3 / 25

也许你听说过LFS发行版,从头开始定制环境是个什么样的流程,你已经成竹在胸。

制作虚拟编译环境

准备工作

制作虚拟编译环境 Copyright © 2010 CopyLeftjiangshen.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)? yesWarning: 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 CopyLeftjiangshen.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 CopyLeftjiangshen.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 CopyLeftjiangshen.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/binbash-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 CopyLeftjiangshen.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 CopyLeftjiangshen.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# lsphpMyAdmin-2.11.10.1-1.noarch.rpm

定制安装介质

Copyright © 2010 CopyLeftjiangshen.li@i-soft.com.cn

10 / 25

也许你熟悉kickstart,fedora liveCD等工具,那么基于大而全的linux发行版定制出满足自身需求的安装介质,是你的必备技能之一。

定制安装介质

复制rpm包,及修改comps.xml

定制安装介质 Copyright © 2010 CopyLeftjiangshen.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]# lscomps-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 CopyLeftjiangshen.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 CopyLeftjiangshen.li@i-soft.com.cn

13 / 25

你知道仓库吗?repo :

[root@kvmsupport DIY]# createrepo -g comps.xml .[root@kvmsupport DIY]# cat yum.conf.tmp [mycentos]name=mycentosbaseurl=file:///project/revisor/DIY/CentOS5/enabled=0gpgcheck=0[root@kvmsupport DIY]# repoclosure -c yum.conf.tmp -r mycentosReading in repository metadata - please wait....Checking DependenciesRepos 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 CopyLeftjiangshen.li@i-soft.com.cn

14 / 25

Reading in repository metadata - please wait....Checking DependenciesRepos looked at: 1 mycentos Num Packages in Repos: 2602

制作安装光盘

定制安装介质 Copyright © 2010 CopyLeftjiangshen.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 -idm39021 blocks[root@kvmsupport anaconda]# rpm2cpio anaconda-runtime-*.i386.rpm |cpio -idm6620 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/mycentos3436/3436 - CentOS/sblim-cmpi-base-test-1.6.0-40.el5.x86_64.rpm Saving Primary metadata

制作安装光盘 (Continued)

定制安装介质 Copyright © 2010 CopyLeftjiangshen.li@i-soft.com.cn

16 / 25

Saving file lists metadataSaving 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 CopyLeftjiangshen.li@i-soft.com.cn

17 / 25

也许你熟悉amazon AMI,KVM qcow2等镜像文件,那么对于其工作的方式以及驾驭它的能力,想必能够为虚拟化解决方案撑起一片独立天空!

制作虚拟镜像及其更改

制作镜像文件并qemu-kvm启动之

制作虚拟镜像及其更改 Copyright © 2010 CopyLeftjiangshen.li@i-soft.com.cn

18 / 25

lee@python:/media/test$ sudo kvm-img create -f qcow2 mycentos.img 5Glee@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 CopyLeftjiangshen.li@i-soft.com.cn

19 / 25

利用vncview,看实例吧!

修改配置文件,以及定制应用(一)

制作虚拟镜像及其更改 Copyright © 2010 CopyLeftjiangshen.li@i-soft.com.cn

20 / 25

方法之一:利用古老的工具

raw格式相对简单些:losetup /dev/loop0 image.imgkpartx -a /dev/loop0mount /dev/mapper/loop0p1 /mnt/imageqcow2.lee@python:~$ sudo modprobe nbd max_part=63sudo qemu-nbd -c /dev/nbd0 mycentos.imgsudo mount /dev/nbdp1 whatyoucreatedirsudo vgscansudo vgchange -aysudo mount /dev/VolGroup00/LogVol00 actsudo umount actsudo vgchange -an VolGroup00

修改配置文件,以及定制应用(二)

制作虚拟镜像及其更改 Copyright © 2010 CopyLeftjiangshen.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 CopyLeftjiangshen.li@i-soft.com.cn

22 / 25

结束语

关于反馈

结束语 Copyright © 2010 CopyLeftjiangshen.li@i-soft.com.cn

23 / 25

我需要你的反馈!

参考资料

结束语 Copyright © 2010 CopyLeftjiangshen.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 CopyLeftjiangshen.li@i-soft.com.cn

25 / 25

有问题吗?

Thanks!

top related