标签:linux 自动安装
1. anaconda
centos系统安装是通过anaconda程序完成的。那anaconda是如何启动的呢?anaconda如果是运行在硬件上,bootloader直接将其加载就完事了。但如果是这样那anaconda就要具备内核的所有功能。所以anaconda只能是运行在操作系统上,但是此时操作系统还没有安装,那它怎么运行呢?我们一般使用光盘安装系统,光盘可以模拟成磁盘,里面也有0磁道0扇区以及bootloader. bootloader用于加载位于光盘某个目录下的已经编译好的内核,再加载ramdisk,就可以运行一个在光盘上的操作系统。系统会启动init,init便会启动anaconda了。所以说anaconda的确是运行在linux内核之上的。
2. anaconda安装
anaconda支持图形和文本两种模式。默认启动图形安装,但前提是内存够用。目测内存需要大于512M. anaconda把安装过程分为三个阶段:
安装前配置阶段:
需要设定:键盘类型、语言、时区、管理员密码、磁盘及其分区方式和要安装的程序包
安装阶段:
需要进行:在目标磁盘创建分区、执行格式化;将选定的程序包安装至目标磁盘和生成bootloader
第一次运行:
会完成:配置iptables,selinux,core dump
core dump:核心转储,万一系统崩溃,它会将崩溃那一刻内存中的数据以内存映像的格式存到硬盘上,以便于程序员从中定位系统崩溃的问题所在,但如果不是程序员的话,这个功能也就没什么用了。
系统安装的基本分区:根分区和交换分区。但如果根分区放置于逻辑卷,由于grub无法驱动并访问逻辑卷,就必须将/boot单独分区,并使用基本磁盘分区。还有一点需要注意的是,如果把所有的数据都放在根分区上,如果将来系统崩溃或者根崩溃需要重装系统了,就需要格式化根分区了。那么所有放在上面的数据也都会一并销毁。有鉴于此,最好将/usr,/var日志文件,/home(里面的用户数据),/usr/local(里面安装的程序),等等,最好将其单独分区。
3. anaconda配置文件
anaconda支持通过读取配置文件的内容来完成安装过程的配置:kickstart. 系统在安装完成后,会在管理员的家目录生成一个anaconda-ks.cfg的配置文件。这个文件保存的是该系统安装过程中选择的配置。
[root ~]# vim anaconda-ks.cfg # Kickstart file automatically generated by anaconda. #version=DEVEL install # 这是安装而非升级 url --url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/ # url用来指明程序包的获取路径,光盘安装会显示cdrom lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 # 启动网络和网卡 rootpw --iscrypted $6$CGsqab6d$Cd.PnnWtlL5XZAyr9J2zoMqyJH1QodcDp1pQp0uZ1f0Cq4eq9.TMkSQU6IfpvYZEYc32.lmF0lKuQwavnC49a0 # Reboot after installation reboot # 系统安装完成后重启 firewall --disabled # 禁用防火墙,开始学习linux时最好禁用防火墙,不然出现一些莫名其妙的问题,还死活找不到原因 authconfig --useshadow --passalgo=sha512 # 默认指明去shadow中完成认证,加密算法为sha512 selinux --disabled # 这是2.6内核新加入的安全机制,开始学习时最好也是禁用,同防火墙 timezone Asia/Shanghai bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" # 安装mbr,磁盘顺序,后面可以跟很多的磁盘,但这里只有一块。--append:附加的信息作为内核引导的参数 # 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 zerombr # 清除磁盘mbr信息,使用后不再提示初始化磁盘 clearpart --all # 清除目标磁盘上的所有分区 part /boot --fstype=ext4 --size=200 # part指明一个分区、/boot挂载点、--fstype文件类型 part pv.008002 --size=61440 # 指明一个物理卷PV,后面的数字唯一标识此pv的,随意,只要不和其他pv相同即可 volgroup vg0 --pesize=8192 pv.008002 # 创建卷组、卷组名字、pe大小、从哪个物理卷中创建 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/OOXX # 额外要使用的yum仓库 # ----------------------------------以上为配置段---------------------------------- %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 ibus-table-cangjie ibus-table-erbi ibus-table-wubi 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+iPlDwHY81md430yiNf9w== root@server.magelinux.com EOF # Enable funcd sed -i ‘s@certmaster =.*@certmaster = 172.16.0.1@g‘ /etc/certmaster/minion.conf /sbin/chkconfig funcd off # Set the hostname 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 puppet agent sed -i ‘/\[main\]/a server=server.magelinux.com‘ /etc/puppet/puppet.conf /sbin/chkconfig puppet off # set hosts echo ‘172.16.0.1 server.magelinux.com server‘ >> /etc/hosts # yum repo %end # ----------------------------------以上为脚本段---------------------------------- # -package表示在包组中不安装该包。但如果有其他程序包依赖此包的话,还是会安装 # 脚本段分为%pre引导段和%post引导段。%pre为安装前脚本,安装过程开始之前要执行的脚本。注意:此时的Linux系统环境为微缩版环境,因此脚本应该较简单;而%post则为安装后脚本,安装过程完成之后要执行的脚本。注意:脚本执行环境为完整的已经安装完成的系统。
anaconda在centos5,6,7上的版本都不相同,导致kickstart配置信息,并不一定完全兼容
bootloader既可以放在mbr中,也可以放在安装操作系统的分区的第一个磁盘块中,但启动时,还是需要mbr中的bootloader进行引导。所以只是个备用。
4. 配置kickstart的方式
1) 手动编辑配置文件,但可能出现语法错误
2) system-config-kickstart,GUI工具。需要在图形界面下启动ssh -x root@ 程序包名同命令名,但是该工具不支持创建卷组和逻辑卷
安装过程如何获取并使用kickstart文件?
放置于安装程序能够获取到的位置。如网络文件服务器和放置于光盘镜像。如果放置在网络服务器上,安装程序得支持网络功能,且能够访问到网络文件服务器;但是光盘是只读的如何将kickstart放进去呢?使用使用光盘启动后,在安装界面下敲ESC键,就会出现boot提示符。此为安装引导选项,可以在后面输入很多选项
boot提示符常用选项:
linux:安装linux,默认安装
text:文本安装
与网络相关的引导选项:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
ifname=NAME:MAC_ADDR
指明获取 kickstart 文件的路径:ks=
DVD drive ks=cdrom:/path/to/kickstart_file
HTTP Server ks=http://server_ip:port/path/to/kickstart_file
HTTPS Server ks=https://server_ip:port/path/to/kickstart_file
FTP Server ks=ftp://serverip:port/path/to/kickstart_file
NFS Server ks=nfs:server_ip:/path/to/kickstart_file
5. kickstart安装系统过程
5.1. 挂载安装盘并取出isolinux目录,因为此目录才是引导安装用的
[root ~]# mount -r /dev/cdrom /media/ [root media]# cp -r /media/isolinux/ /tmp/cdrom/
5.2. 查看isolinux目录下的文件信息制作光盘镜像
[root cdrom]# cd /tmp/cdrom/isolinux/ [root cdrom]# cp /root/anaconda-ks.cfg ks.cfg # 复制配置文件并改名 [root isolinux]# ll total 38572 -r--r--r-- 1 root root 2048 Apr 16 11:24 boot.cat -r--r--r-- 1 root root 84 Apr 16 11:24 boot.msg -r--r--r-- 1 root root 334 Apr 16 11:24 grub.conf -r--r--r-- 1 root root 34815427 Apr 16 11:24 initrd.img -r--r--r-- 1 root root 24576 Apr 16 11:24 isolinux.bin # 引导程序 -r--r--r-- 1 root root 936 Apr 16 11:24 isolinux.cfg -r--r--r-- 1 root root 165080 Apr 16 11:24 memtest -r--r--r-- 1 root root 151230 Apr 16 11:24 splash.jpg -r--r--r-- 1 root root 2215 Apr 16 11:24 TRANS.TBL -r--r--r-- 1 root root 163728 Apr 16 11:24 vesamenu.c32 # 图形界面是由该文件提供 -r-xr-xr-x 1 root root 4152336 Apr 16 11:24 vmlinuz # boot.cat和isolinux.bin负责读取配置文件 # 最后会启动内核和initrd,因为光盘也是一个小系统 [root isolinux]# cat boot.msg splash.lss # 这是安装过程中背景图片 - Press the 01<ENTER>07 key to begin the installation process. # 显示的提示信息 [root isolinux]# cat isolinux.cfg # 查看配置文件 default vesamenu.c32 #prompt 1 timeout 3 # 进入安装界面需要等待的时间,设置为3配合下面的指定ks.cfg文件位置就能实现加载光盘后立即进入系统安装 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 # boot提示符后键入linux选项就是加载此段信息 menu label ^Install or upgrade an existing system # 显示的提示信息 menu default kernel vmlinuz append initrd=initrd.img ks=cdrom:/ks.cfg # 新增指明ks文件所在位置,实现只需敲回车键就能自动安装 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 -
5.3. 制作光盘镜像
[root isolinux]# cd /tmp [root tmp]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 X86_64 boot disk" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso cdrom/ # 此命令选项很多,也很难看懂,依葫芦画瓢就好 # --no-emul-boot:不模拟引导启动过程 # --boot-load-size:引导时装载的大小 # -V:光盘标签信息 # -b:指明引导程序 # -c:指明第二阶段,显示菜单的引导文件 # -o:指明创建后存放的位置 # 由于指明针对cdrom目录进行创建,所以要站在cdrom之外。而且-b和-c都无需再指明/cdrom
安装盘制作好后,就能像官方镜像一样安装了,前提是指明安装包得指定好系统安装树才行
小提示:安装时可以使用硬盘为第一启动顺序,光盘为第二。因为bootloader加载时会发现硬盘啥都没有,便会继续加载光盘。等到系统安装完成后,就会直接从硬盘启动了
END
标签:linux 自动安装
原文地址:http://10042224.blog.51cto.com/10032224/1636256