定制化 大数据平台一键安装OS
大数据平台一键安装OS系列
定制化OS镜像制作
1.操作环境
操作环境:VMware Workstarion 9 and vSphere client
系统:CentOS -6.8-x86_64
工具:gconf-editor anaconda repodata createrepo mkisofs rsync
2.主要思路
定制化是通过kickstart脚本来实现的,linux系统安装完毕后在root目录下会生成anaconda-ks.cfg install.log等文件,anaconda-ks.cfg是自动安装脚本,install.log是安装包的一些信息记录。在定制化中我们用到的主要是anaconda-ks.cfg这个kickstart脚本,这个脚本可以通过工具生成,也可以通过修改原来系统的anaconda-ks.cfg文件来实现。这里为了方便,采用的是原来系统的anaconda-ks.cfg来进行修改,在kickstart脚本中我们可以自行设置在安装过程中要实现的操作,实现自动化定制化安装。
3.工具安装
在定制过程中,需要安装一些工具,这些工具用于生成我们需要的文件和最后制作镜像文件,进入centos,管理员模式下在命令行输入如下命令:#挂载镜像
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[root@localhost ~]
# mount /dev/sr0 /mnt/
mount
: block device
/dev/sr0
is write-protected, mounting
read
-only
[root@localhost ~]
# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 38G 27G 9.5G 74% /
tmpfs tmpfs 985M 0 985M 0%
/dev/shm
/dev/sda1
ext4 500M 42M 433M 9%
/boot
/dev/sr0
iso9660 5.8G 5.8G 0 100%
/mnt
#制作本地源
touch
/etc/yum
.repos.d
/vrv
.repo
echo
"
[vrv-
local
]
name=vrv-
local
baseurl=
file
:
///mnt/
gpgcheck=0
enabled=1
" >>
/etc/yum
.repos.d
/vrv
.repo
yum clean all &&
echo
'yum repository has been updated!'
#安装工具
yum –y
install
anaconda repodata createrepo
mkisofs
rsync
|
4.定制化过程
#建立系统制作目录
mkdir /home/source
挂载镜像centos6.8.iso
#复制除了Packages文件夹以外的所有文件到系统制作目录
mount /dev/sr0 /mnt
cd /mnt
cp -rf * /home/source/
上传ks.cfg 服务端脚本配置和ks-config.cfg客户端脚本配置到isolinux文件夹下
执行yum install dos2*
dos2unix isolinux/*.cfg
#复制原系统的anaconda-ks.cfg和install.log文件到系统制作目录
[root@localhost ~]#cp /root/anaconda-ks.cfg /root/install.log /home/source
#参照当前的系统,复制相应的软件包到系统制作目录,install.log记录了本机安装的软件包的信息,参考install.log可以减少复制多余的软件包。
[root@localhost ~]#mkdir /home/source/Packages
[root@localhost ~]#awk ‘/Installing/{print $2}’ /home/source/install.log | xargs –I cp /mnt/Packages/{}.rpm /home/source/Packages/
cp /mnt/.discinfo /home/source/ #这一步很重要
#修改/制作kickstart脚本,修改这个脚本有两种方法,第一种方法是通过修改原系统的anaconda-ks.cfg脚本,第二种方法是通过system-config-kickstart工具来制作。第一种较为简单,修改的地方较少,而第二种方法是制作一个kickstart脚本,制作的过程由很多参数是需要手动设置的,容易出问题。
#对里面的参数进行解释
timezone Asia/Shanghai #设置系统的时区,在时区设置是前面不加—utc否则时区设置不生效
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" #auto rhgb quiet参数设置了系统的启动方式,去掉rhgb则在开机的过程中不显示开机动画,而是以文本的形式打印出系统的启动过程
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#这里设置分区操作,如果不在kickstart脚本中设置,则在安装过程中需要手动来进行设置
clearpart --all –initlabel
part /boot --fstype=ext4 --size=300
part / --fstype=ext4 --grow --size=37000 #硬盘大小根据具体的大小设置,一般我给虚拟机的大小为40G,所以这里设置为37000,剩余的空间用作boot和swap分区。
part swap --grow --maxsize=1984 --size=1984
#修改引导显示画面,引导显示画面的背景图片在安装光盘中的isolinux文件夹内部只需要用其他图片替换掉即可。修改系统名字(安装ambari服务不能修改名字)
#echo " OS release 1.1" > /etc/centos-release
#echo " OS release 1.1" > /etc/redhat-release
#sed -i 's/CentOS release 6.8 (Final)/ OS release 1.1/g' /etc/issue
#sed -i 's/CentOS release 6.8 (Final)/ OS release 1.1/g' /etc/issue.net
#sed -i 's/localhost.localdomain/vasp.host/g' /etc/sysconfig/network
#sed -i 's/CentOS/OS/g' /etc/rc.d/rc.sysinit
#sed -i 's/CentOS/OS/' /etc/grub.conf
5.添加背景图片
cd /home/source/Packages/isolinux/
#添加背景图片
menu background splash.jpg
替换成
注意图片大小和名字必须跟原图片一样
#自定义的安装选项,并将这个选项设置为默认选项,并设置自定义的kickstart安装脚本的文件路径,实现以文本形式自动安装。真重要,如果不变成一样,会遇到图片无法变过来的情况。
按格式添加并修改菜单选项:
######################添加以下内容
label menu os server install new system
menu os server install new system
kernel vmlinuz
append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
label menu os client install new system
menu os client install new system
kernel vmlinuz
append ks=cdrom:/isolinux/ks-config.cfg initrd=initrd.img
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
label Boot
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -
成果图:
6.生成新的镜像
#生成新的repodata文档
[root@localhost ~]#cd /home/source
[root@localhost ~]#cp repodata/*comps.xml ./comps.xml
[root@localhost ~]#rm –rf repodata
[root@localhost ~]#declare –x discinfo=`head –1 .discinfo`
[root@localhost ~]#createrepo –g comps.xml /home/source
#或者,也可以通过以下命令来实现,这个命令和上面区别在于它只更改那些在上次产生元数据之后被修改,添加或者删除了的项目,所以这个命令一般是用于在修改了包或组之后重新生成repodata文档,可以提高效率。
[root@localhost ~]#createrepo –u “media://$discinfo” –g comps.xml | /home/source
#为了方便,也可以通过脚本来进行操作,具体的脚本如下:
1
2
3
4
5
6
7
|
#!/bin/bash
ISO_DIR=
/home/source
cd
${ISO_DIR}
declare
-x discinfo=$(
head
-1 .discinfo)
cp
/mnt/repodata/
*-c6-x86_64-comps.xml ${ISO_DIR}
/comps
.xml
createrepo -g ${ISO_DIR}
/comps
.xml ${ISO_DIR}
createrepo -u
"media://$discinfo"
-g ${ISO_DIR}
/comps
.xm l ${ISO_DIR}
|
# sh 1.sh
Spawning worker 0 with 3233 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
#如果修改了Packages文件夹内的软件包,则需要重新生成comps.xml文件,可以将以上脚本保存为一个.sh文件,放于/root目录下随时使用。到这里所有的准备工作都已经完成,接下来可以开始制作镜像文件了。制作镜像文件用到的工具有mkisofs和implantisomd5,前者用来制作镜像,后者用来进行md5校验,检测文件在传输过程中是否损坏。进入系统制作目录/home/source运行一下命令:
[root@localhost ~]#mkisofs –o os.iso –b isolinux/isolinux.bin –c isolinux/boot.cat –no-emul-boot –boot-load-size 4 –boot-info-table –R –J –v –T –joliet-long /home/source
#执行上述命令之后,在/home/source目录下会生成一个名为OS.iso的镜像文件进入/home/source目录。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
Using KRB5_001.RPM;1
for
/home/source/Packages/krb5-server-ldap-1
.10.3-57.el6.x86_64.rpm (krb5-server-1.10.3-57.el6.x86_64.rpm)
Using PYTHO02T.RPM;1
for
/home/source/Packages/python-simplejson-2
.0.9-3.1.el6.x86_64.rpm (python-suds-0.4.1-3.el6.noarch.rpm)
Using KDE_L01L.RPM;1
for
/home/source/Packages/kde-l10n-Korean-4
.3.4-5.el6.noarch.rpm (kde-l10n-Maithili-4.3.4-5.el6.noarch.rpm)
Using XORG_021.RPM;1
for
/home/source/Packages/xorg-x11-drv-tdfx-1
.4.6-1.el6.x86_64.rpm (xorg-x11-drv-vmmouse-13.1.0-1.el6.x86_64.rpm)
Using YUM_P005.RPM;1
for
/home/source/Packages/yum-plugin-verify-1
.1.30-37.el6.noarch.rpm (yum-plugin-tmprepo-1.1.30-37.el6.noarch.rpm)
Using KDE_L01M.RPM;1
for
/home/source/Packages/kde-l10n-Maithili-4
.3.4-5.el6.noarch.rpm (kde-l10n-Icelandic-4.3.4-5.el6.noarch.rpm)
Using CONTR001.RPM;1
for
/home/source/Packages/control-center-filesystem-2
.28.1-40.el6.x86_64.rpm (control-center-2.28.1-40.el6.x86_64.rpm)
Using POSTG00A.RPM;1
for
/home/source/Packages/postgresql-libs-8
.4.20-6.el6.x86_64.rpm (postgresql-plpython-8.4.20-6.el6.x86_64.rpm)
Using AUDIT001.RPM;1
for
/home/source/Packages/audit-libs-python-2
.4.5-3.el6.x86_64.rpm (audit-libs-2.4.5-3.el6.x86_64.rpm)
Using ECLIP01R.RPM;1
for
/home/source/Packages/eclipse-valgrind-0
.6.1-1.el6.x86_64.rpm (eclipse-rpm-editor-0.5.0-2.el6.x86_64.rpm)
Writing: Initial Padblock Start Block 0
Done with: Initial Padblock Block(s) 16
Writing: Primary Volume Descriptor Start Block 16
Done with: Primary Volume Descriptor Block(s) 1
Writing: Eltorito Volume Descriptor Start Block 17
Size of boot image is 4 sectors -> No emulation
Done with: Eltorito Volume Descriptor Block(s) 1
Writing: Joliet Volume Descriptor Start Block 18
Done with: Joliet Volume Descriptor Block(s) 1
Writing: End Volume Descriptor Start Block 19
Done with: End Volume Descriptor Block(s) 1
Writing: Version block Start Block 20
Done with: Version block Block(s) 1
Writing: Path table Start Block 21
Done with: Path table Block(s) 4
Writing: Joliet path table Start Block 25
Done with: Joliet path table Block(s) 4
Writing: Directory tree Start Block 29
Done with: Directory tree Block(s) 326
Writing: Joliet directory tree Start Block 355
Done with: Joliet directory tree Block(s) 239
Writing: Directory tree cleanup Start Block 594
Done with: Directory tree cleanup Block(s) 0
Writing: Extension record Start Block 594
Done with: Extension record Block(s) 1
Writing: The File(s) Start Block 595
0.16%
done
, estimate finish Tue Jun 20 00:20:32 2017
99.96%
done
, estimate finish Tue Jun 20 00:23:09 2017
Total translation table size: 848976
Total rockridge attributes bytes: 384427
Total directory bytes: 660628
Path table size(bytes): 848
Done with: The File(s) Block(s) 3160548
Writing: Ending Padblock Start Block 3161143
Done with: Ending Padblock Block(s) 150
Max brk space used 3aa000
3161293 extents written (6174 MB)
|
执行命令:
[root@localhost source]#/usr/bin/implantisomd5 os.iso
#向镜像文件插入md5校验值,防止镜像文件在复制过程中损坏,校验时在相应文件目录下输入如下命令,即可对文件进行校验,校验文件没问题后,可以通过xftp将镜像文件复制出来,下一步就可以安装测试了。
[root@localhost ]#checkisomd5 os.iso
生成镜像命令:
yum install -y mkisofs
createrepo -g repodata/*x86_64-comps.xml /home/source/
declare -x discinfo=`head -1 .discinfo`
createrepo -u "media://$discinfo" -g repodata/*x86_64-comps.xml /home/source/
mkisofs -o os.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long /home/source
7.生成HDP镜像
跟上述一样的操作
createrepo -g repodata/*x86_64-comps.xml /home/hdp
declare -x discinfo=`head -1 .discinfo`
createrepo -u "media://$discinfo" -g repodata/*x86_64-comps.xml /home/hdp
mkisofs -o hdp2.4.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long /home/hdp
效果图:
————————————————————————————————————————————————
如果你觉得作者的文章写的不错,请通过“支付宝”或“微信”奖励作者一些银子~
不需要太多(0.1、1元、3元、5元就可),不奖励就请点个赞吧,谢谢!
本文转自 cs312779641 51CTO博客,原文链接:http://blog.51cto.com/chenhao6/1943183