设为首页 收藏本站
查看: 265|回复: 0

[经验分享] anaconda:kickstart定制自动化安装镜像

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-4 09:11:52 | 显示全部楼层 |阅读模式
一、anaconda程序
   1.anaconda:CentOS系列的安装程序,基于内核启动来实现定制自动安装操作
         实现流程:
             --> 启动设备(光盘、u盘模拟出的第一个扇区、网络引导加载器)上的bootloader
             --> 启动设备中的kernel(initrd(rootfs))装载到内存中,不需做根切换,把内存当做硬盘
             --> anaconda当做sbin下的init,借助此程序完成定制自动化安装
   2.anaconda两个界面
      tui:基于cureses的文本配置窗口
      gui:图形界面
       注意:
            1)CentOS 7上光盘启动默认界面是图形界面,需要至少512MB内存空间;
            2)若需要显式指定启动TUI接口:向启动内核传递一个参数"text"即可;
      按下ESC键,之后会有一个boot提示符,在boot提示符之后输入:linux text
   3.CentOS光盘安装过程启动流程
        通过光盘启动引导安装时候,cdrom/isolinux/会当做启动分区,相当于一个boot分区,此过程一般位于引导设备,例如可通过光盘、U盘或网络等;后续的anacona及其安装用到的程序包等可以来自于程序包仓库,此仓库的位置可以为:本地光盘、本地硬盘、ftp server、http server、nfs server
        如果想手动指定安装仓库:按下ESC、在boot下输入linuxmethod
           [iyunv@localhost cdrom]# ll  /media/cdrom/isolinux/  
wKiom1aHklvygqARAATw0B5_oho838.jpg
        (1)MBR:cdrom/isolinux/boot.cat光盘上的引导加载器,相当于Bootloader
        (2)Stage2:isolinux/isolinux.bin,配置文件:isolinux/isolinux.cfg
       每个对应的菜单选项:[iyunv@localhostisolinux]# cat isolinux.cfg
   加载内核:isolinux/vmlinuz
  向内核传递参数:append  initrd=initrd.img
wKioL1aHko-DGKouAAEyXR4eGgY238.jpg
        (3)splash.png:启动装载时的背景图片
        (4)装载根文件系统,并启动anaconda
   4.anaconda的工作过程阶段
      (1)安装前配置阶段
  安装过程使用的语言 ---> 键盘类型---> 安装目标存储设备 ---> 设定主机名 ---> 配置网络接口 --->
时区 ---> 管理员密码---> 设定分区方式及MBR的安装位置 --->创建一个普通用户 ---> 选定要安装的程序
      (2)安装阶段
    在目标磁盘创建分区并执行格式化;
    将选定的程序包安装至目标位置;
   安装bootloader;
      (3)首次启动会要求配置 (此部分操作非必须完成)
             1)系统安装完成之后禁用防火墙操作
CentOS6:
#service iptables  stop
#chkconfig  iptables  off
CentOS7:
#systemctl  stop  firewalld.service
#systemctl  disable  firewalld.service
             2)系统安装完成后禁用SELinux:
    方法一:配置文件,编辑/etc/sysconfig/selinux或/etc/selinux/config文件,
                     修改SELINUX参数的值为下面其中之一,改为permissive或者disabled
wKioL1aHkpPRq72xAAIT-_QvP0I620.jpg
    方法二:命令立即生效方式:
            # getenforce
           # setenforce  0
             3)core dump核心转储,内核崩溃时将内存中所有数据创建映像文件保存在磁盘上可取出分析崩溃原因
    5.anaconda的配置方式:
      (1)交互式配置方式:基于图形化界面
      (2)kickstart文件配置文件方式:
  支持通过读取配置文件中事先定义好的配置项自动完成配置;遵循特定的语法格式
        在安装引导命令提示符boot下可进行输入选项来配置:
  1)text:文本安装方式
  2)method:手动指定使用的安装方法
  3)与网络相关的引导选项:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
   4)远程访问功能相关的引导选项:
vnc
vncpassword='PASSWORD'
  5)rescue:启动紧急救援模式:
  6)dd:装载额外驱动:



二、kickstart文件配置
   1.kickstart:在/root目录上有一个模板样式的anaconda-ks.cfg配置文件
       [iyunv@localhost /]# cat /root/anaconda-ks.cfg
wKiom1aHknORRxj_AADollzODMc362.jpg
   2.在boot命令行下安装引导时候可以通过不同方式加载ks.cfg文件
            ks:指明kickstart文件的位置;ks=*,*表示
DVDdrive: ks=cdrom:/PATH/TO/KICKSTART_FILE
HardDrive: ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
HTTPServer: ks=http://HOST[:PORT]/PATH/TO/KICKSTART_FILE
FTPServer: ks=ftp://HOST[:PORT]/PATH/TO/KICKSTART_FILE
HTTPSServer:  ks=https://HOST[:PORT]/PATH/TO/KICKSTART_FILE
   3.kickstart文件的格式
# Kickstart file  automatically generated by anaconda.

#version=DEVEL

install

url  --url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/
lang  en_US.UTF-8
keyboard us
network --onboot  yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted  $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49
# Reboot after  installation
reboot
firewall  --disabled
authconfig  --useshadow  --passalgo=sha512
selinux --disabled
timezone  Asia/Shanghai
bootloader  --location=mbr --driveorder=sda --append="crashkernel=auto  crashkernel=auto rhgb rhgb quiet quiet"
# 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
#clearpart --all
#part /boot  --fstype=ext4 --size=200
#part pv.008002  --size=61440
#volgroup vg0  --pesize=8192 pv.008002
#logvol /  --fstype=ext4 --name=root --vgname=vg0 --size=20480
#logvol swap  --name=swap --vgname=vg0 --size=2048
#logvol /usr  --fstype=ext4 --name=usr --vgname=vg0 --size=10240
#logvol /var  --fstype=ext4 --name=var --vgname=vg0 --size=20480
repo  --name="CentOS"   --baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/  --cost=100
安装或升级(可选upgrade)
指明安装时候使用的仓库
语言段、编码格式
设定键盘类型

管理员密码




认证方式配置
Selinux是否启动
指定时区
定义bootloader相关配置

[分区布局和使用方式]:



清除磁盘分区
放置分区、文件类型、大小
创建物理卷[pv.ID]
创建卷组
创建逻辑卷


指明安装时候使用的仓库
cost:开销
%packages
@Base
@Core
@base
@basic-desktop
@chinese-support
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
lftp
tree
%end
程序包段:




中文支持包












%post
echo -e 'Mage  Education Learning Services\nhttp://www.magedu.com\n' >> /etc/issue
sed -i  '1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g' /etc/inittab
[ ! -d /root/.ssh  ] && mkdir /root/.ssh && chmod og=--- /root/.ssh
cat >>  /root/.ssh/authorized_keys << EOF
ssh-rsa  AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9=  root@server.magelinux.com
EOF
ClientName=`ifconfig  eth0 | awk '/inet addr:/{print $2}' | awk -F. '{print $NF}'`
sed -i  "s@HOSTNAME=.*@HOSTNAME=client$ClientName.magelinux.com@g"  /etc/sysconfig/networks
# set hosts
echo  '172.16.0.1  server.magelinux.com  server' >> /etc/hosts
# yum repo
%end
脚本段:此处只有结束脚本段
     (1)命令段:指定各种安装前配置选项,如键盘类型等;分为必备命令、可选命令两类
          1)必备命令:
       authconfig:认证方式配置
  authconfig  --enableshadow  --passalgo=sha512
       bootloader:定义bootloader的安装位置及相关配置
  bootloader  --location=mbr  --driveorder=sda  --append="crashkernel=auto rhgbquiet"
       keyboard:设置键盘类型keyboard us
       lang:语言类型
                  part:分区布局;
  part  /boot --fstype=ext4  --size=500
  part  pv.008002 --size=51200
        分区相关的其它指令
  clearpart:清除分区
clearpart  --none --drives=sda:清空磁盘分区;
  volgroup:创建卷组
volgroup  myvg --pesize=4096  pv.008002
  logvol:创建逻辑卷
logvol  /home --fstype=ext4  --name=lv_home  --vgname=myvg --size=5120
       rootpw:管理员密码
  rootpw   --iscrypted $6$4Yh15kMGDWOPtbbW   $SGax4DsZwDAz4201.O97WvaqVJfHcISsSQEokZH054juNnoBmO/rmmA7H8ZsD08.fM.Z3Br/67Uffod1ZbE0s.
         生成加密密码的方式:
~]#openssl  passwd  -1 -salt `openssl rand -hex 4`
      timezone:时区timezone Asia/Shanghai
          2)可选命令:
    install  OR upgrade:安装或升级;
    text:安装界面类型,text为tui,默认为GUI
    network:配置网络接口
network  --onboot yes --device eth0  --bootprotodhcp  --noipv6
    firewall:防火墙
firewall  --disabled
    selinux:SELinux
selinux--disabled
    halt、poweroff或reboot:安装完成之后的行为;
    repo:指明安装时使用的repository;
repo  --name="CentOS"   --baseurl=cdrom:sr0  --cost=100
    url:指明安装时使用的repository,但为url格式;
url--url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/        
     (2)程序包段:
    指明要安装程序包,以及包组,也包括不安装的程序包;
   %packages:程序包开始标志
   @group_name:安装的包组名
   package:指明安装的包
   -package:指明不安装的包,但时依赖关系可能会装
   %end:程序包结束标志
   (3)脚本段:
%pre:安装前脚本
运行环境:运行安装介质上的微型Linux系统环境;
%post:安装后脚本
运行环境:安装完成的系统;



三、kickstart脚本配置文件创建
   1.安装system-config-kickstart程序包
         该程序包可以生成图形化界面来通过选项配置的方式后自动生成ks.cfg脚本
          # yum install  system-config-kickstart
wKioL1aHkpvRbhRGAAOoKBW8-78208.jpg
   2.打开system-config-kickstart程序包,配置ks.cfg文件
在此步骤可以选择导入/root/anaconda-ks.cfg作为模板来进行修改操作完成配置
# system-config-kickstart
wKiom1aHkoCy9qseAAKxnjmLiPI965.jpg
   3.检查ks.cfg脚本的语法错误:# ksvalidator
当有问题的时候会自动报错



四、anaconda启动光盘镜像创建和打包
注意:此处为简要介绍制作anaconda的一个流程简介操作,内核和部分配置文件在官方镜像信息上进行修改操作,非全部手动手动操作
   1.创建一个目录,放置所要打包制作镜像内容
#mkdir  /centos_xd
   2.isolinux制作
        1)挂载光盘镜像:# mount -r /dev/cdrom /media/cdrom
        2)复制光盘上isolinux至打包目录:# cp -r /media/cdrom/isolinux//centos_xd/
        3)复制ks.cfg至打包目录:# cp anaconda-ks.cfg  /centos_xd/
ks.cfg0文件可以直接放置在/centos_xd目录下,也可以放置在/centos_xd/isolinux/下
        4)给复制isolinux目录增加写权限 # chmod +w  *
        5)修改isolinux部分内容:
可以更改背景图片splah.jpg(只能使用14位色)
可以更改配置文件isolinux.cfg
… ...
   3.镜像打包制作
        ~]# mkisofs -R-J -T -v --no-emul-boot --boot-load-size 4   --boot-info-table -V "CentOS 6 x86_64boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o  /root/boot.iso   /centos_xd/
-V :显示的镜像名称
-c:指定模拟的MBR,引导加载器isolinux/boot.cat文件
-b:指明Stage2:isolinux/isolinux.bin
-o:创建完成后保存位置和文件名



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-159983-1-1.html 上篇帖子: Linux下IP地址配置 下篇帖子: CentOS 系统启动流程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表