系统自动化安装

系统自动化安装:实现同时部署多台操作系统,批量进行安装linux系统

CentOS系统安装

    系统启动流程:

      bootloader–>kernel(initaramfs)–>rootfs–>/sbin/init

anaconda:系统安装程序

    tui:基于图形库curses的文本窗口

    gui:图形窗口

MBR:boot.cat ====>类似于MBR

blob.png

stage2:isolinux/isolinux.bin(stage2)

blob.png

配置文件:/misc/cd/isolinux/isolinux.cfg 

blob.png

每个对应的菜单选项:

    加载内核:isolinuz/vmlinuz

    想内核传递参数:append initrd=initrd.img…..

装载根文件系统,并启动anaconda

    默认启动GUI接口

    若是显示指定使用TUI接口:向内核传递text参数即可(在光盘引导界面)

        1.按tab键,在后面增加text

        2.按ESC键:boot:linux text

blob.png

anaconda工作过程

Anaonda安装系统分成三个阶段:

安装前配置阶段

    安装过程使用的语言

    键盘类型

    安装目录存储设备

        Basic Storage:本地磁盘

        特殊设备:iSCSI    

    设定主机名

    配置网络接口

    时区

    管理员密码

    设定分区方式及MBR的安装位置

    创建一个普通用户

    选定要安装的程序包

安装阶段

    在目标磁盘创建分区,执行格式化操作

    将选定的程序包安装至目标位置

    安装bootloader和initramfs

首次启动

    iptables

    selinux    

    core dump    

系统安装

启动安装过程一般应位于引导设备;后续的anaconda及其安装用到的程序包等可来自下面几种方式

    本地光盘

    本地硬盘

    ftp server:yum repository    

    http server:yum repostory

    nfs server

如果想手动安装指定安装源    

    boot:linu askmethod

blob.png

根据以上选项,可选择不同的安装源

ancconda的配置方式:

    1.交互式配置方式

    2.通过读取事先给定的配置文件自动完成配置

        按特定语法给出的配置选项

            kickstart

安装boot引导选项:boot

text:文本安装方式

askmethod:手动指定使用的安装方法

与网络相关的引导选项:

    ip=IPADDR

    netmask=MASK

    gateway=GW

    dns=DNS_SERVER_IP

    ifname=NAME:MAC_ADDR

与远程访问功能相关的引导选项

    vnc

    vncpassword=“PASSWORD”

指明kickstart文件的位置: ks= 

    DVD drive: ks=cdrom:/ PATH/TO/KICKSTART_FILE

    Hard drive: ks=hd:device:/directory/ KICKSTART_FILE

    HTTP server: ks=http://host:port/path/to/ KICKSTART_FILE

    FTP server: ks=ftp://host:port/path/to/ KICKSTART_FILE

    HTTPS server: ks=https://host:port/path/to/ KICKSTART_FILE

    NFS server:ks=nfs:host :/ path/to/ KICKSTART_FILE

启动紧急救援模式:

    rescure

官方文档 :

    《Installation Guide》  

kickstart文件的格式

命令段:指明各种安装前配置,如键盘类型等;

程序包段:指明要安装的程序包组成或程序包,不安装的程序包等;

    %packages

    @group_name

    package

    -package

    %end

脚本段:

    %pre:安装前脚本

       运行环境:运行于安装介质上的微型Linux环境

    %post:安装后脚本

       运行环境:安装完成的系统

命令段中的命令:

    必备命令:

        authconfig:认证方式配置

            authconfig –useshadow –passalgo=sha512

        bootloader:bootloader的安装位置及相关位置

            bootloader –location=mbr –driveorder=sda 

            -append="crashkernel=auto  rhgb quiet"

        keyboard:设定键盘类型

        lang:语言类型

        part:创建分区

        rootpw:指明root密码

        timezone:时区

        

可选命令:

    install OR upgrade    

    text:文本安装界面

    network:网络

    firewall:防火墙

    selinux

    halt:关机

    poweroff:断电关机

    reboot:重启

    repo:

    user:安装完成后为系统创建新用户

     url:指明安装源

    key -skip:跳过安装号码,适用于rhel版本

创建kickstart文件的方式

  1. 直接手动编辑:                           

     依据某模板修改(家目录下的anaconda.cfg,安装系统时生成的,记录了安装时的选项)

[root@localhost ~]# cat anaconda-ks.cfg 
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
url --url=http://10.1.0.1/cobbler/ks_mirror/6/
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0
# 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"
# Clear the Master Boot Record
#zerombr
# 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://10.1.0.1/cobbler/ks_mirror/6/ --cost=100

%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
@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+iPlDwHY81md430yiNf9w== 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 '10.1.0.1  server.magedu.com server' >> /etc/hosts

# yum repo

%end
  1. 可使用创建工具:system-config-kickstart

     依据某模板修改并生成新配置

检查ks文件的语法错误:ksvalidator

    #ksvalidator /PATH/TO/KICKSTART_FILE

实例:

  1. 首先需要安装一个图形界面使用的命令:

yum install system-config-kickstart

2.切换到图形界面运行此命令,界面如下

blob.png

3.Basic Configuration 选项设置

blob.png

4.Installation Method设置(我选择网络安装)

blob.png

5.Boot Loader Options 选项设置(不弄那么复杂了)

blob.png

6.分区信息设置(按自己要求设置)

blob.png

7.网络设置

blob.png

8.Authentication设置

blob.png

9.firewall 防火墙设置

blob.png

10.Display Configuration设置

blob.png

11.Package Selection  包设置(选择需要的安装即可)

blob.png

12.开机前脚本没什么内容可写,所有选择了开机后脚本,设置如下

blob.png

13.保存至root命令下ks.cfg文件,内容如下

blob.png

[root@localhost ~]# cat ks.cfg 
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://10.1.0.1/cobbler/ks_mirror/6"
# Root password
rootpw --iscrypted $1$vvw.7lmZ$vHhd8RrB4hePFMNIPOPqe.
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=static --device=eth0 --gateway=10.1.0.1 --ip=10.1.252.135 --nameserver=8.8.8.8 --netmask=255.255.0.0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel 
# Disk partitioning information
part /boot --fstype="ext4" --size=500
part / --fstype="ext4" --size=100000
part swap --fstype="swap" --size=2048

%post
useradd qiuwei
echo 123456 |passwd --stdin qiuwei
echo  pingxiongshishabi >> /etc/issue
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo   /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/*.repo <<EOF
[base]
baseurl=http://10.1.0.1/cobbler/ks_mirror/6
gpgcheck=0
EOF
%end

%packages
@base
@basic-desktop
@ftp-server

%end

14.因为没有服务器,在我的另一个centos7系统上安装一个vsftpd,当作服务器

使用yum或者rpm都可以,装好后启动vsftpd服务

centos7

blob.png

15.将刚才生成的ks.cfg文件复制到centos7系统上

centos 6上执行命令

blob.png 

centos 7上的结果

blob.png

16.reboot重启,进入到光盘引导界面,键入ESC或者tab,

输入boot :linux ks=ftp://10.1.249.150/pub ==>(centos 7上的ks.cfg的路径 )

设置ks路径,然后回车运行,等待即可,画面如下,为防火墙没关

blob.png

在centos7上关闭防火墙,还是不可以,找了好久,应该是文件的权限有问题,之前的权限是600,我改成666了再次执行

就没问题,可以执行了,之后就是等待安装了,安装后会自动重启,

案例成功,当然因为模块方面不太了解,所有基本上是参照centos6上的boot目下的.config文件做的,等以后深入了解了,

可以自己做一个!

原创文章,作者:qiuwei,如若转载,请注明出处:http://www.178linux.com/47605

(0)
qiuweiqiuwei
上一篇 2016-09-22
下一篇 2016-09-22

相关推荐

  • DNS 正反向解析 主从配置

    我的环境是     192.168.1.130    主DNS      192.168.1.112    从DNS DNS 的安装包有bind bind-libs bind-utils 安…

    Linux干货 2016-01-05
  • N26—第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d ' ' -f 1 |sort -u l_cong root (unknown)   2、取出最后登录到当前系统的用户的相关信息。 [l_cong@localhost ~]$…

    Linux干货 2017-02-15
  • BT雷人的程序语言

    这个世界从来都不会缺少另类的东西,人类自然世界如此,计算机世界也一样。编程语言方面,看过本站《6个变态的C语言Hello World程序》的朋友们一定对BT和另类不会陌生,但那都是些小儿科,真正的BT和另类要是从语言级上来完成。让我们来看看其中一个比较另类的语言BrainFuck。看到这个程序语言的名字,请不要以为这是一个搞笑的语言,这是一个“严肃事情”,请…

    Linux干货 2015-04-03
  • N26第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。        who -i或-u 显示闲置时间, 若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串   &n…

    Linux干货 2017-01-16
  • Hadoop伪分布式模型

    # java -version # vim /etc/profile.d/java.sh export JAVA_HOME=/usr # yum install java-1.8.0-openjdk-devel # mkdir /bdapps # tar xf hadoop-2.7.4.tar.gz -C /bdapps/ # cd /bdapps # ln…

    2017-12-08
  • find命令

          find:实时查找工具,根据我们指定的内容或者条件在系统上进行实时查找,比locate在实际场景中用的多得多的多      具体用法:find   查找路径      查找条件         &n…

    Linux干货 2017-04-10

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-23 11:08

    作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。KICKSTART无人值守安装对我们来说是一个重要能力了。