Linux的自动化安装实现

在介绍自动化安装系统之前让我们来回顾一下系统的启动流程,系统的启动大概分为一下几个步骤:加电自检 boot sequencembr— boot loader –>kernel(initramfs)—>rootfs  /sbin/init大概就是这么几个过程了,接下来来介绍系统的安装,安装系统虽然看起来简单,普通的安装大多数用户会选择一直下一步的安装把,但是想实现高逼格的安装还是需要简单的加工一下,好吧,开始介绍

anaconda:系统安装程序fedora 的一个开源项目

在系统启动的时候就会启动anaconda程序,它默认启动GUI接口,并向内核传递text参数即可,然后启动系统安装

anaconda安装系统分成两个阶段

安装前配置阶段

键盘类型

安装过程中的余元

支持的语言

时区

选择要使用的磁盘设备

分区格式化

选择要安装的程序包

管理员密码

是否启用iptables

是否启用selinux

想必安装过操作系统的小伙伴都应该知道需要经过这么几步,没装过的小伙伴需要亲自去安装体验一下

 

安装阶段

在目标磁盘上创建分区,执行格式化操作

将选定的程序包安装到指定目标磁盘

安装boot loaderinitramfs

 

启动安装过程一般位于引导设备中,后续的anaconda及安装用到的程序包等由以下几种方式:

本地光盘

本地硬盘

ftp服务器

http服务器

nfs服务器

2.jpg

如果想手动指定安装源

在启动后安装esc之后会出现boot:开头的提示符在后面输入linux askmethod选择指定的安装源

boot的引导选项,要使用引导选项请在boot:提示符后输入linux   option(以下的多种方式)

指定语言

linux keymap=gr

 

更新anaconda

linux updates

linux text:文本方式安装

 

askmethod:手动指定安装源

         repo=cdromdevice

         repo=hd:device/path

         repo=http://host/path

         repo=ftp://username:password@hosts/path

         repo=nfs:server:path

 

与网络相关的引导选项

ip=IPADDR

netmask=MASK

gateway=GW

dns=DNS IP

 

启用对安装系统的远程访问

linux vnc vncpassword=密码串

 

启用远程访问

linux  sshd=1

 

进入救援模式

linux rescue

 

kickstart文件格式

命令段:用于配置系统

  install

  firewall

  part

  lvm

 

程序包段:指定要安装的程序包及程序包组

    %packages:表示

    @Base:使用@指定包组

    lftp:直接写程序包名

    -package

    %end:软件包结束

注意:在程序包钱加,不安装相关包

 

脚本段

%pre:安装过程开始钱的预备脚本,所能执行的操作较小,它是一个首先得环境,因为其实仅有简单版的shell环境

%post:所有的软件完成之后执行的脚本,此时具有完整意义的shell环境,但并非所有命令都安装,先确保所有的程序已经安装

%end:脚本结束段

 

kickstart 文件的格式中的命令段中必备命令

authconfig:认证方式配置

         authconfig –usershadow –passalgo=sha512

boot loader :boot loader 的安装位置及相关配置

         boot loader –location=mbr –driveorder=sda –append=”crashkernel=auto rhgb quiet “

kerboard:设定键盘类型

lang:语言类型

part:创建分区

rootpwdroot的密码

timezone:时区

 

可选命令

install  or upgrade

text:文件安装界面

network

firewall

selinux

halt

poweroff

reboot

repo

user:安装完成后创建新用户

url:指定安装源

key –skip:跳过安装号码,使用与rhel版本的操作系统

 

创建kickstart文件

创建kickstart文件的方式

直接手动编辑

         依据已安装好系统上的kickstart文件模版修改

 

使用创建工具:system-config-kickstart,建议使用/root/anaconda-ks.cfg模版生成

     

    1、生成默认语言,键盘类型,时区,以及root的密码,还可以指定安装后自动重启,指定是在字符界面安装操作系统,还是在图形界面安装操作系统

    2.jpg

 

   2、选择安装方式

    1.jpg

 

3、安装boot loader

    3.jpg

    4、分区信息,是否清除之前的MBR,清楚磁盘所有分区表,并初始化磁盘卷标

    5.jpg

    5、网络配置,即可以使用dhcp来获取ip地址,也能自己手动指定地址

    6.jpg

    

   6、密码文件加密方式,有MD5,sha256,sha512等方式

   7.jpg

   7、防火墙设定,禁用或启用

   8.jpg

   8、显示配置,是否安装图形环境

    9.jpg

   9、选择要安装的软件包

    10.jpg

    10、安装前脚本,将自己想要设定的内容写到本初,比如更改issue文件

    11.jpg

    11、安装后脚本,比如给系统添加一个repo文件

    12.jpg

  生成后的ks.cfg文件可以通过ksvalidator命令来检查ks文件的语法错误命令

  命令用法:ksvalidator  ks.cfg

生成好的ks.cfg文件内容

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall –disabled

# Install OS instead of upgrade

install

# Use network installation

url –url="http://10.1.0.1/cobbler/ks_mirror/CentOS-6-x86_64/"

# Root password

rootpw –iscrypted $1$HhTXxIKI$dJ/fz1tpaghO37tA9k7Xl/

# System authorization information

auth  –useshadow  –passalgo=sha512

# Use graphical install

graphical

firstboot –disable

# System keyboard

keyboard us

# System language

lang zh_CN

# SELinux configuration

selinux –enforcing

# Installation logging level

logging –level=info

 

# System timezone

timezone  Africa/Abidjan

# Network information

network  –bootproto=dhcp –device=et0 –onboot=on

# System bootloader configuration

bootloader –location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart –all 

# Disk partitioning information

part / –fstype="ext4" –size=10000

part /boot –fstype="ext4" –size=300

 

%packages

@backup-client

@base

@basic-desktop

@compat-libraries

@console-internet

@debugging

@desktop-debugging

@desktop-platform

@development

@dial-up

@directory-client

@emacs

@fonts

@general-desktop

@graphical-admin-tools

@graphics

@input-methods

@internet-applications

@internet-browser

@office-suite

@server-platform-devel

@technical-writing

@tex

git

 

%end

 

制作引导光盘

    mkdir  /linuxiso

 将ks.cfg文件拷贝到/linuxiso目录下

    cp  /media/isolinux/   /linuxiso

    vim  /linuxiso/isolinux/isolinux.cfg

 将initrd=initrd.img text ks=cdrom:/ks.cfg

   cp  /root/ks.cfg  /linuxiso/

   mkisofs-R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "Centos 6.5 X86_64 boot(可改)" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.5.boot.iso(可改) linuxiso/

 

制作好光盘后,将光盘插入机器(当然这里使用的是虚拟的),调整启动次序为光盘启动,将机器连接到网络中的安装,前提是网络当中有安装源,如果没有安装源可以自己搭建一个ftp的服务器,安装vsftpd启动服务,将光盘当中的所有文件都拷贝到/var/ftp/pub目录下,然后将安装树的源写到ks.cfg文件的url  –url那一行即可,这样就可以实现自动化安装操作系统,但是需要注意的是,当你安装完成操作系统后,你的机器的启动次序还是光盘,那么它将会重复安装操作系统,在这里提醒各位的是,在操作系统安装完成之后将启动次序调整为硬盘启动

 

创建优盘启动

de  if=/dev/cdrom  of=/dev/sdb

 

 

 

 

 

原创文章,作者:fszxxxks,如若转载,请注明出处:http://www.178linux.com/46785

(0)
上一篇 2016-09-19 13:48
下一篇 2016-09-19 13:48

相关推荐

  • Linux iptables配置应用

                    Linux iptables配置应用 概述:    Linux的防火墙体系主要工作在网络层,只对tcp/ip数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux的防火墙体系基于内核编码实现,因…

    系统运维 2016-11-18
  • Linux-第一周作业

    1.计算机组成及其功能 计算机主要分为三部分: A、输入单元:包括键盘、鼠标、扫描仪、手写板、触摸屏等。 B、中央处理器(CPU):含有算术逻辑、控制、记忆等单元。 C、输出单元:例如屏幕、打印机等。 我们通过输入设备(如鼠标与键盘)来将一些数据输入到PC里面,然后再由PC的功能处理成为图表或文章等信息后,将结果传输到输出设备,如屏幕或打印机上面,这是计算机…

    Linux干货 2016-07-07
  • 函数式编程

    当我们说起函数式编程来说,我们会看到如下函数式编程的长相: 函数式编程的三大特性: immutable data 不可变数据:像Clojure一样,默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改。这样一来,可以让你的程序少很多Bug。因为,程序中的状态不好维护,在并发的时候更不好维护。(你可以试想一下如果你的程序有个复杂的状态,当以后别…

    Linux干货 2016-08-15
  • 优秀程序员的十个习惯

    在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需…

    Linux干货 2015-04-01
  • LVM-逻辑盘卷管理

    LVM   一、简介         LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。   二、原理   &nb…

    Linux干货 2016-04-12
  • Python入门之迭代,列表解析,生成器及文件操作

    迭代器是访问集合元素的一种方式,迭代器包含了__iter__()(返回迭代器对象本身)next()(返回迭代器的下一个元素)迭代器只能往前不会退后 以下类型支持迭代 序列类型:list,str,tuple 非序列类型:dict,file 自定义类 通过内建的函数iter()或对象自带方法__iter__可以获取迭代器对象 l1=range(5) iter1=…

    Linux干货 2015-12-13