虚拟化裁剪指导

文档编

 



 

定制系统自动安装

环境准备

1. 安装CentOS 6.3,安装时选择最小化安装,安装过程与普通的CentOS安装相同.

2. 安装后进入系统,配置好网络,安装必需的软件.

yum -y installcreaterepo mkisofs isomd5sum rsync

各个软件功能请参考网络.

3. 根据当前系统已安装的软件包生成安装系统所需要的rpm列表

awk'/Installing/{print $2}' install.log |sed 's/^[0-9]*://g'>/root/packages.list

4. 建立定制所需要的目录并把除Packages目录以外的文件复制到新的系统目录

mkdir  /mnt/cdrom

mkdir -p /data/OS

mount /dev/cdrom/mnt/cdrom/

rsync -a--exclude=Packages /mnt/cdrom/ /data/OS/

mkdir/data/OS/Packages

5. 使用脚本自动复制所需要的RPM包到新建立的光盘目录中Packages

脚本名称cprpms.sh,内容如下:

#!/bin/bash  

SRC_RPMS=/mnt/cdrom/Packages     

DST_RPMS=/data/OS/Packages     

packages_list=/root/packages.list 

number_of_packages=`cat$packages_list | wc -l` 

i=1 

while [ $i -le$number_of_packages ] ; 

 do 

    name=`head -n $i $packages_list | tail -n-1` 

         echo "cp $SRC_RPMS/$name*$DST_RPMS/"  

         cp $SRC_RPMS/$name* $DST_RPMS/         

    i=`expr $i + 1` 

done

6. 执行脚本拷贝已系统的rpm包到将定制系统目录

sh cprpms.sh

7. 提供的自动化安装的Kickstart文件ks.cfg

文件位置/data/OS/isolinux/ks.cfg

文件内容如下:

# Install OSinstead of upgrade

install

# Use CDROMinstallation media

cdrom

# Root passworddefault is "root123"  来此/etc/shadow

rootpw  --iscrypted $6$AYQ0CQIkO9i/iilX$FSLr3Q/O1xNG.J08Z705x5gl8yD3.JBHxBNx6KaG3KmQrKdh6Qfu3V5CIIYPOikf6TJxjiPv0POA5qyS3JzNx0

# Systemauthorization information

auth --useshadow--passalgo=md5

# Use text modeinstall

text

firstboot--disable

# Systemkeyboard

keyboard us

# Systemlanguage

lang en_US

# SELinuxconfiguration

selinux--disabled

# Do notconfigure the X Window System

skipx

# Installationlogging level

logging--level=info

# Reboot afterinstallation

reboot

# Systemtimezone

timezone  Asia/Shanghai

# Systembootloader configuration

bootloader--location=mbr

# Clear theMaster Boot Record mbr

zerombr

# Partitionclearing information

clearpart --all--initlabel

 

 

%packages 

@core 

@server-policy 

 

%post

 

# Mount CDROM

mkdir -p/mnt/cdrom

mount -r -tiso9660 /dev/cdrom /mnt/cdrom

 

# Copy ourfiles, extract it ,then move to right locations

cd/mnt/cdrom/software

cp/mnt/cdrom/software/limaolin.tar.gz /root/limaolin.tar.gz> /dev/null

cp/mnt/cdrom/software/Kimchi.tar.gz /root/Kimchi.tar.gz> /dev/null

cp/mnt/cdrom/software/AgentPackages.tar.gz /root/AgentPackages.tar.gz>/dev/null

 

cd /root/

tar -zxvflimaolin.tar.gz > /dev/null

tar -zxvfKimchi.tar.gz  > /dev/null

tar -zxvfAgentPackages.tar.gz > /dev/null

cd/root/limaolin

sh issue.sh

sh release.sh

sh sysinit.sh

sh grub.sh

 

 

cd/root/AgentPackages

shcloudagent-install.sh

 

cd/root/Kimchi/initd

sh install.sh

 

 

cd /root

 

rm -rflimaolin.tar.gz Kimchi.tar.gz AgentPackages.tar.gz limaolin KimchiAgentPackages

 

# Umount CDROM

umount/mnt/cdrom

eject

 

%end

8. 修改/data/OS/isolinux/isolinux.cfg文件,告诉Linux的安装管理程序Kickstart提供的自动化安装.

文件内容见下:

defaultvesamenu.c32

#prompt 1

timeout 600

 

display boot.msg

 

menu backgroundsplash.jpg

menu titleWelcome to vServer 2.1!

menu colorborder 0 #ffffffff #00000000

menu color sel 7#ffffffff #ff000000

menu color title0 #ffffffff #00000000

menu colortabmsg 0 #ffffffff #00000000

menu color unsel0 #ffffffff #00000000

menu colorhotsel 0 #ff000000 #ffffffff

menu colorhotkey 7 #ffffffff #ff000000

menu colorscrollbar 0 #ffffffff #00000000

 

label linux

  menu label ^Install or upgrade an existingsystem

  menu default

  kernel vmlinuz

  append ks=cdrom:/isolinux/ks.cfginitrd=initrd.img

label vesa

  menu label Install system with ^basic videodriver

  kernel vmlinuz

  append initrd=initrd.img xdriver=vesanomodeset

label rescue

  menu label ^Rescue installed system

  kernel vmlinuz

  append initrd=initrd.img rescue

label local

  menu label Boot from ^local drive

  localboot 0xffff

label memtest86

  menu label ^Memory test

  kernel memtest

  append -

9. 放置我们自己开发的虚拟化软件及脚本压缩包,使之能在调用Kickstart文件自动化安装操作系统安装后,安装我们的平台于操作系统之上.

cd /data/OS/

mkdir software

把AgentPackages.tar.gz Kimchi.tar.gz limaolin.tar.gz拷到software目录

其中AgentPackages.tar.gz Kimchi.tar.gz为我们自己开发的虚拟化软件

limaolin.tar.gz为提供定制部分系统文字图片的脚本压缩包,详见3定制系统文字图片.

3定制系统文字图片

3.1定制系统图片

1.安装选项的背景图片

由美工提供640*480图片

参考https://fedoraproject.org/w/index.php?title=How_to_create_a_custom_syslinux_splash&oldid=197023修改图片为系统识别图片.

把图片替换为/data/OS/isolinux/splash.jpg

2. 安装过程中的背景图片

(1).安装squashfs-tools工具:

yum -y install squashfs-tools

(2).创建installold文件夹,将镜像目录的images/install.img文件拷贝到installold文件夹中:

mkdir installold

cp -av /data/OS/image/install.img~/installold/

cd ~/installold

ls

install.img

(3).打开install.img文件:

mkdir /mnt/install

mount -o loop -t squashfs~/installold/install.img /mnt/install

ls /mnt/install/

etc firmware  lib  lib64 modules  proc  usr var

cp -av /mnt/install ~/installnew

(4).根据情况替换图形安装过程中的背景图片

cd installnew/usr/share/anaconda/pixmaps/

ls

about-to-install.png  gnome-lock.png         partscheme-freespace.png   splash.png

anaconda_header.png   gnome-mouse.png        partscheme-replace.png     syslinux-splash.png

checkMark.png         install.png            partscheme-shrink.png      upgrade.png

config-language.png   network.png            progress_first-lowres.png 

done.png              partscheme-all.png     progress_first.png

filter-menu.png       partscheme-custom.png  root-password.png

(5).install.img打包压缩

cd ~/

mksquashfs installnew install.img

 

3.2 定制系统文字

1.修改欢迎文字

修改/data/OS/isolinux/isolinux.cfg

修改后如下

default vesamenu.c32

#prompt 1

timeout 600

 

display boot.msg

 

menu background splash.jpg

menu title Welcome to vServer 2.1!

menu color border 0 #ffffffff#00000000

menu color sel 7 #ffffffff#ff000000

menu color title 0 #ffffffff#00000000

menu color tabmsg 0 #ffffffff#00000000

menu color unsel 0 #ffffffff#00000000

menu color hotsel 0 #ff000000#ffffffff

menu color hotkey 7 #ffffffff#ff000000

menu color scrollbar 0 #ffffffff#00000000

 

label linux

 menu label ^Install or upgrade an existing system

 menu default

 kernel vmlinuz

 append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img

label vesa

 menu label Install system with ^basic video driver

 kernel vmlinuz

 append initrd=initrd.img xdriver=vesa nomodeset

label rescue

 menu label ^Rescue installed system

 kernel vmlinuz

 append initrd=initrd.img rescue

label local

 menu label Boot from ^local drive

 localboot 0xffff

label memtest86

 menu label ^Memory test

 kernel memtest

 append -

2. 修改安装过程中的文字显示

修改方法:

(1)安装xz用于解压initrd.img镜像:

yum -y install xz

(2)创建initrddir文件夹,将镜像目录的isolinux/initrd.img文件拷贝到initrddir文件夹中:

mkdir initrddir

cp -av /data/OS/isolinux/initrd.img~/initrddir/

cd ~/initrddir

ls

initrd.img

(3)解压initrd.img文件

xz -dc initrd.img | cpio -id

(4)修改.buildstamp文件

vi .buildstamp

201207061011.x86_64

CentOS

6.3

FINAL=YES

http://bug.centos.org/

将内容改为:

201207061011.x86_64

vServer

2.1

FINAL=YES

http://bug.centos.org/

保存退出;

(5)initrd.img打包压缩

cd到initrddir文件夹执行如下操作:

rm -rf initrd.img

find . | cpio -c -o | xz -6--format=lzma > ../initrd.img

cd ..

rm -rf initrddir

cp initrd.img /data/OS/isolinux/

 

 

 

3.需要通过脚本修改的

脚本release.sh, sysinit.sh内容如下,打包在limaolin.tar.gz

 

release.sh

#!/bin/bash

echo -n "" >/etc/system-release

cat >> /etc/system-release<< EOF

vServer release 2.1 (Final)

EOF

 

sysinit.sh

#!/bin/bash

sed -i"s/CentOS/vServer/" /etc/rc.d/rc.sysinit

 

 

脚本issue.sh内容如下,打包在limaolin.tar.gz

#!/bin/bash

echo -n "" > /etc/issue

cat >> /etc/issue << EOF

vServer release 2.1 (Final)

Kernel \r on an \m

 

EOF

 

 

         4更深入的定制系统

4.1 更深入的定制

虚拟化裁剪定制的系统安装盘涉及很多方面,最彻底最深入的定制即LFS(LinuxFrom Scratch),但此方法需要费时费力研究.

对于一般的情况,上述2,3即可以完成,更深入的可以根据情况分析Anaconda.

Anaconda是Linux的安装管理程序。它提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。还支持许多启动参数。该程序的功能是把位于光盘或其他源上的数据包,根据设置安装到主机上。为实现该定制安装,它提供一个定制界面,可以实现交互式界面供用户选择配置。Anaconda的大部分模块用Python编写,有少许的载入模块用C编写。

Anaconda程序封装在images/install.img中

解压出来后

 

除了主执行体/usr/bin/anaconda,其它安装脚本模块均在/usr/lib/anaconda主目录下。

   /usr/bin/anaconda: 主程序,是python脚本。

    /usr/lib/anaconda/installclasses:定义了在安装过程中用户可选择的安装类型。每个安装类型描述文件根据相应安装类型的特点,分别对安装步骤、分区策略以及安装包的取舍给出了不同的方案。

   /usr/lib/anaconda/iw: 图形安装模式的模块。

   /usr/lib/anaconda/storage: 存储配置的响应目录。

/usr/lib/anaconda/textw: 文本安装模式的模块。和iw子目录含义是一致的,只是包含的是文本安装模式的前端字符用户界面类所在的模块,每个字符用户界面对应一个类,负责与用户的交互。

   /usr/lib/anaconda-runtime: 有init和loader程序。这是两个静态编译的程序,不依赖其他库。

   /usr/anaconda主目录:如果说用户界面类是处理安装程序外观的话,则anaconda主目录下的各python模块执行每个安装界面背后具体的安装行为,包括那些无用户界面安装步骤的安装操作。

    由此可见,主执行体/usr/bin/anaconda调用的大量例程分布在/usr/lib/anaconda目录下,安装过程要用到的资源文件(例如背景图片)则分布在/usr/share/anaconda目录下。

         5制作虚拟化系统安装盘

5.1 最终制作

完成以上所有准备工作后,制作最终的虚拟化系统安装盘

cd /data/OS/

cp/mnt/cdrom/repodata/*-comps.xml /data/OS/repodata/comps.xml

createrepo -grepodata/comps.xml /data/OS/

 

 

declare -xdiscinfo=`head -1 .discinfo`

createrepo -u"media://$discinfo" -g repodata/comps.xml /data/OS/

 

 

 

cd /data/OS/

mkisofs -R -J-T -r -l -d -joliet-long -allow-multidot \

 -allow-leading-dots -no-bak -o/data/base2.2.iso \

 -b isolinux/isolinux.bin -c isolinux/boot.cat-no-emul-boot \

 -boot-load-size 4 -boot-info-table /data/OS

 

在/data/OS目录取虚拟化系统安装盘base2.2.iso


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值