首页 > 代码库 > #27 Linux系统安装:centos系

#27 Linux系统安装:centos系

Linux系统安装:centos系

  

  post --> bootsequence(BIOS)--> bootLoader(grub -->1.5 stage --> 2nd stage) --> kernel(devtmpfs) --> [ ramdisk (dev,proc,sys) -->] rootfs --> /sbin/init(sysV init,upstart init,systemd)  


对于所安装的centos操作系统来说,其一级子目录中,有一些绝对不能单独分区,有一些可以单独分区;


  绝对不能分区:bin,sbin,lib,lib64

  建立单独分区:boot,home,var,usr


安装Linux系统:

  /boot

  swap

  /

  /home

  /var

  /usr


磁盘分区规划:

  启动分区

  根分区

  swap


规划文件系统:

  /sbin/init,/sbin/systemd

  所有的应用程序存放的路径                                                                                       应用程序所依赖的库文件存放的路径

  应用程序所依赖的配置文件存放的路径


centos系/RHEL系操作系统的安装程序:anaconda


在安装操作系统的过程中,系统的启动流程:

  post --> BootLoader --> kernel --> initrd --> rootfs --> anaconda


  anaconda给我们提供了两种操作界面:

    TUI:基于curses的文件配置窗口;

    GUI:图形界面;

    CLI:命令行界面;


  以光盘为例,centos系统的安装启动流程:

    1.post

    2.读取MBR,boot.cat,就是光盘的BootLoader;/isolinux/boot.cat

    3.stage2:/isolinux/isoinux.bin 

      配置文件:/isolinux/isolinux.cfg

        label linux

          标签名称,可以用来引用下述所有命令的通用名称;

        menu label ^Install or upgrade an existing system

          菜单选项的具体内容及对应的热键;

        menu default

          将此菜单项作为默认菜单项;

        kernel vmlinuz

          指定内核文件名称

        append initrd=initrd.img

          向内核传递附加参数,常用的参数有:

            initrd=initrd.img

            text:从文本界面启动

            method:手动选择安装方式

            ip=ADDRESS

            netmask=MASK

            gateway=GW

            dns=DNS_SERVER

            rescue:启动紧急救援模式

            dd:使用kickstart启动无人值守安装,指明kickstart配置文件的所在位置:

              光盘上:ks=cdrom:/path/to/kickstart_file

              本地硬盘:ks=h:/device/path/to/kickstart_file

              某个远程web站点:ks=http://host[:port]/path/to/kickstart_file

              某个远程FTP站点:ks=http://[username@]host[:port]/path/to/kickstart_file

              某个远程安全web站点:ks=http://host[:port]/path/to/kickstart_file


    4.装载rootfs,并启动anaconda

      注意:如果内存不够512M,则anaconda是以文本界面启动的;如果内存大于512M,anaconda默认以图形界面启动;


      “ECS”键 --> boot:Linux text


    注意:上述的所有内容一般位于引导设备,而后续的anaconda及其他安装时所用的程序包或程序包组等可来源于yum仓库,yum仓库的位置:

      本地光盘

      本地硬盘

      FTP服务器

      HTTP服务器

      NFS服务器


      如果想手动指定程序包安装源:


      “ECS”键 --> boot:Linux method


anaconda的工作过程:

  安装前的准备配置阶段:

  1.安装过程中使用的语言:简体中文;

  2.键盘布局类型:美国英语式;

  3.系统安装的目标存储设备;

    basic storage,本地磁盘;

    special storage,网络存储,iscsi,NAS,SAN,...;

  4.设置主机名称;

  5.配置网络接口;

  6.选择时区;

  7.管理员密码;

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

  9.选择要安装的程序包或程序包组;

  

  安装阶段:

    1.有可能运行某些预安装脚本,完成初始化工作;

    2.根据准备阶段规划的分区格式进行分区创建并执行格式化安装文件系统并挂载所有文件系统至指定挂载点;

    3.将选定的程序包或程序包组安装至目标位置;

    4.安装BootLoader至MBR及boot分区中;

    5.制作ramdisk文件;

    6.如果有必要,可能会运行安装后脚本;


  首次启动:

    1.选择许可证信息;

    2.创建普通用户;

    3.配置内核核心转储(kdump,core dump),如果内存小于2GB,kdump不开启;

      当某一时刻,内核核心崩溃时,kdump会将内核崩溃时内存中的所有数据创建成一个映像文件保存到磁盘上;通过分析此文件的内容,查找出内核崩溃的直接或间接原因;


       1.是否配置iptables防火墙;初学者建议关闭;

       2.是否配置selinux安全机制的启动,初学者建议关闭;


kickstart文件的格式:

  命令段:指明各种安装前的配置;

    必备命令:

      authconfig:认证方式的配置

        authconfig --useshadow --passalgo=sha512

      bootloader:定义bootloader的安装位置和相关配置选项

        bootloader --loaction=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

      keyboard:设置键盘的类型

        keyboard us

      lang:安装过程中的语言类型

        lang zh_CN.UTF-8

      part:分区布局及分区使用方式

        part /boot --fstype=ext4 --size=200

        part swap --size=2048

        part pv_name --size=51200 --grow

      clearpart:清除分区

        clearpart --none --drives=sda

      volgroup:创建卷组的命令

        vo了group vg_name --pesize= 8192 pv_name

      logvol:穿件逻辑卷的命令

        logvol /home --fstype=ext4 --name=lv_home --vgname=vg_name --size=10240

        logvol /var --fstype=ext4 --name=lv_home --vgname=vg_name --size=10240

        logvol /usr --fstype=ext4 --name=lv_home --vgname=vg_name --size=10240

      rootpw:指明超级用户root的密码

        rootpw --iscrypted $6$salt$encrypted_pass

      timezone:时区

        timezone Asia/shanghai

    可选择命令:    

      install:全新安装操作系统

      upgrade:升级安装操作系统

      text:使用文本界面安装操作系统,默认是GUI;

      network:配置网络接口

        network --onboot yes --device eth0 --bootproto static --ip 172.16.72.1 --netmask 255.255.0.0 --noipv6 --hostname a.link.com

      firewall:防火墙设置

        firewall:--disabled

        firewall:--service=ssh

      selinux:selinux的设置

        selinux --disabled

        selinux --enforcing


        题外话:

          如果计划在已经开启防火墙和selinux的强制模式时,可以通过这样的几十种方式将其关闭:

          防火墙;

            centos 6:

              # service iptables stop

              #chkconfig iptables off

            centos 7:

              # systemctl stop firewalld.service

              # systemctl disable firewalld.service


            如果想要防火墙临时不生效;

              # iptables -F 适用于所有的centos系统版本;


            selinux:

              1.编辑selinux的配置文件/etc/sysconfig/selinux(/etc/selinux/config),在配置文件中,有一行语句为:SELINUX={disabled|enforce|permissive}


              2.编辑grub的启动配置文件/boot/grub/grub.conf

                kernel /vmlinuz-version-release ARGS selinux=0


              如果想要selinux临时不限制用户行为:

                # setenforce 0 == enforcing --> permissive

                # setenforce 1 == permissive --> enforcing

                # getenforce

        repo:安装系统随使用的repository

          repo --name="centos" --baseurl=cdrom:sr0 --cost=100

          repo --name="centos" --baseurl=http://host[:port]/path --cost=100   

        reboot:安装完成之后重新启动

        halt/poweroff:安装完成之后关闭系统

        url:指明安装时使用的repository,但必须使用url格式;

          url --url=http://host[:port]/path

        firstboot --disable:首次启动关闭

    脚本段:

      %per:安装前脚本的开始部分

        运行环境:运行于安装戒指上的微信Linux系统环境;

      %end


      %post:安装后脚本的开始部分

        运行环境:安装以后的操作系统

      %end


    程序包/程序包组段:指明要安装的程序包或程序包组以及不安装程序包;

      %packages

        @pack_group_name:安装一个程序包组;

        pack_name:安装单个指定的程序包;

        -pack_name:明确指出不安装的程序包;有时即便明确指出该项,被指定的程序包也可能会被安装上(被其他程序包里被安装或被其他程序被依赖);

      %end


如何创建kickstart文件:

  1.直接以anaconda-ks.cfg为模板,复制之后修改即可;

  2.可以使用工具来创建;

    如果命令不存在,则yum install system-config-kickstart安装即可;

    # system-config-kickstart &


    可以全新创建,也可以依据其他的ks文件(如anaconda-ks.cfg)来修改生成新的配置文件;


  3.检测ks文件的语法是否存在错误:

    ksvalidator


    如果该命令不存在,可以安装pykickstart-1.74.20-1.el6.noarch


http://172.16.72.1/ks.cfg


利用一台CentOS7构建web server,方法如下:

  临时清理防火墙规则,并将selinux设置为permissive模式:

    ~]# iptables -F

    ~]# setenforce 0

  启动WEB服务

    ~]# systemctl start httpd.service

  查看web服务的运行状态,只要有绿色文字显示的active(running),即为服务正常启动;

    ~]# systemctl status httpd.service 

  为CentOS 6提供repository

    ~]# mkdir /var/www/html/centos_6_repo

    ~]# mount /dev/sr0 /mnt/cdrom  

      注意:光驱中放的是CentOS6的安装光盘的CD1;

    ~]# cp -a /mnt/cdrom/* /var/www/html/centos_6_repo


到此,web服务器的配置完成;


利用一台已经安装好的CentOS 6操作系统,创建启动光盘:

  将下述内容写入kickstart文件;

  ~]# vim /root/centos6-ks.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --disabled

# SELinux configuration

selinux --disabled

# Install OS instead of upgrade

install

# Use network installation

network --onboot yes --device eth0 --bootproto dhcp

url --url="http://172.16.72.1/myrepo"

# Root password

rootpw --iscrypted $1$iRHppr42$VMesh73wBqhUTjKp6OYOD.

# 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 --disabled

# Reboot after installation

reboot

# System timezone

timezone  Asia/Shanghai

# System bootloader configuration

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

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all  

# Disk partitioning information

part /boot --fstype="ext4" --size=200

part pv.008 --size=61440


volgroup myvg --pesize=4096 pv.008

logvol / --fstype=ext4 --name=root --vgname=myvg --size=20480

logvol swap --name=swap --vgname=myvg --size=2048

logvol /usr --fstype=ext4 --name=usr --vgname=myvg --size=10240

logvol /var --fstype=ext4 --name=var --vgname=myvg --size=20480


#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100


%post

echo -e ‘Qhdlink Linux for Learning Services\nhttp://www.linklinux.com\n‘ >> /etc/issue


sed -i ‘1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g‘ /etc/inittab


ifconfig eth0 172.16.69.2/16


%end


%packages

@base

@core

@debugging

@basic-desktop

@desktop-debugging

@desktop-platform

@desktop-platform-devel

@development

@directory-client

@fonts

@general-desktop

@graphical-admin-tools

@input-methods

@internet-applications

@internet-browser

@java-platform

@legacy-x

@network-file-system-client

@office-suite

@print-client

@remote-desktop-clients

@server-platform

@server-platform-devel

@server-policy

@workstation-policy

@x11

mtools

pax

python-dmidecode

oddjob

wodim

sgpio

genisoimage

device-mapper-persistent-data

systemtap-client

abrt-gui

desktop-file-utils

jpackage-utils

samba-winbind

certmonger

pam_krb5

krb5-workstation

openmotif

libXmu

libXp

%end


创建引导光盘:

  ~]# mkdir myiso

  ~]# cp -r /mnt/cdrom/isolinux /root/myiso/

    注意:这样的复制方法是将isolinux目录直接复制到myiso目录中,也就是说isolinux是myiso的子目录;

  ~]# vim /root/myiso/isolinux/isolinux.cfg

label linux

  menu label ^Install or upgrade an existing system

  menu default

  kernel vmlinuz

  append initrd=initrd.img ks=cdrom:/centos6-ks.cfg


  ~]# cp /root/centos6-ks.cfg /root/myiso/

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


创建U盘启动盘

  方法一:

    ~]# dd if=/dev/sr0 of=/dev/sdb

  方法二:

    ~]# fdisk /dev/sdb (将整个U盘分为一个分区,并将其分区类型修改为vfat,即在fdisk交互式模式中使用t --> b命令完成转换)

    ~]# mkfs.vfat /dev/sdb1

    ~]# mount /dev/sdb1 /mnt/usb

    ~]# mkidr -p /mnt/usb/grub

    ~]# cp /mnt/cdrom/isolinux/{vmlinuz,initrd.img} /mnt/usb

    ~]# vim /mnt/usb/grub/grub.conf

default=0

timeout=5

title the linux boot from usb

  root (hd0,0)

  kernel /vmlinuz

  initrd /initrd.img ks=http://172.16.72.1/ks.cfg (将centos6-ks.cfg文件放置于CentOS7的/var/www/html目录中,改名为ks.cfg即可)

  ~]# grub

    grub> root (hd1,0)

    grub> setup (hd1)


#27 Linux系统安装:centos系