20170915 运维自动化之系统安装(一)

  • 安装程序启动过程
  • 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:时区
  • 程序包段:指明要安装的程序包组或程序包,不安装的程序包等

    %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盘

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335

推荐阅读更多精彩内容