CentOS系统安装

centos系统安装

       安装程序:anaconda,Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序的功能是把位于光盘或其他源上的数据包,根据设置安装到主机上。为实现该定制安装,它提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)。Anaconda的大部分模块用Python编写,有少许的载入模块用C编写。anaconda是要运行到内核之上的,因此,我们要启动安装过程,假如是用光盘启动也好还是其他什么也好,都要启动anaconda才能完成centos和rehl系列系统的安装,而这个程序是需要基于内核运行的,因此我们在安装光盘上,在任何地方也罢,要想启动anaconda得先启动内核,而要向启动内核的话,我们说过,内核可能在光盘上也可能在硬盘上,他不可能自己凭空的装到内存中去并启动起来的。我们也知道要想启动内核得先启动Bootloader,所有说我们真正要启动安装过程完成安装操作的话,第一步就是要去加载anaconda,以提供一个安装配置界面,但启动anaconda第一步要加载某一个启动设备上提供的bootloader 这个Bootloader安装完成以后,我们要先给其提供一个配置文件,让其能够加载指定的内核,这个bootloder有可能在光盘上对linux而言就是一个grub或者是其他专用的安装时启动安装界面的bootlader.(假设安装介质就是在光盘上的话)于是这个bootloader就去装载光盘上某个路径下的kernel这个kernel其实就是vmlinuz,kernel可能要借助与initrd把内存中的一段空间当作磁盘来使用直接运行这个操作系统。(这个initrd(initrd当中有rootfs)也是特质的他有我们操作系统安装过程当中所需要用到的各种基本工具),就这这样操作系统启动完成了,他甚至还给我们提供一个shell界面,这个shell界面是在initrd中提供的,不过呢,肯定他不会让我们在initrd当中基于命令行的方式来安装的,然后他去启动一个叫做anaconda的应用程序(把anaconda就当作/sbin/init了,要启动运行的第一个程序,)当然anaconda不需要去创建子进程了,我们借助与anaconda就能完成系统安装,可以把anaconda想象成用户空间的一个应用程序,但是这个程序并不在我们光盘的某个路径下,他可以从我们光盘上的某个程序包中加载到并启动之。因此无论我们基于u盘安装还是光盘安装还是网络安装,第一步就要先去启动一个bootloader,这个bootloadr有可能在u盘的第一个扇区中甚至是一个通过网络加载的一个启动加载器,而后我们通过这个引导加载器获取一个内核文件,获取一个initrd并基于他们再加载到anaconda,从而能启动安装程序。所以安装程序启动起来以后就剩下安装过程了 bootkoader –> kernel(initrd(rootfs)) –> anaconda

对与anaconda这个安装程序来讲,他有两个界面; 

第一个界面叫做tui:基于cureses的文本配置窗口 

第二个界面叫做gui:图形界面 因此安装过程就有了两种风格,而anaconda本身又把整个安装过程大体上定义成了两个阶段。阶段详细信息以后再说

centos的安装过程启动流程:

    第一步读取mbr:boot.cat
    第二阶段stage2:isolinux/isolinux.bin
        配置文件:isolinunx/isolinux.cfg
        配置文件当中每个对应的菜单选项:
            加载内核:isolinux/vmlinuz
            向内核传递参数:append initrd=init.img
        所以说整个系统安装过程只是依赖与isolinux这个目录中的文件而已,一旦这里启动完成,接着就进入下一步启动的安装界面
        装载根文件系统 ,并启动anaconda ,然后anconda启动一个安装界面
            默认界面为图形界面,前提是内存足够大:512MB+内存空间;
            如需要显式指定启动tui接口:向启动内核传递一个参数“text”即可;那么如何向内核传递参数呢,如下:
                ESC,
                    boot:linux text
        注意:是上述内容一般位于引导设备,例如可通过光盘、U盘或网络等;后续的anaconda及其安装用到的程序包等可以来自于程序包仓库,此仓库的位置可以为;
            本地光盘
            本地硬盘
            ftp server
            http server
            nfs server 
        安装过程当中,如果向手动指定安装源;敲ESC键,在ESC键后出现的boot提示符下,键入Linux method:这表示提示用户用什么方式来安装
            ESC
                boot:linux method

anaconda的工作过程:两个阶段

安装前配置阶段
    安装过程使用的语言;
    键盘类型
    安装目标存储设备
        Basuc Storage:本地磁盘
        Special Storage(特殊存储):iSCSI 通常是一个网络硬盘
    设定主机名
    配置网络接口
    时区
    管理员密码
    设定分区方式及MBR的安装位置;
    创建一个普通用户;
    选定要安装的程序包;
    (如果有需要的话有可能运行安装前脚本)
安装阶段
    在目标磁盘创建分区并进行格式化;
    将选定的程序包安装至目标位置;
    安装bootloader;
    (如果有需要的话有可能运行安装后脚本)
首次启动(不属于anaconda):需要配置几个功能;
    iptables:是否启动防火墙,对于刚学习linux的同学请关闭它
    selinux:也要求关掉
    core dump(核心转储):配置核心转储功能可以保证在某一时刻,内核崩溃时,
    它能够把内核崩溃那一刻内存中的所有数据给创建成一个映像文件保存在磁盘上。
    并被将其数据拿出来在其他系统上分析在上一次内核崩溃的原因,以确定下次配置时绕开这个问题,
    而且对内存大小要求不得小于2G。当然前提是有核心转储这个映像文件的分析能力。

anaconda的配置方式:有两种

(1)交互式配置方式;
(2)支持通过读取配置文件中定义好的配置项自动完成配置;这些配置项是按照特点语法给出的;遵循特定的语法格式,此文件即为kickstart

安装引导选项:

boot:在boot目录下可以键入的选项有;
    text:文本安装方式
    method:手动指定使用的安装方法
    与网络相关的引导选项
        ip=IPADDR:静态指明网卡设备的ip地址
        netmask=MASK
        gateway=GW
        dns=DNS_SERVER_IP
    远程访问功能相关的引导选项:
        vnc
        vncpasswd='PASSWORD'
    启动紧急救援模式:
        rescue
    装载额外驱动:
        dd
    www.redhat.com/docs,《installation guide》
ks:指明kickstart文件的位置,来告诉nanconda程序到哪加载kickstart文件;加载方式如下                                       
    ks=
        如果kickstart在光盘上就使用 ks=cdrom:/PATH/TO/KICKSTART_FILE
        如果kickstart在硬盘上就使用 ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
        如果kickstart在HTTP Service上就使用 ks=httpd://HOST[:PORT]/PATH/TO/KICKSTART_FILE
        如果kickstart在FTP Service上就使用 ks=ftp://HOST[:PORT]/PATH/TO/KICKSTART_FILE
        如果kickstart在HTTPS Service上就使用 ks=httpds://HOST[:PORT]/PATH/TO/KICKSTART_FILE

       注意:在我们系统安装完成之后,在家目录中会自动生成一个名为anaconda-ks-cfg文件,这个文件就是kickstarta文件,我们可以把这个文件当模版,借助于它来定义一个我们自己所需要安装系统所使用的kickstart文件

kickstart文件格式

这个文件大体上由三部分组成;如下
命令段:
    指定各种安装前配置选项,如键盘类型等;
    必备命令
        authconfig:认证方式配置
            authconfig --erableshadow --passalgo=sha512
        bootloadet:定义bootloader的安装位置及相关配置
            bootloader --location=mbr --driveorder=sda
             --append="crashkernel=auto rhgb quiet"
        keyboadrd:设置键盘类型
            keyboard us
        lang:语言类型
            lang en_US.UTF-8
        part:分区布局
            part /boot --fstype=ext4 --size=200
            part pv.008002 --size=61440
        rootpw:管理员密码
            rootpw  --iscrypted $6$CGsqab6d$Cd.PnnW
        timezone:指定时区
            timezone Asia/shanghai                          

        补充:分区相关的其他命令
            clearpart:清除分区
                clearpart --all
            volgroup:创建卷组
                volgroup vg0 --pesize=8192 pv.008002
            logvol:创建逻辑卷
                logvol / --fstype=ext4 --name=root 
                        --vgname=vg0 --size=20480


    可选命令
        install OR upgtade:安装或升级;
        text:安装界面类型,text为tui,默认为gui
        netwotk:配置网络接口
            network --onboot yes --device eth0 --bootproto dhcp --noipv6
        firewall:防火墙
            firewall --disabled
        selinux:基于内核的安全访问加固策略库
            selinux --disabled
        halt,poweroff或reboot:安装完成之后的行为;
        repo:安装时使用的repository
            repo --name="CentOS"  --baseurl=cdrom:sr0--cost=100         
        url:指明安装时使用的repository,但为url格式;
            url --url==http://10.1.0.1/cobbler/ks_mirror/6/ 


        系统安装完成之后禁用防火墙:
            Centos 6:
                # service iptables stop
                # chkconfig iptables off
            Centos 7:
                # system stop firewalld.service
                # system disablr fitrwalld.service

        系统安装完成之后禁用selinux
                编辑/etc/sysconfig/selinux或/etc/selinux/sysconfig文件,修改SELINUX参数的值为下面其中之一:
                    permissive
                    disabled
                立即生效:
                    # getenforce
                    # setenfore 0



程序包段:
    指明要安装程序包,以及包组,也包括不安装的程序包
    以%packages开头以%end结尾,中间的都表示程序包
    %packages
    @group_name:前面加一个@:这表示安装一个程序包
    package:没有@表示单个程序包
    -package:表示明确指明不安装的程序包,
             有可能为了解决依赖关系会自动被装上
    %end

脚本段:
    %pre:安装前脚本
        运行环境:运行安装介质上的微型linux系统环境,命令有限
    %post:安装后脚本
        运行环境:安装完成的系统

如何定制kickstart文件

# yum install system-config-kickstart
# system-config-kickstart

检查语法错误
    # ksvalidator KICKSTART_FILE

示例:生成kickstart文件

1)安装生成工具 yum install system-config-kickstart

2)运行此工具(依赖图形界面) systrm-config-kickstart (教室网络环境)依次如下设置 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装 CentOS系统安装

最后点击左上角保存至家目录,保存完之后运行ksvalidator ks.cfg检查脚本是否有语法错误。

3)创建一个新的虚拟机,要求虚拟机桥接网络模式,光盘启动

CentOS系统安装

4)敲ESC,在boot命令行键入以下内容,敲回车即开始安装 此处为一个虚拟机ftp服务地址

CentOS系统安装

示例:制作光盘引导镜像

1)首先需要个kickstart文件,我这里先下载一个kickstart文件。注意下载的文件检查其网络安装url是否正确

CentOS系统安装

2)创建一个新目录

]# mkdir myboot

3)将已经挂载好的光盘中的isolinux整个目录复制到新目录中

]# cp -r /mnt/isolinux/ ./

CentOS系统安装

4)由于此文件是从光盘复制过来是只读的,所以需要先改可写。

CentOS系统安装

改了之后所有的文件都可以根据自己的需要进行修改了,这里修改isolinux.cfg leabel一项

CentOS系统安装

5)复制刚才下载的kickstart文件到myboot目录

CentOS系统安装

6)创建ISO文件系统,执行mkisofs命令,需要退出myboot目录

CentOS系统安装CentOS系统安装

在当前目录可看到生成一个名为boot.iso的文件

CentOS系统安装

7)将boot.iso镜像拷贝到物理机上,然后创建一个新的虚拟机,使用boot.iso做光盘启动,指定kickstart文件,kickstart文件中是指定通网络安装,因为此时内核还没有启动网络功能,并不会自己配置网络,所以要自己配置一个ip地址。敲回车开始安装

CentOS系统安装

注意:如果需要在安装菜单界面无需指明kickstart文件的话,需要在有dhcp服务的网络环境下安装的时候在上面第四步骤更改如下参数

CentOS系统安装

而且需要kickstart文件指明网络配置如下参数

CentOS系统安装

原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/48722

(1)
M20-1马星M20-1马星
上一篇 2016-09-23
下一篇 2016-09-23

相关推荐

  • 马哥linux0811作业内容

    总结位置变量$1,$2.. $10,$11…MAX 位置变量的含义分别就是代表第几个参数,$1就是脚本运行的第一个参数.$2就是第二个.以此类推.直到最后. $*,$@,$# 区别 特殊变量: $0 : 表示命令本身 $#:传递给命令的参数个数 $*:传递给脚本的所有参数(所有参数是一个整体的字符串) $@:传递给脚本的所有参数(各个参数都是独立…

    Linux干货 2016-08-19
  • 马哥教育网络班21期-第十周课程练习

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)  a,post:加电自检,通电搜索并检查物理设备的状态  b,bootsequeence(BIOS):选择启动顺序  c,bootloader(MBR):加载主引导程序 bootloader,硬盘分区表到内存  d,加载内核kernel &nb…

    Linux干货 2016-10-24
  • shell脚本进阶

    一、流程控制 过程式编程语言:顺序执行、选择执行、循环执行 1.1 条件语句 1.1.1 if条件选择语句  选择执行: (注意: if 语句可嵌套) v  单分支:if  判断条件;then           条件为真的分支代…

    Linux干货 2016-11-27
  • LVM逻辑卷管理器详解

    一、LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。…

    Linux干货 2016-09-05
  • 马哥教育网络班21期-第三周课程练习

    第三周课程练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -f1 -d' ' | uniq  root 2、取出最后登录到当前系统的用…

    Linux干货 2016-07-12
  • Linux基础之shell脚本编程(二)

    1、写一个脚本,完成以下功能    (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;    (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;    (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串; &nb…

    Linux干货 2016-11-17