- 安装程序启动过程
- anaconda工作过程
- 制作引导U盘
- 制作全功能安装U盘
一、安装程序启动过程
- isolinux/boot.cat:相当于MBR
- isolinux/isolinux.bin:相当于stage2
- isolinux/isolinux.cfg:相当于grub.conf
每个对应的菜单选项:- 加载内核:isolinuz/vmlinuz
- 向内核传递参数:append initrd=initrd.img...
- 装载根文件系统,并启动anaconda
默认启动GUI接口
若是显式指定使用TUI接口:向内核传递text参数即可
(1)第一个选项,按tab键,在后面增加text
(2)按ESC键:boot: linux text
实验:进入rescue模式的三种方法
第1种:直接选择rescue模式,回车进入
第2种:选择第1个选项,Tab进入编辑页面,添加rescue后进入
第3种:按住Esc键,输入rescue或者linux rescue
二、anaconda工作过程
(一)anaconda安装系统的三个阶段:
安装前配置阶段、安装阶段、图形模式首次启动配置
-
安装前配置阶段
- 安装过程使用的语言
- 键盘类型
- 安装目标存储设备
- 设定主机名
- 配置网络接口
- 时区
- 管理员密码
- 设定分区方式及MBR的安装位置
- 创建一个普通用户
- 选定要安装的程序包
-
安装阶段
- 在目标磁盘创建分区,执行格式化操作等
- 将选定的程序包安装至目标位置
- 安装bootloader和initramfs
-
图形模式首次启动
- iptables
- selinux
- core dump
(二)anaconda安装包来源:
- 本地光盘
- 本地硬盘
- NFS
- URL:
- ftp server: yum repository
- http server: yum repostory
- 实验:选择网络安装源
在启动时按Esc键,输入linux askmethod 指定安装时询问安装包来源
提示选择安装源,选择URL
选择网址配置方式,选择默认DHCP方式,也可以自己配置静态地址
配置网络安装源地址
(三)anaconda配置方式:
- 第1种:交互式配置方式
- 第2种:通过读取事先给定的配置文件(kickstart)自动完成配置
kickstart文件按特定语法给出的配置选项,可以实现anaconda自动化安装
(1)kickstart文件格式:按次序为命令段、程序包端、脚本段
-
命令段:指明各种安装前配置,必备命令如下:
- authconfig:认证方式配置
authconfig --useshadow --passalgo=sha512
- bootloader:bootloader的安装位置及相关配置
bootloader --location=mbr --driveorder=sda -append="crashkernel=auto rhgb quiet"
- keyboard:设定键盘类型
- lang:语言类型
- part:创建分区
- rootpw:指明root的密码
- timezone:时区
- authconfig:认证方式配置
-
程序包段:指明要安装的程序包组或程序包,不安装的程序包等
%packages //程序包段开始标记 @group_name //安装包组 package //安装的包 -package //不安装的包(用于排除包组中特定的包) %end //程序包段结束标记
-
脚本段:
- %pre:安装前脚本,运行于安装介质上的微型Linux环境
- %post:安装后脚本,运行于安装完成的系统
(2)创建kickstart文件
-
直接手动编辑:依据模板修改
-
使用创建工具:system-config-kickstart
依据模板(e.g. /root/anaconda-ks.cfg)修改并生成新配置 -
检查ks文件的语法错误:ksvalidator
ksvalidator /PATH/TO/KICKSTART_FILE -
实验1:使用system-config-kiskstart自动生成kickstart文件
配置基本信息,可以修改时区、root账户密码,安装后重启和文本模式安装简易勾选,便于后期自动化安装
安装源可以自定义,这里选择网络安装源
boot loader选项设置
分区设置,简易清除MBR(防止硬盘旧信息影响安装),设置好磁盘分区信息
网络配置,可以选择DHCP自动获取ip,也可以手动设置静态地址
认证原乡,选择密码加密方式等
建议关闭SELinux和防火墙
选择是否安装图形环境,视需求而定
选择要安装的包
编写安装前脚本,这里没有设置
编写安装后脚本,这里写了一个yum源配置的脚本
设置好后,将导出文件(如ks.cfg)保存。
- 实验2:按照指定kickstart文件安装系统
思路:只需在安装程序启动时,在安装菜单项界面,按Esc键输入kickstart文件路径,系统就可以按照kiskstart文件的要求安装
光盘用于启动,当进入安装菜单项,按Esc键,输入linux ks=http://172.18.250.79/ks.cfg
(将ks.cfg放在httpd服务器上)回车,系统会自动按照ks.cfg文件的说明自动安装
查看http://172.18.250.79/ks.cfg,确认能够正常访问
正常开始安装过程
三、制作引导U盘
(1)系统光盘中的isolinux目录
- isolinux.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压缩)
(2)制作引导U盘:
-
基本过程:
复制isolinux目录下的文件--->设置启动项参数--->制作iso文件(mkisofs)--->创建U盘启动盘(dd) -
步骤:
-
cp -r /misc/cd/isolinux/ /tmp/myiso/
将光盘下的isolinux目录移动到新目录下
- 编辑
/tmp/myiso/isolinux/isolinux.cfg
文件中的启动菜单如下,实现按照网络上的kickstart文件实现网络安装(网络安装设置在ks.cfg中),同时默认从本地硬盘启动防止误操作
label linux net-install menu label ^Install a system over the internet kernel vmlinuz append initrd=initrd.img ks=http://172.18.250.79/ks.cfg label local menu label Boot from ^local drive localboot 0xffff menu default
-
cd /tmp; 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 myiso/
生成iso文件
-
dd if=/root/boot.iso of=/dev/sdb
生成启动U盘
- U盘引导启动画面,安装菜单项和设置的相同
-
-
mkisofs命令选项:
-R 使用Rock RidgeExtensions
-J 使用Joliet 格式的目录与文件名称
-T 建立文件名的转换表
-v 执行时显示详细的信息
--no-emul-boot 非模拟模式启动
--boot-load-size 4 设置载入部分的数量
--boot-info-table 在启动的图像中显示信息
-b 指定在制作可开机光盘时所需的开机映像文件
-c 制作可开机光盘时,会将开机映像文件中的no-eltorito-catalog 全部内容作成一个文件。
-o 指定映像文件的名称
四、制作全功能安装U盘
(1)准备相关文件,配置yum源
-
cp -r /misc/cd/ /app/fulliso
复制光盘文件至指定文件夹/app/fulliso -
rm -rf /app/fulliso/repodata/*
删除/app/fulliso/repodata下的所有文件
-
cp /misc/cd/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml /app/fulliso/repodata/
复制光盘repodata目录下的包组信息文件(xml文件) -
cd /app/fulliso
进入/app/fulliso目录 -
createrepo -g ./repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml ./
根据包组信息文件重新建立yum源数据库
-
find /app/fulliso/ -name TRANS.TBL -exec rm {} \;
删除/app/fulliso目录下所有TRANS.TBL文件(制作iso文件时会自动生成,所以现在手动删除)
(2)配置kickstart文件:
可以参考/root/anaconda-ks.cfg文件作适当的修改,将修改后的文件保存至/app/fulliso目录下,例如以下kickstart文件ks6.cfg以及ks6-mini.cfg分别定义了桌面安装和最小化安装的两套自动化安装方案
vim /app/fulliso/ks6.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --enabled --service=ssh
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password
rootpw --iscrypted $1$Z3Phclpd$eSd3ZHMEa0ohzi7KKxM8Y1 //使用openssl passwd -1命令生成加密密码
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text //文本模式安装
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled //关闭selinux
# Installation logging level
logging --level=info
# Reboot after installation
reboot //安装后重启
# System timezone
timezone Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=yes
# System bootloader configuration
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr //安装前先清除MBR
# Partition clearing information
clearpart --all //安装前先清除所有分区信息
# Disk partitioning information
part /boot --fstype="ext4" --size=1000
part / --fstype="ext4" --size=50000
part /app --fstype="ext4" --size=40000
part swap --size=2048
%post
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/base.repo <<eof
[base]
name=base
baseurl=file:///misc/cd
gpgcheck=0
eof
%end
%packages
@base
@basic-desktop
@core
@debugging
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
abrt-gui
certmonger
device-mapper-persistent-data
genisoimage
krb5-workstation
libXmu
mtools
oddjob
pam_krb5
pax
python-dmidecode
samba-winbind
sgpio
wodim
%end
vim /app/fulliso/ks6-mini.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --enabled --service=ssh
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password
rootpw --iscrypted $1$GjUVnxcA$Q1BQF.c0fS/9RERcqz3hQ. //使用openssl passwd -1命令生成加密密码
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text //文本模式安装
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled //关闭selinux
# Installation logging level
logging --level=info
# Reboot after installation
reboot //安装后重启
# System timezone
timezone Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=yes
# System bootloader configuration
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr //安装前先清除MBR
# Partition clearing information
clearpart --all //安装前先清除所有分区信息
# Disk partitioning information
part /boot --fstype="ext4" --size=1000
part / --fstype="ext4" --size=50000
part /app --fstype="ext4" --size=40000
part swap --size=2048
%post
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/base.repo <<eof
[base]
name=base
baseurl=file:///misc/cd
gpgcheck=0
eof
%end
%packages
@core
@server-policy
@workstation-policy
autofs
%end
(3)定制启动菜单:
定制启动菜单,菜单1执行安装带桌面的系统,菜单2执行安装mini系统,菜单3执行手动安装,菜单4执行从本地硬盘启动,编辑/app/fulliso/isolinux/isolinux.cfg文件如下:
vim /app/fulliso/isolinux/isolinux.cfg
default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.9!
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-desktop //菜单1:桌面安装
menu label Install a ^desktop system
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ks6.cfg
label linux-mini //菜单2:最小化安装
menu label Install a m^ini system
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ks6-mini.cfg
label manual //菜单3:手动安装
menu label Install a system ^manually
kernel vmlinuz
append initrd=initrd.img
label local //菜单4:默认从硬盘启动
menu default
menu label Boot from ^local drive
localboot 0xffff
(4)制作ISO文件:
执行mkisofs命令,将生成的iso文件保存至/root目录下,名称为centos6.iso
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 autoinstall" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.iso /app/fulliso
(5)制作启动U盘
dd if=/root/centos6.iso of=/dev/sdb
(6)总结
通过比较制作启动U盘和制作全功能安装U盘的区别我们可以看到两者的步骤是很相似的,制作全功能安装U盘只是在制作启动U盘的基础上做了一些调整。
-
制作全功能U盘需要将光盘上的所有文件都复制过来,所以增加了一些调整,包括:使用createrepo工具重建yum源数据库,删除TRANS.TBL文件
-
需要调整kickstart文件,将安装源调整为CD安装
-
在调整isolinux.cfg文件时,需要注意对kickstart文件的指向要调整为CD目录上
-
通过这些操作,系统安装过程所需的文件全部集成在iso文件中,实现了不依赖网络的全功能安装U盘
网友评论