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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介:

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

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


wKiom1lUq-rybswFAAAbiFPjVDk983.png-wh_50


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

 wKiom1lUrlCyRN_LAAA3mr8Tr6M976.png-wh_50

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

 wKioL1lUtb_Q2LJeAABdMMEaI8A692.png

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

wKiom1lUr1jhzaweAAYH_yIVg00571.png-wh_50

替换成

wKiom1lUr2yyTEAzAAhZke3clCw036.png


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

wKiom1lUr9ygtAD5AAAY-S77u3g089.png

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


成果图:

wKioL1lUsErzzDCLAASMp_1kOBw995.png


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 

wKioL1lUtkny4SxAAABYygylSQA252.png

生成镜像命令:

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

效果图:

wKiom1lUswiyIfJyAAAJ1wkTnKI018.png


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

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

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

wKioL1lxkqSjcIjQAAJSjEpmecw212.png



本文转自 cs312779641 51CTO博客,原文链接:http://blog.51cto.com/chenhao6/1943183

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
4月前
|
关系型数据库 MySQL 数据库
【Mac os系统】安装MySQL数据库
本文详细介绍了在Mac OS系统上安装MySQL数据库的步骤,包括下载、安装、配置环境变量、启动服务、授权设置以及解决常见问题,并提供了一些常用的MySQL命令。
272 0
【Mac os系统】安装MySQL数据库
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
59 4
|
1月前
|
存储 Unix Linux
哪些工具可以烧录树莓派的操作系统镜像
除了常见的烧录工具,树莓派操作系统镜像还可以通过以下工具烧录: 1. **Etcher**:树莓派官方推荐的图形界面工具,支持多操作系统,使用简单,具备严格的设备验证和校验机制。 2. **dd 命令**:适用于 Linux 和类 Unix 系统,功能强大但需谨慎使用,适合熟悉命令行的用户。 3. **BalenaEtcher**:与 Etcher 类似,跨平台且操作简单,确保烧录过程的准确性和安全性。 初学者建议使用 Etcher 或 BalenaEtcher,熟悉命令行的用户可以选择 dd 命令。
|
1月前
|
存储
烧录树莓派操作系统镜像的详细操作步骤
本文介绍了在树莓派上烧录操作系统镜像的详细步骤,包括准备工具、下载系统镜像、使用烧录软件等关键环节,帮助用户顺利完成树莓派的初始化配置。
|
2月前
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
207 0
Mac os 安装 nginx 教程(success)
|
3月前
|
Windows
Windows操作系统部署安装Kerberos客户端
详细介绍了在Windows操作系统上部署安装Kerberos客户端的完整过程,包括下载安装包、安装步骤、自定义安装路径、修改环境变量、配置hosts文件和Kerberos配置文件,以及安装后的验证步骤。
423 3
Windows操作系统部署安装Kerberos客户端
|
3月前
|
Ubuntu 网络安全 开发工具
Ubuntu19.04的安装过程详解以及操作系统初始化配置
本文详细介绍了Ubuntu 19.04操作系统的安装过程、初始化配置、网络设置、软件源配置、SSH远程登录以及终端显示设置。
120 1
Ubuntu19.04的安装过程详解以及操作系统初始化配置
|
4月前
|
编解码 Linux 虚拟化
超详细VMware虚拟机安装Win10操作系统过程图解
这篇文章提供了一个详细的VMware虚拟机安装Windows 10操作系统的图解教程,包括了从创建虚拟机到安装操作系统的全过程,以及安装后的一些基本设置,如屏幕分辨率调整等。作者还提到了后续会分享关于磁盘分区的创建过程。
超详细VMware虚拟机安装Win10操作系统过程图解
|
4月前
|
Ubuntu 安全 iOS开发
Kylin操作系统安装及使用指南
Kylin操作系统安装及使用指南
|
4月前
|
Linux Docker 容器
在CentOS操作系统上使用yum安装/使用/卸载Docker容器引擎
在CentOS操作系统上安装、配置、使用和卸载Docker容器引擎的详细步骤,包括配置Docker镜像加速的方法。
501 0
下一篇
DataWorks