centos系统安装
安装程序:anaconda,Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序的功能是把位于光盘或其他源上的数据包,根据设置安装到主机上。为实现该定制安装,它提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)。Anaconda的大部分模块用Python编写,有少许的载入模块用C编写。anaconda是要运行到内核之上的,因此,我们要启动安装过程,假如是用光盘启动也好还是其他什么也好,都要启动anaconda才能完成centos和rehl系列系统的安装,而这个程序是需要基于内核运行的,因此我们在安装光盘上,在任何地方也罢,要想启动anaconda得先启动内核,而要向启动内核的话,我们说过,内核可能在光盘上也可能在硬盘上,他不可能自己凭空的装到内存中去并启动起来的。我们也知道要想启动内核得先启动Bootloader,所有说我们真正要启动安装过程完成安装操作的话,第一步就是要去加载anaconda,以提供一个安装配置界面,但启动anaconda第一步要加载某一个启动设备上提供的bootloader 这个Bootloader安装完成以后,我们要先给其提供一个配置文件,让其能够加载指定的内核,这个bootloder有可能在光盘上对linux而言就是一个grub或者是其他专用的安装时启动安装界面的bootlader.(假设安装介质就是在光盘上的话)于是这个bootloader就去装载光盘上某个路径下的kernel这个kernel其实就是vmlinuz,kernel可能要借助与initrd把内存中的一段空间当作磁盘来使用直接运行这个操作系统。(这个initrd(initrd当中有rootfs)也是特质的他有我们操作系统安装过程当中所需要用到的各种基本工具),就这这样操作系统启动完成了,他甚至还给我们提供一个shell界面,这个shell界面是在initrd中提供的,不过呢,肯定他不会让我们在initrd当中基于命令行的方式来安装的,然后他去启动一个叫做anaconda的应用程序(把anaconda就当作/sbin/init了,要启动运行的第一个程序,)当然anaconda不需要去创建子进程了,我们借助与anaconda就能完成系统安装,可以把anaconda想象成用户空间的一个应用程序,但是这个程序并不在我们光盘的某个路径下,他可以从我们光盘上的某个程序包中加载到并启动之。因此无论我们基于u盘安装还是光盘安装还是网络安装,第一步就要先去启动一个bootloader,这个bootloadr有可能在u盘的第一个扇区中甚至是一个通过网络加载的一个启动加载器,而后我们通过这个引导加载器获取一个内核文件,获取一个initrd并基于他们再加载到anaconda,从而能启动安装程序。所以安装程序启动起来以后就剩下安装过程了 bootkoader –> kernel(initrd(rootfs)) –> anaconda
对与anaconda这个安装程序来讲,他有两个界面;
第一个界面叫做tui:基于cureses的文本配置窗口
第二个界面叫做gui:图形界面 因此安装过程就有了两种风格,而anaconda本身又把整个安装过程大体上定义成了两个阶段。阶段详细信息以后再说
centos的安装过程启动流程:
第一步读取mbr:boot.cat 第二阶段stage2:isolinux/isolinux.bin 配置文件:isolinunx/isolinux.cfg 配置文件当中每个对应的菜单选项: 加载内核:isolinux/vmlinuz 向内核传递参数:append initrd=init.img 所以说整个系统安装过程只是依赖与isolinux这个目录中的文件而已,一旦这里启动完成,接着就进入下一步启动的安装界面 装载根文件系统 ,并启动anaconda ,然后anconda启动一个安装界面 默认界面为图形界面,前提是内存足够大:512MB+内存空间; 如需要显式指定启动tui接口:向启动内核传递一个参数“text”即可;那么如何向内核传递参数呢,如下: ESC, boot:linux text 注意:是上述内容一般位于引导设备,例如可通过光盘、U盘或网络等;后续的anaconda及其安装用到的程序包等可以来自于程序包仓库,此仓库的位置可以为; 本地光盘 本地硬盘 ftp server http server nfs server 安装过程当中,如果向手动指定安装源;敲ESC键,在ESC键后出现的boot提示符下,键入Linux method:这表示提示用户用什么方式来安装 ESC boot:linux method
anaconda的工作过程:两个阶段
安装前配置阶段 安装过程使用的语言; 键盘类型 安装目标存储设备 Basuc Storage:本地磁盘 Special Storage(特殊存储):iSCSI 通常是一个网络硬盘 设定主机名 配置网络接口 时区 管理员密码 设定分区方式及MBR的安装位置; 创建一个普通用户; 选定要安装的程序包; (如果有需要的话有可能运行安装前脚本) 安装阶段 在目标磁盘创建分区并进行格式化; 将选定的程序包安装至目标位置; 安装bootloader; (如果有需要的话有可能运行安装后脚本) 首次启动(不属于anaconda):需要配置几个功能; iptables:是否启动防火墙,对于刚学习linux的同学请关闭它 selinux:也要求关掉 core dump(核心转储):配置核心转储功能可以保证在某一时刻,内核崩溃时, 它能够把内核崩溃那一刻内存中的所有数据给创建成一个映像文件保存在磁盘上。 并被将其数据拿出来在其他系统上分析在上一次内核崩溃的原因,以确定下次配置时绕开这个问题, 而且对内存大小要求不得小于2G。当然前提是有核心转储这个映像文件的分析能力。
anaconda的配置方式:有两种
(1)交互式配置方式; (2)支持通过读取配置文件中定义好的配置项自动完成配置;这些配置项是按照特点语法给出的;遵循特定的语法格式,此文件即为kickstart
安装引导选项:
boot:在boot目录下可以键入的选项有; text:文本安装方式 method:手动指定使用的安装方法 与网络相关的引导选项 ip=IPADDR:静态指明网卡设备的ip地址 netmask=MASK gateway=GW dns=DNS_SERVER_IP 远程访问功能相关的引导选项: vnc vncpasswd='PASSWORD' 启动紧急救援模式: rescue 装载额外驱动: dd www.redhat.com/docs,《installation guide》 ks:指明kickstart文件的位置,来告诉nanconda程序到哪加载kickstart文件;加载方式如下 ks= 如果kickstart在光盘上就使用 ks=cdrom:/PATH/TO/KICKSTART_FILE 如果kickstart在硬盘上就使用 ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE 如果kickstart在HTTP Service上就使用 ks=httpd://HOST[:PORT]/PATH/TO/KICKSTART_FILE 如果kickstart在FTP Service上就使用 ks=ftp://HOST[:PORT]/PATH/TO/KICKSTART_FILE 如果kickstart在HTTPS Service上就使用 ks=httpds://HOST[:PORT]/PATH/TO/KICKSTART_FILE
注意:在我们系统安装完成之后,在家目录中会自动生成一个名为anaconda-ks-cfg文件,这个文件就是kickstarta文件,我们可以把这个文件当模版,借助于它来定义一个我们自己所需要安装系统所使用的kickstart文件
kickstart文件格式
这个文件大体上由三部分组成;如下 命令段: 指定各种安装前配置选项,如键盘类型等; 必备命令 authconfig:认证方式配置 authconfig --erableshadow --passalgo=sha512 bootloadet:定义bootloader的安装位置及相关配置 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" keyboadrd:设置键盘类型 keyboard us lang:语言类型 lang en_US.UTF-8 part:分区布局 part /boot --fstype=ext4 --size=200 part pv.008002 --size=61440 rootpw:管理员密码 rootpw --iscrypted $6$CGsqab6d$Cd.PnnW timezone:指定时区 timezone Asia/shanghai 补充:分区相关的其他命令 clearpart:清除分区 clearpart --all volgroup:创建卷组 volgroup vg0 --pesize=8192 pv.008002 logvol:创建逻辑卷 logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480 可选命令 install OR upgtade:安装或升级; text:安装界面类型,text为tui,默认为gui netwotk:配置网络接口 network --onboot yes --device eth0 --bootproto dhcp --noipv6 firewall:防火墙 firewall --disabled selinux:基于内核的安全访问加固策略库 selinux --disabled halt,poweroff或reboot:安装完成之后的行为; repo:安装时使用的repository repo --name="CentOS" --baseurl=cdrom:sr0--cost=100 url:指明安装时使用的repository,但为url格式; url --url==http://10.1.0.1/cobbler/ks_mirror/6/ 系统安装完成之后禁用防火墙: Centos 6: # service iptables stop # chkconfig iptables off Centos 7: # system stop firewalld.service # system disablr fitrwalld.service 系统安装完成之后禁用selinux 编辑/etc/sysconfig/selinux或/etc/selinux/sysconfig文件,修改SELINUX参数的值为下面其中之一: permissive disabled 立即生效: # getenforce # setenfore 0 程序包段: 指明要安装程序包,以及包组,也包括不安装的程序包 以%packages开头以%end结尾,中间的都表示程序包 %packages @group_name:前面加一个@:这表示安装一个程序包 package:没有@表示单个程序包 -package:表示明确指明不安装的程序包, 有可能为了解决依赖关系会自动被装上 %end 脚本段: %pre:安装前脚本 运行环境:运行安装介质上的微型linux系统环境,命令有限 %post:安装后脚本 运行环境:安装完成的系统
如何定制kickstart文件
# yum install system-config-kickstart # system-config-kickstart 检查语法错误 # ksvalidator KICKSTART_FILE
示例:生成kickstart文件
1)安装生成工具 yum install system-config-kickstart
2)运行此工具(依赖图形界面) systrm-config-kickstart (教室网络环境)依次如下设置
最后点击左上角保存至家目录,保存完之后运行ksvalidator ks.cfg检查脚本是否有语法错误。
3)创建一个新的虚拟机,要求虚拟机桥接网络模式,光盘启动
4)敲ESC,在boot命令行键入以下内容,敲回车即开始安装 此处为一个虚拟机ftp服务地址
示例:制作光盘引导镜像
1)首先需要个kickstart文件,我这里先下载一个kickstart文件。注意下载的文件检查其网络安装url是否正确
2)创建一个新目录
]# mkdir myboot
3)将已经挂载好的光盘中的isolinux整个目录复制到新目录中
]# cp -r /mnt/isolinux/ ./
4)由于此文件是从光盘复制过来是只读的,所以需要先改可写。
改了之后所有的文件都可以根据自己的需要进行修改了,这里修改isolinux.cfg leabel一项
5)复制刚才下载的kickstart文件到myboot目录
6)创建ISO文件系统,执行mkisofs命令,需要退出myboot目录
在当前目录可看到生成一个名为boot.iso的文件
7)将boot.iso镜像拷贝到物理机上,然后创建一个新的虚拟机,使用boot.iso做光盘启动,指定kickstart文件,kickstart文件中是指定通网络安装,因为此时内核还没有启动网络功能,并不会自己配置网络,所以要自己配置一个ip地址。敲回车开始安装
注意:如果需要在安装菜单界面无需指明kickstart文件的话,需要在有dhcp服务的网络环境下安装的时候在上面第四步骤更改如下参数
而且需要kickstart文件指明网络配置如下参数
原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/48722