CentOS 系統自動化安裝

CentOS 系統自動化安裝


概述:

    系統安裝過程

    配置anaconda

    自動化安裝系統


CentOS 系統安裝:

1.啟動流程:

bootloader–>kernel(initrd)–>rootfs–>anaconda(啟動安裝程序)

2.anaconda:(系統安裝程序)

 tui:基于cureses的文本配置窗口;

 gui:圖形界面

     Anaconda是RedHat、CentOS、Fedora等Linux的安裝管理程序。它可以提供文本、圖形等安裝管理方式,并支持Kickstart等腳本提供自動安裝的功能。此外,其還支持許多啟動參數,熟悉這些參數可為安裝帶來很多方便。該程序的功能是把位于光盤或其他源上的數據包,根據設置安裝到主機上。為實現該定制安裝,它提供一個定制界面,可以實現交互式界面供用戶選擇配置(如選擇語言,鍵盤,時區等信息)。Anaconda的大部分模塊用Python編寫,有少許的載入模塊用C編寫。

3.CentOS的安裝過程啟動流程:

 ★ MBR:boot.cat

 ★ Stage2:isolinux/isolinux.bin

        配置文件:isolinux/isolinux.cfg

        每個對應的菜單選項

                   加載內核:isolinux/vmlinuz

                   向內核傳遞參數:append initrd=initrd.img

        其實整個光盤安裝啟動過程就是依賴于isolinux這個目錄下的文件的

 ★裝載根文件系統,并啟動anaconda

       默認界面是圖形界面(GUI):512MB+內存空間

       若需要顯示指定啟動TUI接口:向啟動內核傳遞一個參數“text”即可

           (1)按tab鍵,在后面增加text

           (2)按ESC鍵:boot(提示符下): linux text

注意:

    上述內容一般位于引導設備,例如可通過光盤、U盤、或網絡等;后續的anaconda及其安裝用到的程序包等可以來自于程序包倉庫。

     此倉庫的位置可以為:

         本地光盤、本地硬盤、ftp server、http server、nfs server

     如果想手動指定安裝倉庫:按 ESC鍵:boot(提示符下):linux method

                  

 

wKiom1ffl2Oiw7muAAAcf19fBd0622.png

[root@centos7 isolinux]# less isolinux.cfg 
...
label linux
  menu label ^Install CentOS 7
  kernel vmlinuz  # 加載的內核
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet # 向內核傳遞的參數


anaconda 工作過程

安裝前配置階段,安裝階段,首次啟動


1)安裝前配置階段:

  • 安裝過程使用的語言;

  • 鍵盤類型;

  • 安裝目標存數設備;

           Basic Storage:本地磁盤

           Special Storage:ISCSI

  • 設定主機名;

  • 配置網絡接口;

  • 時區;

  • 管理員密碼;

  • 設定分區方式及MBR的安裝位置;

  • 創建一個普通用戶;

  • 選定要安裝的程序包;

2)安裝階段:

  • 在目標磁盤創建分區并執行格式化;

  • 將選定的程序包安裝至目標位置;

  • 安裝bootloader

3)重啟系統

  • iptables 防火墻 

  • selinux 

  • core dump 核心轉儲

anaconda 的配置方式:

  • 交互式配置方式;

  • 支持通過讀取配置文件中事先定義好的配置項自動完成配置;遵循特定的語法格式,此文件即為kickstart文件;


安裝引導選項:

boot:

  •  text:文本安裝方式;

  •  method:手動指定使用安裝方法;

  •  與網絡相關的引導選項:

         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

  •  啟動救援模式:

           rescue

  •  裝載額外驅動:

            dd

kickstart文件的格式

  • 命令段:指定各種安裝前的配置選項,如鍵盤類型等;

        必備命令

            可選命令

  • 程序包段:指明要安裝程序包,以及包組,也包括不安裝的程序包;

        %packages :指明程序包段的開始;

            @group_name:安裝一個包組;

            package:安裝一個程序包;

            -package :指明不安裝的程序包;

            %end :指明程序包段的結尾;

  • 腳本段

         %pre:安裝前腳本

                  運行環境:運行于安裝介質上的微型Linux環境

            %post:安裝后腳本

                  運行環境:安裝完成的系統;


1)命令段中的必備命令

  • authconfig: 認證方式配置;

       authconfig–useshadow–passalgo=sha512

  • bootloader:bootloader的安裝位置及相關配置;

       bootloader –location=mbr –driveorder=sda –append="crashkernel=auto rhgb quiet"

  • keyboard: 設定鍵盤類型;

  • lang: 語言類型; lang zh_CN.UTF-8

  • part: 分區布局;

      part /boot –fstype=ext4 –size=200

      part pv.008002 –size=61440

      補充:分區相關的其他命令:

        clrarpart:清除分區

                 clearpart –none –drives=sda:清空磁盤分區

        volgroup:創建卷組

                 volgroup vg0 –pesize=8192 pv.008002

           logvol:創建邏輯卷

                 logvol / –fstype=ext4 –name=root –vgname=vg0 –size=20480

  • rootpw: 指明root的密碼;

  • timezone: 時區  timezone Asia/Shanghai

可選命令:

  • install OR upgrade;安裝或升級

  • text: 安裝界面類型,text為TUL,默認為GUI

  • network:配置網絡接口;

  • firewall:防火墻

     系統安裝完成之后禁用防火墻

          CentOS 6 :

         # service iptables stop

              # chkconfig iptables off

       CentOS 7:

              # systemctl stop firewalld.service

              # systemctl disables firewalld.service

  • selinux:SElinux

      系統安裝完成后禁用SElinux:

            編輯/etc/sysconfig/selinux或/etc/selinux/config文件,修改SELINUX參         數的值為下面其中參數之一:permisslve,disabled

         立即生效:

                 getenforce

                 setenforce 0       

  • halt、poweroff、reboot:安裝完成之后的行為;

  • repo:安裝時使用的rpository

  • user:安裝完成后為系統創建新用戶

  • url: 指明安裝時使用的repository,但是為url格式;

  • key –skip 跳過安裝號碼,適用于rhel版本

CentOS 6 中的 anaconda-ks.cfg

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

#version=DEVEL
install      # 安裝
url --url=    # 指明安裝時使用的倉庫 
lang en_US.UTF-8 # 指明使用的語言
keyboard us    # 指明使用的鍵盤
network --onboot yes --device eth0 --bootproto dhcp --noipv6 # 配置網絡接口
rootpw  --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0      # 指明root密碼 
# Reboot after installation
reboot          # 安裝完成之后的行為
firewall --disabled   # 防火墻
authconfig --useshadow  --passalgo=sha512 # 認證方式配置
selinux --disabled      # SElinux
timezone Asia/Shanghai    # 時區
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet"  # bootloader的安裝位置及相關配置
# 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


定制kickstart文件的方式:

(1)直接手動編輯;

      依據某模板修改

(2)可使用創建工具:

        # yum install system-config-kickstart

    # system-config-kickstart

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

(3)檢查ks文件的語法錯誤:ksvalidator

        # ksvalidator /PATH/TO/KICKSTART_FILE

利用創建工具,操作如下:

[root@CentOS6 ~]# system-config-kickstart &  # 運行命令,會出現如下編輯界

wKioL1fiKXKActsRAAEeSLG_UEU862.png

  2)我們可以在編輯器上進行編輯,選擇分區,網絡,等配置,也可以導入模板文件(anaconda)在此基礎上修改配置,并創建文件名,保存至root下退出;

   需要注意這里在分區時一定選擇清除主引導分區,刪除所有分區和初始化磁盤卷標,要不然在自動化安裝時會提醒你是否清除數據

wKioL1fiKNfRB_FKAAEL7WR0478911.png

3)查看root下生成的文件,并檢查語法錯誤,如下:

[root@CentOS6 ~]#  ls
anaconda-ks.cfg  bin  Desktop  Documents  Downloads  f1  ks.cfg # 生成的文件  Music  Pictures  Public  Templates  Videos
[root@CentOS6 ~]# ksvalidator ks.cfg  # 檢查語法錯誤,有錯誤會報錯

制作引導光盤


1)創建引導光盤

  • # cp/media/cdrom/isolinux/ /tmp/myiso/

  • # vi /tmp/myiso/isolinux/isolinux.cfg

        initrd=initrd.imgtext ks=cdrom:/myks.cfg

  • # cp/root/myks.cfg /tmp/myiso/

  • # cd /tmp

  • # mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS 6.6 x86_64 boot" -b isolinux/isolinux.bin-c isolinux/boot.cat -o /root/boot.iso myiso/

演示步驟如下:

[root@CentOS6 ~]# mkdir  /tmp/myiso/
[root@CentOS6 ~]# cp -a /misc/cd/isolinux/ /tmp/myiso/ # 復制光盤下的isolinux到/tmp下
[root@CentOS6 ~]# cd /tmp/myiso/isolinux/
[root@CentOS6 isolinux]# ll  # 可以看到,因為是光盤文件所以都是只讀的
total 44436
-r--r--r-- 1 root root     2048 Sep 13 12:11 boot.cat  
-r--r--r-- 1 root root       84 Sep 13 12:11 boot.msg
-r--r--r-- 1 root root      321 Sep 13 12:11 grub.conf
-r--r--r-- 1 root root 40688737 Sep 13 12:11 initrd.img  # 文件驅動
-r--r--r-- 1 root root    24576 Sep 13 12:11 isolinux.bin
-r--r--r-- 1 root root      923 Sep 13 12:11 isolinux.cfg  # 配置文件
-r--r--r-- 1 root root   183012 Sep 13 12:11 memtest
-r--r--r-- 1 root root   151230 Sep 13 12:11 splash.jpg  # 為背景圖
-r--r--r-- 1 root root     2215 Sep 13 12:11 TRANS.TBL
-r--r--r-- 1 root root   163728 Sep 13 12:11 vesamenu.c32
-r-xr-xr-x 1 root root  4264528 Sep 13 12:11 vmlinuz  # 內核文件
[root@CentOS6 isolinux]# chmod u+w isolinux.cfg  # 添加寫權限,進行修改
[root@CentOS6 isolinux]# vim isolinux.cfg

wKioL1fiKu_wzpNwAACgPKhfNwk452.png

[root@CentOS6 tmp]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.8 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/  # 注意一定退出myiso目錄,創建光盤鏡像,指明路徑等信息,并在/root下生成一個boot.iso鏡像
[root@CentOS6 ~]# ls
anaconda-ks.cfg  bin  boot.iso # 生成的鏡像文件  Desktop  Documents  Downloads  f1  Music  myks.cfg  Pictures  Public  Templates  Videos

新建一個虛擬機,用創建好的光盤鏡像在虛擬機上重新引導安裝,如下:

wKiom1fiLtOjTkjIAAcWi7QFsAk951.png

 成功安裝:

wKiom1fiMHXj-JOaAACfbFvp1OU399.gif

原創文章,作者:zhumengxiaotao,如若轉載,請注明出處:http://www.www58058.com/48347

(0)
zhumengxiaotaozhumengxiaotao
上一篇 2016-09-21
下一篇 2016-09-21

相關推薦

  • 基于haproxy實現wordpress動靜分離

    環境:centos 6.8 注:此處省略對于各服務器的IP配置。 一:圖示講解      用戶訪問vip,通過haproxy代理得到服務器的資源。此架構下基于keepalived對haproxy做負載均衡(此種兩種軟件裝在同一臺服務器),基于haproxy對Nginx和apache做負載均衡,Nginx和Apache使用共享存儲…

    2017-05-18
  • N26-第一周作業

    1.    計算機由以下幾個部分組成:         a. CPU:中央處理器;主要由運算器和控制器組成            …

    Linux干貨 2017-01-07
  • linux進程管理

    進程概念 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、 安全功能等 Process:  運行中的程序的一個 副本,是被 載入內存的一個指令集合     進程ID (Process ID,PID)號碼被用來標記各個進程  &…

    Linux干貨 2016-09-12
  • 8月5日課堂筆記

    bash基礎及shell編程初步 bash的特性及bash腳本編程初步    操作系統硬件, 內核把底層硬件的復雜性給隱藏起來,統一輸出為一種系統調用,系統調用非常底層,把系統調用封裝成了庫。讓程序運行起來。用戶在創建時有一個默認shell。終點設備用來當做標準輸入和輸出。  要想與主機交互,需要一個【終端】,附著在終端接口程序:  &n…

    Linux干貨 2016-08-07
  • Linux下的進程調度與作業管理

    Linux下的進程調度與作業管理 一、概述 1.1 進程的相關概念: 通過前面的幾個章節,我們幾乎已經學習了很多的linux的基礎,這個章節我們講一下linux下的進程管理,就像windows 下的進程一樣,我們知道windows 下有一個任務管理器,專門用來管理進程,我們首先看一下windows 的任務管理器: 從這2個圖我們可以看出,windows 下的…

    Linux干貨 2016-10-17
  • Linux基礎知識——網絡管理基礎

    OSI七層模型與TCP/IP模型的區別 寫一個腳本,使用ping命令探測172.168.250.1-172.168.250.254之間的所有主機的在線狀態,在線的用綠色表示,不在線的使用紅色表示 #!/bin/bash for ((IP=1;IP<=254;IP++))     do  &nb…

    Linux干貨 2016-12-11
欧美性久久久久