1.一般系统的启动流程:
bootloader --> kernel(initramfs) --> rootfs --> /sbin/init
2.anaconda:安装程序
tui:基于curses的文本窗口
gui:图形窗口
3.CentOS的安装程序准备过程(即anaconda执行之前的程序运行)
首先我们先将光盘连接至虚拟机上,然后挂载到/mnt/cdrom/目录下,继而可以查看详细的内容
# mkdir /mnt/cdrom # mount /dev/cdrom1 /mnt/cdrom/ # cd /mnt/cdrom/ # ls CentOS_BuildTag EULA images Packages repodata RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Testing-6 EFI GPL isolinux RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Security-6 TRANS.TBL
可以看到光盘中有如下的文件,我们进入isolinux目录下,在其中保存有完整的安装系统时的开机启动程序
# cd isolinux/ # ls boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest splash.jpg TRANS.TBL vesamenu.c32
接下来我们分别介绍一下这些文件的意义
(1)光盘中的MBR:boot.cat
stage2: isolinux.bin (这个程序会读取isolinux.cfg显示一个菜单,而读取vesamenu.c32则会显示一个图形窗口,并取用splash.jpg作为背景图片)
配置文件:isolinux.cfg
这个配置文件对应的内容如下
每个对应的菜单选项:
加载内核:isolinux/vmlinuz
向内核传递参数:append initrd=initrd.img
# cat isolinux.cfg default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.6! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
(2)装载根文件系统并启动anaconda
默认启动gui窗口
若是显式指定tui接口
1)向内核传递“text”参数
例:boot:linux text
2)在选定的菜单下敲tab键,即可键入文本提示符
或是直接敲ESC键,在boot:提示符下键入 text即可
4.anaconda程序运行时的工作过程
(1)安装前的配置阶段
安装过程使用的语言
键盘类型
安装目标存储设备
Basic Storage:本地磁盘
特种设备:iSCSI
设定主机名
配置网络接口
时区
管理员密码
设定分区方式及MBR的安装位置
创建一个普通用户
选定要安装的程序包
(2)安装阶段
在目标磁盘创建分区,执行格式化操作等
将选定的程序包安装至目标位置
安装bootloader
(3)首次启动
iptables
selinux
core dump
注意:CentOS系统安装准备阶段的相关内容一般位于引导设备上,而后续的anaconda以及安装用到的程序包等有几种方式可用
本地光盘
本地硬盘
ftp server:yum repository
http server:yum repository
nfs server
如果想手动指定安装源
boot:linux method
5.anaconda的配置方式
(1)交互式配置方式,即在图形化的窗口下实现的人工配置
(2)通过读取实现给定的配置文件自动完成配置
按特定语法给出的配置选项
kickstart文件
6.安装引导选项(即在boot:提示符下我们可以传递给内核的参数选项)
boot:text 文本格式的安装方式
boot:method 手动指定使用的安装方法
与网络相关的安装选项:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
ifname=NAME:MAC_ADDR 指明网络接口的具体名称
与远程访问功能相关的引导选项
vnc(使用此命令,可以利用vnc服务打开本机vnc server服务让远程主机连入,帮助配置启动
vncpassword='PASSWD' 远程连接本地时需要键入密码
指明kickstart文件的位置
ks= DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE Hard drive: ks=hd:/device/drectory/KICKSTART_FILE HTTP server: ks=http://host:port/path/to/KICKSTART_FILE FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
启动紧急救援模式:
rescue
注意:在完成安装后,在本地家目录下有一个anaconda.cfg文件,其中保存了本次安装的相关配置选项,同时这也是一个安装模板
7.kickstart文件的格式:
命令段:指明各种安装前配置,如键盘类型等;
程序包段:指明要安装的程序包组或程序包,不安装的程序包等;
%packages 开始的标志
@group_name 装一个包组
package 装特定的一个程序包
-package 不安装特定的一个程序包
%end 结束标志
脚本段:
%pre: 安装前脚本
运行环境:运行于安装介质上的微型Linux环境
%post: 安装后脚本
运行环境:安装完成的系统;
(1)命令段中的命令:
必备命令
authconfig: 认证方式配置 authconfig --useshadow --passalgo=sha512 bootloader:bootloader的安装位置及相关配置 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" keyboard: 设定键盘类型 lang: 语言类型 part: 创建分区 rootpw: 指明root的密码 timezone: 时区 可选命令 install OR upgrade text: 文本安装界面 network firewall selinux halt poweroff reboot repo:安装过程中额外用到yum源的指明 user:安装完成后为系统创建新用户 url: 指明安装源
(2)在root家目录下的anaconda-ks.cfg配置文件,其中的内容大体对应上述的介绍
# cat anaconda-ks.cfg # Kickstart file automatically generated by anaconda. #version=DEVEL install cdrom lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp rootpw --iscrypted $1$vr9VWqou$ds1.AIZMTpPHpgZy4ZOG9. # Reboot after installation reboot firewall --service=ssh authconfig --useshadow --enablemd5 selinux --enforcing timezone --utc America/Los_Angeles bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb 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 --initlabel #part /boot --fstype=ext4 --size=300 #part / --fstype=ext4 --grow --size=3000 #part swap --grow --maxsize=1984 --size=1984 repo --name="CentOS" --baseurl=cdrom:sr1 --cost=100 %packages @Base @Core @Desktop @Fonts @General Purpose Desktop @Internet Browser @Printing client @X Window System binutils gcc kernel-devel make patch python %end %post if [ -f /boot/grub/menu.lst -a ! -h /boot/grub/menu.lst ]; then cp /boot/grub/menu.lst /boot/grub/menu.lst.bak && sed -i 's/ rhgb//' /boot/grub/menu.lst; fi if [ -f /boot/grub/grub.conf -a ! -h /boot/grub/grub.conf ]; then cp /boot/grub/grub.conf /boot/grub/grub.conf.bak && sed -i 's/ rhgb//' /boot/grub/grub.conf; fi if [ -f /boot/grub2/grub.conf -a ! -h /boot/grub2/grub.conf ]; then cp /boot/grub2/grub.conf /boot/grub2/grub.conf.bak && sed -i 's/ rhgb//' /boot/grub2/grub.conf; fi if [ -f /etc/rc.d/rc.local ]; then cp /etc/rc.d/rc.local /etc/rc.d/rc.local.backup; fi cat >>/etc/rc.d/rc.local <<EOF #!/bin/bash echo echo "Installing VMware Tools, please wait..." if [ -x /usr/sbin/getenforce ]; then oldenforce=\$(/usr/sbin/getenforce); /usr/sbin/setenforce permissive || true; fi mkdir -p /tmp/vmware-toolsmnt0 for i in hda sr0 scd0; do mount -t iso9660 /dev/\$i /tmp/vmware-toolsmnt0 && break; done cp -a /tmp/vmware-toolsmnt0 /opt/vmware-tools-installer chmod 755 /opt/vmware-tools-installer cd /opt/vmware-tools-installer mv upgra32 vmware-tools-upgrader-32 mv upgra64 vmware-tools-upgrader-64 mv upgrade.sh run_upgrader.sh chmod +x /opt/vmware-tools-installer/*upgr* umount /tmp/vmware-toolsmnt0 rmdir /tmp/vmware-toolsmnt0 if [ -x /usr/bin/rhgb-client ]; then /usr/bin/rhgb-client --quit; fi cd /opt/vmware-tools-installer for s in sr0 sr1; do eject -s /dev/\$s; done ./run_upgrader.sh if [ -f /etc/rc.d/rc.local.backup ]; then mv /etc/rc.d/rc.local.backup /etc/rc.d/rc.local; else rm -f /etc/rc.d/rc.local; fi rm -rf /opt/vmware-tools-installer sed -i 's/3:initdefault/5:initdefault/' /etc/inittab if [ -f /boot/grub/menu.lst.bak ]; then mv /boot/grub/menu.lst.bak /boot/grub/menu.lst; fi if [ -f /boot/grub/grub.conf.bak ]; then mv /boot/grub/grub.conf.bak /boot/grub/grub.conf; fi if [ -f /boot/grub2/grub.conf.bak ]; then mv /boot/grub2/grub.conf.bak /boot/grub2/grub.conf; fi if [ -x /usr/sbin/getenforce ]; then /usr/sbin/setenforce \$oldenforce || true; fi if [ -x /bin/systemd ]; then systemctl restart prefdm.service; else telinit 5; fi EOF chmod 755 /etc/rc.d/rc.local if [ -x /bin/systemd ]; then systemctl enable rc-local.service; fi /usr/sbin/adduser ahui /usr/sbin/usermod -p '$1$vr9VWqou$ds1.AIZMTpPHpgZy4ZOG9.' ahui /usr/bin/chfn -f "CentOS 6" ahui %end
8.创建kickstart文件的方式
(1)直接手动编辑;
依据某模板修改;
(2) 可使用创建工具:system-config-kickstart (注意这是一个命令,运行后可以生成一个图形化的窗口,让我们手动配置生成kickstart文件)(CentOS 6)
依据某模板修改并生成新配置;
http://172.16.0.1/centos6.x86_64.cfg
检查ks文件的语法错误:ksvalidator
# ksvalidator /PATH/TO/KICKSTART_FILE
创建引导光盘:
# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/
这个命令的意思是:把myiso/这个目录创建为光盘镜像,保存至/root/boot.iso文件中,并指明相关选项
实质上这个引导光盘可以最简到仅包括如下的文件
myiso目录下有
isolinux目录和myks.cfg配置文件就可以了