系统安装过程
安装程序
1. CentOS系统安装
- 名称解释
anaconda: CentOS图形界面安装向导程序- gui:图形窗口
- tui: 基于图形库curses的文本窗口
1.1 安装程序启动过程
-
启动界面选择
默认启动GUI接口
若是显式指定使用TUI接口:向内核传递text参数即可- 按tab键,在后面增加text
例如vmlinuz initrd=initrd.img text
- 按ESC键:
boot: linux text
- 按tab键,在后面增加text
-
系统安装引导设备
启动安装过程一般位于引导设备;后续的anaconda及其安装用到的程序包等可来自下面几种方式:- 本地光盘
- 本地硬盘
- NFS
- URL:
4.1 ftp server: yum repository
4.2 http server: yum repostory
-
光盘中系统启动文件
[root@hai7 ~]$cd /mnt/cdrom/isolinux/ [root@hai7 isolinux]$ ls boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest splash.png TRANS.TBL vesamenu.c32 vmlinuz
- MBR:对应文件 isolinux/boot.cat
- stage2: grub第二阶段对应文件isolinux/isolinux.bin
- 配置文件:启动菜单对应文件isolinux/isolinux.cfg,其定义的是如下画面
[root@hai7 ~]$cat /mnt/cdrom/isolinux/isolinux.cfg
label linux <==安装升级
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz <==加载内核,下同
append initrd=initrd.img <==向内核传递参数initrd.img,下同
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img 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 -
- 进入菜单各选项的方法
-
在菜单栏上下键选择,回车确认选择。
-
如图箭头提示语句,上下键选择对应选项后,按 [tab】键,可以编辑选项,提示语句对应配置文件中的label
例如:选择安装项,按[tab]键,出现下图所示画面
而选择救援模式 ,按[tab】键,显示下图界面
这两项只是句尾不同,救援模式多出单词rescue,所以编辑安装模式,在词尾加上rescue可以进入安全模式 -
菜单界面按[esc]键,出现如下画面,这里暂时称为[root:]界面,下面还要用到
直接输入isolinux/isolinux.cfg文件中对应label,进入对应项目,例如boot:rescue
就会进入救援模式
-
1.2 在[boot : ]界面引用其他参数安装系统
-
调用仓库文件实现安装
- 找一个合适的yum源,这里使用另一台本地主机配置的远程http源
[root@hai6 ~]$cd /var/www/html/ [root@hai6 /var/www/html]$mkdir -pv centos/6 [root@hai6 ~]$mount /dev/sr0 centos/6/ 临时挂载,保存要写在文件/etc/fstab中 [root@hai6 ~]$ss -ntl 确定http服务80端口是否启动
- 在需要安装系统的机器上操作,启动菜单按[esc]键,进入[boot:]界面,配置网络,指定yum仓库路径,回车
root:linux ip=172.20.50.205 netmask=255.255.0.0 repo=http://172.20.129.251/centos/6
-
进入如下画面,要测试媒体,跳过
-
进入安装画面后,选择语言,键盘布局,设备类型选择基础,然后弹出界面要格式化磁盘,选择yes
-
指定主机名与网络,这里网络不需要配了,第2步时候已经默认指定,设置主机名后,next
-
选择时区,将左下角System clock uses UTC去掉,然后next
-
设置root口令,设置完成后,next
-
分区,根据情况选择,这里选择默认分区Replace Existing,点击左下角Review and modify partitioning layout可以查看默认分区结构,next
-
进入如下画面,安装GRUB,如果在箭头所示项打钩,可以设置grub密码,加密菜单项
-
选择需要安装的程序,这里选择最小化安装
-
安装重启后,如果需要安装图形界面,要安装工具包,首先配置yum源,在/etc/yum.repos.d/建一个以repo结尾的文件,配置本地yum路径,也就是光盘挂载点
'仓库配置文件内容' [root@hai7 ~]$cat /etc/yum.repos.d/v9.repo [v9] baseurl=file:///mnt/ gpgcheck=0
- 安装桌面, 需要grouplist包组中的Desktop,安装成功后,切换到图形检测即可
[root@localhost ~]$yum groupinstall desktop
1.3 在[boot : ]界面手动指定安装源
-
askmethod: 手动指定使用的安装方法
- 与网络相关的引导选项:
- ip=IPADDR
- netmask=MASK
- gateway=GW
- dns=DNS_SERVER_IP
- ifname=NAME:MAC_ADDR
- 与远程访问功能相关的引导选项:
- vnc
- vncpassword=‘PASSWORD’
- 与网络相关的引导选项:
-
安装步骤
-
在菜单界面按下[esc]进入[boot:]界面输入
boot: linux askmethod
回车,选择语言,键盘布局,弹出界面如下所示
-
选择URL安装,出现配置网络界面,这里选择DHCP自动获取,Manual configuration为手动配置,OK下一步
-
在如图所示位置输入远程服务器地址,后续进入安装界面
-
2. 半自动化安装
2.1 自动化安装支持的安装仓库路径
- centos6
- DVD drive repo=cdrom :device
- Hard Drive repo=hd:device/path
- HTTP Server repo=http://host/path
- HTTPS Server repo=https://host/path
- FTP Server repo=ftp://username:password@ host/path <==支持用户密码验证
- NFS Server repo=nfs:server:/path
- ISO images on an NFS Server repo=nfsiso:server:/path
- centos7
- Any CD/DVD drive inst.repo=cdrom
- Hard Drive inst.repo=hd:device:/path
- HTTP Server inst.repo=http://host/path
- HTTPS Server inst.repo=https://host/path
- FTP Server inst.repo=ftp://username:password@ host/path
- NFS Server inst.repo=nfs:[options:]server:/path
2.2 自动化安装需要的kickstart文件,也叫应答文件
-
指明kickstart文件的位置: ks=
- DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
- Hard drive: ks=hd:device:/directory/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
- NFS server:ks=nfs:host:/path/to/KICKSTART_FILE
-
kickstart文件的格式
- 命令段:指明各种安装前配置,如键盘类型等
- 程序包段:在首尾中指明要安装的程序包组或程序包,不安装的程序包等
- %packages :程序包段首部,表示以下为添加项
- @group_name:@表示包组
- package:需要加入的包
- -package:’ - '表示卸载包
- %end:添加项结尾,与首部对应,成对出现
- 脚本段:添加用户自定义脚本,实现自动化定义环境
- %pre: 安装前脚本
运行环境:运行于安装介质上的微型Linux环境 - %post: 安装后脚本头部
运行环境:安装完成的系统,脚本在首尾中写入 - %end:添加项结尾,若与程序段同时使用,一个结尾即可
- %pre: 安装前脚本
-
命令段中的命令:
1. 必备命令- authconfig: 认证方式配置
authconfig --useshadow --passalgo=sha512
- bootloader:bootloader的安装位置及相关配置
bootloader --location=mbr --driveorder=sda – append="crashkernel=auto rhgb quiet"
- keyboard: 设定键盘类型
- lang: 语言类型
- part: 创建分区
- rootpw: 指明root的密码
- timezone: 时区
- authconfig: 认证方式配置
- 可选命令
1. install OR upgrade
2. text: 文本安装界面
3. network
4. firewall
5. selinux
6. halt
7. poweroff
8. reboot
9. repo
10. user:安装完成后为系统创建新用户
11. url: 指明安装源
12. key –skip 跳过安装号码,适用于rhel版本
- 创建kickstart文件的方式
- 直接手动编辑
依据某模板修改 - 可使用创建工具:system-config-kickstart
依据某模板修改并生成新配置/root/anaconda-ks.cfg - 检查ks文件的语法错误:ksvalidator
ksvalidator /PATH/TO/KICKSTART_FILE
- 直接手动编辑
2.3 应答文件文本界面格式
- 参考操作系统安装后生成的anaconda-ks.cfg文件来制作应答文件
[root@localhost ~]$ls
anaconda-ks.cfg
'复制一份来制作应答文件,这里命名为centos.cfg'
[root@localhost ~]$cp anaconda-ks.cfg centos.cfg
- 制作一个配置文件,后续实验用
'拿第1步中复制过来的文件作为模板'
[root@localhost ~]$vi centos.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
url --url=http://172.20.129.251/centos/6
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 172.20.50.205 --netmask 255.255.0.0 --noipv6
rootpw --iscrypted $6$vEJuwbiETLK/6l.A$gOvtK6T66QxCDEjcqFoX1fQJZzEQRku64PyerKlPotaampsfHdh7MN7w.Ccw55QGgocuTaRMh79mTTCLcOWo.0
firewall --disabled <==禁用防火墙
authconfig --enableshadow --passalgo=sha512 <==验证方法,默认即可
selinux --disabled <==禁用selinux
timezone Asia/Shanghai <==时区
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" <==boot安装项
# 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 <==清空分区表
clearpart --linux --drives=sda <==格式化磁盘
part /boot --fstype=ext4 --size=1024 <==分区部分
part / --fstype=ext4 --size=50000
part /data --fstype=ext4 --size=30000
part swap --size=2048
#part /boot --fstype=ext4 --size=500
#part pv.008002 --grow --size=1
repo --name="CentOS" --baseurl=http://172.20.129.251/centos/6 --cost=100 <==安装获取源地址
%packages <==程序包段首部
@core
@server-policy
@workstation-policy
autofs <==光盘自启动服务
vim-enhanced <==vim工具
%post <==脚本首部
useradd v9 <==创建用户
echo 123456 | passwd --stdin v9 &> /dev/null <==修改密码
mkdir /etc/yum.repos.d/bak <==建立本地YUM源
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
cat >/etc/yum.repos.d/v9.repo <<EOF
[V9]
name=v9
baseurl=file:///misc/cd
gpgceck=0
EOF
mkdir /root/.ssh <==基于key验证
cat > /root/.ssh/authorized_keys <<EOF <==导入需要验证的主机key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOFQkBK9AUEad/S8edx9+vUpIOvjUVoWBO60dN85YdN4R8HtQQROYGT0MKYsld9FiukDR8zZaHUZdmet2uG4VucOiII/vOEepikuw9XFexi1wWiblTdr8565EYIhm5GBLgYDesnTu/3vUBDy7A8+tdNB3I2Y8zWIdJ1bZh5NhIOYkrmjUYoGpPr1SzppT4xv0dAk/657TpLfSnZKTl3gz/tUJ44phUuqSvQjZp756/R8vpFg/uzDW2Ig8IiDug5vvRMaMR/86dbDJh6+POSg4Imbh7JvGDGRxdAwbC0b4PKaFaMx9DlAZhtT5E9/a2dhLE3Tss2I8X1jkKqphKXtGj root@hai7-7
EOF
chmod 600 /root/.ssh/authorized_keys <==修改文件权限
chmod 700 /root/.ssh <==修改目录权限
%end <==自编内容收尾
- 写好配置文件将其放在公共目录中,这里选择放在http远程源目录中
[root@localhost ~]$scp centos.cfg 172.20.129.251:/var/www/html/ks/
- 安装语法检查工具
[root@hai6 ~]$yum install system-config-kickstart
- 检查语法
[root@hai6 ~]$ksvalidator /var/www/html/ks/centos.cfg
2.4 在图形界面修改和编制应答文件
在图形界面输入命令system-config-kickstart
弹出界面如下,可以将系统现有的应答文件点击左上角file读入修改,也可以手工填写
- Basic Configuration
- Installation Metod,安装方法
- Boot Loader Options
选择install new boot loader。需要设置GRUB密码可以选填GRUB Options设置 - Partition information 分区信息
- Network Configuration网络获取,可以手动指定
- Authentication验证方法,默认就可以
- Firewall Configuration防火墙和SElinux选项,可以禁用或启用
- Display Configuration是否安装图形环境,不安装去掉对勾即可
- Package Selection选择需要安装的包,在CentOS7中有BUG需要将本机yum仓库配置文件名改为[development]
- Pre-installation Script安装前脚本
- Post-installation Script安装后脚本
- 保存到指定目录即可。
2.5 半自动化安装
- 光盘引导时,在载入画面按[esc]进入光盘菜单,再按[esc]进入[boot:]界面。
安装CentOS7需要用CentOS7光盘,CentOS6使用CentOS6光盘
另外如果安装图形界面内存需要大于1G另外如果安装图形界面内存需要大于1G - 利用应答文件安装系统在[boot : ]界面输入如下内容,回车,等待安装完成即可
boot:linux ks=http://172.20.129.251/ks/centos.cfg ip=172.20.50.205 netmask=255.255.0.0
3. 自制启动程序
-
系统光盘中isolinux目录列表
- solinux.bin
光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目 - isolinux.cfg
isolinux.bin的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件 - vesamenu.c32
是光盘启动后的安装图形界面,也属于SYSLINUX项目,menu.c32版本是纯文本的菜单 - Memtest
内存检测,这是一个独立的程序 - splash.jgp
光盘启动界面的背景图 - vmlinuz
内核映像 - initrd.img
是ramfs (先cpio,再gzip压缩)
- solinux.bin
-
创建引导光盘
- 建两个目录,一个放引导程序,一个放应答文件
[root@hai6 /data]$mkdir /data/boot [root@hai6 /data/boot]$mkdir /data/ksdir
- 将光盘中引导程序放到此目录中
[root@hai6 /data/boot]$cp -r /misc/cd/isolinux/ .
- 将应答文件放入ksdir中
[root@hai6 /data/boot]$mv centos.cfg ksdir/
- 定制安装菜单,修改isolinux.cfg文件
label linux menu label ^Install or upgrade an existing system <==修改前 menu label ^Auto Install an system <==改为自动安装,不需要升级 append initrd=initrd.img <==修改前 append initrd=initrd.img ks=cdrom:/ksdir/centos.cfg <==修改后,指定应答文件目录
也可以设置多个安装项目,例如一个最小化安装,一个带桌面安装,将本地启动设为默认选项,防止自动安装启动覆盖原系统,其中’ ^ '表示快捷键,如下所示,如果按M就会跳到mini行
#prompt 1 timeout 600 <==等待时间为600的十分之一,60秒 label mini menu label Auto Install an ^Mini system kernel vmlinuz append initrd=initrd.img ks=cdrom:/ksdir/centos.cfg label desktop menu label Auto Install an ^Desktop system kernel vmlinuz append initrd=initrd.img ks=cdrom:/ksdir/centos_desktop.cfg label local menu default <==设定为默认启动项 menu label Boot from ^local drive localboot 0xffff
-
将以上内容刻录成光盘,输入以下命令,其中/data/boot/为绝对路径,其它路径都是相对于/data/boot/的相对路径
[root@hai6 ~]$mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/boot/
-
将生成的镜像文件拷贝到windows中
[root@hai6 ~]$sz boot.iso
-
在需要安装系统的主机上挂载此镜像文件,进入安装目录,选择对应项进行安装
-
创建U盘启动盘
- 将生成的镜像文件,转换为U盘可以识别的格式
[root@hai6 ~]$isohybrid boot.iso
- 生成的镜像文件写入U盘中
[root@hai6 ~]$dd if=boot.iso of=/dev/sdb dd if=/dev/sr0 of=/dev/sdb
-
mkisofs命令选项
- -o:指定映像文件的名称。
- -b:指定在制作可开机光盘时所需的开机映像文件。
- -c:制作可开机光盘时,会将开机映像文件中的 no-eltorito-catalog 全部内容作成一个文件。
- -no-emul-boot:非模拟模式启动。
- -boot-load-size 4:设置载入部分的数量
- -boot-info-table:在启动的图像中现实信息
- -R 或 -rock:使用 Rock RidgeExtensions
- -J 或 -joliet:使用 Joliet 格式的目录与文件名称
- -v 或 -verbose:执行时显示详细的信息
- -T 或 -translation-table:建立文件名的转换表,适用于不支持 Rock Ridge Extensions 的系统上
官方文档:《Installation Guide》