完全无人值守安装debian.docx
- 文档编号:23411089
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:13
- 大小:21.59KB
完全无人值守安装debian.docx
《完全无人值守安装debian.docx》由会员分享,可在线阅读,更多相关《完全无人值守安装debian.docx(13页珍藏版)》请在冰豆网上搜索。
完全无人值守安装debian
《完全无人值守安装debian》
【前言】
本系统可以实现对服务器的完全无人工干预安装,一个新机器只要支持PXE启
动(Dell,HP都是开机按F12进入PXE启动模式),插上网线跟FAIserver能够通信,就
可以装上一个自己需要的系统。
并能根据自己的需要给目标机做任何初始化配置。
本系统能同时安装百台以上的目标机,已在几家大,中型网站公司稳定使用半
年到一年,曾给一家公司安装过几百台Dell2850,Dell2950,Dell6850,HP380g5,
HP580等等。
对于需要经常安装debian的用户能节省很多时间/人力成本。
部署过程如有创新或者疑问,欢迎跟我交流。
Email:
King.Sword# 请将Email地址中的#换成@
【一】FAI系统原理和实现步骤
Debian安装程序支持使用预先配置的文件进行自动安装。
预配置文件可以从网
络或移动介质上加载,并自动回答安装过程中的问题。
用HTTP(FTP)+DHCP+TFTP+PXElinux
来实现Debian的网络自动分发安装。
首先通过dhcp到一些初始信息,得到了引导镜像的
位置,找到了这个引导镜像,通过tftp得到这个镜像,并控制客户机找到aptserver上
的安装控制程序,利用这个程序,通过预先设置好的pre.cfg预配置文件指导安装。
Dhcpserver用来检测客户机(以下称待安装的机器为客户机,待安装的系统为
目标系统),分配给目标机器ip,并告诉目标机器引导镜像的位置。
Tftpserver提供给客户机引导镜像,并提供给客户机的安装过程中的内核参数
和目标系统的配置。
APTserver提供了安装过程所需要的软件包,目标系统通过APTserver进行网络
安装。
【二】创建FAI系统环境
一:
APTServer
FAI系统需要APTmirror提供安装源,现在网上有很多安装源,其实可以不必自
己动手搭建。
因此这些操作可以忽略。
可以直接使用我搭建的APT源。
每天跟一级主战完
全镜像。
http:
//202.108.12.69/debian
也可以自己搭建一个,未必要完全镜像。
andy:
~#mkdir/data/mirror
andy:
~#vi/data/filter
编辑输入以下内容:
*_alpha.deb
*_arm.deb
*_hppa.deb
*_s390.deb *_m68k.deb *_mips.deb
*_mipsel.deb
*_powerpc.deb
*_sparc.deb
*-alpha
*-arm
*-hppa
*-s390
*-m68k
*-mips
*-mipsel
*-powerpc *-sparc
安装rsync,镜像一个已存在的aptserver
andy:
~#apt-getinstallrsync
andy:
~#rsync-vzrtopg--recursive--links--hard-links--times--delete--delete-after-exclude-from=/data/filterftp.kr.debian.org:
:
debian//data/mirror/debian
注:
只选择我需要的i386和ia64包,所以除去alpha,arm.hppa,s390,m68k,mips,mipsel,powerpc,sparc等包。
二:
TFTPServer
当处于某局域网的机器启动的时候,它将发出广播检测网内的DHCPServer,并
收到DHCP发送的信息包,包括IP,和bootimage的存放地址。
TFTPServer提供boot
image。
首先安装tftpd-hpa,xinetd。
注意不能用tftpd包,它不支持bootp协议,无法正确导入bootimage,自动安装会卡住。
tftp服务以superdaemon守护方式运行,我们用xinetd。
andy:
~#apt-getinstalltftpd-hpaxinetd
andy:
~#vi/etc/xinetd.d/tftp
编辑输入以下:
servicetftp
{
disable=no
socket_type=dgram
protocol=udp
wait=yes
user=root
server=/usr/sbin/in.tftpd
server_args=-s/data/tftpboot
}
可在server-args那一行选择你的tftp服务根目录。
此时tftp服务已经启用,服务于69端口。
从aptserver下载一个netboot.tar.gz包到tftp根目录,当前目录下解压缩
andy:
/data/tftpboot#wget http:
//202.108.12.69/debian/dists/etch/main/installer-i386/current/images/netboot/netboot.tar.gz
andy:
/data/tftpboot#tar-zxvfnetboot.tar.gz
解压缩后得到一个debian-installer文件夹,和prelinux.0,pxelinux.cfg两个连接,分别指向debian-installer文件夹里的两个文件。
andy:
/data/tftpboot#vi./pxelinux.cfg/default
将LABELinstall改为:
LABELinstall
kerneldebian-installer/i386/linux
appendinitrd=debian-installer/i386/initrd.gzramdisk_size=12094root=/dev/rd/0rwpreseed/url=http:
//192.168.41.3/pre.cfgdebian-installer/locale=en_USconsole-keymaps-at/keymap=usnetcfg/choose_interface=autonetcfg/get_hostname=hnetcfg/get_domain=d--
修改后的文件全部内容如下:
DISPLAYdebian-installer/i386/boot-screens/boot.txt
F1debian-installer/i386/boot-screens/f1.txt
F2debian-installer/i386/boot-screens/f2.txt
F3debian-installer/i386/boot-screens/f3.txt
F4debian-installer/i386/boot-screens/f4.txt
F5debian-installer/i386/boot-screens/f5.txt
F6debian-installer/i386/boot-screens/f6.txt
F7debian-installer/i386/boot-screens/f7.txt
F8debian-installer/i386/boot-screens/f8.txt
F9debian-installer/i386/boot-screens/f9.txt
F0debian-installer/i386/boot-screens/f10.txt
DEFAULTinstall
LABELinstall24
kerneldebian-installer/i386/linux
appendvga=normalinitrd=debian-installer/i386/initrd.gzramdisk_size=10214root=/dev/rd/0rw --
LABELexpert24
kerneldebian-installer/i386/linux
appendDEBCONF_PRIORITY=lowvga=normalinitrd=debian-installer/i386/initrd.gzramdisk_size=10214root=/dev/rd/0rw --
LABELinstall
kerneldebian-installer/i386/linux
appendinitrd=debian-installer/i386/initrd.gzramdisk_size=12094root=/dev/rd/0rwpreseed/url=http:
//192.168.41.3/pre.cfgdebian-installer/locale=en_USconsole-keymaps-at/keymap=usnetcfg/choose_interface=autonetcfg/get_hostname=hnetcfg/get_domain=d--
LABELlinux
kerneldebian-installer/i386/2.6/linux
appendvga=normalinitrd=debian-installer/i386/2.6/initrd.gzramdisk_size=12094root=/dev/rd/0rw --
LABELinstall26
kerneldebian-installer/i386/2.6/linux
appendvga=normalinitrd=debian-installer/i386/2.6/initrd.gzramdisk_size=12094root=/dev/rd/0rw --
LABELlinux26
kerneldebian-installer/i386/2.6/linux
appendvga=normalinitrd=debian-installer/i386/2.6/initrd.gzramdisk_size=12094root=/dev/rd/0rw --
LABELexpert
kerneldebian-installer/i386/2.6/linux
appendDEBCONF_PRIORITY=lowvga=normalinitrd=debian-installer/i386/2.6/initrd.gzramdisk_size=12094root=/dev/rd/0rw --
LABELexpert26
kerneldebian-installer/i386/2.6/linux
appendDEBCONF_PRIORITY=lowvga=normalinitrd=debian-installer/i386/2.6/initrd.gzramdisk_size=12094root=/dev/rd/0rw --
LABELrescue
kerneldebian-installer/i386/2.6/linux
appendvga=normalinitrd=debian-installer/i386/2.6/initrd.gzramdisk_size=12094root=/dev/rd/0rw rescue/enable=true--
LABELrescue24
kerneldebian-installer/i386/linux
appendvga=normalinitrd=debian-installer/i386/initrd.gzramdisk_size=10214root=/dev/rd/0rw rescue/enable=true--
LABELrescue26
kerneldebian-installer/i386/2.6/linux
appendvga=normalinitrd=debian-installer/i386/2.6/initrd.gzramdisk_size=12094root=/dev/rd/0rw rescue/enable=true--
PROMPT1
TIMEOUT1
注:
append为一行。
此文件defaultinstall那一行决定了只有LABELinstall这行标签有用。
它指定了kernel,initrd,ramdisk等各个内核参数。
需注意preseed/url=http:
//192.168.41.3/pre.cfg参数!
它指定了最重要的安装控制文件pre.cfg的位置。
这里有个cmdline命令行的256字节的限制问题,即安装控制程序在控制客户机自动安装的过程中,在客户机的/proc/cmdline中最大容量为256字节,所以如果有更多的参数,将无法传递进去,当然如果在d-i程序引导网卡之后才读的参数,我们完全可以写进pre.cfg。
这也导致了后面只能用一个比较笨的办法解决dhcp超时问题,而不能直接将dhcp-timeout参数传递进去。
问题产生的原因和解决办法后面皆有阐述。
这个问题理论上应该可以通过重新编译内核解决,然而我下载了一个新内核的源码包,将./include/asm-i386下的setup.h和param.h中的#defineCOMMAND_LINE_SIZE256改为#defineCOMMAND_LINE_SIZE1024,重新编译后却仍然有这个限制。
清楚CMDLINE这部分内核代码实现的达人们如果明白这个问题,欢迎指教。
下面解决一个因为网络中存在cisco交换机而引起的dhcp超时问题。
系统网络启动之后交换机网口有30秒钟的自适应阶段,此时数据不通,从而造成自动安装过程中dhcp配置网络超时。
我们将dhcp-timeout参数值设为60秒传给内核,就可以解决此问题。
andy:
/data/tftpboot#mkdirtmp
andy:
/data/tftpboot#cp./debian-installer/i386/initrd.gz./tmp/
andy:
/data/tftpboot#cdtmp
解压缩
andy:
/data/tftpboot/tmp#gunzipinitrd.gz
将initrd挂载于某目录
andy:
/data/tftpboot/tmp#mkdirtmp
andy:
/data/tftpboot/tmp#mount-oloop./initrd./tmp
andy:
/data/tftpboot/tmp#cdtmp
andy:
/data/tftpboot/tmp/tmp#vi./sbin/debian-installer
将此脚本set-e后面添加一行内容如下:
/bin/debconf-setnetcfg/dhcp_timeout60
保存退出,再将此initrd文件以最大压缩率压缩成.gz包即可替换原来的initrd.gz。
andy:
/data/tftpboot/tmp/tmp#cd..
andy:
/data/tftpboot/tmp#umount./tmp
andy:
/data/tftpboot/tmp#gzip-9-cinitrd\
>../debian-installer/i386/initrd.gz
重启xinet
andy:
/data/tftpboot/tmp#/etc/init.d/xinetdrestart
注:
因为本文档发布的时候,FAI系统的initrd早已改进成cpio格式。
关于处理cpio格式的initrd,详见refresh_netboot.sh.
需要特别指出的是,FAI的分发功能可以在此控制实现。
举例说明:
客户机的mac为00:
14:
22:
16:
66:
05,DHCP到的ip为192.168.41.72,16进制ip为c0a82940,则文件检测顺序为:
/tftpboot/pxelinux.cfg/00:
14:
22:
16:
66:
05
/tftpboot/pxelinux.cfg/C0A82940
/tftpboot/pxelinux.cfg/C0A8294
/tftpboot/pxelinux.cfg/C0A828
/tftpboot/pxelinux.cfg/C0A82
/tftpboot/pxelinux.cfg/C0A8
/tftpboot/pxelinux.cfg/C0A
/tftpboot/pxelinux.cfg/C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default
如果我们知道了客户机网卡的mac,那么只需要在/tftpboot/pxelinux.cfg下建立不同的预配置文件,即可给不同的mac客户机分发各自需要的系统,只需要建立不同文件名的文本文件,指向各自需要的目标系统预配置文件。
DHCPServer
客户机从DHCPServer得到TFTPServer地址和PXEbootimage的filename
andy:
~#apt-getinstalldhcp3-server
本例中DHCPServer的配置很简单,要想在此实现更多控制功能,请自行查阅dhcp服务配置文档。
本例配置文件如下:
andy:
~#vi/etc/dhcp3/dhcpd.conf
ddns-update-stylenone;
subnet192.168.41.0netmask255.255.255.0{
range192.168.41.10192.168.41.110;
optionsubnet-mask255.255.255.0;
optionbroadcast-address192.168.41.255;
optionrouters192.168.41.3;
optiondomain-name-servers192.168.41.3;
optiondomain-name"";
optionhost-name"KingSword";
allowunknown-clients;
filename"pxelinux.0";
next-server192.168.41.3;
}
上面的配置文件得根据您所处的网络环境确定,比如domain-name-server;或者您的喜好自行设定,比如你可以自己决定要分配的ip范围。
dhcpserver为独立进程。
启动之:
andy:
~#/etc/dhcpd3/dhcpdstart
预配置文件分析:
安装过程是debian的自动安装程序通过一个预配置文件控制的。
下面对比较重要的一些行说明一下,因为写文档到现在debian升级了很多东西,所以具体的配置以附件pre.cfg为准
d-inetcfg/wireless_wepstring
#此为aptmirror的信息。
注意hostname若为域名,则服务器必须提供域名解析服务,或者#做nat服务通过eth0转发。
d-imirror/countrystringenterinformationmanually
d-imirror/http/hostnamestring192.168.41.3
d-imirror/http/directorystring/debian
d-imirror/suitestringtesting
d-imirror/http/proxystring
#选择要分区的硬盘。
d-ipartman-auto/diskstring/dev/discs/disc0/disc
#标配分区。
前面已有叙述。
各个变量的含义请自行搜索partman-aoto等关键字。
d-ipartman-auto/expert_recipestringboot-root:
:
64128128reiserfs$primary{}$bootable{}method{format}format{}use_filesystem{}filesystem{reiserfs}mountpoint{/boot}.51220484096linux-swapmethod{swap}format{}. 51210002048reiserfs$primary{}method{format}format{}use_filesystem{}filesystem{re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完全 无人 值守 安装 debian