热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据平台一键安装OS【定制化OS镜像制作】

  定制化大数据平台一键安装OS大数据平台一键安装OS系列大数据平台一键安装OS【搭建脚本篇】定制化OS镜像制作1.操作环境操作环境:VMwareWo

   定制化 大数据平台一键安装OS


大数据平台一键安装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,管理员模式下在命令行输入如下命令:#挂载镜像

[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


大数据平台一键安装OS【定制化OS镜像制作】


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/  #这一步很重要

 大数据平台一键安装OS【定制化OS镜像制作】

#修改/制作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

 大数据平台一键安装OS【定制化OS镜像制作】

#修改引导显示画面,引导显示画面的背景图片在安装光盘中的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

大数据平台一键安装OS【定制化OS镜像制作】

替换成

大数据平台一键安装OS【定制化OS镜像制作】


注意图片大小和名字必须跟原图片一样

大数据平台一键安装OS【定制化OS镜像制作】

#自定义的安装选项,并将这个选项设置为默认选项,并设置自定义的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 -


成果图:

大数据平台一键安装OS【定制化OS镜像制作】


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


#为了方便,也可以通过脚本来进行操作,具体的脚本如下:

#!/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目录。

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 p_w_picpath 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 

大数据平台一键安装OS【定制化OS镜像制作】

生成镜像命令:

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

效果图:

大数据平台一键安装OS【定制化OS镜像制作】


————————————————————————————————————————————————

如果你觉得作者的文章写的不错,请通过“支付宝”或“微信”奖励作者一些银子~

不需要太多(0.1、1元、3元、5元就可),不奖励就请点个赞吧,谢谢!

大数据平台一键安装OS【定制化OS镜像制作】


推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
author-avatar
树缝中间_324
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有