一、anaconda程序
1.anaconda:CentOS系列的安装程序,基于内核启动来实现定制自动安装操作
实现流程:
--> 启动设备(光盘、u盘模拟出的第一个扇区、网络引导加载器)上的bootloader
--> 启动设备中的kernel(initrd(rootfs))装载到内存中,不需做根切换,把内存当做硬盘
--> anaconda当做sbin下的init,借助此程序完成定制自动化安装
2.anaconda两个界面
tui:基于cureses的文本配置窗口
gui:图形界面
注意:
1)CentOS 7上光盘启动默认界面是图形界面,需要至少512MB内存空间;
2)若需要显式指定启动TUI接口:向启动内核传递一个参数"text"即可;
按下ESC键,之后会有一个boot提示符,在boot提示符之后输入:linux text
3.CentOS光盘安装过程启动流程
通过光盘启动引导安装时候,cdrom/isolinux/会当做启动分区,相当于一个boot分区,此过程一般位于引导设备,例如可通过光盘、U盘或网络等;后续的anacona及其安装用到的程序包等可以来自于程序包仓库,此仓库的位置可以为:本地光盘、本地硬盘、ftp server、http server、nfs server
如果想手动指定安装仓库:按下ESC、在boot下输入linuxmethod
[root@localhost cdrom]# ll /media/cdrom/isolinux/
(1)MBR:cdrom/isolinux/boot.cat光盘上的引导加载器,相当于Bootloader
(2)Stage2:isolinux/isolinux.bin,配置文件:isolinux/isolinux.cfg
每个对应的菜单选项:[root@localhostisolinux]# cat isolinux.cfg
加载内核:isolinux/vmlinuz
向内核传递参数:append initrd=initrd.img
(3)splash.png:启动装载时的背景图片
(4)装载根文件系统,并启动anaconda
4.anaconda的工作过程阶段
(1)安装前配置阶段
安装过程使用的语言 ---> 键盘类型---> 安装目标存储设备 ---> 设定主机名 ---> 配置网络接口 --->
时区 ---> 管理员密码---> 设定分区方式及MBR的安装位置 --->创建一个普通用户 ---> 选定要安装的程序
(2)安装阶段
在目标磁盘创建分区并执行格式化;
将选定的程序包安装至目标位置;
安装bootloader;
(3)首次启动会要求配置 (此部分操作非必须完成)
1)系统安装完成之后禁用防火墙操作
CentOS6:
#service iptables stop
#chkconfig iptables off
CentOS7:
#systemctl stop firewalld.service
#systemctl disable firewalld.service
2)系统安装完成后禁用SELinux:
方法一:配置文件,编辑/etc/sysconfig/selinux或/etc/selinux/config文件,
修改SELINUX参数的值为下面其中之一,改为permissive或者disabled
方法二:命令立即生效方式:
# getenforce
# setenforce 0
3)core dump核心转储,内核崩溃时将内存中所有数据创建映像文件保存在磁盘上可取出分析崩溃原因
5.anaconda的配置方式:
(1)交互式配置方式:基于图形化界面
(2)kickstart文件配置文件方式:
支持通过读取配置文件中事先定义好的配置项自动完成配置;遵循特定的语法格式
在安装引导命令提示符boot下可进行输入选项来配置:
1)text:文本安装方式
2)method:手动指定使用的安装方法
3)与网络相关的引导选项:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
4)远程访问功能相关的引导选项:
vnc
vncpassword='PASSWORD'
5)rescue:启动紧急救援模式:
6)dd:装载额外驱动:
二、kickstart文件配置
1.kickstart:在/root目录上有一个模板样式的anaconda-ks.cfg配置文件
[root@localhost /]# cat /root/anaconda-ks.cfg
2.在boot命令行下安装引导时候可以通过不同方式加载ks.cfg文件
ks:指明kickstart文件的位置;ks=*,*表示
DVDdrive: ks=cdrom:/PATH/TO/KICKSTART_FILE
HardDrive: ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
HTTPServer: ks=http://HOST[:PORT]/PATH/TO/KICKSTART_FILE
FTPServer: ks=ftp://HOST[:PORT]/PATH/TO/KICKSTART_FILE
HTTPSServer: ks=https://HOST[:PORT]/PATH/TO/KICKSTART_FILE
3.kickstart文件的格式
# Kickstart file automatically generated by anaconda. |
|
#version=DEVEL |
|
install url --url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/ lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 rootpw --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49 # Reboot after installation reboot firewall --disabled authconfig --useshadow --passalgo=sha512 selinux --disabled timezone Asia/Shanghai bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work #clearpart --all #part /boot --fstype=ext4 --size=200 #part pv.008002 --size=61440 #volgroup vg0 --pesize=8192 pv.008002 #logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 #logvol swap --name=swap --vgname=vg0 --size=2048 #logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240 #logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480 repo --name="CentOS" --baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/ --cost=100 |
安装或升级(可选upgrade) 指明安装时候使用的仓库 语言段、编码格式 设定键盘类型
管理员密码
认证方式配置 Selinux是否启动 指定时区 定义bootloader相关配置
[分区布局和使用方式]:
清除磁盘分区 放置分区、文件类型、大小 创建物理卷[pv.ID] 创建卷组 创建逻辑卷
指明安装时候使用的仓库 cost:开销 |
%packages @Base @Core @base @basic-desktop @chinese-support @client-mgmt-tools @core @desktop-platform @fonts @general-desktop @graphical-admin-tools @legacy-x @network-file-system-client @perl-runtime @remote-desktop-clients @x11 lftp tree %end |
程序包段:
中文支持包
|
%post echo -e 'Mage Education Learning Services\nhttp://www.magedu.com\n' >> /etc/issue sed -i '1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g' /etc/inittab [ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh cat >> /root/.ssh/authorized_keys << EOF ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlmq1z0G/7wbGuSUewfXlFnwzqCg/myqTi/AwP8LP+JJ49xzIKMzpeWXHD8RWIf5RlDzo+6N7uPK5O22x/QtMosi0egz4shavEJeUkO0EH+KygXXgBIGuMWmAsL+yzbgWXT9H3zdzXi/qWcrBeBv2nYB5mpYSf7o0xqdhCst1MTfcYLD8qxvkwC8RiqBA/1u9N6jeDFbHO+UzZYYCr9zgk9uz4Rrhb9BU7c1GhjUCgRwBDAuo47IHw/OT6KS9lb8lT2R/ujVoDARy/eOhw8cAFXo+QcvzNSW2qKf/Qo21uR/wz2u9SRV0lvUDNSvC2PYtR+iPlDwHY81md430yiNf9= [email protected] EOF ClientName=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F. '{print $NF}'` sed -i "s@HOSTNAME=.*@HOSTNAME=client$ClientName.magelinux.com@g" /etc/sysconfig/networks # set hosts echo '172.16.0.1 server.magelinux.com server' >> /etc/hosts # yum repo %end |
脚本段:此处只有结束脚本段 |
(1)命令段:指定各种安装前配置选项,如键盘类型等;分为必备命令、可选命令两类
1)必备命令:
authconfig:认证方式配置
authconfig --enableshadow --passalgo=sha512
bootloader:定义bootloader的安装位置及相关配置
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgbquiet"
keyboard:设置键盘类型keyboard us
lang:语言类型
part:分区布局;
part /boot --fstype=ext4 --size=500
part pv.008002 --size=51200
分区相关的其它指令
clearpart:清除分区
clearpart --none --drives=sda:清空磁盘分区;
volgroup:创建卷组
volgroup myvg --pesize=4096 pv.008002
logvol:创建逻辑卷
logvol /home --fstype=ext4 --name=lv_home --vgname=myvg --size=5120
rootpw:管理员密码
rootpw --iscrypted $6$4Yh15kMGDWOPtbbW $SGax4DsZwDAz4201.O97WvaqVJfHcISsSQEokZH054juNnoBmO/rmmA7H8ZsD08.fM.Z3Br/67Uffod1ZbE0s.
生成加密密码的方式:
~]#openssl passwd -1 -salt `openssl rand -hex 4`
timezone:时区timezone Asia/Shanghai
2)可选命令:
install OR upgrade:安装或升级;
text:安装界面类型,text为tui,默认为GUI
network:配置网络接口
network --onboot yes --device eth0 --bootprotodhcp --noipv6
firewall:防火墙
firewall --disabled
selinux:SELinux
selinux--disabled
halt、poweroff或reboot:安装完成之后的行为;
repo:指明安装时使用的repository;
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
url:指明安装时使用的repository,但为url格式;
url--url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/
(2)程序包段:
指明要安装程序包,以及包组,也包括不安装的程序包;
%packages:程序包开始标志
@group_name:安装的包组名
package:指明安装的包
-package:指明不安装的包,但时依赖关系可能会装
%end:程序包结束标志
(3)脚本段:
%pre:安装前脚本
运行环境:运行安装介质上的微型Linux系统环境;
%post:安装后脚本
运行环境:安装完成的系统;
三、kickstart脚本配置文件创建
1.安装system-config-kickstart程序包
该程序包可以生成图形化界面来通过选项配置的方式后自动生成ks.cfg脚本
# yum install system-config-kickstart
2.打开system-config-kickstart程序包,配置ks.cfg文件
在此步骤可以选择导入/root/anaconda-ks.cfg作为模板来进行修改操作完成配置
# system-config-kickstart
3.检查ks.cfg脚本的语法错误:# ksvalidator
当有问题的时候会自动报错
四、anaconda启动光盘镜像创建和打包
注意:此处为简要介绍制作anaconda的一个流程简介操作,内核和部分配置文件在官方镜像信息上进行修改操作,非全部手动手动操作
1.创建一个目录,放置所要打包制作镜像内容
#mkdir /centos_xd
2.isolinux制作
1)挂载光盘镜像:# mount -r /dev/cdrom /media/cdrom
2)复制光盘上isolinux至打包目录:# cp -r /media/cdrom/isolinux//centos_xd/
3)复制ks.cfg至打包目录:# cp anaconda-ks.cfg /centos_xd/
ks.cfg0文件可以直接放置在/centos_xd目录下,也可以放置在/centos_xd/isolinux/下
4)给复制isolinux目录增加写权限 # chmod +w *
5)修改isolinux部分内容:
可以更改背景图片splah.jpg(只能使用14位色)
可以更改配置文件isolinux.cfg
… ...
3.镜像打包制作
~]# mkisofs -R-J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso /centos_xd/
-V :显示的镜像名称
-c:指定模拟的MBR,引导加载器isolinux/boot.cat文件
-b:指明Stage2:isolinux/isolinux.bin
-o:创建完成后保存位置和文件名