Linux系统安装:CentOS系


POST --> BootSequence(BIOS) --> BootLoader(GRUB --> 1_5 stage -->2nd stage) --> Kernel (devtmpfs) --> [ ramdisk (dev,proc,sys) -->] rootfs(ro) --> /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/isolinux.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:device drivers,装载额外的设备的启动程序;

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

  光盘上:ks=cdrom:/PATH/TO/KICKSTART_FILE

  本地硬盘:ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE

  某个远程web站点:ks=http://HOST[:PORT]/PATH/TO/KICKSTART_FILE

  某个远程FTP站点:ks=ftp://[username@]HOST[:PORT]/PATH/TO/KICKSTART_FILE

  某个远程安全WEB站点:ks=https://HOST[:PORT]/PATH/TO/KICKSTART_FILE


4.装载rootfs,并启动anaconda

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


"ESC"键 --> boot: linux text


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

本地光盘

本地硬盘

FTP服务器

HTTP服务器

NFS服务器


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

ESC键 --> 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 --location=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:创建卷组的命令

volgroup VG_NAME --pesize=8192 PV_NAME 

logvol:创建逻辑卷的命令

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

logvol / --fstype=ext4 --name=lv_root --vgname=VG_NAME --size=30720

logvol /var --fstype=ext4 --name=lv_var --vgname=VG_NAME --size=10240

logvol /usr --fstype=ext4 --name=lv_usr --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.254.1 --netmask 255.255.0.0 --noipv6 --hostname a.link.com --gateway= --dns=

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


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:控制首次启动

firstboot --disable

脚本段:

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

运行环境:运行于安装介质上的微型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

genisop_w_picpath

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)