Chinaunix

标题: (原创)RHEL4+Kickstart+NFS+DHCP+PXE全自动无人安装 [打印本页]

作者: jerrywjl    时间: 2008-06-03 11:45
标题: (原创)RHEL4+Kickstart+NFS+DHCP+PXE全自动无人安装
今天刚刚收到来自CU的T恤和U盘,为了感谢CU对我等的厚爱,特发一篇原创文章予以回报!

实现Kickstart + NFS + DHCP + PXE的全自动远程无人职守安装:

实验环境:C/S结构,服务器采用的操作系统为RHEL 4.0,客户端预装RHEL 4.0。
服务器上的配置如下:
第一步:配置安装树:
在虚拟机中添加新的硬盘,并且实现开机之后的自动挂载。
这个步骤在以前已经总结过,所以在这里我只给出完成之后的结果:
我在虚拟机中添加的为SCSI硬盘,分区格式化之后的文件为/dev/sda1,编辑/etc/fstab文件,将该分区自动挂载于/installing文件夹下,并且在该文件夹下建立目录/var/ftp/pub,那么配置的安装树就在/installing/var/ftp/pub目录下。
挂载第一张光盘:
[root@server1 ~]# mount /media/cdrom
[root@server1 cdrom]# alias cp=cp                使cp命令在执行的时候直接覆盖已经存在内容而不询问
[root@server1 cdrom]# cp -dpR * /installing/var/ftp/pub/        拷贝第一张光盘内容到目标
挂载第二张光盘:
[root@server1 cdrom]# cp -dpR * /installing/var/ftp/pub/RedHat/RPMS        将所有的安装包集中到一起
按照同样的方法挂载并拷贝第三张和第四张光盘的内容
重启动系统进行检测。

第二步:配置kickstart无人值守安装脚本:
需要安装kickstart工具包:
[root@server1 ~]# cd /installing/var/ftp/pub/RedHat/RPMS/
[root@server1 RPMS]# ls *kickstart*
system-config-kickstart-2.5.16-2.noarch.rpm
[root@server1 RPMS]# rpm -ihv system-config-kickstart-2.5.16-2.noarch.rpm --aid
warning: system-config-kickstart-2.5.16-2.noarch.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...                ########################################### [100%]
     1:system-config-kickstart########################################### [100%]
进入图形界面运行system-config-kickstart命令按照提示进行无人值守脚本配置
*选择的安装方式是通过NFS网络文件系统安装;
*选择的分区方法是不管客户机磁盘多大,都分三个必须分区,并指定分区的大小,剩余空间备用;
*选择的数据包不能包含图形界面开发工具或者开发工具,否则安装过程中会报错
将生成的ks.cfg文件拷贝到安装树所在路径下/installing/var/ftp/pub

第三步:配置服务器的服务:
1.配置DHCP服务:
从安装树中安装DHCP服务的软件包:
[root@server1 ~]# cd /installing/var/ftp/pub/RedHat/RPMS/
[root@server1 RPMS]# ls *dhcp*
dhcp-3.0.1-12_EL.i386.rpm        dhcpv6-0.10-8.i386.rpm
dhcp-devel-3.0.1-12_EL.i386.rpm  dhcpv6_client-0.10-8.i386.rpm
[root@server1 RPMS]# rpm -ihv dhcp-3.0.1-12_EL.i386.rpm dhcp-devel-3.0.1-12_EL.i386.rpm –aid
配置DHCP服务:
[root@server1 ~]# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf
[root@server1 ~]# vi /etc/dhcpd.conf
我的服务器IP地址为192.168.1.170,所以该配置文件的内容如下:
红色的地方为我修改或者需要注意的地方
ddns-update-style interim;
ignore client-updates;

subnet 192.168.1.0 netmask 255.255.255.0 {

# --- default gateway
        option routers                  192.168.1.170;
        option subnet-mask              255.255.255.0;

        option nis-domain               "RHCE";
        option domain-name              "example.com";
        option domain-name-servers      192.168.1.170;

        option time-offset              -18000; # Eastern Standard Time
#       option ntp-servers              192.168.1.170;
#       option netbios-name-servers     192.168.1.170;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#       option netbios-node-type 2;

        range dynamic-bootp 192.168.1.128 192.168.1.254;
        default-lease-time 21600;
        max-lease-time 43200;
        filename "/pxelinux.0";

        # we want the nameserver to appear at a fixed address
        host ns {
                next-server marvin.redhat.com;
                hardware ethernet 12:34:56:78:AB:CD;
                fixed-address 207.175.42.254;
保存并且退出,其中NTP服务器、NIS服务器、以及NETBIOS服务器并不是必须,但是一定要注意后面手动添加的一行:filename "/pxelinux.0";
完成之后启动服务:
# service dhcpd restart        
在客户端启动之后通过查看文件/var/lib/dhcp/dhcpd.leases可以得知客户端是否正常获得IP地址

2.配置DNS服务:
按照刚才DHCP配置文件中的内容去配置DNS即可,这个步骤不是必须;

3.配置TFTP服务:
这种安装的原理是客户端启动之后通过TFTP服务器获得配置文件信息和安装信息,因此需要开启TFTP服务。
# vi /etc/xi        net.d/tftp
TFTP服务为非独立服务,更改其中的内容如下:
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        disable = no
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
之后重启TFTP服务:/etc/rc.d/init.d/xinetd restart或者干脆chkconfig tftp on即可

4.配置NFS服务:
# vi /etc/exports
添加安装树的路径:
/installing/var/ftp/pub    192.1681.0/24(ro,async)
保存退出
# service portmap restart
# service nfs restart
# exportfs –rv         
# showmount –e
# chkconfig nfs on
出现下面内容即可:
/installing/var/ftp/pub 192.168.1.0/24

5.配置支持PXE启动:
# mkdir /tftp                ————>若该文件夹已经存在则不用建立
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
把Linux第一张安装光盘上/image/pxeboot/initrd.img和vmlinux 以及isolinux/*.msg拷贝到/tftpboot目录下
# cd /tftpboot
# mkdir pxelinux.cfg
# cd pxelinux.cfg
# vi default
配置文件default文件的内容如下:

default
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
localboot 0
label linux
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=9216
label text
kernel vmlinuz
append initrd=initrd.img text devfs=nomount ramdisk_size=9216
label expert
kernel vmlinuz
append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
kernel vmlinuz
append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label nofb
kernel vmlinuz
append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216
label lowres
kernel vmlinuz
append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
kernel vmlinuz
如果我们执行的是远程手动安装,这个配置文件就足够了。但是我们执行的是远程无人值守安装,所以还需要对该配置文件进行一定修改,主要在配置文件中添加内容,指定ks.cfg配置文件的位置。
因此经过编辑,最终配置文件的内容如下:
default linux
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
localboot 0
label linux
kernel vmlinuz
append ks=nfs:192.168.1.170:/installing/var/ftp/pub/ks.cfg  initrd=initrd.img  devfs=nomount  
ramdisk_size=9216

label text
kernel vmlinuz
append initrd=initrd.img text devfs=nomount ramdisk_size=9216
label expert
kernel vmlinuz
append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
kernel vmlinuz
append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label nofb
kernel vmlinuz
append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216
label lowres
kernel vmlinuz
append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
kernel vmlinuz
添加的为红色标注的部分,并且要注意,必须添加在这个位置。而且存储ks.cfg的目录必须是通过NFS共享出来的目录。

完成所有的服务配置之后进行检查。
准备一台客户端,然后更改启动方式为通过带PXE自启动模块的网卡启动,客户端在开启之后会主动向DHCP服务器获取地址,并且从TFTP服务器上获得安装配置以及信息;客户端所做的工作只是开机,剩下的工作由ks.cfg文件控制自动完成。

[ 本帖最后由 jerrywjl 于 2008-6-3 11:48 编辑 ]
作者: jerrywjl    时间: 2008-06-03 11:47
申请个精华不过份吧?!
作者: Send_linux    时间: 2008-06-03 12:02
这篇文章价格不菲啊,呵呵
作者: jerrywjl    时间: 2008-06-03 13:49
下面是在上文基础上针对服务器和客户端不同版本时所采用的方法。

老实说,这部分借鉴了天极网上的一篇安装说明,但是主体部分仍然是本人原创!

大多数情况下我们在通过kickstart实现远程无人值守安装的时候所针对的都是同一个版本的服务器,但是有时候如果出现不同版本的服务器比如说:服务器和客户端版本不同,服务器上部署多个不同的安装源并同时安装不同版本客户端等,这个时候在服务器上的配置方法会有不同。
下面通过一个实际的例子来说明以RHEL4U6 ES作为服务器来安装RHEL3U6 WS的方法和过程:
首先前面的步骤以及所需要的软件包和以前是一样的,部署网络,kickstart安装配置文件ks.cfg,DHCP以及TFTP服务器:
配置文件的内容如下:
首先是DHCP的配置文件,红色为修改部分:
[root@localhost ~]# cat /etc/dhcpd.conf
#
ddns-update-style interim;
ignore client-updates;

subnet 192.168.1.0 netmask 255.255.255.0 {

# --- default gateway
        option routers                  192.168.1.120;
        option subnet-mask              255.255.255.0;

#       option nis-domain               "redhat.com";
#       option domain-name              "redhat.com";
#       option domain-name-servers      192.168.1.120;

        option time-offset              -18000; # Eastern Standard Time
#       option ntp-servers              192.168.1.120;
#       option netbios-name-servers     192.168.1.120;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#       option netbios-node-type 2;

        range dynamic-bootp 192.168.1.128 192.168.1.130;
        default-lease-time 21600;
        max-lease-time 43200;
        filename "/pxelinux.0";

        # we want the nameserver to appear at a fixed address
        host ns {
                next-server marvin.redhat.com;
                hardware ethernet 12:34:56:78:AB:CD;
                fixed-address 207.175.42.254;
        }
}
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample  

在DHCP配置文件中指定待安装主机的信息时候也可以这样写:
host ns {
    next-server marvin.redhat.com;
    hardware ethernet 12:34:56:78:AB:CD;
    fixed-address 207.175.42.254;
        }

group pxe {
    filename "pxelinux.0";
    host testserver { hardware ethernet 00:0C:29:70:24:5C; fixed-address 192.168.1.130; }
实际上通过这样的写法就可以指定待安装的主机的MAC以及对应IP地址,不过事前要知道该主机MAC地址方可。
该例子中,定义的子网是 192.168.1.0/255.255.255.0。主机定义项testserver指出 IP 地址 192.168.1.30 将分配给以太网卡00:0C:29:70:24:5C(待安装机器)。文件pxelinux.0(在TFTP服务器的根目录中)将作为启动映像被网卡ROM里的PXE客户端载入内存并运行。
每增加一台需安装的机器,则需在dhcpd.conf中增加一条host条目。
完成之后可以启动DHCP服务。
       
至于tftp服务器配置文件的内容则简单很多:
[root@localhost ~]# cat /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
       
启动相关服务:
[root@localhost ~]# service dhcpd start
[root@localhost ~]# /etc/rc.d/init.d/xinetd restart
       
现在由于要安装RHEL3U6 WS的客户端,所以需要将RHEL3U6 WS第一张光盘里的一些必须内容拷贝到RHEL4的TFTP服务目录下,内容包括光盘根目录下的:
isolinux/vmlinuz
isolinux/initrd.img
isolinux/*.msg
同时下载RHEL3U6的光盘中的syslinux-2.06-0.3E.i386.rpm包,通过下面命令直接拿到里面的文件:
rpm2cpio syslinux-2.06-0.3E.i386.rpm | cpio –vid
解压之后进入/usr/lib/syslinux目录,拿到pxelinux.0文件,将其放到服务器/tftp目录中。
编辑pxelinux.0的配置文件,以使pxelinux可以正确载入Red Hat Linux安装程序。对于每一个要被安装的Red Hat Linux版本,都需要执行一次该操作。
启动镜像pxelinux.0文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。所有的配置文件都放在启动服务器的 /tftpboot/pxelinux.cfg/目录下。pxelinux.0根据一定的规则来搜索合适的配置文件名。举例来说,对于前面为待安装机器分配的IP地址192.168.138.30(十六进制表示为C0A88A1E),pxelinux.0会按如下次序搜索配置文件:
C0A88A1E > C0A88A1 > … > C0 > C > default
就是说,如果C0A88A1E文件存在,它就是pxelinux.0将载入的配置文件。否则,继续往下找。如果C0A88A1文件存在,它就是 pxelinux.0将载入的配置文件。如果前面的以C开头的文件都不存在,那么pxelinux.0将试图从文件default中读取配置。对于一台需要支持很多安装机器的安装服务器来说,将配置写在与IP地址对应的文件里很不灵活。把所有配置都集中在default文件中是个不错的主意,可以减轻配置文件维护负担。
可以将能想到的Red Hat Linux版本的配置都写在default文件里,以便同时支持多种Red Hat Linux版本,如下所示。default文件的内容可以参照光盘中配置文件/isolinux/isolinux.cfg来编写。
那么我需要建立一个default文件:
[root@localhost ~]# mkdir /tftpboot/pxelinux.cfg/
[root@localhost ~]# vi /tftpboot/pxelinux.cfg/default
内容为:
default linux
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
  localboot 0
label linux
  kernel vmlinuz
  append ks=nfs:192.168.1.120:/installing/ks.cfg initrd=initrd.img
  ramdisk_size=9216
label text
  kernel vmlinuz
  append initrd=initrd.img text
label expert
  kernel vmlinuz
  append expert initrd=initrd.img
label ks
  kernel vmlinuz
  append ks initrd=initrd.img
label lowres
  kernel vmlinuz
  append initrd=initrd.img lowres

而且对于具体某个RHEL版本,对应default写法可参考安装盘里配置文件 /isolinux/isolinux.cfg,如:
DEFAULT rhel4u2-i386
DISPLAY pxelinux.cfg/list
PROMPT 1

LABEL rhel3u6-i386
KERNEL vmlinuz-rhel3u6-i386
APPEND initrd=initrd-rhel3u6-i386.img

LABEL rhel3u6-x86_64
KERNEL vmlinuz-rhel3u6-x86_64
APPEND initrd=initrd-rhel3u6-x86_64.img devfs=nomount ramdisk_size=9216

LABEL rhel4u2-i386
KERNEL vmlinuz-rhel4u2-i386
APPEND initrd=initrd-rhel4u2-i386.img ramdisk_size=8192

这样用户可以通过输入某种版本的LABEL(例如,rhel4u2-i386)来选择具体的安装版本。为了能在安装时知道有哪些备选,可以让 pxelinux.0提示要户选择之前显示一个列表。这通过在default里指定DISPLAY选项来实现。在上面的样例中,我们将所有备选Red Hat Linux版本列在文件pxelinux.cfg/list中,它的内容会被pxelinux.0显示出来。

如果需要的话这是一个/tftpboot/pxelinux.cfg/list文件的例子,/tftpboot/pxelinux.cfg/list文件内容如下:
Choose one of the following Linux distributions for your installation:
Name           Distribution   Arch.   Installation media
-------------------------------------------------------------------------
rhel3u6-i386   RHEL 3 AS U6   i386 192.168.138.1:/instsvr/i386/rhel3u6
rhel3u6-x86_64 RHEL 3 AS U6 x86_64  192.168.138.1:/instsvr/x86_64/rhel3u6
rhel4u2-i386   RHEL 4 AS U2   i386    192.168.138.1:/instsvr/i386/rhel4u2
       
现在在服务器上建立一个通过NFS共享的目录,并且将所有的WS的光盘镜像以及ks.cfg文件拷贝到其中,由于只是一个例子,所以我拷的只是第一个光盘镜像:
[root@localhost ~]# exportfs -rv
exporting *:/installing
[root@localhost ~]# cat /etc/exports
/installing    *(ro,async)
[root@localhost ~]# ls /installing/
ks.cfg  rhel-3-u6-i386-ws-disc1.iso
       
到此为止服务器配置基本完成,最后需要根据安装时候的情况定制一下ks.cfg文件,例如在RHEL4上用system-config-kickstart命令可以产生ks.cfg,但是该ks.cfg要在RHEL3上用的话要修改一些选项。比如说至少要取消一些SELinux方面的选项。而且好像@server.cfg这个包组在RHEL3上也无法识别。
这是我的ks.cfg文件内容:
[root@localhost ~]# cat /installing/ks.cfg
#Generated by Kickstart Configurator
#platform=x86, AMD64, or Intel EM64T

#System  language
lang en_US
#Language modules to install
langsupport zh_CN --default=en_US
#System keyboard
keyboard us
#System mouse
mouse
#Sytem timezone
timezone Asia/Shanghai
#Root password
rootpw --iscrypted $1$1R.qvJFY$YuZPu0TngEjyRTmjrvdB60
#Reboot after installation
reboot
#Install OS instead of upgrade
install
#Use NFS installation Media
nfs --server=192.168.1.120  --dir=/installing
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype ext3 --size 100
part swap --size 512
part / --fstype ext3 --size 1 --grow
#System authorization infomation
auth  --useshadow  --enablemd5
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled
#SELinux configuration
#selinux --disabled
#Do not configure XWindows
skipx
#Package install information
%packages --resolvedeps
@ base-x
@ gnome-desktop
@ editors
@ graphical-internet
@ text-internet
@ sound-and-video
@ graphics
#@ server-cfg
@ web-server
@ mail-server
@ smb-server
@ dns-server
@ ftp-server
@ sql-server
@ mysql
@ news-server
@ network-server
@ legacy-network-server
@ development-tools
@ x-software-development
@ legacy-software-development
@ admin-tools
@ system-tools
@ printing
@ compat-arch-support
作者: jerrywjl    时间: 2008-06-04 10:06
无人帮顶一下吗????
作者: marsaber    时间: 2008-06-04 10:16

我顶!
作者: lasama    时间: 2008-06-04 11:00
支持一下,整个过程关键的部分在pxe......
作者: jerrywjl    时间: 2008-06-04 22:38
原帖由 lasama 于 2008-6-4 11:00 发表
支持一下,整个过程关键的部分在pxe......



PXE这个地方,如果顶贴多的说,我会在跟帖中继续介绍其原理......
作者: vepeta    时间: 2008-06-05 11:18
原帖由 jerrywjl 于 2008-6-4 22:38 发表



PXE这个地方,如果顶贴多的说,我会在跟帖中继续介绍其原理......

那就顶一把呀 呵呵
作者: byedays    时间: 2008-06-05 11:29
好文!学习了。。。我顶!
作者: jerrywjl    时间: 2008-06-05 11:58
既然如此,再来点内容:

另外有一些用户正使用过程中出现这样的问题:
第一,他希望在部署RHEL5的时候在ks.cfg文件中对安装号予以指定;
第二,他希望在部署RHEL各种版本的时候在某一个包组中能够取消和增加某些包
下面我提供一个相对完整的ks.cfg文件用于解决这个问题:

# Kickstart file automatically generated by anaconda.

install
cdrom
text
key --skip
lang en_US.UTF-8
keyboard us
network --bootproto=static --ip=10.66.0.101 --netmask=255.255.254.0 --gateway=10.66.1.254 --nameserver=10.66.63.10
rootpw --iscrypted $1$bjcQdYD5$.tXMsXOkWJlIDRPSyUGGa1
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=hda
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all
part /boot --fstype ext3 --size=100
part swap --size=512
part /bill --fstype ext3 --size=2048
part / --fstype ext3 --size=0 --grow

%packages
@mysql
@base
vsftpd
gcc
gdb
tomcat5
-Deployment_Guide-en-US
-nss-tools
-nss_db
-acpid

%post
/sbin/service mysqld start
/usr/sbin/groupadd -g 600 zxuser
/usr/sbin/useradd -u 600 -g zxuser -d /home/zxuser zxuser
/bin/echo zxsys | /usr/bin/passwd --stdin zxuser

/sbin/chkconfig vsftpd on
/sbin/chkconfig mysqld on

/bin/echo "kernel.msgmni = 512 " >> /etc/sysctl.conf

/bin/mkdir -p /zte
/bin/mkdir -p /zte/ippbxversion
/bin/mkdir -p /zte/ippbxweb

/usr/bin/mysqladmin -u root password '@zxippbx/'

/usr/sbin/chroot
/bin/mount /dev/hdc /mnt
/bin/rpm -ivh /mnt/Server/jdk-1_5_0_14-linux-i586.rpm
/bin/umount /mnt
echo 'export JAVA_HOME=/usr/java/jdk1.5.0_14' >> /etc/profile
echo 'export JRE_HOME=/usr/java/jdk1.5.0_14/jre' >> /etc/profile
echo 'export CLASSPATH=$JAVA_HOME/libJRE_HOME/libCLASSPATH' >> /etc/profile
echo 'export PATH=$JAVA_HOME/binJRE_HOME/binPATH' >> /etc/profile
从上面标注蓝色的地方可以看到:
第一个问题,安装号可以通过key --skip或者key wwwwxxxxyyyyzzzz这种格式来定制;
第二个问题,对于在某些包组中默认没有选但是要添加的包,直接指定包名称即可,不过名称最好是xml标准的名称,这个信息可以在光盘的base/comps.xml文件中找到,不过大多数情况下可以直接是在光盘目录中的包名称;而对于要在包组中默认选上但要求删除的包,可以在包的前面加上-予以指定。
作者: leetaedong    时间: 2008-06-05 13:17
哈哈. 好东东...  up...

楼主最好放个pdf 出来.  
作者: lubaogang    时间: 2008-06-05 13:50
标题: 回复 #2 jerrywjl 的帖子
好东西,我就是不愿做笔记,正好你给我做了,    多谢了!
作者: cuci    时间: 2008-06-05 14:06
原帖由 lubaogang 于 2008-6-5 13:50 发表
好东西,我就是不愿做笔记,正好你给我做了,    多谢了!



不要偷懒啊,多为自己学点,多为别人记点
作者: huifeideluotuo    时间: 2008-06-05 16:00
太棒了,好文,顶!
作者: 风云2002    时间: 2008-06-05 16:09
不错学习中,顶顶顶~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者: dotone    时间: 2008-06-05 16:29
标题: 回复 #11 jerrywjl 的帖子
崇拜ing. 阅读中.
作者: leaf1981    时间: 2008-06-05 22:41
Kickstart 是个好东东啊 可以搞成无人值守安装,省时省力
作者: simeiren    时间: 2008-06-06 08:57
一时之间没法看完,先收藏,慢慢研究!
作者: 飞哥2005    时间: 2008-06-06 13:00
好东西,很常时间没看到你的大作了啊 ,需要多多分享啊
作者: gsgbjhpd    时间: 2008-06-06 14:51
标题: good!
好文章,必须得顶啊! 正好现在需要这个
作者: linuxpiao    时间: 2008-06-06 16:01
标题: 回复 #1 jerrywjl 的帖子
LZ辛苦了,
關鍵是PXE啟動,
小弟我幾年前就玩過,當時是玩linux無盤的.
作者: hotsnow    时间: 2008-06-06 17:03
现在也在看这类东西。原理细节的东西多点就好了。
作者: jiamuu    时间: 2008-06-06 23:37
文章很详细,不错,帮顶!
作者: kns1024wh    时间: 2008-06-07 08:14
标题: 如果网卡不被内核支持,你也就over了
如果网卡不被内核支持,你也就over了
作者: scutan    时间: 2008-06-07 10:04
学习学习.      
.
作者: ljf3368    时间: 2008-06-07 10:05
很详细
学习学习
作者: windowsnt    时间: 2008-06-07 13:25
内容不错,不过前面也有人多次提到,关键问题是pxe引导服务器。其中RedHat提供了一个非常简单的工具,system-config-netboot,以RHEL 3中的命令则为redhat-config-netboot。可惜的是,在RHEL 5中,RedHat把这个工具弄丢了,尽管在它的文档中提到了如何使用这个工具。
作者: arsenelupin    时间: 2008-06-07 21:29
顶楼主,好好学习一下!
作者: hxxujf    时间: 2008-06-07 22:07
我靠!这样的文章不顶还怎么地!!顶!!
嘿嘿!学习一下!嘿嘿!
作者: lineba116    时间: 2008-06-07 22:19
很好,很经典.......
作者: blue_2020    时间: 2008-06-08 01:29
标题: 用虚拟机先尝试手动安装时问题
用虚拟机先尝试手动安装时问题,屏幕停在这里特别慢,请问是哪里设置有问题吗?

tftp.jpg (62 KB, 下载次数: 53)

tftp.jpg

作者: jerrywjl    时间: 2008-06-08 23:07
原帖由 blue_2020 于 2008-6-8 01:29 发表
用虚拟机先尝试手动安装时问题,屏幕停在这里特别慢,请问是哪里设置有问题吗?


这要看你的具体步骤和配置信息是什么。我好像历次操作都没有这样的问题。
作者: blue_2020    时间: 2008-06-09 11:26
问题已经解决了,在dhcpd.conf 中加入next-server 192.168.1.10;  这句话就好了
作者: lvmxuan    时间: 2008-06-09 18:40
请教:
kicstart的配置文件ks.cfg如果是用ftp安装,是不是要放到/var/ftp/pub下面?我做的时候,怎么没有实现自动安装?
作者: jerrywjl    时间: 2008-06-09 22:02
原帖由 blue_2020 于 2008-6-9 11:26 发表
问题已经解决了,在dhcpd.conf 中加入next-server 192.168.1.10;  这句话就好了



为了避免解析过程中耽误大量的时间,我很少在DHCP配置文件中增加域名解析的选项。如果一定要增加,也要确保每个客户端都能够正确获得相应的名称。
作者: jerrywjl    时间: 2008-06-09 22:06
原帖由 lvmxuan 于 2008-6-9 18:40 发表
请教:
kicstart的配置文件ks.cfg如果是用ftp安装,是不是要放到/var/ftp/pub下面?我做的时候,怎么没有实现自动安装?


是的。

至于为什么没有自动安装成功,我想原因恐怕很多,这个只有从你具体配置过程来分析了。
不过原则是系统开机之后要能够通过pxe引导成功,然后要能够正常访问tftp服务器,并且从其内容中得到安装源的位置以及ks脚本的位置。

你想想自己哪块做的不对。
作者: hansom6    时间: 2008-06-09 22:07
顶你个啦.
作者: ssafa    时间: 2008-06-10 11:06
支持
作者: 1330313150    时间: 2008-06-10 14:28
我做过这个,我用centos5做的,可是在安装过程中就会卡住不动,一直到死机,是否是因为我的配置文件配置错误造成的?我用阿帕奇做的HTTP服务器,把RPM包全部复制到服务器下的目录下去了,开始一切正常就在安装过程中卡机。。。。
作者: jerrywjl    时间: 2008-06-10 23:50
原帖由 1330313150 于 2008-6-10 14:28 发表
我做过这个,我用centos5做的,可是在安装过程中就会卡住不动,一直到死机,是否是因为我的配置文件配置错误造成的?我用阿帕奇做的HTTP服务器,把RPM包全部复制到服务器下的目录下去了,开始一切正常就在安装过 ...



我没有办法下定论,因为什么信息都没有;你应该拿出点东西比如说你的配置和操作过程,避免我们漫无目的地乱猜。
作者: 7717060    时间: 2008-06-11 08:09
不错学习一下
作者: niao5929    时间: 2008-06-11 13:56
好文一定要顶!!!!!!!!!!!!!!!!!
作者: bbskuang    时间: 2008-06-11 15:57
ding qi
作者: apzc2529    时间: 2008-06-11 15:58
原帖由 jerrywjl 于 2008-6-4 22:38 发表



PXE这个地方,如果顶贴多的说,我会在跟帖中继续介绍其原理......

我也顶!
作者: 1330313150    时间: 2008-06-12 13:02
我现按照你的方法操作一次
作者: 侃侃ERIC    时间: 2008-06-12 14:53
顶一个,文章写的不错。
通过KICKSTART实现无人值守安装在工作中经常遇到。
但有个状况不知道有没有人遇到过-----DELL 2950服务器每次在出现安装界面后都需要手工输入IP地址然后next才能自动安装,但别的厂牌服务器却能开机后完全自动安装。曾咨询过DELL工程师,答复是“他们在DELL 2950上也没有使用KICKSTART来安装过LINUX”,很郁闷的答复。
作者: jiang8379    时间: 2008-06-12 15:16
ks.cfg
里面还可以加好多东西。
可以设置网卡bonding,
用户认证权限,
iptables设置
等等
我们公司现在安装linux服务器都是流程化的,统一在ks.cfg里面配置好了,批量安装,爽!!!!!!!!!
作者: jiang8379    时间: 2008-06-12 15:17
原帖由 侃侃ERIC 于 2008-6-12 14:53 发表
顶一个,文章写的不错。
通过KICKSTART实现无人值守安装在工作中经常遇到。
但有个状况不知道有没有人遇到过-----DELL 2950服务器每次在出现安装界面后都需要手工输入IP地址然后next才能自动安装,但别的厂牌 ...


还是ks.cfg文件配置的不正确。双网卡的话换一下dhcp获取ip的网卡就应该可以了。
我以前也碰到过好多次这种情况
作者: xhb8413    时间: 2008-06-13 09:02
好文章。。。正打算理工个出来
作者: BLZer    时间: 2008-06-13 23:41
原帖由 jerrywjl 于 2008-6-3 11:45 发表
今天刚刚收到来自CU的T恤和U盘,为了感谢CU对我等的厚爱,特发一篇原创文章予以回报!

实现Kickstart + NFS + DHCP + PXE的全自动远程无人职守安装:

实验环境:C/S结构,服务器采用的操作系统为RHEL 4.0 ...

很不错得文章,
补充两点:
1:可以再ks配置里增加pre脚本,这样可以根据按照得系统类型来选择要定制的包

2:pxelinux.cfg下得配置文件不一定要用default得,
   tftp首先回去找与IP对应得名字得配置文件,
   然后再去找与mac地址对应得配置文件,
   两个都找不到才会去找default这个文件

举个例子,client得mac为001a0000;从dhcp拿得地址为10.10.10.10
那首先会去找0A0A0A0A(0A为10得十六进制值)这个文件,然后再去找001a0000这个文件,
没这两个文件才去找default这个文件,
这样做有个好处就是:
可以再dhcp里面指定不同得地址,每个地址对应不同得pexlinux配置文件。

不知道我说清楚没~~~
供参考
作者: BLZer    时间: 2008-06-13 23:54
我们同事还实现了debian的自动安装,
强吧~~
作者: maya1979    时间: 2008-06-14 09:23
都很强,加油,使劲顶
作者: skying9000    时间: 2008-06-14 22:03
原帖由 byedays 于 2008-6-5 11:29 发表
好文!学习了。。。我顶!




是好文 就是我看不大懂。
看来得 好好学了!
作者: netxun    时间: 2008-06-17 02:14
好帖!顶。。。。。。鲜花。。。掌声
作者: netchecking    时间: 2008-06-18 09:32
不错呀,好文,支持支持
作者: chinesechen    时间: 2008-06-18 10:08
幸苦了!!!!!!!!!!!!
作者: wangchengtai    时间: 2008-06-23 11:40
标题: hehe
很好很强大
公司一直都yong
作者: heieye104    时间: 2008-06-30 10:40
学习了。。。我顶!
作者: 志国    时间: 2008-06-30 12:04
学习了!谢谢!
作者: llworld    时间: 2008-06-30 23:36
顶!
绝对好文!!钦佩楼主的大爱
作者: flyyuhai    时间: 2008-07-01 10:35
收藏了。。。。。找机会试下
作者: xing007    时间: 2008-07-02 20:11
顶一个,三颗药喂你妈.....
作者: jerrywjl    时间: 2008-07-02 23:31
原帖由 xing007 于 2008-7-2 20:11 发表
顶一个,三颗药喂你妈.....


我服了你!!!!!!!
作者: chdf199736    时间: 2008-07-03 13:26
路过,学习。。。。。。。。。。。。
作者: cssweb234    时间: 2008-07-04 10:42
支持一下。还没接触过,学习一下
作者: waj1258    时间: 2008-07-04 20:42
好资料,谢谢分享。
作者: wy7851193    时间: 2008-07-05 02:34
虽然 不太懂,但是,LZ真的是很用心,很厉害。顶一下。
作者: motang    时间: 2008-07-06 23:24
标题: 好东西!
好东西!收藏。学习学习
作者: koill    时间: 2008-07-23 18:53
谢谢分享 学习

作者: 疯癫二楞子    时间: 2008-08-07 13:38
先来一次。貌似能找到服务端,但是很多设置都没有自动化,检查ing。
作者: gigabyte    时间: 2008-08-07 14:12
好文,学习中
感谢lz分享
作者: 疯癫二楞子    时间: 2008-08-07 14:25
原帖由 jerrywjl 于 2008-6-3 11:45 发表
准备一台客户端,然后更改启动方式为通过带PXE自启动模块的网卡启动,客户端在开启之后会主动向DHCP服务器获取地址,并且从TFTP服务器上获得安装配置以及信息;客户端所做的工作只是开机,剩下的工作由ks.cfg文件控制自动完成。


完成了,但是开机PXE之后呢老是要选择一次网卡,寻找自动办法ing。


PS:感谢LZ。。。
作者: 100心    时间: 2008-10-15 10:08
如果有 在win 环境搭 的服务器就 好了
作者: chenjian1985    时间: 2008-10-15 13:43
好东西谢谢了,对于我这样的学了LINUX一段时间没有什么经验的人,是最大的帮助,谢谢楼主。
作者: eaglezou    时间: 2008-10-30 15:30
标题: 正在找它
新手上路,学习中!
谢谢!
作者: yinheng8066    时间: 2008-12-13 16:53
好东西,谢谢
作者: biglazybug    时间: 2008-12-13 17:42
做个记号慢慢看
作者: bluenight_angel    时间: 2008-12-13 20:02
帮顶 顶顶顶~
作者: 飞哥2005    时间: 2009-02-03 22:42
今天在做试验时出现这样的问题 lz帮忙看看
客户端的计算机在启动的时候出现这样的提示:
客户端在启动的时候已经到达 Trying to load:pxelinux.cfg/default
Could not find kernel image: linux
boot:
这是什么原因?
作者: jerrywjl    时间: 2009-02-03 22:47
原帖由 飞哥2005 于 2009-2-3 22:42 发表
今天在做试验时出现这样的问题 lz帮忙看看
客户端的计算机在启动的时候出现这样的提示:
客户端在启动的时候已经到达 Trying to load:pxelinux.cfg/default
Could not find kernel image: linux
boot:
这 ...


貌似你放在TFTP服务器中的kernel文件来路不明哦!或者你的kernel文件位置不正确,或者......总之他说找不到kernel。
作者: -scofield-    时间: 2009-02-04 04:31
你应该再把apache下的再给加上不是更好么,
作者: -scofield-    时间: 2009-02-04 04:32
原帖由 jerrywjl 于 2009-2-3 22:47 发表


貌似你放在TFTP服务器中的kernel文件来路不明哦!或者你的kernel文件位置不正确,或者......总之他说找不到kernel。

是你的defult里写的有问题
作者: xunandjiao    时间: 2009-02-04 10:48
感觉有点复杂 看前面cp -drp 我man 了一下
“-a  same as  -drp ” 不直接用-a 就行了吗?
      所以还是尽量简单
我再继续学习学习 先谢过了
作者: 山野村夫    时间: 2009-02-08 11:56
有些复杂,学习一下
作者: marsaber    时间: 2009-02-08 12:59
原帖由 山野村夫 于 2009-2-8 11:56 发表
有些复杂,学习一下

还说你不是做技术的!
:wink:
作者: cst05001    时间: 2009-02-08 17:50
原帖由 jerrywjl 于 2009-2-3 22:47 发表


貌似你放在TFTP服务器中的kernel文件来路不明哦!或者你的kernel文件位置不正确,或者......总之他说找不到kernel。

jerrywjl这个回帖时间-__-|||
作者: diyself    时间: 2009-03-03 16:50
append ks=nfs:192.168.1.170:/installing/var/ftp/pub/ks.cfg  initrd=initrd.img  devfs=nomount  
ramdisk_size=9216

泪水的总结:devfs=nomount  一定不能少,否则会提示挂载不了目录。。。估计实际是挂载了两次。第一次挂载来读取ks.cfg吧。如果没有devfs=nomount ,由于已经挂载了,所有第二次挂载不了就导致安装失败。
作者: aimoon16    时间: 2009-03-04 14:02
我的天~这么好的帖子怎么能放过呢~改天做成PDF配图发出来吧?~
作者: zengmao    时间: 2009-03-13 17:31
先转到日志中,以后有时间慢慢研究!!!!


顶LZ个肺呀!!!!!


不行呀,我的网卡不识别不就用不成PXE了????
作者: allen-ma    时间: 2009-03-15 02:02
学习中,顶
作者: tony_wangzt    时间: 2009-03-15 14:10

作者: ancharn    时间: 2009-07-09 13:16
option space PXE;
class "PXE" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
  option vendor-encapsulated-options 01:04:00:00:00:00:ff;
   option boot-size 0x1;
   filename "pxelinux.0";
   option vendor-class-identifier "PXEClient";
   vendor-option-space PXE;
}

1 请问, LZ能否详细解释下各个配置项的作用吗?
2 LZ的dhcpd.conf配置文件中为什么没有next-server配置项呢? 请问, client从dhcp服务器获取了ip地址之后, 它是靠什么找到了tftp服务器的呢? 由谁来通知client端tftp服务器在何处呢?
作者: dfsuser    时间: 2009-07-09 22:47
学习学习
作者: qingheliu    时间: 2009-07-10 14:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: jerrywjl    时间: 2009-07-11 23:03
既如此,顶一下。
作者: lousam    时间: 2009-08-04 14:20
得顶呐~~~~~~~

顶得你流鼻血~~~~~
作者: txjking24    时间: 2009-11-24 18:23
强帖就得顶!
作者: cst05001    时间: 2009-11-24 18:34
[fly]哎-__-|||[/fly]
作者: freekongjian    时间: 2009-11-26 16:16
先顶了再来看!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2