ubuntu linux pxe 无人值守安装

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

无人值守安装的过程
  1. 机器启动,并从网卡引导
  2. 网卡获取ip地址,获取tftp 服务器地址,以及启动文件名称
  3. 从tftp服务器下载启动文件
  4. 读取相关配置
  5. 启动安装

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

本次环境:

硬件:cisco UCS C220M3

软件:ubuntu server 12.04 64位

安装及配置,首先需要安装 apache tftpserver kickstart 配置工具
1sudo apt-get install system-config-kickstart tftpd-hpa tftp-hpa apache2
启动 tftp和apache
1sudo /etc/init.d/tftp-hpa start
2sudo /etc/init.d/apache2 start

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

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

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

1sudo mount -t iso9660 -r -o ro,loop /ubuntu-12.04.5-server-amd64.iso /var/www/html/ubuntu12.04
2sudo echo "/ubuntu-12.04.5-server-amd64.iso /var/www/html/ubuntu12.04 iso9660 ro,loop,defaults 0 0" >> /etc/fstab
创建ks目录
1sudo mkdir /var/www/html/ks
复制启动文件到tftpboot目录
1sudo 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

1sudo nano /var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/txt.cfg

修改好的内容如下:

 1default install
 2    label install
 3    menu label ^Install
 4    menu default
 5    kernel ubuntu-installer/amd64/linux
 6    append ks=http://10.0.3.11/ks/ks.cfg vga=788 initrd=ubuntu-installer/amd64/initrd.gz --quiet  //本次环境服务器的IP为10.0.3.11
 7label cli
 8    menu label ^Command-line install
 9    kernel ubuntu-installer/amd64/linux
10    append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet

ks配置文件:

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

启动工具命令

1sudo system-config-kickstart

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

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

进入全局配置模式

1ip dhcp pool pxe
2  network 10.0.3.0 255.255.255.0
3  bootfile pxelinux.0
4  next-server 10.0.3.11
5  default-router 10.0.3.254
6  dns-server 10.0.2.2 10.0.2.1
7  lease 0 2
简述:

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

network 要分配的地址的网段

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

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

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

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

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

1sudo apt-get install dhcp3-server
2sudo mv /etc/dhcpd/dhcpd.conf /etc/dhcpd/dhcpd.conf.bak
3sudo nano /etc/dhcpd/dhcpd.conf

配置文件

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

启动dhcp服务

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

附2:我的ks文件

 1install
 2text
 3lang en_US
 4langsupport en_US
 5keyboard us
 6mouse
 7timezone --utc Asia/Shanghai
 8rootpw --iscrypted $1$RjFLPS.0$uBqLmqzdRShnlhGOBUqDJ1
 9user tdt --fullname "tdt" --iscrypted --password $1$8zjnLFyv$diBX.YRBk6RoKCBZO5GID.
10reboot
11url --url http://10.0.3.11/ubuntu-server-12.04
12bootloader --location=mbr
13zerombr yes
14clearpart --all --initlabel
15part / --asprimary --fstype ext4 --size 28000
16part /data --asprimary --fstype ext4 --size 256000
17part swap --asprimary --size 1 --grow
18auth --useshadow --enablemd5
19network --bootproto=dhcp --device=eth0
20firewall --disabled
21skipx
22%packages
23@openssh-server

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

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

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