1、anaconda(安装linux的工具,运行在内核上的)
anaconda的界面:
tui:基于cureses的文本配置窗口
gui:图形界面
bootloader(有可能在光盘上也有可能在u盘上)--->加载指定内核(vmlinuz),也可能借助initrd,注意initrd中有rootfs--->anaconda(完成系统安装)
2、centos的安装过程启动流程介绍:
第一阶段: bootloader引导程序,放在设备的第一个扇区(即MBR中),光盘上的bootloader是:boot.cat文件(光盘引导加载器,可以认为是改装的grub)。 光盘中的boot.cat的位置:/isolinux/boot.cat 如: [root@localhost isolinux]# ll boot.cat -r--r--r--. 1 root root 2048 Dec 5 2016 boot.cat [root@localhost isolinux]# |
第二阶段: isolinux目录下的isolinux.bin //提供类似grub的安装界面(配置菜单) isolinux.bin的配置文件:isoliunx/isolinux.cfg isolinux.cfg配置文件中对应的菜单: 加载内核:isolinux/vmlinuz 向内核传递参数:append initrd=initrd.img //initrd是参数,initrd.img是参数值,可以认为initrd.img中自带anaconda程序。 装载根文件系统(位于initrd.img中),并启动anaconda。 注意:安装程序都位于isolinux这一个目录下。 [root@localhost isolinux]# ls ../isolinux/ boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz boot.msg initrd.img isolinux.cfg splash.png vesamenu.c32 [root@localhost isolinux]# |
注意:anaconda默认界面是图形界面,内存需要大于512MB, 如需要指定启动tui接口,向启动内核传递一个参数“text”即可。 在启动界面敲入ESC键(有的是tab键),此时会弹出一个窗口,输入如下: boot:linux text //linux是指isolinux.cfg配置文件中的label,将text补在append initrd=initrd.img后面;label的作用是调用它下面的所有参数,此时如果加一个“text”,表示向label为linux的启动项中,传递text参数,以tui启动。 以上内容一般位于引导设备,例如可通过光盘、u盘或网络等;后续的anaconda及其安装用到的程序包等可以来自于程序包仓库,此仓库可位置可以为:本地光盘、本地硬盘、ftpserver、httpserver、nfsserver; 安装过程中如果不想用光盘中的软件源而想手动指定安装仓库,敲入ESC键在boot提示符下输入如下:boot:linux method //method 的作用是让用户选择安装方法 这些起来之后,交给anaconda进行安装系统 |
3、anaconda的工作过程:分两阶段
第一阶段:安装前配置阶段(如何分区、时钟设置、等),有两种配置方式
第二阶段:安装阶段
第三阶段:首次启动(已经与anaconda无关了),且只会出现一次。
3.1、anaconda第一阶段: 安装前配置阶段:(经常配置的选项有如下:) ①、选择安装过程中使用的语言 ②、选择键盘类型 ③、选择安装目标存储设备 basic storage:本地磁盘存储 special storage:iscsi网络存储 ④、设定主机名 ⑤、配置网络接口 ⑥、设置时区 ⑦、设置管理员密码 ⑧、设置分区方式及mbr的安装位置,注意分区可能会清空磁盘中的数据;大多数程序会装在/usr目录下,因此如果单独分区要分的大一些,/var刚开始是空的,随系统的使用会逐渐增大。 ⑨、创建一个普通用户(系统安装完成后,不建议使用管理员,权限太大) ⑩、选定要安装的程序包 |
3.2、安装阶段: ①、在目标磁盘创建分区并执行格式化 ②、将选定的程序包安装至目标位置 ③、安装bootloader(如果需要可以安装执行脚本在②之前被称为安装前脚本,在③之后被称为安装后脚本) |
3.3、首次启动:(去掉安装介质,入弹出光盘) ①、配置iptables 关闭 ②、配置selinux 关闭 ③、开启core dump(核心转储功能,意思是内核崩溃时,将运行内存中的数据创建一个文件保存在磁盘上,用于分析崩溃的原因;注意:core dump对内存大小有要求。) |
4、anaconda的配置方式:
①、交互式配置方式
②、支持通过读取配置文件中事先定义好的配置项自动完成配置,遵循特定的语法格式,此文件即为kickstart文件,注意:光盘中的文件不支持修改,如果要实现此目的,配置文件可以放在别处,因此anaconda的安装文件和此文件可能不在同一地方。
5、安装过程中的安装引导选项:(boot提示符下输入的命令)
text:文本安装方式
method:手动指定使用的安装方法
与网络相关的引导选项:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
远程访问功能相关的引导选项:
vnc
vncpassword='PASSWORD'
启动紧急救援模式:
rescue
指明加载额外驱动:
dd //drvice disk,会提示选择驱动所在的位置。
指明kickstart文件的获取位置
ks=
如:
Dvddrive: ks=cdrom:/config/ks.cfg //如在光盘中config目录下的ks.cfg文件
Harddrive:ks=hd:/device/directory/ks.cfg
Httpservices: ks=http://host:port/ks.cfg
HttpsService: ks=https://host:port/ks.cfg
Ftpservice: ks=ftp://host:port/ks.cfg
参考书籍:www.redhat.com/docs 《installation guide》
5、centos自动安装
5.1、安装引导选项: grub中指明ks文件的位置,ks=
Dvddrive: ks=cdrom:/config/ks.cfg //如在光盘中config目录下的ks.cfg文件
Harddrive:ks=hd:/device/directory/ks.cfg
Httpservices: ks=http://host:port/ks.cfg
HttpsService: ks=https://host:port/ks.cfg
Ftpservice: ks=ftp://host:port/ks.cfg
注意:系统安装完成后,会在root家目录下有一个anaconda-ks.cfg文件(安装准备阶段配置的相关设置),可以以此为模板。
5.2、kickstart文件的格式:
kickstart文件由三部分组成,分别是:
①、命令段部分
②、程序包段部分
③、脚本段部分
①、命令段部分:
指定各种安装前的配置选项,分为必备命令、可选命令
必备命令: authconfig:认证方式配置 示例:authconfig --enableshadow --passalgo=sha512 bootloader:定义bootloader的安装位置及相关配置 示例:bootloader --location=mbr --driceorder=sda --append=" crashkernel=auto" keyboard:设置键盘类型: 示例:keyboard --vckeymap=us --xlayouts='us' lang:设置语言类型 示例:lang en_US.UTF-8 part:分区布局及方式 示例: part /boot --fstype=ext4 --size=500 part pv.008002 --size=51200 //pv表示创建的物理卷,008002是此物理卷的ID。 分区可选命令: autopart --type=lvm clearpart --none --initlabel volgroup: 示例:volgroup myvg --pesize=4096 pv.008002 //myvg表示卷组名,pesize表示pe大小,pv008002表示调用哪个物理盘做卷组 logvol: 示例:logvol /home --fstype=ext4 --name=lv_home --vgname=myvg rootpw:管理员密码设置 示例:rootpw --iscrypted $6$gdSMQrPuuwBvkjBR$GDqAFw7hr/GcsahNr4g7m2p.DPLZRUyZlwx01PjvdNEH9IDabDqb9oh3p9XY6jOXV0XK1pIb5OBQ0msu7ckTU. //不加--iscrypted可以直接跟明文密码;生成加密密码的方式: [root@localhost ~]# openssl passwd -1 -salt openssl rand -hex 4 //-1表示512加密,rand表示随机数,-hex 4表示4字节。 timezone:指定时区 示例:timezone Asia/Shanghai --isUtc --nontp |
命令段中的可选命令:
install:安装(默认安装)
upgrade:升级(无需重新创建分区)
text:安装界面类型,text为tui类型,默认为gui(图形界面)
network:配置网络
示例:network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain
firewall:设置防火墙
示例:firewall --service=ssh //表示启用了防火墙,但是对ssh放行
firewall --disabled //关闭防火墙
selinux:安全加强的selinux
示例:selinux--disabled
halt:关机,与poweroff、reboot三者选一,用于定义安装完成后的行为,关机或重启。
poweroff:关机
reboot:关机
repo:指明安装时使用的仓库(repository)
示例:repo --name="centos" --baseurl=cdrom:sr0 --cost=100 //开销,默认为1000
url:指明安装时使用的repository,但为url格式,优先级高于repo
示例:url --url=http://172.1.1.10/centos7
autopart --type=lvm
clearpart --none --initlabel
volgroup:
示例:volgroup myvg --pesize=4096 pv.008002 //myvg表示卷组名,pesize表示pe大小,pv008002表示调用哪个物理盘做卷组
logvol:
示例:logvol /home --fstype=ext4 --name=lv_home --vgname=myvg
user:安装完成后为系统创建新用户。
②、程序包段部分:
指明要安装的程序包以及包组,也包括指明不需要安装的程序包
%packages //说明程序包段的开始
@group_name //需要安装的程序包组
package //需要安装的单个程序包
-package //不安装的程序包
%end //程序包段结束
③、脚本段部分
%pre //安装前脚本,运行的脚本有限
运行环境:运行安装介质上的微型linux系统环境(initrd)
%end //安装前脚本结束
%post //安装后脚本,安装完成后,重启之前运行的脚本,用的较多
运行环境:安装完成的脚本
%end //安装后脚本结束
注意:如果安装最小环境的话,可能没有第三部分(脚本段部分。)
5.3、禁用相关服务
安装完成后禁用防火墙:
centos6:
#service iptables stop
#service iptables off
centos7:
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
安装完成后禁用selinux:
编辑文件:/etc/sysconfig/selinux或/etc/selinux/config文件,修改selinux参数的值为下面其中之一:
permissive
disabled
关闭selinux使其立即生效:
#getenforce //查看是否启用“1”为启用
#setenforce 0 //关闭selinux
5.4、制作kickstart文件方式:
①、直接手动编辑,依据模板修改
②、使用创建工具:system-config-kickstart,也可以依据模板修改并生成新的kickstart文件。
使用工具制作kickstart文件:
[root@localhost ~]# yum install system-config-kickstart -y //安装制作kickstart文件的工具
[root@localhost ~]# system-config-kickstart //运行此工具
[root@localhost Desktop]# ksvalidator ks.cfg //对制作的kickstart文件进行检查,查看是否有错误
5.5、用制作的kickstart文件安装系统
①、将生成的kickstart文件放在可以通过网络或本地能访问的服务器上,如本地硬盘、http、ftp、dvd上
②、启动主机,载入光驱,当出现grub选择界面的时候,敲入:"ESC"键,进入boot提示符,输入如下内容:
boot:linux ip=x.x.x.x netmask=x.x.x.x gateway=x.x.x.x ks=http://x.x.x.x/ks.cfg
安装示例参考:https://www.cnblogs.com/zhenhui/p/6233285.html
自此,linux的自动安装可以通过网络上定义的kickstart文件进行安装,但是如果要想实现通过“自定义安装介质,实现自动部署”,可以制作iso镜像,并将ks文件放进去,实现自动部署,可以参考如下(5.6:自定义介质安装)实现方式
5.6、自定义安装介质安装系统:(没有服务器放置kickstart文件,但又想使用ks文件,可以自己创建一个光盘镜像,并将ks文件放进去,镜像只需要有iso目录即可)
实现步骤如下:
①、先配置好ks.cfg文件
②、[root@localhost ~]# mkdir myboot //创建目录,存放isolinux目录,把myboot当做制作光盘的根
③、[root@localhost ~]# cd myboot
④、[root@localhost myboot]# cp -r /mnt/isolinux/ ./
[root@localhost ~]# ls /root/myboot/isolinux/
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz
boot.msg initrd.img isolinux.cfg splash.png vesamenu.c32
⑤、[root@localhost myboot]# chmod +w isolinux/* //可以定制isolinux.cfg中的配置
⑥、[root@localhost myboot]# cp /root/anaconda-ks.cfg ./ks.cfg
⑦、[root@localhost ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "centos7 custom" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/ //制作光盘镜像,制作镜像时一定要退出相应的目录
⑧、将此次制作的镜像文件放入光驱(镜像文件:/root/boot.iso)
⑨、在安装选择界面(即grub选择界面,在相应安装的菜单上敲入“tab”键,在后面输入如下内容)
ks=cdrom:/ks.cfg //指定ks文件的位置位于光盘根目录下,如下图
注意:以上步骤需要向内核传递参数,如果不想这样做而实现全自动安装,可以编译isolinux/isolinux.cfg,在上述第⑤步骤中直接将ks参数写在此处即可(如图:ks=cdrom:/ks.cfg),然后再制作镜像