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)