ubuntu linux pxe 无人值守安装

在很多台机器都要安装同一个操作系统的情况下,可以使用 pxe 和 kickstart 来自动安装系统,无人值守安装,可以大幅度的减少工作量

简介:最近单位存了两百多台服务器,分批出给客户,客户要求的是ubuntu server 12.04,64位系统,要求我们装好后发货,第一批是76台,想想这数量,一台一台安装,每一台的安装向导,分区,软件包,账号密码这些都得填写,这样下去,那得到什么时候了?

无人值守安装的过程

→机器启动,并从网卡引导→网卡获取ip地址,获取tftp 服务器地址,以及启动文件名称→从tftp服务器下载启动文件→读取相关配置→启动安装

于是乎,就用起pxe+kickstart 来安装吧,说到这两个东西,相信大家肯定熟悉,龙其是做为深资的装机专业户,哈哈,好了,进入正题

1 本次环境:

硬件:cisco UCS C220M3

软件:ubuntu server 12.04 64位

2 安装及配置,首先需要安装 apache tftpserver kickstart 配置工具

sudo apt-get install system-config-kickstart tftpd-hpa tftp-hpa apache2

启动 tftp和apache

sudo /etc/init.d/tftp-hpa start
sudo /etc/init.d/apache2 start

这里我们使用 ubuntu 12.04的镜像,直接挂到目录下,可以通过wget 下载镜像,或者使用xmanager、winscp 从本地上传到服务器,均可,看你更习惯用哪种方法,本次环境就,就放到系统 / 目录下

在网站目录建立一个文件夹,用于挂载镜像

sodu mkdir /var/www/html/ubuntu12.04

挂载镜像文件到目录,并设置开机自动挂载

sudo mount -t iso9660 -r -o ro,loop /ubuntu-12.04.5-server-amd64.iso /var/www/html/ubuntu12.04
sudo echo "/ubuntu-12.04.5-server-amd64.iso /var/www/html/ubuntu12.04 iso9660 ro,loop,defaults 0 0" >> /etc/fstab

创建ks目录

sudo mkdir /var/www/html/ks

复制启动文件到tftpboot目录

sudo cp -arf /var/www/html/ubuntu12.04/install/netboot/* /var/lib/tftpboot

添加 ks.cfg 文路径,在install标签下的append 添加ks=http://10.0.3.8/ks/ks.cfg

sudo nano /var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/txt.cfg
default install
    label install
    menu label ^Install
    menu default
    kernel ubuntu-installer/amd64/linux
    append ks=http://10.0.3.11/ks/ks.cfg vga=788 initrd=ubuntu-installer/amd64/initrd.gz --quiet  //本次环境服务器的IP为10.0.3.11
label cli
    menu label ^Command-line install
    kernel ubuntu-installer/amd64/linux
    append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet

ks配置文件:

这个配置文件,可以用kickstart工具来生成,启动这个工具的话,需要图形界面

启动工具命令

sudo system-config-kickstart

截图如下(左侧是各种类型,也就是我们安装系统的时候,那些选项啦),右侧是设置的内容,全部设置好后,点击左上角的,File,然后点击Save File,就保存到/var/www/html/ks目录下

pxe1

3 DHCP配置

我这里环境,使用的是 cisco(思科)交换机,做的dhcp,下面贴上Cisco(思科)交换机dhcp 的命令

进入全局配置模式

ip dhcp pool pxe
  network 10.0.3.0 255.255.255.0
  bootfile pxelinux.0
  next-server 10.0.3.11
  default-router 10.0.3.254
  dns-server 10.0.2.2 10.0.2.1
  lease 0 2

简述:

pxe为dhcp pool的名字,可以自行定义

network 要分配的地址的网段

bootfile 指定启动文件,注意后面是pxelinux.0,是数字0,不是字母o

default-routeer 和dns-server 为网关和dns,不是必须指定的参数,但如果不指定,安装过程中会跳出来,让你手动输入,这样就不能无人值守安装了

next-server 指定tftp服务器,嗯,也就是我们配置服务器地址,10.0.3.11

 

下而我们来启动一台机器,安装,这里我再启动一个虚拟机,启动时选择从网络启动

pxe2

好了,点击install,就可以开始安装了

附1:在某些环境,可能我们的交换机并不是网管交换机,做不了dhcp,这个时候怎么办呢,可以使用linux做为dhcp,这里附上dhcp安装和配置,还以是此服务器上安装

sudo apt-get install dhcp3-server
sudo mv /etc/dhcpd/dhcpd.conf /etc/dhcpd/dhcpd.conf.bak
sudo nano /etc/dhcpd/dhcpd.conf
  subnet 10.0.3.0 netmask 255.255.255.0 {
    range 10.0.3.20 10.0.3.100;  #地址分配范围
    option routers 10.0.3.254;   #网关
    option domain-name-servers 10.0.2.1,10.0.2.2;  #分配的dns服务器地址,多个地址用英文状态下的逗号 ( , )分隔
    default-lease-time 7200;    #默认租期,单位是秒(s)
    max-lease-time 14400;      #最大租期,单位是秒(s)
    filename "pxelinux.0";        #pxe启动文件名称,注意文件最后是数字0,不是字母o
    next-server 10.0.3.11;        # tftp 服务器地址
  }

启动dhcp 服务

sudo /etc/init.d/isc-dhcp-server start

 

附2:我的ks文件

install
text
lang en_US
langsupport en_US
keyboard us
mouse
timezone --utc Asia/Shanghai
rootpw --iscrypted $1$RjFLPS.0$uBqLmqzdRShnlhGOBUqDJ1
user tdt --fullname "tdt" --iscrypted --password $1$8zjnLFyv$diBX.YRBk6RoKCBZO5GID.
reboot
url --url http://10.0.3.11/ubuntu-server-12.04
bootloader --location=mbr
zerombr yes
clearpart --all --initlabel
part / --asprimary --fstype ext4 --size 28000
part /data --asprimary --fstype ext4 --size 256000
part swap --asprimary --size 1 --grow
auth --useshadow --enablemd5
network --bootproto=dhcp --device=eth0
firewall --disabled
skipx
%packages
@openssh-server

我的环境是,一块300G SAS盘

以上分区是 / 分区 28G,/data分区是256G,剩下还剩16G,就给了swap,这是客户要求的分区情况,一共三个分区,每个分区,都是主分区,请根据你的实际情况进行调整

本人的KS,会清空硬盘所有分区和数据,使用前,如果有重要文件,请先备份

嗯,就是这样

猜您喜欢